servicer.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package servicer
  2. import (
  3. "errors"
  4. adminParam "zhiyuan/pkg/param/admin"
  5. "zhiyuan/pkg/utils"
  6. "zhiyuan/services/admin"
  7. "zhiyuan/services/form"
  8. )
  9. func CheckLogin(phone string, password string) (int, error) {
  10. where := map[string]interface{}{
  11. "phone": phone,
  12. "password": utils.MD5(password),
  13. }
  14. where["state"] = 1
  15. adminInfo, err := admin.GetOne(where, nil, nil)
  16. if err != nil || adminInfo == nil {
  17. return 0, errors.New("用户名或密码错误")
  18. }
  19. if roleInfo, _ := admin.GetOneRaw(map[string]string{"where": "id={{admin_id}} AND FIND_IN_SET({{role_id}}, role_ids)"}, map[string]interface{}{"role_id": adminParam.ServicerRoleId, "admin_id": adminInfo.ID}, nil); roleInfo == nil {
  20. return 0, errors.New("账号权限有误")
  21. }
  22. return adminInfo.ID, nil
  23. }
  24. func Login(phone string, password string) (string, error) {
  25. adminID, err := CheckLogin(phone, password)
  26. if err != nil {
  27. return "", err
  28. }
  29. return admin.UpdateToken(adminID, adminParam.Entry.Servicer)
  30. }
  31. func Logout(id int) error {
  32. adminInfo, err := admin.GetInfoByID(id, []string{"id"}, nil)
  33. if err != nil || adminInfo == nil {
  34. return errors.New("invalid access_token")
  35. }
  36. return admin.ClearToken(adminInfo.ID, adminParam.Entry.Servicer)
  37. }
  38. func Password(id int, form form.Password) error {
  39. if err := admin.Password(id, form); err != nil {
  40. return err
  41. }
  42. return admin.ClearToken(id, adminParam.Entry.Servicer)
  43. }