|
@@ -490,6 +490,12 @@ func IntArrSort(arr []int) []int {
|
|
return resArr
|
|
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) {
|
|
func WorkDeskList(in *message.WorkingDesktopReq) (res1, res2 []*message.Messages, err error) {
|
|
//待办查询
|
|
//待办查询
|
|
sqlStr := ""
|
|
sqlStr := ""
|
|
@@ -497,24 +503,30 @@ func WorkDeskList(in *message.WorkingDesktopReq) (res1, res2 []*message.Messages
|
|
if in.NeedDealtWithCount {
|
|
if in.NeedDealtWithCount {
|
|
sqlStr = fmt.Sprintf(" or p_group_id = 11")
|
|
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)
|
|
log.Println("WorkDeskList", sql)
|
|
rows, err := entity.ClickhouseConn.Query(context.Background(), sql)
|
|
rows, err := entity.ClickhouseConn.Query(context.Background(), sql)
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, nil, err
|
|
return nil, nil, err
|
|
}
|
|
}
|
|
|
|
+ readMsgMap := map[int]bool{}
|
|
for rows.Next() {
|
|
for rows.Next() {
|
|
- group := UserClassUnread{}
|
|
|
|
|
|
+ group := UserMsg{}
|
|
err = rows.ScanStruct(&group)
|
|
err = rows.ScanStruct(&group)
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("获取各分类读取分类数据出错:", err)
|
|
log.Println("获取各分类读取分类数据出错:", err)
|
|
return nil, nil, 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) {
|
|
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 {
|
|
} else {
|
|
if len(group.UnreadArr) > 0 {
|
|
if len(group.UnreadArr) > 0 {
|
|
needDo[int(group.GroupId)] = group.UnreadArr
|
|
needDo[int(group.GroupId)] = group.UnreadArr
|
|
@@ -524,12 +536,12 @@ func WorkDeskList(in *message.WorkingDesktopReq) (res1, res2 []*message.Messages
|
|
if len(needDo) > 0 {
|
|
if len(needDo) > 0 {
|
|
totalMsg := append(needDo[11], needDo[12]...)
|
|
totalMsg := append(needDo[11], needDo[12]...)
|
|
needMsgArr := IntArrSort(Uint32ArrToIntArr(totalMsg))
|
|
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
|
|
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{}
|
|
newMsg := []int{}
|
|
if len(arr) > 0 {
|
|
if len(arr) > 0 {
|
|
if len(arr) >= size {
|
|
if len(arr) >= size {
|
|
@@ -558,6 +570,7 @@ func GetMsgList(arr []int, size int, userId string) []*message.Messages {
|
|
"iosUrl": iosUrl4,
|
|
"iosUrl": iosUrl4,
|
|
"weChatUrl": weChatUrl4,
|
|
"weChatUrl": weChatUrl4,
|
|
},
|
|
},
|
|
|
|
+ IsRead: common.Int64All(common.If(readMsgMap[int(newMsg[i])], 1, 0)),
|
|
})
|
|
})
|
|
}
|
|
}
|
|
return resData
|
|
return resData
|