user.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package admin
  2. import (
  3. "errors"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/db"
  6. adminParam "zhiyuan/pkg/param/admin"
  7. "zhiyuan/pkg/utils"
  8. "zhiyuan/services/admin"
  9. "zhiyuan/services/form"
  10. )
  11. var Admin models.Admin
  12. func CheckLogin(phone string, password string) (int, error) {
  13. where := map[string]interface{}{
  14. "phone": phone,
  15. "password": utils.MD5(password),
  16. }
  17. where["state"] = 1
  18. admin, err := admin.GetOne(where, nil, nil)
  19. if err != nil || admin == nil {
  20. return 0, errors.New("用户名或密码错误")
  21. }
  22. return admin.ID, nil
  23. }
  24. func Login(form form.WorkLogin) (string, error) {
  25. adminMap := make(map[string]interface{})
  26. if form.LoginType == 1 {
  27. adminMap = map[string]interface{}{
  28. "openid": form.OpenID,
  29. "nickname": form.NickName,
  30. "sex": form.Sex,
  31. "headimgurl": form.HeadImgUrl,
  32. }
  33. if admin_, _ := admin.GetOne(map[string]interface{}{"openid": form.OpenID}, nil, nil); admin_ != nil {
  34. db.Update(Admin.TableName(), map[string]interface{}{"id": admin_.ID}, adminMap)
  35. return admin.UpdateToken(admin_.ID, adminParam.Entry.Work)
  36. }
  37. }
  38. adminID, err := CheckLogin(form.Phone, form.Password)
  39. if err != nil {
  40. return "", errors.New("用户不存在")
  41. }
  42. if form.LoginType == 1 {
  43. db.Update(Admin.TableName(), map[string]interface{}{"id": adminID}, adminMap)
  44. }
  45. return admin.UpdateToken(adminID, adminParam.Entry.Work)
  46. }
  47. func Logout(id int) error {
  48. adminInfo, err := admin.GetInfoByID(id, []string{"id"}, nil)
  49. if err != nil || adminInfo == nil {
  50. return errors.New("invalid access_token")
  51. }
  52. return admin.ClearToken(adminInfo.ID, adminParam.Entry.Work)
  53. }
  54. func UnBindWeixin(id int) error {
  55. adminMap := map[string]interface{}{
  56. "openid": "",
  57. "nickname": "",
  58. "headimgurl": "",
  59. "sex": 0,
  60. }
  61. db.Update(admin.Admin.TableName(), map[string]interface{}{"id": id}, adminMap)
  62. return Logout(id)
  63. }
  64. func Password(id int, form form.Password) error {
  65. if err := admin.Password(id, form); err != nil {
  66. return err
  67. }
  68. return admin.ClearToken(id, adminParam.Entry.Work)
  69. }