From ce25badf61f6da9826e5523a1c1a6735e6bf46ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?VK=E4=BA=91=E6=A1=8C=E9=9D=A2?= <370725567@qq.com> Date: Fri, 21 Apr 2023 15:03:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=A8userDao=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../router/dao/modules/userDao.js | 398 ++++++++++++++++-- 1 file changed, 352 insertions(+), 46 deletions(-) diff --git a/uniCloud-aliyun/cloudfunctions/router/dao/modules/userDao.js b/uniCloud-aliyun/cloudfunctions/router/dao/modules/userDao.js index 45d45d0..41de981 100644 --- a/uniCloud-aliyun/cloudfunctions/router/dao/modules/userDao.js +++ b/uniCloud-aliyun/cloudfunctions/router/dao/modules/userDao.js @@ -1,12 +1,12 @@ -/** - * 用户相关表操作 - */ -const dbName_user = "uni-id-users"; // 用户 +// 涉及的表名 +const dbName = { + user: "uni-id-users", // 用户 +}; var dao = {}; var util = {}; // 初始化 -dao.init = function(obj){ +dao.init = function(obj) { util = obj; } /** @@ -14,21 +14,42 @@ dao.init = function(obj){ * 调用示例 * await vk.daoCenter.userDao.findById(user_id); * data 请求参数说明 - * @params {String} user_id 用户ID + * @param {String} user_id 用户ID */ dao.findById = async (user_id) => { - let { vk , db, _ } = util; + let { vk, db, _ } = util; let res = {}; // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.findById({ - dbName:dbName_user, - id:user_id, - fieldJson:{ token:false, password:false }, + dbName: dbName.user, + id: user_id, + fieldJson: { token: false, password: false }, }); // 数据库操作结束----------------------------------------------------------- return res; }; +/** + * 查 - 根据whereJson获取单条记录 + * @param {Object} whereJson 条件 + * @param {Object} fieldJson 字段显示规则 + * 调用示例 +let userInfo = await vk.daoCenter.userDao.findByWhereJson({ + +}); + */ +dao.findByWhereJson = async (whereJson, fieldJson={ token: false, password: false }) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.findByWhereJson({ + dbName: dbName.user, + whereJson, + fieldJson + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; /** * 根据邀请码获取用户信息 @@ -40,7 +61,7 @@ dao.findByInviteCode = async (invite_code) => { let res = {}; // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.findByWhereJson({ - dbName: dbName_user, + dbName: dbName.user, whereJson: { my_invite_code: invite_code }, @@ -50,8 +71,110 @@ dao.findByInviteCode = async (invite_code) => { return res; }; + /** - * 改 + * 增 - 添加一条记录 + * @param {Object} dataJson 添加的数据 + * 调用示例 +await vk.daoCenter.userDao.add({ + +}); +或 + * 调用示例 +await vk.daoCenter.userDao.add({ + db: transaction, + dataJson: { + + } +}); + */ +dao.add = async (obj) => { + let { vk, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + if (obj.db && obj.dataJson) { + // 支持事务 + res = await vk.baseDao.add({ + ...obj, + cancelAddTime: true, // 因为user表使用了register_date作为创建时间 + dbName: dbName.user, + }); + } else { + // 不支持事务 + res = await vk.baseDao.add({ + dbName: dbName.user, + cancelAddTime: true, // 因为user表使用了register_date作为创建时间 + dataJson: obj + }); + } + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 增 - 添加多条记录 + * @param {Object} dataJson 添加的数据 + * 调用示例 +await vk.daoCenter.userDao.adds(dataArr); + */ +dao.adds = async (dataArr) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.adds({ + dbName: dbName.user, + cancelAddTime: true, // 因为user表使用了register_date作为创建时间 + dataJson: dataArr + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + + +/** + * 删 - 删除多条记录 + * @param {Object} whereJson 条件 + * 调用示例 +await vk.daoCenter.userDao.del({ + +}); + */ +dao.del = async (whereJson) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.del({ + dbName: dbName.user, + whereJson + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 删 - 据ID删除单条数据 + * @param {String} _id + * 调用示例 +await vk.daoCenter.userDao.deleteById(_id); +或 +await vk.daoCenter.userDao.deleteById(_id, transaction); + */ +dao.deleteById = async (_id, db) => { + let { vk, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.deleteById({ + db, + dbName: dbName.user, + id: _id + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + + +/** + * 改 - 批量修改 * @param {Object} whereJson 条件 * @param {Object} dataJson 修改的数据 * 调用示例 @@ -70,7 +193,7 @@ dao.update = async (obj = {}) => { // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.update({ ...obj, - dbName: dbName_user + dbName: dbName.user }); // 数据库操作结束----------------------------------------------------------- return res; @@ -78,7 +201,7 @@ dao.update = async (obj = {}) => { /** - * 改 + * 改 - 根据id修改 * @param {Object} whereJson 条件 * @param {Object} dataJson 修改的数据 * 调用示例 @@ -95,7 +218,7 @@ dao.updateById = async (obj = {}) => { // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.updateById({ ...obj, - dbName: dbName_user + dbName: dbName.user }); // 数据库操作结束----------------------------------------------------------- return res; @@ -122,7 +245,7 @@ dao.updateAndReturn = async (obj = {}) => { // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.updateAndReturn({ ...obj, - dbName: dbName_user + dbName: dbName.user }); // 数据库操作结束----------------------------------------------------------- return res; @@ -139,7 +262,7 @@ dao.count = async (whereJson) => { let res = {}; // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.count({ - dbName: dbName_user, + dbName: dbName.user, whereJson }); // 数据库操作结束----------------------------------------------------------- @@ -147,10 +270,170 @@ dao.count = async (whereJson) => { }; +/** + * 查 - 求和 + * @param {String} fieldName 需要求和的字段名 + * @param {Object} whereJson 筛选条件 + * 调用示例 +let userSum = await vk.daoCenter.userDao.sum({ + fieldName: "", + whereJson: { + + } +}); + */ +dao.sum = async (obj) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.sum({ + ...obj, + dbName: dbName.user, + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 查 - 求最大值 + * @param {String} fieldName 需要求最大值的字段名 + * @param {Object} whereJson 筛选条件 + * 调用示例 +let userMax = await vk.daoCenter.userDao.max({ + fieldName: "", + whereJson: { + + } +}); + */ +dao.max = async (obj) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.max({ + ...obj, + dbName: dbName.user, + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 查 - 求最小值 + * @param {String} fieldName 需要求最小值的字段名 + * @param {Object} whereJson 筛选条件 + * 调用示例 +let userMin = await vk.daoCenter.userDao.min({ + fieldName: "", + whereJson: { + + } +}); + */ +dao.min = async (obj) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.min({ + ...obj, + dbName: dbName.user, + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 查 - 求最平均值 + * @param {String} fieldName 需要求最平均值的字段名 + * @param {Object} whereJson 筛选条件 + * 调用示例 +let userAvg = await vk.daoCenter.userDao.avg({ + fieldName: "", + whereJson: { + + } +}); + */ +dao.avg = async (obj) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.avg({ + ...obj, + dbName: dbName.user, + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + /** * 查 - 获取数据列表 * 调用示例 -res = await vk.daoCenter.userDao.getTableData({ data }); +let userList = await vk.daoCenter.userDao.select({ + pageIndex:1, + pageSize:20, + getMain:false, + whereJson:{ + + }, + fieldJson:{}, + sortArr:[{ "name":"_id", "type":"desc" }], +}); + */ +dao.select = async (obj = {}) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.select({ + ...obj, + dbName: dbName.user + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 查 - 获取数据列表 + * 调用示例 +let userList = await vk.daoCenter.userDao.selects({ + pageIndex:1, + pageSize:20, + getMain:false, + whereJson:{ + + }, + fieldJson:{}, + sortArr:[{ "name":"_id", "type":"desc" }], + // 副表列表 + foreignDB:[ + { + dbName:"副表表名", + localKey:"主表外键名", + foreignKey:"副表外键名", + as:"副表as字段", + limit:1 + } + ] +}); + */ +dao.selects = async (obj = {}) => { + let { vk, db, _ } = util; + let res = {}; + // 数据库操作开始----------------------------------------------------------- + res = await vk.baseDao.selects({ + ...obj, + dbName: dbName.user + }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + +/** + * 查 - 获取数据列表 + * 调用示例 +res = await vk.daoCenter.userDao.getTableData({ + data +}); */ dao.getTableData = async (obj = {}) => { let { vk, db, _ } = util; @@ -158,7 +441,7 @@ dao.getTableData = async (obj = {}) => { // 数据库操作开始----------------------------------------------------------- res = await vk.baseDao.getTableData({ ...obj, - dbName: dbName_user + dbName: dbName.user }); // 数据库操作结束----------------------------------------------------------- return res; @@ -166,7 +449,7 @@ dao.getTableData = async (obj = {}) => { /** - * 获取用户信息,根据 + * 获取用户信息(旧版) * _id * username * mobile @@ -181,10 +464,10 @@ dao.getTableData = async (obj = {}) => { mobile:mobile }); * data 请求参数说明 - * @params {Object} userInfo 用户信息 + * @param {Object} userInfo 用户信息 */ dao.findByUserInfo = async (userInfo) => { - let { vk , db, _ } = util; + let { vk, db, _ } = util; let res; // 数据库操作开始----------------------------------------------------------- let whereJson = {}; @@ -200,20 +483,20 @@ dao.findByUserInfo = async (userInfo) => { "my_invite_code" ]; let orArr = []; - for(let i=0; i 0){ + if (orArr.length > 0) { whereJson = _.or(orArr); res = await vk.baseDao.findByWhereJson({ - dbName:dbName_user, - fieldJson:{ token:false, password:false }, - whereJson:whereJson + dbName: dbName.user, + fieldJson: { token: false, password: false }, + whereJson: whereJson }); } // 数据库操作结束----------------------------------------------------------- @@ -224,28 +507,27 @@ dao.findByUserInfo = async (userInfo) => { * 调用示例 * await vk.daoCenter.userDao.listByIds(userIdArr); * data 请求参数说明 - * @params {Array} userIdArr 用户ID数组 + * @param {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) + let { vk, db, _ } = util; + let res = await vk.baseDao.select({ + dbName: dbName.user, + pageIndex: 1, + pageSize: 500, + getMain: true, + fieldJson: { token: false, password: false }, + whereJson: { + _id: _.in(userIdArr) }, }); - res = selectRes.rows; // 数据库操作结束----------------------------------------------------------- return res; }; /** * 根据手机号直接注册账号并登录 * 若手机号已存在,则直接登录 - * @params {Object} data 参数 + * @param {Object} data 参数 * mobile 手机号 必填 * password 初始密码 * inviteCode 邀请人的邀请码 @@ -257,7 +539,7 @@ dao.listByIds = async (userIdArr) => { }); */ dao.registerUserByMobile = async (data) => { - let { vk , db, _, uniID } = util; + let { vk, db, _, uniID } = util; let res = {}; let { mobile, @@ -272,8 +554,8 @@ dao.registerUserByMobile = async (data) => { await uniID.setVerifyCode({ mobile, code, - expiresIn:60, - type:"login" + expiresIn: 60, + type: "login" }); // 若手机号不存在,则注册并登录。存在,则直接登录。 res = await uniID.loginBySms({ @@ -284,11 +566,35 @@ dao.registerUserByMobile = async (data) => { myInviteCode, needPermission }); - if(res.uid && vk.pubfn.isNull(res.userInfo)){ + if (res.uid && vk.pubfn.isNull(res.userInfo)) { res.userInfo = await vk.daoCenter.userDao.findById(res.uid); } // 数据库操作结束----------------------------------------------------------- return res; }; +/** + * 重置用户密码 + * data 请求参数说明 + * @param {String} uid 用户ID + * @param {String} password 需要重置的密码 + * 调用示例 +await vk.daoCenter.userDao.resetPwd({ + uid: uid, + password: "123456" +}); + */ +dao.resetPwd = async (data) => { + let { vk, db, _, uniID } = util; + let res = {}; + let { + uid, + password + } = data; + // 数据库操作开始----------------------------------------------------------- + res = await uniID.resetPwd({ uid, password }); + // 数据库操作结束----------------------------------------------------------- + return res; +}; + module.exports = dao; -- GitLab