diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/controller/MessageController.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/controller/MessageController.java index 20b7e26..bca58b0 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/controller/MessageController.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/controller/MessageController.java @@ -6,6 +6,8 @@ import com.lld.im.common.model.SyncReq; import com.lld.im.common.model.message.CheckSendMessageReq; import com.lld.im.service.message.model.req.SendMessageReq; import com.lld.im.service.message.model.resp.ImMessageHistoryVo; +import com.lld.im.service.message.model.resp.SendMessageResp; +import com.lld.im.service.message.service.MessageService; import com.lld.im.service.message.service.MessageSyncService; import com.lld.im.service.message.service.P2PMessageService; import lombok.extern.slf4j.Slf4j; @@ -33,6 +35,15 @@ public class MessageController { @Autowired MessageSyncService messageSyncService; + @Autowired + MessageService messageService; + + @RequestMapping("/queryMsgDetailsByMessageKey") + public ResponseVO queryMsgDetailsByMessageKey(@RequestBody @Validated SendMessageResp req, Integer appId) { + req.setAppId(appId); + return ResponseVO.successResponse(messageService.queryMsgDetailsByMessageKey(req.getMessageKey())); + } + @RequestMapping("/send") public ResponseVO send(@RequestBody @Validated SendMessageReq req, Integer appId) { req.setAppId(appId); diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageService.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageService.java new file mode 100644 index 0000000..64710ee --- /dev/null +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageService.java @@ -0,0 +1,33 @@ +package com.lld.im.service.message.service; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.lld.im.common.model.message.MessageContent; +import com.lld.im.service.call.dao.ImCallHistoryEntity; +import com.lld.im.service.message.dao.ImMessageHistoryEntity; +import com.lld.im.service.message.dao.mapper.ImMessageBodyMapper; +import com.lld.im.service.message.dao.mapper.ImMessageHistoryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class MessageService { + @Autowired + ImMessageHistoryMapper imMessageHistoryMapper; + + @Autowired + ImMessageBodyMapper imMessageBodyMapper; + + + public ImMessageHistoryEntity queryMsgDetailsByMessageKey(Long messageKey){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("message_key",messageKey); + + List imCallHistoryEntityList = imMessageHistoryMapper.selectList(queryWrapper); + + return imCallHistoryEntityList.get(0); + + } +} diff --git a/im-uniapp/common/publicFc.js b/im-uniapp/common/publicFc.js index 708f65a..fc5d327 100644 --- a/im-uniapp/common/publicFc.js +++ b/im-uniapp/common/publicFc.js @@ -492,6 +492,7 @@ export default { if (same) { return } + //离线消息体 var msgOffline = { userId: userId, @@ -515,7 +516,7 @@ export default { nickName: fromInfo.nickName, portrait: fromInfo.portrait, content: msgTypeLabel, - time: dayjs().format("YYYY/MM/DD HH:mm:ss"), + time: dayjs(time).format("YYYY/MM/DD HH:mm:ss"), num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1), windowType: windowType, disturb: "N", //是否静默消息 @@ -538,6 +539,7 @@ export default { userType: 'GROUP' } } + //TODO 需要请求接口获取真实的消息时间 chatWindowData.push(msgOffline) store.dispatch('updateChatById', { userId: userId, @@ -1022,6 +1024,9 @@ export default { const _data = JSON.parse(msg.messageBody) + + + // try{ // console.log("=======================formatMessage") // console.log(_data) diff --git a/im-uniapp/store/index.js b/im-uniapp/store/index.js index 70ec4b3..1a408b2 100644 --- a/im-uniapp/store/index.js +++ b/im-uniapp/store/index.js @@ -236,7 +236,7 @@ const store = new Vuex.Store({ nickName: detail.nickName, portrait: _userId == _obj.fromId ? _userInfo .photo : detail.photo, - time: dayjs(_obj.createTime).format( + time: dayjs(_obj.time).format( "YYYY/MM/DD HH:mm:ss"), num: 0, windowType: 'SINGLE', @@ -320,6 +320,7 @@ const store = new Vuex.Store({ } //判断头像是谁的 + context.dispatch('updateChatListInfoById', { userId: data.userId, data: { @@ -329,7 +330,7 @@ const store = new Vuex.Store({ nickName: detail.nickName, portrait: _userId == _obj.fromId ? _userInfo .photo : detail.photo, - time: dayjs(_obj.createTime).format( + time: dayjs(_obj.time).format( "YYYY/MM/DD HH:mm:ss"), num: 0, windowType: 'SINGLE', diff --git a/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts b/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts index cc83d92..9316f9c 100644 --- a/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts +++ b/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts @@ -333,6 +333,15 @@ export class ImClient { }) } + public queryMsgDetailsByMessageKey(messageKey:Long): Promise { + return new Promise((resolve, _) => { + let api = new HttpApi(this.httpUrl); + let resp = api.call("/message/queryMsgDetailsByMessageKey", this.getRequestParams(), { appId:this.appId, messageKey:messageKey,operater:this.userId }) + resolve(resp); + }) + } + + public getChatMessageHistoryList(uid:String,offset:Long,limit:Long): Promise { return new Promise((resolve, _) => { let api = new HttpApi(this.httpUrl);