user.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_cygxzs/models"
  6. "hongze/hongze_cygxzs/utils"
  7. )
  8. var ERR_NO_USER_RECORD = errors.New("用户关系没有入库")
  9. var ERR_USER_NOT_BIND = errors.New("用户没有绑定")
  10. //通过openid获取用户信息
  11. func GetWxUserItemByOpenId(openid string) (item *models.WxUserItem, err error) {
  12. //通过openid获取用户关联信息
  13. userRecord, userRecordErr := models.GetUserRecordByOpenId(openid)
  14. fmt.Println("userRecordErr", userRecordErr)
  15. if userRecordErr != nil {
  16. if userRecordErr.Error() == utils.ErrNoRow() {
  17. err = ERR_NO_USER_RECORD
  18. return
  19. } else {
  20. err = userRecordErr
  21. return
  22. }
  23. }
  24. //该openid在系统中没有关联关系
  25. if userRecord == nil {
  26. err = ERR_NO_USER_RECORD
  27. return
  28. }
  29. //该openid没有绑定用户
  30. if userRecord.UserId <= 0 {
  31. err = ERR_USER_NOT_BIND
  32. item = new(models.WxUserItem)
  33. //格式化返回用户数据
  34. formatWxUserAndUserRecord(item, userRecord)
  35. return
  36. }
  37. //获取用户信息
  38. item, wxUserErr := models.GetWxUserItemByUserId(userRecord.UserId)
  39. fmt.Println("wxUserErr", wxUserErr)
  40. if wxUserErr != nil {
  41. err = wxUserErr
  42. //如果是找不到数据,那么可能是该用户被删除了,但是user_record没有删除对应的关系
  43. if wxUserErr.Error() == utils.ErrNoRow() {
  44. //用户被删除了,但是user_record没有删除对应的关系,那么去解除绑定
  45. userUnbindErr := models.UnBindUserRecordByOpenid(openid)
  46. if userUnbindErr != nil {
  47. err = userUnbindErr
  48. return
  49. }
  50. //返回状态为 用户未绑定 逻辑代码
  51. err = ERR_USER_NOT_BIND
  52. item = new(models.WxUserItem)
  53. //格式化返回用户数据
  54. formatWxUserAndUserRecord(item, userRecord)
  55. return
  56. }
  57. return
  58. }
  59. if item.RealName == "" {
  60. item.RealName = userRecord.RealName
  61. }
  62. //格式化返回用户数据
  63. formatWxUserAndUserRecord(item, userRecord)
  64. return
  65. }
  66. //通过用户 关系表记录 和 用户记录 格式化返回 用户数据
  67. func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.UserRecord) {
  68. wxUser.OpenId = userRecord.OpenId
  69. wxUser.UnionId = userRecord.UnionId
  70. wxUser.NickName = userRecord.NickName
  71. //wxUser.RealName = userRecord.RealName
  72. //wxUser.BindAccount = userRecord.BindAccount
  73. wxUser.Headimgurl = userRecord.Headimgurl
  74. wxUser.SessionKey = userRecord.SessionKey
  75. }