user.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_mfyx_gzh/models"
  6. "hongze/hongze_mfyx_gzh/utils"
  7. )
  8. var ERR_NO_USER_RECORD = errors.New("用户关系没有入库")
  9. var ERR_USER_NOT_BIND = errors.New("用户没有绑定")
  10. //通过用户 关系表记录 和 用户记录 格式化返回 用户数据
  11. func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.CygxMfyxGzhUserRecord) {
  12. wxUser.OpenId = userRecord.OpenId
  13. wxUser.UnionId = userRecord.UnionId
  14. wxUser.NickName = userRecord.NickName
  15. //wxUser.RealName = userRecord.RealName
  16. //wxUser.BindAccount = userRecord.BindAccount
  17. wxUser.Headimgurl = userRecord.Headimgurl
  18. //wxUser.SessionKey = userRecord.SessionKey
  19. }
  20. func GetWxUserItemByOpenId(unionId string) (item *models.WxUserItem, err error) {
  21. //通过openid获取用户关联信息
  22. item = new(models.WxUserItem)
  23. item.UnionId = unionId // 先写入 unionId
  24. userRecord, userRecordErr := models.GetUserRecordByUnionId(unionId)
  25. if userRecordErr != nil && userRecordErr.Error() != utils.ErrNoRow() {
  26. err = userRecordErr
  27. return
  28. }
  29. //如果 userRecord 表中的手机号不为空,那么就通过手机号来获取详情
  30. if userRecord != nil {
  31. if userRecord.BindAccount != "" {
  32. user, userErr := models.GetWxUserItemByUserMobile(userRecord.BindAccount)
  33. if userErr != nil && userErr.Error() != utils.ErrNoRow() {
  34. err = userErr
  35. return
  36. }
  37. if user != nil {
  38. item = user
  39. }
  40. }
  41. }
  42. return
  43. }
  44. // 通过openid获取用户信息
  45. func GetWxUserItemByOpenId2(openid string) (item *models.WxUserItem, err error) {
  46. //通过openid获取用户关联信息
  47. userRecord, userRecordErr := models.GetCygxUserRecordByOpenid(openid)
  48. fmt.Println(userRecordErr)
  49. //fmt.Println("userRecordErr", userRecordErr)
  50. if userRecordErr != nil {
  51. if userRecordErr.Error() == utils.ErrNoRow() {
  52. err = ERR_NO_USER_RECORD
  53. return
  54. } else {
  55. err = userRecordErr
  56. return
  57. }
  58. }
  59. //该openid在系统中没有关联关系
  60. if userRecord == nil {
  61. err = ERR_NO_USER_RECORD
  62. return
  63. }
  64. //该openid没有绑定用户
  65. if userRecord.CygxUserId <= 0 {
  66. err = ERR_USER_NOT_BIND
  67. item = new(models.WxUserItem)
  68. //格式化返回用户数据
  69. formatWxUserAndUserRecord(item, userRecord)
  70. return
  71. }
  72. fmt.Println("userRecord.UserId ", userRecord.CygxUserId)
  73. //获取用户信息
  74. item, wxUserErr := models.GetWxUserItemByUserId(userRecord.CygxUserId)
  75. //fmt.Println("wxUserErr", wxUserErr)
  76. if wxUserErr != nil {
  77. err = wxUserErr
  78. //如果是找不到数据,那么可能是该用户被删除了,但是user_record没有删除对应的关系
  79. if wxUserErr.Error() == utils.ErrNoRow() {
  80. //用户被删除了,但是user_record没有删除对应的关系,那么去解除绑定
  81. userUnbindErr := models.UnBindUserRecordByOpenid(openid)
  82. if userUnbindErr != nil {
  83. err = userUnbindErr
  84. return
  85. }
  86. //返回状态为 用户未绑定 逻辑代码
  87. err = ERR_USER_NOT_BIND
  88. item = new(models.WxUserItem)
  89. //格式化返回用户数据
  90. formatWxUserAndUserRecord(item, userRecord)
  91. return
  92. }
  93. return
  94. }
  95. if item.RealName == "" {
  96. item.RealName = userRecord.RealName
  97. }
  98. //格式化返回用户数据
  99. formatWxUserAndUserRecord(item, userRecord)
  100. return
  101. }