user.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  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. 0 AS special_type,
  173. a.create_time AS create_time
  174. FROM cygx_article_collect AS a
  175. INNER JOIN cygx_article as art ON art.article_id = a.article_id
  176. WHERE a.user_id=?
  177. UNION ALL
  178. SELECT
  179. a.id AS article_id,
  180. 0 AS category_id,
  181. a.title AS title,
  182. date_format( a.publish_time, '%Y-%m-%d' ) AS publish_date,
  183. b.nick_name AS nick_name,
  184. -1 AS article_type_id,
  185. '' AS article_type_name,
  186. 1 AS is_special,
  187. a.tags AS special_tags,
  188. ( SELECT count( 1 ) FROM cygx_yanxuan_special_record AS h WHERE h.yanxuan_special_id = a.id ) AS pv,
  189. ( 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,
  190. ( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac WHERE ac.yanxuan_special_id = a.id AND user_id = ? ) AS my_collect_num,
  191. a.type AS special_type,
  192. c.create_time AS create_time
  193. FROM
  194. cygx_yanxuan_special AS a
  195. JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id
  196. JOIN cygx_yanxuan_special_collect AS c ON a.id = c.yanxuan_special_id
  197. WHERE
  198. 1 = 1 AND a.status = 3 AND c.user_id=?
  199. ORDER BY create_time DESC
  200. LIMIT ?,? `
  201. _, err = orm.NewOrm().Raw(sql, userId, userId,userId, startSize, pageSize).QueryRows(&items)
  202. return
  203. }
  204. type ArticleCollectListResp struct {
  205. List []*ArticleCollectList
  206. Paging *paging.PagingItem
  207. }
  208. func GetArticleUserInterviewApplyCount(userId int) (count int, err error) {
  209. sql := `SELECT COUNT(1) AS count FROM cygx_interview_apply AS a WHERE a.user_id=? `
  210. err = orm.NewOrm().Raw(sql, userId).QueryRow(&count)
  211. return
  212. }
  213. func GetArticleUserInterviewApplyList(startSize, pageSize, userId int) (items []*ArticleInterviewApplyList, err error) {
  214. sql := `SELECT a.* FROM cygx_interview_apply AS a
  215. WHERE a.user_id=?
  216. ORDER BY a.status ASC LIMIT ?,? `
  217. _, err = orm.NewOrm().Raw(sql, userId, startSize, pageSize).QueryRows(&items)
  218. return
  219. }
  220. type ArticleInterviewApplyListResp struct {
  221. List []*ArticleInterviewApplyList
  222. Paging *paging.PagingItem
  223. }
  224. func GetArticleUserBrowseHistoryCount(userId int, endDate string) (count int, err error) {
  225. sql := `SELECT COUNT( 1 ) as count
  226. FROM
  227. ( SELECT count(*) FROM cygx_article_history_record AS a WHERE a.user_id = ? AND a.create_time >= ? GROUP BY a.article_id ) b `
  228. err = orm.NewOrm().Raw(sql, userId, endDate).QueryRow(&count)
  229. return
  230. }
  231. func GetArticleUserBrowseHistoryList(startSize, pageSize, userId int, endDate string) (items []*ArticleReportBillboardResp, err error) {
  232. sql := `SELECT a.* , MAX( a.id ) AS mid FROM cygx_article_history_record AS a
  233. WHERE a.user_id=? AND a.create_time>=? GROUP BY a.article_id
  234. ORDER BY mid DESC LIMIT ?,? `
  235. _, err = orm.NewOrm().Raw(sql, userId, endDate, startSize, pageSize).QueryRows(&items)
  236. return
  237. }
  238. type ArticleBrowseHistoryListResp struct {
  239. List []*ArticleInterviewApplyList
  240. Paging *paging.PagingItem
  241. }
  242. type ApplyTryReq struct {
  243. BusinessCardUrl string `description:"名片地址"`
  244. RealName string `description:"姓名"`
  245. CompanyName string `description:"公司名称"`
  246. ApplyMethod int `description:"1:已付费客户申请试用,2:非客户申请试用,3:非客户申请试用(ficc下,不需要进行数据校验)"`
  247. TryType string `description:"提交类型,Article:文章、Activity:活动、MicroAudio:微路演音频、MicroVideo:微路演视频、Researchsummary:本周研究汇总、Minutessummary:上周纪要汇总、ReportSelection:报告精选、ProductInterior:产品内测"`
  248. DetailId int `description:"详情ID"`
  249. }
  250. type CountryCode struct {
  251. IsNeedAddCountryCode bool `description:"是否需要填写区号:需要填写,false:不需要填写"`
  252. }
  253. type OutboundMobile struct {
  254. IsNeedAddOutboundMobile bool `description:"是否需要填写外呼手机号:需要填写,false:不需要填写"`
  255. }
  256. type CountryCodeItem struct {
  257. CountryCode string `description:"区号"`
  258. }
  259. func AddCountryCode(CountryCode string, user *WxUserItem) (err error) {
  260. o := orm.NewOrm()
  261. if user.OutboundCountryCode == "" {
  262. sql := `UPDATE wx_user SET country_code=?,outbound_mobile=?,outbound_country_code=? WHERE user_id=? `
  263. _, err = o.Raw(sql, CountryCode, user.OutboundMobile, user.OutboundCountryCode, user.UserId).Exec()
  264. } else {
  265. sql := `UPDATE wx_user SET country_code=? WHERE user_id=? `
  266. _, err = o.Raw(sql, CountryCode, user.UserId).Exec()
  267. }
  268. return
  269. }
  270. // 修改外呼手机号
  271. type OutboundMobileItem struct {
  272. OutboundMobile string `description:"外呼手机号"`
  273. OutboundCountryCode string `description:"外呼手机号区号"`
  274. ActivityId int `description:"活动ID"`
  275. }
  276. func AddOutboundMobile(item *OutboundMobileItem, userId int) (err error) {
  277. o, err := orm.NewOrm().Begin()
  278. if err != nil {
  279. return
  280. }
  281. defer func() {
  282. fmt.Println(err)
  283. if err == nil {
  284. o.Commit()
  285. } else {
  286. o.Rollback()
  287. }
  288. }()
  289. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ?, is_msg_outbound_mobile= 1 WHERE user_id=? `
  290. _, err = o.Raw(sql, item.OutboundMobile, item.OutboundCountryCode, userId).Exec()
  291. if err != nil {
  292. return
  293. }
  294. if item.ActivityId > 0 {
  295. sql = `UPDATE cygx_activity_signup SET outbound_mobile=? ,country_code = ? WHERE user_id=? AND activity_id = ?`
  296. _, err = o.Raw(sql, item.OutboundMobile, item.OutboundCountryCode, userId, item.ActivityId).Exec()
  297. }
  298. return
  299. }
  300. // 用户绑定手机号时同时绑定外呼手机号
  301. func BindUserOutboundMobile(mobile, countryCode string, userId int) (err error) {
  302. o := orm.NewOrm()
  303. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ?, country_code= ? WHERE user_id=? `
  304. _, err = o.Raw(sql, mobile, countryCode, countryCode, userId).Exec()
  305. return
  306. }
  307. // 已经绑定手机号,没有绑定外呼手机号的的用户,预约外呼的时候,将外呼手机号同步成手机号
  308. func BindUserOutboundMobileByMobile(mobile, countryCode string, userId int) (err error) {
  309. o := orm.NewOrm()
  310. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ? WHERE user_id=? `
  311. _, err = o.Raw(sql, mobile, countryCode, userId).Exec()
  312. return
  313. }
  314. // 将手机号为11位的用户,区号默认设置为86
  315. func ChangeUserOutboundMobileByMobile(userId int) (err error) {
  316. o := orm.NewOrm()
  317. sql := `UPDATE wx_user SET country_code = 86 WHERE user_id=? `
  318. _, err = o.Raw(sql, userId).Exec()
  319. return
  320. }
  321. type UserWhiteList struct {
  322. Mobile string `description:"手机号码"`
  323. RealName string `description:"用户实际名称"`
  324. CompanyName string `description:"公司名称"`
  325. Permission string `description:"拥有权限分类,多个用英文逗号分隔"`
  326. CountryCode string `description:"区号"`
  327. SellerName string `description:"销售姓名"`
  328. CreatedTime time.Time
  329. Status string `description:"客户状态'试用','永续','冻结','流失','正式','潜在'"`
  330. }
  331. type UserWhiteListRep struct {
  332. List []*UserWhiteList
  333. }
  334. // 获取正式试用用户白名单
  335. func GetFormalUserWhiteList(fieldStr, condition string) (items []*UserWhiteList, err error) {
  336. sql := `SELECT ` + fieldStr + `
  337. (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,
  338. GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' ) AS permission
  339. FROM wx_user AS u
  340. INNER JOIN company as c ON c.company_id = u.company_id
  341. INNER JOIN company_report_permission AS p ON p.company_id = u.company_id
  342. INNER JOIN chart_permission AS b ON b.chart_permission_id=p.chart_permission_id
  343. INNER JOIN company_product AS cp ON cp.company_id = u.company_id
  344. WHERE 1= 1
  345. AND cp.product_id = 2
  346. AND b.product_id = 2
  347. AND u.company_id >1 ` + condition + `
  348. GROUP BY u.user_id`
  349. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  350. return
  351. }
  352. // 获取永续用户白名单
  353. func GetSustainableUserWhiteList(fieldStr, condition string) (items []*UserWhiteList, err error) {
  354. sql := `SELECT ` + fieldStr + `
  355. (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,
  356. (SELECT
  357. GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' )
  358. FROM
  359. company_report_permission AS p
  360. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  361. WHERE
  362. p.company_id = u.company_id
  363. AND p.status IN ( '永续' )
  364. AND p.product_id = 2
  365. ) AS permission
  366. FROM wx_user AS u
  367. INNER JOIN company AS c ON c.company_id = u.company_id
  368. INNER JOIN company_report_permission AS p ON p.company_id = u.company_id
  369. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  370. INNER JOIN company_product AS cp ON cp.company_id = u.company_id
  371. WHERE 1 = 1
  372. AND u.company_id > 1 ` + condition + `
  373. GROUP BY u.user_id `
  374. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  375. return
  376. }
  377. // 权益用户
  378. type GetSendEmailAllUserWithRAIRep struct {
  379. CompanyName string `description:"客户名称"`
  380. CreditCode string `description:"社会统一信用码"`
  381. ProductName string `description:"客户类型"`
  382. IndustryName string `description:"行业"`
  383. RealName string `description:"姓名"`
  384. Mobile string `description:"手机号"`
  385. Status string `description:"手机号"`
  386. StartDate string `description:"合同开始日期"`
  387. EndDate string `description:"合同结束日期"`
  388. CreatedTime string `description:"创建时间"`
  389. Permission string `description:"权限"`
  390. }
  391. func GetSendEmailAllUserWithRAI() (items []*GetSendEmailAllUserWithRAIRep, err error) {
  392. sql := `SELECT
  393. c.company_name,
  394. c.credit_code,
  395. cp.product_name,
  396. cp.industry_name,
  397. a.real_name,
  398. a.mobile,
  399. cp.status,
  400. cp.start_date,
  401. cp.end_date,
  402. c.created_time,
  403. GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' ) AS permission
  404. FROM
  405. company AS c
  406. INNER JOIN company_report_permission AS p ON p.company_id = c.company_id
  407. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  408. INNER JOIN company_product AS cp ON cp.company_id = c.company_id
  409. INNER JOIN admin AS a ON a.admin_id = cp.seller_id
  410. WHERE
  411. 1 = 1
  412. AND cp.product_id = 2
  413. AND b.product_id = 2
  414. AND cp.status IN ( '正式', '试用' )
  415. GROUP BY
  416. c.company_id
  417. ORDER BY
  418. c.company_id DESC`
  419. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  420. return
  421. }
  422. // 权益用户
  423. type GetSendEmailAllUserWithCompanyRep struct {
  424. RealName string `description:"姓名"`
  425. Mobile string `description:"手机号"`
  426. CountryCode string `description:"国家号"`
  427. Email string `description:"邮箱"`
  428. CompanyName string `description:"客户名称"`
  429. CreditCode string `description:"社会统一信用码"`
  430. IsMaker string `description:"是否是决策人,1是,0否"`
  431. }
  432. func GetSendEmailAllUserWithCompany() (items []*GetSendEmailAllUserWithCompanyRep, err error) {
  433. sql := `SELECT
  434. u.real_name,
  435. u.mobile,
  436. u.country_code,
  437. u.email,
  438. c.company_name,
  439. u.is_maker
  440. FROM
  441. no_use AS n
  442. INNER JOIN company AS c ON c.company_name = n.company_name
  443. INNER JOIN company_report_permission AS p ON p.company_id = c.company_id
  444. INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
  445. INNER JOIN company_product AS cp ON cp.company_id = c.company_id
  446. INNER JOIN wx_user AS u ON u.company_id = c.company_id
  447. GROUP BY
  448. u.user_id
  449. ORDER BY
  450. c.company_id ASC`
  451. _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
  452. return
  453. }
  454. type Headimgurl struct {
  455. Headimgurl string `description:"用户头像"`
  456. }
  457. type UserEmail struct {
  458. Email string `description:"邮箱号"`
  459. }
  460. // 更改用户手机号
  461. func UpdateUserHeadimgurl(headimgurl string, userId int) (err error) {
  462. o := orm.NewOrm()
  463. sql := `UPDATE wx_user SET headimgurl = ? WHERE user_id=? `
  464. _, err = o.Raw(sql, headimgurl, userId).Exec()
  465. return
  466. }
  467. // 更改用户邮箱号
  468. func UpdateUserEmail(email string, userId int) (err error) {
  469. o := orm.NewOrm()
  470. sql := `UPDATE wx_user SET email = ? WHERE user_id=? `
  471. _, err = o.Raw(sql, email, userId).Exec()
  472. return
  473. }
  474. // 更新用户标签
  475. func UpdateUserLabel(userLabel string, userId int) (err error) {
  476. o := orm.NewOrm()
  477. sql := `UPDATE wx_user SET user_label = ? WHERE user_id=? `
  478. _, err = o.Raw(sql, userLabel, userId).Exec()
  479. return
  480. }
  481. // 更新用户互动量
  482. func UpdateUserInteractionNum(interactionNum, userId int) (err error) {
  483. o := orm.NewOrm()
  484. sql := `UPDATE wx_user SET interaction_num = ? WHERE user_id=? `
  485. _, err = o.Raw(sql, interactionNum, userId).Exec()
  486. return
  487. }
  488. // UserPermissionAuthInfo 用户通用权限信息
  489. type UserPermissionAuthInfo struct {
  490. HasPermission int `description:"是否有权限:1-有权限; 2-无权限; 3-潜在客户未提交申请; 4-潜在客户已提交申请 5-仅有FICC权限"`
  491. SellerMobile string `description:"销售手机号"`
  492. SellerName string `description:"销售名称"`
  493. OperationMode string `description:"操作方式:Apply-立即申请; Call-拨号"`
  494. PopupMsg string `description:"权限弹窗信息"`
  495. }
  496. func GetUserMicroRoadshowCollectList(userId int) (items []*CygxArticleCollect, err error) {
  497. sql := `SELECT a.* FROM cygx_article_collect AS a
  498. WHERE a.user_id=?
  499. AND a.article_id =0
  500. ORDER BY a.create_time DESC `
  501. _, err = orm.NewOrm().Raw(sql, userId).QueryRows(&items)
  502. return
  503. }
  504. func GetUserMicroRoadshowCollectcount(userId int) (count int, err error) {
  505. sqlCount := `SELECT COUNT(1) AS count FROM cygx_article_collect AS a
  506. WHERE a.user_id=?
  507. AND a.article_id =0
  508. ORDER BY a.create_time DESC `
  509. o := orm.NewOrm()
  510. err = o.Raw(sqlCount, userId).QueryRow(&count)
  511. return
  512. }