user.service.js 4.2 KB

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