user.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716
  1. package services
  2. import (
  3. "errors"
  4. "hongze/hongze_web_mfyx/models"
  5. "hongze/hongze_web_mfyx/utils"
  6. "strings"
  7. "time"
  8. )
  9. var ERR_NO_USER_RECORD = errors.New("用户关系没有入库")
  10. var ERR_USER_NOT_BIND = errors.New("用户没有绑定")
  11. // 通过用户 关系表记录 和 用户记录 格式化返回 用户数据
  12. func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.UserRecord) {
  13. wxUser.OpenId = userRecord.OpenId
  14. wxUser.UnionId = userRecord.UnionId
  15. wxUser.NickName = userRecord.NickName
  16. //wxUser.RealName = userRecord.RealName
  17. //wxUser.BindAccount = userRecord.BindAccount
  18. wxUser.Headimgurl = userRecord.Headimgurl
  19. wxUser.SessionKey = userRecord.SessionKey
  20. }
  21. func GetWxUserItemByOpenId(unionId string) (item *models.WxUserItem, err error) {
  22. //通过openid获取用户关联信息
  23. item = new(models.WxUserItem)
  24. item.UnionId = unionId // 先写入 unionId
  25. userRecord, userRecordErr := models.GetUserRecordByUnionId(unionId)
  26. if userRecordErr != nil && userRecordErr.Error() != utils.ErrNoRow() {
  27. err = userRecordErr
  28. return
  29. }
  30. //如果 userRecord 表中的手机号不为空,那么就通过手机号来获取详情
  31. if userRecord != nil {
  32. if userRecord.BindAccount != "" {
  33. user, userErr := models.GetWxUserItemByUserMobile(userRecord.BindAccount)
  34. if userErr != nil && userErr.Error() != utils.ErrNoRow() {
  35. err = userErr
  36. return
  37. }
  38. if user != nil {
  39. item = user
  40. }
  41. }
  42. }
  43. return
  44. }
  45. // 获取 用户类型 //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户;6、冻结客户;7、流失客户
  46. func GetUserType(companyId int) (userType int, permissionStrnew string, err error) {
  47. var permissionStr, permissionZhengShiStr string
  48. if companyId <= 1 {
  49. userType = 0
  50. } else {
  51. total, errs := models.GetCountCompanyDetailByIdGroup(companyId)
  52. if errs != nil {
  53. err = errs
  54. return
  55. }
  56. if total == 0 {
  57. userType = 0
  58. } else {
  59. companyDetail, errs := models.GetCompanyDetailByIdGroup(companyId)
  60. if errs != nil {
  61. err = errs
  62. return
  63. }
  64. permissionStr, errs = models.GetCompanyPermission(companyId)
  65. if errs != nil {
  66. err = errs
  67. return
  68. }
  69. permissionStrnew = permissionStr
  70. //大套餐客户,数据库添加标识,
  71. companyUserTypeDetail, errs := models.GetCygxCompanyUserType(companyId)
  72. if errs != nil && errs.Error() != utils.ErrNoRow() {
  73. err = errs
  74. return
  75. }
  76. if companyUserTypeDetail != nil {
  77. if companyUserTypeDetail.CustomerTypeId != 0 {
  78. userType = companyUserTypeDetail.CustomerTypeId
  79. return
  80. }
  81. }
  82. permissionZhengShiStr, errs = models.GetCompanyPermissionByUserZhengShi(companyId)
  83. if errs != nil {
  84. err = errs
  85. return
  86. }
  87. //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户、 10: 30W套餐客户
  88. //大套餐客户定义:医药、消费、科技、智造、策略。5个行业中任意4个及以上是正式权限的,属于大套餐客户(医药、消费、科技、智造需要主客观都开)
  89. if companyDetail.Status == "永续" {
  90. userType = 1
  91. } else if companyDetail.Status == "试用" {
  92. userType = 5
  93. } else if companyDetail.Status == "冻结" {
  94. userType = 6
  95. } else if companyDetail.Status == "流失" {
  96. userType = 7
  97. }
  98. //大套餐客户定义:医药、消费、科技、智造、策略。5个行业中任意4个及以上是正式权限的,属于大套餐客户(医药、消费、科技、智造需要主客观都开)
  99. if userType == 0 && companyDetail.Status == "正式" {
  100. var permissionZhegnshiNum int
  101. if strings.Count(permissionZhengShiStr, "医药") == 2 {
  102. permissionZhegnshiNum++
  103. }
  104. if strings.Count(permissionZhengShiStr, "消费") == 2 {
  105. permissionZhegnshiNum++
  106. }
  107. if strings.Count(permissionZhengShiStr, "科技") == 2 {
  108. permissionZhegnshiNum++
  109. }
  110. if strings.Count(permissionZhengShiStr, "智造") == 2 {
  111. permissionZhegnshiNum++
  112. }
  113. if strings.Count(permissionZhengShiStr, "策略") == 1 {
  114. permissionZhegnshiNum++
  115. }
  116. if strings.Count(permissionZhengShiStr, "路演服务") == 1 {
  117. permissionZhegnshiNum++
  118. }
  119. //if permissionZhegnshiNum == 6 {
  120. // userType = 2
  121. //} else
  122. //大套餐客户,数据库添加标识,条件大于等于四的都是 30W套餐客户
  123. if permissionZhegnshiNum >= 4 {
  124. userType = 10
  125. } else {
  126. userType = 3
  127. }
  128. }
  129. }
  130. }
  131. permissionStrnew = permissionStr
  132. return
  133. }
  134. func GetUserTypeZhengShi(companyId int) (userType int, permissionStrnew, permissionStrZhengShinew string, err error) {
  135. var permissionStr, permissionZhengShiStr string
  136. if companyId <= 1 {
  137. userType = 0
  138. } else {
  139. total, errs := models.GetCountCompanyDetailByIdGroup(companyId)
  140. if errs != nil {
  141. err = errs
  142. return
  143. }
  144. if total == 0 {
  145. userType = 0
  146. } else {
  147. companyDetail, errs := models.GetCompanyDetailByIdGroup(companyId)
  148. if errs != nil {
  149. err = errs
  150. return
  151. }
  152. permissionStr, errs = models.GetCompanyPermission(companyId)
  153. if errs != nil {
  154. err = errs
  155. return
  156. }
  157. permissionStrnew = permissionStr
  158. permissionZhengShiStr, errs = models.GetCompanyPermissionByUserZhengShi(companyId)
  159. if errs != nil {
  160. err = errs
  161. return
  162. }
  163. permissionStrZhengShinew = permissionZhengShiStr
  164. //大套餐客户,数据库添加标识,
  165. companyUserTypeDetail, errs := models.GetCygxCompanyUserType(companyId)
  166. if errs != nil && errs.Error() != utils.ErrNoRow() {
  167. err = errs
  168. return
  169. }
  170. if companyUserTypeDetail != nil {
  171. if companyUserTypeDetail.CustomerTypeId != 0 {
  172. userType = companyUserTypeDetail.CustomerTypeId
  173. return
  174. }
  175. }
  176. //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户、 10: 30W套餐客户
  177. //大套餐客户定义:医药、消费、科技、智造、策略。5个行业中任意4个及以上是正式权限的,属于大套餐客户(医药、消费、科技、智造需要主客观都开)
  178. if companyDetail.Status == "永续" {
  179. userType = 1
  180. } else if companyDetail.Status == "试用" {
  181. userType = 5
  182. } else if companyDetail.Status == "冻结" {
  183. userType = 6
  184. } else if companyDetail.Status == "流失" {
  185. userType = 7
  186. }
  187. //大套餐客户定义:医药、消费、科技、智造、策略。5个行业中任意4个及以上是正式权限的,属于大套餐客户(医药、消费、科技、智造需要主客观都开)
  188. if userType == 0 && companyDetail.Status == "正式" {
  189. var permissionZhegnshiNum int
  190. if strings.Count(permissionZhengShiStr, "医药") == 2 {
  191. permissionZhegnshiNum++
  192. }
  193. if strings.Count(permissionZhengShiStr, "消费") == 2 {
  194. permissionZhegnshiNum++
  195. }
  196. if strings.Count(permissionZhengShiStr, "科技") == 2 {
  197. permissionZhegnshiNum++
  198. }
  199. if strings.Count(permissionZhengShiStr, "智造") == 2 {
  200. permissionZhegnshiNum++
  201. }
  202. if strings.Count(permissionZhengShiStr, "策略") == 1 {
  203. permissionZhegnshiNum++
  204. }
  205. if strings.Count(permissionZhengShiStr, "路演服务") == 1 {
  206. permissionZhegnshiNum++
  207. }
  208. //if permissionZhegnshiNum == 6 {
  209. // userType = 2
  210. //} else
  211. //大套餐客户,数据库添加标识,条件大于等于四的都是 30W套餐客户
  212. if permissionZhegnshiNum >= 4 {
  213. userType = 10
  214. } else {
  215. userType = 3
  216. }
  217. }
  218. }
  219. }
  220. permissionStrnew = permissionStr
  221. permissionStrZhengShinew = permissionZhengShiStr
  222. return
  223. }
  224. // 用户绑定
  225. func BindWxUser(mobile, countryCode, inviteShareCode string) (wxUser *models.WxUserItem, err error) {
  226. if mobile == "" {
  227. err = errors.New("手机号或邮箱必填一个")
  228. return
  229. }
  230. //根据手机号获取用户信息
  231. if mobile != "" {
  232. tmpWxUser, wxUserErr := models.GetWxUserItemByMobile(mobile)
  233. if wxUserErr != nil && wxUserErr.Error() != utils.ErrNoRow() {
  234. err = wxUserErr
  235. return
  236. }
  237. wxUser = tmpWxUser
  238. }
  239. var userId int
  240. //如果查询出来的用户是nil,那么需要新增用户
  241. if wxUser == nil {
  242. user := &models.WxUser{
  243. CompanyId: 1,
  244. CreatedTime: time.Now(),
  245. FirstLogin: 1,
  246. Enabled: 1,
  247. RegisterPlatform: 7,
  248. RegisterTime: time.Now(),
  249. Mobile: mobile,
  250. //Email: email,
  251. IsRegister: 1,
  252. Source: 3,
  253. CountryCode: countryCode,
  254. OutboundMobile: mobile,
  255. OutboundCountryCode: countryCode,
  256. }
  257. tmpUserId, addUserErr := models.AddWxUser(user)
  258. if addUserErr != nil {
  259. err = addUserErr
  260. return
  261. }
  262. user.UserId = int(tmpUserId)
  263. userId = int(tmpUserId)
  264. wxUser, err = models.GetWxUserItemByUserId(userId)
  265. if inviteShareCode != "" { //记录分享来源
  266. go AddCygxUserAdminShareHistory(wxUser, "login", "", inviteShareCode, 0) //记录分享来源
  267. }
  268. } else {
  269. userId = wxUser.UserId
  270. err = models.BindUserOutboundMobile(mobile, countryCode, userId)
  271. if err != nil {
  272. return
  273. }
  274. if wxUser.IsRegister == 0 {
  275. models.ModifyWxUserRegisterStatus(userId)
  276. }
  277. }
  278. return
  279. }
  280. // 用户绑定用户手机号以及openid
  281. func BindWxUserMobileAndOpenid(mobile, openid, countryCode string) (wxUser *models.WxUserItem, err error) {
  282. if mobile == "" {
  283. err = errors.New("手机号或邮箱必填一个")
  284. return
  285. }
  286. var bindAccount string
  287. //根据手机号获取用户信息
  288. if mobile != "" {
  289. tmpWxUser, wxUserErr := models.GetWxUserItemByMobile(mobile)
  290. if wxUserErr != nil && wxUserErr.Error() != utils.ErrNoRow() {
  291. err = wxUserErr
  292. return
  293. }
  294. wxUser = tmpWxUser
  295. bindAccount = mobile
  296. }
  297. //查询openid的第三方(微信)信息
  298. userRecord, err := models.GetUserRecordByOpenId(openid)
  299. if err != nil {
  300. return
  301. }
  302. var userId int
  303. //如果查询出来的用户是nil,那么需要新增用户
  304. if wxUser == nil {
  305. user := &models.WxUser{
  306. CompanyId: 1,
  307. CreatedTime: time.Now(),
  308. FirstLogin: 1,
  309. Enabled: 1,
  310. RegisterPlatform: 7,
  311. RegisterTime: time.Now(),
  312. Mobile: mobile,
  313. //Email: email,
  314. IsRegister: 1,
  315. Source: 3,
  316. CountryCode: countryCode,
  317. OutboundMobile: mobile,
  318. OutboundCountryCode: countryCode,
  319. }
  320. tmpUserId, addUserErr := models.AddWxUser(user)
  321. if addUserErr != nil {
  322. err = addUserErr
  323. return
  324. }
  325. user.UserId = int(tmpUserId)
  326. userId = int(tmpUserId)
  327. wxUser, err = models.GetWxUserItemByUserId(userId)
  328. } else {
  329. userId = wxUser.UserId
  330. err = models.BindUserOutboundMobile(mobile, countryCode, userId)
  331. if err != nil {
  332. return
  333. }
  334. if wxUser.IsRegister == 0 {
  335. models.ModifyWxUserRegisterStatus(userId)
  336. }
  337. }
  338. //如果存在该手机号/邮箱,那么需要校验
  339. if userRecord.UserId > 0 && userRecord.UserId != userId {
  340. err = errors.New("用户已绑定,不允许重复绑定")
  341. return
  342. }
  343. err = models.BindUserRecordByOpenid(userId, openid, bindAccount)
  344. if err != nil {
  345. return
  346. }
  347. userRecord.UserId = userId
  348. //如果当前该第三方用户信息的昵称为空串的话,那么需要去查询该用户的第一个绑定信息的数据作为来源做数据修复
  349. if userRecord.NickName == "" {
  350. oldUserRecord, err := models.GetUserThirdRecordByUserId(userId)
  351. if err == nil && oldUserRecord != nil {
  352. //如果该用户绑定的第一条数据的头像信息不为空串,那么就去做新数据的修复
  353. if oldUserRecord.NickName != "" {
  354. _ = models.ModifyUserRecordByDetail(userRecord.OpenId, userRecord.UnionId, oldUserRecord.NickName, oldUserRecord.Headimgurl, oldUserRecord.City, oldUserRecord.Province, oldUserRecord.Country, oldUserRecord.Sex, userId)
  355. }
  356. }
  357. }
  358. //格式化用户数据
  359. formatWxUserAndUserRecord(wxUser, userRecord)
  360. return
  361. }
  362. // 添加第三方用户(微信)记录
  363. func AddUserRecord(openId, unionId, nickName, realName, province, city, country, headimgurl, sessionKey string, platform, sex, subscribe int) (userRecord *models.UserRecord, err error) {
  364. find, err := models.GetUserRecordByOpenId(openId)
  365. if err != nil && err.Error() != utils.ErrNoRow() {
  366. return
  367. }
  368. if find != nil {
  369. userRecord = find
  370. return
  371. }
  372. userRecord = &models.UserRecord{
  373. OpenId: openId, //用户open_id
  374. UnionId: unionId, //用户union_id
  375. Subscribe: subscribe,
  376. NickName: nickName, //用户昵称,最大长度:32
  377. RealName: realName, //用户实际名称,最大长度:32
  378. Sex: sex, //普通用户性别,1为男性,2为女性
  379. Province: province, //普通用户个人资料填写的省份,最大长度:30
  380. City: city, //普通用户个人资料填写的城市,最大长度:30
  381. Country: country, //国家,如中国为CN,最大长度:30
  382. Headimgurl: headimgurl, //用户第三方(微信)头像,最大长度:512
  383. CreateTime: time.Now(), //创建时间,关系添加时间、用户授权时间
  384. CreatePlatform: platform, //注册平台,1:日度点评公众号,2:管理后台,3:pc端网站,4:查研观向小程序;默认:1
  385. SessionKey: sessionKey, //微信小程序会话密钥,最大长度:255
  386. }
  387. //recordId, err := models.AddUserRecord(userRecord)
  388. if err != nil {
  389. return
  390. }
  391. //userRecord.UserRecordId = int(recordId)
  392. return
  393. }
  394. // 用户绑定
  395. func BindSession(mobile, countryCode string) (wxUser *models.WxUserItem, err error) {
  396. if mobile == "" {
  397. err = errors.New("手机号或邮箱必填一个")
  398. return
  399. }
  400. //var bindAccount string
  401. //根据手机号获取用户信息
  402. if mobile != "" {
  403. tmpWxUser, wxUserErr := models.GetWxUserItemByMobile(mobile)
  404. if wxUserErr != nil && wxUserErr.Error() != utils.ErrNoRow() {
  405. err = wxUserErr
  406. return
  407. }
  408. wxUser = tmpWxUser
  409. //bindAccount = mobile
  410. }
  411. var userId int
  412. //如果查询出来的用户是nil,那么需要新增用户
  413. if wxUser == nil {
  414. user := &models.WxUser{
  415. CompanyId: 1,
  416. CreatedTime: time.Now(),
  417. FirstLogin: 1,
  418. Enabled: 1,
  419. RegisterPlatform: 7,
  420. RegisterTime: time.Now(),
  421. Mobile: mobile,
  422. //Email: email,
  423. IsRegister: 1,
  424. Source: 3,
  425. CountryCode: countryCode,
  426. OutboundMobile: mobile,
  427. OutboundCountryCode: countryCode,
  428. }
  429. tmpUserId, addUserErr := models.AddWxUser(user)
  430. if addUserErr != nil {
  431. err = addUserErr
  432. return
  433. }
  434. user.UserId = int(tmpUserId)
  435. userId = int(tmpUserId)
  436. wxUser, err = models.GetWxUserItemByUserId(userId)
  437. } else {
  438. userId = wxUser.UserId
  439. err = models.BindUserOutboundMobile(mobile, countryCode, userId)
  440. if err != nil {
  441. return
  442. }
  443. if wxUser.IsRegister == 0 {
  444. models.ModifyWxUserRegisterStatus(userId)
  445. }
  446. }
  447. return
  448. }
  449. // 我的收藏
  450. func GetMicroRoadShowMycollect(pageSize, currentIndex int, audioIds, videoIds, activityVideoIds string) (respList []*models.MicroRoadShowPageList, total int, err error) {
  451. var e error
  452. // 根据每页数据量获取音视频配比
  453. startSize := utils.StartIndex(currentIndex, pageSize)
  454. videoList := make([]*models.MicroRoadShowPageList, 0)
  455. //音频的查询
  456. var audioCond string
  457. var audioPars []interface{}
  458. // 如果筛选条件为指定视频ID或只看视频则不做音频查询
  459. // 活动已发布且已结束
  460. audioCond += ` AND b.publish_status = 1 AND b.active_state = 3`
  461. if audioIds != "" {
  462. sliceId := strings.Split(audioIds, ",")
  463. var idSqlStr string
  464. for _, v := range sliceId {
  465. idSqlStr += "'" + v + "',"
  466. }
  467. idSqlStr = strings.TrimRight(idSqlStr, ",")
  468. audioCond += ` AND a.activity_voice_id IN (` + idSqlStr + `)`
  469. } else {
  470. audioCond += ` AND a.activity_voice_id = 0 `
  471. }
  472. //视频的处理
  473. var videoCond string
  474. var videoCondAct string
  475. if activityVideoIds != "" {
  476. sliceId := strings.Split(activityVideoIds, ",")
  477. var idSqlStr string
  478. for _, v := range sliceId {
  479. idSqlStr += "'" + v + "',"
  480. }
  481. idSqlStr = strings.TrimRight(idSqlStr, ",")
  482. videoCondAct += ` AND v.video_id IN (` + idSqlStr + `)`
  483. } else {
  484. videoCondAct += ` AND v.video_id = 0 `
  485. }
  486. var videoPars []interface{}
  487. var videoParsAct []interface{}
  488. if videoIds != "" {
  489. sliceId := strings.Split(videoIds, ",")
  490. var idSqlStr string
  491. for _, v := range sliceId {
  492. idSqlStr += "'" + v + "',"
  493. }
  494. idSqlStr = strings.TrimRight(idSqlStr, ",")
  495. videoCond += ` AND video_id IN (` + idSqlStr + `)`
  496. } else {
  497. videoCond += ` AND video_id = 0 `
  498. }
  499. videoCond += ` AND publish_status = 1`
  500. total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, 0, 0, 0, 0)
  501. if e != nil {
  502. err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
  503. return
  504. }
  505. respList = videoList
  506. return
  507. }
  508. // 我的收藏
  509. func GetMicroRoadShowMycollectV12(pageSize, currentIndex int, audioIds, activityVideoIds, roadshowIdsStr, askserieVideoIds string, user *models.WxUserItem) (respList []*models.MicroRoadShowPageList, total int, err error) {
  510. //Type int `description:"类型: 1-活动音频; 2-活动视频; 3-产业视频; 4-系列问答"`
  511. var e error
  512. // 根据每页数据量获取音视频配比
  513. startSize := utils.StartIndex(currentIndex, pageSize)
  514. videoList := make([]*models.MicroRoadShowPageList, 0)
  515. var audioAct string // 活动音频 1
  516. var audioActPars []interface{}
  517. var videoAct string // 活动视频 2
  518. var videoActPars []interface{}
  519. //视频的处理
  520. var videoMico string //产业视频 3
  521. var videoMicoPars []interface{}
  522. var conditionAskserie string // 系列问答 4
  523. var askseriePars []interface{}
  524. if audioIds != "" {
  525. sliceId := strings.Split(audioIds, ",")
  526. audioAct += ` AND a.activity_voice_id IN (` + strings.Join(sliceId, ",") + `)`
  527. } else {
  528. audioAct += ` AND a.activity_voice_id = 0 `
  529. }
  530. if activityVideoIds != "" {
  531. sliceId := strings.Split(activityVideoIds, ",")
  532. videoAct += ` AND a.video_id IN (` + strings.Join(sliceId, ",") + `)`
  533. } else {
  534. videoAct += ` AND a.video_id = 0 `
  535. }
  536. if roadshowIdsStr != "" {
  537. sliceId := strings.Split(roadshowIdsStr, ",")
  538. videoMico += ` AND a.video_id IN (` + strings.Join(sliceId, ",") + `)`
  539. } else {
  540. videoMico += ` AND a.video_id = 0 `
  541. }
  542. if askserieVideoIds != "" {
  543. sliceId := strings.Split(askserieVideoIds, ",")
  544. conditionAskserie += ` AND a.askserie_video_id IN (` + strings.Join(sliceId, ",") + `)`
  545. } else {
  546. conditionAskserie += ` AND a.askserie_video_id = 0 `
  547. }
  548. //发布状态
  549. audioAct += ` AND b.publish_status = 1 `
  550. videoAct += ` AND b.publish_status = 1 `
  551. videoMico += ` AND a.publish_status = 1 `
  552. conditionAskserie += ` AND a.publish_status = 1 `
  553. total, videoList, e = models.GetMicroRoadShowVideoPageListV12(startSize, pageSize, audioAct, audioActPars, videoAct, videoActPars, videoMico, videoMicoPars, conditionAskserie, askseriePars)
  554. if e != nil {
  555. err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
  556. return
  557. }
  558. userId := user.UserId
  559. listMycollect, e := models.GetUserMicroRoadshowCollectList(userId)
  560. if e != nil {
  561. err = errors.New("GetUserMicroRoadshowCollectList, Err: " + e.Error())
  562. return
  563. }
  564. mapaudioIds := make(map[int]int) //活动音频
  565. mapvideoIds := make(map[int]int) // 微路演视频
  566. mapactivityVideoIds := make(map[int]int) // 活动视频
  567. mapAskserieVideoIds := make(map[int]int) // 活动视频
  568. for _, item := range listMycollect {
  569. if item.ActivityVoiceId > 0 {
  570. mapaudioIds[item.ActivityVoiceId] = item.ActivityVoiceId
  571. } else if item.VideoId > 0 {
  572. mapvideoIds[item.VideoId] = item.VideoId
  573. } else if item.ActivityVideoId > 0 {
  574. mapactivityVideoIds[item.ActivityVideoId] = item.ActivityVideoId
  575. }
  576. }
  577. listAskserieVideoCollect, e := models.GetUserCygxAskserieVideoCollectList(userId)
  578. if e != nil {
  579. err = errors.New("GetUserCygxAskserieVideoCollectList, Err: " + e.Error())
  580. return
  581. }
  582. for _, v := range listAskserieVideoCollect {
  583. if v.AskserieVideoId > 0 {
  584. mapAskserieVideoIds[v.AskserieVideoId] = v.AskserieVideoId
  585. }
  586. }
  587. for _, item := range videoList {
  588. if item.Type == 1 {
  589. //音频
  590. if mapaudioIds[item.Id] > 0 {
  591. item.IsCollect = true
  592. }
  593. } else if item.Type == 2 {
  594. //活动视频
  595. if mapactivityVideoIds[item.Id] > 0 {
  596. item.IsCollect = true
  597. }
  598. } else if item.Type == 3 {
  599. //微路演视频
  600. if mapvideoIds[item.Id] > 0 {
  601. item.IsCollect = true
  602. }
  603. } else if item.Type == 4 {
  604. //系列问答视频
  605. if mapAskserieVideoIds[item.SourceId] > 0 {
  606. item.IsCollect = true
  607. }
  608. }
  609. }
  610. for _, v := range videoList {
  611. v.LabelType = v.Type
  612. if v.Type == 1 || v.Type == 2 {
  613. v.LabelType = v.ActivityFileType
  614. }
  615. }
  616. respList = videoList
  617. return
  618. }
  619. // 获取用户权限
  620. func GetUserhasPermission(user *models.WxUserItem) (hasPermission int, err error) {
  621. //判断是否已经申请过
  622. applyCount, err := models.GetApplyRecordCount(user.UserId)
  623. if err != nil && err.Error() != utils.ErrNoRow() {
  624. return
  625. }
  626. if applyCount > 0 {
  627. hasPermission = 3
  628. } else {
  629. hasPermission = 5
  630. }
  631. //HasPermission int `description:"1:有该行业权限,正常展示,2:无该行业权限,不存在权益客户下,3:无该品类权限,已提交过申请,4:无该行业权限,未提交过申请,5:潜在客户,未提交过申请,6:潜在客户,已提交过申请"`
  632. if user.CompanyId > 1 {
  633. companyPermission, errPer := models.GetCompanyPermission(user.CompanyId)
  634. if errPer != nil {
  635. err = errPer
  636. return
  637. }
  638. if companyPermission == "" {
  639. if applyCount > 0 {
  640. hasPermission = 3
  641. } else {
  642. hasPermission = 4
  643. }
  644. } else {
  645. if strings.Contains(companyPermission, "医药") || strings.Contains(companyPermission, "科技") || strings.Contains(companyPermission, "消费") || strings.Contains(companyPermission, "智造") || strings.Contains(companyPermission, "策略") {
  646. hasPermission = 1
  647. }
  648. }
  649. }
  650. return
  651. }
  652. // SendPermissionApplyTemplateMsgAdmin 处理试用申请给王芳,汪洋发消息
  653. func SendPermissionApplyTemplateMsgAdmin(req models.ApplyTryReq, usermobile, applyMethod string, isResearch bool) (err error) {
  654. defer func() {
  655. if err != nil {
  656. go utils.SendAlarmMsg("处理试用申请给王芳,汪洋发消息失败, ErrMsg: "+err.Error(), 3)
  657. }
  658. }()
  659. var configCode string
  660. //如果是研选的就推送给汪洋跟王芳,否则就推送给王芳
  661. if isResearch {
  662. configCode = utils.TPL_MSG_WANG_FANG_WANG_YANG
  663. } else {
  664. configCode = utils.TPL_MSG
  665. }
  666. cnf, e := models.GetConfigByCode(configCode)
  667. if e != nil {
  668. err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
  669. return
  670. }
  671. openIdList, e := models.GetWxOpenIdByMobileList(cnf.ConfigValue)
  672. if e != nil && e.Error() != utils.ErrNoRow() {
  673. err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
  674. return err
  675. }
  676. for _, v := range openIdList {
  677. go SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, usermobile, applyMethod, v)
  678. }
  679. return
  680. }