feat: 补齐客户端/管理端服务模块与数据库 schema,完善登录短信、法大大签署及公共函数
This commit is contained in:
@@ -1,19 +1,20 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 添加单条数据
|
||||
* @url template/db_api/pub/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* res 返回参数说明
|
||||
* @params {Number} code 错误码,0表示成功
|
||||
* @params {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
/**
|
||||
* 添加单条数据
|
||||
* @url template/db_api/pub/add 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* res 返回参数说明
|
||||
* @params {Number} code 错误码,0表示成功
|
||||
* @params {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, originalParam } = event;
|
||||
let { uniID, pubFun, vk , db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 随机定位开始-----------------------------------------------------------
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let startTime = Date.now();
|
||||
|
||||
// 为了方便测试,这里固定在杭州市西湖区附近
|
||||
let longitude = 120.12792 + Math.floor(Math.random() * 500) / 10000;
|
||||
let latitude = 30.228932 + Math.floor(Math.random() * 500) / 10000;
|
||||
@@ -30,7 +31,10 @@ module.exports = {
|
||||
},
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
let endTime = Date.now();
|
||||
res.runTime = (endTime - startTime);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@ module.exports = {
|
||||
let res = { code : 0, msg : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let dbName = "vk-test";
|
||||
let runTime1 = new Date().getTime();
|
||||
let startTime = Date.now();
|
||||
let addNum = 10;
|
||||
console.log(new Date(runTime1),"开始运行,添加"+addNum+"条数据");
|
||||
console.log("开始运行,添加"+addNum+"条数据");
|
||||
// 承载所有读操作的 promise 的数组
|
||||
let dataArr = [];
|
||||
|
||||
@@ -41,10 +41,9 @@ module.exports = {
|
||||
dataJson:dataArr
|
||||
});
|
||||
|
||||
let runTime2 = new Date().getTime();
|
||||
let runTime = ((runTime2 - runTime1) / 1000 + "秒");
|
||||
console.log(new Date(runTime2),"运行结束,耗时:"+runTime);
|
||||
res.runTime = runTime;
|
||||
let endTime = Date.now();
|
||||
res.runTime = endTime - startTime;
|
||||
console.log("运行结束,耗时:"+res.runTime/1000 + "秒");
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -13,12 +13,17 @@ module.exports = {
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let startTime = Date.now();
|
||||
|
||||
res.num = await vk.baseDao.count({
|
||||
dbName:"vk-test",
|
||||
whereJson:{
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
let endTime = Date.now();
|
||||
res.runTime = (endTime - startTime);
|
||||
// 对应的sql:
|
||||
// count * from vk-test
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
|
||||
@@ -13,7 +13,7 @@ module.exports = {
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let startTime = new Date().getTime();
|
||||
let startTime = Date.now();
|
||||
res.item = await vk.baseDao.findById({
|
||||
dbName:"vk-test",
|
||||
id:data._id,
|
||||
@@ -21,7 +21,7 @@ module.exports = {
|
||||
|
||||
}
|
||||
});
|
||||
let endTime = new Date().getTime();
|
||||
let endTime = Date.now();
|
||||
res.runTime = (endTime - startTime);
|
||||
// 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段
|
||||
// 对应的sql:
|
||||
|
||||
@@ -13,6 +13,8 @@ module.exports = {
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let startTime = Date.now();
|
||||
|
||||
res.item = await vk.baseDao.findByWhereJson({
|
||||
dbName:"vk-test",
|
||||
fieldJson:{
|
||||
@@ -22,6 +24,10 @@ module.exports = {
|
||||
_id:data._id,
|
||||
}
|
||||
});
|
||||
|
||||
let endTime = Date.now();
|
||||
res.runTime = (endTime - startTime);
|
||||
|
||||
// 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段
|
||||
// 对应的sql:
|
||||
// select * from vk-test where _id = "5f3a125b3d11c6000106d338"
|
||||
|
||||
@@ -21,7 +21,9 @@ module.exports = {
|
||||
location: _.geoNear({
|
||||
geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区
|
||||
maxDistance: 4000, // 选填,最大距离,米为单位
|
||||
minDistance: 0 // 选填,最小距离,米为单位
|
||||
minDistance: 0 ,// 选填,最小距离,米为单位
|
||||
distanceMultiplier:1, // 返回时在距离上乘以该数字 1代表米 100 代表厘米 0.001 代表千米
|
||||
distanceField:"distance", // 输出的每个记录中 distance 即是与给定点的距离
|
||||
})
|
||||
},
|
||||
});
|
||||
|
||||
@@ -26,7 +26,7 @@ module.exports = {
|
||||
// 主表字段显示规则
|
||||
fieldJson:{ token:false, password:false },
|
||||
// 主表排序规则
|
||||
sortArr:[{ "name":"_id", "type":"desc" }],
|
||||
sortArr: [{"name": "_add_time", "type":"desc" }],
|
||||
// 副表列表
|
||||
foreignDB:[
|
||||
{
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 多表查询
|
||||
* @url template/db_api/pub/selects_inviter_uid 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* res 返回参数说明
|
||||
* @params {Number} code 错误码,0表示成功
|
||||
* @params {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, originalParam } = event;
|
||||
let { uniID, pubFun, vk, db, _, $ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
/**
|
||||
* 此为演示 使用数组下标对应的值进行连表,如用户表根据inviter_uid的第一个值进行连表查出第一个上级的用户信息
|
||||
*/
|
||||
res = await vk.baseDao.selects({
|
||||
dbName: "uni-id-users",
|
||||
getCount: false,
|
||||
pageIndex: 1,
|
||||
pageSize: 5,
|
||||
fieldJson: {
|
||||
token: false,
|
||||
password: false
|
||||
},
|
||||
// 副表列表
|
||||
foreignDB: [{
|
||||
dbName: "uni-id-users",
|
||||
localKey: $.arrayElemAt(['$inviter_uid', 0]),
|
||||
foreignKey: "_id",
|
||||
as: "inviterUserInfo",
|
||||
limit: 1,
|
||||
fieldJson: {
|
||||
token: false,
|
||||
password: false
|
||||
},
|
||||
}]
|
||||
});
|
||||
console.log(11, res.rows);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* XXXnameXXX
|
||||
* @url template/db_api/pub/tree 前端调用的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: "opendb-admin-menus",
|
||||
whereJson:{
|
||||
enable: true,
|
||||
parent_id: null
|
||||
},
|
||||
// 树状结构参数
|
||||
treeProps: {
|
||||
id: "menu_id", // 唯一标识字段,默认为 _id
|
||||
parent_id: "parent_id", // 父级标识字段,默认为 parent_id
|
||||
children: "children", // 自定义返回的下级字段名,默认为 children
|
||||
level: 3, // 查询返回的树的最大层级。超过设定层级的节点不会返回。默认10级,最大15,最小1
|
||||
limit: 500, // 每一级最大返回的数据。
|
||||
whereJson: {
|
||||
enable: true
|
||||
}
|
||||
}
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* code2Session
|
||||
* @url template/openapi/alipay/pub/code2Session 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
code,
|
||||
} = data;
|
||||
let code2SessionRes = await vk.openapi.alipay.auth.code2Session({
|
||||
code,
|
||||
needKey: true
|
||||
});
|
||||
if (code2SessionRes.code !== 0) {
|
||||
return code2SessionRes;
|
||||
}
|
||||
console.log('code2SessionRes: ', code2SessionRes);
|
||||
res.openid = code2SessionRes.openid;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取支付宝小程序码
|
||||
* @url template/openapi/alipay/pub/getMiniCode 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} path 小程序页面路径
|
||||
*/
|
||||
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 {
|
||||
page,
|
||||
scene
|
||||
} = data;
|
||||
res = await vk.openapi.alipay.acode.getMiniCode(data);
|
||||
res.base64 = res.qr_code_url_circle_white; // 兼容其他小程序的返回字段
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* code2Session
|
||||
* @url template/openapi/douyin/pub/code2Session 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
code,
|
||||
anonymousCode
|
||||
} = data;
|
||||
let code2SessionRes = await vk.openapi.douyin.auth.code2Session({
|
||||
code,
|
||||
anonymousCode,
|
||||
needKey: true
|
||||
});
|
||||
if (code2SessionRes.code !== 0) {
|
||||
return code2SessionRes;
|
||||
}
|
||||
console.log('code2SessionRes: ', code2SessionRes);
|
||||
res.openid = code2SessionRes.openid;
|
||||
res.anonymousOpenid = code2SessionRes.anonymousOpenid;
|
||||
res.unionid = code2SessionRes.unionid;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取抖音小程序码
|
||||
* @url template/openapi/douyin/pub/getMiniCode 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} path 小程序页面路径
|
||||
*/
|
||||
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 {
|
||||
path
|
||||
} = data;
|
||||
|
||||
res = await vk.openapi.douyin.acode.getMiniCode({
|
||||
path
|
||||
});
|
||||
if (typeof res === "object" && res.code) {
|
||||
return res;
|
||||
}
|
||||
try {
|
||||
// 二进制转base64
|
||||
let base64 = Buffer.from(res, 'binary').toString('base64');
|
||||
return {
|
||||
code: 0,
|
||||
base64: `data:image/png;base64,${base64}`
|
||||
};
|
||||
} catch (err) {
|
||||
// 转base64失败
|
||||
return {
|
||||
code: -1,
|
||||
msg: "生成小程序码失败",
|
||||
err: {
|
||||
message: err.message,
|
||||
stack: err.stack
|
||||
}
|
||||
};
|
||||
}
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 图片违规检测示例
|
||||
* @url template/openapi/douyin/pub/imgSecCheck 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* res 返回参数说明
|
||||
* @params {Number} code 错误码,0表示成功
|
||||
* @params {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { config, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { base64 } = data;
|
||||
/**
|
||||
* 实际开发中,图片可能是多张图,比如多达9张图
|
||||
* 如果在一个请求中循环检测,可能会超时。
|
||||
* 方案1:前端选择完图片就自动一张一张检测和上传(即9张图会有9个请求)
|
||||
* 方案2:使用Promise.all
|
||||
*/
|
||||
let imgSecCheckRes = await vk.openapi.douyin.security.imgSecCheck({
|
||||
base64
|
||||
});
|
||||
if (imgSecCheckRes.code !== 0) {
|
||||
// 未通过检测
|
||||
return imgSecCheckRes;
|
||||
}
|
||||
// 若通过检测,则继续执行自己的业务
|
||||
// ...
|
||||
// ...
|
||||
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 文本违规检测示例
|
||||
* @url template/openapi/douyin/pub/msgSecCheck 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* res 返回参数说明
|
||||
* @params {Number} code 错误码,0表示成功
|
||||
* @params {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { config, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: 'ok' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
content,
|
||||
} = data;
|
||||
// 实际业务中,content可能是评论的内容等
|
||||
let msgSecCheckRes = await vk.openapi.douyin.security.msgSecCheck({
|
||||
content,
|
||||
});
|
||||
if (msgSecCheckRes.code !== 0) {
|
||||
// 未通过检测
|
||||
return msgSecCheckRes;
|
||||
}
|
||||
res.result = msgSecCheckRes;
|
||||
// 若通过检测,则继续执行自己的业务
|
||||
// ...
|
||||
// ...
|
||||
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* code2Session
|
||||
* @url template/openapi/qq/pub/code2Session 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} params1 参数1
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
code,
|
||||
anonymousCode
|
||||
} = data;
|
||||
let code2SessionRes = await vk.openapi.qq.auth.code2Session({
|
||||
code,
|
||||
needKey: true
|
||||
});
|
||||
if (code2SessionRes.code !== 0) {
|
||||
return code2SessionRes;
|
||||
}
|
||||
console.log('code2SessionRes: ', code2SessionRes);
|
||||
res.openid = code2SessionRes.openid;
|
||||
res.unionid = code2SessionRes.unionid;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user