166 lines
6.0 KiB
JavaScript
166 lines
6.0 KiB
JavaScript
'use strict';
|
|
|
|
const Service = require('../core/base_service');
|
|
|
|
const fileName = "Exam";
|
|
|
|
const { Op } = require('sequelize');
|
|
|
|
class ExamService extends Service {
|
|
async loginUser(phone) {
|
|
const { ctx } = this;
|
|
try {
|
|
const where = { phone };
|
|
const result = await ctx.model5.Examinee.findOne({ where });
|
|
return result || false;
|
|
} catch (error) {
|
|
const blockName = fileName + "--" + "loginUser";
|
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
|
return 'error';
|
|
}
|
|
}
|
|
|
|
async uidfinder(uid) {
|
|
const { ctx } = this;
|
|
try {
|
|
const where = { uid };
|
|
const result = await ctx.model5.Examinee.findOne({ where });
|
|
return result || false;
|
|
} catch (error) {
|
|
const blockName = fileName + "--" + "uidfinder";
|
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
|
return 'error';
|
|
}
|
|
}
|
|
|
|
async getUser(uid) {
|
|
const { ctx } = this;
|
|
try {
|
|
const attributes = ['user_name', 'identity_card', 'real_check', 'email', 'phone', 'address', 'workplace', 'status'];
|
|
const where = { uid };
|
|
const result = await ctx.model5.Examinee.findOne({ attributes, where });
|
|
if(result.dataValues.status == 2) return false;
|
|
if(result.dataValues.real_check == 0 || result.dataValues.real_check == 2) {
|
|
const where = {
|
|
user_uid: uid,
|
|
user_name: result.dataValues.user_name,
|
|
identity_card: result.dataValues.identity_card,
|
|
};
|
|
const audit = await ctx.model5.Audit.findOne({ attributes: ['status'], where });
|
|
if (audit != null) await ctx.model5.Examinee.update({ real_check: audit.dataValues.status }, { where: { uid } });
|
|
};
|
|
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 {
|
|
const where = { uid };
|
|
let attributes = ['user_name', 'identity_card'];
|
|
const check = await ctx.model5.Examinee.findOne({ attributes, where });
|
|
const { user_name, identity_card } = check.dataValues;
|
|
if(user_name !== userMsg.user_name || identity_card !== userMsg.identity_card) {
|
|
userMsg.real_check = 0;
|
|
};
|
|
const audit = await ctx.model5.Audit.findOne({ where: { user_uid: uid, status: 0 } });
|
|
if(audit == null) {
|
|
const auditForm = {
|
|
user_uid: uid,
|
|
user_name: userMsg.user_name,
|
|
identity_card: userMsg.identity_card,
|
|
status: 0,
|
|
created_at: new Date(),
|
|
};
|
|
await ctx.model5.Audit.create(auditForm);
|
|
} else {
|
|
const auditUpdate = {
|
|
user_name: userMsg.user_name,
|
|
identity_card: userMsg.identity_card,
|
|
created_at: new Date(),
|
|
}
|
|
await ctx.model5.Audit.update(auditUpdate, { where: { user_uid: uid, status: 0 } });
|
|
}
|
|
const result = await ctx.model5.Examinee.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 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.model5.Examinee.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.model5.Examinee.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 result = await ctx.model5.Examinee.findOne({ where: { uid, role: [6, 9] } });
|
|
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 = {}, role;
|
|
if(result.dataValues.password == 9) {
|
|
role = { [Op.not]: [9] };
|
|
} else {
|
|
role = { [Op.not]: [6, 9] };
|
|
}
|
|
if(modelType == "single") {
|
|
where = { role, ...body };
|
|
} else if (modelType == "multiple") {
|
|
let user_name = [], phone = [];
|
|
for (const key in body) {
|
|
body[key].forEach(element => {
|
|
user_name.push(element.user_name);
|
|
phone.push(element.phone);
|
|
});
|
|
}
|
|
where = { role, user_name, phone };
|
|
} else if (modelType == "all") {
|
|
where = { role };
|
|
}
|
|
const resetList = await ctx.model5.Examinee.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.model5.Examinee.update({ login_status }, { where });
|
|
} catch (error) {
|
|
const blockName = fileName + "--" + "loginStatus";
|
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
|
return 'error';
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = ExamService; |