|
@@ -16,6 +16,7 @@ import (
|
|
|
"hongze/hongze_mobile_admin/models/tables/contract_operation_record"
|
|
|
"hongze/hongze_mobile_admin/models/tables/contract_relation"
|
|
|
"hongze/hongze_mobile_admin/models/tables/contract_service_detail"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/contract_service_template"
|
|
|
"hongze/hongze_mobile_admin/services"
|
|
|
"hongze/hongze_mobile_admin/utils"
|
|
|
"mime/multipart"
|
|
@@ -128,7 +129,17 @@ func getContractDetail(contractId int) (contractDetail *contract.ContractDetail,
|
|
|
err = errors.New(fmt.Sprint("查找合同服务异常", err))
|
|
|
return
|
|
|
}
|
|
|
- for i := 0; len(serviceList) > i; i++ {
|
|
|
+ // 权益合同主客观合并
|
|
|
+ if len(serviceList) > 0 && serviceList[0].ProductId == 2 {
|
|
|
+ mergeList, e := EquityMergeSubjectAndObject(serviceList)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New(fmt.Sprint("合并权益合同服务异常", err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ serviceList = mergeList
|
|
|
+ }
|
|
|
+ newLen := len(serviceList)
|
|
|
+ for i := 0; newLen > i; i++ {
|
|
|
if serviceList[i].HasDetail == "是" {
|
|
|
list, detailErr := contract_service_detail.GetContractServiceDetailListByServiceId(serviceList[i].ContractServiceId)
|
|
|
if detailErr != nil {
|
|
@@ -459,3 +470,68 @@ func GetServicePermissionMap(serviceList []*contractCustom.ContractServiceAndDet
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// 权益合同主客观合并
|
|
|
+func EquityMergeSubjectAndObject(serviceList []*contractCustom.ContractServiceAndDetail) (mergeList []*contractCustom.ContractServiceAndDetail, err error) {
|
|
|
+ mergeList = make([]*contractCustom.ContractServiceAndDetail, 0)
|
|
|
+ // 获取模板列表
|
|
|
+ templateList, e := contract_service_template.GetAllContractServiceTemplateList()
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("获取合同服务模板异常, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ templateMap := make(map[int]*contract_service_template.ContractServiceTemplate, 0)
|
|
|
+ for _, v := range templateList {
|
|
|
+ templateMap[v.ServiceTemplateId] = v
|
|
|
+ }
|
|
|
+ mergeArr := []string{"医药", "消费", "科技", "智造"}
|
|
|
+ // 遍历原服务
|
|
|
+ serviceLen := len(serviceList)
|
|
|
+ if serviceLen > 0 {
|
|
|
+ needCheck := make([]*contractCustom.ContractServiceAndDetail, 0)
|
|
|
+ for i := 0; i < serviceLen; i++ {
|
|
|
+ sv := serviceList[i]
|
|
|
+ if sv.ProductId != 2 {
|
|
|
+ mergeList = serviceList
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 判断是否包含主观客观
|
|
|
+ if utils.InArrayByStr(mergeArr, sv.Title) {
|
|
|
+ needCheck = append(needCheck, sv)
|
|
|
+ } else {
|
|
|
+ if sv.Title != "主观" && sv.Title != "客观" {
|
|
|
+ mergeList = append(mergeList, sv)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 不需要合并
|
|
|
+ checkLen := len(needCheck)
|
|
|
+ if checkLen == 0 {
|
|
|
+ mergeList = serviceList
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for i := 0; i < checkLen; i++ {
|
|
|
+ count := 0
|
|
|
+ parent := needCheck[i]
|
|
|
+ parentId := parent.ServiceTemplateId
|
|
|
+ // 检查需要合并的是否包含主客观
|
|
|
+ children := make([]*contractCustom.ContractServiceAndDetail, 0)
|
|
|
+ for ii := 0; ii < serviceLen; ii++ {
|
|
|
+ sv := serviceList[ii]
|
|
|
+ temp := templateMap[sv.ServiceTemplateId]
|
|
|
+ if temp.Pid == parentId {
|
|
|
+ count += 1
|
|
|
+ sv.Title = fmt.Sprint(parent.Title, "(", sv.Title, ")")
|
|
|
+ children = append(children, sv)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 均包含时只取二级套餐, 否则取主/客观
|
|
|
+ if count == 1 {
|
|
|
+ mergeList = append(mergeList, children...)
|
|
|
+ } else {
|
|
|
+ mergeList = append(mergeList, parent)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|