user.service.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. const connection = require('../sql');
  2. class UserService {
  3. // 用户登录
  4. async findUser(userName, userPwd, openId) {
  5. const statement =
  6. 'SELECT id, open_id as openId, user_name as userName, nick_name as nickName, avatar FROM users WHERE (user_name = ? and user_pwd = ? and parent_id is null) or open_id = ? ;';
  7. const [result] = await connection.execute(statement, [userName, userPwd, openId]);
  8. return result[0];
  9. }
  10. // 子用户登录
  11. async findSubUser(userName, userPwd, openId) {
  12. const statement =
  13. 'SELECT id, open_id as openId, user_name as userName, nick_name as nickName, avatar FROM users WHERE (user_name = ? and user_pwd = ?) or open_id = ? ;';
  14. const [result] = await connection.execute(statement, [userName, userPwd, openId]);
  15. return result[0];
  16. }
  17. // 用户注册
  18. async create(nickName, userName, userPwd, parentId = null) {
  19. const statement = 'INSERT INTO users (nick_name, user_name, user_pwd, parent_id) VALUES (?, ?, ?, ?);';
  20. const [result] = await connection.execute(statement, [nickName, userName, userPwd, parentId]);
  21. return result;
  22. }
  23. // 用户查找
  24. async search(userName) {
  25. const statement = 'select id, user_name as userName from users where user_name = ?;';
  26. const [result] = await connection.execute(statement, [userName]);
  27. return result[0];
  28. }
  29. // 个人信息
  30. async profile(userId) {
  31. const statement = 'select id as userId, user_name as userName, nick_name as nickName, avatar, created_at createdAt from users where id = ?;';
  32. const [result] = await connection.execute(statement, [userId]);
  33. return result[0];
  34. }
  35. // 绑定openId
  36. async bindOpenId({ id, openid, unionid, nickname, headimgurl }) {
  37. let statement = 'UPDATE users SET open_id = ?, union_id = ?, nick_name = ?,avatar=? WHERE id = ?;';
  38. const [result] = await connection.execute(statement, [openid, unionid, nickname, headimgurl, id]);
  39. return result;
  40. }
  41. // 更新用户
  42. async updateUserInfo(id, nickName, avatar) {
  43. const date = new Date();
  44. let statement = 'UPDATE users SET updated_at = ?';
  45. const params = [date];
  46. if (nickName) {
  47. statement += ', nick_name = ?';
  48. params.push(nickName);
  49. }
  50. if (avatar) {
  51. statement += ', avatar = ?';
  52. params.push(avatar);
  53. }
  54. statement += ' WHERE id = ?';
  55. params.push(id);
  56. const [result] = await connection.execute(statement, params);
  57. return result;
  58. }
  59. // 重置密码
  60. async resetPwd(userName, userPwd) {
  61. const statement = 'UPDATE users SET user_pwd = ? WHERE user_name = ?;';
  62. const [result] = await connection.execute(statement, [userPwd, userName]);
  63. return result;
  64. }
  65. // 验证旧密码
  66. async verifyOldPwd(userName, oldPwd) {
  67. const statement = 'SELECT id FROM users WHERE user_name = ? and user_pwd = ?;';
  68. const [result] = await connection.execute(statement, [userName, oldPwd]);
  69. return result[0];
  70. }
  71. // 用户注销
  72. async deleteUser(userId, userName) {
  73. const statement = 'DELETE FROM users WHERE id = ? and user_name = ?';
  74. const [result] = await connection.execute(statement, [userId, userName]);
  75. return result;
  76. }
  77. // 查询子用户列
  78. async getSubUsersCount(userId, keyword) {
  79. const statement = `SELECT count(id) FROM users WHERE parent_id = ? and (user_name like COALESCE(CONCAT('%',?,'%'), user_name) OR ? IS NULL) `;
  80. const [result] = await connection.execute(statement, [userId, keyword || null, keyword || null]);
  81. return result[0];
  82. }
  83. async getSubUsersList(userId, pageNum, pageSize, keyword) {
  84. const offset = (+pageNum - 1) * pageSize + '';
  85. const limit = pageSize;
  86. const statement = `SELECT
  87. id, user_name as userName, nick_name as nickName, avatar, created_at as createdAt
  88. FROM users
  89. WHERE
  90. parent_id = ? and (user_name like COALESCE(CONCAT('%',?,'%'), user_name) OR ? IS NULL)
  91. ORDER BY updated_at DESC LIMIT ?,?;`;
  92. const [result] = await connection.execute(statement, [userId, keyword || null, keyword || null, offset, limit]);
  93. return result;
  94. }
  95. async deleteSubUser(id, parentId) {
  96. const statement = 'DELETE FROM users WHERE id = ? and parent_id = ?';
  97. const [result] = await connection.execute(statement, [id, parentId]);
  98. return result;
  99. }
  100. //addbywanghao sso 20250512
  101. async findUserSso(userName) {
  102. const statement =
  103. 'SELECT id, open_id as openId, user_name as userName, nick_name as nickName, avatar FROM users WHERE user_name = ? and parent_id is null ;';
  104. const [result] = await connection.execute(statement, [userName]);
  105. return result[0];
  106. }
  107. }
  108. module.exports = new UserService();