search_keyword.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package cygx
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. )
  6. type KeyWordList struct {
  7. Sort int `description:"序号"`
  8. KeyWordNum int `description:"数量"`
  9. KeyWord string `description:"关键词"`
  10. }
  11. type CanDownload struct {
  12. IsCanDownload bool `description:"是否可以下载"`
  13. }
  14. func GetSearchKeyWordCount(condition string, pars []interface{}) (count int, err error) {
  15. sqlCount := ` SELECT COUNT(1) FROM( SELECT COUNT( 1 ) FROM cygx_search_key_word WHERE 1=1`
  16. if condition != "" {
  17. sqlCount += condition
  18. }
  19. sqlCount += ` GROUP BY key_word) as aa`
  20. o := orm.NewOrmUsingDB("hz_cygx")
  21. err = o.Raw(sqlCount, pars).QueryRow(&count)
  22. return
  23. }
  24. // 获取搜索关键词列表
  25. func GetSearchKeyWordList(condition string, pars []interface{}, startSize, pageSize int) (items []*KeyWordList, err error) {
  26. o := orm.NewOrmUsingDB("hz_cygx")
  27. //sql := `SELECT COUNT( key_word ) AS key_word_num, key_word FROM cygx_search_key_word WHERE 1= 1`
  28. sql := `SELECT
  29. key_word,
  30. MAX(id) as max_id ,
  31. COUNT( DISTINCT user_id ) AS key_word_num
  32. FROM
  33. cygx_search_key_word
  34. WHERE
  35. 1 = 1 `
  36. if condition != "" {
  37. sql += condition
  38. }
  39. sql += ` GROUP BY key_word ORDER BY key_word_num DESC, max_id DESC LIMIT ?,? `
  40. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  41. return
  42. }
  43. type SearchKeyWordListResp struct {
  44. List []*KeyWordList
  45. Paging *paging.PagingItem `description:"分页数据"`
  46. }
  47. type KeyWordListDownload struct {
  48. CompanyId int `description:"客户ID"`
  49. KeyWord string `description:"关键词"`
  50. CreateTime string `description:"搜索时间"`
  51. Mobile string `description:"手机号"`
  52. Email string `description:"邮箱"`
  53. RealName string `description:"客户姓名"`
  54. CompanyName string `description:"公司名称"`
  55. ProductName string `description:"产品名称"`
  56. SellerName string `description:"销售人员名称"`
  57. }
  58. // 获取7天搜索关键词列表
  59. func GetSearchKeyWordListDownload(starTime, endTime string) (items []*KeyWordListDownload, err error) {
  60. sql := `SELECT
  61. kw.*
  62. FROM
  63. cygx_search_key_word as kw
  64. WHERE
  65. kw.create_time > ?
  66. AND kw.create_time < ?
  67. AND wx.company_id > 1
  68. ORDER BY
  69. kw.create_time DESC`
  70. o := orm.NewOrmUsingDB("hz_cygx")
  71. _, err = o.Raw(sql, starTime, endTime).QueryRows(&items)
  72. return
  73. }
  74. // 销售获取7天搜索关键词列表
  75. func GetSearchKeyWordListDownloadSeller(starTime, endTime, sqlStr string) (items []*KeyWordListDownload, err error) {
  76. sql := `SELECT
  77. kw.*
  78. FROM
  79. cygx_search_key_word as kw
  80. WHERE
  81. kw.create_time > ?
  82. AND kw.create_time < ?
  83. AND wx.company_id > 1` + sqlStr +
  84. ` ORDER BY
  85. kw.create_time DESC`
  86. o := orm.NewOrmUsingDB("hz_cygx")
  87. _, err = o.Raw(sql, starTime, endTime).QueryRows(&items)
  88. return
  89. }
  90. type CompanyProduct struct {
  91. CompanyId int `description:"客户ID"`
  92. }
  93. //获取开通产品种类大于一的客户
  94. //func GetCompanyProductMoreOneList() (items []*CompanyProduct, err error) {
  95. // sql := `SELECT
  96. // company_id
  97. // FROM
  98. // company_product cp
  99. // WHERE cp.status IN ('试用','永续','正式')
  100. // GROUP BY
  101. // cp.company_id
  102. // HAVING
  103. // count( 1 )> 0`
  104. // o := orm.NewOrm()
  105. // _, err = o.Raw(sql).QueryRows(&items)
  106. // return
  107. //}
  108. func GetCompanyProductMoreOneList(starTime, endTime string) (items []*CompanyProduct, err error) {
  109. sql := `SELECT
  110. wx.company_id
  111. FROM
  112. cygx_search_key_word as kw
  113. WHERE
  114. kw.create_time > ?
  115. AND kw.create_time < ?
  116. AND wx.company_id > 1
  117. GROUP BY wx.company_id
  118. ORDER BY
  119. kw.create_time DESC`
  120. o := orm.NewOrmUsingDB("hz_cygx")
  121. _, err = o.Raw(sql, starTime, endTime).QueryRows(&items)
  122. return
  123. }
  124. type CompanyProductNameAndSeller struct {
  125. CompanyId int `description:"客户ID"`
  126. ProductName string `description:"产品名称"`
  127. SellerName string `description:"销售人员名称"`
  128. }
  129. // 获取开通产品种类大于一的客户
  130. func GetCompanyProductNameAndSellerAllList(pars []interface{}, companyIdStrr string) (items []*CompanyProductNameAndSeller, err error) {
  131. sql := `SELECT
  132. ad.real_name as seller_name,
  133. cp.product_name,
  134. cp.company_id
  135. FROM
  136. company_product as cp
  137. INNER JOIN admin AS ad ON cp.seller_id = ad.admin_id
  138. WHERE company_id IN (` + companyIdStrr + `)`
  139. o := orm.NewOrm()
  140. _, err = o.Raw(sql, pars).QueryRows(&items)
  141. return
  142. }
  143. type GetKeywordCountUrl struct {
  144. Url string `description:"下载链接"`
  145. }