user.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "hongze/hongze_cygx/utils"
  7. "time"
  8. )
  9. type UserDetail struct {
  10. Headimgurl string `description:"用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空"`
  11. Mobile string `description:"手机号码"`
  12. Email string `description:"邮箱"`
  13. NickName string `description:"用户昵称"`
  14. RealName string `description:"用户实际名称"`
  15. CompanyName string `description:"公司名称"`
  16. PermissionName string `description:"拥有权限分类,多个用英文逗号分隔"`
  17. HasPermission int `description:"1:无该行业权限,不存在权益客户下,2:潜在客户,未提交过申请,3:潜在客户,已提交过申请"`
  18. SellerMobile string `description:"销售手机号"`
  19. SellerName string `description:"销售名称"`
  20. Note string `json:"-" description:"申请提交时,公司名称"`
  21. CountryCode string `description:"区号"`
  22. OutboundMobile string `description:"外呼手机号"`
  23. OutboundCountryCode string `description:"外呼手机号区号"`
  24. ConNum int `description:"收藏"`
  25. HistoryNum int `description:"足迹"`
  26. ScheduleNum int `description:"活动日程"`
  27. }
  28. func GetUserDetailByUserId(userId int) (item *UserDetail, err error) {
  29. o := orm.NewOrm()
  30. sql := `SELECT *,
  31. ( SELECT SUM(count) AS count FROM (
  32. SELECT COUNT(1) AS count FROM cygx_article_collect AS a
  33. INNER JOIN cygx_article as art ON art.article_id = a.article_id
  34. WHERE a.user_id=? AND art.publish_status = 1
  35. UNION ALL
  36. SELECT COUNT(1) AS count FROM cygx_yanxuan_special_collect AS a
  37. INNER JOIN cygx_yanxuan_special as b ON b.id = a.yanxuan_special_id
  38. WHERE a.user_id=? AND b.status = 3) AS c ) AS con_num,
  39. (SELECT COUNT( 1 ) AS count FROM
  40. ( SELECT count(*) FROM cygx_article_history_record AS a WHERE a.user_id = ? GROUP BY a.article_id ) b ) AS history_num ,
  41. ( SELECT COUNT( 1 ) AS count FROM cygx_my_schedule AS a INNER JOIN cygx_activity AS art ON art.activity_id = a.activity_id WHERE
  42. a.user_id = ? AND art.publish_status = 1 AND art.active_state != 3 ) AS schedule_num
  43. FROM wx_user WHERE user_id = ? `
  44. err = o.Raw(sql, userId, userId, userId, userId, userId).QueryRow(&item)
  45. return
  46. }
  47. type UserPermission struct {
  48. CompanyName string `description:"公司名称"`
  49. ChartPermissionName string `description:"权限"`
  50. }
  51. type LoginReq struct {
  52. LoginType int `description:"登录方式:1:微信手机,2:邮箱,3:自定义手机登录"`
  53. Mobile string `description:"手机号"`
  54. Email string `description:"邮箱"`
  55. VCode string `description:"验证码"`
  56. CountryCode string `description:"区号"`
  57. ShareUserCode string `description:"分享人的分享码"`
  58. }
  59. func PcBindMobile(unionId, mobile string, userId, loginType int) (wxUserId int, err error) {
  60. //loginType 登录方式:1:手机,2:邮箱
  61. sql := ``
  62. if loginType == 1 {
  63. sql = `SELECT * FROM wx_user WHERE mobile = ? `
  64. } else {
  65. sql = "SELECT * FROM wx_user WHERE email = ? "
  66. }
  67. user := new(WxUser)
  68. o := orm.NewOrm()
  69. err = o.Raw(sql, mobile).QueryRow(&user)
  70. if err != nil && err.Error() != utils.ErrNoRow() {
  71. return
  72. }
  73. if user == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
  74. msql := ``
  75. if loginType == 1 {
  76. msql = "UPDATE wx_user SET mobile = ?,bind_account = ? WHERE union_id = ? "
  77. } else {
  78. msql = "UPDATE wx_user SET email = ?,bind_account = ? WHERE union_id = ? "
  79. }
  80. _, err = o.Raw(msql, mobile, mobile, unionId).Exec()
  81. wxUserId = userId
  82. } else {
  83. if user.UnionId == "" {
  84. sql = `SELECT * FROM wx_user WHERE union_id = ? `
  85. userInfo := new(WxUser)
  86. o := orm.NewOrm()
  87. err = o.Raw(sql, unionId).QueryRow(&userInfo)
  88. if err != nil {
  89. return
  90. }
  91. var maxRegisterTime time.Time
  92. if user.RegisterTime.Before(userInfo.RegisterTime) {
  93. maxRegisterTime = user.RegisterTime
  94. } else {
  95. maxRegisterTime = userInfo.RegisterTime
  96. }
  97. wxUserId = user.UserId
  98. dsql := ` DELETE FROM wx_user WHERE union_id = ? `
  99. _, err = o.Raw(dsql, unionId).Exec()
  100. if err != nil {
  101. return wxUserId, err
  102. }
  103. msql := ` UPDATE wx_user SET union_id=?,register_time=?,province=?,city=?,country=?,headimgurl=?,unionid=?,sex=? WHERE user_id = ? `
  104. _, err = o.Raw(msql, unionId, maxRegisterTime, userInfo.Province, userInfo.City, userInfo.Country, userInfo.Headimgurl, unionId, userInfo.Sex, user.UserId).Exec()
  105. wxUserId = user.UserId
  106. } else {
  107. sql = `SELECT * FROM wx_user WHERE user_id = ? `
  108. userInfo := new(WxUser)
  109. o := orm.NewOrm()
  110. err = o.Raw(sql, userId).QueryRow(&userInfo)
  111. if err != nil && err.Error() != utils.ErrNoRow() {
  112. return
  113. }
  114. if user.UserId != userId {
  115. dsql := ` DELETE FROM wx_user WHERE user_id = ? `
  116. _, err = o.Raw(dsql, userId).Exec()
  117. if err != nil {
  118. return user.UserId, err
  119. }
  120. }
  121. msql := ` UPDATE wx_user SET union_id=?,province=?,city=?,country=?,headimgurl=?,unionid=?,sex=? WHERE user_id = ? `
  122. _, err = o.Raw(msql, unionId, userInfo.Province, userInfo.City, userInfo.Country, userInfo.Headimgurl, unionId, userInfo.Sex, user.UserId).Exec()
  123. wxUserId = userId
  124. }
  125. }
  126. return
  127. }
  128. type LoginResp struct {
  129. UserId int `description:"用户id"`
  130. Authorization string `description:"Token"`
  131. Headimgurl string `description:"用户头像"`
  132. Mobile string `description:"手机号"`
  133. Email string `description:"邮箱"`
  134. CompanyName string `description:"客户名称"`
  135. Status string `description:"状态"`
  136. EndDate string `description:"到期日期"`
  137. ProductName string `description:"客户类型名称"`
  138. IsPotential bool `description:"是否是潜在"`
  139. }
  140. type CheckStatusResp struct {
  141. IsBind bool `description:"true:需要绑定手机号或邮箱,false:不需要绑定手机号或邮箱"`
  142. IsAuth bool `description:"true:需要授权,false:不需要授权"`
  143. PermissionName string `description:"拥有权限分类,多个用英文逗号分隔"`
  144. }
  145. func GetArticleUserCollectCount(userId int) (count int, err error) {
  146. sql := `SELECT SUM(count) AS count FROM (
  147. SELECT COUNT(1) AS count FROM cygx_article_collect AS a
  148. INNER JOIN cygx_article as art ON art.article_id = a.article_id
  149. WHERE a.user_id=? AND art.publish_status = 1
  150. UNION ALL
  151. SELECT COUNT(1) AS count FROM cygx_yanxuan_special_collect AS a
  152. INNER JOIN cygx_yanxuan_special as b ON b.id = a.yanxuan_special_id
  153. WHERE a.user_id=? AND b.status = 3) AS c
  154. `
  155. err = orm.NewOrm().Raw(sql, userId, userId).QueryRow(&count)
  156. return
  157. }
  158. func GetArticleUserCollectList(startSize, pageSize, userId int) (items []*ArticleReportBillboardResp, err error) {
  159. sql := `SELECT
  160. a.article_id,
  161. art.category_id,
  162. '' AS title,
  163. '' AS publish_date,
  164. '' AS nick_name,
  165. 0 AS article_type_id,
  166. '' AS article_type_name,
  167. 0 AS is_special,
  168. '' AS special_tags,
  169. 0 AS pv,
  170. 0 AS collect_num,
  171. 0 AS my_collect_num,
  172. a.create_time AS create_time
  173. FROM cygx_article_collect AS a
  174. INNER JOIN cygx_article as art ON art.article_id = a.article_id
  175. WHERE a.user_id=?
  176. UNION ALL
  177. SELECT
  178. a.id AS article_id,
  179. 0 AS category_id,
  180. a.title AS title,
  181. date_format( a.publish_time, '%Y-%m-%d' ) AS publish_date,
  182. b.nick_name AS nick_name,
  183. -1 AS article_type_id,
  184. '' AS article_type_name,
  185. 1 AS is_special,
  186. a.tags AS special_tags,
  187. ( SELECT count( 1 ) FROM cygx_yanxuan_special_record AS h WHERE h.yanxuan_special_id = a.id ) AS pv,
  188. ( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac INNER JOIN wx_user as u ON u.user_id = ac.user_id WHERE ac.yanxuan_special_id = a.id ) AS collect_num,
  189. ( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac WHERE ac.yanxuan_special_id = a.id AND user_id = ? ) AS my_collect_num,
  190. c.create_time AS create_time
  191. FROM
  192. cygx_yanxuan_special AS a
  193. JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id
  194. JOIN cygx_yanxuan_special_collect AS c ON a.id = c.yanxuan_special_id
  195. WHERE
  196. 1 = 1 AND a.status = 3 AND c.user_id=?
  197. ORDER BY create_time DESC
  198. LIMIT ?,? `
  199. _, err = orm.NewOrm().Raw(sql, userId, userId,userId, startSize, pageSize).QueryRows(&items)
  200. return
  201. }
  202. type ArticleCollectListResp struct {
  203. List []*ArticleCollectList
  204. Paging *paging.PagingItem
  205. }
  206. func GetArticleUserInterviewApplyCount(userId int) (count int, err error) {
  207. sql := `SELECT COUNT(1) AS count FROM cygx_interview_apply AS a WHERE a.user_id=? `
  208. err = orm.NewOrm().Raw(sql, userId).QueryRow(&count)
  209. return
  210. }
  211. func GetArticleUserInterviewApplyList(startSize, pageSize, userId int) (items []*ArticleInterviewApplyList, err error) {
  212. sql := `SELECT a.* FROM cygx_interview_apply AS a
  213. WHERE a.user_id=?
  214. ORDER BY a.status ASC LIMIT ?,? `
  215. _, err = orm.NewOrm().Raw(sql, userId, startSize, pageSize).QueryRows(&items)
  216. return
  217. }
  218. type ArticleInterviewApplyListResp struct {
  219. List []*ArticleInterviewApplyList
  220. Paging *paging.PagingItem
  221. }
  222. func GetArticleUserBrowseHistoryCount(userId int, endDate string) (count int, err error) {
  223. sql := `SELECT COUNT( 1 ) as count
  224. FROM
  225. ( SELECT count(*) FROM cygx_article_history_record AS a WHERE a.user_id = ? AND a.create_time >= ? GROUP BY a.article_id ) b `
  226. err = orm.NewOrm().Raw(sql, userId, endDate).QueryRow(&count)
  227. return
  228. }
  229. func GetArticleUserBrowseHistoryList(startSize, pageSize, userId int, endDate string) (items []*ArticleReportBillboardResp, err error) {
  230. sql := `SELECT a.* , MAX( a.id ) AS mid FROM cygx_article_history_record AS a
  231. WHERE a.user_id=? AND a.create_time>=? GROUP BY a.article_id
  232. ORDER BY mid DESC LIMIT ?,? `
  233. _, err = orm.NewOrm().Raw(sql, userId, endDate, startSize, pageSize).QueryRows(&items)
  234. return
  235. }
  236. type ArticleBrowseHistoryListResp struct {
  237. List []*ArticleInterviewApplyList
  238. Paging *paging.PagingItem
  239. }
  240. type ApplyTryReq struct {
  241. BusinessCardUrl string `description:"名片地址"`
  242. RealName string `description:"姓名"`
  243. CompanyName string `description:"公司名称"`
  244. ApplyMethod int `description:"1:已付费客户申请试用,2:非客户申请试用,3:非客户申请试用(ficc下,不需要进行数据校验)"`
  245. TryType string `description:"提交类型,Article:文章、Activity:活动、MicroAudio:微路演音频、MicroVideo:微路演视频、Researchsummary:本周研究汇总、Minutessummary:上周纪要汇总、ReportSelection:报告精选、ProductInterior:产品内测"`
  246. DetailId int `description:"详情ID"`
  247. }
  248. type CountryCode struct {
  249. IsNeedAddCountryCode bool `description:"是否需要填写区号:需要填写,false:不需要填写"`
  250. }
  251. type OutboundMobile struct {
  252. IsNeedAddOutboundMobile bool `description:"是否需要填写外呼手机号:需要填写,false:不需要填写"`
  253. }
  254. type CountryCodeItem struct {
  255. CountryCode string `description:"区号"`
  256. }
  257. func AddCountryCode(CountryCode string, user *WxUserItem) (err error) {
  258. o := orm.NewOrm()
  259. if user.OutboundCountryCode == "" {
  260. sql := `UPDATE wx_user SET country_code=?,outbound_mobile=?,outbound_country_code=? WHERE user_id=? `
  261. _, err = o.Raw(sql, CountryCode, user.OutboundMobile, user.OutboundCountryCode, user.UserId).Exec()
  262. } else {
  263. sql := `UPDATE wx_user SET country_code=? WHERE user_id=? `
  264. _, err = o.Raw(sql, CountryCode, user.UserId).Exec()
  265. }
  266. return
  267. }
  268. // 修改外呼手机号
  269. type OutboundMobileItem struct {
  270. OutboundMobile string `description:"外呼手机号"`
  271. OutboundCountryCode string `description:"外呼手机号区号"`
  272. ActivityId int `description:"活动ID"`
  273. }
  274. func AddOutboundMobile(item *OutboundMobileItem, userId int) (err error) {
  275. o, err := orm.NewOrm().Begin()
  276. if err != nil {
  277. return
  278. }
  279. defer func() {
  280. fmt.Println(err)
  281. if err == nil {
  282. o.Commit()
  283. } else {
  284. o.Rollback()
  285. }
  286. }()
  287. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ?, is_msg_outbound_mobile= 1 WHERE user_id=? `
  288. _, err = o.Raw(sql, item.OutboundMobile, item.OutboundCountryCode, userId).Exec()
  289. if err != nil {
  290. return
  291. }
  292. if item.ActivityId > 0 {
  293. sql = `UPDATE cygx_activity_signup SET outbound_mobile=? ,country_code = ? WHERE user_id=? AND activity_id = ?`
  294. _, err = o.Raw(sql, item.OutboundMobile, item.OutboundCountryCode, userId, item.ActivityId).Exec()
  295. }
  296. return
  297. }
  298. // 用户绑定手机号时同时绑定外呼手机号
  299. func BindUserOutboundMobile(mobile, countryCode string, userId int) (err error) {
  300. o := orm.NewOrm()
  301. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ?, country_code= ? WHERE user_id=? `
  302. _, err = o.Raw(sql, mobile, countryCode, countryCode, userId).Exec()
  303. return
  304. }
  305. // 已经绑定手机号,没有绑定外呼手机号的的用户,预约外呼的时候,将外呼手机号同步成手机号
  306. func BindUserOutboundMobileByMobile(mobile, countryCode string, userId int) (err error) {
  307. o := orm.NewOrm()
  308. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ? WHERE user_id=? `
  309. _, err = o.Raw(sql, mobile, countryCode, userId).Exec()
  310. return
  311. }
  312. // 将手机号为11位的用户,区号默认设置为86
  313. func ChangeUserOutboundMobileByMobile(userId int) (err error) {
  314. o := orm.NewOrm()
  315. sql := `UPDATE wx_user SET country_code = 86 WHERE user_id=? `
  316. _, err = o.Raw(sql, userId).Exec()
  317. return
  318. }
  319. type UserWhiteList struct {
  320. Mobile string `description:"手机号码"`
  321. RealName string `description:"用户实际名称"`
  322. CompanyName string `description:"公司名称"`
  323. Permission string `description:"拥有权限分类,多个用英文逗号分隔"`
  324. CountryCode string `description:"区号"`
  325. SellerName string `description:"销售姓名"`
  326. CreatedTime time.Time
  327. Status string `description:"客户状态'试用','永续','冻结','流失','正式','潜在'"`
  328. }
  329. type UserWhiteListRep struct {
  330. List []*UserWhiteList
  331. }
  332. // 获取正式试用用户白名单
  333. func GetFormalUserWhiteList(fieldStr, condition string) (items []*UserWhiteList, err error) {
  334. sql := `SELECT ` + fieldStr + `
  335. (SELECT cp.seller_name FROM company_product AS cp WHERE cp.company_id = u.company_id ORDER BY cp.product_id DESC LIMIT 0,1 ) as seller_name,
  336. GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' ) AS permission
  337. FROM wx_user AS u
  338. INNER JOIN company as c ON c.company_id = u.company_id
  339. INNER JOIN company_report_permission AS p ON p.company_id = u.company_id
  340. INNER JOIN chart_permission AS b ON b.chart_permission_id=p.chart_permission_id
  341. INNER JOIN company_product AS cp ON cp.company_id = u.company_id
  342. WHERE 1= 1
  343. AND cp.product_id = 2
  344. AND b.product_id = 2
  345. AND u.company_id >1 ` + condition + `
  346. GROUP BY u.user_id`
  347. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  348. return
  349. }
  350. // 获取永续用户白名单
  351. func GetSustainableUserWhiteList(fieldStr, condition string) (items []*UserWhiteList, err error) {
  352. sql := `SELECT ` + fieldStr + `
  353. (SELECT cp.seller_name FROM company_product AS cp WHERE cp.company_id = u.company_id ORDER BY cp.product_id DESC LIMIT 0,1 ) as seller_name,
  354. (SELECT
  355. GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' )
  356. FROM
  357. company_report_permission AS p
  358. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  359. WHERE
  360. p.company_id = u.company_id
  361. AND p.status IN ( '永续' )
  362. AND p.product_id = 2
  363. ) AS permission
  364. FROM wx_user AS u
  365. INNER JOIN company AS c ON c.company_id = u.company_id
  366. INNER JOIN company_report_permission AS p ON p.company_id = u.company_id
  367. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  368. INNER JOIN company_product AS cp ON cp.company_id = u.company_id
  369. WHERE 1 = 1
  370. AND u.company_id > 1 ` + condition + `
  371. GROUP BY u.user_id `
  372. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  373. return
  374. }
  375. // 权益用户
  376. type GetSendEmailAllUserWithRAIRep struct {
  377. CompanyName string `description:"客户名称"`
  378. CreditCode string `description:"社会统一信用码"`
  379. ProductName string `description:"客户类型"`
  380. IndustryName string `description:"行业"`
  381. RealName string `description:"姓名"`
  382. Mobile string `description:"手机号"`
  383. Status string `description:"手机号"`
  384. StartDate string `description:"合同开始日期"`
  385. EndDate string `description:"合同结束日期"`
  386. CreatedTime string `description:"创建时间"`
  387. Permission string `description:"权限"`
  388. }
  389. func GetSendEmailAllUserWithRAI() (items []*GetSendEmailAllUserWithRAIRep, err error) {
  390. sql := `SELECT
  391. c.company_name,
  392. c.credit_code,
  393. cp.product_name,
  394. cp.industry_name,
  395. a.real_name,
  396. a.mobile,
  397. cp.status,
  398. cp.start_date,
  399. cp.end_date,
  400. c.created_time,
  401. GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' ) AS permission
  402. FROM
  403. company AS c
  404. INNER JOIN company_report_permission AS p ON p.company_id = c.company_id
  405. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  406. INNER JOIN company_product AS cp ON cp.company_id = c.company_id
  407. INNER JOIN admin AS a ON a.admin_id = cp.seller_id
  408. WHERE
  409. 1 = 1
  410. AND cp.product_id = 2
  411. AND b.product_id = 2
  412. AND cp.status IN ( '正式', '试用' )
  413. GROUP BY
  414. c.company_id
  415. ORDER BY
  416. c.company_id DESC`
  417. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  418. return
  419. }
  420. // 权益用户
  421. type GetSendEmailAllUserWithCompanyRep struct {
  422. RealName string `description:"姓名"`
  423. Mobile string `description:"手机号"`
  424. CountryCode string `description:"国家号"`
  425. Email string `description:"邮箱"`
  426. CompanyName string `description:"客户名称"`
  427. CreditCode string `description:"社会统一信用码"`
  428. IsMaker string `description:"是否是决策人,1是,0否"`
  429. }
  430. func GetSendEmailAllUserWithCompany() (items []*GetSendEmailAllUserWithCompanyRep, err error) {
  431. sql := `SELECT
  432. u.real_name,
  433. u.mobile,
  434. u.country_code,
  435. u.email,
  436. c.company_name,
  437. u.is_maker
  438. FROM
  439. no_use AS n
  440. INNER JOIN company AS c ON c.company_name = n.company_name
  441. INNER JOIN company_report_permission AS p ON p.company_id = c.company_id
  442. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  443. INNER JOIN company_product AS cp ON cp.company_id = c.company_id
  444. INNER JOIN wx_user AS u ON u.company_id = c.company_id
  445. GROUP BY
  446. u.user_id
  447. ORDER BY
  448. c.company_id ASC`
  449. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  450. return
  451. }
  452. type Headimgurl struct {
  453. Headimgurl string `description:"用户头像"`
  454. }
  455. type UserEmail struct {
  456. Email string `description:"邮箱号"`
  457. }
  458. // 更改用户手机号
  459. func UpdateUserHeadimgurl(headimgurl string, userId int) (err error) {
  460. o := orm.NewOrm()
  461. sql := `UPDATE wx_user SET headimgurl = ? WHERE user_id=? `
  462. _, err = o.Raw(sql, headimgurl, userId).Exec()
  463. return
  464. }
  465. // 更改用户邮箱号
  466. func UpdateUserEmail(email string, userId int) (err error) {
  467. o := orm.NewOrm()
  468. sql := `UPDATE wx_user SET email = ? WHERE user_id=? `
  469. _, err = o.Raw(sql, email, userId).Exec()
  470. return
  471. }
  472. // 更新用户标签
  473. func UpdateUserLabel(userLabel string, userId int) (err error) {
  474. o := orm.NewOrm()
  475. sql := `UPDATE wx_user SET user_label = ? WHERE user_id=? `
  476. _, err = o.Raw(sql, userLabel, userId).Exec()
  477. return
  478. }
  479. // 更新用户互动量
  480. func UpdateUserInteractionNum(interactionNum, userId int) (err error) {
  481. o := orm.NewOrm()
  482. sql := `UPDATE wx_user SET interaction_num = ? WHERE user_id=? `
  483. _, err = o.Raw(sql, interactionNum, userId).Exec()
  484. return
  485. }
  486. // UserPermissionAuthInfo 用户通用权限信息
  487. type UserPermissionAuthInfo struct {
  488. HasPermission int `description:"是否有权限:1-有权限; 2-无权限; 3-潜在客户未提交申请; 4-潜在客户已提交申请 5-仅有FICC权限"`
  489. SellerMobile string `description:"销售手机号"`
  490. SellerName string `description:"销售名称"`
  491. OperationMode string `description:"操作方式:Apply-立即申请; Call-拨号"`
  492. PopupMsg string `description:"权限弹窗信息"`
  493. }
  494. func GetUserMicroRoadshowCollectList(userId int) (items []*CygxArticleCollect, err error) {
  495. sql := `SELECT a.* FROM cygx_article_collect AS a
  496. WHERE a.user_id=?
  497. AND a.article_id =0
  498. ORDER BY a.create_time DESC `
  499. _, err = orm.NewOrm().Raw(sql, userId).QueryRows(&items)
  500. return
  501. }
  502. func GetUserMicroRoadshowCollectcount(userId int) (count int, err error) {
  503. sqlCount := `SELECT COUNT(1) AS count FROM cygx_article_collect AS a
  504. WHERE a.user_id=?
  505. AND a.article_id =0
  506. ORDER BY a.create_time DESC `
  507. o := orm.NewOrm()
  508. err = o.Raw(sqlCount, userId).QueryRow(&count)
  509. return
  510. }