ソースを参照

工作桌面商机情报列表

renjiaojiao 1 年間 前
コミット
3b22a00a0d

+ 2 - 0
api/internal/logic/workdesklistlogic.go

@@ -47,6 +47,7 @@ func (l *WorkDeskListLogic) WorkDeskList(req *types.WorkDeskListReq) (resp *type
 			"createTime": val.Createtime,
 			"id":         val.Id,
 			"msgLogId":   val.MsgLogId,
+			"isRead":     val.IsRead,
 		})
 	}
 	for _, v := range res.NeedDo {
@@ -58,6 +59,7 @@ func (l *WorkDeskListLogic) WorkDeskList(req *types.WorkDeskListReq) (resp *type
 			"createTime": v.Createtime,
 			"id":         v.Id,
 			"msgLogId":   v.MsgLogId,
+			"isRead":     v.IsRead,
 		})
 	}
 	result.Code = res.Code

+ 20 - 7
rpc/internal/common/msglistService.go

@@ -490,6 +490,12 @@ func IntArrSort(arr []int) []int {
 	return resArr
 }
 
+type UserMsg struct {
+	GroupId   int32    `ch:"group_id"`
+	UnreadArr []uint32 `ch:"unreadArr"`
+	ReadArr   []uint32 `ch:"readArr"`
+}
+
 func WorkDeskList(in *message.WorkingDesktopReq) (res1, res2 []*message.Messages, err error) {
 	//待办查询
 	sqlStr := ""
@@ -497,24 +503,30 @@ func WorkDeskList(in *message.WorkingDesktopReq) (res1, res2 []*message.Messages
 	if in.NeedDealtWithCount {
 		sqlStr = fmt.Sprintf("  or p_group_id = 11")
 	}
-	sql := fmt.Sprintf(`select a2.group_id,bitmapToArray(bitmapAnd(a1.allMsg,a2.msg_bitmap)) as unreadArr from 
-				(SELECT mus.allMsg as allMsg FROM messageCenter.message_user_summary mus WHERE mus.userId = '%s') a1,
-			(select msg_bitmap,group_id from messageCenter.message_summary ms  where group_id = %d %s) a2`, in.UserId, in.MsgType, sqlStr)
+	sql := fmt.Sprintf(`select a2.group_id,bitmapToArray(bitmapAnd(a1.allMsg,a2.msg_bitmap)) as unreadArr,bitmapToArray(a1.readMsg) as readArr from 
+				(SELECT mus.allMsg as allMsg,mus.readMsg as readMsg FROM message_user_summary mus WHERE mus.userId = '%s') a1,
+			(select msg_bitmap,group_id from message_summary ms  where group_id = %d %s) a2`, in.UserId, in.MsgType, sqlStr)
 
 	log.Println("WorkDeskList", sql)
 	rows, err := entity.ClickhouseConn.Query(context.Background(), sql)
 	if err != nil {
 		return nil, nil, err
 	}
+	readMsgMap := map[int]bool{}
 	for rows.Next() {
-		group := UserClassUnread{}
+		group := UserMsg{}
 		err = rows.ScanStruct(&group)
 		if err != nil {
 			log.Println("获取各分类读取分类数据出错:", err)
 			return nil, nil, err
 		}
+		if len(group.ReadArr) > 0 && len(readMsgMap) == 0 {
+			for _, v := range group.ReadArr {
+				readMsgMap[int(v)] = true
+			}
+		}
 		if group.GroupId == int32(in.MsgType) {
-			res1 = GetMsgList(IntArrSort(Uint32ArrToIntArr(group.UnreadArr)), int(in.PageSize), in.UserId)
+			res1 = GetMsgList(IntArrSort(Uint32ArrToIntArr(group.UnreadArr)), int(in.PageSize), in.UserId, readMsgMap)
 		} else {
 			if len(group.UnreadArr) > 0 {
 				needDo[int(group.GroupId)] = group.UnreadArr
@@ -524,12 +536,12 @@ func WorkDeskList(in *message.WorkingDesktopReq) (res1, res2 []*message.Messages
 	if len(needDo) > 0 {
 		totalMsg := append(needDo[11], needDo[12]...)
 		needMsgArr := IntArrSort(Uint32ArrToIntArr(totalMsg))
-		res2 = GetMsgList(needMsgArr, int(in.PageSize), in.UserId)
+		res2 = GetMsgList(needMsgArr, int(in.PageSize), in.UserId, readMsgMap)
 	}
 	return res1, res2, nil
 }
 
-func GetMsgList(arr []int, size int, userId string) []*message.Messages {
+func GetMsgList(arr []int, size int, userId string, readMsgMap map[int]bool) []*message.Messages {
 	newMsg := []int{}
 	if len(arr) > 0 {
 		if len(arr) >= size {
@@ -558,6 +570,7 @@ func GetMsgList(arr []int, size int, userId string) []*message.Messages {
 				"iosUrl":     iosUrl4,
 				"weChatUrl":  weChatUrl4,
 			},
+			IsRead: common.Int64All(common.If(readMsgMap[int(newMsg[i])], 1, 0)),
 		})
 	}
 	return resData

+ 2 - 4
rpc/internal/logic/workingdesktoplistlogic.go

@@ -5,8 +5,6 @@ import (
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
 	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"context"
-	"fmt"
-
 	"github.com/zeromicro/go-zero/core/logx"
 )
 
@@ -30,8 +28,8 @@ func (l *WorkingDesktopListLogic) WorkingDesktopList(in *message.WorkingDesktopR
 	msg := ""
 	code := 0
 	res1, res2, err := common.WorkDeskList(in)
-	fmt.Println(len(res1))
-	fmt.Println(len(res2))
+	//fmt.Println(len(res1))
+	//fmt.Println(len(res2))
 	if err != nil {
 		code = 1
 		msg = err.Error()