This commit is contained in:
2023-11-07 17:15:33 +08:00
commit fe37e2e1df
418 changed files with 53012 additions and 0 deletions
@@ -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;
}
}