userlogic.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // 模块模型操作接口-用户
  2. // 秒寻科技
  3. // zt 2024-01-04
  4. package userlogic
  5. import (
  6. "errors"
  7. "ipsomc/core/dao/redis/redisapi"
  8. "ipsomc/core/dao/redis/redismodel"
  9. "ipsomc/core/user/userapi"
  10. "ipsomc/core/user/usermodel"
  11. "ipsomc/util"
  12. "strconv"
  13. "time"
  14. )
  15. type UserLgc struct {
  16. userApi userapi.UserApi
  17. redisApi redisapi.RedisApi
  18. }
  19. // 用户登录
  20. func (obj *UserLgc) OperatorLogin(dataModel *usermodel.Operator, respModel *usermodel.RspOperator) error {
  21. redisModel := new(redismodel.RedisOperator)
  22. //判断用户名和密码是否正确
  23. if err := obj.userApi.CheckOperatorRegister(dataModel); err != nil {
  24. return errors.New("账号或密码错误")
  25. }
  26. //生成用户token
  27. uuid := util.GenerateUuid()
  28. token := "ptoken" + strconv.Itoa(int(dataModel.ID)) + "-" + uuid
  29. //缓存用户信息
  30. redisModel.CompanyID = dataModel.CompanyID
  31. redisModel.CompanyName = dataModel.CompanyName
  32. redisModel.ProjectID = dataModel.ProjectID
  33. redisModel.UserTypeID = int(dataModel.UserTypeID)
  34. redisModel.UserID = dataModel.ID
  35. redisModel.UserName = dataModel.UserName
  36. redisModel.Nickname = dataModel.Nickname
  37. redisModel.Token = token
  38. redisModel.TokenTime = time.Now().Format("2006-01-02 15:16:17")
  39. //生产token过期时间
  40. myViper := util.GetViper()
  41. expireTime := myViper.GetInt("token.pc_expire")
  42. if expireTime <= 0 {
  43. expireTime = 10 //10分钟
  44. }
  45. //以用户的token为键,将用户登录资料保存到redis中
  46. if err := obj.redisApi.SetModelData(token, redisModel, uint16(expireTime)); err != nil {
  47. return err
  48. }
  49. //组织返回数据
  50. respModel.CompanyID = dataModel.CompanyID
  51. respModel.CompanyName = dataModel.CompanyName
  52. respModel.ProjectID = dataModel.ProjectID
  53. respModel.ID = dataModel.ID
  54. respModel.UserTypeID = dataModel.UserTypeID
  55. respModel.Nickname = dataModel.Nickname
  56. respModel.Sex = dataModel.Sex
  57. respModel.Token = token
  58. return nil
  59. }
  60. // 获得用户访问权限,包括页面访问权限和按钮访问权限
  61. func (obj *UserLgc) GetOperatorPermissionLgc(dataModel *usermodel.Operator) (usermodel.RspOperatorPermission, error) {
  62. var permission usermodel.RspOperatorPermission
  63. //获得用户角色列表
  64. roleList, err1 := obj.userApi.GetOperatorRoleList(dataModel)
  65. if err1 != nil {
  66. return permission, err1
  67. }
  68. //获得用户权限列表
  69. permission, err2 := obj.userApi.GetOperatorPermissionList(roleList)
  70. if err2 != nil {
  71. return permission, err2
  72. }
  73. return permission, nil
  74. }