permission.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package company
  2. import (
  3. "hongze/hongze_yb/models/tables/admin"
  4. "hongze/hongze_yb/models/tables/chart_permission"
  5. "hongze/hongze_yb/models/tables/company_product"
  6. "hongze/hongze_yb/models/tables/company_report_permission"
  7. "hongze/hongze_yb/utils"
  8. )
  9. // GetClassNameListByProductId 根据权限id获取权限分类
  10. func GetClassNameListByProductId(productId int64) (list []*chart_permission.ChartPermission, err error) {
  11. list, err = chart_permission.GetClassNameListByProductId(productId)
  12. return
  13. }
  14. // GetPermissionListByProductId 根据product_id获取所有的权限列表
  15. func GetPermissionListByProductId(productId int64) (list []*chart_permission.ChartPermission, err error) {
  16. list, err = chart_permission.GetListByProductId(productId)
  17. return
  18. }
  19. // GetValidPermissionByCompany2ProductId 根据客户id和产品id获取有效的权限列表
  20. func GetValidPermissionByCompany2ProductId(companyId, productId int64) (list []*company_report_permission.CompanyReportPermission, err error) {
  21. where := make(map[string]interface{})
  22. where["company_id ="] = companyId
  23. where["product_id ="] = productId
  24. where["status in"] = []string{"正式", "试用", "永续"}
  25. list, err = company_report_permission.GetByWhereMap(where)
  26. return
  27. }
  28. // GetValidPermissionIdListByCompany2ProductId 根据客户id和产品id获取有效的权限id列表
  29. func GetValidPermissionIdListByCompany2ProductId(companyId, productId int64) (list []int, err error) {
  30. companyReportPermissionList, err := GetValidPermissionByCompany2ProductId(companyId, productId)
  31. if err != nil {
  32. return
  33. }
  34. for _, v := range companyReportPermissionList {
  35. list = append(list, v.ChartPermissionID)
  36. }
  37. return
  38. }
  39. // PermissionCheckInfo 权限校验完成后的结果
  40. type PermissionCheckInfo struct {
  41. Name string `json:"name" description:"销售名称"`
  42. Mobile string `json:"mobile" description:"手机号"`
  43. Type string `json:"type" description:"校验失败,没有权限,需要让前端处理的类型,枚举值:apply,contact"`
  44. }
  45. // CheckPermissionByFicc 权限校验
  46. func CheckPermissionByFicc(companyId int64, permissionId int) (ok bool, permissionCheckInfo PermissionCheckInfo, err error) {
  47. //非潜在客户
  48. var productId int64
  49. productId = 1
  50. if companyId > 1 {
  51. //查询是否 开通ficc的客户
  52. companyProductInfo, tmpErr := company_product.GetByCompany2ProductId(companyId, productId)
  53. if tmpErr != nil {
  54. // 没有开通ficc的客户
  55. if tmpErr == utils.ErrNoRow {
  56. permissionCheckInfo.Type = "apply"
  57. return
  58. }
  59. err = tmpErr
  60. return
  61. }
  62. // 如果客户ficc产品的状态是流失,那么也是让去申请
  63. if companyProductInfo.Status == "流失" {
  64. permissionCheckInfo.Type = "apply"
  65. return
  66. }
  67. // 获取有效的权限id列表
  68. validPermissionIdList, tmpErr := GetValidPermissionIdListByCompany2ProductId(companyId, productId)
  69. if tmpErr != nil {
  70. err = tmpErr
  71. return
  72. }
  73. // 校验在有效的权限id列表中是否存在该权限
  74. for _, validPermissionId := range validPermissionIdList {
  75. //如果有该权限id,那么直接返回校验通过
  76. if validPermissionId == permissionId {
  77. ok = true
  78. return
  79. }
  80. }
  81. //查找对应客户的销售信息
  82. adminInfo, tmpErr := admin.GetByAdminId(companyProductInfo.SellerID)
  83. if tmpErr != nil {
  84. err = tmpErr
  85. return
  86. }
  87. permissionCheckInfo = PermissionCheckInfo{
  88. Name: adminInfo.RealName,
  89. Mobile: adminInfo.Mobile,
  90. Type: "contact",
  91. }
  92. } else {
  93. permissionCheckInfo.Type = "apply"
  94. }
  95. return
  96. }