user_record.go 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "hongze/hongze_cygx/utils"
  5. "time"
  6. )
  7. type UserRecord struct {
  8. UserRecordId int `orm:"column(user_record_id);pk"`
  9. OpenId string `description:"用户openid,最大长度:32"`
  10. UnionId string `description:"用户unionid,最大长度:64"`
  11. Subscribe int `description:"是否关注"`
  12. NickName string `descritpion:"用户昵称,最大长度:32"`
  13. RealName string `descritpion:"用户实际名称,最大长度:32"`
  14. BindAccount string `descritpion:"绑定时的账号,最大长度:128"`
  15. Sex int `descritpion:"普通用户性别,1为男性,2为女性"`
  16. Province string `description:"普通用户个人资料填写的省份,最大长度:30"`
  17. City string `description:"普通用户个人资料填写的城市,最大长度:30"`
  18. Country string `description:"国家,如中国为CN,最大长度:30"`
  19. Headimgurl string `description:"用户第三方(微信)头像,最大长度:512"`
  20. CreateTime time.Time `description:"创建时间,关系添加时间、用户授权时间"`
  21. CreatePlatform int `description:"注册平台,1:日度点评公众号,2:管理后台,3:pc端网站,4:查研观向小程序;默认:1"`
  22. SessionKey string `description:"微信小程序会话密钥,最大长度:255"`
  23. UserId int `description:"用户id"`
  24. }
  25. // 根据openid获取用户关系
  26. func GetUserRecordByOpenId(openId string) (item *UserRecord, err error) {
  27. o := orm.NewOrmUsingDB("weekly_report")
  28. sql := `SELECT * FROM user_record WHERE open_id=? `
  29. err = o.Raw(sql, openId).QueryRow(&item)
  30. return
  31. }
  32. // 根据openid解除绑定用户关系
  33. func UnBindUserRecordByOpenid(openId string) (err error) {
  34. o := orm.NewOrmUsingDB("weekly_report")
  35. msql := ` UPDATE user_record SET user_id = 0,bind_account="" WHERE open_id = ? `
  36. _, err = o.Raw(msql, openId).Exec()
  37. return
  38. }
  39. // 根据用户id和平台id获取用户关系
  40. func GetUserRecordByUserId(userId, platform int) (item *UserRecord, err error) {
  41. o := orm.NewOrmUsingDB("weekly_report")
  42. sql := `SELECT * FROM user_record WHERE user_id=? AND create_platform = ?`
  43. err = o.Raw(sql, userId, platform).QueryRow(&item)
  44. return
  45. }
  46. // 添加用户关系
  47. func AddUserRecord(record *UserRecord) (recordId int64, err error) {
  48. o := orm.NewOrmUsingDB("weekly_report")
  49. recordId, err = o.Insert(record)
  50. return
  51. }
  52. // 根据openid绑定用户关系
  53. func BindUserRecordByOpenid(userId int, openId, bindAccount string) (err error) {
  54. o := orm.NewOrmUsingDB("weekly_report")
  55. msql := " UPDATE user_record SET user_id = ?,bind_account=? WHERE open_id = ? "
  56. _, err = o.Raw(msql, userId, bindAccount, openId).Exec()
  57. return
  58. }
  59. // 修改用户微信信息
  60. func ModifyUserRecordInfo(openId, nickName, headimgUrl, city, province, country, sessionKey string, sex, userId int) (err error) {
  61. o := orm.NewOrmUsingDB("weekly_report")
  62. sql := `UPDATE user_record SET nick_name=?,headimgurl=?,sex=?,city=?,province=?,country=?,session_key=? WHERE user_id=? and open_id=? `
  63. _, err = o.Raw(sql, nickName, headimgUrl, sex, city, province, country, sessionKey, userId, openId).Exec()
  64. return
  65. }
  66. // 修改用户微信信息
  67. func ModifyUserRecordByDetail(openId, unionId, nickName, headimgUrl, city, province, country string, sex, userId int) (err error) {
  68. o := orm.NewOrmUsingDB("weekly_report")
  69. sql := `UPDATE user_record SET union_id=?, nick_name=?,headimgurl=?,sex=?,city=?,province=?,country=? WHERE user_id=? and open_id=? `
  70. _, err = o.Raw(sql, unionId, nickName, headimgUrl, sex, city, province, country, userId, openId).Exec()
  71. return
  72. }
  73. // 修改用户微信信息
  74. func ModifyUserRecordSessionKey(openId, sessionKey string) (err error) {
  75. o := orm.NewOrmUsingDB("weekly_report")
  76. sql := `UPDATE user_record SET session_key=? WHERE open_id=? `
  77. _, err = o.Raw(sql, sessionKey, openId).Exec()
  78. return
  79. }
  80. // 根据用户id和平台id获取用户关系
  81. func GetUserRecordByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
  82. var sql string
  83. sql = `SELECT union_id,cygx_user_id AS user_id FROM cygx_user_record WHERE 1 = 1 AND cygx_bind_account = ?`
  84. err = orm.NewOrm().Raw(sql, platform, bindAccount).QueryRow(&item)
  85. return
  86. }
  87. // 获取该用户第一个的 三方信息(微信头像信息)
  88. func GetUserThirdRecordByUserId(userId int) (item *UserRecord, err error) {
  89. o := orm.NewOrmUsingDB("weekly_report")
  90. sql := `SELECT * FROM user_record WHERE user_id = ? order by user_record_id asc`
  91. err = o.Raw(sql, userId).QueryRow(&item)
  92. return
  93. }
  94. // 根据手机号获取用户的openid
  95. func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenIdList, err error) {
  96. var sql string
  97. //if utils.RunMode == "release" {
  98. // sql = `SELECT cr.open_id,user_id FROM user_record as u
  99. // INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id
  100. // WHERE create_platform=? AND bind_account IN (` + bindAccount + `)`
  101. //} else {
  102. // platform = 1
  103. // sql = `SELECT open_id,user_id FROM user_record WHERE create_platform =? AND bind_account IN (` + bindAccount + `)`
  104. //}
  105. sql = `SELECT
  106. cr.open_id,
  107. cr.cygx_user_id as user_id
  108. FROM
  109. cygx_user_record as cr
  110. WHERE 1= 1 AND cygx_bind_account IN (` + bindAccount + `)`
  111. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  112. return
  113. }
  114. //// 获取单个用户openid
  115. //func GetOpenIdDetailByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
  116. // o := orm.NewOrm()
  117. // var sql string
  118. // sql = `SELECT cr.open_id,wu.user_id FROM user_record as u
  119. // INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id
  120. // INNER JOIN wx_user AS wu ON wu.mobile = u.bind_account
  121. // WHERE create_platform=? AND u.bind_account = ?`
  122. // err = o.Raw(sql, platform, bindAccount).QueryRow(&item)
  123. // return
  124. //}
  125. func GetOpenIdByUserIds(ids string) (item []*OpenIdList, err error) {
  126. o := orm.NewOrm()
  127. var sql string
  128. sql = ` SELECT
  129. cr.open_id,
  130. cr.cygx_user_id as user_id
  131. FROM
  132. cygx_user_record as cr
  133. WHERE 1= 1 AND cygx_user_id IN (` + ids + `)`
  134. _, err = o.Raw(sql).QueryRows(&item)
  135. return
  136. }
  137. //// 根据手机号获取用户的openid
  138. //func GetUserRecordListByMobileArr(bindAccount []string) (items []*OpenIdList, err error) {
  139. // lenarr := len(bindAccount)
  140. // if lenarr == 0 {
  141. // return
  142. // }
  143. // var condition string
  144. // var pars []interface{}
  145. // condition = ` AND u.bind_account IN (` + utils.GetOrmInReplace(lenarr) + `)`
  146. // pars = append(pars, bindAccount)
  147. // sql := `SELECT cr.open_id,u.user_id
  148. // FROM user_record as u
  149. // INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id
  150. // WHERE u.create_platform=4 ` + condition
  151. // _, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
  152. // return
  153. //}
  154. // 根据手机号获取用户的openid
  155. func GetUserRecordListByMobileArr(mobiles []string) (items []*OpenIdList, err error) {
  156. o := orm.NewOrm()
  157. lenarr := len(mobiles)
  158. if lenarr == 0 {
  159. return
  160. }
  161. var condition string
  162. var pars []interface{}
  163. condition = ` AND u.cygx_bind_account IN (` + utils.GetOrmInReplace(lenarr) + `)`
  164. pars = append(pars, mobiles)
  165. sql := `SELECT
  166. u.open_id,
  167. u.cygx_user_id AS user_id
  168. FROM
  169. cygx_user_record AS u
  170. WHERE
  171. 1 = 1 ` + condition
  172. _, err = o.Raw(sql, pars).QueryRows(&items)
  173. return
  174. }