wx_user_rai_label.go 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  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. BackgroundColor string `description:"背景颜色"`
  52. TextClolr string `description:"字体颜色"`
  53. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  54. }
  55. type WxUserRaiLabelAddReq struct {
  56. UserId int `description:"用户ID"`
  57. Label string `description:"标签内容"`
  58. }
  59. type WxUserRaiLabelIdReq struct {
  60. RaiLabelId int `description:"ID"`
  61. }
  62. // 添加
  63. //func AddWxUserRaiLabel(item *WxUserRaiLabel) (err error) {
  64. // o := orm.NewOrmUsingDB("hz_cygx")
  65. // _, err = o.Insert(item)
  66. // return
  67. //}
  68. func AddWxUserRaiLabel(item *WxUserRaiLabel) (err error) {
  69. o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
  70. if err != nil {
  71. return
  72. }
  73. defer func() {
  74. fmt.Println(err)
  75. if err == nil {
  76. o.Commit()
  77. } else {
  78. o.Rollback()
  79. }
  80. }()
  81. //删除原有数据
  82. sql := ` DELETE FROM wx_user_rai_label WHERE user_id = ? AND label = ? `
  83. _, err = o.Raw(sql, item.UserId, item.Label).Exec()
  84. if err != nil {
  85. return
  86. }
  87. _, err = o.Insert(item)
  88. if err != nil {
  89. return
  90. }
  91. itemLog := new(WxUserRaiLabelLog)
  92. itemLog.UserId = item.UserId
  93. itemLog.RealName = item.RealName
  94. itemLog.Mobile = item.Mobile
  95. itemLog.Email = item.Email
  96. itemLog.CompanyId = item.CompanyId
  97. itemLog.CompanyName = item.CompanyName
  98. itemLog.Label = item.Label
  99. itemLog.SourceId = item.SourceId
  100. itemLog.SourceType = item.SourceType
  101. itemLog.SysUserId = item.SysUserId
  102. itemLog.SysUserRealName = item.SysUserRealName
  103. itemLog.CreateTime = item.CreateTime
  104. itemLog.ModifyTime = item.ModifyTime
  105. //itemLog.RegisterPlatform = item.RegisterPlatform
  106. itemLog.TableName = item.TableName
  107. _, err = o.Insert(itemLog)
  108. return
  109. }
  110. // DeleteWxUserRaiLabel 根据主键ID删除数据
  111. func DeleteWxUserRaiLabel(raiLabelId int) (err error) {
  112. o := orm.NewOrmUsingDB("hz_cygx")
  113. sql := ` DELETE FROM wx_user_rai_label WHERE rai_label_id = ? `
  114. _, err = o.Raw(sql, raiLabelId).Exec()
  115. return
  116. }
  117. // DeleteWxUserRaiLabelWithRoadshow 路演到会删除后,删除对应的标签
  118. func DeleteWxUserRaiLabelWithRoadshow(userId, sourceId int) (err error) {
  119. o := orm.NewOrmUsingDB("hz_cygx")
  120. sql := ` DELETE FROM wx_user_rai_label WHERE user_id = ? AND source_id =? AND source_type IN (3,5) `
  121. _, err = o.Raw(sql, userId, sourceId).Exec()
  122. return
  123. }
  124. // DeleteWxUserRaiLabelWithActivity 线下活动取消到会后,删除对应的标签
  125. func DeleteWxUserRaiLabelWithActivity(userIds []int, sourceId int) (err error) {
  126. lenArr := len(userIds)
  127. if lenArr == 0 {
  128. return
  129. }
  130. o := orm.NewOrmUsingDB("hz_cygx")
  131. sql := ` DELETE FROM wx_user_rai_label WHERE user_id IN (` + utils.GetOrmInReplace(lenArr) + `) AND source_id =? AND source_type IN (2,4) `
  132. _, err = o.Raw(sql, userIds, sourceId).Exec()
  133. return
  134. }
  135. // GetWxUserRaiLabelListByUserIds 根据多个userId 获取每个UserId最新的十条数据
  136. func GetWxUserRaiLabelListByUserIds(userIdArr []int) (list []*WxUserRaiLabelListResp, err error) {
  137. lenArr := len(userIdArr)
  138. if lenArr == 0 {
  139. return
  140. }
  141. o := orm.NewOrmUsingDB("hz_cygx")
  142. sql := `SELECT
  143. t.rai_label_id,
  144. t.user_id,
  145. t.label,
  146. t.source_type
  147. FROM
  148. (
  149. SELECT
  150. rai_label_id,
  151. user_id,
  152. label,
  153. source_type,
  154. create_time,
  155. @row_number :=
  156. IF
  157. ( @prev_user_id = user_id, @row_number + 1, 1 ) AS rank,
  158. @prev_user_id := user_id
  159. FROM
  160. wx_user_rai_label,
  161. ( SELECT @row_number := 0, @prev_user_id := NULL ) AS vars
  162. WHERE
  163. user_id IN ( ` + utils.GetOrmInReplace(lenArr) + ` )
  164. AND create_time > ?
  165. ORDER BY
  166. create_time DESC
  167. ) AS t
  168. WHERE
  169. t.rank <= 10
  170. ORDER BY
  171. t.create_time DESC `
  172. _, err = o.Raw(sql, userIdArr, time.Now().AddDate(0, -4, 0).Format(utils.FormatDate)).QueryRows(&list)
  173. return
  174. }
  175. // GetWxUserRaiLabelListByUserId 根据用户ID,获取最近四个月的数据信息
  176. func GetWxUserRaiLabelListByUserId(userId int) (list []*WxUserRaiLabelListResp, err error) {
  177. o := orm.NewOrmUsingDB("hz_cygx")
  178. sql := `SELECT
  179. rai_label_id,
  180. user_id,
  181. label,
  182. source_type
  183. FROM
  184. wx_user_rai_label
  185. WHERE
  186. user_id = ? AND create_time >= ?
  187. ORDER BY
  188. create_time DESC LIMIT 1000 `
  189. _, err = o.Raw(sql, userId, time.Now().AddDate(0, -4, 0).Format(utils.FormatDate)).QueryRows(&list)
  190. return
  191. }
  192. // 通过纪要ID获取详情
  193. func GetWxUserRaiLabelDetailById(raiLabelId int) (item *WxUserRaiLabel, err error) {
  194. o := orm.NewOrmUsingDB("hz_cygx")
  195. sql := `SELECT
  196. *
  197. FROM
  198. wx_user_rai_label
  199. WHERE
  200. rai_label_id =? `
  201. err = o.Raw(sql, raiLabelId).QueryRow(&item)
  202. return
  203. }
  204. type WxUserRaiLabelDetailResp struct {
  205. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  206. KeyWord *WxUserRaiLabelKeyWordResp
  207. Activity *WxUserRaiLabelActivityResp
  208. RoadShow *WxUserRaiLabelRoadShowResp
  209. Seller *WxUserRaiLabelSellerResp
  210. Article *WxUserRaiLabelArticleResp
  211. ActivityVivo *WxUserRaiLabelActivityVivoResp
  212. }
  213. type WxUserRaiLabelKeyWordResp struct {
  214. Label string `description:"标签内容"`
  215. CreateTime string `description:"创建时间"`
  216. }
  217. type WxUserRaiLabelActivityResp struct {
  218. ActivityName string `description:"活动名称"`
  219. ActivityTypeName string `description:"活动类型名称"`
  220. ActivityTime string `description:"活动时间"`
  221. Duration string `description:"参会时长"`
  222. Label string `description:"标签内容"`
  223. }
  224. type WxUserRaiLabelActivityVivoResp struct {
  225. Title string `description:"活动名称"`
  226. ActivityTime string `description:"活动时间"`
  227. Label string `description:"标签内容"`
  228. CreateTime string `description:"查看时间"`
  229. }
  230. type WxUserRaiLabelRoadShowResp struct {
  231. Theme string `description:"会议主题"`
  232. ResearcherName string `description:"研究员名称"`
  233. RoadShowTime string `description:"开始时间"`
  234. Label string `description:"标签内容"`
  235. }
  236. type WxUserRaiLabelSellerResp struct {
  237. Label string `description:"标签内容"`
  238. SysUserRealName string `description:"创建人名称"`
  239. CreateTime string `description:"创建时间"`
  240. }
  241. type WxUserRaiLabelArticleResp struct {
  242. Title string `description:"标题"`
  243. PublishDate string `description:"发布时间"`
  244. CreateTime string `description:"创建时间"`
  245. SourceText string `description:"阅读来源"`
  246. StopTime string `description:"阅读停留时间"`
  247. Label string `description:"标签内容"`
  248. }
  249. type WxUserRaiLabelRedis struct {
  250. UserId int `description:"用户ID"`
  251. SourceId int `description:"资源ID"`
  252. Label string `description:"标签内容"`
  253. SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  254. CreateTime time.Time `description:"创建时间"`
  255. RegisterPlatform int `description:"来源 1小程序,2:网页"`
  256. TableName string `description:"数据来源的表名"`
  257. }