user.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package worker
  2. import (
  3. "errors"
  4. "zhiyuan/pkg/db"
  5. "zhiyuan/pkg/utils"
  6. "zhiyuan/services/form"
  7. )
  8. func CheckLogin(phone string, password string) (int, error) {
  9. where := map[string]interface{}{}
  10. where["phone"] = phone
  11. where["password"] = utils.MD5(password)
  12. where["state"] = 1
  13. worker, err := GetOne(where, nil, nil)
  14. if err != nil || worker == nil {
  15. return 0, errors.New("用户名或密码错误")
  16. }
  17. if worker.State != 1 {
  18. return 0, errors.New("用户未审核")
  19. }
  20. return worker.ID, nil
  21. }
  22. func Login(form form.WorkLogin) (string, error) {
  23. workerMap := make(map[string]interface{})
  24. if form.LoginType == 1 {
  25. workerMap = map[string]interface{}{
  26. "`openid`": form.OpenID,
  27. "`nickname`": form.NickName,
  28. "`sex`": form.Sex,
  29. "`headimgurl`": form.HeadImgUrl,
  30. }
  31. if worker, _ := GetOne(map[string]interface{}{"openid": form.OpenID}, nil, nil); worker != nil {
  32. db.Update(Worker.TableName(), map[string]interface{}{"id": worker.ID}, workerMap)
  33. return UpdateToken(worker.ID)
  34. }
  35. }
  36. workerID, err := CheckLogin(form.Phone, form.Password)
  37. if err != nil {
  38. return "", errors.New("用户不存在")
  39. }
  40. if form.LoginType == 1 {
  41. db.Update(Worker.TableName(), map[string]interface{}{"id": workerID}, workerMap)
  42. }
  43. return UpdateToken(workerID)
  44. }
  45. func Logout(id int) error {
  46. worker, err := GetInfoByID(id, []string{"id"}, nil)
  47. if err != nil || worker == nil {
  48. return errors.New("invalid access_token")
  49. }
  50. return ClearToken(worker.ID)
  51. }
  52. func UnBindWeixin(id int) error {
  53. workerMap := map[string]interface{}{
  54. "`openid`": "",
  55. "`nickname`": "",
  56. "`headimgurl`": "",
  57. "`sex`": 0,
  58. }
  59. db.Update(Worker.TableName(), map[string]interface{}{"id": id}, workerMap)
  60. return Logout(id)
  61. }
  62. func Password(id int, form form.Password) error {
  63. workerInfo, err := GetInfoByID(id, []string{"id", "password"}, nil)
  64. if err != nil || workerInfo == nil {
  65. return errors.New("登录状态有误")
  66. }
  67. if form.NewPassword != form.NewPasswordRepeat {
  68. return errors.New("两次输入的新密码不一致")
  69. }
  70. if workerInfo.Password != utils.MD5(form.OldPassword) {
  71. return errors.New("原密码有误")
  72. }
  73. db.Update(Worker.TableName(), map[string]interface{}{"id": id}, map[string]interface{}{"password": utils.MD5(form.NewPassword)})
  74. ClearToken(id)
  75. return nil
  76. }