wx_user_rai_label.go 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  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. // DeleteWxUserRaiLabelWithRoadshow 路演到会删除后,删除对应的标签
  116. func DeleteWxUserRaiLabelWithRoadshow(userId, sourceId int) (err error) {
  117. o := orm.NewOrmUsingDB("hz_cygx")
  118. sql := ` DELETE FROM wx_user_rai_label WHERE user_id = ? AND source_id =? AND source_type IN (3,5) `
  119. _, err = o.Raw(sql, userId, sourceId).Exec()
  120. return
  121. }
  122. // DeleteWxUserRaiLabelWithActivity 线下活动取消到会后,删除对应的标签
  123. func DeleteWxUserRaiLabelWithActivity(userIds []int, sourceId int) (err error) {
  124. lenArr := len(userIds)
  125. if lenArr == 0 {
  126. return
  127. }
  128. o := orm.NewOrmUsingDB("hz_cygx")
  129. sql := ` DELETE FROM wx_user_rai_label WHERE user_id IN (` + utils.GetOrmInReplace(lenArr) + `) AND source_id =? AND source_type IN (2,4) `
  130. _, err = o.Raw(sql, userIds, sourceId).Exec()
  131. return
  132. }
  133. // GetWxUserRaiLabelListByUserIds 根据多个userId 获取每个UserId最新的十条数据
  134. func GetWxUserRaiLabelListByUserIds(userIdArr []int) (list []*WxUserRaiLabelListResp, err error) {
  135. lenArr := len(userIdArr)
  136. if lenArr == 0 {
  137. return
  138. }
  139. o := orm.NewOrmUsingDB("hz_cygx")
  140. sql := `SELECT
  141. t.rai_label_id,
  142. t.user_id,
  143. t.label,
  144. t.source_type
  145. FROM
  146. (
  147. SELECT
  148. rai_label_id,
  149. user_id,
  150. label,
  151. source_type,
  152. create_time,
  153. @row_number :=
  154. IF
  155. ( @prev_user_id = user_id, @row_number + 1, 1 ) AS rank,
  156. @prev_user_id := user_id
  157. FROM
  158. wx_user_rai_label,
  159. ( SELECT @row_number := 0, @prev_user_id := NULL ) AS vars
  160. WHERE
  161. user_id IN ( ` + utils.GetOrmInReplace(lenArr) + ` )
  162. AND create_time > ?
  163. ORDER BY
  164. create_time DESC
  165. ) AS t
  166. WHERE
  167. t.rank <= 10
  168. ORDER BY
  169. t.create_time DESC `
  170. _, err = o.Raw(sql, userIdArr, time.Now().AddDate(0, -4, 0).Format(utils.FormatDate)).QueryRows(&list)
  171. return
  172. }
  173. // GetWxUserRaiLabelListByUserId 根据用户ID,获取最近四个月的数据信息
  174. func GetWxUserRaiLabelListByUserId(userId int) (list []*WxUserRaiLabelListResp, err error) {
  175. o := orm.NewOrmUsingDB("hz_cygx")
  176. sql := `SELECT
  177. rai_label_id,
  178. user_id,
  179. label,
  180. source_type
  181. FROM
  182. wx_user_rai_label
  183. WHERE
  184. user_id = ? AND create_time >= ?
  185. ORDER BY
  186. create_time DESC LIMIT 1000 `
  187. _, err = o.Raw(sql, userId, time.Now().AddDate(0, -4, 0).Format(utils.FormatDate)).QueryRows(&list)
  188. return
  189. }
  190. // 通过纪要ID获取详情
  191. func GetWxUserRaiLabelDetailById(raiLabelId int) (item *WxUserRaiLabel, err error) {
  192. o := orm.NewOrmUsingDB("hz_cygx")
  193. sql := `SELECT
  194. *
  195. FROM
  196. wx_user_rai_label
  197. WHERE
  198. rai_label_id =? `
  199. err = o.Raw(sql, raiLabelId).QueryRow(&item)
  200. return
  201. }
  202. type WxUserRaiLabelDetailResp struct {
  203. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  204. KeyWord *WxUserRaiLabelKeyWordResp
  205. Activity *WxUserRaiLabelActivityResp
  206. RoadShow *WxUserRaiLabelRoadShowResp
  207. Seller *WxUserRaiLabelSellerResp
  208. Article *WxUserRaiLabelArticleResp
  209. ActivityVivo *WxUserRaiLabelActivityVivoResp
  210. }
  211. type WxUserRaiLabelKeyWordResp struct {
  212. Label string `description:"标签内容"`
  213. CreateTime string `description:"创建时间"`
  214. }
  215. type WxUserRaiLabelActivityResp struct {
  216. ActivityName string `description:"活动名称"`
  217. ActivityTypeName string `description:"活动类型名称"`
  218. ActivityTime string `description:"活动时间"`
  219. Duration string `description:"参会时长"`
  220. Label string `description:"标签内容"`
  221. }
  222. type WxUserRaiLabelActivityVivoResp struct {
  223. Title string `description:"活动名称"`
  224. ActivityTime string `description:"活动时间"`
  225. Label string `description:"标签内容"`
  226. CreateTime string `description:"查看时间"`
  227. }
  228. type WxUserRaiLabelRoadShowResp struct {
  229. Theme string `description:"会议主题"`
  230. ResearcherName string `description:"研究员名称"`
  231. RoadShowTime string `description:"开始时间"`
  232. Label string `description:"标签内容"`
  233. }
  234. type WxUserRaiLabelSellerResp struct {
  235. Label string `description:"标签内容"`
  236. SysUserRealName string `description:"创建人名称"`
  237. CreateTime string `description:"创建时间"`
  238. }
  239. type WxUserRaiLabelArticleResp struct {
  240. Title string `description:"标题"`
  241. PublishDate string `description:"发布时间"`
  242. CreateTime string `description:"创建时间"`
  243. SourceText string `description:"阅读来源"`
  244. StopTime string `description:"阅读停留时间"`
  245. Label string `description:"标签内容"`
  246. }
  247. type WxUserRaiLabelRedis struct {
  248. UserId int `description:"用户ID"`
  249. SourceId int `description:"资源ID"`
  250. Label string `description:"标签内容"`
  251. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  252. CreateTime time.Time `description:"创建时间"`
  253. RegisterPlatform int `description:"来源 1小程序,2:网页"`
  254. TableName string `description:"数据来源的表名"`
  255. }