'use strict'; const Service = require('../core/base_service'); const fileName = "CSide"; class CSideService extends Service { async diffPhone(phone) { const { ctx } = this; try { const where = { phone }; const result = await ctx.model2.CSide.findOne({ where }); return result || false; } catch (error) { const blockName = fileName + "--" + "diffPhone"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async diffEmail(email) { const { ctx } = this; try { const where = { email }; const result = await ctx.model2.CSide.findOne({ where }); return result || false; } catch (error) { const blockName = fileName + "--" + "diffEmail"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async registered(form) { const { ctx } = this; try { const user = await ctx.model2.CSide.create(form); if (!user) { return { code: 404, message: '注册失败', data: false }; }; return { code: 200, message: '注册成功', data: user }; } catch (error) { const blockName = fileName + "--" + "registered"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async loginUser(name) { const { ctx } = this; try { const where = { account_name: name }; const [buser, cuser] = await Promise.all([ ctx.model.BSide.findOne({ where }), ctx.model2.CSide.findOne({ where }) ]); if (!buser && !cuser) return false; return buser || cuser; } catch (error) { const blockName = fileName + "--" + "loginUser"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async subscribe(user, client) { const { ctx } = this; try { const where = { user_uid: user.uid, business: client.id }; const uidLastCode = user.uid[user.uid.length - 1]; const subscribeModel = { "B": ctx.model.BSubscribe, "C": ctx.model2.CSubscribe }; const defaults = { user_uid: user.uid, business: client.id, status: 0, type: 0, created_at: new Date(), updated_at: new Date(), }; await subscribeModel[uidLastCode].findOrCreate({ where, defaults }); return true; } catch (error) { const blockName = fileName + "--" + "subscribe"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async getUser(uid) { const { ctx } = this; try { const attributes = ['status', 'role', 'account_name', 'user_name', 'phone', 'gender', 'age', 'email', 'address', 'post_code']; const where = { uid }; const result = await ctx.model2.CSide.findOne({ attributes, where }); return result || false; } catch (error) { const blockName = fileName + "--" + "getUser"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async editUser(userMsg, uid) { const { ctx } = this; try { userMsg.gender = userMsg.gender == "1" ? true : false; const where = { uid }; const result = await ctx.model2.CSide.update(userMsg, { where }); return result[0] == 0 ? false : result; } catch (error) { const blockName = fileName + "--" + "editUser"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async uidfinder(uid) { const { ctx } = this; try { const where = { uid }; const result = await ctx.model2.CSide.findOne({ where }); return result || false; } catch (error) { const blockName = fileName + "--" + "uidfinder"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async changePassword(uid, oldPassword, newPassword) { const { ctx } = this; try { const where = { uid }; const salt = this.generateRandomString(); const setPassword = this.shaForm(newPassword, salt); const result = await ctx.model2.CSide.findOne({ where }); if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false; const resultList = await ctx.model2.CSide.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where }); return resultList[0] == 0 ? false : resultList; } catch (error) { const blockName = fileName + "--" + "changePassword"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async resetPassword(uid, modelType, defaultPassword, password, body, resetType) { const { ctx } = this; try { const uidLastCode = shunt(uid); const modelName = uidLastCode === 'C' ? 'CSide' : 'Insiders'; const model = uidLastCode === 'C' ? ctx.model : ctx.model3; const managerWhere = uidLastCode === 'C' ? { uid } : { uid, role: [3, 6, 9] }; const result = await model[modelName].findOne({ where: managerWhere }); if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false; const salt = this.generateRandomString(); if(defaultPassword == "") { defaultPassword = '123456'; } const originPassword = this.shaForm(defaultPassword, salt); let where = {}; if(modelType == "single") { where = body; } else if (modelType == "multiple") { let account_name = [], user_name = [], phone = []; for (const key in body) { body[key].forEach(element => { account_name.push(element.account_name); user_name.push(element.user_name); phone.push(element.phone); }); } where = { account_name, user_name, phone }; } const resetList = await ctx.model2.CSide.update({ salt: this.encryptRequest(salt), status: 0, password: originPassword }, { where }); return resetList.length == 0 ? false : resetList; } catch (error) { const blockName = fileName + "--" + "resetPassword"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } async loginStatus(uid, login_status) { const { ctx } = this; try { const where = { uid }; await ctx.model.BSide.update({ login_status }, { where }); } catch (error) { const blockName = fileName + "--" + "loginStatus"; ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error); return 'error'; } } } module.exports = CSideService;