permission.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  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. companyInfo, tmpErr := company.GetByCompanyId(companyId)
  184. if tmpErr != nil {
  185. // 没有开通ficc的客户
  186. if tmpErr == utils.ErrNoRow {
  187. permissionCheckInfo.Type = "apply"
  188. return
  189. }
  190. err = tmpErr
  191. return
  192. }
  193. customerInfo := CustomerInfo{
  194. CompanyName: companyInfo.CompanyName,
  195. Status: companyProductInfo.Status,
  196. Name: wxUser.RealName,
  197. IsSuspend: companyProductInfo.IsSuspend,
  198. Mobile: wxUser.Mobile,
  199. }
  200. permissionCheckInfo.CustomerInfo = customerInfo
  201. // 如果客户ficc产品的状态是流失,那么也是让去申请
  202. if companyProductInfo.Status == "流失" {
  203. permissionCheckInfo.Type = "apply"
  204. return
  205. }
  206. //查找对应客户的销售信息
  207. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  208. if tmpErr != nil {
  209. //if tmpErr ==
  210. err = tmpErr
  211. return
  212. }
  213. permissionCheckInfo.Name = adminInfo.RealName
  214. permissionCheckInfo.Mobile = adminInfo.Mobile
  215. if companyProductInfo.Status == "冻结" {
  216. permissionCheckInfo.Type = "contact"
  217. return
  218. }
  219. //客户状态是:试用暂停状态(联系销售)
  220. if companyProductInfo.Status == "试用" && companyProductInfo.IsSuspend == 1 {
  221. permissionCheckInfo.Type = "contact"
  222. return
  223. }
  224. // 获取有效的权限id列表
  225. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  226. if tmpErr != nil {
  227. err = tmpErr
  228. return
  229. }
  230. // 校验在有效的权限id列表中是否存在该权限
  231. for _, validPermissionId := range validPermissionIdList {
  232. //如果有该权限id,那么直接返回校验通过
  233. if _, validOk := permissionMap[validPermissionId]; validOk {
  234. ok = true
  235. return
  236. }
  237. }
  238. permissionCheckInfo.Type = "contact"
  239. } else {
  240. permissionCheckInfo.Type = "apply"
  241. }
  242. return
  243. }
  244. func GetCheckPermission(companyId int64, userId int, permissionIdList []int) (ok bool, permissionCheckInfo response.PermissionCheckInfo, finalValidPermissionIds []int, err error) {
  245. defer func() {
  246. // 如果无权限,那么就去查询是否申请过
  247. if ok == false {
  248. ok, _ = checkPermissionByPermissionIdList2Rai(companyId, userId, permissionIdList)
  249. }
  250. if ok == false && permissionCheckInfo.Type == "apply" {
  251. _, err = yb_apply_record.GetLastNotOpRecordByUserId(userId) // 从来源我的/活动申请的记录
  252. if err != nil {
  253. if err == utils.ErrNoRow {
  254. err = nil
  255. }
  256. return
  257. }
  258. //查询是否有申请过,如果有申请过的话,那么err是nil
  259. if err == nil {
  260. permissionCheckInfo.CustomerInfo.HasApply = true
  261. }
  262. }
  263. }()
  264. //非潜在客户
  265. permissionMap := make(map[int]bool)
  266. if len(permissionIdList) > 0 {
  267. for _, permissionId := range permissionIdList {
  268. permissionMap[permissionId] = true
  269. }
  270. }
  271. var productId int64
  272. productId = 1
  273. if companyId > 1 {
  274. //查询是否 开通ficc的客户
  275. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  276. if tmpErr != nil {
  277. // 没有开通ficc的客户
  278. if tmpErr == utils.ErrNoRow {
  279. permissionCheckInfo.Type = "apply"
  280. return
  281. }
  282. err = tmpErr
  283. return
  284. }
  285. wxUser, tmpErr := wx_user.GetByUserId(userId)
  286. if tmpErr != nil {
  287. permissionCheckInfo.Type = "apply"
  288. err = tmpErr
  289. return
  290. }
  291. //客户信息
  292. companyInfo, tmpErr := companyCache.GetByCompanyId(companyId)
  293. if tmpErr != nil {
  294. // 没有开通ficc的客户
  295. if tmpErr == utils.ErrNoRow {
  296. permissionCheckInfo.Type = "apply"
  297. return
  298. }
  299. err = tmpErr
  300. return
  301. }
  302. customerInfo := response.CustomerInfo{
  303. CompanyName: companyInfo.CompanyName,
  304. Status: companyProductInfo.Status,
  305. Name: wxUser.RealName,
  306. IsSuspend: companyProductInfo.IsSuspend,
  307. Mobile: wxUser.Mobile,
  308. }
  309. permissionCheckInfo.CustomerInfo = customerInfo
  310. // 如果客户ficc产品的状态是流失,那么也是让去申请
  311. if companyProductInfo.Status == "流失" {
  312. permissionCheckInfo.Type = "apply"
  313. return
  314. }
  315. //查找对应客户的销售信息
  316. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  317. if tmpErr != nil {
  318. //if tmpErr ==
  319. err = tmpErr
  320. return
  321. }
  322. permissionCheckInfo.Name = adminInfo.RealName
  323. permissionCheckInfo.Mobile = adminInfo.Mobile
  324. if companyProductInfo.Status == "冻结" {
  325. permissionCheckInfo.Type = "contact"
  326. return
  327. }
  328. //客户状态是:试用暂停状态(联系销售)
  329. if companyProductInfo.Status == "试用" && companyProductInfo.IsSuspend == 1 {
  330. permissionCheckInfo.Type = "contact"
  331. return
  332. }
  333. // 获取有效的权限id列表
  334. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  335. if tmpErr != nil {
  336. err = tmpErr
  337. return
  338. }
  339. // 校验在有效的权限id列表中是否存在该权限
  340. if len(permissionIdList) > 0 {
  341. for _, validPermissionId := range validPermissionIdList {
  342. //如果有该权限id,那么直接返回校验通过
  343. if _, validOk := permissionMap[validPermissionId]; validOk {
  344. finalValidPermissionIds = append(finalValidPermissionIds, validPermissionId)
  345. ok = true
  346. }
  347. }
  348. return
  349. }
  350. permissionCheckInfo.Type = "contact"
  351. } else {
  352. permissionCheckInfo.Type = "apply"
  353. }
  354. permissionCheckInfo.HzPhone = utils.HZPHONE
  355. return
  356. }
  357. // checkPermissionByPermissionIdList2Rai 根据权限id集合权限校验(权益)
  358. func checkPermissionByPermissionIdList2Rai(companyId int64, userId int, permissionIdList []int) (ok bool, err error) {
  359. //非潜在客户
  360. if len(permissionIdList) <= 0 {
  361. err = fmt.Errorf("权限异常,请传入需要校验的权限")
  362. return
  363. }
  364. // 查询用户是否为弘则研究已禁用的联系人
  365. wxUser, tmpErr := wx_user.GetByUserId(userId)
  366. if tmpErr != nil {
  367. err = fmt.Errorf("用户信息异常")
  368. return
  369. }
  370. if companyId == 16 {
  371. if wxUser.Enabled != 1 {
  372. return
  373. }
  374. }
  375. //市场策略(ficc权限id):33
  376. ficcPermissionId := 33
  377. //市场策略(权益权限id):23
  378. raiPermissionId := 23
  379. //是否往下校验
  380. var permissionOk bool
  381. for _, permissionId := range permissionIdList {
  382. if permissionId == ficcPermissionId {
  383. permissionOk = true
  384. }
  385. }
  386. var productId int64
  387. productId = 2
  388. if companyId > 1 && permissionOk {
  389. // 获取有效的权限id列表
  390. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  391. if tmpErr != nil {
  392. err = tmpErr
  393. return
  394. }
  395. // 校验在有效的权限id列表中是否存在该权限
  396. for _, validPermissionId := range validPermissionIdList {
  397. if validPermissionId == raiPermissionId {
  398. ok = true
  399. return
  400. }
  401. }
  402. }
  403. return
  404. }
  405. // ChartPermissionCheckInfo 图表权限验证信息
  406. type ChartPermissionCheckInfo struct {
  407. Name string `json:"name" description:"销售名称"`
  408. Mobile string `json:"mobile" description:"手机号"`
  409. Type string `json:"type" description:"无权限,需要前端处理的类型,枚举值:expired, apply, contact"`
  410. CustomerInfo CustomerInfo `json:"customer_info" description:"客户信息"`
  411. }
  412. // CheckUserChartPermission 验证用户/联系人的图库权限
  413. func CheckUserChartPermission(companyId int64, userId int) (ok bool, permissionCheckInfo ChartPermissionCheckInfo, err error) {
  414. defer func() {
  415. // 如果无权限,那么就去查询是否申请过
  416. if ok == false && permissionCheckInfo.Type == "apply" {
  417. _, err = yb_apply_record.GetLastNotOpRecordByUserId(userId) // 图库申请
  418. // 查询是否有申请过,如果有申请过的话,那么err是nil
  419. if err != nil {
  420. if err == utils.ErrNoRow {
  421. err = nil
  422. return
  423. }
  424. return
  425. }
  426. permissionCheckInfo.CustomerInfo.HasApply = true
  427. }
  428. }()
  429. var productId int64
  430. productId = 1
  431. if companyId > 1 {
  432. // 查询是否开通FICC
  433. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  434. if tmpErr != nil {
  435. // 没有开通FICC
  436. if tmpErr == utils.ErrNoRow {
  437. permissionCheckInfo.Type = "apply"
  438. return
  439. }
  440. err = tmpErr
  441. return
  442. }
  443. wxUser, tmpErr := wx_user.GetByUserId(userId)
  444. if tmpErr != nil {
  445. permissionCheckInfo.Type = "apply"
  446. err = tmpErr
  447. return
  448. }
  449. // 客户信息
  450. companyInfo, tmpErr := company.GetByCompanyId(companyId)
  451. if tmpErr != nil {
  452. // 没有开通FICC
  453. if tmpErr == utils.ErrNoRow {
  454. permissionCheckInfo.Type = "apply"
  455. return
  456. }
  457. err = tmpErr
  458. return
  459. }
  460. customerInfo := CustomerInfo{
  461. CompanyName: companyInfo.CompanyName,
  462. Status: companyProductInfo.Status,
  463. Name: wxUser.RealName,
  464. IsSuspend: companyProductInfo.IsSuspend,
  465. Mobile: wxUser.Mobile,
  466. }
  467. permissionCheckInfo.CustomerInfo = customerInfo
  468. // 如果客户FICC产品的状态是流失-申请
  469. if companyProductInfo.Status == "流失" {
  470. permissionCheckInfo.Type = "apply"
  471. return
  472. }
  473. // 查找对应客户的销售信息
  474. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  475. if tmpErr != nil {
  476. err = tmpErr
  477. return
  478. }
  479. // 客户状态为冻结/试用暂停-联系销售
  480. permissionCheckInfo.Name = adminInfo.RealName
  481. permissionCheckInfo.Mobile = adminInfo.Mobile
  482. if companyProductInfo.Status == "冻结" || (companyProductInfo.Status == "试用" && companyProductInfo.IsSuspend == 1) {
  483. permissionCheckInfo.Type = "contact"
  484. return
  485. }
  486. // 验证用户的图表权限
  487. permissionInfo, tmpErr := company_user_chart_classify_permission.GetPermissionByUserId(userId)
  488. if tmpErr != nil {
  489. if tmpErr == utils.ErrNoRow {
  490. // 无权限-联系销售
  491. permissionCheckInfo.Type = "contact"
  492. return
  493. }
  494. err = tmpErr
  495. return
  496. }
  497. nowTime := time.Now()
  498. if permissionInfo.Enabled != 1 {
  499. // 权限被禁用-联系销售
  500. permissionCheckInfo.Type = "contact"
  501. return
  502. }
  503. endTime := permissionInfo.EndTime.Add(23 * time.Hour + 59 * time.Minute + 59 * time.Second)
  504. if nowTime.After(permissionInfo.StartTime) && nowTime.Before(endTime) {
  505. ok = true
  506. } else {
  507. // 权限已到期
  508. permissionCheckInfo.Type = "expired"
  509. return
  510. }
  511. // 都不是默认联系销售
  512. permissionCheckInfo.Type = "contact"
  513. } else {
  514. permissionCheckInfo.Type = "apply"
  515. }
  516. return
  517. }
  518. type FiccPermissionList struct {
  519. ClassifyName string `description:"分类"`
  520. HasPermission bool `description:"是否有权限"`
  521. Items []*PermissionItem `description:"子类"`
  522. }
  523. type PermissionItem struct {
  524. PermissionId int `description:"权限id"`
  525. PermissionName string `description:"权限名称"`
  526. HasPermission bool `description:"是否有权限"`
  527. }
  528. // GetFiccPermissionList 获取FICC品种权限列表
  529. func GetFiccPermissionList() (list []*FiccPermissionList, err error) {
  530. productId := 1
  531. for _, v := range utils.PermissionFiccClassifyArr {
  532. classify := new(FiccPermissionList)
  533. classify.ClassifyName = v
  534. items, tmpErr := chart_permission.GetListByProductIdAndClassifyName(productId, v)
  535. if tmpErr != nil {
  536. return
  537. }
  538. tmpItems := make([]*PermissionItem, 0)
  539. for _, iv := range items {
  540. item := new(PermissionItem)
  541. item.PermissionId = int(iv.ChartPermissionID)
  542. item.PermissionName = iv.PermissionName
  543. tmpItems = append(tmpItems, item)
  544. }
  545. classify.Items = tmpItems
  546. list = append(list, classify)
  547. }
  548. return
  549. }
  550. func GetHomeFiccPermissions(user user.UserInfo) (ret response.PermissionFiccResp, err error){
  551. var errMsg string
  552. defer func() {
  553. if err != nil {
  554. global.LOG.Critical(fmt.Sprintf("GetHomeFiccPermissions: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
  555. }
  556. }()
  557. validPermissionList, err := GetValidPermissionByCompany2ProductId(user.CompanyID, 1)
  558. if err != nil {
  559. return
  560. }
  561. var validPermissionIds []int
  562. for _, item := range validPermissionList {
  563. validPermissionIds = append(validPermissionIds, item.ChartPermissionID)
  564. }
  565. permissionList, err := chart_permission.GetFiccListExceptTacticByProductId()
  566. if err != nil {
  567. return
  568. }
  569. permissionMap := make(map[uint64]bool)
  570. permissionFirstMap := make(map[string]*response.PermissionFirstItem)
  571. permissionFirstMap["宏观经济"] = &response.PermissionFirstItem{
  572. Sort: 1001,
  573. }
  574. permissionFirstMap["化工产业"] = &response.PermissionFirstItem{
  575. Sort: 1002,
  576. }
  577. permissionFirstMap["黑色产业"] = &response.PermissionFirstItem{
  578. Sort: 1003,
  579. }
  580. permissionFirstMap["有色产业"] = &response.PermissionFirstItem{
  581. Sort: 1004,
  582. }
  583. for k, v := range permissionList {
  584. permissionMap[v.ChartPermissionID] = false
  585. for _, myPerId := range validPermissionIds {
  586. if int(v.ChartPermissionID) == myPerId {
  587. permissionMap[v.ChartPermissionID] = true
  588. permissionList[k].Sort = v.Sort - 1000
  589. if _, ok := permissionFirstMap[v.ClassifyName]; ok && !permissionFirstMap[v.ClassifyName].IsCheck {
  590. permissionFirstMap[v.ClassifyName].AuthOk = true
  591. permissionFirstMap[v.ClassifyName].Sort -= 1000
  592. permissionFirstMap[v.ClassifyName].IsCheck = true
  593. }
  594. break
  595. }
  596. }
  597. }
  598. for _, v := range permissionList {
  599. temp := new(response.PermissionFiccSecondItem)
  600. temp.Sort = v.Sort
  601. temp.ChartPermissionID = int(v.ChartPermissionID)
  602. temp.ChartPermissionName = v.PermissionName
  603. temp.AuthOk = permissionMap[v.ChartPermissionID]
  604. if _, ok := permissionFirstMap[v.ClassifyName]; ok{
  605. permissionFirstMap[v.ClassifyName].List = append(permissionFirstMap[v.ClassifyName].List, temp)
  606. }else{
  607. permissionFirstMap[v.ClassifyName] = &response.PermissionFirstItem{
  608. List: []*response.PermissionFiccSecondItem{temp},
  609. }
  610. }
  611. }
  612. var list response.PermissionFiccList
  613. for k, v := range permissionFirstMap {
  614. temp := new(response.PermissionFiccItem)
  615. temp.Sort = v.Sort
  616. temp.ClassifyName = k
  617. if strings.Contains(temp.ClassifyName, "宏观") {
  618. temp.ClassifyName = "宏观经济"
  619. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_hongguan_select.png"
  620. temp.IconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_hongguan.png"
  621. }else if temp.ClassifyName == "化工产业" {
  622. temp.ClassifyName = "化工"
  623. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_huagong_select.png"
  624. temp.IconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_huagong.png"
  625. }else if temp.ClassifyName == "黑色产业" {
  626. temp.ClassifyName = "黑色"
  627. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_black_select.png"
  628. temp.IconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_black.png"
  629. }else if temp.ClassifyName == "有色产业" {
  630. temp.ClassifyName = "有色"
  631. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_youse_select.png"
  632. temp.IconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_youse.png"
  633. }
  634. if len(v.List) > 0 {
  635. temp.List = v.List
  636. sort.Sort(temp.List)
  637. }
  638. list = append(list, temp)
  639. }
  640. if len(list) > 0 {
  641. sort.Sort(list)
  642. }
  643. //判断是否是已购用户,如果是已购用户,需要返回对应的联系人方式
  644. companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
  645. if err != nil {
  646. if err == utils.ErrNoRow {
  647. err = nil
  648. }
  649. }
  650. if err != nil {
  651. errMsg = err.Error()
  652. err = errors.New("查询用户状态失败")
  653. return
  654. }
  655. // 已购仅付费用户可见
  656. var contactInfo response.PermissionCheckContactInfo
  657. checkFlag := false
  658. if strings.Contains("永续,正式", companyProduct.Status) {
  659. //查询对应的销售
  660. //查找对应客户的销售信息
  661. adminInfo, tmpErr := admin.GetByAdminId(companyProduct.SellerID)
  662. if tmpErr != nil {
  663. errMsg = tmpErr.Error()
  664. err = errors.New("查询销售信息出错")
  665. return
  666. }
  667. contactInfo.Name = adminInfo.RealName
  668. contactInfo.Mobile = adminInfo.Mobile
  669. checkFlag = true
  670. }
  671. temp := new(response.PermissionFiccItem)
  672. temp.SelectIconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_more_select.png"
  673. temp.IconUrl = utils.ALIYUN_YBIMG_HOST+"ficc_icon_idx_more.png"
  674. temp.ClassifyName = "更多报告"
  675. temp.Sort = 100000
  676. list = append(list, temp)
  677. ret.PermissionList = list
  678. ret.CheckFlag = checkFlag
  679. ret.ContactInfo = contactInfo
  680. return
  681. }