permission.go 21 KB

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