Files
jjx-web/uniCloud-tcb/cloudfunctions/router/service/user/pub/loginBySms.js
T
2026-10-08 18:18:21 +08:00

158 lines
6.3 KiB
JavaScript

module.exports = {
/**
* 手机号登陆(手机号+手机验证码)
* @url user/pub/loginBySms 前端调用的url参数地址
* @description 手机号登陆(手机号+手机验证码)
* data 请求参数 说明
* @param {String} mobile 手机号
* @param {String} code 验证码
* @param {String} type 指定操作类型,不传:存在则登录不存在则注册 login:只能登录 register:只能注册
* @param {String} password 密码,当前用户为新注册时生效
* @param {String} inviteCode 邀请人的邀请码,当前用户为新注册时生效
* @param {String} myInviteCode 设置当前注册用户自己的邀请码,当前用户为新注册时生效(不传会自动生成)
* @param {Boolean} needPermission 设置为true时会在checkToken时返回用户权限(permission),如果是在admin端,需传true
* res 返回参数说明
* @param {Number} code 错误码,0表示成功
* @param {String} msg 详细信息
* @param {String} token 登录成功之后返回的token信息
* @param {String} tokenExpired token过期时间
*/
main: async (event) => {
let {data = {}, util, originalParam} = event;
let {uniID, config, pubFun, vk, db, _} = util;
let {uid} = data;
let res = {};
// 业务逻辑开始-----------------------------------------------------------
let {
mobile,
code,
type,
password,
inviteCode,
myInviteCode,
needPermission,
accountType,
company,
person
} = data;
if (vk.pubfn.isNotNull(inviteCode) && inviteCode) {
const inviteUser = await vk.baseDao.findByWhereJson({
dbName: "uni-id-users",
whereJson: {
my_invite_code: inviteCode
}
});
if (!inviteUser) return {code: 1, msg: '邀请码错误,请重新核实'}
}
res = await uniID.loginBySms({
mobile,
code,
type,
password,
inviteCode,
myInviteCode,
needPermission
});
// 修改用户昵称为:手机尾号xxxx用户
if (res.token) {
if (!res.msg) {
res.msg = res.type === "register" ? "注册成功" : "登录成功";
}
// 注册法大大
if (res.type === "register") {
const fadadaRes = await pubFun.fadada('account_register.api', {
open_id: res.uid + 'fdd',
account_type: accountType + '',
})
console.log('fadadaRes: ', {
open_id: res.uid + 'fdd',
account_type: accountType + '',
});
console.log('fadadaRes: ', fadadaRes);
if (fadadaRes.code == 1) {
const oldNum = await vk.baseDao.findById({
dbName: 'jjx-dict',
id: '6587dd3ca09a9be7534ea88b'
})
await vk.baseDao.update({
dbName: "uni-id-users",
whereJson: {
_id: res.uid
},
dataJson: {
fadadaCustomerId: fadadaRes.data,
quoteTimes: 0,
person,
company,
accountType: accountType,
nickname: accountType == 1 ? person.personName : company.companyName,
authStatus: -1,
userLevel: -1,
userGrade: 0,
paidEnsure: 0,
// 累计交易
transactionAmount: 0,
// 剩余询价次数
remainQuoteNum: 0,
// 剩余学堂下载次数
remainArticleDownloadNum: 3,
quoteExpiredAt: null,
inviteNum: 0,
// 签约宝次数
qybNum: 0,
fadadaConfirm: false,
remainOldNum: oldNum.content,
topExpiredAt: null,
factoryStatus: -1,
isSignOnly: data.isSignOnly,
dcloud_appid: ['__UNI__EB80D26', '__UNI__8BFD66E', '__UNI__0F0703D']
}
});
} else {
vk.baseDao.del({
dbName: "uni-id-users",
whereJson: {
_id: res.uid
},
})
}
await vk.baseDao.add({
dbName: "jjx-message",
dataJson: {
uid: res.uid,
title: '恭喜!您已注册成功!',
content: '尊敬的用户,恭喜您已经注册金久信钢铁交易平台,感谢您的支持!',
type: 'reg',
hasRead: false
}
});
} else {
// const user = await vk.baseDao.findById({
// dbName: "uni-id-users",
// id: res.uid
// });
// console.log('accountType', user.accountType, accountType)
// if (parseInt(user.accountType) !== parseInt(accountType)) return {
// code: -1,
// msg: '账号类型不匹配'
// }
}
// 日志服务
const loginLogService = vk.require("service/user/util/login_log");
await loginLogService.add({
type: "login",
login_type: "sms",
user_id: res.uid,
context: originalParam.context
}, util);
}
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}