更新政府端和银行端
This commit is contained in:
108
bank-backend/models/BaseModel.js
Normal file
108
bank-backend/models/BaseModel.js
Normal file
@@ -0,0 +1,108 @@
|
||||
/**
|
||||
* 基础模型类
|
||||
* @file BaseModel.js
|
||||
* @description 所有模型的基类,提供通用方法
|
||||
*/
|
||||
const { Model } = require('sequelize');
|
||||
|
||||
class BaseModel extends Model {
|
||||
/**
|
||||
* 获取模型的安全信息(排除敏感字段)
|
||||
* @param {Array} excludeFields 要排除的字段
|
||||
* @returns {Object} 安全信息对象
|
||||
*/
|
||||
getSafeInfo(excludeFields = ['password', 'pin', 'secret']) {
|
||||
const data = this.get({ plain: true });
|
||||
excludeFields.forEach(field => {
|
||||
delete data[field];
|
||||
});
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为JSON格式
|
||||
* @param {Array} excludeFields 要排除的字段
|
||||
* @returns {Object} JSON对象
|
||||
*/
|
||||
toJSON(excludeFields = ['password', 'pin', 'secret']) {
|
||||
return this.getSafeInfo(excludeFields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化金额(分转元)
|
||||
* @param {Number} amount 金额(分)
|
||||
* @returns {String} 格式化后的金额
|
||||
*/
|
||||
formatAmount(amount) {
|
||||
if (amount === null || amount === undefined) return '0.00';
|
||||
return (amount / 100).toFixed(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析金额(元转分)
|
||||
* @param {String|Number} amount 金额(元)
|
||||
* @returns {Number} 金额(分)
|
||||
*/
|
||||
parseAmount(amount) {
|
||||
if (typeof amount === 'string') {
|
||||
return Math.round(parseFloat(amount) * 100);
|
||||
}
|
||||
return Math.round(amount * 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化日期
|
||||
* @param {Date} date 日期
|
||||
* @param {String} format 格式
|
||||
* @returns {String} 格式化后的日期
|
||||
*/
|
||||
formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
|
||||
if (!date) return null;
|
||||
const moment = require('moment');
|
||||
return moment(date).format(format);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查字段是否已更改
|
||||
* @param {String} field 字段名
|
||||
* @returns {Boolean} 是否已更改
|
||||
*/
|
||||
isFieldChanged(field) {
|
||||
return this.changed(field);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取原始值
|
||||
* @param {String} field 字段名
|
||||
* @returns {*} 原始值
|
||||
*/
|
||||
getOriginalValue(field) {
|
||||
return this._previousDataValues[field];
|
||||
}
|
||||
|
||||
/**
|
||||
* 软删除(如果模型支持)
|
||||
*/
|
||||
async softDelete() {
|
||||
if (this.constructor.rawAttributes.deleted_at) {
|
||||
this.deleted_at = new Date();
|
||||
await this.save();
|
||||
} else {
|
||||
throw new Error('模型不支持软删除');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复软删除(如果模型支持)
|
||||
*/
|
||||
async restore() {
|
||||
if (this.constructor.rawAttributes.deleted_at) {
|
||||
this.deleted_at = null;
|
||||
await this.save();
|
||||
} else {
|
||||
throw new Error('模型不支持软删除');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = BaseModel;
|
||||
Reference in New Issue
Block a user