20261008
This commit is contained in:
+162
@@ -0,0 +1,162 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 添加或修改
|
||||
* @url admin/system/app-upgrade-center/sys/addUpdate, 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} appid 应用的AppID
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
if (data.platformRadio && vk.pubfn.isNull(data.platform)) {
|
||||
data.platform = [data.platformRadio];
|
||||
}
|
||||
let {
|
||||
_id,
|
||||
appid,
|
||||
name,
|
||||
title,
|
||||
contents,
|
||||
platform,
|
||||
platformRadio,
|
||||
type,
|
||||
version,
|
||||
min_uni_version,
|
||||
url,
|
||||
stable_publish,
|
||||
is_silently,
|
||||
is_mandatory,
|
||||
create_env = "upgrade-center",
|
||||
store_list
|
||||
} = data;
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let mode = _id ? "update" : "add";
|
||||
let formRulesRes = await formRules[mode](event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
if (type === "wgt") {
|
||||
if (vk.pubfn.isNull(min_uni_version)) return { code: -1, msg: "最低app版本号不能为空" };
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
appid = appid.trim();
|
||||
let create_date = Date.now();
|
||||
let uni_platform = platform.indexOf("Android") > -1 ? "android" : "ios";
|
||||
let dbName = "opendb-app-versions";
|
||||
// 添加和修改公共的dataJson
|
||||
let dataJson = {
|
||||
title,
|
||||
contents,
|
||||
url,
|
||||
min_uni_version,
|
||||
stable_publish,
|
||||
is_silently,
|
||||
is_mandatory,
|
||||
store_list
|
||||
};
|
||||
|
||||
if (mode === "add") {
|
||||
// 获取最新的已发布的版本信息
|
||||
let info = await vk.baseDao.select({
|
||||
dbName,
|
||||
getCount: false,
|
||||
getMain: true,
|
||||
getOne: true,
|
||||
pageIndex: 1,
|
||||
pageSize: 1,
|
||||
whereJson: {
|
||||
appid,
|
||||
type,
|
||||
platform,
|
||||
stable_publish: true
|
||||
},
|
||||
sortArr: [{ name: "create_date", type: "desc" }],
|
||||
});
|
||||
// 版本必须比之前的版本高
|
||||
if (info && info.version && compareVersion(version, info.version) !== 1) {
|
||||
return { code: -1, msg: `版本必须大于${info.version}` };
|
||||
}
|
||||
// 添加
|
||||
vk.pubfn.objectAssign(dataJson, {
|
||||
appid,
|
||||
name,
|
||||
platform,
|
||||
version,
|
||||
type,
|
||||
create_date,
|
||||
uni_platform,
|
||||
create_env,
|
||||
});
|
||||
_id = await vk.baseDao.add({
|
||||
dbName,
|
||||
dataJson
|
||||
});
|
||||
if (_id) {
|
||||
res.success = true;
|
||||
res.msg = "添加成功";
|
||||
}
|
||||
} else {
|
||||
// 修改并返回修改后的数据
|
||||
res.info = await vk.baseDao.updateAndReturn({
|
||||
dbName,
|
||||
whereJson: {
|
||||
_id
|
||||
},
|
||||
dataJson
|
||||
});
|
||||
if (res.info) {
|
||||
res.success = true;
|
||||
res.msg = "修改成功";
|
||||
}
|
||||
}
|
||||
|
||||
if (res.success && dataJson.stable_publish) {
|
||||
// 将其他版本设置为已下线
|
||||
await vk.baseDao.update({
|
||||
dbName,
|
||||
whereJson: {
|
||||
appid,
|
||||
type,
|
||||
platform,
|
||||
stable_publish: true,
|
||||
_id: _.neq(_id)
|
||||
},
|
||||
dataJson: {
|
||||
stable_publish: false
|
||||
}
|
||||
});
|
||||
}
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 比较2个版本号的大小
|
||||
* 1 version1 > version2
|
||||
* 0 version1 = version2
|
||||
* -1 version1 < version2
|
||||
*/
|
||||
function compareVersion(version1, version2) {
|
||||
let arr1 = version1.split(".");
|
||||
let arr2 = version2.split(".");
|
||||
if (Number(arr1[0]) === Number(arr2[0]) && Number(arr1[1]) === Number(arr2[1]) && Number(arr1[2]) === Number(arr2[2])) {
|
||||
return 0;
|
||||
}
|
||||
if (Number(arr1[0]) > Number(arr2[0])) {
|
||||
return 1;
|
||||
}
|
||||
if (Number(arr1[0]) === Number(arr2[0]) && Number(arr1[1]) > Number(arr2[1])) {
|
||||
return 1;
|
||||
}
|
||||
if (Number(arr1[0]) === Number(arr2[0]) && Number(arr1[1]) === Number(arr2[1]) && Number(arr1[2]) > Number(arr2[2])) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 删除
|
||||
* @url admin/system/app-upgrade-center/sys/delete 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id id
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { _id } = data;
|
||||
if (vk.pubfn.isNull(_id)) return { code: -1, msg: 'id不能为空' };
|
||||
let dbName = "opendb-app-versions";
|
||||
let info = await vk.baseDao.findById({
|
||||
dbName,
|
||||
id: _id,
|
||||
});
|
||||
if (vk.pubfn.isNull(info)) return { code: -1, msg: "版本不存在" };
|
||||
if (info.stable_publish) return { code: -1, msg: "不可删除已上线的版本" };
|
||||
res.num = await vk.baseDao.deleteById({
|
||||
dbName,
|
||||
id: _id
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 分页查询
|
||||
* @url admin/system/app-upgrade-center/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 } = event;
|
||||
let { vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 可写与数据库的交互逻辑等等
|
||||
let dbName = "opendb-app-versions";
|
||||
res = await vk.baseDao.getTableData({
|
||||
dbName,
|
||||
data,
|
||||
sortArr: [{ name: "create_date", type: "desc" }]
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
'use strict';
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
class Util {
|
||||
constructor() {
|
||||
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
async add(event) {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
appid: [
|
||||
// 必填
|
||||
{ required: true, message: "appid不能为空", trigger: ['blur','change'] }
|
||||
],
|
||||
contents: [
|
||||
// 必填
|
||||
{ required: true, message: "更新内容不能为空", trigger: ['blur','change'] }
|
||||
],
|
||||
platform: [
|
||||
// 必填
|
||||
{ required: true, message: "平台不能为空", trigger: ['blur','change'] }
|
||||
],
|
||||
version: [
|
||||
// 必填
|
||||
{ required: true, message: "版本号不能为空", trigger: ['blur','change'] },
|
||||
{ validator: vk.pubfn.validator("version"), message: '版本号格式必须为:xx.xx.xx(3个数字组成,数字范围1-99,0-99,0-99) 如1.0.1 不可以是1.0.01', trigger: 'blur' }
|
||||
],
|
||||
url: [
|
||||
// 必填
|
||||
{ required: true, message: "链接不能为空", trigger: ['blur','change'] }
|
||||
],
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
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' },
|
||||
],
|
||||
contents: [
|
||||
// 必填
|
||||
{ required: true, message: "更新内容不能为空", trigger: ['blur','change'] }
|
||||
],
|
||||
url: [
|
||||
// 必填
|
||||
{ required: true, message: "链接不能为空", trigger: ['blur','change'] }
|
||||
],
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data: data,
|
||||
rules: rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
}
|
||||
module.exports = new Util
|
||||
@@ -0,0 +1,100 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 添加应用
|
||||
* @url admin/system/app/sys/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id id
|
||||
* @param {String} appid 应用的AppID
|
||||
* @param {String} type 应用类型
|
||||
* @param {String} name 应用名称
|
||||
* @param {String} description 应用描述
|
||||
* 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: 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
appid,
|
||||
type,
|
||||
name,
|
||||
description,
|
||||
// 1.13.4 新增以下字段(主要用于生成统一发布页和APP升级中心)
|
||||
enable_upgrade_center,
|
||||
introduction,
|
||||
icon_url,
|
||||
screenshot,
|
||||
app_android,
|
||||
app_ios,
|
||||
mp_weixin,
|
||||
mp_alipay,
|
||||
mp_baidu,
|
||||
mp_toutiao,
|
||||
mp_qq,
|
||||
mp_kuaishou,
|
||||
mp_lark,
|
||||
mp_jd,
|
||||
mp_dingtalk,
|
||||
quickapp,
|
||||
h5,
|
||||
store_list,
|
||||
} = data;
|
||||
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.add(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
appid = appid.trim();
|
||||
let dbName = "opendb-app-list";
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
appid
|
||||
}
|
||||
});
|
||||
if (num > 0) {
|
||||
return { code: -1, msg: 'appid已存在,请勿重复添加' };
|
||||
}
|
||||
|
||||
let create_date = Date.now();
|
||||
res.id = await vk.baseDao.add({
|
||||
dbName,
|
||||
dataJson: {
|
||||
appid,
|
||||
type,
|
||||
name,
|
||||
description,
|
||||
create_date,
|
||||
// 1.13.4 新增以下字段(主要用于生成统一发布页和APP升级中心)
|
||||
enable_upgrade_center,
|
||||
creator_uid: uid, // 创建者
|
||||
introduction,
|
||||
icon_url,
|
||||
screenshot,
|
||||
app_android,
|
||||
app_ios,
|
||||
mp_weixin,
|
||||
mp_alipay,
|
||||
mp_baidu,
|
||||
mp_toutiao,
|
||||
mp_qq,
|
||||
mp_kuaishou,
|
||||
mp_lark,
|
||||
mp_jd,
|
||||
mp_dingtalk,
|
||||
quickapp,
|
||||
h5,
|
||||
store_list,
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
const createPublishHtml = require('../util/createPublishHtml/index.js')
|
||||
module.exports = {
|
||||
/**
|
||||
* 生成发布页HTML
|
||||
* @url admin/system/app/sys/createPublishHtml 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk, db, _ } = util;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { id } = data;
|
||||
res = await createPublishHtml({
|
||||
id
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 删除应用
|
||||
* @url admin/system/app/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 : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 这里id不传默认设置成"___" 是为了防止因未传_id导致误删所有数据.
|
||||
let { _id } = data;
|
||||
if(vk.pubfn.isNull(_id)){
|
||||
return { code : -1, msg : 'id不能为空' };
|
||||
}
|
||||
let dbName = "opendb-app-list";
|
||||
res.num = await vk.baseDao.deleteById({
|
||||
dbName,
|
||||
id:_id
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 根据id获取信息
|
||||
* @url admin/system/app/sys/getInfo 前端调用的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: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { appid } = data;
|
||||
let dbName = "opendb-app-list";
|
||||
res.info = await vk.baseDao.findByWhereJson({
|
||||
dbName,
|
||||
whereJson:{
|
||||
appid
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 分页查询应用
|
||||
* @url admin/system/app/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 dbName = "opendb-app-list";
|
||||
res = await vk.baseDao.getTableData({
|
||||
dbName,
|
||||
data,
|
||||
sortArr: [{ name: "_id", type: "asc" }]
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改应用
|
||||
* @url admin/system/app/sys/update 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id id
|
||||
* @param {String} name 应用名称
|
||||
* @param {String} type 应用类型
|
||||
* @param {String} description 应用描述
|
||||
* 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 : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
_id,
|
||||
appid,
|
||||
type,
|
||||
name,
|
||||
description,
|
||||
// 1.13.4 新增以下字段(主要用于生成统一发布页和APP升级中心)
|
||||
enable_upgrade_center,
|
||||
introduction,
|
||||
icon_url,
|
||||
screenshot,
|
||||
app_android,
|
||||
app_ios,
|
||||
mp_weixin,
|
||||
mp_alipay,
|
||||
mp_baidu,
|
||||
mp_toutiao,
|
||||
mp_qq,
|
||||
mp_kuaishou,
|
||||
mp_lark,
|
||||
mp_jd,
|
||||
mp_dingtalk,
|
||||
quickapp,
|
||||
h5,
|
||||
store_list,
|
||||
} = data;
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.update(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
appid = appid.trim();
|
||||
let dbName = "opendb-app-list";
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
_id: _.neq(_id),
|
||||
appid
|
||||
}
|
||||
});
|
||||
if (num > 0) {
|
||||
return { code: -1, msg: '修改失败,appid已存在!' };
|
||||
}
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id:_id,
|
||||
dataJson:{
|
||||
appid,
|
||||
type,
|
||||
name,
|
||||
description,
|
||||
// 1.13.4 新增以下字段(主要用于生成统一发布页和APP升级中心)
|
||||
enable_upgrade_center,
|
||||
introduction,
|
||||
icon_url,
|
||||
screenshot,
|
||||
app_android,
|
||||
app_ios,
|
||||
mp_weixin,
|
||||
mp_alipay,
|
||||
mp_baidu,
|
||||
mp_toutiao,
|
||||
mp_qq,
|
||||
mp_kuaishou,
|
||||
mp_lark,
|
||||
mp_jd,
|
||||
mp_dingtalk,
|
||||
quickapp,
|
||||
h5,
|
||||
store_list,
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
+214
@@ -0,0 +1,214 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const TE = require('./lib/art-template.js');
|
||||
|
||||
// 标准语法的界定符规则
|
||||
TE.defaults.openTag = '{@'
|
||||
TE.defaults.closeTag = '@}'
|
||||
|
||||
const success = {
|
||||
code: 0,
|
||||
success: true,
|
||||
}
|
||||
const fail = {
|
||||
code: -1,
|
||||
success: false
|
||||
}
|
||||
|
||||
async function translateTCB(_fileList = []) {
|
||||
if (!_fileList.length) return _fileList
|
||||
// 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
|
||||
const {
|
||||
fileList
|
||||
} = await uniCloud.getTempFileURL({
|
||||
fileList: _fileList
|
||||
});
|
||||
return fileList.map((item, index) => item.tempFileURL ? item.tempFileURL : _fileList[index])
|
||||
}
|
||||
|
||||
function hasValue(value) {
|
||||
if (typeof value !== 'object') return !!value
|
||||
if (value instanceof Array) return !!value.length
|
||||
return !!(value && Object.keys(value).length && value.enable)
|
||||
}
|
||||
|
||||
module.exports = async function(data = {}) {
|
||||
let {
|
||||
id,
|
||||
template
|
||||
} = data;
|
||||
if (!id) {
|
||||
return {
|
||||
...fail,
|
||||
code: -1,
|
||||
errMsg: 'id required'
|
||||
};
|
||||
}
|
||||
|
||||
// 方式一:使用网络资源
|
||||
let templatePage;
|
||||
if (template) {
|
||||
try {
|
||||
let htmlBuffer = await vk.request({
|
||||
url: template,
|
||||
method: "GET",
|
||||
dataType: "default"
|
||||
});
|
||||
templatePage = htmlBuffer.toString("utf8");
|
||||
} catch (err) {
|
||||
return {
|
||||
...fail,
|
||||
code: -2,
|
||||
errMsg: 'page template no found',
|
||||
err
|
||||
};
|
||||
}
|
||||
} else {
|
||||
// 方式二:使用本地资源
|
||||
templatePage = fs.readFileSync(path.resolve(__dirname, './template.html'), 'utf8');
|
||||
if (!templatePage) {
|
||||
return {
|
||||
...fail,
|
||||
code: -2,
|
||||
errMsg: 'page template no found'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
let appInfo = await vk.baseDao.findById({
|
||||
dbName: "opendb-app-list",
|
||||
id: id
|
||||
});
|
||||
|
||||
if (appInfo) {
|
||||
|
||||
const defaultOptions = {
|
||||
hasApp: false,
|
||||
hasMP: false,
|
||||
hasH5: false,
|
||||
hasQuickApp: false
|
||||
}
|
||||
|
||||
defaultOptions.mpNames = {
|
||||
'mp_weixin': '微信',
|
||||
'mp_alipay': '支付宝',
|
||||
'mp_baidu': '百度',
|
||||
'mp_toutiao': '字节',
|
||||
'mp_qq': 'QQ',
|
||||
'mp_dingtalk': '钉钉',
|
||||
'mp_kuaishou': '快手',
|
||||
'mp_lark': '飞书',
|
||||
'mp_jd': '京东'
|
||||
}
|
||||
|
||||
const imageList = [];
|
||||
['app_android'].forEach(key => {
|
||||
if (!hasValue(appInfo[key])) return
|
||||
imageList.push({
|
||||
key,
|
||||
urlKey: 'url',
|
||||
url: appInfo[key].url
|
||||
})
|
||||
})
|
||||
Object.keys(defaultOptions.mpNames).concat('quickapp').forEach(key => {
|
||||
if (!hasValue(appInfo[key])) return
|
||||
imageList.push({
|
||||
key,
|
||||
urlKey: 'qrcode_url',
|
||||
url: appInfo[key].qrcode_url
|
||||
})
|
||||
});
|
||||
['icon_url'].forEach(key => {
|
||||
if (!hasValue(appInfo[key])) return
|
||||
imageList.push({
|
||||
key,
|
||||
url: appInfo[key]
|
||||
})
|
||||
})
|
||||
const filelist = await translateTCB(imageList.map(item => item.url))
|
||||
imageList.forEach((item, index) => {
|
||||
if (item.urlKey) {
|
||||
appInfo[item.key][item.urlKey] = filelist[index]
|
||||
} else {
|
||||
appInfo[item.key] = filelist[index]
|
||||
}
|
||||
})
|
||||
if (hasValue(appInfo.screenshot)) {
|
||||
appInfo.screenshot = await translateTCB(appInfo.screenshot)
|
||||
}
|
||||
|
||||
{
|
||||
const appInfoKeys = Object.keys(appInfo)
|
||||
if (appInfoKeys.some(key => {
|
||||
return key.indexOf('app_') !== -1 && hasValue(appInfo[key])
|
||||
})) {
|
||||
defaultOptions.hasApp = true
|
||||
}
|
||||
if (appInfoKeys.some(key => {
|
||||
return key.indexOf('mp') !== -1 && hasValue(appInfo[key])
|
||||
})) {
|
||||
defaultOptions.hasMP = true
|
||||
}
|
||||
if (appInfo.h5 && appInfo.h5.url) {
|
||||
defaultOptions.hasH5 = true
|
||||
}
|
||||
if (appInfo.quickapp && appInfo.quickapp.qrcode_url) {
|
||||
defaultOptions.hasQuickApp = true
|
||||
}
|
||||
|
||||
// app
|
||||
if (defaultOptions.hasApp && appInfo.app_android && appInfo.app_android.url) {
|
||||
defaultOptions.android_url = appInfo.app_android.url
|
||||
} else {
|
||||
defaultOptions.android_url = ''
|
||||
}
|
||||
if (defaultOptions.hasApp && appInfo.app_ios && appInfo.app_ios.url) {
|
||||
defaultOptions.ios_url = appInfo.app_ios.url
|
||||
} else {
|
||||
defaultOptions.ios_url = ''
|
||||
}
|
||||
|
||||
// mp
|
||||
defaultOptions.mpKeys = Object.keys(appInfo).filter(key => {
|
||||
return key.indexOf('mp') !== -1 && hasValue(appInfo[key])
|
||||
})
|
||||
}
|
||||
|
||||
// 解决二维码不显示的问题
|
||||
if (appInfo.icon_url && appInfo.icon_url.indexOf("http") == 0) {
|
||||
let imageBuffer = await vk.request({
|
||||
url: appInfo.icon_url,
|
||||
method: "GET",
|
||||
dataType: "default"
|
||||
});
|
||||
appInfo.icon_url = "data:image/png;base64," + imageBuffer.toString('base64');
|
||||
}
|
||||
|
||||
const html = TE.render(templatePage)(Object.assign({}, appInfo, defaultOptions));
|
||||
|
||||
if (!(defaultOptions.hasApp || defaultOptions.hasH5 || defaultOptions.hasMP || defaultOptions
|
||||
.hasQuickApp)) {
|
||||
return {
|
||||
...fail,
|
||||
code: -100,
|
||||
errMsg: '缺少应用信息,App、小程序、H5、快应用请至少填写一项'
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...success,
|
||||
mpserverlessComposedResponse: true, // 使用阿里云返回集成响应是需要此字段为true
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
'content-type': 'text/html'
|
||||
},
|
||||
body: html
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
...fail,
|
||||
code: -3,
|
||||
errMsg: 'no record'
|
||||
};
|
||||
}
|
||||
+2
File diff suppressed because one or more lines are too long
+241
File diff suppressed because one or more lines are too long
@@ -0,0 +1,72 @@
|
||||
'use strict';
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
class Util {
|
||||
constructor() {
|
||||
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
async add(event) {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
appid: [
|
||||
{ required: true, message: '应用的AppID为必填字段', trigger: 'blur' },
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '应用名称为必填字段', trigger: 'blur' }
|
||||
],
|
||||
type: [
|
||||
{ required: true, 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' },
|
||||
],
|
||||
appid: [
|
||||
{ required: true, message: '应用的AppID为必填字段', trigger: 'blur' },
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '应用名称为必填字段', trigger: 'blur' }
|
||||
],
|
||||
type: [
|
||||
{ required: true, message: '应用类型为必填字段', trigger: 'blur' }
|
||||
]
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data: data,
|
||||
rules: rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
}
|
||||
module.exports = new Util
|
||||
@@ -0,0 +1,87 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 新增
|
||||
* @url admin/system/menu/sys/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} menu_id 菜单Id,唯一标识
|
||||
* @param {String} name 菜单名称
|
||||
* @param {String} comment 备注
|
||||
* @param {String} url 页面路径
|
||||
* @param {String} icon 菜单图标
|
||||
* @param {Number} sort 排序(越大越在前面)
|
||||
* @param {String} parent_id 父级id
|
||||
* @param {Boolean} enable 是否启用
|
||||
* 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 {
|
||||
menu_id,
|
||||
name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort = 0,
|
||||
parent_id,
|
||||
enable = true,
|
||||
hidden_menu
|
||||
} = data;
|
||||
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.add(event);
|
||||
if(formRulesRes.code !== 0){
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
let dbName = "opendb-admin-menus";
|
||||
// 检测menu_id是否存在
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson:{
|
||||
menu_id
|
||||
}
|
||||
});
|
||||
if(num > 0){
|
||||
return { code : -1, msg : `标识【${menu_id}】不能重复!` };
|
||||
}
|
||||
let dataJson = {
|
||||
menu_id,
|
||||
name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort,
|
||||
parent_id,
|
||||
enable,
|
||||
hidden_menu
|
||||
};
|
||||
// 检测parent_id是否不存在
|
||||
if(vk.pubfn.isNotNull(parent_id)){
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson:{
|
||||
menu_id : parent_id
|
||||
}
|
||||
});
|
||||
if(num <= 0){
|
||||
return { code : -1, msg : `父标识【${parent_id}】不存在!` };
|
||||
}
|
||||
}else{
|
||||
delete dataJson.parent_id;
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.id = await vk.baseDao.add({
|
||||
dbName,
|
||||
dataJson
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 批量新增
|
||||
* @url admin/system/menu/sys/adds 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Number} mode 模式 1 :覆盖 2:忽略
|
||||
* @param {Array<Object>} menus 菜单json
|
||||
* 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 {
|
||||
mode,
|
||||
menus,
|
||||
} = data;
|
||||
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.adds(event);
|
||||
if(formRulesRes.code !== 0){
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
let dataArr = [];
|
||||
for(let i=0;i<menus.length;i++){
|
||||
let {
|
||||
menu_id,
|
||||
name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort = 0,
|
||||
parent_id,
|
||||
enable = true,
|
||||
hidden_menu
|
||||
} = menus[i];
|
||||
|
||||
dataArr.push({
|
||||
menu_id,
|
||||
name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort,
|
||||
parent_id,
|
||||
enable,
|
||||
hidden_menu
|
||||
});
|
||||
}
|
||||
if(mode == 1){
|
||||
// 如果是覆盖,则先删除原先的数据
|
||||
let menuIds = vk.pubfn.arrayObjectGetArray(dataArr, "menu_id");
|
||||
await vk.baseDao.del({
|
||||
dbName:"opendb-admin-menus",
|
||||
whereJson:{
|
||||
menu_id : _.in(menuIds)
|
||||
}
|
||||
});
|
||||
}
|
||||
// 执行数据库API请求
|
||||
await vk.baseDao.adds({
|
||||
dbName:"opendb-admin-menus",
|
||||
dataJson:dataArr
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 为菜单设置内置权限
|
||||
* 角色拥有菜单后,将同时拥有菜单内的所有内置权限
|
||||
* @url admin/system/menu/sys/bindPermission 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} menu_id 菜单id(menu_id)
|
||||
* @param {Array} permissionList 权限Id(permission_id)列表
|
||||
* @param {Boolean} reset 是否直接覆盖权限,true:直接将permissionList设置为权限,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 {
|
||||
menu_id,
|
||||
permissionList,
|
||||
reset
|
||||
} = data;
|
||||
res = await vk.system.sysDao.menuBindPermission({
|
||||
menu_id,
|
||||
permissionList,
|
||||
reset
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 删除
|
||||
* @url admin/system/menu/sys/delete 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} menu_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 { menu_id } = data;
|
||||
if(vk.pubfn.isNullOne(menu_id)){
|
||||
return { code : -1, msg : 'menu_id不能为空' };
|
||||
}
|
||||
// 检查是否有子项
|
||||
let num = await vk.baseDao.count({
|
||||
dbName:"opendb-admin-menus",
|
||||
whereJson:{
|
||||
parent_id : menu_id
|
||||
}
|
||||
});
|
||||
if(num > 0){
|
||||
return { code : -1, msg : '该项含有子项,请先删除子项!' };
|
||||
}
|
||||
res.num = await vk.baseDao.del({
|
||||
dbName:"opendb-admin-menus",
|
||||
whereJson:{
|
||||
menu_id
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取菜单列表(一次性获取全部)
|
||||
* @url admin/system/menu/sys/getAll 前端调用的url参数地址
|
||||
* 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: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 返回树状结构代码详情见:https://vkdoc.fsq.pub/client/uniCloud/db/getTree.html
|
||||
res = await vk.system.sysDao.listMenuToTree({
|
||||
pageIndex: 1,
|
||||
pageSize: 500,
|
||||
whereJson: {
|
||||
parent_id: _.in([null, ""]),
|
||||
menu_id: _.exists(true)
|
||||
},
|
||||
treeProps: {
|
||||
level: 3
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取菜单级联数据(懒加载形式)
|
||||
* @url admin/system/menu/sys/getCascader 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Object} node 当前点击的节点
|
||||
* 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 { node = {} } = data;
|
||||
let whereJson = {
|
||||
enable: true
|
||||
};
|
||||
if (node.root) {
|
||||
whereJson["parent_id"] = null;
|
||||
} else {
|
||||
whereJson["parent_id"] = node.value;
|
||||
}
|
||||
res = await vk.baseDao.selects({
|
||||
dbName: "opendb-admin-menus",
|
||||
pageIndex: 1,
|
||||
pageSize: 500,
|
||||
whereJson,
|
||||
sortArr: [{ name: "sort", type: "asc" }],
|
||||
// 副表列表
|
||||
foreignDB: [
|
||||
{
|
||||
dbName: "opendb-admin-menus",
|
||||
localKey:"menu_id",
|
||||
foreignKey: "parent_id",
|
||||
as: "hasChildren",
|
||||
limit: 1, // 避免浪费查询,这里设置limit:1
|
||||
}
|
||||
]
|
||||
});
|
||||
// 数据预处理
|
||||
let rows = res.rows;
|
||||
for (let i in rows) {
|
||||
let item = rows[i];
|
||||
rows[i].label = `${item.name}(${item.menu_id})`;
|
||||
if(vk.pubfn.isNull(item.hasChildren)){
|
||||
rows[i].leaf = true;
|
||||
}
|
||||
}
|
||||
res.rows = rows;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改
|
||||
* @url admin/system/menu/sys/update 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} menu_id 菜单Id,唯一标识
|
||||
* @param {String} name 菜单名称
|
||||
* @param {String} comment 备注
|
||||
* @param {String} url 页面路径
|
||||
* @param {String} icon 菜单图标
|
||||
* @param {Number} sort 排序(越大越在前面)
|
||||
* @param {String} parent_id 父级id
|
||||
* @param {Boolean} enable 是否启用
|
||||
* 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 {
|
||||
menu_id,
|
||||
name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort = 0,
|
||||
parent_id,
|
||||
enable = true,
|
||||
hidden_menu
|
||||
} = data;
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.update(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
let dbName = "opendb-admin-menus";
|
||||
let dataJson = {
|
||||
name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort,
|
||||
parent_id,
|
||||
enable,
|
||||
hidden_menu
|
||||
};
|
||||
// 检测parent_id是否不存在
|
||||
if (vk.pubfn.isNotNull(parent_id)) {
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
menu_id: parent_id
|
||||
}
|
||||
});
|
||||
if (num <= 0) {
|
||||
return { code: -1, msg: `父标识【${parent_id}】不存在!` };
|
||||
}
|
||||
let info = await vk.baseDao.findByWhereJson({
|
||||
dbName,
|
||||
whereJson: {
|
||||
menu_id
|
||||
}
|
||||
});
|
||||
if (vk.pubfn.isNotNull(info) && info.menu_id === parent_id) {
|
||||
return { code: -1, msg: `不可以设置自己为父菜单` };
|
||||
}
|
||||
} else {
|
||||
dataJson["parent_id"] = _.remove();
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.update({
|
||||
dbName,
|
||||
whereJson: {
|
||||
menu_id
|
||||
},
|
||||
dataJson
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改基础信息
|
||||
* @url admin/system/menu/sys/updateBase 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id _id
|
||||
* @param {Number} sort 排序
|
||||
* @param {Boolean} enable 是否启用
|
||||
* @param {Boolean} hidden_menu 是否隐藏(左侧菜单中不显示)
|
||||
* 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,
|
||||
sort,
|
||||
enable,
|
||||
hidden_menu
|
||||
} = data;
|
||||
if (vk.pubfn.isNull(_id)) return { code: -1, msg: "_id不能为空" };
|
||||
|
||||
let dbName = "opendb-admin-menus";
|
||||
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id: _id,
|
||||
dataJson: {
|
||||
sort,
|
||||
enable,
|
||||
hidden_menu
|
||||
},
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
'use strict';
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
class Util {
|
||||
constructor() {
|
||||
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
async add(event){
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code : 0, msg : '' };
|
||||
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
menu_id: [
|
||||
{ required: true, message: '菜单标识不能为空', trigger: 'blur' },
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '菜单名称不能为空', trigger: 'blur' },
|
||||
],
|
||||
sort:[
|
||||
{ type: 'number', message: '排序值必须为数字'}
|
||||
]
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data : data,
|
||||
rules : rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
async update(event){
|
||||
return this.add(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量添加
|
||||
*/
|
||||
async adds(event){
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
menu_id: [
|
||||
{ required: true, message: '菜单标识不能为空', trigger: 'blur' },
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '菜单名称不能为空', trigger: 'blur' },
|
||||
],
|
||||
sort:[
|
||||
{ type: 'number', message: '排序值必须为数字'}
|
||||
]
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
let { menus } = data;
|
||||
for(let i=0;i<menus.length;i++){
|
||||
let formValidateRes = vk.pubfn.formValidate({
|
||||
data : menus[i],
|
||||
rules : rules
|
||||
});
|
||||
if(formValidateRes.code != 0){
|
||||
res = formValidateRes;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
module.exports = new Util
|
||||
@@ -0,0 +1,96 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 新增权限
|
||||
* @url admin/system/permission/sys/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} permission_id 权限Id,唯一标识
|
||||
* @param {String} permission_name 权限名称,展示用
|
||||
* @param {String} comment 备注
|
||||
* @param {String} url 云函数路径
|
||||
* @param {String} icon 图标
|
||||
* @param {Number} sort 排序(越大越在前面)
|
||||
* @param {String} parent_id 父级id
|
||||
* @param {Boolean} enable 是否启用
|
||||
* @param {Boolean} match_mode 0:完整路径 1:通配符 2:正则表达式
|
||||
* @param {Boolean} curd_category 0:未分类 1:增 2:删 3:改 4:查 5:特殊
|
||||
* @param {Boolean} level 0:未分类 1:子弹级 2:炸弹级 3:榴弹级 4:核弹级
|
||||
* 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 {
|
||||
permission_id,
|
||||
permission_name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort = 0,
|
||||
parent_id,
|
||||
enable = true,
|
||||
match_mode = 0,
|
||||
curd_category,
|
||||
level
|
||||
} = data;
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.add(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
let dbName = "uni-id-permissions";
|
||||
// 检测permission_id是否存在
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
permission_id
|
||||
}
|
||||
});
|
||||
if (num > 0) {
|
||||
return { code: -1, msg: `标识【${permission_id}】不能重复!` };
|
||||
}
|
||||
let dataJson = {
|
||||
permission_id,
|
||||
permission_name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort,
|
||||
parent_id,
|
||||
enable,
|
||||
match_mode,
|
||||
curd_category,
|
||||
level
|
||||
};
|
||||
// 检测parent_id是否不存在
|
||||
if (vk.pubfn.isNotNull(parent_id)) {
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
permission_id: parent_id
|
||||
}
|
||||
});
|
||||
if (num <= 0) {
|
||||
return { code: -1, msg: `父标识【${parent_id}】不存在!` };
|
||||
}
|
||||
} else{
|
||||
delete dataJson.parent_id;
|
||||
}
|
||||
if(url === "" || JSON.stringify(url) === '[""]'){
|
||||
delete dataJson.url;
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.id = await vk.baseDao.add({
|
||||
dbName,
|
||||
dataJson
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 删除权限
|
||||
* @url admin/system/permission/sys/delete 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} permission_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 { permission_id } = data;
|
||||
if (vk.pubfn.isNullOne(permission_id)) {
|
||||
return { code: -1, msg: 'permission_id不能为空' };
|
||||
}
|
||||
let dbName = "uni-id-permissions";
|
||||
// 检查是否有子项
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
parent_id: permission_id
|
||||
}
|
||||
});
|
||||
if (num > 0) {
|
||||
return { code: -1, msg: '该项含有子项,请先删除子项!' };
|
||||
}
|
||||
res = uniID.deletePermission({
|
||||
permissionID: permission_id
|
||||
});
|
||||
res.msg = res.message;
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取权限列表
|
||||
* @url admin/system/permission/sys/getAll 前端调用的url参数地址
|
||||
* 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: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
res = await vk.system.sysDao.listPermissionToTree({
|
||||
pageIndex: 1,
|
||||
pageSize: 500,
|
||||
whereJson: {
|
||||
parent_id: _.in([null, ""]),
|
||||
permission_id: _.exists(true)
|
||||
},
|
||||
treeProps: {
|
||||
level: 3
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改权限
|
||||
* @url admin/system/permission/sys/update 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} permission_id 权限Id,唯一标识
|
||||
* @param {String} permission_name 权限名称,展示用
|
||||
* @param {String} comment 备注
|
||||
* @param {String} url 云函数路径
|
||||
* @param {String} icon 图标
|
||||
* @param {Number} sort 排序(越大越在前面)
|
||||
* @param {String} parent_id 父级id
|
||||
* @param {Boolean} enable 是否启用
|
||||
* @param {Number} match_mode 0:完整路径 1:通配符 2:正则表达式
|
||||
* @param {Number} curd_category 0:未分类 1:增 2:删 3:改 4:查 5:特殊
|
||||
* @param {Number} level 0:未分类 1:子弹级 2:炸弹级 3:榴弹级 4:核弹级
|
||||
* 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 {
|
||||
permission_id,
|
||||
permission_name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort = 0,
|
||||
parent_id,
|
||||
enable = true,
|
||||
match_mode = 0,
|
||||
curd_category,
|
||||
level
|
||||
} = data;
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.update(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
let dbName = "uni-id-permissions";
|
||||
let dataJson = {
|
||||
permission_name,
|
||||
comment,
|
||||
url,
|
||||
icon,
|
||||
sort,
|
||||
parent_id,
|
||||
enable,
|
||||
match_mode,
|
||||
curd_category,
|
||||
level
|
||||
};
|
||||
// 检测parent_id是否不存在
|
||||
if (vk.pubfn.isNotNull(parent_id)) {
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
permission_id: parent_id
|
||||
}
|
||||
});
|
||||
if (num <= 0) {
|
||||
return { code: -1, msg: `父标识【${parent_id}】不存在!` };
|
||||
}
|
||||
let info = await vk.baseDao.findByWhereJson({
|
||||
dbName,
|
||||
whereJson: {
|
||||
permission_id
|
||||
}
|
||||
});
|
||||
if (vk.pubfn.isNotNull(info) && info.permission_id === parent_id) {
|
||||
return { code: -1, msg: `不可以设置自己为父级` };
|
||||
}
|
||||
} else {
|
||||
dataJson["parent_id"] = _.remove();
|
||||
}
|
||||
if (url === "" || JSON.stringify(url) === '[""]') {
|
||||
dataJson["url"] = _.remove();
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.update({
|
||||
dbName,
|
||||
whereJson: {
|
||||
permission_id
|
||||
},
|
||||
dataJson
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改基础信息
|
||||
* @url admin/system/permission/sys/updateBase 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id id
|
||||
* @param {Number} sort 排序
|
||||
* @param {Boolean} enable 是否启用
|
||||
* 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,
|
||||
sort,
|
||||
enable,
|
||||
} = data;
|
||||
if (vk.pubfn.isNull(_id)) return { code: -1, msg: "_id不能为空" };
|
||||
|
||||
let dbName = "uni-id-permissions";
|
||||
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id: _id,
|
||||
dataJson: {
|
||||
sort,
|
||||
enable,
|
||||
},
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改权限分类
|
||||
* @url admin/system/permission/sys/updateCategory 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id 权限Id
|
||||
* @param {Number} curd_category 0:未分类 1:增 2:删 3:改 4:查 5:特殊
|
||||
* 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,
|
||||
curd_category=0,
|
||||
} = data;
|
||||
let dbName = "uni-id-permissions";
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id:_id,
|
||||
dataJson:{
|
||||
curd_category
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改权限等级
|
||||
* @url admin/system/permission/sys/updateLevel 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id 权限Id
|
||||
* @param {Number} level 0:未分类 1:子弹级 2:炸弹级 3:榴弹级 4:核弹级
|
||||
* 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,
|
||||
level=0,
|
||||
} = data;
|
||||
let dbName = "uni-id-permissions";
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id:_id,
|
||||
dataJson:{
|
||||
level
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
'use strict';
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
class Util {
|
||||
constructor() {
|
||||
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
async add(event) {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
permission_id: [
|
||||
{ required: true, message: '权限标识不能为空', trigger: 'blur' },
|
||||
],
|
||||
permission_name: [
|
||||
{ required: true, message: '权限名称不能为空', trigger: 'blur' },
|
||||
],
|
||||
sort: [
|
||||
{ type: 'number', message: '排序值必须为数字' }
|
||||
]
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data: data,
|
||||
rules: rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
async update(event) {
|
||||
return this.add(event);
|
||||
}
|
||||
}
|
||||
module.exports = new Util
|
||||
@@ -0,0 +1,58 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 新增角色
|
||||
* @url admin/system/role/sys/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} role_id 角色Id(role_id)
|
||||
* @param {String} role_name 角色名称,展示用
|
||||
* @param {String} comment 备注
|
||||
* @param {Boolean} enable 是否启用
|
||||
* 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 {
|
||||
role_id,
|
||||
role_name,
|
||||
comment,
|
||||
enable = true,
|
||||
} = data;
|
||||
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.add(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
let dbName = "uni-id-roles";
|
||||
// 检查role_id是否存在
|
||||
let num = await vk.baseDao.count({
|
||||
dbName,
|
||||
whereJson: {
|
||||
role_id
|
||||
}
|
||||
});
|
||||
if (num > 0) {
|
||||
return { code: -1, msg: `标识【${role_id}】不能重复!` };
|
||||
}
|
||||
// 执行数据库API请求
|
||||
res.id = await vk.baseDao.add({
|
||||
dbName,
|
||||
dataJson: {
|
||||
role_id,
|
||||
role_name,
|
||||
comment,
|
||||
enable
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 为角色绑定菜单
|
||||
* @url admin/system/role/sys/bindMenu 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Array} role_id 角色Id(role_id)
|
||||
* @param {Array} menuList 菜单Id(menu_id)列表
|
||||
* @param {Boolean} reset 是否直接覆盖菜单,true:直接将menuList设置为角色菜单,false:在角色已有菜单后追加菜单
|
||||
* @param {Boolean} addPermission 是否自动添加菜单内置的权限 默认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 { role_id, menuList, reset, addPermission } = data;
|
||||
res = await vk.system.sysDao.roleBindMenu({
|
||||
role_id,
|
||||
menuList,
|
||||
reset,
|
||||
addPermission
|
||||
});
|
||||
if (res.code !== 0) return res;
|
||||
let dbName = "uni-id-roles";
|
||||
let roleInfo = await vk.baseDao.findByWhereJson({
|
||||
dbName,
|
||||
whereJson: {
|
||||
role_id,
|
||||
}
|
||||
});
|
||||
let count = roleInfo.menu ? roleInfo.menu.length : 0;
|
||||
// 修改stats_count_info统计信息
|
||||
res.info = await vk.baseDao.updateAndReturn({
|
||||
dbName,
|
||||
whereJson: {
|
||||
role_id
|
||||
},
|
||||
dataJson: {
|
||||
["stats_count_info.type.0.count"]: count
|
||||
},
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 为角色绑定权限
|
||||
* @url admin/system/role/sys/bindPermission 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Array} role_id 角色Id(role_id)
|
||||
* @param {Array} permissionList 权限Id(permission_id)列表
|
||||
* @param {Boolean} reset 是否直接覆盖角色权限,true:直接将permissionList设置为角色权限,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 { role_id, permissionList, reset, stats_count_info = {} } = data;
|
||||
res = await uniID.bindPermission({
|
||||
roleID: role_id,
|
||||
permissionList,
|
||||
reset
|
||||
});
|
||||
if (res.code !== 0) return res;
|
||||
res.msg = res.message;
|
||||
// 修改stats_count_info统计信息
|
||||
res.info = await vk.baseDao.updateAndReturn({
|
||||
dbName: "uni-id-roles",
|
||||
whereJson: {
|
||||
role_id
|
||||
},
|
||||
dataJson: {
|
||||
stats_count_info: _.set(stats_count_info)
|
||||
},
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 删除角色
|
||||
* @url admin/system/role/sys/delete 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} role_id 角色Id(role_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 { role_id } = data;
|
||||
if (vk.pubfn.isNullOne(role_id)) {
|
||||
return { code: -1, msg: 'role_id不能为空' };
|
||||
}
|
||||
res = uniID.deleteRole({
|
||||
roleID: role_id
|
||||
});
|
||||
res.msg = res.message;
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 查询角色列表
|
||||
* @url admin/system/role/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 dbName = "uni-id-roles";
|
||||
res = await vk.baseDao.getTableData({
|
||||
dbName,
|
||||
data,
|
||||
// 副表列表
|
||||
foreignDB: [
|
||||
{
|
||||
dbName: "uni-id-permissions",
|
||||
localKey: "permission",
|
||||
localKeyType: "array",
|
||||
foreignKey: "permission_id",
|
||||
as: "permissionList",
|
||||
limit: 500,
|
||||
fieldJson: {
|
||||
permission_id: true,
|
||||
permission_name: true,
|
||||
comment: true,
|
||||
enable: true,
|
||||
url: true
|
||||
}
|
||||
},
|
||||
{
|
||||
dbName: "opendb-admin-menus",
|
||||
localKey: "menu",
|
||||
localKeyType: "array",
|
||||
foreignKey: "menu_id",
|
||||
as: "menuList",
|
||||
limit: 500,
|
||||
fieldJson: {
|
||||
menu_id: true,
|
||||
name: true,
|
||||
comment: true,
|
||||
enable: true,
|
||||
url: true
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
const formRules = require("../util/formRules.js");
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改角色
|
||||
* @url admin/system/role/sys/update 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} role_id 角色Id(role_id)
|
||||
* @param {String} role_name 角色名称,展示用
|
||||
* @param {String} comment 备注
|
||||
* @param {Boolean} enable 是否启用
|
||||
* 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 {
|
||||
role_id,
|
||||
role_name,
|
||||
comment,
|
||||
enable = true,
|
||||
} = data;
|
||||
|
||||
// 参数合法校验开始-----------------------------------------------------------
|
||||
let formRulesRes = await formRules.add(event);
|
||||
if (formRulesRes.code !== 0) {
|
||||
return formRulesRes;
|
||||
}
|
||||
// 参数合法校验结束-----------------------------------------------------------
|
||||
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.update({
|
||||
dbName: "uni-id-roles",
|
||||
whereJson: {
|
||||
role_id
|
||||
},
|
||||
dataJson: {
|
||||
role_name,
|
||||
comment,
|
||||
enable
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改基础信息
|
||||
* @url admin/system/role/sys/updateBase 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} _id id
|
||||
* @param {Boolean} enable 是否启用
|
||||
* 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,
|
||||
enable,
|
||||
} = data;
|
||||
if (vk.pubfn.isNull(_id)) return { code: -1, msg: "_id不能为空" };
|
||||
|
||||
let dbName = "uni-id-roles";
|
||||
|
||||
// 执行数据库API请求
|
||||
res.num = await vk.baseDao.updateById({
|
||||
dbName,
|
||||
id: _id,
|
||||
dataJson: {
|
||||
enable,
|
||||
},
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
class Util {
|
||||
constructor() {
|
||||
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
async add(event) {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
|
||||
// 验证规则开始 -----------------------------------------------------------
|
||||
let rules = {
|
||||
role_id: [
|
||||
{ required: true, message: '角色标识不能为空', trigger: 'blur' },
|
||||
],
|
||||
role_name: [
|
||||
{ required: true, message: '角色名称不能为空', trigger: 'change' }
|
||||
]
|
||||
};
|
||||
// 验证规则结束 -----------------------------------------------------------
|
||||
|
||||
// 开始进行验证
|
||||
res = vk.pubfn.formValidate({
|
||||
data: data,
|
||||
rules: rules
|
||||
});
|
||||
// 返回验证结果
|
||||
return res;
|
||||
}
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
async update(event) {
|
||||
return this.add(event);
|
||||
}
|
||||
}
|
||||
module.exports = new Util
|
||||
@@ -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