cygx_user_record.go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. package cygx
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. type CygxUserRecord struct {
  7. UserRecordId int `orm:"column(user_record_id);pk"`
  8. OpenId string `description:"用户openid,最大长度:32"`
  9. UnionId string `description:"用户unionid,最大长度:64"`
  10. NickName string `descritpion:"用户昵称,最大长度:32"`
  11. Sex int `descritpion:"普通用户性别,1为男性,2为女性"`
  12. Province string `description:"普通用户个人资料填写的省份,最大长度:30"`
  13. City string `description:"普通用户个人资料填写的城市,最大长度:30"`
  14. Country string `description:"国家,如中国为CN,最大长度:30"`
  15. Headimgurl string `description:"用户第三方(微信)头像,最大长度:512"`
  16. CreateTime time.Time `description:"创建时间,关系添加时间、用户授权时间"`
  17. }
  18. type OpenIdList struct {
  19. OpenId string
  20. UserId int
  21. CompanyId int `description:"公司ID"`
  22. }
  23. func GetCygxUserRecord() (items []*CygxUserRecord, err error) {
  24. sql := `SELECT union_id,open_id FROM cygx_user_record `
  25. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  26. return
  27. }
  28. // 获取所有有权限的用户的opid
  29. func GetCygxUserRecordPower(chartPermissionIds string) (items []*OpenIdList, err error) {
  30. o := orm.NewOrm()
  31. sql := `SELECT
  32. cr.open_id,
  33. u.user_id,
  34. u.company_id,
  35. u.real_name,
  36. u.mobile
  37. FROM
  38. company_report_permission AS p
  39. INNER JOIN wx_user AS u ON u.company_id = p.company_id
  40. INNER JOIN user_record AS r ON r.user_id = u.user_id
  41. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  42. WHERE
  43. p.chart_permission_id IN (` + chartPermissionIds + `)
  44. AND r.create_platform = 4
  45. AND p.STATUS IN ('正式','试用','永续') GROUP BY cr.open_id `
  46. _, err = o.Raw(sql).QueryRows(&items)
  47. return
  48. }
  49. // 获取所有有权限的用户的opid
  50. func GetCygxUserRecordPowerOpenid(condition string, pars []interface{}) (items []*OpenIdList, err error) {
  51. o := orm.NewOrm()
  52. sql := `SELECT
  53. cr.open_id,
  54. u.user_id,
  55. u.company_id,
  56. u.real_name,
  57. u.mobile
  58. FROM
  59. company_report_permission AS p
  60. INNER JOIN wx_user AS u ON u.company_id = p.company_id
  61. INNER JOIN user_record AS r ON r.user_id = u.user_id
  62. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  63. WHERE
  64. 1 =1
  65. AND r.create_platform = 4 ` + condition + ` GROUP BY cr.open_id `
  66. _, err = o.Raw(sql, pars).QueryRows(&items)
  67. return
  68. }
  69. // 获取关注这个文章对应产业的用户的 openid
  70. func GetCygxUserFllowOpenid(articleId int) (items []*OpenIdList, err error) {
  71. o := orm.NewOrm()
  72. sql := `SELECT
  73. cr.open_id,
  74. f.user_id
  75. FROM
  76. cygx_xzs_choose_send AS s
  77. INNER JOIN cygx_industry_fllow AS f ON f.user_id = s.user_id
  78. INNER JOIN user_record AS r ON r.user_id = f.user_id
  79. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  80. INNER JOIN cygx_industrial_article_group_management as mg ON mg.industrial_management_id = f.industrial_management_id
  81. WHERE
  82. r.create_platform = 4
  83. AND mg.article_id = ?`
  84. _, err = o.Raw(sql, articleId).QueryRows(&items)
  85. return
  86. }
  87. // 获取关注这个产业的用户的 openid
  88. func GetCygxUserindustryFllowOpenid(industrialId int) (items []*OpenIdList, err error) {
  89. o := orm.NewOrm()
  90. sql := `SELECT
  91. cr.open_id,
  92. f.user_id
  93. FROM
  94. cygx_xzs_choose_send AS s
  95. INNER JOIN cygx_industry_fllow AS f ON f.user_id = s.user_id
  96. INNER JOIN user_record AS r ON r.user_id = f.user_id
  97. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  98. WHERE
  99. r.create_platform = 4
  100. AND f.industrial_management_id = ?`
  101. _, err = o.Raw(sql, industrialId).QueryRows(&items)
  102. return
  103. }
  104. // 获取关注这个文章对应作者的用户的 openid
  105. func GetCygxUserFllowDepartmentOpenid(articleId int) (items []*OpenIdList, err error) {
  106. o := orm.NewOrm()
  107. sql := `SELECT
  108. cr.open_id,
  109. f.user_id
  110. FROM
  111. cygx_article_department_follow AS f
  112. INNER JOIN user_record AS r ON r.user_id = f.user_id
  113. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  114. INNER JOIN cygx_article AS a ON a.department_id = f.department_id
  115. WHERE
  116. r.create_platform = 4
  117. AND a.article_id = ?`
  118. _, err = o.Raw(sql, articleId).QueryRows(&items)
  119. return
  120. }
  121. // 获取拒绝接收推送的的用户的 openid
  122. func GetCygxUserRefusetOpenid() (items []*OpenIdList, err error) {
  123. o := orm.NewOrm()
  124. sql := `SELECT
  125. cr.open_id,
  126. s.user_id
  127. FROM
  128. cygx_xzs_choose_send AS s
  129. INNER JOIN user_record AS r ON r.user_id = s.user_id
  130. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  131. WHERE
  132. r.create_platform = 4
  133. AND s.is_refuse = 1`
  134. _, err = o.Raw(sql).QueryRows(&items)
  135. return
  136. }
  137. // 获取选择策略推送的用户的openid openid
  138. func GetCygxUserFllowCeLueOpenid(categoryId int) (items []*OpenIdList, err error) {
  139. o := orm.NewOrm()
  140. sql := `SELECT
  141. cr.open_id,
  142. f.user_id
  143. FROM
  144. cygx_xzs_choose_send AS s
  145. INNER JOIN cygx_xzs_choose_category AS f ON f.user_id = s.user_id
  146. INNER JOIN user_record AS r ON r.user_id = f.user_id
  147. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  148. WHERE
  149. r.create_platform = 4
  150. AND s.is_refuse = 0
  151. AND s.is_subjective = 1
  152. AND s.is_objective = 1
  153. AND f.category_id = ?`
  154. _, err = o.Raw(sql, categoryId).QueryRows(&items)
  155. return
  156. }
  157. // 获取关注这个活动对应产业的用户的 openid
  158. func GetCygxActiviyUserFllowOpenid(activityId int) (items []*OpenIdList, err error) {
  159. o := orm.NewOrm()
  160. sql := `SELECT
  161. cr.open_id,
  162. f.user_id
  163. FROM
  164. cygx_xzs_choose_send AS s
  165. INNER JOIN cygx_industry_fllow AS f ON f.user_id = s.user_id
  166. INNER JOIN user_record AS r ON r.user_id = f.user_id
  167. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  168. INNER JOIN cygx_industrial_activity_group_management AS mg ON mg.industrial_management_id = f.industrial_management_id
  169. WHERE
  170. r.create_platform = 4
  171. AND mg.activity_id = ?`
  172. _, err = o.Raw(sql, activityId).QueryRows(&items)
  173. return
  174. }
  175. // 根据销售规模,获取所有有权限的用户的opid
  176. func GetCygxUserRecordPowerByScale(chartPermissionIds, scale string) (items []*OpenIdList, err error) {
  177. o := orm.NewOrm()
  178. sql := `SELECT
  179. cr.open_id,
  180. u.user_id,
  181. u.company_id,
  182. u.real_name,
  183. u.mobile
  184. FROM
  185. company_report_permission AS p
  186. INNER JOIN wx_user AS u ON u.company_id = p.company_id
  187. INNER JOIN user_record AS r ON r.user_id = u.user_id
  188. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  189. INNER JOIN company_product AS cp ON cp.company_id = p.company_id
  190. WHERE
  191. p.chart_permission_id IN (` + chartPermissionIds + `)
  192. AND cp.scale IN (` + scale + `)
  193. AND r.create_platform = 4
  194. AND p.STATUS IN ('正式','试用','永续') GROUP BY u.company_id `
  195. _, err = o.Raw(sql).QueryRows(&items)
  196. return
  197. }
  198. // GetCygxUserRecordPowerByActivitySet 根据活动设置,获取所有有权限的用户的opid
  199. func GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition string) (items []*OpenIdList, err error) {
  200. o := orm.NewOrm()
  201. sql := `SELECT
  202. cr.open_id,
  203. u.user_id,
  204. u.company_id,
  205. u.real_name,
  206. u.mobile
  207. FROM
  208. company_report_permission AS p
  209. INNER JOIN wx_user AS u ON u.company_id = p.company_id
  210. INNER JOIN user_record AS r ON r.user_id = u.user_id
  211. INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
  212. WHERE
  213. p.chart_permission_id IN (` + chartPermissionIds + `) ` + condition + ` AND r.create_platform = 4
  214. AND p.STATUS IN ('正式','试用','永续') GROUP BY cr.open_id `
  215. _, err = o.Raw(sql).QueryRows(&items)
  216. return
  217. }
  218. // 获取关注了查研观向小助手公众号的所有公司ID
  219. func GetCygxUserRecordCompany() (items []*OpenIdList, err error) {
  220. o := orm.NewOrm()
  221. sql := `SELECT
  222. w.company_id
  223. FROM
  224. cygx_user_record AS u
  225. INNER JOIN user_record AS r ON r.union_id = u.union_id
  226. INNER JOIN wx_user AS w ON w.user_id = r.user_id
  227. WHERE
  228. 1 = 1
  229. AND r.create_platform = 4
  230. AND w.company_id != 1
  231. GROUP BY
  232. w.company_id `
  233. _, err = o.Raw(sql).QueryRows(&items)
  234. return
  235. }
  236. type CompanyReportPermissionItem struct {
  237. CompanyId int
  238. ChartPermissionId int
  239. IsUpgrade int `description:"是否升级,1是,0否"`
  240. Remark string `description:"备注,权限名称带有主观客观这种"`
  241. PermissionName string `description:"权限名称"`
  242. }
  243. // GetCompanyReportPermissionItem 获取客户对应的权限
  244. func GetCompanyReportPermissionItem(condition string, pars []interface{}) (items []*CompanyReportPermissionItem, err error) {
  245. o := orm.NewOrm()
  246. sql := `SELECT
  247. r.company_id,
  248. r.chart_permission_id,
  249. r.is_upgrade,
  250. c.remark,
  251. c.permission_name
  252. FROM
  253. company_report_permission AS r
  254. INNER JOIN chart_permission AS c ON r.chart_permission_id = c.chart_permission_id
  255. WHERE
  256. 1 = 1
  257. AND r.product_id = 2
  258. AND r.STATUS = '正式' ` + condition
  259. _, err = o.Raw(sql, pars).QueryRows(&items)
  260. return
  261. }