cygx_user_company.go 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015
  1. package cygx
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "hongze/hz_crm_api/models/company"
  5. "strconv"
  6. )
  7. // 用户互动总数统计
  8. func GetUserInteractionTableCountByCompany(companyId int) (item *GetUserInteractionTableCountResp, err error) {
  9. o := orm.NewOrm()
  10. sql := `SELECT
  11. ( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h INNER JOIN cygx_article as art ON art.article_id = h.article_id WHERE h.company_id = u.company_id AND h.is_del = 0 AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS history_num,
  12. ( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.company_id = u.company_id AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS count_num,
  13. ( SELECT COUNT( 1 ) FROM cygx_chart_collect AS h INNER JOIN cygx_chart AS a ON h.chart_id = a.chart_id WHERE h.company_id = u.company_id AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS chart_num,
  14. ( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.company_id = u.company_id AND h.type = 1 AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS industry_fllow_num,
  15. ( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.company_id = u.company_id AND h.type = 1 AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS department_follow_num,
  16. ( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.company_id = u.company_id AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS key_word_num,
  17. ( SELECT COUNT(1 ) as count FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id INNER JOIN wx_user as wu ON wu.user_id = h.user_id WHERE h.company_id = u.company_id
  18. AND t.activity_type=1 AND h.do_fail_type = 0 AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS on_line_num,
  19. ( SELECT COUNT( 1 ) as count FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id INNER JOIN wx_user as wu ON wu.user_id = h.user_id WHERE h.company_id = u.company_id
  20. AND t.activity_type = 0 AND h.do_fail_type = 0 AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS office_num
  21. FROM
  22. company as u
  23. WHERE
  24. u.company_id = ?`
  25. err = o.Raw(sql, companyId).QueryRow(&item)
  26. return
  27. }
  28. // 获取阅读记录数量
  29. func GetCygxArticleHistoryCountByCompany(condition string) (count int, err error) {
  30. o := orm.NewOrm()
  31. sqlCount := ` SELECT COUNT( 1 ) AS count
  32. FROM
  33. (
  34. SELECT
  35. COUNT( 1 )
  36. FROM
  37. cygx_article_history_record_all AS r
  38. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  39. INNER JOIN company_product AS cp ON cp.company_id = r.company_id
  40. AND cp.product_id = 2
  41. INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  42. INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  43. LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two WHERE r.is_del = 0`
  44. if condition != "" {
  45. sqlCount += condition
  46. }
  47. sqlCount += ` GROUP BY r.id ) AS count `
  48. err = o.Raw(sqlCount).QueryRow(&count)
  49. return
  50. }
  51. // 阅读记录列表
  52. func GetCygxArticleHistoryRecordByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  53. o := orm.NewOrm()
  54. sql := ` SELECT
  55. art.title,
  56. art.article_id,
  57. art.article_id_md5,
  58. art.publish_date,
  59. art.category_name,
  60. re.chart_permission_name,
  61. re.chart_permission_id,
  62. r.create_time,
  63. r.mobile,
  64. r.user_id,
  65. r.real_name,
  66. r.source as source_platform,
  67. r.stop_time
  68. FROM
  69. cygx_article_history_record_all AS r
  70. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  71. INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  72. LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two
  73. LEFT JOIN cygx_industrial_article_group_management AS man ON man.article_id = art.article_id
  74. WHERE
  75. 1=1 AND r.is_del = 0 ` + condition + ` GROUP BY r.id ORDER BY ui.article_history_num DESC , r.create_time DESC `
  76. if startSize > 0 || pageSize > 0 {
  77. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  78. }
  79. _, err = o.Raw(sql).QueryRows(&items)
  80. return
  81. }
  82. // 获取用户参会记录数量
  83. func GetActivityMeetByCompanyCount(condition string) (count int, err error) {
  84. o := orm.NewOrm()
  85. sqlCount := `SELECT
  86. COUNT(*) AS count
  87. FROM
  88. cygx_activity_signup_detail AS r
  89. INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
  90. INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
  91. INNER JOIN wx_user AS u ON u.mobile = r.mobile
  92. WHERE
  93. 1 = 1
  94. AND r.do_fail_type = 0`
  95. if condition != "" {
  96. sqlCount += condition
  97. }
  98. err = o.Raw(sqlCount).QueryRow(&count)
  99. return
  100. }
  101. // 获取用户参会记录
  102. func GetActivityMeetByCompany(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
  103. o := orm.NewOrm()
  104. sql := `SELECT
  105. t.activity_type,
  106. r.signup_type,
  107. r.is_meeting,
  108. u.mobile,
  109. u.real_name,
  110. a.activity_name,
  111. a.chart_permission_name,
  112. a.activity_type_name,
  113. a.label,
  114. a.activity_time,
  115. r.first_meeting_time,
  116. r.last_meeting_time,
  117. r.meeting_type_str,
  118. r.meeting_authentication,
  119. r.meeting_status_str,
  120. r.duration
  121. FROM
  122. cygx_activity_signup_detail AS r
  123. INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
  124. INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
  125. INNER JOIN wx_user as u ON u.mobile = r.mobile
  126. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  127. WHERE
  128. 1 = 1
  129. AND r.do_fail_type = 0
  130. ` + condition + `
  131. GROUP BY
  132. r.id
  133. ORDER BY
  134. ui.activity_num DESC ,
  135. a.activity_time DESC `
  136. if startSize > 0 || pageSize > 0 {
  137. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  138. }
  139. _, err = o.Raw(sql).QueryRows(&item)
  140. return
  141. }
  142. // 收藏列表数量
  143. func GetCygxArticleCollectCountByCompany(condition string) (count int, err error) {
  144. o := orm.NewOrm()
  145. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_article_collect as r INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  146. INNER JOIN wx_user as u ON u.user_id = r.user_id WHERE 1=1 ` + condition
  147. err = o.Raw(sqlCount).QueryRow(&count)
  148. return
  149. }
  150. // 收藏列表
  151. func GetCygxArticleCollectByCompany(startSize, pageSize int, condition string) (items []*UserInteraction, err error) {
  152. o := orm.NewOrm()
  153. sql := ` SELECT
  154. art.title,
  155. art.article_id,
  156. art.article_id_md5,
  157. art.publish_date,
  158. re.chart_permission_name,
  159. re.chart_permission_id,
  160. r.create_time,
  161. r.mobile,
  162. r.real_name,
  163. re.match_type_name,
  164. (
  165. SELECT
  166. GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' )
  167. FROM
  168. cygx_industrial_subject AS s
  169. WHERE
  170. s.industrial_subject_id IN ( SELECT industrial_subject_id FROM cygx_industrial_article_group_subject AS sg WHERE sg.article_id = art.article_id )
  171. ) AS subject_name_str,
  172. (
  173. SELECT
  174. GROUP_CONCAT( DISTINCT man.industry_name SEPARATOR '/' )
  175. FROM
  176. cygx_industrial_management AS man
  177. WHERE
  178. man.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_article_group_management AS man_g WHERE man_g.article_id = art.article_id )
  179. ) AS industry_name
  180. FROM
  181. cygx_article_collect AS r
  182. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  183. INNER JOIN wx_user as u ON u.user_id = r.user_id
  184. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  185. LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two
  186. LEFT JOIN cygx_industrial_article_group_management AS man ON man.article_id = art.article_id
  187. WHERE
  188. 1=1 ` + condition + ` GROUP BY r.id
  189. ORDER BY ui.article_count_num DESC , r.create_time DESC `
  190. if startSize > 0 || pageSize > 0 {
  191. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  192. }
  193. _, err = o.Raw(sql).QueryRows(&items)
  194. return
  195. }
  196. // 关注产业数量
  197. func GetCygxIndustryFllowCountByCompany(condition string) (count int, err error) {
  198. o := orm.NewOrm()
  199. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_industry_fllow AS r
  200. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
  201. INNER JOIN wx_user as u ON u.user_id = r.user_id WHERE type = 1 ` + condition
  202. err = o.Raw(sqlCount).QueryRow(&count)
  203. return
  204. }
  205. // 关注产业列表
  206. func GetCygxIndustryFllowByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  207. o := orm.NewOrm()
  208. sql := `SELECT
  209. m.industry_name,
  210. u.mobile,
  211. u.real_name,
  212. r.modify_time as create_time,
  213. ( SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = m.industrial_management_id ) AS subject_name_str
  214. FROM
  215. cygx_industry_fllow AS r
  216. LEFT JOIN wx_user as u ON u.mobile = r.mobile
  217. LEFT JOIN cygx_user_interaction_num as ui ON ui.user_id = u.user_id
  218. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
  219. WHERE type = 1 ` + condition + ` ORDER BY ui.industry_fllow_num DESC, r.create_time DESC LIMIT ?,? `
  220. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  221. return
  222. }
  223. // 关注作者数量
  224. func GetCygArticleDepartmentFollowCountByCompany(condition string) (count int, err error) {
  225. o := orm.NewOrm()
  226. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_article_department_follow AS r
  227. INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
  228. INNER JOIN wx_user as u ON u.user_id = r.user_id WHERE type = 1 ` + condition
  229. err = o.Raw(sqlCount).QueryRow(&count)
  230. return
  231. }
  232. // 关注作者列表
  233. func GetCygArticleDepartmentFollowByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  234. o := orm.NewOrm()
  235. sql := `SELECT
  236. m.department_id,
  237. m.nick_name,
  238. r.modify_time as create_time,
  239. r.mobile,
  240. r.real_name,
  241. m.department_id,
  242. i.industry_name,
  243. a.title,
  244. a.article_id,
  245. ( SELECT MAX( create_time ) FROM cygx_article_department_follow WHERE user_id = r.user_id ) AS max_time,
  246. ( SELECT GROUP_CONCAT( DISTINCT i.industry_name SEPARATOR '/' ) FROM cygx_industrial_management AS i WHERE i.industrial_management_id = mg.industrial_management_id ) AS industry_name,
  247. ( SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = i.industrial_management_id ) AS subject_name_str
  248. FROM
  249. cygx_article_department_follow AS r
  250. INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
  251. INNER JOIN cygx_article AS a ON a.department_id = m.department_id
  252. INNER JOIN wx_user as u ON u.user_id = r.user_id
  253. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  254. LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  255. LEFT JOIN cygx_industrial_management AS i ON i.industrial_management_id = mg.industrial_management_id
  256. WHERE r.type = 1 ` + condition + ` GROUP BY r.id
  257. ORDER BY ui.department_follow_num DESC , max_time DESC LIMIT ?,? `
  258. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  259. return
  260. }
  261. // 用户搜索关键词统计
  262. func GetCygxSearchKeyWordCountBuCompany(condition string) (count int, err error) {
  263. o := orm.NewOrm()
  264. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_search_key_word as r WHERE 1= 1 ` + condition
  265. err = o.Raw(sqlCount).QueryRow(&count)
  266. return
  267. }
  268. // 用户搜索关键词列表
  269. func GetCygxSearchKeyWordByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  270. o := orm.NewOrm()
  271. sql := `SELECT
  272. r.key_word,
  273. r.create_time,
  274. r.mobile,
  275. r.real_name
  276. FROM
  277. cygx_search_key_word as r
  278. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  279. WHERE 1= 1 ` + condition + `
  280. ORDER BY ui.key_word_num DESC, r.create_time DESC LIMIT ?,? `
  281. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  282. return
  283. }
  284. // 用户专项产业调研统计
  285. func GetCygxActivitySpecialTripCountByCompany(condition string) (count int, err error) {
  286. o := orm.NewOrm()
  287. sqlCount := ` SELECT
  288. COUNT( 1 )
  289. FROM
  290. cygx_activity_special_meeting_detail AS r
  291. INNER JOIN cygx_activity_special AS a ON a.activity_id = r.activity_id
  292. WHERE
  293. 1 = 1
  294. AND a.publish_status = 1 AND a.activity_time_end < NOW() ` + condition
  295. err = o.Raw(sqlCount).QueryRow(&count)
  296. return
  297. }
  298. // 用户专项产业调研列表
  299. func CygxActivitySpecialTripByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  300. o := orm.NewOrm()
  301. sql := `SELECT
  302. a.research_theme AS activity_name,
  303. a.chart_permission_name,
  304. a.activity_time_text_by_day AS activity_time_text,
  305. a.city,
  306. a.special_type AS activity_type,
  307. r.mobile,
  308. r.activity_id,
  309. r.real_name,
  310. r.is_meeting
  311. FROM
  312. cygx_activity_special_meeting_detail AS r
  313. INNER JOIN cygx_activity_special AS a ON a.activity_id = r.activity_id
  314. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  315. WHERE 1= 1 AND a.publish_status = 1 AND a.activity_time_end < NOW() ` + condition + `
  316. ORDER BY ui.trip_num DESC, r.create_time DESC LIMIT ?,? `
  317. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  318. return
  319. }
  320. // 用户音视频浏览统计
  321. func GetCygxRoadshowCountByCompany(condition string) (count int, err error) {
  322. o := orm.NewOrm()
  323. sqlCount := `SELECT
  324. COUNT( 1 ) total
  325. FROM
  326. (
  327. SELECT
  328. ""
  329. FROM
  330. cygx_micro_roadshow_video_history AS r
  331. INNER JOIN cygx_micro_roadshow_video AS v ON r.video_id = v.video_id
  332. WHERE 1=1 ` + condition + ` UNION ALL
  333. SELECT
  334. ""
  335. FROM
  336. cygx_activity_video_history AS r
  337. INNER JOIN cygx_activity_video AS v ON r.video_id = v.video_id
  338. WHERE 1=1 ` + condition + ` UNION ALL
  339. SELECT
  340. ""
  341. FROM
  342. cygx_activity_voice_history AS r
  343. INNER JOIN cygx_activity_voice AS v ON r.activity_id = v.activity_id
  344. WHERE 1=1 ` + condition + `)z `
  345. err = o.Raw(sqlCount).QueryRow(&count)
  346. return
  347. }
  348. // 用户音视频浏览列表
  349. func GetCygxRoadshowByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  350. o := orm.NewOrm()
  351. sql := `SELECT
  352. v.video_name AS media_title,
  353. r.create_time,
  354. r.real_name,
  355. r.mobile,
  356. ui.roadshow_num,
  357. "逻辑解析" AS file_type
  358. FROM
  359. cygx_micro_roadshow_video_history AS r
  360. INNER JOIN cygx_micro_roadshow_video AS v ON r.video_id = v.video_id
  361. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  362. WHERE 1=1 ` + condition + ` UNION ALL
  363. SELECT
  364. v.video_name AS media_title,
  365. r.create_time,
  366. r.real_name,
  367. r.mobile,
  368. ui.roadshow_num,
  369. "路演回放" AS file_type
  370. FROM
  371. cygx_activity_video_history AS r
  372. INNER JOIN cygx_activity_video AS v ON r.video_id = v.video_id
  373. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  374. WHERE 1=1 ` + condition + ` UNION ALL
  375. SELECT
  376. v.voice_name AS media_title,
  377. r.create_time,
  378. r.real_name,
  379. r.mobile,
  380. ui.roadshow_num,
  381. "路演回放" AS file_type
  382. FROM
  383. cygx_activity_voice_history AS r
  384. INNER JOIN cygx_activity_voice AS v ON r.activity_id = v.activity_id
  385. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  386. WHERE 1=1 ` + condition + `
  387. ORDER BY roadshow_num DESC ,create_time DESC LIMIT ?,? `
  388. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  389. return
  390. }
  391. // 用户音视频浏览列表
  392. func GetCygxRoadshowByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  393. o := orm.NewOrm()
  394. sql := `SELECT
  395. v.video_name AS media_title,
  396. r.create_time,
  397. r.real_name,
  398. r.mobile,
  399. r.company_name,
  400. cp.seller_name,
  401. ci.roadshow_num,
  402. ui.roadshow_num AS ui_roadshow_num,
  403. "逻辑解析" AS file_type
  404. FROM
  405. cygx_micro_roadshow_video_history AS r
  406. INNER JOIN cygx_micro_roadshow_video AS v ON r.video_id = v.video_id
  407. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  408. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  409. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  410. WHERE 1=1 ` + condition + ` UNION ALL
  411. SELECT
  412. v.video_name AS media_title,
  413. r.create_time,
  414. r.real_name,
  415. r.mobile,
  416. r.company_name,
  417. cp.seller_name,
  418. ci.roadshow_num,
  419. ui.roadshow_num AS ui_roadshow_num,
  420. "路演回放" AS file_type
  421. FROM
  422. cygx_activity_video_history AS r
  423. INNER JOIN cygx_activity_video AS v ON r.video_id = v.video_id
  424. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  425. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  426. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  427. WHERE 1=1 ` + condition + ` UNION ALL
  428. SELECT
  429. v.voice_name AS media_title,
  430. r.create_time,
  431. r.real_name,
  432. r.mobile,
  433. r.company_name,
  434. cp.seller_name,
  435. ci.roadshow_num,
  436. ui.roadshow_num AS ui_roadshow_num,
  437. "路演回放" AS file_type
  438. FROM
  439. cygx_activity_voice_history AS r
  440. INNER JOIN cygx_activity_voice AS v ON r.activity_id = v.activity_id
  441. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  442. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  443. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  444. WHERE 1=1 ` + condition + `
  445. ORDER BY roadshow_num DESC ,ui_roadshow_num DESC ,create_time DESC LIMIT ?,? `
  446. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  447. return
  448. }
  449. // 根据时间获取机构互动总数统计
  450. func GetCompanyInteractionTableCountBytime(companyId int, startDate, endDate string) (item *GetUserInteractionTableCountResp, err error) {
  451. o := orm.NewOrm()
  452. sql := `SELECT
  453. ( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h INNER JOIN cygx_article as art ON art.article_id = h.article_id WHERE h.company_id = u.company_id AND h.is_del = 0 AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS history_num,
  454. ( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.company_id = u.company_id AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS count_num,
  455. ( SELECT COUNT( 1 ) FROM cygx_chart_collect AS h WHERE h.company_id = u.company_id AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS chart_num,
  456. ( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.company_id = u.company_id AND h.type = 1 AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS industry_fllow_num,
  457. ( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.company_id = u.company_id AND h.type = 1 AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS department_follow_num,
  458. ( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.company_id = u.company_id AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS key_word_num,
  459. ( SELECT COUNT( DISTINCT a.activity_id ) as count FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id WHERE h.company_id = u.company_id
  460. AND t.activity_type=1 AND h.do_fail_type = 0 AND a.activity_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS on_line_num,
  461. ( SELECT COUNT( DISTINCT a.activity_id ) as count FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id WHERE h.company_id = u.company_id
  462. AND t.activity_type = 0 AND h.do_fail_type = 0 AND a.activity_time BETWEEN '` + startDate + `'AND '` + endDate + `' AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS office_num
  463. FROM
  464. company as u
  465. WHERE
  466. u.company_id = ?`
  467. err = o.Raw(sql, companyId).QueryRow(&item)
  468. return
  469. }
  470. // 机构阅读记录列表
  471. func GetCygxArticleHistoryRecordByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  472. o := orm.NewOrm()
  473. sql := ` SELECT
  474. art.title,
  475. art.article_id,
  476. art.article_id_md5,
  477. art.publish_date,
  478. art.category_name,
  479. re.chart_permission_name,
  480. re.chart_permission_id,
  481. r.create_time,
  482. r.mobile,
  483. r.user_id,
  484. r.company_name,
  485. cp.seller_name,
  486. r.real_name,
  487. r.stop_time,
  488. r.source as source_platform,
  489. ui.article_history_num
  490. FROM
  491. cygx_article_history_record_all AS r
  492. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  493. INNER JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  494. INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  495. INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  496. LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two
  497. WHERE
  498. 1=1 AND r.is_del = 0 ` + condition + ` GROUP BY r.id ORDER BY ci.article_history_num DESC ,ui.article_history_num DESC , r.create_time DESC `
  499. if startSize > 0 || pageSize > 0 {
  500. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  501. }
  502. _, err = o.Raw(sql).QueryRows(&items)
  503. return
  504. }
  505. // 获取机构参会记录
  506. func GetActivityMeetByCompanyList(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
  507. o := orm.NewOrm()
  508. sql := `SELECT
  509. t.activity_type,
  510. r.signup_type,
  511. r.is_meeting,
  512. u.mobile,
  513. u.real_name,
  514. a.activity_name,
  515. a.chart_permission_name,
  516. a.activity_type_name,
  517. a.label,
  518. a.activity_time,
  519. r.first_meeting_time,
  520. r.last_meeting_time,
  521. r.meeting_type_str,
  522. r.meeting_authentication,
  523. r.meeting_status_str,
  524. r.company_name,
  525. cp.seller_name,
  526. r.real_name,
  527. r.duration
  528. FROM
  529. cygx_activity_signup_detail AS r
  530. INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
  531. INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
  532. INNER JOIN wx_user as u ON u.mobile = r.mobile
  533. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  534. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  535. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  536. WHERE
  537. 1 = 1
  538. AND r.do_fail_type = 0
  539. ` + condition + `
  540. GROUP BY
  541. r.id
  542. ORDER BY
  543. ci.activity_num DESC ,
  544. ui.activity_num DESC ,
  545. a.activity_time DESC `
  546. if startSize > 0 || pageSize > 0 {
  547. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  548. }
  549. _, err = o.Raw(sql).QueryRows(&item)
  550. return
  551. }
  552. // 机构收藏列表
  553. func GetCygxArticleCollectByCompanyList(startSize, pageSize int, condition string) (items []*UserInteraction, err error) {
  554. o := orm.NewOrm()
  555. sql := ` SELECT
  556. art.title,
  557. art.article_id,
  558. art.article_id_md5,
  559. art.publish_date,
  560. re.chart_permission_name,
  561. re.chart_permission_id,
  562. r.create_time,
  563. r.mobile,
  564. r.real_name,
  565. re.match_type_name,
  566. r.company_name,
  567. cp.seller_name,
  568. (
  569. SELECT
  570. GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' )
  571. FROM
  572. cygx_industrial_subject AS s
  573. WHERE
  574. s.industrial_subject_id IN ( SELECT industrial_subject_id FROM cygx_industrial_article_group_subject AS sg WHERE sg.article_id = art.article_id )
  575. ) AS subject_name_str,
  576. (
  577. SELECT
  578. GROUP_CONCAT( DISTINCT man.industry_name SEPARATOR '/' )
  579. FROM
  580. cygx_industrial_management AS man
  581. WHERE
  582. man.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_article_group_management AS man_g WHERE man_g.article_id = art.article_id )
  583. ) AS industry_name
  584. FROM
  585. cygx_article_collect AS r
  586. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  587. INNER JOIN wx_user as u ON u.user_id = r.user_id
  588. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  589. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  590. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  591. LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two
  592. LEFT JOIN cygx_industrial_article_group_management AS man ON man.article_id = art.article_id
  593. WHERE
  594. 1=1 ` + condition + ` GROUP BY r.id
  595. ORDER BY ui.article_count_num DESC ,ui.article_count_num DESC , r.create_time DESC `
  596. if startSize > 0 || pageSize > 0 {
  597. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  598. }
  599. _, err = o.Raw(sql).QueryRows(&items)
  600. return
  601. }
  602. // 关注产业列表
  603. func GetCygxIndustryFllowByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  604. o := orm.NewOrm()
  605. sql := `SELECT
  606. m.industry_name,
  607. u.mobile,
  608. u.real_name,
  609. r.modify_time as create_time,
  610. cp.company_name,
  611. cp.seller_name,
  612. ( SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = m.industrial_management_id ) AS subject_name_str
  613. FROM
  614. cygx_industry_fllow AS r
  615. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
  616. INNER JOIN wx_user as u ON u.user_id = r.user_id
  617. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  618. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  619. LEFT JOIN cygx_user_interaction_num as ui ON ui.user_id = u.user_id
  620. WHERE type = 1 ` + condition + ` ORDER BY ci.industry_fllow_num DESC,ui.industry_fllow_num DESC, r.create_time DESC LIMIT ?,? `
  621. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  622. return
  623. }
  624. // 关注作者机构列表
  625. func GetCygArticleDepartmentFollowByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  626. o := orm.NewOrm()
  627. sql := `SELECT
  628. m.department_id,
  629. m.nick_name,
  630. r.modify_time as create_time,
  631. r.mobile,
  632. r.real_name,
  633. cp.company_name,
  634. cp.seller_name,
  635. m.department_id,
  636. i.industry_name,
  637. a.title,
  638. a.article_id,
  639. ( SELECT MAX( create_time ) FROM cygx_article_department_follow WHERE user_id = r.user_id ) AS max_time,
  640. ( SELECT GROUP_CONCAT( DISTINCT i.industry_name SEPARATOR '/' ) FROM cygx_industrial_management AS i WHERE i.industrial_management_id = mg.industrial_management_id ) AS industry_name,
  641. ( SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = i.industrial_management_id ) AS subject_name_str
  642. FROM
  643. cygx_article_department_follow AS r
  644. INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
  645. INNER JOIN cygx_article AS a ON a.department_id = m.department_id
  646. INNER JOIN wx_user as u ON u.user_id = r.user_id
  647. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  648. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  649. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  650. LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  651. LEFT JOIN cygx_industrial_management AS i ON i.industrial_management_id = mg.industrial_management_id
  652. WHERE r.type = 1 ` + condition + ` GROUP BY r.id
  653. ORDER BY ci.department_follow_num DESC ,ui.department_follow_num DESC , max_time DESC LIMIT ?,? `
  654. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  655. return
  656. }
  657. // 用户搜索关键词列表
  658. func GetCygxSearchKeyWordByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  659. o := orm.NewOrm()
  660. sql := `SELECT
  661. r.key_word,r.create_time,
  662. r.mobile,
  663. r.source,
  664. cp.company_name,
  665. cp.seller_name,
  666. r.real_name
  667. FROM
  668. cygx_search_key_word as r
  669. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  670. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  671. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  672. WHERE 1= 1 ` + condition + `
  673. ORDER BY ci.key_word_num DESC,ui.key_word_num DESC, r.create_time DESC LIMIT ?,? `
  674. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  675. return
  676. }
  677. // 用户搜索关键词列表
  678. func GetCygxActivitySpecialTripByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
  679. o := orm.NewOrm()
  680. sql := `SELECT
  681. a.research_theme AS activity_name,
  682. a.chart_permission_name,
  683. a.activity_time_text_by_day AS activity_time_text,
  684. a.city,
  685. a.special_type AS activity_type,
  686. r.mobile,
  687. r.real_name,
  688. r.is_meeting,
  689. r.activity_id,
  690. cp.company_name,
  691. cp.seller_name,
  692. r.real_name
  693. FROM
  694. cygx_activity_special_trip as r
  695. INNER JOIN cygx_activity_special AS a ON a.activity_id = r.activity_id
  696. LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
  697. LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
  698. LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
  699. WHERE 1= 1 ` + condition + `
  700. ORDER BY ci.trip_num DESC,ui.trip_num DESC, r.create_time DESC LIMIT ?,? `
  701. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  702. return
  703. }
  704. // 通过纪要ID获取活动详情
  705. func GetTableCompanyList() (item *GetUserInteractionTableCountResp, err error) {
  706. o := orm.NewOrm()
  707. sql := `SELECT
  708. SUM( article_history_num ) AS history_num,
  709. SUM( article_count_num ) AS count_num,
  710. SUM( industry_fllow_num ) AS industry_fllow_num,
  711. SUM( department_follow_num ) AS department_follow_num,
  712. SUM( key_word_num ) AS key_word_num,
  713. SUM( activity_num ) AS activity_num,
  714. SUM( chart_count_num ) AS chart_num
  715. FROM
  716. cygx_company_interaction_num
  717. LIMIT 1`
  718. err = o.Raw(sql).QueryRow(&item)
  719. return
  720. }
  721. // 获取用户参会记录根据销售分组
  722. func GetActivityMeetBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
  723. o := orm.NewOrm()
  724. sqlCount := ` SELECT
  725. p.seller_id as admin_id,count(DISTINCT(r.company_id)) num,GROUP_CONCAT(DISTINCT r.company_id SEPARATOR ',') AS company_ids
  726. FROM
  727. cygx_activity_signup AS r
  728. INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
  729. INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
  730. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  731. INNER JOIN company_product AS p ON p.company_id=r.company_id
  732. WHERE
  733. 1 = 1
  734. AND r.do_fail_type = 0
  735. AND p.product_id = 2
  736. `
  737. if condition != "" {
  738. sqlCount += condition
  739. }
  740. sqlCount += ` GROUP BY p.seller_id `
  741. _, err = o.Raw(sqlCount).QueryRows(&list)
  742. return
  743. }
  744. // 收藏列表数量根据销售分组
  745. func GetCygxArticleCollectCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
  746. o := orm.NewOrm()
  747. sqlCount := ` SELECT
  748. p.seller_id as admin_id,count(DISTINCT(r.company_id)) num,GROUP_CONCAT(DISTINCT r.company_id SEPARATOR ',') AS company_ids
  749. FROM
  750. cygx_article_collect AS r
  751. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  752. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  753. INNER JOIN company_product AS p ON p.company_id=r.company_id
  754. WHERE
  755. 1 = 1
  756. AND p.product_id=2 ` + condition
  757. sqlCount += ` GROUP BY p.seller_id `
  758. _, err = o.Raw(sqlCount).QueryRows(&list)
  759. return
  760. }
  761. // 关注产业数量根据销售分组
  762. func GetCygxIndustryFllowCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
  763. o := orm.NewOrm()
  764. sqlCount := ` SELECT
  765. p.seller_id AS admin_id,
  766. count(
  767. DISTINCT ( r.company_id )) num,
  768. GROUP_CONCAT( DISTINCT r.company_id SEPARATOR ',' ) AS company_ids
  769. FROM
  770. cygx_industry_fllow AS r
  771. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
  772. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  773. INNER JOIN company_product AS p ON p.company_id = r.company_id
  774. WHERE
  775. type = 1
  776. AND p.product_id = 2
  777. ` + condition
  778. sqlCount += ` GROUP BY p.seller_id `
  779. _, err = o.Raw(sqlCount).QueryRows(&list)
  780. return
  781. }
  782. // 关注作者数量根据销售分组
  783. func GetCygArticleDepartmentFollowCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
  784. o := orm.NewOrm()
  785. sqlCount := ` SELECT
  786. p.seller_id AS admin_id,
  787. count(
  788. DISTINCT ( r.company_id )) num,
  789. GROUP_CONCAT( DISTINCT r.company_id SEPARATOR ',' ) AS company_ids
  790. FROM
  791. cygx_article_department_follow AS r
  792. INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
  793. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  794. INNER JOIN company_product AS p ON p.company_id = r.company_id
  795. WHERE
  796. type = 1
  797. AND p.product_id = 2 ` + condition
  798. sqlCount += ` GROUP BY p.seller_id `
  799. _, err = o.Raw(sqlCount).QueryRows(&list)
  800. return
  801. }
  802. // 用户搜索关键词统计根据销售分组
  803. func GetCygxSearchKeyWordCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
  804. o := orm.NewOrm()
  805. sqlCount := ` SELECT
  806. p.seller_id AS admin_id,
  807. count(
  808. DISTINCT ( r.company_id )) num,
  809. GROUP_CONCAT( DISTINCT r.company_id SEPARATOR ',' ) AS company_ids
  810. FROM
  811. cygx_search_key_word AS r
  812. INNER JOIN company_product AS p ON p.company_id = r.company_id
  813. WHERE
  814. 1 = 1
  815. AND p.product_id = 2 ` + condition
  816. sqlCount += ` GROUP BY p.seller_id `
  817. _, err = o.Raw(sqlCount).QueryRows(&list)
  818. return
  819. }
  820. type CompanyAndCount struct {
  821. CompanyId int
  822. Count int
  823. }
  824. // 获取用户参会记录数量根据公司分组
  825. func GetActivityMeetGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  826. o := orm.NewOrm()
  827. sqlCount := ` SELECT
  828. r.company_id,COUNT(*) AS count
  829. FROM
  830. cygx_activity_signup AS r
  831. INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
  832. INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
  833. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  834. WHERE
  835. 1 = 1
  836. AND r.do_fail_type = 0 `
  837. if condition != "" {
  838. sqlCount += condition
  839. }
  840. sqlCount += ` GROUP BY r.company_id `
  841. _, err = o.Raw(sqlCount).QueryRows(&list)
  842. return
  843. }
  844. // 收藏列表数量根据公司分组
  845. func GetCygxArticleCollectCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  846. o := orm.NewOrm()
  847. sqlCount := ` SELECT
  848. r.company_id,
  849. COUNT(*) AS count
  850. FROM
  851. cygx_article_collect AS r
  852. INNER JOIN cygx_article AS art ON art.article_id = r.article_id
  853. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  854. WHERE
  855. 1 = 1 `
  856. if condition != "" {
  857. sqlCount += condition
  858. }
  859. sqlCount += ` GROUP BY r.company_id `
  860. _, err = o.Raw(sqlCount).QueryRows(&list)
  861. return
  862. }
  863. // 关注产业数量根据公司分组
  864. func GetCygxIndustryFllowCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  865. o := orm.NewOrm()
  866. sqlCount := ` SELECT
  867. r.company_id,
  868. COUNT(*) AS count
  869. FROM
  870. cygx_industry_fllow AS r
  871. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
  872. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  873. WHERE
  874. type = 1 `
  875. if condition != "" {
  876. sqlCount += condition
  877. }
  878. sqlCount += ` GROUP BY r.company_id `
  879. _, err = o.Raw(sqlCount).QueryRows(&list)
  880. return
  881. }
  882. // 关注作者数量根据公司分组
  883. func GetCygArticleDepartmentFollowCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  884. o := orm.NewOrm()
  885. sqlCount := ` SELECT
  886. r.company_id,
  887. COUNT(*) AS count
  888. FROM
  889. cygx_article_department_follow AS r
  890. INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
  891. INNER JOIN wx_user AS u ON u.user_id = r.user_id
  892. WHERE
  893. type = 1 `
  894. if condition != "" {
  895. sqlCount += condition
  896. }
  897. sqlCount += ` GROUP BY r.company_id `
  898. _, err = o.Raw(sqlCount).QueryRows(&list)
  899. return
  900. }
  901. // 用户搜索关键词统计
  902. func GetCygxSearchKeyWordCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  903. o := orm.NewOrm()
  904. sqlCount := ` SELECT
  905. r.company_id,
  906. COUNT(*) AS count
  907. FROM
  908. cygx_search_key_word AS r
  909. WHERE
  910. 1 = 1 ` + condition
  911. if condition != "" {
  912. sqlCount += condition
  913. }
  914. sqlCount += ` GROUP BY r.company_id `
  915. _, err = o.Raw(sqlCount).QueryRows(&list)
  916. return
  917. }
  918. func GetChartCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  919. o := orm.NewOrm()
  920. sqlCount := ` SELECT
  921. r.company_id,
  922. COUNT(*) AS count
  923. FROM
  924. cygx_chart_collect AS r
  925. INNER JOIN cygx_chart_all AS a ON a.chart_id = r.chart_id
  926. WHERE
  927. 1 = 1 ` + condition
  928. if condition != "" {
  929. sqlCount += condition
  930. }
  931. sqlCount += ` GROUP BY r.company_id `
  932. _, err = o.Raw(sqlCount).QueryRows(&list)
  933. return
  934. }
  935. func GetCompanyCountGroupBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
  936. o := orm.NewOrm()
  937. sqlCount := ` SELECT
  938. seller_id AS admin_id,
  939. count(
  940. DISTINCT ( company_id )) num,
  941. GROUP_CONCAT( DISTINCT company_id SEPARATOR ',' ) AS company_ids
  942. FROM company_product
  943. WHERE 1=1 AND status="试用" ` + condition
  944. if condition != "" {
  945. sqlCount += condition
  946. }
  947. sqlCount += ` GROUP BY seller_id `
  948. _, err = o.Raw(sqlCount).QueryRows(&list)
  949. return
  950. }
  951. // 获取文章阅读记录根据公司分组
  952. func GetArticleHistoryGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
  953. o := orm.NewOrm()
  954. sqlCount := ` SELECT
  955. r.company_id,COUNT(*) AS count
  956. FROM
  957. cygx_article_history_record_all AS r
  958. WHERE
  959. 1 = 1
  960. AND r.is_del = 0
  961. AND r.company_id >0 `
  962. if condition != "" {
  963. sqlCount += condition
  964. }
  965. sqlCount += ` GROUP BY r.company_id `
  966. _, err = o.Raw(sqlCount).QueryRows(&list)
  967. return
  968. }