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,36 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/order/sys/getDetail 前端调用的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, orderId} = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
res.data = await vk.baseDao.findByWhereJson({
dbName: "jjx-order-selfProduct",
whereJson: {
orderId
}
})
if (res.data.companyId) {
res.data.company = await vk.baseDao.findByWhereJson({
dbName: "uni-id-users",
whereJson: {
_id: res.data.companyId
}
})
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,51 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/order/sys/setCompany 前端调用的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, orderId, companyId } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.update({
dbName: 'jjx-order-selfProduct',
whereJson:{
orderId
},
dataJson:{
companyId,
}
})
await vk.baseDao.updateById({
dbName: 'jjx-order',
id: orderId,
dataJson: {
sellerUid: companyId,
orderStatus: 11
}
})
await vk.baseDao.add({
dbName: "jjx-message",
dataJson: {
uid: companyId,
title: `您有新的自营增值服务派单`,
content: `您有新的自营增值服务派单,赶紧去完成订单吧`,
type: 'self-product',
hasRead: false,
}
});
await pubFun.sendNotifySms(companyId, 'SMS_474125515')
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,130 @@
'use strict';
const dayjs = require("dayjs");
var isBetween = require('dayjs/plugin/isBetween')
dayjs.extend(isBetween)
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/quote/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, quoteId, sheetId} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const quote = await vk.baseDao.updateAndReturn({
dbName: "jjx-self-support-quote-list",
whereJson: {
_id: quoteId
},
dataJson: {
status: 1
},
})
const sheet = await vk.baseDao.updateAndReturn({
dbName: "jjx-self-support",
whereJson: {
_id: sheetId
},
dataJson: {
status: 2,
quoteUid: quote.uid
},
})
const fadadaContractId = vk.pubfn.createOrderNo("E", 20)
// 上传合同模板并填充
// 新增合同记录
const contractTransactionId = vk.pubfn.createOrderNo("C", 20)
const contractId = await vk.baseDao.add({
dbName: 'jjx-contract',
dataJson: {
fadadaContractId,
contractBase: '', // 原始合同
contractHistory: [], // 历史合同
contractFinal: '', // 归档合同
status: 0,
userId: sheet.uid,
type: 'self-support',
quoteId,
sheetId,
productList: null,
productTitle: `自营询价`,
tradeMethod: 1,
partyCount: 2,
signCount: 0,
contractType: null,
signMethod: 2,
sellerSupplement: null,
transactionId: contractTransactionId,
amount: quote.amount,
docTitle: '自营询价'
}
})
const checkMessage = await vk.baseDao.findByWhereJson({
dbName: "jjx-message-config",
whereJson: {
uid: sheet.uid
}
})
let send = true
if (checkMessage) {
// if (checkMessage.doNotDisturbRange && checkMessage.doNotDisturbRange[0]) {
// const date = dayjs().format("YYYY-MM-DD")
// const doNotDisturbRangeStart = dayjs(checkMessage.doNotDisturbRange[0]).format("HH:mm")
// const doNotDisturbRangeEnd = dayjs(checkMessage.doNotDisturbRange[1]).format("HH:mm")
// if (dayjs().isBetween(dayjs(`${date} ${doNotDisturbRangeStart}`), dayjs(`${date} ${doNotDisturbRangeEnd}`)))
// send = false
// }
const date = dayjs().format("YYYY-MM-DD")
if (checkMessage.doNotDisturbStart && checkMessage.doNotDisturbStart.length) {
const doNotDisturbRangeStart = dayjs(`${date} ${checkMessage.doNotDisturbStart[0]}:${checkMessage.doNotDisturbStart[1]}`).format("HH:mm")
const doNotDisturbRangeEnd = dayjs(`${date} ${checkMessage.doNotDisturbEnd[0]}:${checkMessage.doNotDisturbEnd[1]}`).format("HH:mm")
if (dayjs().isBetween(dayjs(`${date} ${doNotDisturbRangeStart}`), dayjs(`${date} ${doNotDisturbRangeEnd}`)))
send = false
}
}
if (send) {
await vk.baseDao.add({
dbName: "jjx-message",
dataJson: {
uid: sheet.uid,
title: `自营询价`,
content: `您的自营询价已选商,赶紧去看看吧`,
type: 'self-support-quote',
hasRead: false,
pk: sheetId
}
});
await pubFun.sendNotifySms(sheet.uid, 'SMS_474450034')
}
await vk.daoCenter.userContractDao.adds([
{
transactionId: vk.pubfn.createOrderNo("E", 20),
userId: quote.userId,
role: 'seller',
sign: false,
contractId
},
{
transactionId: vk.pubfn.createOrderNo("E", 20),
userId: sheet.uid,
role: 'buyer',
sign: false,
contractId
}
])
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/quote/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, amount, files, remark} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
await vk.baseDao.update({
dbName: 'jjx-self-support-quote-list',
whereJson: {
_id: data._id
},
dataJson: {
amount, files, remark
}
})
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,90 @@
'use strict';
const normalizeSortRule = require('../../../utils/sortRule.js');
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/quote/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, pageIndex, pageSize, formData, sortRule} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const whereJson = {};
if (vk.pubfn.isNotNull(formData)) {
if (vk.pubfn.isNotNull(formData.address)) whereJson['city.code'] = formData.address.city.code;
}
// 区域限制
if (userInfo.allowArea && userInfo.allowArea.length > 0) {
whereJson['city.code'] = _.in(userInfo.allowArea.map(item => item.area.city.code));
}
res = await vk.baseDao.selects({
dbName: "jjx-self-support",
pageIndex,
pageSize,
whereJson,
getCount: true,
sortArr: normalizeSortRule(sortRule, [{"name": "_add_time", "type": "desc"}], ["_add_time"]),
foreignDB: [
{
dbName: "uni-id-users",
localKey: "uid",
foreignKey: "_id",
as: "user",
limit: 1, // limit=1则以对象形式返回
fieldJson: {
_id: true,
company: {
companyName: true
},
person: {
personName: true
},
businessCard: true,
accountType: true,
},
},
]
});
for (let i = 0; i < res.rows.length; i++) {
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].quote = await vk.baseDao.findByWhereJson({
dbName: 'jjx-self-support-quote-list',
whereJson: {
quoteId: res.rows[i]._id,
status: 1
}
})
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,49 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/quote/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, pageIndex, pageSize, quoteId} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName: "jjx-self-support-quote-list",
pageSize: 999,
whereJson: {quoteId},
getCount: true,
sortArr: [{"name": "_add_time", "type": "desc"}],
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,
},
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,71 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url admin/selfProduct/quote/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, list, quoteId, desc} = data;
let res = {code: 0, msg: ""};
// 业务逻辑开始-----------------------------------------------------------
const dataJson = [], messageList = []
for (let i in list) {
dataJson.push({
status: 0,
userId: list[i],
amount: null,
files: null,
remark: null,
quoteId: quoteId
})
messageList.push({
uid: list[i],
title: `自营询价`,
content: `新的自营询价,赶紧去报价`,
type: 'self-support',
hasRead: false,
pk: quoteId
})
await pubFun.sendNotifySms(list[i], 'SMS_474160500')
}
await vk.baseDao.adds({
dbName: "jjx-self-support-quote-list",
dataJson
});
await vk.baseDao.updateById({
dbName: "jjx-self-support",
id: quoteId,
dataJson: {
status: 1,
desc: desc,
}
});
await vk.baseDao.update({
dbName: "jjx-self-support-quote-list",
whereJson: {
quoteId
},
dataJson: {
desc: desc,
}
});
if (messageList.length > 0) {
await vk.baseDao.adds({
dbName: "jjx-message",
dataJson: messageList
});
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}