| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | /** * 个人设置业务逻辑 * * @author CaiAoLin * @date 2017/7/27 * @version */import BaseModel from "../../common/base/base_model";import SettingType from "../../common/const/setting_type_const";import mongoose from "mongoose";class SettingModel extends BaseModel {    /**     * 偏好设置默认     *     * @var {Object}     */    preferenceDefault = {        login_ask: 1,        select_version: -1    };    /**     * 设置场景     *     * @param {string} scene     * @return {void}     */    setScene(scene = '') {        switch (scene) {            // 新增数据的验证规则            case 'add':                this.model.schema.path('type').required(true);                this.model.schema.path('data').required(true);                this.model.schema.path('user_id').required(true);                break;            case 'update':                this.model.schema.path('data').required(true);                break;        }    }    /**     * 构造函数     */    constructor() {        let parent = super();        parent.model = mongoose.model('setting');        parent.init();    }    /**     * 获取设置信息     *     * @param {String} userId     * @param {Number} type     * @return {Promise}     */    async getSetting(userId, type) {        let condition = {            user_id: userId,            type: type        };        let settingData = await this.findDataByCondition(condition);        return settingData !== null && Object.keys(settingData).length > 0 ?            settingData.data : {};    }    /**     * 保存设置     *     * @param {String} userId     * @param {Number} type     * @param {Object} data     * @return {Promise}     */    async save(userId, type, data) {        let result = false;        if (typeof data === 'string' && data === '') {            return result;        }        if (typeof data === 'object' && Object.keys(data).length <= 0) {            return result;        }        // 查找是否有对应数据        let condition = {            user_id: userId,            type: type        };        let counter = await this.db.count(condition);        let saveData = {};        if (counter > 0) {            // 存在则更新            saveData = {                data: data            };            this.setScene('add');            let updateResult = await this.db.update(condition, saveData);            result = updateResult.ok === 1;        } else {            saveData = {                user_id: userId,                type: type,                data: data,                create_time: new Date().getTime()            };            this.setScene('update');            let insertResult = await this.db.create(saveData);            result = Object.keys(insertResult).length > 0;        }        return result;    }    /**     * 获取个人偏好设置     *     * @param {String} userId     * @return {Promise}     */    async getPreferenceSetting(userId) {        let setting = await this.getSetting(userId, SettingType.PREFERENCE);        setting = Object.keys(setting).length <= 0 ? this.preferenceDefault : setting;        return setting;    }}export default SettingModel;
 |