20261008
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 添加用户
|
||||
* @url admin/system/user/sys/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} username 用户名
|
||||
* @param {String} nickname 昵称
|
||||
* @param {String} gender 性别
|
||||
* @param {Boolean} mobile 手机号
|
||||
* @param {String} comment 备注
|
||||
* @param {Array} dcloud_appid 允许登录的应用列表
|
||||
* @param {Number} login_appid_type 0:全部应用 1:部分应用
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
username,
|
||||
password,
|
||||
nickname,
|
||||
gender,
|
||||
mobile,
|
||||
email,
|
||||
comment,
|
||||
allow_login_background,
|
||||
dcloud_appid = [],
|
||||
login_appid_type
|
||||
} = data;
|
||||
if (!password) password = "234567";
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.add(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
|
||||
let dbName = "uni-id-users";
|
||||
// 检测username
|
||||
let num = await vk.baseDao.count({ dbName, whereJson: { username } });
|
||||
if (num > 0) return { code: -1, msg: `用户名【${username}】已注册!` };
|
||||
// 检测mobile
|
||||
if (mobile) {
|
||||
let num = await vk.baseDao.count({ dbName, whereJson: { mobile } });
|
||||
if (num > 0) return { code: -1, msg: `手机号【${mobile}】已注册!` };
|
||||
}
|
||||
// 检测email
|
||||
if (email) {
|
||||
let num = await vk.baseDao.count({ dbName, whereJson: { email } });
|
||||
if (num > 0) return { code: -1, msg: `邮箱【${email}】已注册!` };
|
||||
}
|
||||
if (typeof uniID.addUser !== "function") return { code: -1, msg: `请升级uni-id版本至3.3.14或以上。` };
|
||||
let addUserRes = await uniID.addUser({
|
||||
username,
|
||||
password,
|
||||
mobile,
|
||||
email,
|
||||
authorizedApp: dcloud_appid
|
||||
});
|
||||
if (addUserRes.code !== 0 || !addUserRes.uid) {
|
||||
return addUserRes;
|
||||
}
|
||||
// 用户其他信息
|
||||
let dataJson = {
|
||||
nickname,
|
||||
gender,
|
||||
comment,
|
||||
allow_login_background,
|
||||
status: 0,
|
||||
};
|
||||
// 如果设置允许登录所有应用,则直接删除dcloud_appid字段
|
||||
if (login_appid_type === 0) {
|
||||
dataJson["dcloud_appid"] = _.remove();
|
||||
}
|
||||
// 设置用户其他信息
|
||||
await vk.baseDao.update({
|
||||
dbName,
|
||||
whereJson: {
|
||||
_id: addUserRes.uid
|
||||
},
|
||||
dataJson
|
||||
});
|
||||
res.type = "register";
|
||||
res.uid = addUserRes.uid;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 批量修改用户可登录的客户端
|
||||
* @url admin/system/user/sys/batchUpdateAppLogin 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { uniID, customUtil, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 可写与数据库的交互逻辑等等
|
||||
let {
|
||||
user_ids,
|
||||
allow_login_background = false,
|
||||
dcloud_appid,
|
||||
login_appid_type,
|
||||
mode
|
||||
} = data;
|
||||
if(vk.pubfn.isNullOne(user_ids, login_appid_type, mode)){
|
||||
return { code: -1, msg: "参数错误" };
|
||||
}
|
||||
if(mode !== 1 && typeof dcloud_appid !== "string"){
|
||||
return { code: -1, msg: "新增和移除模式下,dcloud_appid只能是字符串" };
|
||||
}
|
||||
let dataJson = {};
|
||||
dataJson["allow_login_background"] = allow_login_background;
|
||||
if(login_appid_type === 0){
|
||||
// 可登录全部应用
|
||||
dataJson["dcloud_appid"] = _.remove();
|
||||
} else{
|
||||
res.successNum = 0;
|
||||
res.failNum = 0;
|
||||
for(let i=0; i<user_ids.length; i++){
|
||||
let user_id = user_ids[i];
|
||||
let updateRes;
|
||||
try {
|
||||
if(mode === 1){
|
||||
// 可登录部分应用
|
||||
updateRes = await uniID.setAuthorizedAppLogin({
|
||||
uid: user_id,
|
||||
dcloudAppidList: dcloud_appid
|
||||
});
|
||||
}else if(mode === 2){
|
||||
// 可登录部分应用
|
||||
updateRes = await uniID.authorizeAppLogin({
|
||||
uid: user_id,
|
||||
dcloudAppid: dcloud_appid
|
||||
});
|
||||
}else if(mode === 3){
|
||||
// 可登录部分应用
|
||||
updateRes = await uniID.forbidAppLogin({
|
||||
uid: user_id,
|
||||
dcloudAppid: dcloud_appid
|
||||
});
|
||||
}
|
||||
}catch(err){}
|
||||
if(updateRes.code === 0){
|
||||
res.successNum ++;
|
||||
}else{
|
||||
res.failNum ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
res.num = await vk.baseDao.update({
|
||||
dbName:"uni-id-users",
|
||||
whereJson:{
|
||||
_id: _.in(user_ids)
|
||||
},
|
||||
dataJson
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改用户推荐人
|
||||
* @url admin/system/user/sys/batchUpdateInviterUid 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} user_id 用户ID
|
||||
* @param {String} parent_id 修改成的用户推荐人邀请码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { user_id, parent_id } = data;
|
||||
// 参数非空检测
|
||||
if (vk.pubfn.isNullOne(user_id)) {
|
||||
return { code: -1, msg: '参数错误' };
|
||||
}
|
||||
let parentUser = await vk.baseDao.findById({
|
||||
dbName: "uni-id-users",
|
||||
id: parent_id,
|
||||
});
|
||||
if (vk.pubfn.isNull(parentUser)) {
|
||||
return { code: -1, msg: '父标识对应的用户不存在!' };
|
||||
}
|
||||
let { my_invite_code } = parentUser;
|
||||
if (vk.pubfn.isNull(my_invite_code)) {
|
||||
return { code: -1, msg: '父标识对应的用户无邀请码,无法邀请!' };
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res = await uniID.acceptInvite({
|
||||
uid: user_id,
|
||||
inviteCode: my_invite_code
|
||||
});
|
||||
res.msg = res.message;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 批量修改用户状态
|
||||
* @url admin/system/user/sys/batchUpdateStatus 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Array} user_ids 用户id数组
|
||||
* @param {Integer} status 修改成的用户状态:0 正常 1 禁用 2 审核中 3 审核拒绝
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { user_ids, status } = data;
|
||||
// 参数非空检测
|
||||
if (vk.pubfn.isNullOne(user_ids, status)) {
|
||||
return { code: -1, msg: '参数错误' };
|
||||
}
|
||||
if (user_ids.indexOf(uid) > -1 && status === 1) {
|
||||
return { code: -1, msg: '不可禁用自己' };
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.update({
|
||||
dbName: "uni-id-users",
|
||||
whereJson: {
|
||||
_id: _.in(user_ids)
|
||||
},
|
||||
dataJson: {
|
||||
status: status
|
||||
}
|
||||
});
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 为用户绑定角色
|
||||
* @url admin/system/user/sys/bindRole 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} user_id 用户id
|
||||
* @param {Array} roleList 角色Id(role_id)列表
|
||||
* @param {Boolean} reset 是否直接覆盖用户角色,true:直接将roleList设置为用户角色,false:在用户已有角色后追加角色
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { user_id, roleList, reset } = data;
|
||||
res = uniID.bindRole({
|
||||
uid: user_id,
|
||||
roleList,
|
||||
reset
|
||||
});
|
||||
res.msg = res.message;
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* XXXnameXXX
|
||||
* @url admin/system/user/sys/changeCoop 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
|
||||
const company = await vk.baseDao.findById({
|
||||
dbName: "uni-id-users",
|
||||
id: data.id
|
||||
});
|
||||
|
||||
const isCoop = (!company.isCoop || company.isCoop === 0) ? 1 : 0
|
||||
await vk.baseDao.updateById({
|
||||
dbName: "uni-id-users",
|
||||
id: data.id,
|
||||
dataJson: {
|
||||
isCoop
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
const PROFILE_KEY = 'notaryUnionPayProfile';
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* 审核金久信公正银联资料
|
||||
* @url admin/system/user/sys/changeNotaryUnionPayProfileStatus 前端调用的url参数地址
|
||||
*/
|
||||
main: async (event) => {
|
||||
const {data = {}, util} = event;
|
||||
const {vk} = util;
|
||||
const {id, status, refuseReason = null} = data;
|
||||
|
||||
const user = await vk.baseDao.findByWhereJson({
|
||||
dbName: 'uni-id-users',
|
||||
whereJson: {_id: id}
|
||||
});
|
||||
|
||||
if (!user || !user[PROFILE_KEY]) {
|
||||
return {
|
||||
code: -1,
|
||||
msg: '未找到银联资料'
|
||||
};
|
||||
}
|
||||
|
||||
const profile = {
|
||||
...user[PROFILE_KEY],
|
||||
status,
|
||||
refuseReason: status === 2 ? refuseReason : null,
|
||||
reviewTime: vk.pubfn.timeFormat(new Date(), "yyyy-MM-dd hh:mm:ss"),
|
||||
reviewTimestamp: Date.now(),
|
||||
};
|
||||
|
||||
await vk.baseDao.updateById({
|
||||
dbName: 'uni-id-users',
|
||||
id,
|
||||
dataJson: {
|
||||
[PROFILE_KEY]: profile,
|
||||
isNotaryBusiness: status === 1 ? 1 : 0
|
||||
}
|
||||
});
|
||||
|
||||
await vk.baseDao.add({
|
||||
dbName: "jjx-message",
|
||||
dataJson: {
|
||||
uid: id,
|
||||
title: '银联资料审核结果',
|
||||
content: `尊敬的用户,您的金久信公正银联资料已${status === 1 ? '审核通过' : '审核拒绝'}。${status === 2 && refuseReason ? `拒绝原因:${refuseReason}` : ''}`,
|
||||
type: 'notary-union-pay-profile',
|
||||
hasRead: false
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
code: 0,
|
||||
msg: '操作成功'
|
||||
};
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* XXXnameXXX
|
||||
* @url admin/system/user/sys/changeCoop 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
|
||||
const company = await vk.baseDao.findById({
|
||||
dbName: "uni-id-users",
|
||||
id: data.id
|
||||
});
|
||||
|
||||
const showInYellow = (!company.showInYellow || company.showInYellow === 0) ? 1 : 0
|
||||
await vk.baseDao.updateById({
|
||||
dbName: "uni-id-users",
|
||||
id: data.id,
|
||||
dataJson: {
|
||||
showInYellow
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 认证审核
|
||||
* @url admin/system/user/sys/changeStatus 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let {data = {}, userInfo, util, filterResponse, originalParam} = event;
|
||||
let {customUtil, uniID, config, pubFun, vk, db, _} = util;
|
||||
let {uid} = data;
|
||||
let res = {code: 0, msg: ""};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
const {id, authStatus, refuseReason} = data
|
||||
let userLevel = authStatus === 1 ? 0 : -1
|
||||
const user = await vk.baseDao.findByWhereJson({
|
||||
dbName: 'uni-id-users',
|
||||
whereJson: {
|
||||
_id: id
|
||||
},
|
||||
})
|
||||
if (user.userLevel > 0) userLevel = user.userLevel
|
||||
await vk.baseDao.updateAndReturn({
|
||||
dbName: 'uni-id-users',
|
||||
whereJson: {
|
||||
_id: id
|
||||
},
|
||||
dataJson: {
|
||||
authStatus,
|
||||
// fadadaConfirm,
|
||||
refuseReason,
|
||||
userLevel,
|
||||
authTime: Date.now()
|
||||
}
|
||||
})
|
||||
|
||||
await vk.baseDao.add({
|
||||
dbName: "jjx-message",
|
||||
dataJson: {
|
||||
uid: res.uid,
|
||||
title: '认证结果',
|
||||
content: `尊敬的用户,您的认证已${authStatus === 1 ? '通过' : '拒绝'}。`,
|
||||
type: 'auth',
|
||||
hasRead: false
|
||||
}
|
||||
});
|
||||
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 删除用户
|
||||
* @url admin/system/user/sys/delete 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id 用户ID
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { _id } = data;
|
||||
if (vk.pubfn.isNullOne(_id)) {
|
||||
return { code: -1, msg: '_id不能为空' };
|
||||
}
|
||||
if (uid === _id) {
|
||||
return { code: -1, msg: '请勿删除当前登录账户!' };
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.deleteById({
|
||||
dbName: "uni-id-users",
|
||||
id:_id
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 查询用户列表(可登录后台的)
|
||||
* @url admin/system/user/sys/getList 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Number} pageIndex 当前页码
|
||||
* @param {Number} pageSize 每页显示数量
|
||||
* @param {Array<Object>} sortRule 排序规则
|
||||
* @param {object} formData 查询条件数据源
|
||||
* @param {Array<Object>} columns 查询条件规则
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let {data = {}, userInfo, util, filterResponse, originalParam} = event;
|
||||
let {customUtil, uniID, config, pubFun, vk, db, _} = util;
|
||||
let {uid} = data;
|
||||
let res = {code: 0, msg: ''};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {dcloud_appid, appids, type} = data.formData || {};
|
||||
let whereJson = {};
|
||||
if (dcloud_appid) {
|
||||
if (dcloud_appid === "___empty-array___") {
|
||||
whereJson["dcloud_appid"] = [];
|
||||
} else if (dcloud_appid === "___error___") {
|
||||
whereJson["dcloud_appid"] = _.and(_.exists(true), _.nin(appids));
|
||||
} else if (dcloud_appid === "___non-existent___") {
|
||||
whereJson["dcloud_appid"] = _.exists(false);
|
||||
} else {
|
||||
whereJson["dcloud_appid"] = _.or(_.eq(dcloud_appid), _.exists(false));
|
||||
}
|
||||
}
|
||||
if (type) {
|
||||
whereJson["accountType"] = type;
|
||||
}
|
||||
if (data.type) {
|
||||
whereJson["accountType"] = data.type;
|
||||
}
|
||||
if (data.isCompanyQuote) {
|
||||
whereJson["isCompanyQuote"] = 1;
|
||||
}
|
||||
if (data.isProductQuote) {
|
||||
whereJson["isProductQuote"] = 1;
|
||||
}
|
||||
if (data.isCostQuote) {
|
||||
whereJson["isCostQuote"] = 1;
|
||||
}
|
||||
|
||||
if (data.formData) {
|
||||
if (data.formData.address && data.formData.address.province) {
|
||||
whereJson["company.addressRegion.province.code"] = data.formData.address.province.code
|
||||
}
|
||||
if (data.formData.type) whereJson["accountType"] = data.formData.type;
|
||||
if (data.formData.isSignOnly) whereJson["isSignOnly"] = true;
|
||||
if (data.formData.onlyNotaryUnionPayProfile) {
|
||||
whereJson["notaryUnionPayProfile.status"] = _.in([0, 1, 2]);
|
||||
}
|
||||
if (data.formData.hasOwnProperty('profileStatus') && data.formData.profileStatus !== '' && data.formData.profileStatus !== null && data.formData.profileStatus !== undefined) {
|
||||
if (parseInt(data.formData.profileStatus) === -1) {
|
||||
whereJson["notaryUnionPayProfile.status"] = _.exists(false);
|
||||
} else {
|
||||
whereJson["notaryUnionPayProfile.status"] = parseInt(data.formData.profileStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('whereJson', whereJson)
|
||||
let dbName = "uni-id-users";
|
||||
res = await vk.baseDao.getTableData({
|
||||
dbName,
|
||||
data,
|
||||
whereJson,
|
||||
sortArr: [{"name": "register_date", "type": "desc"}],
|
||||
// 副表列表
|
||||
foreignDB: [
|
||||
{
|
||||
dbName: "opendb-app-list",
|
||||
localKey: "dcloud_appid",
|
||||
foreignKey: "appid",
|
||||
localKeyType: "array",
|
||||
as: "appList",
|
||||
limit: 500
|
||||
},
|
||||
{
|
||||
dbName: "uni-id-users",
|
||||
localKey: "inviter_uid",
|
||||
foreignKey: "_id",
|
||||
localKeyType: "array",
|
||||
as: "parent",
|
||||
limit: 1
|
||||
}
|
||||
],
|
||||
});
|
||||
const toNum = (value, defaultValue = 0) => {
|
||||
const num = Number(value);
|
||||
return Number.isNaN(num) ? defaultValue : num;
|
||||
};
|
||||
if (data.formData && data.formData.isSignOnly && res.rows && res.rows.length > 0) {
|
||||
const userIds = res.rows.map(item => item._id).filter(Boolean);
|
||||
const qybStatMap = {};
|
||||
userIds.forEach(userId => {
|
||||
qybStatMap[userId] = {
|
||||
qybBuyNum: 0,
|
||||
qybUsedNum: 0,
|
||||
qybGiftNum: 0,
|
||||
qybTotalGetNum: 0
|
||||
};
|
||||
});
|
||||
|
||||
if (userIds.length > 0) {
|
||||
const payRes = await vk.baseDao.select({
|
||||
dbName: "jjx-sign-pay_list",
|
||||
pageSize: 5000,
|
||||
whereJson: {
|
||||
userId: _.in(userIds)
|
||||
}
|
||||
});
|
||||
(payRes.rows || []).forEach(item => {
|
||||
if (item.userId && qybStatMap[item.userId]) qybStatMap[item.userId].qybUsedNum += 1;
|
||||
});
|
||||
|
||||
const orderRes = await vk.baseDao.select({
|
||||
dbName: "jjx-order",
|
||||
pageSize: 5000,
|
||||
whereJson: {
|
||||
uid: _.in(userIds),
|
||||
type: 13,
|
||||
orderStatus: 4
|
||||
}
|
||||
});
|
||||
const orderUserMap = {};
|
||||
const orderIds = [];
|
||||
(orderRes.rows || []).forEach(item => {
|
||||
if (item._id && item.uid && qybStatMap[item.uid]) {
|
||||
orderUserMap[item._id] = item.uid;
|
||||
orderIds.push(item._id);
|
||||
}
|
||||
});
|
||||
|
||||
if (orderIds.length > 0) {
|
||||
const goodsRes = await vk.baseDao.select({
|
||||
dbName: "jjx-order-goods",
|
||||
pageSize: 5000,
|
||||
whereJson: {
|
||||
orderId: _.in(orderIds)
|
||||
}
|
||||
});
|
||||
const goodsRows = goodsRes.rows || [];
|
||||
const qybIds = [...new Set(goodsRows.map(item => item.goodsId).filter(Boolean))];
|
||||
const qybMap = {};
|
||||
if (qybIds.length > 0) {
|
||||
const qybRes = await vk.baseDao.select({
|
||||
dbName: "jjx-qyb",
|
||||
pageSize: 5000,
|
||||
whereJson: {
|
||||
_id: _.in(qybIds)
|
||||
}
|
||||
});
|
||||
(qybRes.rows || []).forEach(item => {
|
||||
qybMap[item._id] = item;
|
||||
});
|
||||
}
|
||||
|
||||
goodsRows.forEach(item => {
|
||||
const userId = orderUserMap[item.orderId];
|
||||
if (userId && qybStatMap[userId]) {
|
||||
const buyNum = Math.max(toNum(item.num, 1), 1);
|
||||
const qyb = qybMap[item.goodsId];
|
||||
const getNum = qyb ? toNum(qyb.getNum, 1) : 1;
|
||||
qybStatMap[userId].qybBuyNum += buyNum;
|
||||
qybStatMap[userId].qybTotalGetNum += getNum * buyNum;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Object.keys(qybStatMap).forEach(userId => {
|
||||
qybStatMap[userId].qybGiftNum = Math.max(qybStatMap[userId].qybTotalGetNum - qybStatMap[userId].qybBuyNum, 0);
|
||||
});
|
||||
res.rows.forEach(item => {
|
||||
const qybStat = qybStatMap[item._id] || {};
|
||||
item.qybBuyNum = qybStat.qybBuyNum || 0;
|
||||
item.qybUsedNum = qybStat.qybUsedNum || 0;
|
||||
item.qybNum = toNum(item.qybNum, 0);
|
||||
item.qybGiftNum = qybStat.qybGiftNum || 0;
|
||||
});
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < res.rows.length; i++) {
|
||||
if (res.rows[i].isNotaryBusiness === undefined || res.rows[i].isNotaryBusiness === null) {
|
||||
res.rows[i].isNotaryBusiness = res.rows[i].notaryUnionPayProfile && res.rows[i].notaryUnionPayProfile.status === 1 ? 1 : 0
|
||||
}
|
||||
res.rows[i].profileStatus = res.rows[i].notaryUnionPayProfile ? res.rows[i].notaryUnionPayProfile.status : -1
|
||||
if (res.rows[i].accountType === 1) {
|
||||
if (res.rows[i].person && res.rows[i].person.mainSpotCategoryIds && res.rows[i].person.mainSpotCategoryIds.length > 0) {
|
||||
const goodsRes = await vk.baseDao.select({
|
||||
dbName: "jjx-spot-category",
|
||||
whereJson: {
|
||||
_id: _.in(res.rows[i].person.mainSpotCategoryIds)
|
||||
}
|
||||
});
|
||||
console.log('goodsRes', goodsRes)
|
||||
if (goodsRes.rows && goodsRes.rows.length > 0) {
|
||||
res.rows[i].person.mainSpotCategoryNames = goodsRes.rows.map(item => item.name).join(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (res.rows[i].accountType === 2) {
|
||||
if (res.rows[i].company && res.rows[i].company.mainSpotCategoryIds && res.rows[i].company.mainSpotCategoryIds.length > 0) {
|
||||
const goodsRes = await vk.baseDao.select({
|
||||
dbName: "jjx-spot-category",
|
||||
whereJson: {
|
||||
_id: _.in(res.rows[i].company.mainSpotCategoryIds)
|
||||
}
|
||||
});
|
||||
console.log('goodsRes', goodsRes)
|
||||
if (goodsRes.rows && goodsRes.rows.length > 0) {
|
||||
res.rows[i].company.mainSpotCategoryNames = goodsRes.rows.map(item => item.name).join(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 强制重置用户密码
|
||||
* @url admin/system/user/sys/resetPassword 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} user_id 用户ID
|
||||
* @param {String} password 重置后的密码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { uniID, customUtil, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { user_id, password } = data;
|
||||
// 重置密码
|
||||
res = await uniID.resetPwd({
|
||||
uid: user_id,
|
||||
password
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改用户信息
|
||||
* @url admin/system/user/sys/update 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id 用户ID
|
||||
* @param {String} nickname 昵称
|
||||
* @param {String} gender 性别
|
||||
* @param {Boolean} mobile 手机号
|
||||
* @param {String} comment 备注
|
||||
* @param {Array} dcloud_appid 允许登录的应用列表
|
||||
* @param {Number} login_appid_type 0:全部应用 1:部分应用
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
_id,
|
||||
nickname,
|
||||
gender,
|
||||
mobile,
|
||||
email,
|
||||
comment,
|
||||
allow_login_background,
|
||||
dcloud_appid = [],
|
||||
login_appid_type,
|
||||
isService,
|
||||
allowArea,
|
||||
} = data;
|
||||
let mobile_confirmed;
|
||||
let email_confirmed;
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.update(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
|
||||
let dbName = "uni-id-users";
|
||||
|
||||
// 检测mobile
|
||||
if (mobile) {
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
mobile: mobile,
|
||||
_id: _.neq(_id)
|
||||
}
|
||||
});
|
||||
if (num > 0) return { code: -1, msg: `手机号【${mobile}】已注册!` };
|
||||
mobile_confirmed = 1; // 设置该手机号为已验证(否则无法通过手机号进行登录)
|
||||
}
|
||||
// 检测email
|
||||
if (email) {
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
email: email,
|
||||
_id: _.neq(_id)
|
||||
}
|
||||
});
|
||||
if (num > 0) return { code: -1, msg: `邮箱【${email}】已注册!` };
|
||||
email_confirmed = 1; // 设置该邮箱为已验证(否则无法通过邮箱进行登录)
|
||||
}
|
||||
let dataJson = {
|
||||
nickname,
|
||||
gender,
|
||||
mobile,
|
||||
mobile_confirmed,
|
||||
email,
|
||||
email_confirmed,
|
||||
comment,
|
||||
allow_login_background,
|
||||
isService,
|
||||
allowArea
|
||||
};
|
||||
// 设置允许登录的应用列表
|
||||
if (login_appid_type && typeof uniID.setAuthorizedAppLogin === "function") {
|
||||
let setAuthorizedAppLoginRes = await uniID.setAuthorizedAppLogin({
|
||||
uid: _id,
|
||||
dcloudAppidList: dcloud_appid
|
||||
});
|
||||
if (setAuthorizedAppLoginRes.code !== 0) {
|
||||
return setAuthorizedAppLoginRes;
|
||||
}
|
||||
} else if (login_appid_type === 0) {
|
||||
dataJson["dcloud_appid"] = _.remove();
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id: _id,
|
||||
dataJson
|
||||
});
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
'use strict';
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
class Util {
|
||||
constructor() {
|
||||
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
async add(event) {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
username: [
|
||||
{ required: true, validator: vk.pubfn.validator("username"),
|
||||
message: '用户名以字母开头,长度在6~18之间,只能包含字母、数字和下划线', trigger: 'blur' }
|
||||
],
|
||||
nickname: [
|
||||
{ required: true, message: '昵称为必填字段', trigger: 'blur' },
|
||||
{ min: 2, max: 20, message: '昵称长度在 2 到 20 个字符', trigger: 'blur' }
|
||||
],
|
||||
password: [
|
||||
{ validator:vk.pubfn.validator("password"), message: '密码长度在6~18之间,只能包含字母、数字和下划线', trigger: 'blur' }
|
||||
],
|
||||
mobile: [
|
||||
{ validator: vk.pubfn.validator("mobile"), message: '手机号格式错误', trigger: 'blur' }
|
||||
],
|
||||
email: [
|
||||
{ validator: vk.pubfn.validator("email"), message: '邮箱格式错误', trigger: 'blur' }
|
||||
],
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data: data,
|
||||
rules: rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
async update(event) {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
_id: [
|
||||
{ required: true, message: '用户ID不能为空', trigger: 'blur' },
|
||||
],
|
||||
nickname: [
|
||||
{ required: true, message: '昵称为必填字段', trigger: 'blur' },
|
||||
{ min: 2, max: 20, message: '昵称长度在 2 到 20 个字符', trigger: 'blur' }
|
||||
],
|
||||
mobile: [
|
||||
{ validator: vk.pubfn.validator("mobile"), message: '手机号格式错误', trigger: 'blur' }
|
||||
],
|
||||
email: [
|
||||
{ validator: vk.pubfn.validator("email"), message: '邮箱格式错误', trigger: 'blur' }
|
||||
]
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data: data,
|
||||
rules: rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
}
|
||||
module.exports = new Util
|
||||
Reference in New Issue
Block a user