This commit is contained in:
2026-10-08 18:20:51 +08:00
parent dec4ebc773
commit 6f1b2dc03a
621 changed files with 47117 additions and 43176 deletions
@@ -0,0 +1,54 @@
module.exports = {
/**
* 此函数名称
* @url template/db_api/user/pub/Promise.all 前端调用的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 dbName = "vk-test";
let runTime1 = new Date().getTime();
let addNum = 200;
console.log(new Date(runTime1),"开始运行,添加"+addNum+"条数据");
// 承载所有读操作的 promise 的数组
let tasks = [];
for(let i = 1; i <= addNum; i++){
let promise = vk.baseDao.add({
dbName:dbName,
dataJson:{
"money": 10.02+i,
"_add_time": 1597456395010+i,
"user_id": "001"
}
});
tasks.push(promise);
}
// 等待所有
let ids = [];
try {
res = await Promise.all(tasks).then((values) => {
return {
//ids:values,
total:values.length
};
});
} catch (e) {
//console.log("异常:",e,res);
console.log("异常:运行超时");
res.msg = "运行超时";
}
let runTime2 = new Date().getTime();
let runTime = (runTime2 - runTime1) / 1000 + "秒";
console.log(new Date(runTime2),"运行结束,耗时:"+runTime);
res.runTime = runTime;
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,36 @@
module.exports = {
/**
* 添加单条数据
* @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 longitude = 120.12792 + Math.floor(Math.random() * 500) / 10000;
let latitude = 30.228932 + Math.floor(Math.random() * 500) / 10000;
// 随机定位结束-----------------------------------------------------------
res.id = await vk.baseDao.add({
dbName:"vk-test",
dataJson:{
"money": Math.floor(Math.random() * 9 + 1),
"user_id": "00"+Math.floor(Math.random() * 2 + 1),
"location":new db.Geo.Point(longitude, latitude),
"position":{
"longitude":longitude,
"latitude":latitude,
},
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,51 @@
module.exports = {
/**
* 批量添加数据
* @url template/db_api/pub/adds 前端调用的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 dbName = "vk-test";
let runTime1 = new Date().getTime();
let addNum = 10;
console.log(new Date(runTime1),"开始运行,添加"+addNum+"条数据");
// 承载所有读操作的 promise 的数组
let dataArr = [];
for(let i = 1; i <= addNum; i++){
// 随机定位开始-----------------------------------------------------------
// 为了方便测试,这里固定在杭州市西湖区附近
let longitude = 120.12792 + Math.floor(Math.random() * 500) / 10000;
let latitude = 30.228932 + Math.floor(Math.random() * 500) / 10000;
// 随机定位结束-----------------------------------------------------------
dataArr.push({
"money": Math.floor(Math.random() * 9 + 1),
"user_id": "00"+Math.floor(Math.random() * 2 + 1),
"location":new db.Geo.Point(longitude, latitude),
"position":{
"longitude":longitude,
"latitude":latitude,
},
});
}
await vk.baseDao.adds({
dbName:dbName,
dataJson:dataArr
});
let runTime2 = new Date().getTime();
let runTime = ((runTime2 - runTime1) / 1000 + "秒");
console.log(new Date(runTime2),"运行结束,耗时:"+runTime);
res.runTime = runTime;
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* avg求平均值
* @url template/db_api/pub/avg 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.avg = await vk.baseDao.avg({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,28 @@
module.exports = {
/**
* count求总记录条数
* @url template/db_api/pub/count 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.num = await vk.baseDao.count({
dbName:"vk-test",
whereJson:{
}
});
// 对应的sql:
// count * from vk-test
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 数据删除
* @url template/db_api/pub/del 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 这里为了防止误删,故vk.baseDao.del API
* 会判断如果whereJson为空,则不执行删除操作
* 所以这里加了个_id: _.exists(true)条件来达到删除全部的功能(实际开发时慎用删除全部功能)
*/
res.num = await vk.baseDao.del({
dbName:"vk-test",
whereJson:{
_id: _.exists(true)
}
});
// 对应的sql:
// delete from vk-test where user_id != '___'
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
module.exports = {
/**
* 数据删除
* @url template/db_api/pub/del 前端调用的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 { _id } = data;
res.num = await vk.baseDao.deleteById({
dbName:"vk-test",
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 根据id获取记录
* @url template/db_api/pub/findById 前端调用的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 = new Date().getTime();
res.item = await vk.baseDao.findById({
dbName:"vk-test",
id:data._id,
fieldJson:{
}
});
let endTime = new Date().getTime();
res.runTime = (endTime - startTime);
// 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段
// 对应的sql:
// select * from vk-test where _id = "5f3a125b3d11c6000106d338"
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,32 @@
module.exports = {
/**
* 根据where条件获取单条记录(首条)
* @url template/db_api/pub/findByWhereJson 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.item = await vk.baseDao.findByWhereJson({
dbName:"vk-test",
fieldJson:{
},
whereJson:{
_id:data._id,
}
});
// 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段
// 对应的sql:
// select * from vk-test where _id = "5f3a125b3d11c6000106d338"
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,31 @@
module.exports = {
/**
* 根据地理位置获取列表数据信息
* @url template/db_api/pub/geo 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName:"vk-test",
pageIndex:1,
pageSize:100,
whereJson:{
location: _.geoNear({
geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区
maxDistance: 4000, // 选填,最大距离,米为单位
minDistance: 0 // 选填,最小距离,米为单位
})
},
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,73 @@
module.exports = {
/**
* 查询多条记录 分页
* @url template/db_api/pub/getList 前端调用的url参数地址
* data 请求参数 说明
* @params {String} tableName 表名
* @params {String} addTime 搜索开始时间
* @params {String} endTime 搜索截止时间
* @params {String} searchvalue 搜索指定内容
* @params {Number} pageIndex 当前页码
* @params {Number} pageSize 每页显示数量
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : '' };
// 业务逻辑开始-----------------------------------------------------------
// 可写与数据库的交互逻辑等等
let { pageIndex, pageSize, searchvalue, timeArr = [], addTimeLong, endTimeLong, sortRule } = data;
let dbName = "vk-test";
let fieldJson = {};
let whereJson = {};
let sortArr = [];
// 排序规则开始-----------------------------------------------------------
sortArr.push({
"name":"_add_time",
"type":"desc"
});
if(sortRule) sortArr = sortRule;
// 排序规则结束-----------------------------------------------------------
// 查询条件开始-----------------------------------------------------------
if(searchvalue){
// 查询searchvalue开头的数据
try{
// 如果查询需要用到正则,建议将正则用try catch 包起来。
//whereJson["title"] = new RegExp('^'+searchvalue);
whereJson["money"] = Number(searchvalue);
}catch(err){
return { code : -1, msg : '请输入合法的查询内容' };
}
}
if(timeArr.length >=2 ){
addTimeLong = timeArr[0];
endTimeLong = timeArr[1];
}
if(addTimeLong && endTimeLong){
whereJson["_add_time"] = _.gte(addTimeLong).lte(endTimeLong);
}else if(addTimeLong && !endTimeLong){
whereJson["_add_time"] = _.gte(addTimeLong);
}else if(!addTimeLong && endTimeLong){
whereJson["_add_time"] = _.lte(endTimeLong);
}
// 这里可以写必须满足的查询条件,如whereJson["user_id"] = uid;代表只查自己的记录
// whereJson["user_id"] = uid;
// 查询条件结束-----------------------------------------------------------
res = await vk.baseDao.select({
dbName:dbName,
getCount:true,
pageIndex:pageIndex,
pageSize:pageSize,
fieldJson:fieldJson,
whereJson:whereJson,
sortArr:sortArr
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,38 @@
module.exports = {
/**
* 分组求count
* @url template/db_api/pub/groupCount 前端调用的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 { _id = "___" } = data;
res = await vk.baseDao.selects({
dbName: "vk-test",
pageIndex: 1,
pageSize: 10,
// 主表where条件
whereJson: {
},
groupJson: {
_id: "$money", // _id是分组id, $ 后面接字段名,如按money字段进行分组
count: _.$.addToSet("$user_id"), // $ 后面接字段名,如把user_id原样输出(去重)
},
sortArr: [{ name: "money",type: "desc" }], // 对分组后的结果进行排序
addFields:{
count: _.$.size("$count")
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* max求最大值
* @url template/db_api/pub/max 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.max = await vk.baseDao.max({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* min求最小值
* @url template/db_api/pub/min 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.min = await vk.baseDao.min({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* sample随机获取N条数据
* @url template/db_api/pub/sample 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.list = await vk.baseDao.sample({
dbName:"vk-test",
size:1,
whereJson:{
},
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 查询多条记录
* @url template/db_api/pub/select 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.select({
dbName: "vk-test",
getCount: true,
pageIndex: 1,
pageSize: 10,
whereJson: {
}
});
// 对应的sql:
// select * from vk-test limit 0,100;
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,50 @@
module.exports = {
/**
* 连表查询(仅限两表查询)(VK版本)
* @url template/db_api/pub/select2 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
// 想要两表以上的连接,请使用vk.baseDao.selects
res = await vk.baseDao.selects({
dbName:"uni-id-users",
foreignKey:"_id",
getCount:false,
pageIndex:1,
pageSize:10,
// 主表where条件
whereJson:{
},
// 主表字段显示规则
fieldJson:{token:false, password:false},
// 主表排序规则
sortArr:[{"name":"_id", "type":"desc"}],
// 副表列表
foreignDB:[
{
dbName:"vk-test",
foreignKey:"user_id",
as:"testList",
limit:1,
// 副表where条件
whereJson:{ },
// 副表字段显示规则
fieldJson:{ },
// 副表排序规则
sortArr:[{"name":"money", "type":"desc"}],
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,51 @@
module.exports = {
/**
* 多表查询(支持多张表连接查询)(VK版本)
* @url template/db_api/pub/selects 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
// 演示3表连接
res = await vk.baseDao.selects({
dbName:"uni-id-users",
getCount:false,
pageIndex:1,
pageSize:10,
// 主表where条件
whereJson:{
},
// 主表字段显示规则
fieldJson:{ token:false, password:false },
// 主表排序规则
sortArr:[{ "name":"_id", "type":"desc" }],
// 副表列表
foreignDB:[
{
dbName:"vk-test",
localKey:"_id",
foreignKey:"user_id",
as:"testList",
limit:1
},
{
dbName:"gy-shop",
localKey:"_id",
foreignKey:"user_id",
as:"shopList",
limit:1
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,47 @@
module.exports = {
/**
* 连表查询地理位置就近搜索示例
* @url template/db_api/pub/selects_geo 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
// 演示3表连接
res = await vk.baseDao.selects({
dbName:"vk-test",
getCount:true,
pageIndex:1,
pageSize:10,
// 主表where条件
whereJson:{
location: _.geoNear({
geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区
maxDistance: 4000, // 选填,最大距离,米为单位
minDistance: 0 , // 选填,最小距离,米为单位
distanceMultiplier:1, // 返回时在距离上乘以该数字 1代表米 100 代表厘米 0.001 代表千米
distanceField:"distance", // 输出的每个记录中 distance 即是与给定点的距离
}),
money:_.gt(0)
},
// 副表列表
foreignDB:[
{
dbName:"uni-id-users",
localKey:"user_id",
foreignKey:"_id",
as:"userInfo",
limit:1
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,48 @@
module.exports = {
/**
* 连表查询,并返回第一条数据
* @url template/db_api/pub/selects_getOne 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
// 演示3表连接
res.info = await vk.baseDao.selects({
dbName:"uni-id-users",
getOne:true,
getMain:true,
// 主表where条件
whereJson:{
_id:"001"
},
// 主表字段显示规则
fieldJson:{ token:false, password:false },
// 副表列表
foreignDB:[
{
dbName:"vk-test",
localKey:"_id",
foreignKey:"user_id",
as:"testList",
limit:1
},
{
dbName:"gy-shop",
localKey:"_id",
foreignKey:"user_id",
as:"shopList",
limit:1
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,43 @@
module.exports = {
/**
* 多表查询(支持多张表连接查询)(VK2.0版本)
* @url template/db_api/pub/selects_mode_2 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 此为简化版
* 此版本支持无限张表和主表进行连接
*/
res = await vk.baseDao.selects({
dbName:"opendb-mall-comments",
// 副表列表
foreignDB:[
{
dbName:"opendb-mall-goods",
localKey:"goods_id",
foreignKey:"_id",
as:"goodsInfo",
limit:1
},
{
dbName:"uni-id-users",
localKey:"user_id",
foreignKey:"_id",
as:"userInfo",
limit:1
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,44 @@
module.exports = {
/**
* 多表查询(支持多张表连接查询)(VK3.0版本)
* @url template/db_api/pub/selects_mode_3 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 此为演示竖向无限层连接
*/
res = await vk.baseDao.selects({
dbName:"opendb-mall-comments",
// 副表列表
foreignDB:[
{
dbName:"uni-id-users",
localKey:"user_id",
foreignKey:"_id",
as:"userInfo",
limit:1,
foreignDB:[
{
dbName:"opendb-mall-orders",
localKey:"_id",
foreignKey:"user_id",
as:"orderList",
limit:3,
},
]
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* sum求和
* @url template/db_api/pub/sum 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res.sum = await vk.baseDao.sum({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 对应的sql:
// select sum(money) from vk-test
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 修改数据
* @url template/db_api/pub/update 前端调用的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 { _id = "___" } = data;
res.num = await vk.baseDao.update({
dbName:"vk-test",
whereJson:{
_id:_id,
},
dataJson:{
money:1
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,63 @@
module.exports = {
/**
* 修改数据,并返回修改后的数据
* @url template/db_api/pub/updateAndReturn 前端调用的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 { _id = "___" } = data;
// 非事务版本开始-----------------------------------------------------------
res.info = await vk.baseDao.updateAndReturn({
dbName: "vk-test",
whereJson: {
_id: _id
},
dataJson: {
money: _.inc(1)
},
});
// 非事务版本结束-----------------------------------------------------------
// 事务版本开始-----------------------------------------------------------
/*
const transaction = await vk.baseDao.startTransaction();
try {
res.info = await vk.baseDao.updateAndReturn({
db:transaction,
dbName:"vk-test",
whereJson:{
_id:_id
},
dataJson:{
money:_.inc(1)
},
});
// 提交事物
await transaction.commit();
console.log(`transaction succeeded`);
return res;
}catch (err) {
// 事务回滚
return await vk.baseDao.rollbackTransaction({
db:transaction,
err
});
}
*/
// 事务版本结束-----------------------------------------------------------
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 修改数据,并返回修改后的数据
* @url template/db_api/pub/updateById 前端调用的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 { _id = "___" } = data;
res.info = await vk.baseDao.updateById({
dbName:"vk-test",
id:_id,
dataJson:{
money:1
},
getUpdateData:true
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 添加单条数据
* @url template/db_api/sys/add 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {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 {
user_id,
money,
remark,
} = data;
let dbName = "vk-test";
res.id = await vk.baseDao.add({
dbName,
dataJson:{
user_id,
money,
remark,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 数据删除
* @url template/db_api/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 这里id不传默认设置成"___" 是为了防止因未传_id导致误删所有数据.
let { _id } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "vk-test";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 查询多条记录 分页
* @url template/db_api/sys/getList 前端调用的url参数地址
* data 请求参数 说明
* @params {Number} pageIndex 当前页码
* @params {Number} pageSize 每页显示数量
* @params {Array<Object>} sortRule 排序规则
* @params {object} formData 查询条件数据源
* @params {Array<Object>} columns 查询条件规则
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {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 = "vk-test";
res = await vk.baseDao.getTableData({
dbName,
data
});
return res;
}
}
@@ -0,0 +1,39 @@
module.exports = {
/**
* 修改数据
* @url template/db_api/sys/update 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {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,
user_id,
money,
remark,
} = data;
if(vk.pubfn.isNullOne(_id)){
return { code : -1, msg : '参数错误' };
}
let dbName = "vk-test";
await vk.baseDao.updateById({
dbName,
id:_id,
dataJson:{
user_id,
money,
remark,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,39 @@
'use strict';
module.exports = {
/**
* 图片违规检测示例
* @url template/openapi/qq/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
* 特别注意:目前微信小程序的这个API有1M大小的限制。(此为微信官方限制)
*/
let imgSecCheckRes = await vk.openapi.qq.security.imgSecCheck({
base64
});
if(imgSecCheckRes.code !== 0){
// 未通过检测
return imgSecCheckRes;
}
// 若通过检测,则继续执行自己的业务
// ...
// ...
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,36 @@
'use strict';
module.exports = {
/**
* 文本违规检测示例
* @url template/openapi/qq/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.qq.security.msgSecCheck({
content,
});
if (msgSecCheckRes.code !== 0) {
// 未通过检测
return msgSecCheckRes;
}
res.result = msgSecCheckRes;
// 若通过检测,则继续执行自己的业务
// ...
// ...
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
'use strict';
module.exports = {
/**
* 获取模板列表
* @url template/openapi/weixin/pub/getTemplateList 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.openapi.weixin.request({
method: "get",
url: "wxaapi/newtmpl/gettemplate",
data: {
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,39 @@
'use strict';
module.exports = {
/**
* 图片违规检测示例
* @url template/openapi/weixin/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
* 特别注意:目前微信小程序的这个API有1M大小的限制。(此为微信官方限制)
*/
let imgSecCheckRes = await vk.openapi.weixin.security.imgSecCheck({
base64
});
if(imgSecCheckRes.code !== 0){
// 未通过检测
return imgSecCheckRes;
}
// 若通过检测,则继续执行自己的业务
// ...
// ...
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,48 @@
'use strict';
module.exports = {
/**
* 文本违规检测示例
* @url template/openapi/weixin/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,
version,
scene,
openid,
title,
nickname,
signature,
} = data;
// 实际业务中,content可能是评论的内容等
let msgSecCheckRes = await vk.openapi.weixin.security.msgSecCheck({
content,
version,
scene,
openid,
title,
nickname,
signature,
});
if (msgSecCheckRes.code !== 0) {
// 未通过检测
return msgSecCheckRes;
}
res.result = msgSecCheckRes;
// 若通过检测,则继续执行自己的业务
// ...
// ...
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,45 @@
'use strict';
module.exports = {
/**
* 发送订阅消息
* @url template/openapi/weixin/pub/sendMessage 前端调用的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 { openid } = data;
res = await vk.openapi.weixin.subscribeMessage.send({
touser : openid, // 接收者(用户)的 openid
template_id : "UmINo5I6IcqktIwNt2TVorkU7f4dzd4eyNjfvOiwEC0", // 所需下发的订阅模板id
page : "pages/index/index", // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
data : {
character_string1:{
value:"202008030930001"
},
name2:{
value:"中通快递"
},
character_string3:{
value:"ZT2019928321392931"
},
thing6:{
value:"雪花秀滋盈生人生焕颜精华露"
},
thing8:{
value:"杭州市xxxxxxxxx号"
}
},
miniprogram_state : "formal", // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,59 @@
'use strict';
module.exports = {
/**
* 发送公众号模板消息(touser只能是用户在该公众号下的openid)
* @url template/openapi/weixin/pub/sendTemplateMessage 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.openapi.weixin.h5.templateMessage.send({
touser: "", // 接收者(用户)的 openid(该用户在公众号下的openid)
template_id: "", // 所需下发的订阅模板id
url: "https://www.baidu.com", // 跳转网页时填写(如填了miniprogram参数则忽略url参数)
miniprogram: {
appid: "",
pagepath: "pages/order/order?id=aaa"
},
data: {
"first": {
"value": "您购买的订单已经发货啦,正快马加鞭向您飞奔而去。",
"color": "#173177"
},
"keyword1": {
"value": "D201803111235825",
"color": "#173177"
},
"keyword2": {
"value": "2018-03-11 19:56",
"color": "#173177"
},
"keyword3": {
"value": "顺丰快递",
"color": "#173177"
},
"keyword4": {
"value": "980456952123",
"color": "#173177"
},
"keyword5": {
"value": "王先生 135xxxxxxxx 广东省深圳市龙华区建设东路",
"color": "#173177"
},
"remark": {
"value": "欢迎再次购买!",
"color": "#173177"
}
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,59 @@
'use strict';
module.exports = {
/**
* 发送公众号模板消息(touser可以是小程序下的openid,也可以是公众号下的openid)
* @url template/openapi/weixin/pub/sendTemplateMessage 前端调用的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' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.openapi.weixin.uniformMessage.send({
touser: "", // 接收者(用户)的 openid(可以是小程序下的openid,也可以是公众号下的openid)
template_id: "", // 所需下发的订阅模板id
url: "https://www.baidu.com", // 跳转网页时填写(如填了miniprogram参数则忽略url参数)
miniprogram: {
appid: "",
pagepath: "pages/order/order?id=aaa"
},
data: {
"first": {
"value": "您购买的订单已经发货啦,正快马加鞭向您飞奔而去。",
"color": "#173177"
},
"keyword1": {
"value": "D201803111235825",
"color": "#173177"
},
"keyword2": {
"value": "2018-03-11 19:56",
"color": "#173177"
},
"keyword3": {
"value": "顺丰快递",
"color": "#173177"
},
"keyword4": {
"value": "980456952123",
"color": "#173177"
},
"keyword5": {
"value": "王先生 135xxxxxxxx 广东省深圳市龙华区建设东路",
"color": "#173177"
},
"remark": {
"value": "欢迎再次购买!",
"color": "#173177"
}
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,32 @@
module.exports = {
/**
* 此函数名称
* @url template/test/pub/addition 前端调用的url参数地址
* data 请求参数 说明
* @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数
* (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数)
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : '' };
// 业务逻辑开始-----------------------------------------------------------
// 可写与数据库的交互逻辑等等
let { num1 , num2 } = data;
if(!num1 || !num2){
return {
code : -1,
msg : "参数不能为空!"
}
}
num1 = parseFloat(num1);
num2 = parseFloat(num2);
res.value = parseFloat((num1 + num2).toFixed(2));
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,202 @@
module.exports = {
/**
* 此函数名称
* @url template/test/pub/findGoodsInfo 前端调用的url参数地址
* data 请求参数 说明
* @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数
* (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数)
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : '' };
// 业务逻辑开始-----------------------------------------------------------
// 可写与数据库的交互逻辑等等
let { goods_id } = data;
/**
* 这里本来是需要从数据库中获取的,这里简化一下,直接返回数据了
* 正常业务中,是需要连表查询的,分别是订单表和SKU表 双表连接查询出最终返回给前端的数据
*/
let goodsDB = [
{
"_id":"001",
"name": "iphone11",
"goods_thumb":"https://img14.360buyimg.com/n0/jfs/t1/59022/28/10293/141808/5d78088fEf6e7862d/68836f52ffaaad96.jpg",
"sku_list": [
{
"_id": "001",
"goods_id": "001",
"goods_name": "iphone11",
"image": "https://img14.360buyimg.com/n0/jfs/t1/79668/22/9987/159271/5d780915Ebf9bf3f4/6a1b2703a9ed8737.jpg",
"price": 19800,
"sku_name": "红色,128G,公开版",
"sku_name_arr": ["红色", "128G", "公开版"],
"stock": 100
},
{
"_id": "002",
"goods_id": "001",
"goods_name": "iphone11",
"image": "https://img14.360buyimg.com/n0/jfs/t1/52252/35/10516/124064/5d7808e0E46202391/7100f3733a1c1f00.jpg",
"price": 9800,
"sku_name": "白色,256G,公开版",
"sku_name_arr": ["白色", "256G","公开版"],
"stock": 100
},
{
"_id": "003",
"goods_id": "001",
"goods_name": "iphone11",
"image": "https://img14.360buyimg.com/n0/jfs/t1/79668/22/9987/159271/5d780915Ebf9bf3f4/6a1b2703a9ed8737.jpg",
"price": 19800,
"sku_name": "红色,256G,公开版",
"sku_name_arr": ["红色","256G","公开版"],
"stock": 100
}
],
"spec_list": [
{
"list": [
{
"name": "红色"
},
{
"name": "黑色"
},
{
"name": "白色"
}
],
"name": "颜色"
},
{
"list": [
{
"name": "128G"
},
{
"name": "256G"
}
],
"name": "内存"
},
{
"list": [
{
"name": "公开版"
},
{
"name": "非公开版"
}
],
"name": "版本"
}
]
},
{
"_id":"002",
"name": "迪奥香水",
"goods_thumb":"https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"sku_list": [
{
"_id": "004",
"goods_id": "002",
"goods_name": "迪奥香水",
"image": "https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"price": 19800,
"sku_name": "50ml/瓶",
"sku_name_arr": ["50ml/瓶"],
"stock": 100
},
{
"_id": "005",
"goods_id": "002",
"goods_name": "迪奥香水",
"image": "https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"price": 9800,
"sku_name": "70ml/瓶",
"sku_name_arr": ["70ml/瓶"],
"stock": 100
}
],
"spec_list": [
{
"list": [
{
"name": "20ml/瓶"
},
{
"name": "50ml/瓶"
},
{
"name": "70ml/瓶"
}
],
"name": "规格"
}
]
},
{
"_id":"003",
"name": "迪奥香水",
"goods_thumb":"https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"sku_list": [
{
"_id": "006",
"goods_id": "003",
"goods_name": "迪奥香水",
"image": "https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"price": 19800,
"sku_name": "默认",
"sku_name_arr": ["默认"],
"stock": 100
}
],
"spec_list": [
{
"list": [
{
"name": "默认"
}
],
"name": "默认"
}
]
},
{
"_id":"004",
"name": "迪奥香水",
"goods_thumb":"https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"sku_list": [
{
"_id": "006",
"goods_id": "003",
"goods_name": "迪奥香水",
"image": "https://res.lancome.com.cn/resources/2020/9/11/15998112890781924_920X920.jpg?version=20200917220352530",
"price": 19800,
"sku_name": "默认",
"sku_name_arr": ["默认"],
"stock": 0
}
],
"spec_list": [
{
"list": [
{
"name": "默认"
}
],
"name": "默认"
}
]
}
];
res.goodsInfo = vk.pubfn.getListItem(goodsDB, "_id",goods_id);
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,36 @@
'use strict';
module.exports = {
/**
* 临时数据缓存
* @url template/test/pub/getTemporaryCache 前端调用的url参数地址
* data 请求参数 说明
* @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数
* (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数)
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let { key, value, second, mode } = data;
if(mode == "get"){
res.value = vk.temporaryCache.get(key);
}else if(mode == "set"){
res.value = vk.temporaryCache.set(key, value, second);
}else if(mode == "del"){
res.value = vk.temporaryCache.del(key);
}else if(mode == "clear"){
res.value = vk.temporaryCache.clear();
}else if(mode == "isExpired"){
res.value = vk.temporaryCache.isExpired(key);
}else if(mode == "getAll"){
res.value = vk.temporaryCache.getAll();
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,20 @@
module.exports = {
/**
* 此函数名称
* @url template/test/sys/test 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : '' };
// 业务逻辑开始-----------------------------------------------------------
res.msg = "ok";
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,11 @@
## 云函数示例模板
#### `router/service/template`
#### 此目录一般为插件作者给开发者提供的云函数写法示例,如数据库API的使用等等。
```
.
├── template──────────────────────# 云函数模板
│ └── db_api───────────────────# 数据库API调用示例
│ └── test─────────────────────# 普通云函数调用示例
└─────────────────────────────────
```