userService.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package service
  2. import (
  3. "bytes"
  4. "encoding/base64"
  5. "github.com/gin-gonic/gin"
  6. "github.com/google/uuid"
  7. "gorm.io/gorm"
  8. "iot_manager_service/app/user/dao"
  9. "iot_manager_service/util/cache"
  10. "iot_manager_service/util/common"
  11. "iot_manager_service/util/rsa"
  12. "iot_manager_service/util/token"
  13. "strconv"
  14. )
  15. // 用户管理服务
  16. var UserService = new(userService)
  17. type userService struct{}
  18. func (s *userService) Login(acc string, pwd string) *common.Errors {
  19. userdao := &dao.User{}
  20. USER, err := userdao.LoginFindAccount(acc)
  21. if err != nil {
  22. if err == gorm.ErrRecordNotFound {
  23. return common.ParamsInvalidResponse("很抱歉,由于您的账号未完成注册或已被禁用,暂时无法使用。", nil)
  24. }
  25. return common.FailResponse(err.Error(), nil)
  26. }
  27. //加密
  28. //encryption := rsa.Encryption([]byte("123456"))
  29. //base64.StdEncoding.EncodeToString(encryption))
  30. //解密前端密文
  31. a, _ := base64.StdEncoding.DecodeString(pwd)
  32. client := rsa.Decryption(a)
  33. //解密数据库密文
  34. b, _ := base64.StdEncoding.DecodeString(USER.Password)
  35. mysql := rsa.Decryption(b)
  36. if !bytes.Equal(client, mysql) {
  37. return common.ParamsInvalidResponse("密码错误", err)
  38. }
  39. //登录成功则生成token
  40. UUID := uuid.New().String()
  41. USERID := strconv.Itoa(USER.ID)
  42. accessToken, _ := token.JwtClaims.CreateJwtToken(USERID, USER.UserName, UUID, 1)
  43. refreshToken, _ := token.JwtClaims.CreateJwtToken(USERID, USER.UserName, UUID, 24*7)
  44. cache.SetNowUser(USERID, UUID, USER)
  45. tokens := make(map[string]interface{})
  46. tokens["accessToken"] = accessToken
  47. tokens["refreshToken"] = refreshToken
  48. //TODO:到时候记得修改服务器域名
  49. urlWebSocket := "ws://localhost:8085/notice/websocket?userID=" + USERID
  50. return common.SuccessResponse("登录成功", gin.H{"token": tokens, "websocket": urlWebSocket})
  51. }
  52. func (s *userService) GetPublicKey() *common.Errors {
  53. pub, err := rsa.GetPubKey()
  54. if err != nil {
  55. return common.FailResponse(err.Error(), nil)
  56. }
  57. return common.SuccessResponse("获取公钥成功", gin.H{"publicKey": pub})
  58. }
  59. func (s *userService) GetDeptUsers(deptIDs []int) *common.Errors {
  60. deptdao := &dao.Dept{}
  61. depts, _ := deptdao.GetDepts(deptIDs)
  62. userdao := &dao.User{}
  63. users, _ := userdao.GetUsers()
  64. deptUsersMap := make(map[int][]dao.User)
  65. for _, user := range users {
  66. deptUsersMap[user.DeptId] = append(deptUsersMap[user.DeptId], user)
  67. }
  68. var deptUsers []dao.Dept
  69. for _, dept := range depts {
  70. users := deptUsersMap[dept.ID]
  71. deptUsers = append(deptUsers, dao.Dept{
  72. ID: dept.ID,
  73. DeptName: dept.DeptName,
  74. Users: users,
  75. })
  76. }
  77. //for i, dept := range depts {
  78. // users1, _ := userdao.GetUsers1(dept.ID)
  79. // depts[i].Users = users1
  80. //}
  81. return common.SuccessResponse("获取成功", gin.H{"deptUsers": deptUsers})
  82. }