feat: 补齐客户端/管理端服务模块与数据库 schema,完善登录短信、法大大签署及公共函数

This commit is contained in:
2026-10-14 21:55:08 +08:00
parent 3481fda7a0
commit 55bcf96889
545 changed files with 28151 additions and 415 deletions
@@ -0,0 +1,17 @@
'use strict';
// 涉及的表名
const dbName = {
spotCategory: "jjx-spot-category", //商品-分类表
spotGoods: "jjx-spot-goods", //商品-现货表
contract: "jjx-contract", // 合同
userContract: "jjx-user-contract", // 用户合同
enquirySheet: "jjx-enquiry-sheet", // 询价单
enquiryQuote: "jjx-enquiry-quotre", // 报价单
enquiryTemplate: "jjx-enquiry-template", // 询价模板
enquiryAttributes: "jjx-enquiry-attributes", // 询价模板属性
user: "uni-id-users", //用户
seal: "jjx-seal", //印章
processSheet: "jjx-process-sheet", //找加工
processQuote: "jjx-process-quote", //找加工报价单
};
module.exports = dbName;
@@ -0,0 +1,463 @@
/**
*
*/
// 涉及的表名
const dbName = {
contractDao: "jjx-contract", // 请在此处填写表中文含义
};
var dao = {};
var util = {};
// 初始化
dao.init = function(obj) {
util = obj;
}
/**
* 查 - 根据id获取单条记录
* @param {String} _id
* @param {Object} fieldJson 字段显示规则
* 调用示例
* let contractDaoInfo = await vk.daoCenter.contractDaoDao.findById(_id);
* 或
let contractDaoInfo = await vk.daoCenter.contractDaoDao.findById({
db: transaction,
id: _id
});
*/
dao.findById = async (_id, fieldJson) => {
let { vk, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
if (typeof _id === "object") {
// 支持事务
res = await vk.baseDao.findById({
..._id,
dbName: dbName.contractDao,
});
} else {
// 不支持事务
res = await vk.baseDao.findById({
dbName: dbName.contractDao,
id: _id,
fieldJson
});
}
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 根据whereJson获取单条记录
* @param {Object} whereJson 条件
* @param {Object} fieldJson 字段显示规则
* 调用示例
let contractDaoInfo = await vk.daoCenter.contractDaoDao.findByWhereJson({
});
*/
dao.findByWhereJson = async (whereJson, fieldJson) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.findByWhereJson({
dbName: dbName.contractDao,
whereJson,
fieldJson
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 增 - 添加一条记录
* @param {Object} dataJson 添加的数据
* 调用示例
await vk.daoCenter.contractDaoDao.add({
});
或
* 调用示例
await vk.daoCenter.contractDaoDao.add({
db: transaction,
dataJson: {
}
});
*/
dao.add = async (obj) => {
let { vk, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
if (obj.db && obj.dataJson) {
// 支持事务
res = await vk.baseDao.add({
...obj,
dbName: dbName.contractDao,
});
} else {
// 不支持事务
res = await vk.baseDao.add({
dbName: dbName.contractDao,
dataJson: obj
});
}
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 增 - 添加多条记录
* @param {Object} dataJson 添加的数据
* 调用示例
await vk.daoCenter.contractDaoDao.adds(dataArr);
*/
dao.adds = async (dataArr) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.adds({
dbName: dbName.contractDao,
dataJson: dataArr
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 删 - 删除多条记录
* @param {Object} whereJson 条件
* 调用示例
await vk.daoCenter.contractDaoDao.del({
});
*/
dao.del = async (whereJson) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.del({
dbName: dbName.contractDao,
whereJson
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 删 - 据ID删除单条数据
* @param {String} _id
* 调用示例
await vk.daoCenter.contractDaoDao.deleteById(_id);
或
await vk.daoCenter.contractDaoDao.deleteById(_id, transaction);
*/
dao.deleteById = async (_id, db) => {
let { vk, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.deleteById({
db,
dbName: dbName.contractDao,
id: _id
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 改 - 批量修改
* @param {Object} whereJson 条件
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.contractDaoDao.update({
whereJson:{
},
dataJson:{
}
});
*/
dao.update = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.update({
...obj,
dbName: dbName.contractDao,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 改 - 根据ID修改数据
* @param {String} _id
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.contractDaoDao.updateById({
id: _id,
dataJson: {
}
});
*/
dao.updateById = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.updateById({
...obj,
dbName: dbName.contractDao
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 改 - 更新并返回更新后的数据(无论条件匹配到多少条记录,只会修改第一条记录,同时返回修改后的数据)
* @param {Object} whereJson 条件
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.contractDaoDao.updateAndReturn({
whereJson:{
},
dataJson:{
}
});
*/
dao.updateAndReturn = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.updateAndReturn({
...obj,
dbName: dbName.contractDao
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 根据ID判断存在则修改,不存在则添加
* @param {String} id 如果传了id参数,则会与dataJson中的_id判断是否一致,不一致会报错
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.contractDaoDao.setById({
dataJson: {
}
});
*/
dao.setById = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.setById({
...obj,
dbName: dbName.contractDao
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取记录总条数
* @param {Object} whereJson 条件
* 调用示例
await vk.daoCenter.contractDaoDao.count(whereJson);
*/
dao.count = async (whereJson) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.count({
dbName: dbName.contractDao,
whereJson
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求和
* @param {String} fieldName 需要求和的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let contractDaoSum = await vk.daoCenter.contractDaoDao.sum({
fieldName: "",
whereJson: {
}
});
*/
dao.sum = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.sum({
...obj,
dbName: dbName.contractDao,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求最大值
* @param {String} fieldName 需要求最大值的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let contractDaoMax = await vk.daoCenter.contractDaoDao.max({
fieldName: "",
whereJson: {
}
});
*/
dao.max = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.max({
...obj,
dbName: dbName.contractDao,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求最小值
* @param {String} fieldName 需要求最小值的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let contractDaoMin = await vk.daoCenter.contractDaoDao.min({
fieldName: "",
whereJson: {
}
});
*/
dao.min = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.min({
...obj,
dbName: dbName.contractDao,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求最平均值
* @param {String} fieldName 需要求最平均值的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let contractDaoAvg = await vk.daoCenter.contractDaoDao.avg({
fieldName: "",
whereJson: {
}
});
*/
dao.avg = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.avg({
...obj,
dbName: dbName.contractDao,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取数据列表
* 调用示例
let contractDaoList = await vk.daoCenter.contractDaoDao.select({
pageIndex:1,
pageSize:20,
getMain:false,
whereJson:{
},
fieldJson:{},
sortArr: [{"name": "_add_time", "type":"desc" }],
});
*/
dao.select = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.select({
...obj,
dbName: dbName.contractDao
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取数据列表
* 调用示例
let contractDaoList = await vk.daoCenter.contractDaoDao.selects({
pageIndex:1,
pageSize:20,
getMain:false,
whereJson:{
},
fieldJson:{},
sortArr: [{"name": "_add_time", "type":"desc" }],
// 副表列表
foreignDB:[
{
dbName:"副表表名",
localKey:"主表外键名",
foreignKey:"副表外键名",
as:"副表as字段",
limit:1
}
]
});
*/
dao.selects = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.selects({
...obj,
dbName: dbName.contractDao
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取数据列表
* 调用示例
res = await vk.daoCenter.contractDaoDao.getTableData({
data
});
*/
dao.getTableData = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
...obj,
dbName: dbName.contractDao
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
module.exports = dao;
@@ -0,0 +1,461 @@
/**
*
*/
// 涉及的表名
const dbName = {
userContract: "jjx-user-contract", // 用户合同关联表
};
var dao = {};
var util = {};
// 初始化
dao.init = function(obj) {
util = obj;
}
/**
* 查 - 根据id获取单条记录
* @param {String} _id
* @param {Object} fieldJson 字段显示规则
* 调用示例
* let userContractInfo = await vk.daoCenter.userContractDao.findById(_id);
* 或
let userContractInfo = await vk.daoCenter.userContractDao.findById({
db: transaction,
id: _id
});
*/
dao.findById = async (_id, fieldJson) => {
let { vk, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
if (typeof _id === "object") {
// 支持事务
res = await vk.baseDao.findById({
..._id,
dbName: dbName.userContract,
});
} else {
// 不支持事务
res = await vk.baseDao.findById({
dbName: dbName.userContract,
id: _id,
fieldJson
});
}
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 根据whereJson获取单条记录
* @param {Object} whereJson 条件
* @param {Object} fieldJson 字段显示规则
* 调用示例
let userContractInfo = await vk.daoCenter.userContractDao.findByWhereJson({
});
*/
dao.findByWhereJson = async (whereJson, fieldJson) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.findByWhereJson({
dbName: dbName.userContract,
whereJson,
fieldJson
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 增 - 添加一条记录
* @param {Object} dataJson 添加的数据
* 调用示例
await vk.daoCenter.userContractDao.add({
});
或
* 调用示例
await vk.daoCenter.userContractDao.add({
db: transaction,
dataJson: {
}
});
*/
dao.add = async (obj) => {
let { vk, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
if (obj.db && obj.dataJson) {
// 支持事务
res = await vk.baseDao.add({
...obj,
dbName: dbName.userContract,
});
} else {
// 不支持事务
res = await vk.baseDao.add({
dbName: dbName.userContract,
dataJson: obj
});
}
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 增 - 添加多条记录
* @param {Object} dataJson 添加的数据
* 调用示例
await vk.daoCenter.userContractDao.adds(dataArr);
*/
dao.adds = async (dataArr) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.adds({
dbName: dbName.userContract,
dataJson: dataArr
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 删 - 删除多条记录
* @param {Object} whereJson 条件
* 调用示例
await vk.daoCenter.userContractDao.del({
});
*/
dao.del = async (whereJson) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.del({
dbName: dbName.userContract,
whereJson
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 删 - 据ID删除单条数据
* @param {String} _id
* 调用示例
await vk.daoCenter.userContractDao.deleteById(_id);
或
await vk.daoCenter.userContractDao.deleteById(_id, transaction);
*/
dao.deleteById = async (_id, db) => {
let { vk, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.deleteById({
db,
dbName: dbName.userContract,
id: _id
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 改 - 批量修改
* @param {Object} whereJson 条件
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.userContractDao.update({
whereJson:{
},
dataJson:{
}
});
*/
dao.update = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.update({
...obj,
dbName: dbName.userContract,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 改 - 根据ID修改数据
* @param {String} _id
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.userContractDao.updateById({
id: _id,
dataJson: {
}
});
*/
dao.updateById = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.updateById({
...obj,
dbName: dbName.userContract
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 改 - 更新并返回更新后的数据(无论条件匹配到多少条记录,只会修改第一条记录,同时返回修改后的数据)
* @param {Object} whereJson 条件
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.userContractDao.updateAndReturn({
whereJson:{
},
dataJson:{
}
});
*/
dao.updateAndReturn = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.updateAndReturn({
...obj,
dbName: dbName.userContract
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 根据ID判断存在则修改,不存在则添加
* @param {String} id 如果传了id参数,则会与dataJson中的_id判断是否一致,不一致会报错
* @param {Object} dataJson 修改的数据
* 调用示例
await vk.daoCenter.userContractDao.setById({
dataJson: {
}
});
*/
dao.setById = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.setById({
...obj,
dbName: dbName.userContract
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取记录总条数
* @param {Object} whereJson 条件
* 调用示例
await vk.daoCenter.userContractDao.count(whereJson);
*/
dao.count = async (whereJson) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.count({
dbName: dbName.userContract,
whereJson
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求和
* @param {String} fieldName 需要求和的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let userContractSum = await vk.daoCenter.userContractDao.sum({
fieldName: "",
whereJson: {
}
});
*/
dao.sum = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.sum({
...obj,
dbName: dbName.userContract,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求最大值
* @param {String} fieldName 需要求最大值的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let userContractMax = await vk.daoCenter.userContractDao.max({
fieldName: "",
whereJson: {
}
});
*/
dao.max = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.max({
...obj,
dbName: dbName.userContract,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求最小值
* @param {String} fieldName 需要求最小值的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let userContractMin = await vk.daoCenter.userContractDao.min({
fieldName: "",
whereJson: {
}
});
*/
dao.min = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.min({
...obj,
dbName: dbName.userContract,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 求最平均值
* @param {String} fieldName 需要求最平均值的字段名
* @param {Object} whereJson 筛选条件
* 调用示例
let userContractAvg = await vk.daoCenter.userContractDao.avg({
fieldName: "",
whereJson: {
}
});
*/
dao.avg = async (obj) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.avg({
...obj,
dbName: dbName.userContract,
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取数据列表
* 调用示例
let userContractList = await vk.daoCenter.userContractDao.select({
pageIndex:1,
pageSize:20,
getMain:false,
whereJson:{
},
fieldJson:{},
sortArr: [{"name": "_add_time", "type":"desc" }],
});
*/
dao.select = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.select({
...obj,
dbName: dbName.userContract
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取数据列表
* 调用示例
let userContractList = await vk.daoCenter.userContractDao.selects({
pageIndex:1,
pageSize:20,
getMain:false,
whereJson:{
},
fieldJson:{},
sortArr: [{"name": "_add_time", "type":"desc" }],
// 副表列表
foreignDB:[
{
dbName:"副表表名",
localKey:"主表外键名",
foreignKey:"副表外键名",
as:"副表as字段",
limit:1
}
]
});
*/
dao.selects = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.selects({
...obj,
dbName: dbName.userContract
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
/**
* 查 - 获取数据列表
* 调用示例
res = await vk.daoCenter.userContractDao.getTableData({
data
});
*/
dao.getTableData = async (obj = {}) => {
let { vk, db, _ } = util;
let res = {};
// 数据库操作开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
...obj,
dbName: dbName.userContract
});
// 数据库操作结束-----------------------------------------------------------
return res;
};
module.exports = dao;
@@ -377,7 +377,7 @@ let userList = await vk.daoCenter.userDao.select({
},
fieldJson:{},
sortArr:[{ "name":"_id", "type":"desc" }],
sortArr: [{"name": "_add_time", "type":"desc" }],
});
*/
dao.select = async (obj = {}) => {
@@ -403,7 +403,7 @@ let userList = await vk.daoCenter.userDao.selects({
},
fieldJson:{},
sortArr:[{ "name":"_id", "type":"desc" }],
sortArr: [{"name": "_add_time", "type":"desc" }],
// 副表列表
foreignDB:[
{
@@ -6,6 +6,7 @@
module.exports = [{
id: "returnUserInfo",
// 符合下方正则条件的云函数才会进入该中间件
regExp: [
"^user/pub/login(.*)",
"^user/pub/register(.*)",
+111
View File
@@ -0,0 +1,111 @@
{
"name": "router",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "router",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"md5": "^2.3.0",
"pdf-parse": "^1.1.1",
"uni-config-center": "file:../../../uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"uni-id": "file:../../../uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id",
"vk-unicloud": "file:../../../uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud"
}
},
"../../../uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center": {
"version": "0.0.3",
"license": "Apache-2.0"
},
"../../../uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id": {
"version": "3.3.28",
"license": "Apache-2.0",
"dependencies": {
"uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
},
"../../../uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud": {
"version": "2.15.3",
"license": "Apache-2.0"
},
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"engines": {
"node": "*"
}
},
"node_modules/crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
"engines": {
"node": "*"
}
},
"node_modules/crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"deprecated": "Active development of CryptoJS has been discontinued. This library is no longer maintained."
},
"node_modules/dayjs": {
"version": "1.11.23",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz",
"integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ=="
},
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"node_modules/node-ensure": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz",
"integrity": "sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw=="
},
"node_modules/pdf-parse": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/pdf-parse/-/pdf-parse-1.1.4.tgz",
"integrity": "sha512-XRIRcLgk6ZnUbsHsYXExMw+krrPE81hJ6FQPLdBNhhBefqIQKXu/WeTgNBGSwPrfU0v+UCEwn7AoAUOsVKHFvQ==",
"dependencies": {
"node-ensure": "^0.0.0"
},
"engines": {
"node": ">=6.8.1"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/mehmet-kozan"
}
},
"node_modules/uni-config-center": {
"resolved": "../../../uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"link": true
},
"node_modules/uni-id": {
"resolved": "../../../uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id",
"link": true
},
"node_modules/vk-unicloud": {
"resolved": "../../../uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud",
"link": true
}
}
}
@@ -1,7 +1,7 @@
{
"name": "router",
"version": "1.0.0",
"description": "在router目录下执行 npm i",
"description": "【开箱即用】vk-uniCloud-router - 云函数路由模式 - uniCloud开发框架 - 已集成uni-id",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
@@ -10,6 +10,10 @@
"author": "",
"license": "ISC",
"dependencies": {
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"md5": "^2.3.0",
"pdf-parse": "^1.1.1",
"uni-config-center": "file:../../../uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"uni-id": "file:../../../uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id",
"vk-unicloud": "file:../../../uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud"
@@ -18,11 +22,12 @@
"cloudfunction-config": {
"concurrency": 1,
"memorySize": 512,
"path": "",
"timeout": 60,
"path": "/http/router",
"timeout": 600,
"triggers": [],
"runtime": "Nodejs12",
"keepRunningAfterReturn": false
},
"extensions": {}
}
"extensions": {
"uni-cloud-sms": {}
}
}
@@ -6,8 +6,9 @@
{
"uni_id_token":"",
"$url":"template/openapi/weixin/pub/getTemplateList",
"$url":"template/db_api/pub/tree",
"data":{
"username":"admin",
"password":"123456"
}
}
@@ -0,0 +1,43 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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 adKey = parseInt(data.adKey)
const categoryFilterAdKeys = [9, 10, 11, 12, 13, 14, 112, 122]
if ([36, 37, 38].includes(adKey) && !data.spotGoodsId) {
return {code: -1, msg: '请选择现货'}
}
if (categoryFilterAdKeys.includes(adKey) && data.filterMode === 'category' && !(Array.isArray(data.categoryIds) ? data.categoryIds.length : (data.categoryId || data.categoryName))) {
return {code: -1, msg: '请选择分类'}
}
if (categoryFilterAdKeys.includes(adKey) && data.filterMode === 'category' && !(data.region && data.region.province && data.region.province.code)) {
return {code: -1, msg: '请选择区域'}
}
if (![36, 37, 38].includes(adKey) && data.filterMode !== 'category' && data.type === 'company' && !data.companyId) {
return {code: -1, msg: '请选择指定公司'}
}
if (![36, 37, 38].includes(adKey) && data.filterMode !== 'category' && data.type === 'goods' && !data.goodsId) {
return {code: -1, msg: '请选择指定商品'}
}
await vk.baseDao.add({
dbName: 'jjx-ad',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-ad',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,60 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, pageIndex, pageSize, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {}
if (!vk.pubfn.isNull(data.formData) && !vk.pubfn.isNull(data.formData.adKey))
whereJson.adKey = data.formData.adKey
res = await vk.baseDao.selects({
dbName: 'jjx-ad',
pageIndex,
pageSize,
whereJson,
getCount: true,
sortArr: sortRule && sortRule.length ? sortRule : [
{name: "_add_time", type: "desc"},
],
});
for (let i = 0; i < res.rows.length; i++) {
if (res.rows[i].companyId) {
res.rows[i].company = await vk.baseDao.findByWhereJson({
dbName: 'uni-id-users',
whereJson: {
_id: res.rows[i].companyId
},
});
}
if (res.rows[i].goodsId) {
res.rows[i].goods = await vk.baseDao.findByWhereJson({
dbName: 'jjx-goods',
whereJson: {
_id: res.rows[i].goodsId
},
});
}
if (res.rows[i].spotGoodsId) {
res.rows[i].spotGoods = await vk.baseDao.findByWhereJson({
dbName: 'jjx-spot-goods',
whereJson: {
_id: res.rows[i].spotGoodsId
},
});
}
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,44 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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 adKey = parseInt(data.adKey)
const categoryFilterAdKeys = [9, 10, 11, 12, 13, 14, 112, 122]
if ([36, 37, 38].includes(adKey) && !data.spotGoodsId) {
return {code: -1, msg: '请选择现货'}
}
if (categoryFilterAdKeys.includes(adKey) && data.filterMode === 'category' && !(Array.isArray(data.categoryIds) ? data.categoryIds.length : (data.categoryId || data.categoryName))) {
return {code: -1, msg: '请选择分类'}
}
if (categoryFilterAdKeys.includes(adKey) && data.filterMode === 'category' && !(data.region && data.region.province && data.region.province.code)) {
return {code: -1, msg: '请选择区域'}
}
if (![36, 37, 38].includes(adKey) && data.filterMode !== 'category' && data.type === 'company' && !data.companyId) {
return {code: -1, msg: '请选择指定公司'}
}
if (![36, 37, 38].includes(adKey) && data.filterMode !== 'category' && data.type === 'goods' && !data.goodsId) {
return {code: -1, msg: '请选择指定商品'}
}
await vk.baseDao.updateById({
dbName: 'jjx-ad',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-album',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-album',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,42 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, pageIndex, pageSize, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName: 'jjx-album',
pageIndex,
pageSize,
getCount: true,
sortArr: sortRule && sortRule.length ? sortRule : [
{name: "sort", type: "asc"},
{name: "_add_time", type: "desc"},
],
});
for (let i = 0; i < res.rows.length; i++) {
if (res.rows[i].companyId) {
res.rows[i].company = await vk.baseDao.findByWhereJson({
dbName: 'uni-id-users',
whereJson: {
_id: res.rows[i].companyId
},
});
}
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-album',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-article-category',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-article-category',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
dbName: 'jjx-article-category',
sortArr: [
{ name: "sort", type: "asc" },
{ name: "_id", type: "desc" },
],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-article-category',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-article',
dataJson: {
...data, ...{
viewNum: 0,
downloadNum: 0,
}
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-article',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,37 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, pageIndex, pageSize, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName: 'jjx-article',
pageIndex,
pageSize,
getCount: true,
sortArr: sortRule && sortRule.length ? sortRule : [{"name": "_add_time", "type": "desc"}]
});
for (let i = 0; i < res.rows.length; i++) {
if (res.rows[i].parentId) {
res.rows[i].category = await vk.baseDao.findById({
dbName: "jjx-article-category",
id: res.rows[i].parentId
})
}
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-article',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,90 @@
'use strict';
const normalizeSortRule = require('../../utils/sortRule.js');
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/getList 前端调用的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 { pageIndex, pageSize, formData, sortRule } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {}
if (vk.pubfn.isNotNull(formData)) {
if (vk.pubfn.isNotNull(formData.transactionId)) whereJson.transactionId = new RegExp(formData.transactionId)
if (vk.pubfn.isNotNull(formData.type)) whereJson.type = formData.type
if (vk.pubfn.isNotNull(formData.status)) whereJson.status = formData.status
}
res = await vk.baseDao.selects({
dbName: "jjx-contract",
getCount: true,
pageIndex,
pageSize,
whereJson,
sortArr: normalizeSortRule(sortRule, [{"name": "_add_time", "type":"desc" }], ["_add_time"]),
foreignDB: [
{
dbName: "uni-id-users",
localKey: "userId",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
fieldJson: {
_id: true,
company: {
companyName: true
},
person: {
personName: true
},
businessCard: true,
accountType: true,
},
},
{
dbName: "jjx-user-contract",
localKey: "_id",
foreignKey: "contractId",
as: "userContract",
limit: 500, // limit=1则以对象形式返回
foreignDB: [
{
dbName: "uni-id-users",
localKey: "userId",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
fieldJson: {
_id: true,
company: {
companyName: true,
mobile: true,
},
person: {
personName: true,
mobile: true,
},
businessCard: true,
accountType: true,
mobile: true,
},
}
]
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,34 @@
module.exports = {
/**
* 添加单条数据
* @url admin/kong/sys/add 前端调用的url参数地址
* data 请求参数 说明
* 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 {
name,
field,
isOn,
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-contract-template";
res.id = await vk.baseDao.add({
dbName,
dataJson: {
name,
field,
isOn,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,39 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/changeField 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: "jjx-contract-template",
id: data.id,
dataJson: {
[data.field]: data.value
}
});
if (data.field === "isOn" && data.value) {
await vk.baseDao.update({
dbName: "jjx-contract-template",
whereJson: {
_id: _.neq(data.id),
},
dataJson: {
"isOn": 0
}
});
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-contract-template";
await vk.baseDao.deleteById({
dbName: dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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 = "jjx-contract-template";
res = await vk.baseDao.getTableData({
dbName,
data
});
return res;
}
}
@@ -0,0 +1,40 @@
module.exports = {
/**
* 修改数据
* @url admin/kong/sys/update 前端调用的url参数地址
* data 请求参数 说明
* 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,
name,
field,
isOn,
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
if (vk.pubfn.isNullOne(_id)) {
return {code: -1, msg: '参数错误'};
}
let dbName = "jjx-contract-template";
await vk.baseDao.updateById({
dbName,
id: _id,
dataJson: {
name,
field,
isOn,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,84 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/changeField 前端调用的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 dataJson = {
[data.field]: data.value
}
if (data.field === 'paidConfirm') {
dataJson.status = 1
const certificate = await vk.baseDao.findById({
dbName: "jjx-certificate",
id: data.id
});
const contract = await vk.baseDao.findById({
dbName: "jjx-contract",
id: certificate.contractId
});
const canDownloadUidList = []
if (!contract.canDownloadUidList) {
canDownloadUidList.push(certificate.uid)
} else {
canDownloadUidList.push(...contract.canDownloadUidList, certificate.uid)
}
await vk.baseDao.updateById({
dbName: "jjx-contract",
id: certificate.contractId,
dataJson: {
canDownloadUidList
}
});
const amount = certificate.amount
const orderId = await vk.baseDao.add({
dbName: "jjx-order",
dataJson: {
orderNo: vk.pubfn.createOrderNo("39XU", 20),
uid: certificate.uid,
orderStatus: 4,
type: 12,
amount,
offAmount: amount,
saveAmount: amount,
offRate: 100,
isInvoice: 1,
name: certificate.invoice.companyName,
code: certificate.invoice.taxNumber,
phone: certificate.invoice.phone,
bankAccount: certificate.invoice.bankAccount,
bankName: certificate.invoice.bankName,
}
})
await vk.baseDao.add({
dbName: "jjx-order-goods",
dataJson: {
orderId,
goodsId: certificate.contractId,
num: 1,
goodsName: `合同:${contract.transactionId}司法调证`,
goodsPrice: amount,
goodsCover: null,
}
})
}
await vk.baseDao.updateById({
dbName: "jjx-certificate",
id: data.id,
dataJson
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,60 @@
'use strict';
const normalizeSortRule = require('../../utils/sortRule.js');
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/getList 前端调用的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 {pageIndex, pageSize, formData, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {}
res = await vk.baseDao.selects({
dbName: "jjx-certificate",
getCount: true,
pageIndex,
pageSize,
whereJson,
sortArr: normalizeSortRule(sortRule, [{"name": "_add_time", "type":"desc"}], ["_add_time"]),
foreignDB: [
{
dbName: "uni-id-users",
localKey: "userId",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
fieldJson: {
_id: true,
company: {
companyName: true
},
person: {
personName: true
},
businessCard: true,
accountType: true,
},
},
{
dbName: "jjx-contract",
localKey: "contractId",
foreignKey: "_id",
as: "contract",
limit: 1, // limit=1则以对象形式返
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,34 @@
module.exports = {
/**
* 添加单条数据
* @url admin/kong/sys/add 前端调用的url参数地址
* data 请求参数 说明
* 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 {
name,
field,
isOn,
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-contract-template";
res.id = await vk.baseDao.add({
dbName,
dataJson: {
name,
field,
isOn,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,39 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/changeField 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: "jjx-contract-template",
id: data.id,
dataJson: {
[data.field]: data.value
}
});
if (data.field === "isOn" && data.value) {
await vk.baseDao.update({
dbName: "jjx-contract-template",
whereJson: {
_id: _.neq(data.id),
},
dataJson: {
"isOn": 0
}
});
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-contract-template";
await vk.baseDao.deleteById({
dbName: dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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 = "jjx-contract-template";
res = await vk.baseDao.getTableData({
dbName,
data
});
return res;
}
}
@@ -0,0 +1,40 @@
module.exports = {
/**
* 修改数据
* @url admin/kong/sys/update 前端调用的url参数地址
* data 请求参数 说明
* 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,
name,
field,
isOn,
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
if (vk.pubfn.isNullOne(_id)) {
return {code: -1, msg: '参数错误'};
}
let dbName = "jjx-contract-template";
await vk.baseDao.updateById({
dbName,
id: _id,
dataJson: {
name,
field,
isOn,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/coopExplore/config/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-coop-config',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/coopExplore/config/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-coop-config',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/coopExplore/config/sys/list 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
dbName: 'jjx-coop-config',
sortArr: [
{ name: "sort", type: "asc" },
{ name: "_add_time", type: "desc" },
],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/coopExplore/config/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-coop-config',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-dict',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, pageIndex, pageSize} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.select({
dbName: 'jjx-dict',
getCount: true,
pageIndex,
pageSize,
sortArr: [{"name": "_add_time", "type": "desc"}],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,46 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-dict',
dataJson: {
content: data.content,
name: data.name,
},
id: data._id
});
console.log('id', data._id, data._id === '657d36befe975f63af1f24e7')
if (data._id === '657d36befe975f63af1f24e7') {
const template_id = vk.pubfn.createOrderNo("CT", 20)
const uploaddocs = await pubFun.fadada('uploadtemplate.api', {
template_id,
doc_url: data.content,
})
console.log('uploaddocs', uploaddocs)
await vk.baseDao.updateById({
dbName: 'jjx-dict',
dataJson: {
content: template_id
},
id: "80e3bed065a5560e075799d24532b14f"
});
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,35 @@
'use strict';
module.exports = {
/**
* 新增询价模板
* @url admin/enquiry/template/sys/add 前端调用的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 : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let {
label,
enable,
sort,
values
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-enquiry-attributes";
res.id = await vk.baseDao.add({
dbName,
dataJson:{
label,
enable,
sort,
values
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-enquiry-attributes";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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 = "jjx-enquiry-attributes";
res = await vk.baseDao.getTableData({
dbName,
data
});
return res;
}
}
@@ -0,0 +1,37 @@
'use strict';
module.exports = {
/**
* 新增询价模板
* @url admin/enquiry/template/sys/add 前端调用的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 : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let {
_id,
label,
enable,
sort,
values
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-enquiry-attributes";
res.id = await vk.baseDao.updateById({
dbName,
id: _id,
dataJson:{
label,
enable,
sort,
values
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,24 @@
'use strict';
module.exports = {
/**
* 新增询价模板
* @url admin/enquiry/template/sys/add 前端调用的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 : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-enquiry-package";
res.id = await vk.baseDao.add({
dbName,
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-enquiry-package";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,32 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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, pageIndex, pageSize} = data;
let res = {code: 0, msg: ''};
// 业务逻辑开始-----------------------------------------------------------
let dbName = "jjx-enquiry-package";
res = await vk.baseDao.selects({
dbName,
pageIndex,
pageSize,
getCount: true,
sortArr: [{"name": "sort", "type": "asc"}],
});
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* 新增询价模板
* @url admin/enquiry/template/sys/add 前端调用的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 : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-enquiry-package";
res.id = await vk.baseDao.updateById({
dbName,
id: _id,
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,31 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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, sheetId} = data;
let res = {code: 0, msg: ''};
// 业务逻辑开始-----------------------------------------------------------
let dbName = "jjx-enquiry-quote";
res = await vk.baseDao.selects({
dbName,
whereJson: {
sheetId
}
});
return res;
}
}
@@ -0,0 +1,99 @@
'use strict';
const dayjs = require("dayjs");
var isBetween = require('dayjs/plugin/isBetween')
dayjs.extend(isBetween)
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/changeField 前端调用的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 sheet = await vk.baseDao.findByWhereJson({
dbName: "jjx-enquiry-sheet",
whereJson: {
_id: data.id
},
})
if (data.field === 'isShow' && data.value === 1) {
const messageUserList = await vk.baseDao.select({
dbName: "jjx-message-config",
whereJson: {
enquiry: true,
productList: _.in(sheet.productList.map(item => item.goodsName))
}
})
const messageList = []
const messageTitle = sheet.productList.map(item => `${item.goodsName}${item.materialQuality ? `(${item.materialQuality})` : ''}`).join("/")
for (let i = 0; i < messageUserList.rows.length; i++) {
const config = messageUserList.rows[i]
const date = dayjs().format("YYYY-MM-DD")
// if (config.doNotDisturbRange && config.doNotDisturbRange[0]) {
// const doNotDisturbRangeStart = dayjs(config.doNotDisturbRange[0]).format("HH:mm")
// const doNotDisturbRangeEnd = dayjs(config.doNotDisturbRange[1]).format("HH:mm")
// if (dayjs().isBetween(dayjs(`${date} ${doNotDisturbRangeStart}`), dayjs(`${date} ${doNotDisturbRangeEnd}`)))
// continue
// }
if (config.doNotDisturbStart && config.doNotDisturbStart.length) {
const doNotDisturbRangeStart = dayjs(`${date} ${config.doNotDisturbStart[0]}:${config.doNotDisturbStart[1]}`).format("HH:mm")
const doNotDisturbRangeEnd = dayjs(`${date} ${config.doNotDisturbEnd[0]}:${config.doNotDisturbEnd[1]}`).format("HH:mm")
if (dayjs().isBetween(dayjs(`${date} ${doNotDisturbRangeStart}`), dayjs(`${date} ${doNotDisturbRangeEnd}`)))
continue
}
let inAddress = false
if (config.addressList && config.addressList.length > 0) {
for (let j = 0; j < config.addressList.length; j++) {
if (config.addressList[j].province.code === sheet.addressRegion.province.code) {
if (config.addressList[j].city === null) inAddress = true
else if (config.addressList[j].city.code === sheet.addressRegion.city.code) {
if (config.addressList[j].area === null) inAddress = true
else if (config.addressList[j].area.code === sheet.addressRegion.area.code) {
inAddress = true
}
}
}
}
} else inAddress = true
if (!inAddress) continue
if (!config.tradeSelf && sheet.tradeMethod === 0) continue
if (!config.tradePlatform && sheet.tradeMethod === 1) continue
if (messageUserList.rows[i].uid !== sheet.uid) {
messageList.push({
uid: messageUserList.rows[i].uid,
title: `找买家:${messageTitle}`,
content: `新的找买家信息发布,赶紧去看看吧`,
type: 'enquiry',
hasRead: false,
pk: res.id
})
await pubFun.sendNotifySms(messageUserList.rows[i].uid, 'SMS_474510001')
}
}
if (messageList.length > 0) {
await vk.baseDao.adds({
dbName: "jjx-message",
dataJson: messageList
});
}
}
await vk.baseDao.updateById({
dbName: "jjx-enquiry-sheet",
id: data.id,
dataJson: {
[data.field]: data.value
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,103 @@
'use strict';
const normalizeSortRule = require('../../utils/sortRule.js');
const DEFAULT_NOTARY_SERVICE_RATE = 0.1;
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/getList 前端调用的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 {pageIndex, pageSize, formData, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {};
if (vk.pubfn.isNotNull(formData)) {
if (vk.pubfn.isNotNull(formData.title)) whereJson.title = new RegExp(formData.title);
if (vk.pubfn.isNotNull(formData.status)) whereJson.status = formData.status;
if (vk.pubfn.isNotNull(formData.signMethod)) whereJson.signMethod = formData.signMethod;
}
// 区域限制
if (userInfo.allowArea && userInfo.allowArea.length > 0) {
whereJson['addressRegion.city.code'] = _.in(userInfo.allowArea.map(item => item.area.city.code));
}
console.log('whereJson', whereJson)
res = await vk.baseDao.selects({
dbName: "jjx-enquiry-sheet",
getCount: true,
pageIndex,
pageSize,
whereJson,
sortArr: normalizeSortRule(sortRule, [{"name": "_add_time", "type": "desc"}], ["_add_time"]),
foreignDB: [
{
dbName: "uni-id-users",
localKey: "userId",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
fieldJson: {
_id: true,
company: {
companyName: true
},
person: {
personName: true
},
businessCard: true,
accountType: true,
},
},
{
dbName: "jjx-enquiry-quote",
localKey: "_id",
foreignKey: "sheetId",
as: "quoteList",
limit: 500, // limit=1则以对象形式返回
},
]
});
for (let i = 0; i < res.rows.length; i++) {
if (res.rows[i].tradeMethod === 1 && (res.rows[i].notaryServiceRate === undefined || res.rows[i].notaryServiceRate === null || res.rows[i].notaryServiceRate === '')) {
res.rows[i].notaryServiceRate = DEFAULT_NOTARY_SERVICE_RATE
}
const order = await vk.baseDao.findByWhereJson({
dbName: 'jjx-order',
whereJson: {
sheetId: res.rows[i]._id
}
})
if (order) {
res.rows[i].order = order
const payList = await vk.baseDao.select({
dbName: 'jjx-order-pay-list',
whereJson: {
orderId: order._id
}
})
res.rows[i].payList = null
if (payList) {
res.rows[i].payList = payList.rows
}
}
res.rows[i].contract = await vk.baseDao.findByWhereJson({
dbName: 'jjx-contract',
whereJson: {
sheetId: res.rows[i]._id
}
})
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,37 @@
'use strict';
module.exports = {
/**
* 新增询价模板
* @url admin/enquiry/template/sys/add 前端调用的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 : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let {
name,
enable,
sort,
attributes,
extraAttributes
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-enquiry-template";
res.id = await vk.baseDao.add({
dbName,
dataJson:{
name,
enable,
sort,
attributes,
extraAttributes
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-enquiry-template";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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 = "jjx-enquiry-template";
res = await vk.baseDao.getTableData({
dbName,
data,
sortArr: [{"name": "sort", "type": "asc"}, {"name": "_add_time", "type": "desc"}],
});
return res;
}
}
@@ -0,0 +1,39 @@
'use strict';
module.exports = {
/**
* 新增询价模板
* @url admin/enquiry/template/sys/add 前端调用的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 : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let {
_id,
name,
enable,
sort,
attributes,
extraAttributes
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-enquiry-template";
res.id = await vk.baseDao.updateById({
dbName,
id: _id,
dataJson:{
name,
enable,
sort,
attributes,
extraAttributes
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 添加单条数据
* @url admin/kong/sys/add 前端调用的url参数地址
* data 请求参数 说明
* 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 dbName = "jjx-ensure-config";
res.id = await vk.baseDao.add({
dbName,
dataJson: {
...data
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-ensure-config";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/getList 前端调用的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 { pageIndex, pageSize } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName: "jjx-ensure-config",
pageIndex,
pageSize,
getCount: true,
sortArr: [{"name": "sort", "type":"asc" }, {"name": "_add_time", "type":"desc" }],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,31 @@
module.exports = {
/**
* 修改数据
* @url admin/kong/sys/update 前端调用的url参数地址
* data 请求参数 说明
* 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' };
// 业务逻辑开始-----------------------------------------------------------
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
let dbName = "jjx-ensure-config";
await vk.baseDao.updateById({
dbName,
id: data._id,
dataJson:{
...data
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
'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, field, value} = data
const dataJson = {}
dataJson[field] = value
const factoryData = await vk.baseDao.updateAndReturn({
dbName: 'jjx-factory',
whereJson: {
_id: id
},
dataJson
})
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,38 @@
'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, status, refuseReason} = data
const factoryData = await vk.baseDao.updateAndReturn({
dbName: 'jjx-factory',
whereJson: {
_id: id
},
dataJson: {
status,
refuseReason,
isShow: status === 1
}
})
await vk.baseDao.updateById({
dbName: "uni-id-users",
id: factoryData.uid,
dataJson: {
factoryStatus: status
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,43 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, pageIndex, pageSize, formData, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {};
if (vk.pubfn.isNotNull(formData.keyword)) {
whereJson['user.nickname'] = new RegExp(formData.keyword);
}
res = await vk.baseDao.selects({
dbName: 'jjx-factory',
pageIndex,
pageSize,
whereJson,
getCount: true,
sortArr: sortRule && sortRule.length ? sortRule : [{"name": "_add_time", "type": "desc"}],
foreignDB: [
{
dbName: "uni-id-users",
localKey: "uid",
foreignKey: "_id",
as: "user",
limit: 1,
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,38 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/fadada/sys/getList 前端调用的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 dbName = "fadada-verify-record";
res = await vk.baseDao.selects({
dbName,
getCount: true,
whereJson: {
type: data.type
},
sortArr: [{name: "authenticationSubmitTime", type: "desc"}],
foreignDB: [
{
dbName: "uni-id-users",
localKey: "_id",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,56 @@
'use strict';
const balanceUtil = require('./util.js');
module.exports = {
/**
* 新增资金流水
* @url admin/finance/balance/sys/add 前端调用的url参数地址
*/
main: async (event) => {
let { data = {}, userInfo, util } = event;
let { vk } = util;
const transaction = await vk.baseDao.startTransaction();
try {
const description = String(data.description || '').trim();
if (!description) {
throw new Error('说明不能为空');
}
const logData = {
description,
amount: balanceUtil.normalizeAmount(data.amount),
type: balanceUtil.normalizeType(data.type),
logTime: balanceUtil.normalizeTime(data.logTime),
operatorId: userInfo && userInfo.uid ? userInfo.uid : '',
source: data.source || 'manual'
};
const changeAmount = balanceUtil.buildBalanceChange(logData);
await balanceUtil.checkBalanceAvailable({
transaction,
vk,
changeAmount
});
const addRes = await vk.baseDao.add({
db: transaction,
dbName: 'jjx-balance-log',
dataJson: logData
});
await balanceUtil.updateBalanceWithDelta({
transaction,
vk,
delta: changeAmount,
lastLogId: addRes.id
});
await transaction.commit();
return { code: 0, msg: '' };
} catch (err) {
return await balanceUtil.rollbackTransaction({
transaction,
err
});
}
}
};
@@ -0,0 +1,57 @@
'use strict';
const balanceUtil = require('./util.js');
module.exports = {
/**
* 删除资金流水
* @url admin/finance/balance/sys/delete 前端调用的url参数地址
*/
main: async (event) => {
let { data = {}, util } = event;
let { vk } = util;
const transaction = await vk.baseDao.startTransaction();
try {
if (vk.pubfn.isNull(data._id)) {
throw new Error('流水ID不能为空');
}
const oldLog = await vk.baseDao.findByWhereJson({
db: transaction,
dbName: 'jjx-balance-log',
whereJson: {
_id: data._id
}
});
if (!oldLog) {
throw new Error('流水不存在');
}
const revertDelta = Number((-balanceUtil.buildBalanceChange(oldLog)).toFixed(2));
await balanceUtil.checkBalanceAvailable({
transaction,
vk,
changeAmount: revertDelta
});
await vk.baseDao.deleteById({
db: transaction,
dbName: 'jjx-balance-log',
id: data._id
});
await balanceUtil.updateBalanceWithDelta({
transaction,
vk,
delta: revertDelta
});
await transaction.commit();
return { code: 0, msg: '' };
} catch (err) {
return await balanceUtil.rollbackTransaction({
transaction,
err
});
}
}
};
@@ -0,0 +1,91 @@
'use strict';
const balanceUtil = require('./util.js');
module.exports = {
/**
* 查询状态
* @url admin/finance/balance/sys/getActionLog 前端调用的url参数地址
* @param {String} accNo 账号
* @param {String} reqDate 请求日期,格式:yyyyMMdd
* @param {String} reqJournalNo 请求流水号
*/
main: async (event) => {
let { data = {}, util } = event;
let { vk } = util;
let { accNo, reqDate, reqJournalNo } = data;
accNo = String(accNo || '').trim();
reqDate = String(reqDate || '').trim();
reqJournalNo = String(reqJournalNo || '').trim();
if (!accNo) {
return {
code: -1,
msg: 'accNo不能为空'
};
}
if (!reqDate) {
return {
code: -1,
msg: 'reqDate不能为空'
};
}
if (!/^\d{8}$/.test(reqDate)) {
return {
code: -1,
msg: 'reqDate格式不正确'
};
}
if (!reqJournalNo) {
return {
code: -1,
msg: 'reqJournalNo不能为空'
};
}
let res = await vk.request({
url: 'http://jjx-union-pay.gxwebsoft.com/api/union-pay-jjx/getActionLog',
method: 'POST',
dataType: 'json',
header: {
'content-type': 'application/json; charset=utf-8'
},
data: {
accNo,
reqDate,
reqJournalNo
},
timeout: 60000
});
if (res && typeof res === 'object' && typeof res.code === 'undefined') {
res.code = 0;
}
const responseObjects = balanceUtil.getRemoteResponseObjects(res);
const list = balanceUtil.pickFirstDefined([
Array.isArray(res.list) ? res.list : undefined,
Array.isArray(res.rows) ? res.rows : undefined,
Array.isArray(res.data) ? res.data : undefined,
Array.isArray(res.data && res.data.list) ? res.data.list : undefined,
Array.isArray(res.data && res.data.rows) ? res.data.rows : undefined,
Array.isArray(res.info && res.info.list) ? res.info.list : undefined,
Array.isArray(res.info && res.info.rows) ? res.info.rows : undefined,
Array.isArray(res.content && res.content.list) ? res.content.list : undefined,
Array.isArray(res.content && res.content.rows) ? res.content.rows : undefined
]) || [];
if (responseObjects.data && typeof responseObjects.data === 'object' && !Array.isArray(responseObjects.data)) {
responseObjects.data.list = list;
} else if (res && typeof res === 'object') {
res.data = {
list
};
}
return res;
}
};
@@ -0,0 +1,81 @@
'use strict';
const balanceUtil = require('./util.js');
module.exports = {
/**
* 查询余额明细
* @url admin/finance/balance/sys/getFlow 前端调用的url参数地址
* @param {String} accNo 账号
* @param {String} transDate 交易日期,格式:yyyyMMdd
*/
main: async (event) => {
let { data = {}, util } = event;
let { vk } = util;
let { accNo, transDate } = data;
accNo = String(accNo || '').trim();
transDate = String(transDate || '').trim();
if (!accNo) {
return {
code: -1,
msg: 'accNo不能为空'
};
}
if (!transDate) {
return {
code: -1,
msg: 'transDate不能为空'
};
}
if (!/^\d{8}$/.test(transDate)) {
return {
code: -1,
msg: 'transDate格式不正确'
};
}
let res = await vk.request({
url: 'http://jjx-union-pay.gxwebsoft.com/api/union-pay-jjx/getFlow',
method: 'POST',
dataType: 'json',
header: {
'content-type': 'application/json; charset=utf-8'
},
data: {
accNo,
transDate
},
timeout: 60000
});
if (res && typeof res === 'object' && typeof res.code === 'undefined') {
res.code = 0;
}
const responseObjects = balanceUtil.getRemoteResponseObjects(res);
const list = balanceUtil.pickFirstDefined([
Array.isArray(res.list) ? res.list : undefined,
Array.isArray(res.rows) ? res.rows : undefined,
Array.isArray(res.data) ? res.data : undefined,
Array.isArray(res.data && res.data.list) ? res.data.list : undefined,
Array.isArray(res.data && res.data.rows) ? res.data.rows : undefined,
Array.isArray(res.info && res.info.list) ? res.info.list : undefined,
Array.isArray(res.info && res.info.rows) ? res.info.rows : undefined,
Array.isArray(res.content && res.content.list) ? res.content.list : undefined,
Array.isArray(res.content && res.content.rows) ? res.content.rows : undefined
]) || [];
if (responseObjects.data && typeof responseObjects.data === 'object' && !Array.isArray(responseObjects.data)) {
responseObjects.data.list = list;
} else if (res && typeof res === 'object') {
res.data = {
list
};
}
return res;
}
};
@@ -0,0 +1,63 @@
'use strict';
const dayjs = require('dayjs');
const balanceUtil = require('./util.js');
module.exports = {
/**
* 查询余额
* @url admin/finance/balance/sys/getInfo 前端调用的url参数地址
* @param {String} accNo 账号
*/
main: async (event) => {
let { data = {}, util } = event;
let { vk } = util;
let { accNo } = data;
accNo = String(accNo || '').trim();
if (!accNo) {
return {
code: -1,
msg: 'accNo不能为空'
};
}
let res = await balanceUtil.requestMerchantBalance({
vk,
accNo
});
if (res && typeof res === 'object' && typeof res.code === 'undefined') {
res.code = 0;
}
const merchantBalance = balanceUtil.getRemoteMerchantBalance(res);
if (merchantBalance !== null) {
const updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
const syncRes = await balanceUtil.syncMerchantBalance({
vk,
accNo,
merchantBalance,
updateTime
});
const nextMerchantBalance = syncRes.merchantBalance;
if (res.data && typeof res.data === 'object') {
res.data.balance = nextMerchantBalance;
res.data.updateTime = updateTime;
} else if (res.info && typeof res.info === 'object') {
res.info.balance = nextMerchantBalance;
res.info.updateTime = updateTime;
} else if (res.content && typeof res.content === 'object') {
res.content.balance = nextMerchantBalance;
res.content.updateTime = updateTime;
} else {
res.data = {
balance: nextMerchantBalance,
updateTime
};
}
}
return res;
}
};
@@ -0,0 +1,53 @@
'use strict';
const balanceUtil = require('./util.js');
module.exports = {
/**
* 资金流水列表
* @url admin/finance/balance/sys/getList 前端调用的url参数地址
*/
main: async (event) => {
let { data = {}, util } = event;
let { vk, _ } = util;
let { pageIndex, pageSize, formData = {} } = data;
let res = { code: 0, msg: '' };
const andArr = [];
if (vk.pubfn.isNotNull(formData.type)) {
andArr.push({ type: formData.type });
}
if (vk.pubfn.isNotNull(formData.logTime) && Array.isArray(formData.logTime) && formData.logTime.length === 2) {
andArr.push({
logTime: _.gte(Number(formData.logTime[0]))
});
andArr.push({
logTime: _.lte(Number(formData.logTime[1]))
});
}
let whereJson = {};
if (andArr.length > 0) {
whereJson = _.and(andArr);
}
res = await vk.baseDao.selects({
dbName: 'jjx-balance-log',
getCount: true,
pageIndex,
pageSize,
whereJson,
sortArr: [{ name: 'logTime', type: 'desc' }, { name: '_add_time', type: 'desc' }]
});
res.rows = res.rows.map(item => ({
...item,
amount: balanceUtil.normalizeAmount(item.amount),
merchantId: item.merchantId || '',
merchantName: item.merchantName || '',
srcReqId: item.srcReqId || '',
status: typeof item.status === 'number' ? item.status : Number(item.status || 0)
}));
return res;
}
};
@@ -0,0 +1,39 @@
'use strict';
const { BALANCE_DOC_ID, getBalanceInfoList } = require('./util.js');
module.exports = {
/**
* 资金汇总
* @url admin/finance/balance/sys/getSummary 前端调用的url参数地址
*/
main: async (event) => {
let { util } = event;
let { vk } = util;
let info = await vk.baseDao.findByWhereJson({
dbName: 'jjx-balance',
whereJson: {
_id: BALANCE_DOC_ID
}
});
if (!info) {
return {
code: -1,
msg: `jjx-balance余额记录不存在: ${BALANCE_DOC_ID}`
};
}
const balanceInfoList = getBalanceInfoList(info.balanceInfo || {});
return {
code: 0,
msg: '',
data: {
balance: Number(Number(info.balance || 0).toFixed(2)),
updateTime: info.updateTime || info._update_time_str || info._add_time_str || '',
balanceInfoList
}
};
}
};
@@ -0,0 +1,75 @@
'use strict';
const balanceUtil = require('./util.js');
module.exports = {
/**
* 编辑资金流水
* @url admin/finance/balance/sys/update 前端调用的url参数地址
*/
main: async (event) => {
let { data = {}, userInfo, util } = event;
let { vk } = util;
const transaction = await vk.baseDao.startTransaction();
try {
if (vk.pubfn.isNull(data._id)) {
throw new Error('流水ID不能为空');
}
const oldLog = await vk.baseDao.findByWhereJson({
db: transaction,
dbName: 'jjx-balance-log',
whereJson: {
_id: data._id
}
});
if (!oldLog) {
throw new Error('流水不存在');
}
const description = String(data.description || '').trim();
if (!description) {
throw new Error('说明不能为空');
}
const newLog = {
description,
amount: balanceUtil.normalizeAmount(data.amount),
type: balanceUtil.normalizeType(data.type),
logTime: balanceUtil.normalizeTime(data.logTime),
operatorId: userInfo && userInfo.uid ? userInfo.uid : oldLog.operatorId || '',
source: oldLog.source || data.source || 'manual'
};
const oldChange = balanceUtil.buildBalanceChange(oldLog);
const newChange = balanceUtil.buildBalanceChange(newLog);
const delta = Number((newChange - oldChange).toFixed(2));
await balanceUtil.checkBalanceAvailable({
transaction,
vk,
changeAmount: delta
});
await vk.baseDao.updateById({
db: transaction,
dbName: 'jjx-balance-log',
id: data._id,
dataJson: newLog
});
await balanceUtil.updateBalanceWithDelta({
transaction,
vk,
delta,
lastLogId: data._id
});
await transaction.commit();
return { code: 0, msg: '' };
} catch (err) {
return await balanceUtil.rollbackTransaction({
transaction,
err
});
}
}
};
@@ -0,0 +1,381 @@
'use strict';
const dayjs = require('dayjs');
const BALANCE_DOC_ID = 'e35392d069f2104f003790b271c67c6d';
const MERCHANT_OPTIONS = [
{ accNo: 'zg000002466577', label: '广西金久信电子商务有限公司' },
{ accNo: 'zg000002460927', label: '南宁亿利通钢管有限公司' },
{ accNo: 'zg000002494918', label: '广西冀旺贸易有限公司' },
{ accNo: 'zg000002459804', label: '广西金久信电子商务有限公司' }
];
const MERCHANT_MAP = MERCHANT_OPTIONS.reduce((map, item) => {
map[item.accNo] = item.label;
return map;
}, {});
function normalizeAmount(value) {
const amount = Number(value || 0);
if (!Number.isFinite(amount)) {
throw new Error('金额格式不正确');
}
return Number(amount.toFixed(2));
}
function normalizeFenToYuan(value) {
const amount = Number(value || 0);
if (!Number.isFinite(amount)) {
throw new Error('金额格式不正确');
}
return Number((amount / 100).toFixed(2));
}
function normalizeType(type) {
if (!['income', 'expense'].includes(type)) {
throw new Error('类型不正确');
}
return type;
}
function normalizeTime(value) {
const time = Number(value || Date.now());
if (!Number.isFinite(time) || time <= 0) {
throw new Error('时间格式不正确');
}
return time;
}
function buildBalanceChange(log = {}) {
const type = normalizeType(log.type);
const amount = normalizeAmount(log.amount);
return type === 'income' ? amount : Number((-amount).toFixed(2));
}
function getMerchantLabel(accNo) {
return MERCHANT_MAP[accNo] || '';
}
function buildBalanceInfoMap(source = {}) {
const rawSource = source && typeof source === 'object' ? source : {};
const balanceInfoMap = {};
MERCHANT_OPTIONS.forEach(item => {
const current = rawSource[item.accNo] || {};
balanceInfoMap[item.accNo] = {
accNo: item.accNo,
merchantName: current.merchantName || current.label || item.label,
balance: normalizeAmount(current.balance || 0),
updateTime: current.updateTime || ''
};
});
return balanceInfoMap;
}
function getBalanceInfoList(source = {}) {
const balanceInfoMap = buildBalanceInfoMap(source);
return MERCHANT_OPTIONS.map(item => balanceInfoMap[item.accNo]);
}
function sumBalanceInfoMap(source = {}) {
const balanceInfoMap = buildBalanceInfoMap(source);
return Number(
Object.keys(balanceInfoMap).reduce((sum, accNo) => {
return sum + Number(balanceInfoMap[accNo].balance || 0);
}, 0).toFixed(2)
);
}
function getRemoteResponseObjects(res = {}) {
return {
root: res && typeof res === 'object' ? res : {},
data: res && res.data && typeof res.data === 'object' ? res.data : {},
info: res && res.info && typeof res.info === 'object' ? res.info : {},
content: res && res.content && typeof res.content === 'object' ? res.content : {}
};
}
function pickFirstDefined(values = []) {
return values.find(value => value !== undefined && value !== null && value !== '');
}
function getRemoteMerchantBalance(res = {}) {
const { root, data, info, content } = getRemoteResponseObjects(res);
const canPayAmt = pickFirstDefined([
root.canPayAmt,
data.canPayAmt,
info.canPayAmt,
content.canPayAmt
]);
if (canPayAmt !== undefined) {
return normalizeFenToYuan(canPayAmt);
}
const balanceValue = pickFirstDefined([
data.balance,
info.balance,
content.balance,
data.availableBalance,
info.availableBalance,
content.availableBalance,
data.amount,
info.amount,
content.amount
]);
if (balanceValue !== undefined) {
return normalizeAmount(balanceValue);
}
return null;
}
async function requestMerchantBalance({ vk, accNo }) {
return await vk.request({
url: 'http://jjx-union-pay.gxwebsoft.com/api/union-pay-jjx/getInfo',
method: 'POST',
dataType: 'json',
header: {
'content-type': 'application/json; charset=utf-8'
},
data: {
accNo
},
timeout: 60000
});
}
async function requestActionLog({ vk, accNo, reqDate, reqJournalNo }) {
return await vk.request({
url: 'http://jjx-union-pay.gxwebsoft.com/api/union-pay-jjx/getActionLog',
method: 'POST',
dataType: 'json',
header: {
'content-type': 'application/json; charset=utf-8'
},
data: {
accNo,
reqDate,
reqJournalNo
},
timeout: 60000
});
}
function pickOrderSet(res = {}) {
const candidates = [
res && res.orderSet,
res && res.data && res.data.orderSet,
res && res.info && res.info.orderSet,
res && res.content && res.content.orderSet,
res && res.data && Array.isArray(res.data) && res.data[0] && res.data[0].orderSet,
res && res.list && Array.isArray(res.list) && res.list[0] && res.list[0].orderSet,
res && res.rows && Array.isArray(res.rows) && res.rows[0] && res.rows[0].orderSet,
res && res.data && res.data.list && Array.isArray(res.data.list) && res.data.list[0] && res.data.list[0].orderSet,
res && res.data && res.data.rows && Array.isArray(res.data.rows) && res.data.rows[0] && res.data.rows[0].orderSet
];
for (let i = 0; i < candidates.length; i++) {
if (typeof candidates[i] === 'string' && candidates[i]) {
return candidates[i];
}
}
return '';
}
function parseOrderSet(res = {}) {
const orderSet = pickOrderSet(res);
if (!orderSet) {
return [];
}
try {
const orderList = JSON.parse(orderSet);
return Array.isArray(orderList) ? orderList : [];
} catch (err) {
console.error('parseOrderSet error', err, orderSet);
return [];
}
}
function getActionStatus(res = {}) {
const orderList = parseOrderSet(res);
if (!orderList.length) {
return null;
}
const firstOrder = orderList[0] || {};
const status = Number(firstOrder.status);
return Number.isFinite(status) ? status : null;
}
function getActionStatusTextByStatus(status) {
const statusMap = {
1: '处理中',
2: '成功',
3: '处理失败',
5: '退票',
6: '退票重提'
};
return statusMap[Number(status)] || '';
}
async function syncMerchantBalance({
vk,
accNo,
merchantBalance,
updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
}) {
const balanceRecord = await ensureBalanceRecord({ vk });
const balanceInfoMap = buildBalanceInfoMap(balanceRecord.balanceInfo || {});
const currentMerchantInfo = balanceInfoMap[accNo] || {
accNo,
merchantName: getMerchantLabel(accNo),
balance: 0,
updateTime: ''
};
const currentMerchantBalance = normalizeAmount(currentMerchantInfo.balance || 0);
const nextMerchantBalance = normalizeAmount(merchantBalance);
const nextBalanceInfoMap = {
...balanceInfoMap,
[accNo]: {
accNo,
merchantName: currentMerchantInfo.merchantName || getMerchantLabel(accNo),
balance: nextMerchantBalance,
updateTime
}
};
const nextTotalBalance = Number(
(Number(balanceRecord.balance || 0) - currentMerchantBalance + nextMerchantBalance).toFixed(2)
);
await vk.baseDao.updateById({
dbName: 'jjx-balance',
id: balanceRecord._id,
dataJson: {
balance: nextTotalBalance,
balanceInfo: nextBalanceInfoMap,
updateTime
}
});
return {
balance: nextTotalBalance,
merchantBalance: nextMerchantBalance,
updateTime,
balanceInfoMap: nextBalanceInfoMap
};
}
async function ensureBalanceRecord({ transaction, vk }) {
let balanceInfo = await vk.baseDao.findByWhereJson({
db: transaction,
dbName: 'jjx-balance',
whereJson: {
_id: BALANCE_DOC_ID
}
});
if (!balanceInfo) {
throw new Error(`jjx-balance余额记录不存在: ${BALANCE_DOC_ID}`);
}
return balanceInfo;
}
async function recalculateBalance({ transaction, vk, logId }) {
const res = await vk.baseDao.select({
db: transaction,
dbName: 'jjx-balance-log',
whereJson: {},
sortArr: [{ name: '_add_time', type: 'desc' }],
pageIndex: 1,
pageSize: 5000
});
const balance = Number(res.rows.reduce((sum, item) => sum + buildBalanceChange(item), 0).toFixed(2));
const balanceInfo = await ensureBalanceRecord({ transaction, vk });
await vk.baseDao.updateById({
db: transaction,
dbName: 'jjx-balance',
id: balanceInfo._id,
dataJson: {
balance,
lastLogId: logId || balanceInfo.lastLogId || ''
}
});
return balance;
}
async function checkBalanceAvailable({ transaction, vk, changeAmount, excludeLogId = '' }) {
const balanceInfo = await ensureBalanceRecord({ transaction, vk });
let currentBalance = Number(balanceInfo.balance || 0);
if (excludeLogId) {
const oldLog = await vk.baseDao.findByWhereJson({
db: transaction,
dbName: 'jjx-balance-log',
whereJson: {
_id: excludeLogId
}
});
if (!oldLog) {
throw new Error('原始流水不存在');
}
currentBalance = Number((currentBalance - buildBalanceChange(oldLog)).toFixed(2));
}
const nextBalance = Number((currentBalance + changeAmount).toFixed(2));
if (nextBalance < 0) {
throw new Error('余额不足');
}
return {
currentBalance,
nextBalance
};
}
async function updateBalanceWithDelta({ transaction, vk, delta, lastLogId = '' }) {
const balanceInfo = await ensureBalanceRecord({ transaction, vk });
const nextBalance = Number((Number(balanceInfo.balance || 0) + Number(delta || 0)).toFixed(2));
await vk.baseDao.updateById({
db: transaction,
dbName: 'jjx-balance',
id: balanceInfo._id,
dataJson: {
balance: nextBalance,
lastLogId: lastLogId || balanceInfo.lastLogId || ''
}
});
return nextBalance;
}
async function rollbackTransaction({ transaction, err }) {
try {
await transaction.rollback();
} catch (rollbackErr) {
console.error(rollbackErr);
}
return {
code: -1,
msg: err.message || '操作失败'
};
}
module.exports = {
BALANCE_DOC_ID,
MERCHANT_OPTIONS,
MERCHANT_MAP,
normalizeAmount,
normalizeFenToYuan,
normalizeType,
normalizeTime,
buildBalanceChange,
getMerchantLabel,
buildBalanceInfoMap,
getBalanceInfoList,
sumBalanceInfoMap,
getRemoteResponseObjects,
pickFirstDefined,
getRemoteMerchantBalance,
requestMerchantBalance,
requestActionLog,
pickOrderSet,
parseOrderSet,
getActionStatus,
getActionStatusTextByStatus,
syncMerchantBalance,
ensureBalanceRecord,
recalculateBalance,
checkBalanceAvailable,
updateBalanceWithDelta,
rollbackTransaction
};
@@ -0,0 +1,138 @@
'use strict';
const dayjs = require('dayjs');
const balanceUtil = require('./util.js');
const merchantMap = balanceUtil.MERCHANT_MAP;
module.exports = {
/**
* 提现
* @url admin/finance/balance/sys/withdraw 前端调用的url参数地址
*/
main: async (event) => {
let { data = {}, userInfo, util } = event;
let { vk } = util;
const transaction = await vk.baseDao.startTransaction();
try {
const merchantId = String(data.merchantId || '').trim();
if (!merchantMap[merchantId]) {
throw new Error('提现商户不正确');
}
const amount = balanceUtil.normalizeAmount(data.amount);
if (amount <= 0) {
throw new Error('提现金额必须大于0');
}
const balanceRecord = await balanceUtil.ensureBalanceRecord({
transaction,
vk
});
const balanceInfoMap = balanceUtil.buildBalanceInfoMap(balanceRecord.balanceInfo || {});
const merchantBalanceInfo = balanceInfoMap[merchantId] || {
accNo: merchantId,
merchantName: merchantMap[merchantId],
balance: 0,
updateTime: ''
};
const merchantBalance = balanceUtil.normalizeAmount(merchantBalanceInfo.balance || 0);
if (merchantBalance <= 0) {
throw new Error('当前企业余额小于等于0,无法提现');
}
if (amount > merchantBalance) {
throw new Error('提现金额不能大于当前企业余额');
}
const description = String(data.description || '').trim() || `余额提现-${merchantMap[merchantId]}`;
const requestRes = await vk.request({
method: "POST",
url: 'http://jjx-union-pay.gxwebsoft.com/api/union-pay-jjx/transByAmount',
header: {
"content-type": "application/json; charset=utf-8",
},
data: {
accNo: merchantId,
amount
},
timeout: 60000
});
console.log('requestRes', requestRes)
const code = Number(requestRes && requestRes.code);
const success = requestRes && (
code === 0 ||
code === 200 ||
requestRes.success === true ||
(typeof requestRes.code === 'undefined' && !requestRes.msg && !requestRes.message)
);
if (!success) {
throw new Error(
(requestRes && (requestRes.msg || requestRes.message)) ||
(requestRes && requestRes.content && (requestRes.content.msg || requestRes.content.message)) ||
'提现失败'
);
}
const logData = {
description,
amount,
type: 'expense',
logTime: Date.now(),
operatorId: userInfo && userInfo.uid ? userInfo.uid : '',
source: 'withdraw',
merchantId,
merchantName: merchantMap[merchantId],
srcReqId: requestRes.srcReqId,
status: 1
};
const changeAmount = balanceUtil.buildBalanceChange(logData);
await balanceUtil.checkBalanceAvailable({
transaction,
vk,
changeAmount
});
const addRes = await vk.baseDao.add({
db: transaction,
dbName: 'jjx-balance-log',
dataJson: logData
});
const updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
const nextMerchantBalance = Number((merchantBalance + changeAmount).toFixed(2));
const nextBalance = Number((Number(balanceRecord.balance || 0) + changeAmount).toFixed(2));
await vk.baseDao.updateById({
db: transaction,
dbName: 'jjx-balance',
id: balanceRecord._id,
dataJson: {
balance: nextBalance,
lastLogId: addRes.id,
updateTime,
balanceInfo: {
...balanceInfoMap,
[merchantId]: {
accNo: merchantId,
merchantName: merchantMap[merchantId],
balance: nextMerchantBalance,
updateTime
}
}
}
});
await transaction.commit();
return {
code: 0,
msg: '',
data: {
balance: nextBalance,
merchantBalance: nextMerchantBalance
}
};
} catch (err) {
return await balanceUtil.rollbackTransaction({
transaction,
err
});
}
}
};
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-goods-category',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-goods-category',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
dbName: 'jjx-goods-category',
sortArr: [
{ name: "sort", type: "asc" },
{ name: "_id", type: "desc" },
],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-goods-category',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-goods',
dataJson: {
...data, ...{
viewNum: 0,
}
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
'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, field, value} = data
const dataJson = {}
dataJson[field] = value
await vk.baseDao.updateAndReturn({
dbName: 'jjx-goods',
whereJson: {
_id: id
},
dataJson
})
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-goods',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,59 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, name, pageIndex, pageSize, pageNum, formData, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {};
if (vk.pubfn.isNotNull(formData)) {
if (vk.pubfn.isNotNull(formData.name)) {
whereJson.name = new RegExp(formData.name);
}
if (vk.pubfn.isNotNull(formData.address)) {
whereJson['address.area.code'] = formData.address.area.code;
}
}
res = await vk.baseDao.getTableData({
dbName: 'jjx-goods',
getCount: true,
whereJson,
pageIndex,
pageSize,
pageNum,
sortArr: sortRule && sortRule.length ? sortRule : [{"name": "_add_time", "type": "desc"}],
// foreignDB: [
// {
// dbName: "jjx-goods-category",
// localKey: "parentId",
// foreignKey: "_id",
// as: "category",
// limit: 1,
// },
//
// ]
});
for (let i = 0; i < res.rows.length; i++) {
res.rows[i].category = vk.baseDao.findByWhereJson({
dbName: "jjx-goods-category",
whereJson: {
_id: res.rows[i].parentId,
}
})
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-goods',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,61 @@
module.exports = {
/**
* 添加单条数据
* @url admin/kong/sys/add 前端调用的url参数地址
* data 请求参数 说明
* 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 {
name,
icon,
sort,
remark,
parent_id,
level
} = data;
let dbName = "jjx-industry";
if (parent_id) {
const parent = await vk.baseDao.findById({
dbName,
id: parent_id
})
if (parent.level >= 3) {
return {
code: -1,
msg: '最多支持三级分类'
}
}
level = parent.level + 1
} else {
level = 1
}
res.id = await vk.baseDao.add({
dbName,
dataJson: {
name,
icon,
sort,
remark,
parent_id,
level
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 数据删除
* @url admin/kong/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* 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 } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "jjx-industry";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/old/sys/getList 前端调用的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 { pageIndex, pageSize, sortRule } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName: "jjx-industry",
pageIndex,
pageSize,
getCount: true,
sortArr: sortRule && sortRule.length ? sortRule : [{"name": "sort", "type":"asc" }, {"name": "_add_time", "type":"desc" }],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,67 @@
module.exports = {
/**
* 修改数据
* @url admin/kong/sys/update 前端调用的url参数地址
* data 请求参数 说明
* 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,
name,
icon,
sort,
remark,
parent_id,
level
} = data;
// 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段
if(vk.pubfn.isNullOne(_id)){
return { code : -1, msg : '参数错误' };
}
let dbName = "jjx-industry";
if(parent_id) {
const parent = await vk.baseDao.findById({
dbName,
id: parent_id
})
if(parent.level >= 3) {
return {
code: -1,
msg: '最多支持三级分类'
}
}
level = parent.level + 1
} else {
level = 1
}
await vk.baseDao.updateById({
dbName,
id:_id,
dataJson:{
name,
icon,
sort,
remark,
parent_id,
level
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-notice',
dataJson: {
...data, ...{
viewNum: 0
}
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-notice',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,24 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
dbName: 'jjx-notice'
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-notice',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/add 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.add({
dbName: 'jjx-old-category',
dataJson: data
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/delete 前端调用的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: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.deleteById({
dbName: 'jjx-old-category',
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,69 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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, type, level, formData} = data;
let res = {code: 0, msg: ''};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {
parent_id: _.in([null, ""]),
_id: _.exists(true),
type
}
if (vk.pubfn.isNotNull(level) && level === 0) whereJson.parent_id = _.exists(false)
if (vk.pubfn.isNotNull(formData) && vk.pubfn.isNotNull(formData.type)) whereJson.type = formData.type
let dbName = "jjx-old-category";
res = await vk.baseDao.selects({
dbName,
pageIndex: 1,
pageSize: 500,
whereJson,
sortArr: [{name: "sort", type: "asc"}],
// 树状结构参数
// treeProps: {
// id: "_id", // 唯一标识字段,默认为 _id
// parent_id: "parent_id", // 父级标识字段,默认为 parent_id
// children: "children", // 自定义返回的下级字段名,默认为 children
// level: 3, // 查询返回的树的最大层级。超过设定层级的节点不会返回。默认10级,最大15,最小1
// limit: 500, // 每一级最大返回的数据。
// whereJson: {
// }
// }
});
if (vk.pubfn.isNull(level)) {
for (const item of res.rows) {
const children = await vk.baseDao.selects({
dbName,
pageIndex: 1,
pageSize: 500,
whereJson: {
parent_id: item._id
},
sortArr: [
{name: "quoteNum", type: "desc"},
{name: "sort", type: "asc"},
]
})
item.children = children.rows
}
}
return res;
}
}
@@ -0,0 +1,32 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/list 前端调用的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, formData } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {}
if (vk.pubfn.isNotNull(formData.type)) whereJson.type = formData.type
res = await vk.baseDao.getTableData({
dbName: 'jjx-old-category',
whereJson,
sortArr: [
{ name: "sort", type: "asc" },
{ name: "_id", type: "desc" },
],
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,26 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/article/category/sys/update 前端调用的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: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.updateById({
dbName: 'jjx-old-category',
dataJson: data,
id: data._id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,53 @@
module.exports = {
/**
* 查询多条记录 分页
* @url admin/kong/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, sheetId} = data;
let res = {code: 0, msg: ''};
// 业务逻辑开始-----------------------------------------------------------
let dbName = "jjx-old-quote";
res = await vk.baseDao.selects({
dbName,
whereJson: {
sheetId
},
foreignDB: [
{
dbName: "uni-id-users",
localKey: "userId",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
fieldJson: {
_id: true,
company: {
companyName: true,
mobile: true,
},
person: {
personName: true,
mobile: true,
},
businessCard: true,
accountType: true,
},
}
]
});
return res;
}
}

Some files were not shown because too many files have changed in this diff Show More