203 lines
6.8 KiB
JavaScript
203 lines
6.8 KiB
JavaScript
|
|
'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;
|