permission.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. package company
  2. import (
  3. "errors"
  4. "fmt"
  5. companyCache "hongze/hongze_yb/cache/company"
  6. "hongze/hongze_yb/global"
  7. "hongze/hongze_yb/models/response"
  8. "hongze/hongze_yb/models/tables/admin"
  9. "hongze/hongze_yb/models/tables/chart_permission"
  10. "hongze/hongze_yb/models/tables/company"
  11. "hongze/hongze_yb/models/tables/company_product"
  12. "hongze/hongze_yb/models/tables/company_report_permission"
  13. "hongze/hongze_yb/models/tables/company_user_chart_classify_permission"
  14. "hongze/hongze_yb/models/tables/wx_user"
  15. "hongze/hongze_yb/models/tables/yb_apply_record"
  16. "hongze/hongze_yb/services/user"
  17. "hongze/hongze_yb/utils"
  18. "sort"
  19. "strings"
  20. "time"
  21. )
  22. // GetClassNameListByProductId 根据权限id获取权限分类
  23. func GetClassNameListByProductId(productId int64) (list []*chart_permission.ChartPermission, err error) {
  24. list, err = chart_permission.GetClassNameListByProductId(productId)
  25. return
  26. }
  27. // GetPermissionListByProductId 根据product_id获取所有的权限列表
  28. func GetPermissionListByProductId(productId int64) (list []*chart_permission.ChartPermission, err error) {
  29. list, err = chart_permission.GetListByProductId(productId)
  30. return
  31. }
  32. // GetValidPermissionByCompany2ProductId 根据客户id和产品id获取有效的权限列表
  33. func GetValidPermissionByCompany2ProductId(companyId, productId int64) (list []*company_report_permission.CompanyReportPermission, err error) {
  34. where := make(map[string]interface{})
  35. where["company_id ="] = companyId
  36. where["product_id ="] = productId
  37. where["status in"] = []string{"正式", "试用", "永续"}
  38. list, err = company_report_permission.GetByWhereMap(where)
  39. return
  40. }
  41. // GetPurchasePermissionIdsByCompany2ProductId 根据客户id和产品id获取有效的权限id集合
  42. func GetPurchasePermissionIdsByCompany2ProductId(companyId, productId int64) (permissionIds []int, err error) {
  43. where := make(map[string]interface{})
  44. where["company_id ="] = companyId
  45. where["product_id ="] = productId
  46. where["status in"] = []string{"正式", "永续"}
  47. list, err := company_report_permission.GetByWhereMap(where)
  48. if err != nil {
  49. return
  50. }
  51. for _, v := range list {
  52. permissionIds = append(permissionIds, v.ChartPermissionID)
  53. }
  54. return
  55. }
  56. // GetValidPermissionIdListByCompany2ProductId 根据客户id和产品id获取有效的权限id列表
  57. func GetValidPermissionIdListByCompany2ProductId(companyId, productId int64) (list []int, err error) {
  58. companyReportPermissionList, err := GetValidPermissionByCompany2ProductId(companyId, productId)
  59. if err != nil {
  60. return
  61. }
  62. for _, v := range companyReportPermissionList {
  63. list = append(list, v.ChartPermissionID)
  64. }
  65. return
  66. }
  67. // PermissionCheckInfo 权限校验完成后的结果
  68. type PermissionCheckInfo struct {
  69. Name string `json:"name" description:"销售名称"`
  70. Mobile string `json:"mobile" description:"手机号"`
  71. Type string `json:"type" description:"校验失败,没有权限,需要让前端处理的类型,枚举值:apply,contact"`
  72. CustomerInfo CustomerInfo `json:"customer_info" description:"客户信息"`
  73. }
  74. // CustomerInfo 客户信息
  75. type CustomerInfo struct {
  76. CompanyName string `json:"company_name" description:"客户(公司)名称"`
  77. Name string `json:"name" description:"联系人名称"`
  78. Mobile string `json:"mobile" description:"手机号"`
  79. Status string `json:"status" description:"状态"`
  80. IsSuspend int8 `json:"is_suspend" description:"启用与否字段:1:暂停,0:启用"`
  81. HasApply bool `json:"has_apply" description:"是否有申请过"`
  82. }
  83. // CheckPermissionByFicc 权限校验
  84. func CheckPermissionByFicc(companyId int64, permissionId int) (ok bool, permissionCheckInfo PermissionCheckInfo, err error) {
  85. //非潜在客户
  86. var productId int64
  87. productId = 1
  88. if companyId > 1 {
  89. //查询是否 开通ficc的客户
  90. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  91. if tmpErr != nil {
  92. // 没有开通ficc的客户
  93. if tmpErr == utils.ErrNoRow {
  94. permissionCheckInfo.Type = "apply"
  95. return
  96. }
  97. err = tmpErr
  98. return
  99. }
  100. // 如果客户ficc产品的状态是流失,那么也是让去申请
  101. if companyProductInfo.Status == "流失" {
  102. permissionCheckInfo.Type = "apply"
  103. return
  104. }
  105. // 获取有效的权限id列表
  106. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  107. if tmpErr != nil {
  108. err = tmpErr
  109. return
  110. }
  111. // 校验在有效的权限id列表中是否存在该权限
  112. for _, validPermissionId := range validPermissionIdList {
  113. //如果有该权限id,那么直接返回校验通过
  114. if validPermissionId == permissionId {
  115. ok = true
  116. return
  117. }
  118. }
  119. //查找对应客户的销售信息
  120. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  121. if tmpErr != nil {
  122. err = tmpErr
  123. return
  124. }
  125. permissionCheckInfo = PermissionCheckInfo{
  126. Name: adminInfo.RealName,
  127. Mobile: adminInfo.Mobile,
  128. Type: "contact",
  129. }
  130. } else {
  131. permissionCheckInfo.Type = "apply"
  132. }
  133. return
  134. }
  135. // CheckPermissionByPermissionIdList2Ficc 根据权限id集合权限校验(ficc)
  136. func CheckPermissionByPermissionIdList2Ficc(companyId int64, userId int, permissionIdList []int) (ok bool, permissionCheckInfo PermissionCheckInfo, err error) {
  137. defer func() {
  138. // 如果无权限,那么就去查询是否申请过
  139. if ok == false {
  140. ok, _ = checkPermissionByPermissionIdList2Rai(companyId, userId, permissionIdList)
  141. }
  142. if ok == false && permissionCheckInfo.Type == "apply" {
  143. _, err = yb_apply_record.GetLastNotOpRecordByUserId(userId) // 从来源我的/活动申请的记录
  144. if err != nil && err != utils.ErrNoRow {
  145. return
  146. }
  147. //查询是否有申请过,如果有申请过的话,那么err是nil
  148. if err == nil {
  149. permissionCheckInfo.CustomerInfo.HasApply = true
  150. }
  151. }
  152. }()
  153. //非潜在客户
  154. if len(permissionIdList) <= 0 {
  155. err = fmt.Errorf("权限异常,请传入需要校验的权限")
  156. return
  157. }
  158. permissionMap := make(map[int]bool)
  159. for _, permissionId := range permissionIdList {
  160. permissionMap[permissionId] = true
  161. }
  162. var productId int64
  163. productId = 1
  164. if companyId > 1 {
  165. //查询是否 开通ficc的客户
  166. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  167. if tmpErr != nil {
  168. // 没有开通ficc的客户
  169. if tmpErr == utils.ErrNoRow {
  170. permissionCheckInfo.Type = "apply"
  171. return
  172. }
  173. err = tmpErr
  174. return
  175. }
  176. wxUser, tmpErr := wx_user.GetByUserId(userId)
  177. if tmpErr != nil {
  178. permissionCheckInfo.Type = "apply"
  179. err = tmpErr
  180. return
  181. }
  182. // 查询用户是否为弘则研究已禁用的联系人
  183. if companyId == 16 {
  184. if wxUser.Enabled != 1 {
  185. permissionCheckInfo.Type = "apply"
  186. return
  187. }
  188. }
  189. //客户信息
  190. companyInfo, tmpErr := company.GetByCompanyId(companyId)
  191. if tmpErr != nil {
  192. // 没有开通ficc的客户
  193. if tmpErr == utils.ErrNoRow {
  194. permissionCheckInfo.Type = "apply"
  195. return
  196. }
  197. err = tmpErr
  198. return
  199. }
  200. customerInfo := CustomerInfo{
  201. CompanyName: companyInfo.CompanyName,
  202. Status: companyProductInfo.Status,
  203. Name: wxUser.RealName,
  204. IsSuspend: companyProductInfo.IsSuspend,
  205. Mobile: wxUser.Mobile,
  206. }
  207. permissionCheckInfo.CustomerInfo = customerInfo
  208. // 如果客户ficc产品的状态是流失,那么也是让去申请
  209. if companyProductInfo.Status == "流失" {
  210. permissionCheckInfo.Type = "apply"
  211. return
  212. }
  213. //查找对应客户的销售信息
  214. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  215. if tmpErr != nil {
  216. //if tmpErr ==
  217. err = tmpErr
  218. return
  219. }
  220. permissionCheckInfo.Name = adminInfo.RealName
  221. permissionCheckInfo.Mobile = adminInfo.Mobile
  222. if companyProductInfo.Status == "冻结" {
  223. permissionCheckInfo.Type = "contact"
  224. return
  225. }
  226. //客户状态是:试用暂停状态(联系销售)
  227. if companyProductInfo.Status == "试用" && companyProductInfo.IsSuspend == 1 {
  228. permissionCheckInfo.Type = "contact"
  229. return
  230. }
  231. // 获取有效的权限id列表
  232. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  233. if tmpErr != nil {
  234. err = tmpErr
  235. return
  236. }
  237. // 校验在有效的权限id列表中是否存在该权限
  238. for _, validPermissionId := range validPermissionIdList {
  239. //如果有该权限id,那么直接返回校验通过
  240. if _, validOk := permissionMap[validPermissionId]; validOk {
  241. ok = true
  242. return
  243. }
  244. }
  245. permissionCheckInfo.Type = "contact"
  246. } else {
  247. permissionCheckInfo.Type = "apply"
  248. }
  249. return
  250. }
  251. func GetCheckPermission(companyId int64, userId int, permissionIdList []int) (ok bool, permissionCheckInfo response.PermissionCheckInfo, finalValidPermissionIds []int, err error) {
  252. defer func() {
  253. // 如果无权限,那么就去查询是否申请过
  254. if ok == false {
  255. ok, _ = checkPermissionByPermissionIdList2Rai(companyId, userId, permissionIdList)
  256. }
  257. if ok == false && permissionCheckInfo.Type == "apply" {
  258. _, err = yb_apply_record.GetLastNotOpRecordByUserId(userId) // 从来源我的/活动申请的记录
  259. if err != nil {
  260. if err == utils.ErrNoRow {
  261. err = nil
  262. }
  263. return
  264. }
  265. //查询是否有申请过,如果有申请过的话,那么err是nil
  266. if err == nil {
  267. permissionCheckInfo.CustomerInfo.HasApply = true
  268. }
  269. }
  270. }()
  271. permissionCheckInfo.HzPhone = utils.HZPHONE
  272. //非潜在客户
  273. permissionMap := make(map[int]bool)
  274. if len(permissionIdList) > 0 {
  275. for _, permissionId := range permissionIdList {
  276. permissionMap[permissionId] = true
  277. }
  278. }
  279. var productId int64
  280. productId = 1
  281. if companyId > 1 {
  282. //查询是否 开通ficc的客户
  283. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  284. if tmpErr != nil {
  285. // 没有开通ficc的客户
  286. if tmpErr == utils.ErrNoRow {
  287. permissionCheckInfo.Type = "apply"
  288. return
  289. }
  290. err = tmpErr
  291. return
  292. }
  293. wxUser, tmpErr := wx_user.GetByUserId(userId)
  294. if tmpErr != nil {
  295. permissionCheckInfo.Type = "apply"
  296. err = tmpErr
  297. return
  298. }
  299. //客户信息
  300. companyInfo, tmpErr := companyCache.GetByCompanyId(companyId)
  301. if tmpErr != nil {
  302. // 没有开通ficc的客户
  303. if tmpErr == utils.ErrNoRow {
  304. permissionCheckInfo.Type = "apply"
  305. return
  306. }
  307. err = tmpErr
  308. return
  309. }
  310. customerInfo := response.CustomerInfo{
  311. CompanyName: companyInfo.CompanyName,
  312. Status: companyProductInfo.Status,
  313. Name: wxUser.RealName,
  314. IsSuspend: companyProductInfo.IsSuspend,
  315. Mobile: wxUser.Mobile,
  316. }
  317. permissionCheckInfo.CustomerInfo = customerInfo
  318. // 如果客户ficc产品的状态是流失,那么也是让去申请
  319. if companyProductInfo.Status == "流失" {
  320. permissionCheckInfo.Type = "apply"
  321. return
  322. }
  323. //查找对应客户的销售信息
  324. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  325. if tmpErr != nil {
  326. //if tmpErr ==
  327. err = tmpErr
  328. return
  329. }
  330. permissionCheckInfo.Name = adminInfo.RealName
  331. permissionCheckInfo.Mobile = adminInfo.Mobile
  332. if companyProductInfo.Status == "冻结" {
  333. permissionCheckInfo.Type = "contact"
  334. return
  335. }
  336. //客户状态是:试用暂停状态(联系销售)
  337. if companyProductInfo.Status == "试用" && companyProductInfo.IsSuspend == 1 {
  338. permissionCheckInfo.Type = "contact"
  339. return
  340. }
  341. // 获取有效的权限id列表
  342. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  343. if tmpErr != nil {
  344. err = tmpErr
  345. return
  346. }
  347. // 校验在有效的权限id列表中是否存在该权限
  348. if len(permissionIdList) > 0 {
  349. for _, validPermissionId := range validPermissionIdList {
  350. //如果有该权限id,那么直接返回校验通过
  351. if _, validOk := permissionMap[validPermissionId]; validOk {
  352. finalValidPermissionIds = append(finalValidPermissionIds, validPermissionId)
  353. ok = true
  354. }
  355. }
  356. return
  357. }
  358. permissionCheckInfo.Type = "contact"
  359. } else {
  360. permissionCheckInfo.Type = "apply"
  361. }
  362. return
  363. }
  364. // checkPermissionByPermissionIdList2Rai 根据权限id集合权限校验(权益)
  365. func checkPermissionByPermissionIdList2Rai(companyId int64, userId int, permissionIdList []int) (ok bool, err error) {
  366. //非潜在客户
  367. if len(permissionIdList) <= 0 {
  368. err = fmt.Errorf("权限异常,请传入需要校验的权限")
  369. return
  370. }
  371. // 查询用户是否为弘则研究已禁用的联系人
  372. wxUser, tmpErr := wx_user.GetByUserId(userId)
  373. if tmpErr != nil {
  374. err = fmt.Errorf("用户信息异常")
  375. return
  376. }
  377. if companyId == 16 {
  378. if wxUser.Enabled != 1 {
  379. return
  380. }
  381. }
  382. //市场策略(ficc权限id):33
  383. ficcPermissionId := 33
  384. //市场策略(权益权限id):23
  385. raiPermissionId := 23
  386. //是否往下校验
  387. var permissionOk bool
  388. for _, permissionId := range permissionIdList {
  389. if permissionId == ficcPermissionId {
  390. permissionOk = true
  391. }
  392. }
  393. var productId int64
  394. productId = 2
  395. if companyId > 1 && permissionOk {
  396. // 获取有效的权限id列表
  397. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  398. if tmpErr != nil {
  399. err = tmpErr
  400. return
  401. }
  402. // 校验在有效的权限id列表中是否存在该权限
  403. for _, validPermissionId := range validPermissionIdList {
  404. if validPermissionId == raiPermissionId {
  405. ok = true
  406. return
  407. }
  408. }
  409. }
  410. return
  411. }
  412. // ChartPermissionCheckInfo 图表权限验证信息
  413. type ChartPermissionCheckInfo struct {
  414. Name string `json:"name" description:"销售名称"`
  415. Mobile string `json:"mobile" description:"手机号"`
  416. Type string `json:"type" description:"无权限,需要前端处理的类型,枚举值:expired, apply, contact"`
  417. CustomerInfo CustomerInfo `json:"customer_info" description:"客户信息"`
  418. }
  419. // CheckUserChartPermission 验证用户/联系人的图库权限
  420. func CheckUserChartPermission(companyId int64, userId int) (ok bool, permissionCheckInfo ChartPermissionCheckInfo, err error) {
  421. defer func() {
  422. // 如果无权限,那么就去查询是否申请过
  423. if ok == false && permissionCheckInfo.Type == "apply" {
  424. _, err = yb_apply_record.GetLastNotOpRecordByUserId(userId) // 图库申请
  425. // 查询是否有申请过,如果有申请过的话,那么err是nil
  426. if err != nil {
  427. if err == utils.ErrNoRow {
  428. err = nil
  429. return
  430. }
  431. return
  432. }
  433. permissionCheckInfo.CustomerInfo.HasApply = true
  434. }
  435. }()
  436. var productId int64
  437. productId = 1
  438. if companyId > 1 {
  439. // 查询是否开通FICC
  440. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  441. if tmpErr != nil {
  442. // 没有开通FICC
  443. if tmpErr == utils.ErrNoRow {
  444. permissionCheckInfo.Type = "apply"
  445. return
  446. }
  447. err = tmpErr
  448. return
  449. }
  450. wxUser, tmpErr := wx_user.GetByUserId(userId)
  451. if tmpErr != nil {
  452. permissionCheckInfo.Type = "apply"
  453. err = tmpErr
  454. return
  455. }
  456. // 查询用户是否为弘则研究已禁用的联系人
  457. if companyId == 16 {
  458. if wxUser.Enabled != 1 {
  459. permissionCheckInfo.Type = "apply"
  460. return
  461. }
  462. }
  463. // 客户信息
  464. companyInfo, tmpErr := company.GetByCompanyId(companyId)
  465. if tmpErr != nil {
  466. // 没有开通FICC
  467. if tmpErr == utils.ErrNoRow {
  468. permissionCheckInfo.Type = "apply"
  469. return
  470. }
  471. err = tmpErr
  472. return
  473. }
  474. customerInfo := CustomerInfo{
  475. CompanyName: companyInfo.CompanyName,
  476. Status: companyProductInfo.Status,
  477. Name: wxUser.RealName,
  478. IsSuspend: companyProductInfo.IsSuspend,
  479. Mobile: wxUser.Mobile,
  480. }
  481. permissionCheckInfo.CustomerInfo = customerInfo
  482. // 如果客户FICC产品的状态是流失-申请
  483. if companyProductInfo.Status == "流失" {
  484. permissionCheckInfo.Type = "apply"
  485. return
  486. }
  487. // 查找对应客户的销售信息
  488. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  489. if tmpErr != nil {
  490. err = tmpErr
  491. return
  492. }
  493. // 客户状态为冻结/试用暂停-联系销售
  494. permissionCheckInfo.Name = adminInfo.RealName
  495. permissionCheckInfo.Mobile = adminInfo.Mobile
  496. if companyProductInfo.Status == "冻结" || (companyProductInfo.Status == "试用" && companyProductInfo.IsSuspend == 1) {
  497. permissionCheckInfo.Type = "contact"
  498. return
  499. }
  500. // 验证用户的图表权限
  501. permissionInfo, tmpErr := company_user_chart_classify_permission.GetPermissionByUserId(userId)
  502. if tmpErr != nil {
  503. if tmpErr == utils.ErrNoRow {
  504. // 无权限-联系销售
  505. permissionCheckInfo.Type = "contact"
  506. return
  507. }
  508. err = tmpErr
  509. return
  510. }
  511. nowTime := time.Now()
  512. if permissionInfo.Enabled != 1 {
  513. // 权限被禁用-联系销售
  514. permissionCheckInfo.Type = "contact"
  515. return
  516. }
  517. endTime := permissionInfo.EndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
  518. if nowTime.After(permissionInfo.StartTime) && nowTime.Before(endTime) {
  519. ok = true
  520. } else {
  521. // 权限已到期
  522. permissionCheckInfo.Type = "expired"
  523. return
  524. }
  525. // 都不是默认联系销售
  526. permissionCheckInfo.Type = "contact"
  527. } else {
  528. permissionCheckInfo.Type = "apply"
  529. }
  530. return
  531. }
  532. type FiccPermissionList struct {
  533. ClassifyName string `description:"分类"`
  534. HasPermission bool `description:"是否有权限"`
  535. Items []*PermissionItem `description:"子类"`
  536. }
  537. type PermissionItem struct {
  538. PermissionId int `description:"权限id"`
  539. PermissionName string `description:"权限名称"`
  540. HasPermission bool `description:"是否有权限"`
  541. }
  542. func GetHomeFiccPermissions(user user.UserInfo) (ret response.PermissionFiccResp, err error) {
  543. var errMsg string
  544. defer func() {
  545. if err != nil {
  546. global.LOG.Critical(fmt.Sprintf("GetHomeFiccPermissions: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
  547. }
  548. }()
  549. validPermissionList, err := GetValidPermissionByCompany2ProductId(user.CompanyID, 1)
  550. if err != nil {
  551. return
  552. }
  553. var validPermissionIds []int
  554. for _, item := range validPermissionList {
  555. validPermissionIds = append(validPermissionIds, item.ChartPermissionID)
  556. }
  557. permissionList, err := chart_permission.GetFiccListExceptTacticByProductId()
  558. if err != nil {
  559. return
  560. }
  561. permissionMap := make(map[uint64]bool)
  562. permissionFirstMap := make(map[string]*response.PermissionFirstItem)
  563. permissionFirstMap["宏观经济"] = &response.PermissionFirstItem{
  564. Sort: 1001,
  565. }
  566. permissionFirstMap["化工产业"] = &response.PermissionFirstItem{
  567. Sort: 1002,
  568. }
  569. permissionFirstMap["建材产业"] = &response.PermissionFirstItem{
  570. Sort: 1003,
  571. }
  572. permissionFirstMap["有色产业"] = &response.PermissionFirstItem{
  573. Sort: 1004,
  574. }
  575. for k, v := range permissionList {
  576. permissionMap[v.ChartPermissionID] = false
  577. for _, myPerId := range validPermissionIds {
  578. if int(v.ChartPermissionID) == myPerId {
  579. permissionMap[v.ChartPermissionID] = true
  580. permissionList[k].Sort = v.Sort - 1000
  581. if _, ok := permissionFirstMap[v.ClassifyName]; ok && !permissionFirstMap[v.ClassifyName].IsCheck {
  582. permissionFirstMap[v.ClassifyName].AuthOk = true
  583. permissionFirstMap[v.ClassifyName].Sort -= 1000
  584. permissionFirstMap[v.ClassifyName].IsCheck = true
  585. }
  586. break
  587. }
  588. }
  589. }
  590. for _, v := range permissionList {
  591. temp := new(response.PermissionFiccSecondItem)
  592. temp.Sort = v.Sort
  593. temp.ChartPermissionID = int(v.ChartPermissionID)
  594. temp.ChartPermissionName = v.PermissionName
  595. temp.AuthOk = permissionMap[v.ChartPermissionID]
  596. if _, ok := permissionFirstMap[v.ClassifyName]; ok {
  597. permissionFirstMap[v.ClassifyName].List = append(permissionFirstMap[v.ClassifyName].List, temp)
  598. } else {
  599. permissionFirstMap[v.ClassifyName] = &response.PermissionFirstItem{
  600. List: []*response.PermissionFiccSecondItem{temp},
  601. }
  602. }
  603. }
  604. var list response.PermissionFiccList
  605. for k, v := range permissionFirstMap {
  606. temp := new(response.PermissionFiccItem)
  607. temp.Sort = v.Sort
  608. temp.ClassifyName = k
  609. if strings.Contains(temp.ClassifyName, "宏观") {
  610. temp.ClassifyName = "宏观经济"
  611. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_hongguan_select.png"
  612. temp.IconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_hongguan.png"
  613. } else if temp.ClassifyName == "化工产业" {
  614. temp.ClassifyName = "化工"
  615. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_huagong_select.png"
  616. temp.IconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_huagong.png"
  617. } else if temp.ClassifyName == "建材产业" {
  618. temp.ClassifyName = "建材"
  619. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_black_select.png"
  620. temp.IconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_black.png"
  621. } else if temp.ClassifyName == "有色产业" {
  622. temp.ClassifyName = "有色"
  623. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_youse_select.png"
  624. temp.IconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_youse.png"
  625. }
  626. if len(v.List) > 0 {
  627. temp.List = v.List
  628. sort.Sort(temp.List)
  629. }
  630. list = append(list, temp)
  631. }
  632. if len(list) > 0 {
  633. sort.Sort(list)
  634. }
  635. //判断是否是已购用户,如果是已购用户,需要返回对应的联系人方式
  636. companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
  637. if err != nil {
  638. if err == utils.ErrNoRow {
  639. err = nil
  640. }
  641. }
  642. if err != nil {
  643. errMsg = err.Error()
  644. err = errors.New("查询用户状态失败")
  645. return
  646. }
  647. // 已购仅付费用户可见
  648. var contactInfo response.PermissionCheckContactInfo
  649. checkFlag := false
  650. if companyProduct.Status != "" && strings.Contains("永续,正式", companyProduct.Status) {
  651. //查询对应的销售
  652. //查找对应客户的销售信息
  653. adminInfo, tmpErr := admin.GetByAdminId(companyProduct.SellerID)
  654. if tmpErr != nil {
  655. errMsg = tmpErr.Error()
  656. err = errors.New("查询销售信息出错")
  657. return
  658. }
  659. contactInfo.Name = adminInfo.RealName
  660. contactInfo.Mobile = adminInfo.Mobile
  661. checkFlag = true
  662. }
  663. temp := new(response.PermissionFiccItem)
  664. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_more_select.png"
  665. temp.IconUrl = utils.ALIYUN_YBIMG_HOST + "ficc_icon_idx_more.png"
  666. temp.ClassifyName = "更多报告"
  667. temp.Sort = 100000
  668. list = append(list, temp)
  669. ret.PermissionList = list
  670. ret.CheckFlag = checkFlag
  671. ret.ContactInfo = contactInfo
  672. return
  673. }