user.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package services
  2. import (
  3. "encoding/base64"
  4. "github.com/gogf/gf/util/guid"
  5. "sparrow/pkg/generator"
  6. "sparrow/pkg/models"
  7. "sparrow/pkg/utils"
  8. "sparrow/services/knowoapi/model"
  9. )
  10. // UserService 用户业务接口
  11. type UserService interface {
  12. // 登陆
  13. Login(*models.LoginRequest) (bool, *models.User, error)
  14. // 注册
  15. Register(*models.Reqrequest) (*models.User, error)
  16. // 修改密码,其中密码接收的是已经base64过的字符串
  17. ModifyPassword(uint, string, string) (bool, error)
  18. // check name exsits
  19. CheckUserName(string) (bool, error)
  20. // check phone number exsits
  21. CheckPhone(string) (bool, error)
  22. // check email exsits
  23. CheckEmail(string) (bool, error)
  24. // get role info
  25. GetRole(int) (models.Role, error)
  26. }
  27. type userservice struct {
  28. model *model.All
  29. keyGen *generator.KeyGenerator
  30. }
  31. // NewUserService ``
  32. func NewUserService(all *model.All, keyGen *generator.KeyGenerator) UserService {
  33. return userservice{
  34. model: all,
  35. keyGen: keyGen,
  36. }
  37. }
  38. func (a userservice) Login(user *models.LoginRequest) (bool, *models.User, error) {
  39. user.Password = utils.Md5(user.Password + model.SignedString)
  40. return a.model.User.LoginCheck(user.UserName, user.Password)
  41. }
  42. func (a userservice) Register(user *models.Reqrequest) (*models.User, error) {
  43. _u := &models.User{}
  44. _u.RecordId = guid.S()
  45. _u.UserKey, _ = a.keyGen.GenRandomKey(_u.RecordId)
  46. _u.UserPass = utils.Md5(user.PassWord + model.SignedString)
  47. _u.UserName = user.UserName
  48. _u.Phone = user.Phone
  49. _u.Email = user.Email
  50. _u.UserRoleID = 1 //默认普通用户
  51. vedor := &models.Vendor{
  52. VendorName: user.VendorName,
  53. }
  54. vedor.RecordId = guid.S()
  55. vedor.VendorKey, _ = a.keyGen.GenRandomKey(vedor.RecordId)
  56. err := a.model.Vendor.Create(vedor)
  57. if err != nil {
  58. return nil, err
  59. }
  60. _u.VendorID = vedor.RecordId
  61. return _u, a.model.User.Create(_u)
  62. }
  63. func (a userservice) ModifyPassword(userid uint, new, old string) (bool, error) {
  64. obytes, _ := base64.StdEncoding.DecodeString(old)
  65. nbytes, _ := base64.StdEncoding.DecodeString(new)
  66. old = utils.Md5(string(obytes) + model.SignedString)
  67. new = utils.Md5(string(nbytes) + model.SignedString)
  68. return a.model.User.UpdatePassword(userid, new, old)
  69. }
  70. func (a userservice) CheckUserName(name string) (bool, error) {
  71. return a.model.User.CheckUserName(name)
  72. }
  73. func (a userservice) CheckPhone(name string) (bool, error) {
  74. return a.model.User.CheckPhone(name)
  75. }
  76. func (a userservice) CheckEmail(name string) (bool, error) {
  77. return a.model.User.CheckEmail(name)
  78. }
  79. func (a userservice) GetRole(roleid int) (models.Role, error) {
  80. return a.model.Role.QueryRole(roleid)
  81. }