personal.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. * @desc:xxxx功能描述
  3. * @company:云南奇讯科技有限公司
  4. * @Author: yixiaohu<yxh669@qq.com>
  5. * @Date: 2022/11/3 9:55
  6. */
  7. package personal
  8. import (
  9. "context"
  10. "github.com/gogf/gf/v2/database/gdb"
  11. "github.com/gogf/gf/v2/frame/g"
  12. "github.com/gogf/gf/v2/util/grand"
  13. "github.com/tiger1103/gfast/v3/api/v1/system"
  14. "github.com/tiger1103/gfast/v3/internal/app/system/dao"
  15. "github.com/tiger1103/gfast/v3/internal/app/system/model"
  16. "github.com/tiger1103/gfast/v3/internal/app/system/model/do"
  17. "github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
  18. service "github.com/tiger1103/gfast/v3/internal/app/system/service"
  19. "github.com/tiger1103/gfast/v3/library/libUtils"
  20. "github.com/tiger1103/gfast/v3/library/liberr"
  21. )
  22. func init() {
  23. service.RegisterPersonal(New())
  24. }
  25. type sPersonal struct {
  26. }
  27. func New() *sPersonal {
  28. return &sPersonal{}
  29. }
  30. func (s *sPersonal) GetPersonalInfo(ctx context.Context, req *system.PersonalInfoReq) (res *system.PersonalInfoRes, err error) {
  31. res = new(system.PersonalInfoRes)
  32. userId := service.Context().GetUserId(ctx)
  33. res.User, err = service.SysUser().GetUserInfoById(ctx, userId)
  34. var dept *entity.SysDept
  35. dept, err = service.SysDept().GetByDeptId(ctx, res.User.DeptId)
  36. res.DeptName = dept.DeptName
  37. allRoles, err := service.SysRole().GetRoleList(ctx)
  38. roles, err := service.SysUser().GetAdminRole(ctx, userId, allRoles)
  39. name := make([]string, len(roles))
  40. roleIds := make([]uint, len(roles))
  41. for k, v := range roles {
  42. name[k] = v.Name
  43. roleIds[k] = v.Id
  44. }
  45. res.Roles = name
  46. if err != nil {
  47. return
  48. }
  49. return
  50. }
  51. func (s *sPersonal) EditPersonal(ctx context.Context, req *system.PersonalEditReq) (user *model.LoginUserRes, err error) {
  52. userId := service.Context().GetUserId(ctx)
  53. err = service.SysUser().UserNameOrMobileExists(ctx, "", req.Mobile, int64(userId))
  54. if err != nil {
  55. return
  56. }
  57. err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
  58. err = g.Try(ctx, func(ctx context.Context) {
  59. _, err = dao.SysUser.Ctx(ctx).TX(tx).WherePri(userId).Update(do.SysUser{
  60. Mobile: req.Mobile,
  61. UserNickname: req.Nickname,
  62. Remark: req.Remark,
  63. Sex: req.Sex,
  64. UserEmail: req.UserEmail,
  65. Describe: req.Describe,
  66. Avatar: req.Avatar,
  67. })
  68. liberr.ErrIsNil(ctx, err, "修改用户信息失败")
  69. user, err = service.SysUser().GetUserById(ctx, userId)
  70. liberr.ErrIsNil(ctx, err)
  71. })
  72. return err
  73. })
  74. return
  75. }
  76. func (s *sPersonal) ResetPwdPersonal(ctx context.Context, req *system.PersonalResetPwdReq) (res *system.PersonalResetPwdRes, err error) {
  77. userId := service.Context().GetUserId(ctx)
  78. salt := grand.S(10)
  79. password := libUtils.EncryptPassword(req.Password, salt)
  80. err = g.Try(ctx, func(ctx context.Context) {
  81. _, err = dao.SysUser.Ctx(ctx).WherePri(userId).Update(g.Map{
  82. dao.SysUser.Columns().UserSalt: salt,
  83. dao.SysUser.Columns().UserPassword: password,
  84. })
  85. liberr.ErrIsNil(ctx, err, "重置用户密码失败")
  86. })
  87. return
  88. }