wx_user_rai_label.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package cygx
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "hongze/hz_crm_api/utils"
  6. "time"
  7. )
  8. type WxUserRaiLabel struct {
  9. RaiLabelId int `orm:"column(rai_label_id);pk"`
  10. UserId int `description:"用户ID"`
  11. RealName string `description:"用户实际名称"`
  12. Mobile string `description:"手机号"`
  13. Email string `description:"邮箱"`
  14. CompanyId int `description:"公司id"`
  15. CompanyName string `description:"公司名称"`
  16. Label string `description:"标签内容"`
  17. SourceId int `description:"来源ID"`
  18. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  19. SysUserId int `description:"创建人id"`
  20. SysUserRealName string `description:"创建人名称"`
  21. CreateTime time.Time `description:"创建时间"`
  22. ModifyTime time.Time `description:"更新时间"`
  23. TableName string `description:"数据来源的表名"`
  24. }
  25. // 标签记录表,所有内容都不删除
  26. type WxUserRaiLabelLog struct {
  27. RaiLabelId int `orm:"column(rai_label_id);pk"`
  28. UserId int `description:"用户ID"`
  29. RealName string `description:"用户实际名称"`
  30. Mobile string `description:"手机号"`
  31. Email string `description:"邮箱"`
  32. CompanyId int `description:"公司id"`
  33. CompanyName string `description:"公司名称"`
  34. Label string `description:"标签内容"`
  35. SourceId int `description:"来源ID"`
  36. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  37. SysUserId int `description:"创建人id"`
  38. SysUserRealName string `description:"创建人名称"`
  39. CreateTime time.Time `description:"创建时间"`
  40. ModifyTime time.Time `description:"更新时间"`
  41. RegisterPlatform int `description:"来源 1小程序,2:网页"`
  42. TableName string `description:"数据来源的表名"`
  43. }
  44. type WxUserRaiLabelList struct {
  45. List []*WxUserRaiLabelListResp
  46. }
  47. type WxUserRaiLabelListResp struct {
  48. UserId int `description:"用户ID"`
  49. RaiLabelId int `description:"ID"`
  50. Label string `description:"标签内容"`
  51. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  52. }
  53. type WxUserRaiLabelAddReq struct {
  54. UserId int `description:"用户ID"`
  55. Label string `description:"标签内容"`
  56. }
  57. type WxUserRaiLabelIdReq struct {
  58. RaiLabelId int `description:"ID"`
  59. }
  60. // 添加
  61. //func AddWxUserRaiLabel(item *WxUserRaiLabel) (err error) {
  62. // o := orm.NewOrmUsingDB("hz_cygx")
  63. // _, err = o.Insert(item)
  64. // return
  65. //}
  66. func AddWxUserRaiLabel(item *WxUserRaiLabel) (err error) {
  67. o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
  68. if err != nil {
  69. return
  70. }
  71. defer func() {
  72. fmt.Println(err)
  73. if err == nil {
  74. o.Commit()
  75. } else {
  76. o.Rollback()
  77. }
  78. }()
  79. //删除原有数据
  80. sql := ` DELETE FROM wx_user_rai_label WHERE user_id = ? AND label = ? `
  81. _, err = o.Raw(sql, item.UserId, item.Label).Exec()
  82. if err != nil {
  83. return
  84. }
  85. _, err = o.Insert(item)
  86. if err != nil {
  87. return
  88. }
  89. itemLog := new(WxUserRaiLabelLog)
  90. itemLog.UserId = item.UserId
  91. itemLog.RealName = item.RealName
  92. itemLog.Mobile = item.Mobile
  93. itemLog.Email = item.Email
  94. itemLog.CompanyId = item.CompanyId
  95. itemLog.CompanyName = item.CompanyName
  96. itemLog.Label = item.Label
  97. itemLog.SourceId = item.SourceId
  98. itemLog.SourceType = item.SourceType
  99. itemLog.SysUserId = item.SysUserId
  100. itemLog.SysUserRealName = item.SysUserRealName
  101. itemLog.CreateTime = item.CreateTime
  102. itemLog.ModifyTime = item.ModifyTime
  103. //itemLog.RegisterPlatform = item.RegisterPlatform
  104. itemLog.TableName = item.TableName
  105. _, err = o.Insert(itemLog)
  106. return
  107. }
  108. // DeleteWxUserRaiLabel 根据主键ID删除数据
  109. func DeleteWxUserRaiLabel(raiLabelId int) (err error) {
  110. o := orm.NewOrmUsingDB("hz_cygx")
  111. sql := ` DELETE FROM wx_user_rai_label WHERE rai_label_id = ? `
  112. _, err = o.Raw(sql, raiLabelId).Exec()
  113. return
  114. }
  115. // GetWxUserRaiLabelListByUserIds 根据多个userId 获取每个UserId最新的十条数据
  116. func GetWxUserRaiLabelListByUserIds(userIdArr []int) (list []*WxUserRaiLabelListResp, err error) {
  117. lenArr := len(userIdArr)
  118. if lenArr == 0 {
  119. return
  120. }
  121. o := orm.NewOrmUsingDB("hz_cygx")
  122. sql := `SELECT
  123. t.rai_label_id,
  124. t.user_id,
  125. t.label,
  126. t.source_type
  127. FROM
  128. (
  129. SELECT
  130. rai_label_id,
  131. user_id,
  132. label,
  133. source_type,
  134. create_time,
  135. @row_number :=
  136. IF
  137. ( @prev_user_id = user_id, @row_number + 1, 1 ) AS rank,
  138. @prev_user_id := user_id
  139. FROM
  140. wx_user_rai_label,
  141. ( SELECT @row_number := 0, @prev_user_id := NULL ) AS vars
  142. WHERE
  143. user_id IN ( ` + utils.GetOrmInReplace(lenArr) + ` )
  144. ORDER BY
  145. create_time DESC
  146. ) AS t
  147. WHERE
  148. t.rank <= 10
  149. ORDER BY
  150. t.create_time DESC `
  151. _, err = o.Raw(sql, userIdArr).QueryRows(&list)
  152. return
  153. }
  154. // GetWxUserRaiLabelListByUserId 根据用户ID,获取最近四个月的数据信息
  155. func GetWxUserRaiLabelListByUserId(userId int) (list []*WxUserRaiLabelListResp, err error) {
  156. o := orm.NewOrmUsingDB("hz_cygx")
  157. sql := `SELECT
  158. rai_label_id,
  159. user_id,
  160. label,
  161. source_type
  162. FROM
  163. wx_user_rai_label
  164. WHERE
  165. user_id = ? AND create_time >= ?
  166. ORDER BY
  167. create_time DESC LIMIT 1000 `
  168. _, err = o.Raw(sql, userId, time.Now().AddDate(0, -4, 0).Format(utils.FormatDate)).QueryRows(&list)
  169. return
  170. }
  171. // 通过纪要ID获取详情
  172. func GetWxUserRaiLabelDetailById(raiLabelId int) (item *WxUserRaiLabel, err error) {
  173. o := orm.NewOrmUsingDB("hz_cygx")
  174. sql := `SELECT
  175. *
  176. FROM
  177. wx_user_rai_label
  178. WHERE
  179. rai_label_id =? `
  180. err = o.Raw(sql, raiLabelId).QueryRow(&item)
  181. return
  182. }
  183. type WxUserRaiLabelDetailResp struct {
  184. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  185. KeyWord *WxUserRaiLabelKeyWordResp
  186. Activity *WxUserRaiLabelActivityResp
  187. RoadShow *WxUserRaiLabelRoadShowResp
  188. Seller *WxUserRaiLabelSellerResp
  189. Article *WxUserRaiLabelArticleResp
  190. ActivityVivo *WxUserRaiLabelActivityVivoResp
  191. }
  192. type WxUserRaiLabelKeyWordResp struct {
  193. Label string `description:"标签内容"`
  194. CreateTime string `description:"创建时间"`
  195. }
  196. type WxUserRaiLabelActivityResp struct {
  197. ActivityName string `description:"活动名称"`
  198. ActivityTypeName string `description:"活动类型名称"`
  199. ActivityTime string `description:"活动时间"`
  200. Duration string `description:"参会时长"`
  201. Label string `description:"标签内容"`
  202. }
  203. type WxUserRaiLabelActivityVivoResp struct {
  204. Title string `description:"活动名称"`
  205. ActivityTime string `description:"活动时间"`
  206. Label string `description:"标签内容"`
  207. CreateTime string `description:"查看时间"`
  208. }
  209. type WxUserRaiLabelRoadShowResp struct {
  210. Theme string `description:"会议主题"`
  211. ResearcherName string `description:"研究员名称"`
  212. RoadShowTime string `description:"开始时间"`
  213. Label string `description:"标签内容"`
  214. }
  215. type WxUserRaiLabelSellerResp struct {
  216. Label string `description:"标签内容"`
  217. SysUserRealName string `description:"创建人名称"`
  218. CreateTime string `description:"创建时间"`
  219. }
  220. type WxUserRaiLabelArticleResp struct {
  221. Title string `description:"标题"`
  222. PublishDate string `description:"发布时间"`
  223. CreateTime string `description:"创建时间"`
  224. SourceText string `description:"阅读来源"`
  225. StopTime string `description:"阅读停留时间"`
  226. Label string `description:"标签内容"`
  227. }
  228. type WxUserRaiLabelRedis struct {
  229. UserId int `description:"用户ID"`
  230. SourceId int `description:"资源ID"`
  231. Label string `description:"标签内容"`
  232. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  233. CreateTime time.Time `description:"创建时间"`
  234. RegisterPlatform int `description:"来源 1小程序,2:网页"`
  235. TableName string `description:"数据来源的表名"`
  236. }