1107
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 用户接受邀请
|
||||
* @url user/kh/acceptInvite 前端调用的url参数地址
|
||||
* @description 此接口用于在注册之后再填写邀请码的场景,多数情况下不会用到此接口而是在注册时填写邀请码
|
||||
* data 请求参数 说明
|
||||
* @param {String} inviteCode 邀请人的邀请码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, util, originalParam } = event;
|
||||
let { uniID } = util;
|
||||
let { uid, inviteCode = "" } = data;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
res = await uniID.acceptInvite({
|
||||
uid:uid,
|
||||
inviteCode:inviteCode
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 添加文件上传记录
|
||||
* @url user/kh/addUploadRecord 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} url 文件外网访问url
|
||||
* @param {String} name 文件名
|
||||
* @param {Number} size 文件大小
|
||||
* @param {String} file_id 文件id
|
||||
* @param {String} provider 供应商
|
||||
* @param {String} category_id 分类ID
|
||||
* @param {Number} width 图片\视频的宽度
|
||||
* @param {Number} height 图片\视频的高度
|
||||
* @param {Number} orientation 图片\视频的旋转方向
|
||||
* @param {Number} duration 视频的总时长
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, config, pubFun, vk, db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code: 0, msg: "" };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
url,
|
||||
name: original_name,
|
||||
size,
|
||||
provider,
|
||||
file_id,
|
||||
category_id,
|
||||
width,
|
||||
height,
|
||||
orientation,
|
||||
duration
|
||||
} = data;
|
||||
let type = "other";
|
||||
|
||||
if (vk.pubfn.test(url, "image")) {
|
||||
type = "image";
|
||||
} else if (vk.pubfn.test(url, "video")) {
|
||||
type = "video";
|
||||
} else if (vk.pubfn.test(url, "audio")) {
|
||||
type = "video"; // 这里audio也分类为video
|
||||
}
|
||||
|
||||
if (vk.pubfn.isNull(original_name)) original_name = url;
|
||||
let dataJson = {
|
||||
user_id: uid,
|
||||
sort: 0,
|
||||
status: 0,
|
||||
type,
|
||||
url,
|
||||
display_name: original_name,
|
||||
original_name,
|
||||
size,
|
||||
file_id,
|
||||
provider,
|
||||
width,
|
||||
height,
|
||||
orientation,
|
||||
duration
|
||||
};
|
||||
if (vk.pubfn.isNotNull(category_id)) {
|
||||
dataJson["category_id"] = category_id;
|
||||
}
|
||||
await vk.baseDao.add({
|
||||
dbName: "vk-files",
|
||||
dataJson
|
||||
});
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 绑定支付宝
|
||||
* @url user/kh/bindAlipay 前端调用的url参数地址
|
||||
* @description 将当前登录用户绑定支付宝
|
||||
* data 请求参数 说明
|
||||
* @param {String} code 支付宝登录返回的code
|
||||
* @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 绑定
|
||||
res = await uniID.bindAlipay(event.data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 绑定邮箱
|
||||
* @url user/kh/bindEmail 前端调用的url参数地址
|
||||
* @description 将当前登录用户绑定邮箱
|
||||
* data 请求参数 说明
|
||||
* @param {String} email 用户邮箱
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, util } = event;
|
||||
let { uniID } = util;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
if (!data.code) return { code: -1, msg: "验证码不能为空!" }
|
||||
// 绑定邮箱
|
||||
res = await uniID.bindEmail(event.data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 绑定手机号
|
||||
* @url user/kh/bindMobile 前端调用的url参数地址
|
||||
* @description 将当前登录用户绑定手机号
|
||||
* data 请求参数 说明
|
||||
* @param {String} mobile 用户手机号
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, util } = event;
|
||||
let { uniID } = util;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
if (!data.code) return { code: -1, msg: "验证码不能为空!" }
|
||||
// 绑定手机号
|
||||
res = await uniID.bindMobile(data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 换绑新的邮箱
|
||||
* @url user/kh/bindNewEmail 前端调用的url参数地址
|
||||
* @description 将当前登录用户换绑新的邮箱
|
||||
* data 请求参数 说明
|
||||
* @param {String} oldEmail 旧邮箱码
|
||||
* @param {String} oldEmailCode 旧邮箱收到的验证码
|
||||
* @param {String} email 新邮箱码
|
||||
* @param {String} code 新邮箱收到的验证码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, util } = event;
|
||||
let { uniID } = util;
|
||||
let { uid } = data;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
oldEmail, // 旧邮箱码
|
||||
oldEmailCode, // 旧邮箱收到的验证码
|
||||
email, // 新邮箱码
|
||||
code, // 新邮箱收到的验证码
|
||||
} = data;
|
||||
if (!code || !oldEmailCode) return { code: -1, msg: "验证码不能为空!" };
|
||||
if (!email || !oldEmail) return { code: -1, msg: "邮箱不能为空!" };
|
||||
// 先检查下旧邮箱码和验证码是否正确
|
||||
let verifyCodeRes;
|
||||
verifyCodeRes = await uniID.verifyCode({
|
||||
email: oldEmail,
|
||||
code: oldEmailCode,
|
||||
type: 'unbind'
|
||||
});
|
||||
if (verifyCodeRes.code !== 0) {
|
||||
verifyCodeRes.msg = `旧邮箱${verifyCodeRes.msg}`
|
||||
return verifyCodeRes;
|
||||
}
|
||||
// 先检查下新邮箱码和验证码是否正确
|
||||
verifyCodeRes = await uniID.verifyCode({
|
||||
email,
|
||||
code: code,
|
||||
type: 'bind'
|
||||
});
|
||||
if (verifyCodeRes.code !== 0) {
|
||||
verifyCodeRes.msg = `新邮箱${verifyCodeRes.msg}`
|
||||
return verifyCodeRes;
|
||||
}
|
||||
// 解绑邮箱
|
||||
let unbindEmailRes = await uniID.unbindEmail({
|
||||
uid,
|
||||
email: oldEmail
|
||||
});
|
||||
if (unbindEmailRes.code !== 0) {
|
||||
return unbindEmailRes;
|
||||
}
|
||||
await uniID.setVerifyCode({ code, email, type: "bind" });
|
||||
// 绑定新邮箱
|
||||
res = await uniID.bindEmail({
|
||||
uid,
|
||||
email,
|
||||
code
|
||||
});
|
||||
if (res.code !== 0) {
|
||||
return res;
|
||||
}
|
||||
res.msg = "换绑邮箱成功!";
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 换绑新的手机号
|
||||
* @url user/kh/bindNewMobile 前端调用的url参数地址
|
||||
* @description 将当前登录用户换绑新的手机号
|
||||
* data 请求参数 说明
|
||||
* @param {String} oldMobile 旧手机号码
|
||||
* @param {String} oldMobileCode 旧手机收到的验证码
|
||||
* @param {String} mobile 新手机号码
|
||||
* @param {String} code 新手机收到的验证码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, util } = event;
|
||||
let { uniID } = util;
|
||||
let { uid } = data;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
oldMobile, // 旧手机号码
|
||||
oldMobileCode, // 旧手机收到的验证码
|
||||
mobile, // 新手机号码
|
||||
code, // 新手机收到的验证码
|
||||
} = data;
|
||||
if (!code || !oldMobileCode) return { code: -1, msg: "验证码不能为空!" };
|
||||
if (!mobile || !oldMobile) return { code: -1, msg: "手机号不能为空!" };
|
||||
// 先检查下旧手机号码和验证码是否正确
|
||||
let verifyCodeRes;
|
||||
verifyCodeRes = await uniID.verifyCode({
|
||||
mobile: oldMobile,
|
||||
code: oldMobileCode,
|
||||
type: 'unbind'
|
||||
});
|
||||
if (verifyCodeRes.code !== 0) {
|
||||
verifyCodeRes.msg = `旧手机${verifyCodeRes.msg}`
|
||||
return verifyCodeRes;
|
||||
}
|
||||
// 先检查下新手机号码和验证码是否正确
|
||||
verifyCodeRes = await uniID.verifyCode({
|
||||
mobile,
|
||||
code: code,
|
||||
type: 'bind'
|
||||
});
|
||||
if (verifyCodeRes.code !== 0) {
|
||||
verifyCodeRes.msg = `新手机${verifyCodeRes.msg}`
|
||||
return verifyCodeRes;
|
||||
}
|
||||
// 解绑手机号
|
||||
let unbindMobileRes = await uniID.unbindMobile({
|
||||
uid,
|
||||
mobile: oldMobile
|
||||
});
|
||||
if (unbindMobileRes.code !== 0) {
|
||||
return unbindMobileRes;
|
||||
}
|
||||
// 绑定新手机号
|
||||
res = await uniID.bindMobile({
|
||||
uid,
|
||||
mobile
|
||||
});
|
||||
if (res.code !== 0) {
|
||||
return res;
|
||||
}
|
||||
res.msg = "换绑手机号成功!";
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 绑定QQ
|
||||
* @url user/kh/bindQQ 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} code QQ登录返回的code
|
||||
* @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 绑定
|
||||
res = await uniID.bindQQ(event.data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 绑定微信
|
||||
* @url user/kh/bindWeixin 前端调用的url参数地址
|
||||
* @description 将当前登录用户绑定微信
|
||||
* data 请求参数 说明
|
||||
* @param {String} code 微信登录返回的code
|
||||
* @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 绑定
|
||||
res = await uniID.bindWeixin(event.data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取支付宝小程序码
|
||||
* @url user/kh/getAlipayMiniCode 前端调用的url参数地址
|
||||
* data 请求参数
|
||||
* @param {String} page 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
|
||||
* @param {String} scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
|
||||
*/
|
||||
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_blue; // 兼容其他小程序的返回字段
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取接受邀请的用户清单
|
||||
* @url user/kh/getInvitedUser 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {Number} pageIndex 当前页码
|
||||
* @param {Number} pageSize 每页显示数量
|
||||
* @param {Array<Object>} sortRule 排序规则
|
||||
* @param {object} formData 查询条件数据源
|
||||
* @param {Array<Object>} columns 查询条件规则
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 可写与数据库的交互逻辑等等
|
||||
let dbName = "uni-id-users";
|
||||
let index = 0;
|
||||
res = await vk.baseDao.getTableData({
|
||||
dbName,
|
||||
data,
|
||||
fieldJson:{ token:false, password:false },
|
||||
whereJson:{
|
||||
['inviter_uid.' + index]:uid
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取我拥有的菜单列表
|
||||
* @url user/kh/getMenu 前端调用的url参数地址
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
role = [],
|
||||
} = userInfo;
|
||||
// 根据角色获取菜单
|
||||
res = await vk.system.sysDao.listMenuByRole({
|
||||
role,
|
||||
treeProps:{
|
||||
level: 3
|
||||
}
|
||||
});
|
||||
res.userInfo = userInfo;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取我的用户信息
|
||||
* @url user/kh/getMyUserInfo 前端调用的url参数地址
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
res.userInfo = userInfo;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取qq小程序码
|
||||
* @url user/kh/getQQMiniCode 前端调用的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.qq.acode.getMiniCode(data);
|
||||
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,57 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取小程序码
|
||||
* @url user/kh/getWeixinMPqrcode 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} scene 自定义参数最大32个可见字符 只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~
|
||||
* @param {String} page 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
|
||||
* @param {boolean} check_path 默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用。
|
||||
* @param {String} env_version 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
|
||||
* @param {number} width 二维码的宽度,单位 px,最小 280px,最大 1280px
|
||||
* @param {boolean} auto_color 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
|
||||
* @param {Object} line_color auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
|
||||
* @param {boolean} is_hyaline 是否需要透明底色,为 true 时,生成透明底色的小程序
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {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 { my_invite_code } = userInfo;
|
||||
if (vk.pubfn.isNull(data.scene) && my_invite_code) {
|
||||
// 若scene为空,则自动带上用户邀请码
|
||||
data.scene = `code=${my_invite_code}`;
|
||||
}
|
||||
if (!userInfo.role || userInfo.role.indexOf("admin") === -1) {
|
||||
data.check_path = true; // 防止超限, 为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用。
|
||||
}
|
||||
res = await vk.openapi.weixin.wxacode.getUnlimited(data);
|
||||
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
|
||||
}
|
||||
};
|
||||
}
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取小程序scheme码,适用于短信、邮件、外部网页等拉起小程序的业务场景。通过该接口,可以选择生成到期失效和永久有效的小程序码,目前仅针对国内非个人主体的小程序开放
|
||||
* @url user/kh/getWeixinMPscheme 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} path 小程序页面路径
|
||||
* @param {String} query 小程序页面参数
|
||||
* @param {String} env_version 默认值"release"。要打开的小程序版本。正式版为 "release",体验版为"trial",开发版为"develop",仅在微信外打开时生效
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {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: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
path,
|
||||
query,
|
||||
env_version
|
||||
} = data;
|
||||
// 超过180天有10万个限制,故这里强制设为90天
|
||||
res = await vk.openapi.weixin.urlscheme.generate({
|
||||
...data,
|
||||
// 跳转到的目标小程序信息。
|
||||
jump_wxa: {
|
||||
path, // 小程序页面路径
|
||||
query, // 小程序页面参数
|
||||
env_version
|
||||
},
|
||||
is_expire: true,
|
||||
expire_type: 1,
|
||||
expire_interval: 90, // 90天后失效
|
||||
});
|
||||
return res;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取小程序 URL Link,适用于短信、邮件、网页、微信内等拉起小程序的业务场景。通过该接口,可以选择生成到期失效和永久有效的小程序链接,有数量限制,目前仅针对国内非个人主体的小程序开放
|
||||
* @url user/kh/getWeixinMPurl 前端调用的url参数地址
|
||||
* data 请求参数 说明
|
||||
* @param {String} path 小程序页面路径
|
||||
* @param {String} query 小程序页面参数
|
||||
* @param {String} env_version 默认值"release"。要打开的小程序版本。正式版为 "release",体验版为"trial",开发版为"develop",仅在微信外打开时生效
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {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: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let {
|
||||
path,
|
||||
query,
|
||||
env_version
|
||||
} = data;
|
||||
// 超过180天有10万个限制,故这里强制设为90天
|
||||
res = await vk.openapi.weixin.urllink.generate({
|
||||
...data,
|
||||
path,
|
||||
query,
|
||||
env_version,
|
||||
is_expire: true,
|
||||
expire_type: 1,
|
||||
expire_interval: 90, // 90天后失效
|
||||
});
|
||||
return res;
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 重置密码
|
||||
* @url user/kh/resetPwd 前端调用的url参数地址
|
||||
* @description 重置当前登录用户的密码为123456
|
||||
* data 请求参数 说明
|
||||
* @param {String} uid 当前登录用户id(可信任,仅kh目录下的函数有此值)
|
||||
* @param {String} password 重置后的密码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { util, data={} } = event;
|
||||
let { uniID } = util;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 注意:虽然uid是从data中获取的,但无论前端uid传什么,最终uid都是当前登录用户的_id,因此不会出现A把B的密码改了的情况。
|
||||
let { uid, password= '123456' } = data;
|
||||
res = await uniID.resetPwd({ uid, password });
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 设置头像
|
||||
* @url user/kh/setAvatar 前端调用的url参数地址
|
||||
* @description 设置当前登录用户的头像
|
||||
* data 请求参数 说明
|
||||
* @param {String} avatar 用户头像URL
|
||||
* @param {Boolean} deleteOldFile 是否同时删除云储存内的头像文件
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util, originalParam } = event;
|
||||
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { avatar, deleteOldFile } = data;
|
||||
// 设置头像
|
||||
res = await uniID.setAvatar(event.data);
|
||||
// 判断是否需要删除旧头像的云储存文件
|
||||
if(res.code ===0 && deleteOldFile && userInfo.avatar){
|
||||
try {
|
||||
await uniCloud.deleteFile({
|
||||
fileList: [
|
||||
userInfo.avatar
|
||||
]
|
||||
});
|
||||
}catch(err){
|
||||
res.deleteFileErr = err;
|
||||
}
|
||||
}
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 设置用户邀请码(自动生成)
|
||||
* @url user/kh/setUserInviteCode 前端调用的url参数地址
|
||||
* @description 针对未生成邀请码的用户使用此方法生成邀请码(自动生成)
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
* @param {String} myInviteCode 最终设置的邀请码
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {},userInfo, util, originalParam } = event;
|
||||
let { uniID } = util;
|
||||
let { uid } = data;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 判断下如果已经生成,则不再重新生成
|
||||
if(userInfo.my_invite_code){
|
||||
res = {
|
||||
"code": 0,
|
||||
"msg": "无需重复设置",
|
||||
"myInviteCode": userInfo.my_invite_code
|
||||
}
|
||||
}else{
|
||||
res = await uniID.setUserInviteCode({
|
||||
uid:uid
|
||||
});
|
||||
}
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 解绑支付宝
|
||||
* @url user/kh/unbindAlipay 前端调用的url参数地址
|
||||
* @description 当前登录用户解绑支付宝
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username)){
|
||||
return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑支付宝!' };
|
||||
}
|
||||
// 解绑
|
||||
res = await uniID.unbindAlipay(uid);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 解绑邮箱
|
||||
* @url user/kh/unbindEmail 前端调用的url参数地址
|
||||
* @description 当前登录用户解绑邮箱
|
||||
* data 请求参数 说明
|
||||
* @param {String} email 邮箱
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk } = util;
|
||||
let res = { code : 0, msg : '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username, userInfo.wx_openid, userInfo.ali_openid, userInfo.qq_openid)){
|
||||
return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑邮箱!' };
|
||||
}
|
||||
// 解绑
|
||||
res = await uniID.unbindEmail(data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 解绑邮箱
|
||||
* @url user/kh/unbindMobile 前端调用的url参数地址
|
||||
* @description 当前登录用户解绑手机号
|
||||
* data 请求参数 说明
|
||||
* @param {String} mobile 手机号
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk } = util;
|
||||
let res = { code: 0, msg: '' };
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
if (vk.pubfn.isNullAll(userInfo.username, userInfo.wx_openid, userInfo.ali_openid, userInfo.qq_openid)) {
|
||||
return { code: -1, msg: '为了您的账号安全,请绑定微信或设置用户名后再解绑手机号!' };
|
||||
}
|
||||
// 解绑
|
||||
res = await uniID.unbindMobile(data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 解绑QQ
|
||||
* @url user/kh/unbindQQ 前端调用的url参数地址
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username)){
|
||||
return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑QQ!' };
|
||||
}
|
||||
// 解绑
|
||||
res = await uniID.unbindQQ(uid);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 解绑微信
|
||||
* @url user/kh/unbindWeixin 前端调用的url参数地址
|
||||
* @description 当前登录用户解绑微信
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID, vk } = util;
|
||||
let { uid } = data;
|
||||
let res = { code : 0, msg : '' };
|
||||
if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username)){
|
||||
return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑微信!' };
|
||||
}
|
||||
// 解绑
|
||||
res = await uniID.unbindWeixin(uid);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改登录密码
|
||||
* @url user/kh/updatePwd 前端调用的url参数地址
|
||||
* @description 修改当前登录用户的登录密码
|
||||
* data 请求参数 说明
|
||||
* @param {String} oldPassword 旧密码
|
||||
* @param {String} newPassword 新密码
|
||||
* @param {String} passwordConfirmation 确认新密码
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { uniID } = util;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
if (userInfo.disable_update_password) {
|
||||
return { code: -1, msg: "该账号不支持修改密码。" };
|
||||
}
|
||||
res = await uniID.updatePwd(data);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* 修改用户信息
|
||||
* @url user/kh/updateUser 前端调用的url参数地址
|
||||
* @description 设置当前登录用户的昵称等用户信息
|
||||
* data 请求参数 说明
|
||||
* @param {String} nickname 用户的昵称
|
||||
* @param {String} avatar 用户的头像
|
||||
* @param {Number} gender 用户的性别
|
||||
* res 返回参数说明
|
||||
* @param {Number} code 错误码,0表示成功
|
||||
* @param {String} msg 详细信息
|
||||
*/
|
||||
main: async (event) => {
|
||||
let { data = {}, util, originalParam } = event;
|
||||
let { uniID, vk } = util;
|
||||
let { uid } = data;
|
||||
let res = {};
|
||||
// 业务逻辑开始-----------------------------------------------------------
|
||||
// 允许修改的字段列表
|
||||
let updateKeys = ["nickname", "avatar", "gender", "social_info"];
|
||||
let dataJson = {};
|
||||
for (let i in updateKeys) {
|
||||
let key = updateKeys[i];
|
||||
if (vk.pubfn.isNotNull(data[key])) dataJson[key] = data[key];
|
||||
}
|
||||
dataJson.uid = uid;
|
||||
res = await uniID.updateUser(dataJson);
|
||||
// 业务逻辑结束-----------------------------------------------------------
|
||||
return res;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user