/** * 用户相关表操作 */ const dbName_user = "uni-id-users"; // 用户 var dao = {}; var util = {}; // 初始化 dao.init = function(obj){ util = obj; } /** * 获取用户信息 * 调用示例 * await vk.daoCenter.userDao.findById(user_id); * data 请求参数说明 * @params {String} user_id 用户ID */ dao.findById = async (user_id) => { let { vk , db, _ } = util; let res = {}; // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.findById({ dbName:dbName_user, id:user_id, fieldJson:{ token:false, password:false }, }); // 数据库操作结束----------------------------------------------------------- return res; }; /** * 获取用户信息,根据 * _id * username * mobile * email * wx_openid.app-plus * wx_openid.mp-weixin * wx_unionid * ali_openid * my_invite_code * 调用示例 await vk.daoCenter.userDao.findByUserInfo({ mobile:mobile }); * data 请求参数说明 * @params {Object} userInfo 用户信息 */ dao.findByUserInfo = async (userInfo) => { let { vk , db, _ } = util; let res; // 数据库操作开始----------------------------------------------------------- let whereJson = {}; let list = [ "_id", "username", "mobile", "email", "wx_openid.app-plus", "wx_openid.mp-weixin", "wx_unionid", "ali_openid", "my_invite_code" ]; let orArr = []; for(let i=0; i 0){ whereJson = _.or(orArr); res = await vk.baseDao.findByWhereJson({ dbName:dbName_user, fieldJson:{ token:false, password:false }, whereJson:whereJson }); } // 数据库操作结束----------------------------------------------------------- return res; }; /** * 根据ID数组获取用户列表 最多支持500个 * 调用示例 * await vk.daoCenter.userDao.listByIds(userIdArr); * data 请求参数说明 * @params {Array} userIdArr 用户ID数组 */ dao.listByIds = async (userIdArr) => { let { vk , db, _ } = util; let res = {}; let selectRes = await vk.baseDao.select({ dbName:dbName_user, pageIndex:1, pageSize:500, fieldJson:{ token:false, password:false }, whereJson:{ _id:_.in(userIdArr) }, }); res = selectRes.rows; // 数据库操作结束----------------------------------------------------------- return res; }; /** * 根据手机号直接注册账号并登录 * 若手机号已存在,则直接登录 * @params {Object} data 参数 * mobile 手机号 必填 * password 初始密码 * inviteCode 邀请人的邀请码 * myInviteCode 设置当前注册用户自己的邀请码 * needPermission 设置为true时会在checkToken时返回用户权限(permission),建议在管理控制台中使用 * 调用示例 await vk.daoCenter.userDao.registerUserByMobile({ mobile, }); */ dao.registerUserByMobile = async (data) => { let { vk , db, _, uniID } = util; let res = {}; let { mobile, password, inviteCode, myInviteCode, needPermission } = data; // 数据库操作开始----------------------------------------------------------- let code = vk.pubfn.random(6); // 设置验证码 await uniID.setVerifyCode({ mobile, code, expiresIn:60, type:"login" }); // 若手机号不存在,则注册并登录。存在,则直接登录。 res = await uniID.loginBySms({ mobile, code, password, inviteCode, myInviteCode, needPermission }); if(res.uid && vk.pubfn.isNull(res.userInfo)){ res.userInfo = await vk.daoCenter.userDao.findById(res.uid); } // 数据库操作结束----------------------------------------------------------- return res; }; module.exports = dao;