北斗启航科技教育平台登录系统
This commit is contained in:
182
app/service/BSide.js
Normal file
182
app/service/BSide.js
Normal file
@@ -0,0 +1,182 @@
|
||||
'use strict';
|
||||
|
||||
const Service = require('../core/base_service');
|
||||
|
||||
const fileName = "BSide";
|
||||
|
||||
const { Op } = require('sequelize');
|
||||
|
||||
const shunt = (uid) => {
|
||||
return uid[uid.length - 1];
|
||||
}
|
||||
|
||||
class BSideService extends Service {
|
||||
async loginUser(name) {
|
||||
const { ctx } = this;
|
||||
try {
|
||||
const where = { account_name: name };
|
||||
const result = await ctx.model.BSide.findOne({ where });
|
||||
return result || false;
|
||||
} 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 defaults = {
|
||||
user_uid: user.uid,
|
||||
business: client.id,
|
||||
status: 0,
|
||||
type: 0,
|
||||
created_at: new Date(),
|
||||
updated_at: new Date(),
|
||||
}
|
||||
await ctx.model.BSubscribe.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'];
|
||||
const where = { uid };
|
||||
const result = await ctx.model.BSide.findOne({ attributes, where });
|
||||
return result || false;
|
||||
} catch (error) {
|
||||
const blockName = fileName + "--" + "getUser";
|
||||
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||
return 'error';
|
||||
}
|
||||
}
|
||||
|
||||
async editUserManager(editMsg, userMsg) {
|
||||
const { ctx } = this;
|
||||
try {
|
||||
delete userMsg.location;
|
||||
const where = { ...userMsg };
|
||||
const result = await ctx.model.BSide.update(editMsg, { where });
|
||||
return result[0] == 0 ? false : result;
|
||||
} catch (error) {
|
||||
const blockName = fileName + "--" + "editUserManager";
|
||||
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||
return 'error';
|
||||
}
|
||||
}
|
||||
|
||||
async editUser(userMsg, uid) {
|
||||
const { ctx } = this;
|
||||
try {
|
||||
const where = { uid };
|
||||
const result = await ctx.model.BSide.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.model.BSide.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.model.BSide.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.model.BSide.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 === 'B' ? 'BSide' : 'Insiders';
|
||||
const model = uidLastCode === 'B' ? ctx.model : ctx.model3;
|
||||
const managerWhere = uidLastCode === 'B' ? { uid, role: 1 } : { 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 = {};
|
||||
const organization = result.organization;
|
||||
const role = { [Op.not]: 1 };
|
||||
if(modelType == "single") {
|
||||
where = { role, organization, ...body };
|
||||
delete where.location;
|
||||
} 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 = { role, organization, account_name, user_name, phone };
|
||||
} else if (modelType == "all") {
|
||||
where = { role, organization, };
|
||||
}
|
||||
let updateObj = { salt: this.encryptRequest(salt), status: 0, password: originPassword };
|
||||
if(resetType == "default") {
|
||||
updateObj.user_name = "";
|
||||
updateObj.phone = "";
|
||||
}
|
||||
const resetList = await ctx.model.BSide.update(updateObj, { 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 = BSideService;
|
||||
Reference in New Issue
Block a user