userService.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package service
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "gorm.io/gorm"
  5. "iot_manager_service/app/user/dao"
  6. "iot_manager_service/util/cache"
  7. "iot_manager_service/util/common"
  8. "iot_manager_service/util/md5"
  9. "iot_manager_service/util/rsa"
  10. "iot_manager_service/util/token"
  11. "strconv"
  12. )
  13. // 用户管理服务
  14. var SysUserService = new(userService)
  15. type userService struct{}
  16. func (s *userService) Login(username string, pwd string) *common.Errors {
  17. userdao := &dao.SysUser{}
  18. USER, err := userdao.LoginFindUserName(username)
  19. if err != nil {
  20. if err == gorm.ErrRecordNotFound {
  21. return common.ParamsInvalidResponse("登录失败,账号不存在", nil)
  22. }
  23. return common.FailResponse(err.Error(), nil)
  24. }
  25. if USER.Enable != 1 {
  26. return common.ParamsInvalidResponse("登录失败,用户被禁止登录", nil)
  27. }
  28. //解密前端密文
  29. r := rsa.RSA{}
  30. decrypt := r.Decrypt(pwd)
  31. //解密数据库密文
  32. ok := md5.BcryptCheck(decrypt, USER.Password)
  33. if !ok {
  34. return common.ParamsInvalidResponse("密码错误", nil)
  35. }
  36. //登录成功则生成token
  37. USERID := strconv.Itoa(USER.ID)
  38. accessToken, _ := token.JwtClaims.CreateJwtToken(USERID, USER.Username, USER.UUID, 1)
  39. refreshToken, _ := token.JwtClaims.CreateJwtToken(USERID, USER.Username, USER.UUID, 24*7)
  40. cache.SetNowSysUser(USERID, USER)
  41. tokens := make(map[string]interface{})
  42. tokens["accessToken"] = accessToken
  43. tokens["refreshToken"] = refreshToken
  44. //TODO:到时候记得修改服务器域名
  45. urlWebSocket := "ws://localhost:8085/notice/webSocket?userID=" + USERID
  46. return common.SuccessResponse("登录成功", gin.H{"token": tokens, "websocket": urlWebSocket})
  47. }
  48. func (s *userService) GetPublicKey() *common.Errors {
  49. r := rsa.RSA{}
  50. publicKey := r.ReturnPublicKey()
  51. return common.SuccessResponse("获取公钥成功", gin.H{"publicKey": publicKey})
  52. }
  53. func (s *userService) GetDeptSysUsers(deptIDs []int) *common.Errors {
  54. deptdao := &dao.Dept{}
  55. depts, _ := deptdao.GetDepts(deptIDs)
  56. userdao := &dao.SysUser{}
  57. users, _ := userdao.GetSysUsers()
  58. deptSysUsersMap := make(map[int][]dao.SysUser)
  59. for _, user := range users {
  60. deptSysUsersMap[user.DeptId] = append(deptSysUsersMap[user.DeptId], user)
  61. }
  62. var deptSysUsers []dao.Dept
  63. for _, dept := range depts {
  64. users := deptSysUsersMap[dept.ID]
  65. deptSysUsers = append(deptSysUsers, dao.Dept{
  66. ID: dept.ID,
  67. DeptName: dept.DeptName,
  68. SysUsers: users,
  69. })
  70. }
  71. return common.SuccessResponse("获取成功", gin.H{"deptSysUsers": deptSysUsers})
  72. }