| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 'use strict';/** * 客户信息数据模型 * * @author CaiAoLin * @date 2017/11/14 * @version */module.exports = app => {    class Customer extends app.BaseService {        /**         * 构造函数         *         * @param {Object} ctx - egg全局变量         * @return {void}         */        constructor(ctx) {            super(ctx);            this.tableName = 'customer';        }        /**         * 数据规则         *         * @param {String} scene - 场景         * @return {Object} - 返回规则数据         */        rule(scene) {            let rule = {};            switch (scene) {                case 'boot':                    rule = {                        name: { type: 'string', required: true, min: 2 },                        company: { type: 'string', required: true, min: 2 },                        province: { type: 'string', required: true },                        company_type: { type: 'string', allowEmpty: true },                        scale: { type: 'string', allowEmpty: true },                    };                    break;                default:                    break;            }            return rule;        }        /**         * 查询过虑         *         * @param {Object} data - 筛选表单中的get数据         * @return {void}         */        searchFilter(data) {            this.initSqlBuilder();        }        /**         * 新增SSO用户         *         * @param {Object} data - 接口返回的数据         * @return {Number} - 返回新增数据的id         */        async addSSOUser(data) {            let result = 0;            if (Object.keys(data).length <= 0 || data.useremail === undefined) {                return result;            }            // 先查找是否存在            const customerData = await this.db.get(this.tableName, { email: data.useremail });            if (customerData !== null) {                // 存在则直接返回id                const updateData = {                    id: customerData.id,                    email: data.useremail,                    mobile: data.mobile,                    name: data.username,                };                await this.db.update(this.tableName, updateData);                return customerData.id;            }            const insertData = {                email: data.useremail,                mobile: data.mobile,                name: data.username,            };            result = await this.db.insert(this.tableName, insertData);            return result.insertId;        }        /**         * 判断是否需要初始化信息         *         * @param {Object} postData - 表单post过来的数据         * @return {Boolean} - 返回是否需要初始化结果         */        async isNeedBoot(postData) {            if (postData.username === undefined) {                return false;            }            const customer = await this.getDataByCondition({ email: postData.username });            if (customer === null) {                return false;            }            return customer.company === '';        }        /**         * 初始化用户信息         *         * @param {Object} postData - 表单post过来的数据         * @return {Boolean} - 返回初始化结果         */        async boot(postData) {            const sessionUser = this.ctx.session.sessionUser;            delete postData._csrf_j;            const result = await this.update(postData, { email: sessionUser.account });            return result;        }    }    return Customer;};
 |