industry_fllow.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. type CygxIndustryFllow struct {
  7. Id int `orm:"column(id);pk"`
  8. IndustrialManagementId int `description:"产业D"`
  9. UserId int `description:"用户ID"`
  10. Mobile string `description:"手机号"`
  11. Email string `description:"邮箱"`
  12. CompanyId int `description:"公司id"`
  13. CompanyName string `description:"公司名称"`
  14. Type int `description:"操作方式,1报名,2取消报名"`
  15. CreateTime time.Time `description:"创建时间"`
  16. ModifyTime time.Time `description:"更新时间"`
  17. RealName string `description:"用户实际名称"`
  18. Source int `description:"来源1查研观向,2查研观向小助手,3勾选全部赛道的用户进行自动关注"`
  19. }
  20. type CygxIndustryFllowRep struct {
  21. IndustrialManagementId int `description:"产业D"`
  22. }
  23. //添加
  24. func AddCygxIndustryFllow(item *CygxIndustryFllow) (lastId int64, err error) {
  25. o := orm.NewOrm()
  26. lastId, err = o.Insert(item)
  27. return
  28. }
  29. //批量添加
  30. func AddCygxIndustryFllowMulti(items []*CygxIndustryFllow) (err error) {
  31. o := orm.NewOrm()
  32. if len(items) > 0 {
  33. //批量添加新的关注记录
  34. _, err = o.InsertMulti(len(items), items)
  35. }
  36. return
  37. }
  38. type CygxIndustryFllowResp struct {
  39. Status int `description:"1:关注,2:取消关注"`
  40. GoFollow bool `description:"是否去关注"`
  41. }
  42. func RemoveCygxIndustryFllow(userId, industrialManagementId int) (err error) {
  43. o := orm.NewOrm()
  44. sql := `DELETE FROM cygx_industry_fllow WHERE user_id=? AND industrial_management_id=? `
  45. _, err = o.Raw(sql, userId, industrialManagementId).Exec()
  46. return
  47. }
  48. //获取数量
  49. func GetCountCygxIndustryFllow(userId, industrialManagementId int, condition string) (count int, err error) {
  50. sql := `SELECT COUNT(1) AS count FROM cygx_industry_fllow WHERE user_id=? AND industrial_management_id=? ` + condition
  51. err = orm.NewOrm().Raw(sql, userId, industrialManagementId).QueryRow(&count)
  52. return
  53. }
  54. //获取数量
  55. func GetCountCygxIndustryFllowByUid(userId int) (count int, err error) {
  56. sql := `SELECT COUNT(1) AS count FROM cygx_industry_fllow WHERE user_id=? `
  57. err = orm.NewOrm().Raw(sql, userId).QueryRow(&count)
  58. return
  59. }
  60. //获取列表信息根据手机号分组
  61. func GetCygxIndustryFllowList(condition string) (items []*CygxIndustryFllow, err error) {
  62. o := orm.NewOrm()
  63. sql := `SELECT * FROM cygx_industry_fllow WHERE 1 =1 ` + condition + ` GROUP BY user_id `
  64. _, err = o.Raw(sql).QueryRows(&items)
  65. return
  66. }
  67. //修改用户关注的相关信息
  68. func UpdateCygxIndustryFllow(wxUser *WxUserItem) (err error) {
  69. o := orm.NewOrm()
  70. var sql string
  71. if wxUser.Mobile != "" {
  72. sql = `UPDATE cygx_industry_fllow SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
  73. _, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
  74. } else if wxUser.Email != "" {
  75. sql = `UPDATE cygx_industry_fllow SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
  76. _, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
  77. }
  78. return
  79. }
  80. //获取用户关注的产业列表
  81. func GetUserFllowIndustrialList(userId int) (items []*CygxIndustryFllow, err error) {
  82. o := orm.NewOrm()
  83. sql := `SELECT
  84. f.user_id,
  85. m.industry_name,
  86. m.industrial_management_id
  87. FROM
  88. cygx_industry_fllow AS f
  89. INNER JOIN wx_user AS u ON f.user_id = u.user_id
  90. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id
  91. WHERE
  92. 1 = 1
  93. AND f.user_id = ? `
  94. _, err = o.Raw(sql, userId).QueryRows(&items)
  95. return
  96. }
  97. type CygxIndustryFllowCountRep struct {
  98. IndustrialManagementId int `description:"产业D"`
  99. Num int `description:"数量"`
  100. }
  101. //获取产业被关注的数量
  102. func GetUserFllowIndustrialCountList() (items []*CygxIndustryFllowCountRep, err error) {
  103. o := orm.NewOrm()
  104. sql := `SELECT
  105. COUNT( 1 ) AS num,
  106. f.industrial_management_id
  107. FROM
  108. cygx_industry_fllow AS f
  109. INNER JOIN wx_user AS u ON u.user_id = f.user_id
  110. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id
  111. WHERE
  112. 1 = 1
  113. GROUP BY
  114. f.industrial_management_id
  115. ORDER BY
  116. num DESC
  117. LIMIT 30 `
  118. _, err = o.Raw(sql).QueryRows(&items)
  119. return
  120. }
  121. //GetUserFllowIndustrialListByUserIdAndIndustrial 通过用户ID 跟产业ID获取用户关注的产业列表
  122. func GetUserFllowIndustrialListByUserIdAndIndustrial(userIds, industrials string) (items []*CygxIndustryFllow, err error) {
  123. o := orm.NewOrm()
  124. sql := `SELECT * FROM cygx_industry_fllow
  125. WHERE 1 = 1
  126. AND user_id IN ( ` + userIds + ` )
  127. AND industrial_management_id IN ( ` + industrials + `) `
  128. _, err = o.Raw(sql).QueryRows(&items)
  129. return
  130. }
  131. //获取某个用户关注某个行业下的产业数量
  132. func GetCountCygxIndustryFllowByUidAndChartPermissionId(userId, ChartPermissionId int) (count int, err error) {
  133. sql := `SELECT
  134. COUNT( 1 ) AS count
  135. FROM
  136. cygx_industry_fllow AS f
  137. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = f.industrial_management_id
  138. WHERE
  139. user_id = ?
  140. AND m.chart_permission_id = ? `
  141. err = orm.NewOrm().Raw(sql, userId, ChartPermissionId).QueryRow(&count)
  142. return
  143. }
  144. // GetTopIndustryFollowData 获取关注度最高的产业关注数据
  145. func GetTopIndustryFollowData(startSize, pageSize int, condition string, pars []interface{}) (list []*IndustrialManagement, err error) {
  146. sql := `SELECT
  147. COUNT(1) AS one_month_follow_num,
  148. man.*
  149. FROM
  150. cygx_industry_fllow AS idf
  151. JOIN cygx_industrial_management AS man ON idf.industrial_management_id = man.industrial_management_id
  152. WHERE 1 = 1 `
  153. if condition != "" {
  154. sql += condition
  155. }
  156. sql += ` GROUP BY
  157. idf.industrial_management_id
  158. ORDER BY
  159. one_month_follow_num DESC
  160. LIMIT ?,?`
  161. _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  162. return
  163. }