wx_user.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package wx_user
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. type WxUser struct {
  7. UserId int64 `orm:"column(user_id);pk"`
  8. Mobile string
  9. Email string
  10. CompanyId int
  11. RealName string `description:"姓名"`
  12. CreatedTime time.Time
  13. MobileTwo string `description:"备用手机号"`
  14. BusinessCardUrl string `description:"名片"`
  15. IsMaker int `description:"是否决策人,1:是,0:否"`
  16. Position string `description:"职位"`
  17. Sex int `description:"普通用户性别,1为男性,2为女性"`
  18. DepartmentName string `description:"联系人部门"`
  19. RegisterTime time.Time
  20. RegisterPlatform int
  21. Enabled int8 `description:"用户状态"`
  22. }
  23. type OpenIdList struct {
  24. OpenId string
  25. }
  26. //获取所有的用户openid列表
  27. func GetOpenIdList(openIdStr string) (items []*OpenIdList, err error) {
  28. sql := `SELECT DISTINCT ur.open_id FROM wx_user AS wu
  29. INNER JOIN company AS c ON c.company_id = wu.company_id
  30. INNER JOIN company_product AS d ON c.company_id=d.company_id
  31. INNER join user_record as ur on wu.user_id=ur.user_id
  32. WHERE ur.open_id != "" and ur.create_platform=1 AND d.status IN('正式','试用','永续') `
  33. if openIdStr != "" {
  34. sql += ` AND ur.open_id in (` + openIdStr + `) `
  35. }
  36. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  37. return
  38. }
  39. //根据手机号获取用户的openid列表
  40. func GetOpenIdListByMobile(mobile, openIdStr string) (items []*OpenIdList, err error) {
  41. sql := `SELECT DISTINCT ur.open_id FROM wx_user AS wu
  42. INNER JOIN company AS c ON c.company_id = wu.company_id
  43. INNER join user_record as ur on wu.user_id=ur.user_id
  44. WHERE ur.open_id != "" and ur.create_platform=1 AND wu.mobile=? `
  45. if openIdStr != "" {
  46. sql += ` AND ur.open_id in (` + openIdStr + `) `
  47. }
  48. _, err = orm.NewOrm().Raw(sql, mobile).QueryRows(&items)
  49. return
  50. }
  51. type WxUserItem struct {
  52. UserId int
  53. RealName string
  54. Mobile string
  55. Email string
  56. CompanyName string
  57. }
  58. // GetWxUserByMobile 根据手机号获取用户信息
  59. func GetWxUserByMobile(mobile string) (item *WxUserItem, err error) {
  60. sql := `SELECT a.user_id,a.real_name,a.mobile,b.company_name FROM wx_user AS a
  61. INNER JOIN company AS b ON a.company_id = b.company_id
  62. WHERE a.mobile=? `
  63. err = orm.NewOrm().Raw(sql, mobile).QueryRow(&item)
  64. return
  65. }
  66. // GetWxUserByEmail 根据邮箱获取用户信息
  67. func GetWxUserByEmail(email string) (item *WxUserItem, err error) {
  68. sql := `SELECT a.user_id,a.real_name,a.mobile,b.company_name FROM wx_user AS a
  69. INNER JOIN company AS b ON a.company_id = b.company_id
  70. WHERE a.email=? `
  71. err = orm.NewOrm().Raw(sql, email).QueryRow(&item)
  72. return
  73. }
  74. // GetWxUserByMobile 根据手机号获取用户信息
  75. func GetWxUserByMobileStr(mobile string) (item *WxUserItem, err error) {
  76. sql := `SELECT a.user_id,a.real_name,a.mobile,b.company_name FROM wx_user AS a
  77. INNER JOIN company AS b ON a.company_id = b.company_id
  78. WHERE a.mobile IN (` + mobile + `) LIMIT 1 `
  79. err = orm.NewOrm().Raw(sql).QueryRow(&item)
  80. return
  81. }
  82. // GetWxUserByMobileCountryCode 根据手机号和区号获取用户信息
  83. func GetWxUserByMobileCountryCode(mobile, countryCode string) (item *WxUser, err error) {
  84. o := orm.NewOrm()
  85. sql := `SELECT * FROM wx_user WHERE mobile = ? `
  86. sql += ` and country_code in ("","` + countryCode + `") `
  87. sql += ` LIMIT 1 `
  88. err = o.Raw(sql, mobile).QueryRow(&item)
  89. return
  90. }
  91. // GetByUserId 根据user_id获取用户信息
  92. func GetByUserId(userId int) (wxUser *WxUser, err error) {
  93. o := orm.NewOrm()
  94. sql := `SELECT * FROM wx_user WHERE user_id = ? LIMIT 1 `
  95. err = o.Raw(sql, userId).QueryRow(&wxUser)
  96. return
  97. }