Browse Source

fix:审批流和消息通知bug

zqbao 2 months ago
parent
commit
7e99711af1

+ 2 - 3
controllers/knowledge_approve/knowledge_approve.go

@@ -377,8 +377,8 @@ func (this *KnowledgeApproveController) MessageList() {
 		br.Ret = 408
 		return
 	}
-	currentIndex, _ := this.GetInt("currentIndex")
-	pageSize, _ := this.GetInt("pageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	pageSize, _ := this.GetInt("PageSize")
 	// 分页
 	var startSize int
 	if pageSize <= 0 {
@@ -390,7 +390,6 @@ func (this *KnowledgeApproveController) MessageList() {
 	startSize = utils.StartIndex(currentIndex, pageSize)
 
 	resp := new(response.KnowledgeResourceApproveMessageListResp)
-	resp.List = make([]*response.KnowledgeResourceApproveMessageItem, 0)
 	list, total, unRead, msg, err := knowledge_approve.GetKnowledgeResourceApproveMessage(sysUser.AdminId, startSize, pageSize)
 	if err != nil {
 		if msg != "" {

+ 0 - 1
models/knowledge_approve/knowledge_approve_flow.go

@@ -10,7 +10,6 @@ type KnowledgeResourceApproveFlow struct {
 	KnowledgeResourceApproveFlowId int       `gorm:"column:knowledge_resource_approve_flow_id;primaryKey"`
 	FlowName                       string    `gorm:"column:flow_name"`
 	ClassifyId                     int       `gorm:"column:classify_id"`
-	ClassifyName                   string    `gorm:"column:classify_name"`
 	CurrVersion                    int       `gorm:"column:curr_version"`
 	CreateTime                     time.Time `gorm:"column:create_time"`
 	ModifyTime                     time.Time `gorm:"column:modify_time"`

+ 1 - 1
models/knowledge_approve/knowledge_approve_message.go

@@ -46,7 +46,7 @@ var KnowledgeResourceApproveMessageCols = struct {
 }
 
 func (r *KnowledgeResourceApproveMessage) TableName() string {
-	return "knowledge_approve_message"
+	return "knowledge_resource_approve_message"
 }
 
 func (r *KnowledgeResourceApproveMessage) Create() (err error) {

+ 9 - 5
services/knowledge_approve/knowledge_approve.go

@@ -25,7 +25,7 @@ func GetPulicKnowledgeClassifyList(resourceType int) (res []*knowledge.Knowledge
 		msg = "获取公共分类列表失败"
 		return
 	}
-	res = toClassifyItem(classifyList)
+	res = toClassifyTree(classifyList, 0)
 	return
 }
 
@@ -304,11 +304,14 @@ func PassKnowledgeResourceApprove(approveId int, adminId int) (msg string, err e
 
 }
 
-func toClassifyItem(src []*knowledge.KnowledgeClassify) (dst []*knowledge.KnowledgeClassifyItem) {
+func toClassifyTree(src []*knowledge.KnowledgeClassify, parentId int) (dst []*knowledge.KnowledgeClassifyItem) {
 	for _, item := range src {
-		dst = append(dst, &knowledge.KnowledgeClassifyItem{
-			KnowledgeClassify: *item,
-		})
+		if item.ParentId == parentId {
+			tmp := new(knowledge.KnowledgeClassifyItem)
+			tmp.KnowledgeClassify = *item
+			tmp.Child = toClassifyTree(src, item.ClassifyId)
+			dst = append(dst, tmp)
+		}
 	}
 	return
 }
@@ -1076,6 +1079,7 @@ func SubmitKnowledgeResourceApprove(KnowledgeResourceId int, KnowledgeResourceTi
 }
 
 func toKnowledgeResourceApproveItemOrmResp(src []*knowledge_approve.KnowledgeResourceApproveItemOrm) (res []*response.KnowledgeResourceApproveItemOrmResp) {
+	res = make([]*response.KnowledgeResourceApproveItemOrmResp, 0)
 	for _, v := range src {
 		r := new(response.KnowledgeResourceApproveItemOrmResp)
 		r.KnowledgeResourceApproveId = v.KnowledgeResourceApproveId

+ 63 - 24
services/knowledge_approve/knowledge_approve_flow.go

@@ -8,6 +8,8 @@ import (
 	"eta_gn/eta_api/models/knowledge_approve/response"
 	"eta_gn/eta_api/utils"
 	"fmt"
+	"sort"
+	"strings"
 	"time"
 )
 
@@ -27,14 +29,46 @@ func GetKnowledgeResourceApproveFlowList(condition string, pars []interface{}, s
 		msg = "获取审批流程列表失败"
 		return
 	}
-	items = toKnowledgeResourceApproveFlowItem(flowList)
+	obj := new(knowledge.KnowledgeClassify)
+	classifyList, err := obj.GetAllClassify(knowledge.KnowledgeResourceTypeOpinion)
+	if err != nil {
+		msg = "获取审批流程列表失败"
+		err = fmt.Errorf("获取分类列表失败,%+v", err)
+		return
+	}
+	sort.Slice(classifyList, func(i, j int) bool {
+		if classifyList[i].Level != classifyList[j].Level {
+			return classifyList[i].Level < classifyList[j].Level
+		}
+		return classifyList[i].ClassifyId < classifyList[j].ClassifyId
+	})
+	classifyMap := make(map[int]*knowledge.KnowledgeClassify)
+	for _, classify := range classifyList {
+		classifyMap[classify.ClassifyId] = classify
+	}
+	classifyPathMap := make(map[int]map[int]string)
+	for _, classify := range classifyList {
+		if _, ok := classifyPathMap[classify.ClassifyId]; !ok {
+			classifyPathMap[classify.ClassifyId] = make(map[int]string)
+		}
+		currClassify := classify
+		for i := classify.Level; i > 0; i-- {
+			classifyPathMap[currClassify.ClassifyId][currClassify.Level] = currClassify.ClassifyName
+			if currClassify.ParentId == 0 {
+				break
+			}
+			currClassify = classifyMap[currClassify.ParentId]
+		}
+	}
+
+	items = toKnowledgeResourceApproveFlowItem(flowList, classifyPathMap)
 	return
 }
 
 // SaveKnowledgeResourceApproveFlow 保存审批流
 func SaveKnowledgeResourceApproveFlow(flow *request.KnowledgeResourceApproveFlowSaveReq) (ok bool, msg string, err error) {
 	obj := new(knowledge.KnowledgeClassify)
-	classifyInfo, err := obj.GetClassifyById(flow.ClassifyId)
+	_, err = obj.GetClassifyById(flow.ClassifyId)
 	if err != nil {
 		if utils.IsErrNoRow(err) {
 			msg = "保存审批流失败, 分类不存在"
@@ -57,12 +91,11 @@ func SaveKnowledgeResourceApproveFlow(flow *request.KnowledgeResourceApproveFlow
 		}
 
 		t := &knowledge_approve.KnowledgeResourceApproveFlow{
-			FlowName:     flow.FlowName,
-			ClassifyId:   flow.ClassifyId,
-			ClassifyName: classifyInfo.ClassifyName,
-			CurrVersion:  1,
-			CreateTime:   time.Now(),
-			ModifyTime:   time.Now(),
+			FlowName:    flow.FlowName,
+			ClassifyId:  flow.ClassifyId,
+			CurrVersion: 1,
+			CreateTime:  time.Now(),
+			ModifyTime:  time.Now(),
 		}
 		knowledgeFlowNodeItems := make([]*knowledge_approve.KnowledgeResourceApproveNode, 0)
 		for _, node := range flow.Nodes {
@@ -205,14 +238,20 @@ func CheckDeleteKnowledgeResourceApproveFlow(flowId int) (ok bool, err error) {
 	return
 }
 
-func toKnowledgeResourceApproveFlowItem(src []*knowledge_approve.KnowledgeResourceApproveFlow) (res []*response.KnowledgeResourceApproveFlowItem) {
+func toKnowledgeResourceApproveFlowItem(src []*knowledge_approve.KnowledgeResourceApproveFlow, classifyPathMap map[int]map[int]string) (res []*response.KnowledgeResourceApproveFlowItem) {
 	res = make([]*response.KnowledgeResourceApproveFlowItem, 0, len(src))
 	for _, item := range src {
+		classifyArr := make([]string, 0)
+		for i := 1; i <= 3; i++ {
+			if v, ok := classifyPathMap[item.ClassifyId][i]; ok {
+				classifyArr = append(classifyArr, v)
+			}
+		}
 		res = append(res, &response.KnowledgeResourceApproveFlowItem{
 			KnowledgeResourceApproveFlowId: item.KnowledgeResourceApproveFlowId,
 			FlowName:                       item.FlowName,
 			ClassifyId:                     item.ClassifyId,
-			ClassifyName:                   item.ClassifyName,
+			ClassifyName:                   strings.Join(classifyArr, "/"),
 			CurrVersion:                    item.CurrVersion,
 			CreateTime:                     item.CreateTime.Format(utils.FormatDateTime),
 			ModifyTime:                     item.ModifyTime.Format(utils.FormatDateTime),
@@ -243,17 +282,17 @@ func FormatFlowAndNodesItem2Detail(flowItem *knowledge_approve.KnowledgeResource
 	return
 }
 
-func ModifyKnowledgeResourceApproveFlowClassify(classifyId int, classifyName string) (err error) {
-	flow, err := knowledge_approve.GetKnowledgeResourceApproveFlowByClassifyId(classifyId)
-	if err != nil && !utils.IsErrNoRow(err) {
-		return
-	}
-	if utils.IsErrNoRow(err) {
-		err = nil
-		return
-	}
-	if classifyName != "" && flow.ClassifyName != classifyName {
-		err = knowledge_approve.UpdateFlowClassifyName(classifyId, classifyName)
-	}
-	return
-}
+// func ModifyKnowledgeResourceApproveFlowClassify(classifyId int, classifyName string) (err error) {
+// 	flow, err := knowledge_approve.GetKnowledgeResourceApproveFlowByClassifyId(classifyId)
+// 	if err != nil && !utils.IsErrNoRow(err) {
+// 		return
+// 	}
+// 	if utils.IsErrNoRow(err) {
+// 		err = nil
+// 		return
+// 	}
+// 	if classifyName != "" && flow.ClassifyName != classifyName {
+// 		err = knowledge_approve.UpdateFlowClassifyName(classifyId, classifyName)
+// 	}
+// 	return
+// }

+ 1 - 0
services/knowledge_approve/knowledge_approve_message.go

@@ -9,6 +9,7 @@ import (
 )
 
 func GetKnowledgeResourceApproveMessage(adminId, startSize, pageSize int) (list []*response.KnowledgeResourceApproveMessageItem, total, unread int, msg string, err error) {
+	list = make([]*response.KnowledgeResourceApproveMessageItem, 0)
 	cond := fmt.Sprintf(` AND %s = ?`, knowledge_approve.KnowledgeResourceApproveMessageCols.ReceiveUserId)
 	pars := make([]interface{}, 0)
 	pars = append(pars, adminId)