|
@@ -2,6 +2,7 @@ package services
|
|
|
|
|
|
import (
|
|
|
"eta/eta_api/models"
|
|
|
+ "eta/eta_api/models/report_approve"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"time"
|
|
@@ -167,3 +168,86 @@ func moveEnglishReportClassify(classifyInfo, prevClassify, nextClassify *models.
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func MarkEnableDeleteEnlishClassify(rootClassifyList, childClassifyList []*models.EnglishClassifyList) (err error) {
|
|
|
+ if len(rootClassifyList) == 0 && len(childClassifyList) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ allClassifyList := make([]*models.EnglishClassifyList, 0)
|
|
|
+ allClassifyList = append(allClassifyList, rootClassifyList...)
|
|
|
+ allClassifyList = append(allClassifyList, childClassifyList...)
|
|
|
+ classifyIds := make([]int, 0)
|
|
|
+ rootClassifyMap := make(map[int]*models.EnglishClassifyList)
|
|
|
+ for _, v := range allClassifyList {
|
|
|
+ classifyIds = append(classifyIds, v.Id)
|
|
|
+ if v.RootId == v.Id {
|
|
|
+ rootClassifyMap[v.Id] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 检查是否有报告
|
|
|
+ reportList, err := models.GetExistEnglishReportClassifyIdByClassifyIds(classifyIds)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询该分类是否关联了审批流
|
|
|
+ flowOb := new(report_approve.ReportApproveFlow)
|
|
|
+ flowCond := fmt.Sprintf(` AND %s = ? `, report_approve.ReportApproveFlowCols.ReportType)
|
|
|
+ flowPars := make([]interface{}, 0)
|
|
|
+ flowPars = append(flowPars, report_approve.FlowReportTypeEnglish)
|
|
|
+ flowList, err := flowOb.GetItemsByCondition(flowCond, flowPars, []string{"classify_first_id", "classify_second_id", "classify_third_id"}, "")
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询路演视频分类
|
|
|
+ videoClassify, err := models.GetAllEnglishVideoClassify()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ disableDeleteClassifyMap := make(map[int]struct{})
|
|
|
+ // 记录关联报告的分类
|
|
|
+ for _, v := range reportList {
|
|
|
+ if v.ClassifyIdFirst > 0 {
|
|
|
+ disableDeleteClassifyMap[v.ClassifyIdFirst] = struct{}{}
|
|
|
+ }
|
|
|
+ if v.ClassifyIdSecond > 0 {
|
|
|
+ disableDeleteClassifyMap[v.ClassifyIdSecond] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 记录关联审批流的分类
|
|
|
+ for _, v := range flowList {
|
|
|
+ if v.ClassifyFirstId > 0 {
|
|
|
+ disableDeleteClassifyMap[v.ClassifyFirstId] = struct{}{}
|
|
|
+ }
|
|
|
+ if v.ClassifySecondId > 0 {
|
|
|
+ disableDeleteClassifyMap[v.ClassifySecondId] = struct{}{}
|
|
|
+ }
|
|
|
+ if v.ClassifyThirdId > 0 {
|
|
|
+ disableDeleteClassifyMap[v.ClassifyThirdId] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for _, v := range videoClassify {
|
|
|
+ if v.ClassifyIdFirst > 0 {
|
|
|
+ disableDeleteClassifyMap[v.Id] = struct{}{}
|
|
|
+ }
|
|
|
+ if v.ClassifyIdSecond > 0 {
|
|
|
+ disableDeleteClassifyMap[v.Id] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ markedClassifyMap := make(map[int]struct{})
|
|
|
+ for _, v := range allClassifyList {
|
|
|
+ if _, ok := markedClassifyMap[v.Id]; ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if _, ok := disableDeleteClassifyMap[v.Id]; !ok {
|
|
|
+ v.IsEnableDelete = 1
|
|
|
+ } else {
|
|
|
+ rootClassifyMap[v.RootId].IsEnableDelete = 0
|
|
|
+ markedClassifyMap[v.RootId] = struct{}{}
|
|
|
+ }
|
|
|
+ markedClassifyMap[v.Id] = struct{}{}
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|