瀏覽代碼

Merge branch 'crm/8.8' into debug

hsun 2 年之前
父節點
當前提交
8223e28b0b
共有 3 個文件被更改,包括 72 次插入1 次删除
  1. 5 1
      controllers/company_contract.go
  2. 56 0
      services/contract/contract.go
  3. 11 0
      utils/common.go

+ 5 - 1
controllers/company_contract.go

@@ -5,6 +5,7 @@ import (
 	"hongze/hongze_mobile_admin/models/tables/company_contract"
 	"hongze/hongze_mobile_admin/models/tables/company_report_permission"
 	"hongze/hongze_mobile_admin/services"
+	"hongze/hongze_mobile_admin/services/contract"
 	"hongze/hongze_mobile_admin/utils"
 )
 
@@ -83,12 +84,15 @@ func (c *CompanyContractCommon) ApplyContractDetail() {
 			if count > 0 {
 				checkList = append(checkList, n.ChartPermissionId)
 			}
-			n.PermissionName = n.Remark
+			//n.PermissionName = n.Remark
 		}
 		plist.Items = items
 		plist.ClassifyName = classifyName
 		plist.CheckList = checkList
 		detail.PermissionList = append(detail.PermissionList, plist)
+		// CRM8.8-权限主客观合并
+		newPermissionLookList := contract.HandleEquityPermissionLookList(detail.PermissionList)
+		detail.PermissionList = newPermissionLookList
 	}
 	resp := companyContractResp.CompanyContractDetailResp{
 		detail,

+ 56 - 0
services/contract/contract.go

@@ -537,4 +537,60 @@ func EquityMergeSubjectAndObject(serviceList []*contractCustom.ContractServiceAn
 		mergeList = append(mergeList, otherList...)
 	}
 	return
+}
+
+// HandleEquityPermissionLookList 权益-权限展示的主客观合并处理
+func HandleEquityPermissionLookList(permissionLookList []*company_report_permission.PermissionLookList) []*company_report_permission.PermissionLookList {
+	if len(permissionLookList) <= 0 {
+		return permissionLookList
+	}
+	checkList := permissionLookList[0].CheckList
+	//fmt.Println(checkList)
+	permissionList := permissionLookList[0].Items
+	permissionLen := len(permissionList)
+	if len(checkList) <= 0 || permissionLen <= 0 {
+		return permissionLookList
+	}
+	// 若某个行业的主客观权限均被满足,则只留其中一个权限
+	// 1.取出每个行业对应的其中一个权限
+	industryName := []string{"医药", "消费", "科技", "智造"}
+	namePermissionMap := make(map[string]*company_report_permission.PermissionLookItem)
+	for i := 0; i < permissionLen; i++ {
+		pName := permissionList[i].PermissionName
+		if utils.InArrayByStr(industryName, pName) && namePermissionMap[pName] != nil {
+			namePermissionMap[pName] = permissionList[i]
+		}
+	}
+	// 2.计算哪些行业主客观权限都有
+	countIndustryMap := make(map[string]int, 0)
+	for i := 0; i < permissionLen; i++ {
+		p := permissionList[i]
+		if utils.InArrayByStr(industryName, p.PermissionName) && utils.InArrayByInt(checkList, p.ChartPermissionId) {
+			countIndustryMap[p.PermissionName] += 1
+		}
+	}
+	//fmt.Println(countIndustryMap)
+	// 3.重新组成一个权限列表
+	mergeIndustryMap := make(map[string]int, 0)
+	newPermissionList := make([]*company_report_permission.PermissionLookItem, 0)
+	for i := 0; i < permissionLen; i++ {
+		item := permissionList[i]
+		if utils.InArrayByStr(industryName, item.PermissionName) {
+			// 只有主客观之一, permissionName取remark
+			if countIndustryMap[item.PermissionName] == 1 {
+				item.PermissionName = item.Remark
+				newPermissionList = append(newPermissionList, item)
+				continue
+			}
+			// 主客观都有
+			if countIndustryMap[item.PermissionName] > 1 && mergeIndustryMap[item.PermissionName] == 0 {
+				mergeIndustryMap[item.PermissionName] += 1
+				newPermissionList = append(newPermissionList, item)
+			}
+		} else {
+			newPermissionList = append(newPermissionList, item)
+		}
+	}
+	permissionLookList[0].Items = newPermissionList
+	return permissionLookList
 }

+ 11 - 0
utils/common.go

@@ -769,4 +769,15 @@ func InArrayByStr(idStrList []string, searchId string) (has bool) {
 		}
 	}
 	return
+}
+
+// InArrayByInt php中的in_array(判断Int类型的切片中是否存在该int值)
+func InArrayByInt(idIntList []int, searchId int) (has bool) {
+	for _, id := range idIntList {
+		if id == searchId {
+			has = true
+			return
+		}
+	}
+	return
 }