From a09965adc74b35ab97ffbda4906e63c922190137 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 27 Dec 2024 17:36:49 +0800 Subject: [PATCH 01/15] =?UTF-8?q?feat:=20(REQ-3457)=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=81=8A=E5=A4=A9=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/im/center/api/feign/ChatUserApi.java | 35 ++++++++++++++++++ .../chatuser/CreateChatUserHistoryReq.java | 21 +++++++++++ .../req/chatuser/QueryChatUserHistoryReq.java | 18 ++++++++++ .../chatuser/QueryChatUserHistoryResp.java | 18 ++++++++++ .../im/controller/ChatUserController.java | 36 +++++++++++++++++++ 5 files changed, 128 insertions(+) create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java create mode 100644 im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java new file mode 100644 index 0000000..598ff26 --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java @@ -0,0 +1,35 @@ +package cn.axzo.im.center.api.feign; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; +import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; +import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * 私聊 + * + * @author xudawei@axzo.cn + * @date 2024/11/04 + */ +@FeignClient(name = "im-center", url = "${axzo.service.im-center:http://im-center:8080}") +public interface ChatUserApi { + + /** + * 创建聊天用户记录 + */ + @PostMapping("api/im/chat/user/createChatUserHistory") + ApiResult createChatUserHistory(@RequestBody @Validated CreateChatUserHistoryReq req); + + /** + * 获取聊天用户记录 + */ + @PostMapping("api/im/chat/user/queryChatUserHistory") + ApiResult> chatUserHistory(@RequestBody @Validated QueryChatUserHistoryReq req); + +} diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java new file mode 100644 index 0000000..e8fbb7f --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java @@ -0,0 +1,21 @@ +package cn.axzo.im.center.api.vo.req.chatuser; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 创建聊天用户记录 + * @author xudawei + * @date 2024/12/27 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CreateChatUserHistoryReq { + + + +} diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java new file mode 100644 index 0000000..9f65fe0 --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java @@ -0,0 +1,18 @@ +package cn.axzo.im.center.api.vo.req.chatuser; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 聊天用户历史记录 + * @author xudawei + * @date 2024/12/27 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class QueryChatUserHistoryReq { +} diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java new file mode 100644 index 0000000..a1845aa --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java @@ -0,0 +1,18 @@ +package cn.axzo.im.center.api.vo.resp.chatuser; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 聊天用户历史记录 + * @author xudawei + * @date 2024/12/27 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class QueryChatUserHistoryResp { +} diff --git a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java new file mode 100644 index 0000000..da6632b --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java @@ -0,0 +1,36 @@ +package cn.axzo.im.controller; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.im.center.api.feign.ChatUserApi; +import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; +import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; +import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 私聊 + * @author xudawei@axzo.cn + * @date 2024/12/27 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RefreshScope +public class ChatUserController implements ChatUserApi { + + + @Override + public ApiResult createChatUserHistory(CreateChatUserHistoryReq req) { + return null; + } + + @Override + public ApiResult> chatUserHistory(QueryChatUserHistoryReq req) { + return null; + } +} From 0d05adbeab9ca504bcea48b1edb43e5e1cb920ba Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 27 Dec 2024 17:41:14 +0800 Subject: [PATCH 02/15] =?UTF-8?q?feat:=20(REQ-3457)=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=81=8A=E5=A4=A9=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/vo/req/chatuser/CreateChatUserHistoryReq.java | 5 ++++- .../center/api/vo/req/chatuser/QueryChatUserHistoryReq.java | 5 +++++ .../api/vo/resp/chatuser/QueryChatUserHistoryResp.java | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java index e8fbb7f..36ea6ff 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java @@ -16,6 +16,9 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class CreateChatUserHistoryReq { - + /** + * 发送人PersonId + */ + private Long sendPersonId; } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java index 9f65fe0..b06cbcc 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java @@ -15,4 +15,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class QueryChatUserHistoryReq { + + /** + * 发送人PersonId + */ + private Long sendPersonId; } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java index a1845aa..d982dca 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java @@ -15,4 +15,10 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class QueryChatUserHistoryResp { + + /** + * 发送人PersonId + */ + private Long sendPersonId; + } From 7beffefba71365e8f4cef87a3a15299b87a246a8 Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 30 Dec 2024 15:08:37 +0800 Subject: [PATCH 03/15] =?UTF-8?q?feat:=20(REQ-3457)=20=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E4=B8=8E=E8=8E=B7=E5=8F=96=E5=8E=86=E5=8F=B2=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/im/center/api/feign/ChatUserApi.java | 4 +- .../chatuser/CreateChatUserHistoryReq.java | 49 +++++++- .../req/chatuser/QueryChatUserHistoryReq.java | 5 + .../chatuser/QueryChatUserHistoryResp.java | 44 ++++++- .../common/enums/WorkspaceOrOuEnum.java | 31 +++++ .../im/controller/ChatUserController.java | 16 ++- .../im/dao/mapper/ChatUserHistoryMapper.java | 12 ++ .../cn/axzo/im/entity/ChatUserHistory.java | 118 ++++++++++++++++++ .../im/service/ChatUserHistoryService.java | 27 ++++ .../impl/ChatUserHistoryServiceImpl.java | 60 +++++++++ 10 files changed, 359 insertions(+), 7 deletions(-) create mode 100644 im-center-common/src/main/java/cn/axzo/im/center/common/enums/WorkspaceOrOuEnum.java create mode 100644 im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java create mode 100644 im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java create mode 100644 im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java create mode 100644 im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java index 598ff26..364591c 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java @@ -29,7 +29,7 @@ public interface ChatUserApi { /** * 获取聊天用户记录 */ - @PostMapping("api/im/chat/user/queryChatUserHistory") - ApiResult> chatUserHistory(@RequestBody @Validated QueryChatUserHistoryReq req); + @PostMapping("api/im/chat/user/searchChatUserHistory") + ApiResult> searchChatUserHistory(@RequestBody @Validated QueryChatUserHistoryReq req); } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java index 36ea6ff..bcfbea9 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java @@ -1,5 +1,7 @@ package cn.axzo.im.center.api.vo.req.chatuser; +import cn.axzo.im.center.api.vo.req.ComplaintCreateReq; +import cn.axzo.im.center.common.enums.WorkspaceOrOuEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -16,9 +18,54 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class CreateChatUserHistoryReq { + /** + * 发送人IM账号 + */ + private String senderImAccount; + /** * 发送人PersonId */ - private Long sendPersonId; + private Long senderPersonId; + + /** + * 发送人单位Id + */ + private Long senderOuId; + + /** + * 接收人IM账号 + */ + private String receiverImAccount; + + /** + * 接收人personId + */ + private Long receiverPersonId; + + /** + * 接收人单位Id + */ + private Long receiverOuId; + + /** + * 接收人项目Id + */ + private Long receiverWorkspaceId; + + /** + * 接收人类型,WORKSPACE:项目;OU:单位 + */ + private WorkspaceOrOuEnum receiverType; + + /** + * 类型,PRIVATE:私聊,GROUP:群聊 + */ + private ComplaintCreateReq.ChatTypeEnum chatType; + + /** + * 创建人 + */ + private Long creator; } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java index b06cbcc..674b29c 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java @@ -20,4 +20,9 @@ public class QueryChatUserHistoryReq { * 发送人PersonId */ private Long sendPersonId; + + /** + * 发送人IM账号 + */ + private String senderImAccount; } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java index d982dca..e555059 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java @@ -1,5 +1,7 @@ package cn.axzo.im.center.api.vo.resp.chatuser; +import cn.axzo.im.center.api.vo.req.ComplaintCreateReq; +import cn.axzo.im.center.common.enums.WorkspaceOrOuEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -16,9 +18,49 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class QueryChatUserHistoryResp { + /** + * 发送人IM账号 + */ + private String senderImAccount; + /** * 发送人PersonId */ - private Long sendPersonId; + private Long senderPersonId; + + /** + * 发送人单位Id + */ + private Long senderOuId; + + /** + * 接收人IM账号 + */ + private String receiverImAccount; + + /** + * 接收人personId + */ + private Long receiverPersonId; + + /** + * 接收人单位Id + */ + private Long receiverOuId; + + /** + * 接收人项目Id + */ + private Long receiverWorkspaceId; + + /** + * 接收人类型,WORKSPACE:项目;OU:单位 + */ + private WorkspaceOrOuEnum receiverType; + + /** + * 类型,PRIVATE:私聊,GROUP:群聊 + */ + private ComplaintCreateReq.ChatTypeEnum chatType; } diff --git a/im-center-common/src/main/java/cn/axzo/im/center/common/enums/WorkspaceOrOuEnum.java b/im-center-common/src/main/java/cn/axzo/im/center/common/enums/WorkspaceOrOuEnum.java new file mode 100644 index 0000000..570f962 --- /dev/null +++ b/im-center-common/src/main/java/cn/axzo/im/center/common/enums/WorkspaceOrOuEnum.java @@ -0,0 +1,31 @@ +package cn.axzo.im.center.common.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + + +/** + * 项目或者单位 + * @author xudawei@axzo.cn + * @date 2024/12/30 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum WorkspaceOrOuEnum { + + /** + * 项目 + */ + WORKSPACE("workspace", "项目"), + /** + * 单位 + */ + OU("ou", "单位") + ; + + private final String code; + + private final String message; + +} diff --git a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java index da6632b..1660f4c 100644 --- a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java +++ b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java @@ -5,6 +5,7 @@ import cn.axzo.im.center.api.feign.ChatUserApi; import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; +import cn.axzo.im.service.ChatUserHistoryService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.context.config.annotation.RefreshScope; @@ -23,14 +24,23 @@ import java.util.List; @RefreshScope public class ChatUserController implements ChatUserApi { + private final ChatUserHistoryService chatUserHistoryService; + /** + * 创建历史聊天用户 + */ @Override public ApiResult createChatUserHistory(CreateChatUserHistoryReq req) { - return null; + chatUserHistoryService.create(req); + return ApiResult.ok(); } + /** + * 查询历史聊天用户 + */ @Override - public ApiResult> chatUserHistory(QueryChatUserHistoryReq req) { - return null; + public ApiResult> searchChatUserHistory(QueryChatUserHistoryReq req) { + List list = chatUserHistoryService.searchChatUserHistory(req); + return ApiResult.ok(list); } } diff --git a/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java b/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java new file mode 100644 index 0000000..1ca84be --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java @@ -0,0 +1,12 @@ +package cn.axzo.im.dao.mapper; + +import cn.axzo.im.entity.ChatUserHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author xudawei@axzo.cn + * @date 2024/11/05 + * @desc 历史聊天用户 + */ +public interface ChatUserHistoryMapper extends BaseMapper { +} diff --git a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java new file mode 100644 index 0000000..14cd584 --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java @@ -0,0 +1,118 @@ +package cn.axzo.im.entity; + +import cn.axzo.im.center.api.vo.req.ComplaintCreateReq; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import lombok.experimental.SuperBuilder; + +import java.io.Serializable; +import java.util.Date; + +/** + * 历史聊天用户 + * @author xudawei@axzo.cn + * @date 2024/12/27 + */ +@TableName("im_chat_user_history") +@Data +@SuperBuilder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class ChatUserHistory implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 发送人IM账号 + */ + @TableField("sender_im_account") + private String senderImAccount; + + /** + * 发送人PersonId + */ + @TableField("sender_person_id") + private Long senderPersonId; + + /** + * 发送人单位Id + */ + @TableField("sender_ou_id") + private Long senderOuId; + + /** + * 接收人IM账号 + */ + @TableField("receiver_im_account") + private String receiverImAccount; + + /** + * 接收人personId + */ + @TableField("receiver_person_id") + private Long receiverPersonId; + + /** + * 接收人单位Id + */ + @TableField("receiver_ou_id") + private Long receiverOuId; + + /** + * 接收人项目Id + */ + @TableField("receiver_workspace_id") + private Long receiverWorkspaceId; + + /** + * 接收人类型,WORKSPACE:项目;OU:单位 + */ + @TableField("receiver_type") + private ComplaintCreateReq.ChatTypeEnum receiverType; + + /** + * 类型,PRIVATE:私聊,GROUP:群聊 + */ + @TableField("chat_type") + private ComplaintCreateReq.ChatTypeEnum chatType; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 创建人 + */ + @TableField("creator") + private Long creator; + + /** + * 是否删除 + */ + @TableField("is_delete") + private Long isDelete; + + /** + * 创建时间 + */ + @TableField("create_at") + private Date createAt; + + /** + * 更新时间 + */ + @TableField("update_at") + private Date updateAt; +} \ No newline at end of file diff --git a/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java b/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java new file mode 100644 index 0000000..73e0434 --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java @@ -0,0 +1,27 @@ +package cn.axzo.im.service; + +import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; +import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; +import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; +import cn.axzo.im.entity.ChatUserHistory; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author xudawei@axzo.cn + * @date 2024/12/27 + * @desc 历史聊天用户 + */ +public interface ChatUserHistoryService extends IService { + + /** + * 创建历史聊天用户 + */ + Boolean create(CreateChatUserHistoryReq req); + + /** + * 查询历史聊天用户 + */ + List searchChatUserHistory(QueryChatUserHistoryReq req); +} diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java new file mode 100644 index 0000000..090a0ee --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -0,0 +1,60 @@ +package cn.axzo.im.service.impl; + +import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; +import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; +import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; +import cn.axzo.im.dao.mapper.ChatUserHistoryMapper; +import cn.axzo.im.entity.ChatUserHistory; +import cn.axzo.im.service.ChatUserHistoryService; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @author xudawei@axzo.cn + * @date 2024/11/05 + * @desc 历史聊天用户 + */ +@Slf4j +@Service +@RefreshScope +public class ChatUserHistoryServiceImpl extends ServiceImpl + implements ChatUserHistoryService { + + /** + * 创建历史聊天用户 + */ + @Override + public Boolean create(CreateChatUserHistoryReq req) { + return this.saveOrUpdate(ChatUserHistory.builder() + .senderImAccount(req.getSenderImAccount()) + .senderPersonId(req.getSenderPersonId()) + .senderOuId(req.getSenderOuId()) + .receiverImAccount(req.getReceiverImAccount()) + .receiverPersonId(req.getReceiverPersonId()) + .receiverOuId(req.getReceiverOuId()) + .receiverWorkspaceId(req.getReceiverWorkspaceId()) + .chatType(req.getChatType()) + .createAt(new Date()) + .updateAt(new Date()) + .creator(req.getCreator()) + .isDelete(0L) + .build()); + } + + /** + * 查询历史聊天用户 + */ + @Override + public List searchChatUserHistory(QueryChatUserHistoryReq req) { + List list = this.lambdaQuery() + .eq(ChatUserHistory::getSenderImAccount, req.getSendPersonId()) + .list(); + return BeanUtil.copyToList(list, QueryChatUserHistoryResp.class); + } +} From dd1750c7d8e1a6dfc5694dca137bd60cfc4dad5c Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 2 Jan 2025 10:40:14 +0800 Subject: [PATCH 04/15] =?UTF-8?q?feat:=20(REQ-3457)=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=9B=E5=BB=BA=E5=8E=86=E5=8F=B2=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E7=94=A8=E6=88=B7=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/im/center/api/feign/ChatUserApi.java | 6 +++++ .../BatchCreateChatUserHistoryReq.java | 25 +++++++++++++++++++ .../im/controller/ChatUserController.java | 10 ++++++++ .../im/service/ChatUserHistoryService.java | 6 +++++ .../impl/ChatUserHistoryServiceImpl.java | 18 +++++++++++++ 5 files changed, 65 insertions(+) create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java index 364591c..1ddce6c 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java @@ -1,6 +1,7 @@ package cn.axzo.im.center.api.feign; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.im.center.api.vo.req.chatuser.BatchCreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; @@ -26,6 +27,11 @@ public interface ChatUserApi { @PostMapping("api/im/chat/user/createChatUserHistory") ApiResult createChatUserHistory(@RequestBody @Validated CreateChatUserHistoryReq req); + /** + * 批量-创建历史聊天用户 + */ + ApiResult batchCreateChatUserHistory(BatchCreateChatUserHistoryReq req); + /** * 获取聊天用户记录 */ diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java new file mode 100644 index 0000000..188bd06 --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java @@ -0,0 +1,25 @@ +package cn.axzo.im.center.api.vo.req.chatuser; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 创建聊天用户记录 + * @author xudawei + * @date 2024/12/27 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BatchCreateChatUserHistoryReq { + + @NotNull(message = "集合不能为空") + private List reqList; + +} diff --git a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java index 1660f4c..01a1b89 100644 --- a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java +++ b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java @@ -2,6 +2,7 @@ package cn.axzo.im.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.im.center.api.feign.ChatUserApi; +import cn.axzo.im.center.api.vo.req.chatuser.BatchCreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; @@ -35,6 +36,15 @@ public class ChatUserController implements ChatUserApi { return ApiResult.ok(); } + /** + * 批量-创建历史聊天用户 + */ + @Override + public ApiResult batchCreateChatUserHistory(BatchCreateChatUserHistoryReq req) { + chatUserHistoryService.batchCreate(req); + return ApiResult.ok(); + } + /** * 查询历史聊天用户 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java b/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java index 73e0434..b446541 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java @@ -1,5 +1,6 @@ package cn.axzo.im.service; +import cn.axzo.im.center.api.vo.req.chatuser.BatchCreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; @@ -20,6 +21,11 @@ public interface ChatUserHistoryService extends IService { */ Boolean create(CreateChatUserHistoryReq req); + /** + * 批量创建历史聊天用户 + */ + Boolean batchCreate(BatchCreateChatUserHistoryReq req); + /** * 查询历史聊天用户 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 090a0ee..537202e 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.im.service.impl; +import cn.axzo.im.center.api.vo.req.chatuser.BatchCreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; @@ -9,11 +10,13 @@ import cn.axzo.im.service.ChatUserHistoryService; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author xudawei@axzo.cn @@ -47,6 +50,21 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl historyList = req.getReqList().stream() + .map(item -> BeanUtil.copyProperties(item, ChatUserHistory.class)) + .collect(Collectors.toList()); + + return this.saveOrUpdateBatch(historyList); + } + /** * 查询历史聊天用户 */ From f4a2e307c83a810d44547cf9aaede331ca3ffd9e Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 2 Jan 2025 11:01:23 +0800 Subject: [PATCH 05/15] =?UTF-8?q?feat:=20(REQ-3457)=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=9B=E5=BB=BA=E5=8E=86=E5=8F=B2=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E7=94=A8=E6=88=B7=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java | 1 + 1 file changed, 1 insertion(+) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java index 1ddce6c..de85192 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java @@ -30,6 +30,7 @@ public interface ChatUserApi { /** * 批量-创建历史聊天用户 */ + @PostMapping("api/im/chat/user/batchCreateChatUserHistory") ApiResult batchCreateChatUserHistory(BatchCreateChatUserHistoryReq req); /** From 4ec38ab9845c8414d5e723f1d5ea3fc33b3497d2 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 2 Jan 2025 16:04:13 +0800 Subject: [PATCH 06/15] =?UTF-8?q?feat:=20(REQ-3457)=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E7=94=A8=E6=88=B7=E8=AE=B0=E5=BD=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/vo/req/chatuser/QueryChatUserHistoryReq.java | 8 +++----- .../vo/resp/chatuser/QueryChatUserHistoryResp.java | 10 ---------- .../main/java/cn/axzo/im/entity/ChatUserHistory.java | 12 ------------ .../im/service/impl/ChatUserHistoryServiceImpl.java | 5 +++-- 4 files changed, 6 insertions(+), 29 deletions(-) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java index 674b29c..19bdd86 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.NotBlank; + /** * 聊天用户历史记录 * @author xudawei @@ -16,13 +18,9 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class QueryChatUserHistoryReq { - /** - * 发送人PersonId - */ - private Long sendPersonId; - /** * 发送人IM账号 */ + @NotBlank(message = "发送人IM账号不能为空") private String senderImAccount; } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java index e555059..38dad2a 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/chatuser/QueryChatUserHistoryResp.java @@ -33,11 +33,6 @@ public class QueryChatUserHistoryResp { */ private Long senderOuId; - /** - * 接收人IM账号 - */ - private String receiverImAccount; - /** * 接收人personId */ @@ -53,11 +48,6 @@ public class QueryChatUserHistoryResp { */ private Long receiverWorkspaceId; - /** - * 接收人类型,WORKSPACE:项目;OU:单位 - */ - private WorkspaceOrOuEnum receiverType; - /** * 类型,PRIVATE:私聊,GROUP:群聊 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java index 14cd584..000eaac 100644 --- a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java +++ b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java @@ -50,12 +50,6 @@ public class ChatUserHistory implements Serializable { @TableField("sender_ou_id") private Long senderOuId; - /** - * 接收人IM账号 - */ - @TableField("receiver_im_account") - private String receiverImAccount; - /** * 接收人personId */ @@ -74,12 +68,6 @@ public class ChatUserHistory implements Serializable { @TableField("receiver_workspace_id") private Long receiverWorkspaceId; - /** - * 接收人类型,WORKSPACE:项目;OU:单位 - */ - @TableField("receiver_type") - private ComplaintCreateReq.ChatTypeEnum receiverType; - /** * 类型,PRIVATE:私聊,GROUP:群聊 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 537202e..9948880 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -38,7 +38,6 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl searchChatUserHistory(QueryChatUserHistoryReq req) { List list = this.lambdaQuery() - .eq(ChatUserHistory::getSenderImAccount, req.getSendPersonId()) + .eq(ChatUserHistory::getSenderImAccount, req.getSenderImAccount()) + .orderByDesc(ChatUserHistory::getId) + .last(" limit 10") .list(); return BeanUtil.copyToList(list, QueryChatUserHistoryResp.class); } From 70ad9ab34c6c7a35f14ed8340dd718bcfb049007 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 2 Jan 2025 18:43:29 +0800 Subject: [PATCH 07/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=89=B9=E9=87=8F=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/controller/ChatUserController.java | 2 ++ .../cn/axzo/im/entity/ChatUserHistory.java | 19 ++++++++++++++++ .../impl/ChatUserHistoryServiceImpl.java | 22 ++++++------------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java index 01a1b89..fdf98a4 100644 --- a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java +++ b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java @@ -7,6 +7,7 @@ import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; import cn.axzo.im.service.ChatUserHistoryService; +import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.context.config.annotation.RefreshScope; @@ -41,6 +42,7 @@ public class ChatUserController implements ChatUserApi { */ @Override public ApiResult batchCreateChatUserHistory(BatchCreateChatUserHistoryReq req) { + log.info("batchCreateChatUserHistory,params:{}", JSON.toJSONString(req)); chatUserHistoryService.batchCreate(req); return ApiResult.ok(); } diff --git a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java index 000eaac..e694ab0 100644 --- a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java +++ b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java @@ -1,6 +1,7 @@ package cn.axzo.im.entity; import cn.axzo.im.center.api.vo.req.ComplaintCreateReq; +import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -103,4 +104,22 @@ public class ChatUserHistory implements Serializable { */ @TableField("update_at") private Date updateAt; + + /** + * 创建对象 + */ + public static ChatUserHistory create(CreateChatUserHistoryReq req) { + return ChatUserHistory.builder() + .senderImAccount(req.getSenderImAccount()) + .senderPersonId(req.getSenderPersonId()) + .senderOuId(req.getSenderOuId()) + .receiverPersonId(req.getReceiverPersonId()) + .receiverOuId(req.getReceiverOuId()) + .receiverWorkspaceId(req.getReceiverWorkspaceId()) + .chatType(req.getChatType()) + .createAt(new Date()) + .updateAt(new Date()) + .creator(req.getCreator()) + .isDelete(0L).build(); + } } \ No newline at end of file diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 9948880..1dbcdf9 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -8,6 +8,7 @@ import cn.axzo.im.dao.mapper.ChatUserHistoryMapper; import cn.axzo.im.entity.ChatUserHistory; import cn.axzo.im.service.ChatUserHistoryService; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -34,21 +35,11 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl historyList = req.getReqList().stream() - .map(item -> BeanUtil.copyProperties(item, ChatUserHistory.class)) + .map(item -> ChatUserHistory.create(item)) .collect(Collectors.toList()); - return this.saveOrUpdateBatch(historyList); + log.info("batchCreate-historyList:{}", JSON.toJSONString(historyList)); + return this.saveBatch(historyList); } /** From ccdfa1935e8961cdf39c69b71d6ff2a2c3ccb570 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 2 Jan 2025 18:54:31 +0800 Subject: [PATCH 08/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=89=B9=E9=87=8F=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java index de85192..5a90836 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/ChatUserApi.java @@ -31,7 +31,7 @@ public interface ChatUserApi { * 批量-创建历史聊天用户 */ @PostMapping("api/im/chat/user/batchCreateChatUserHistory") - ApiResult batchCreateChatUserHistory(BatchCreateChatUserHistoryReq req); + ApiResult batchCreateChatUserHistory(@RequestBody @Validated BatchCreateChatUserHistoryReq req); /** * 获取聊天用户记录 From 7f0bf68a0c36a67e4ab5bba27bb121c1f20ed482 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 2 Jan 2025 18:58:50 +0800 Subject: [PATCH 09/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=89=B9=E9=87=8F=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java index 188bd06..7054307 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/BatchCreateChatUserHistoryReq.java @@ -5,7 +5,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -19,7 +19,7 @@ import java.util.List; @NoArgsConstructor public class BatchCreateChatUserHistoryReq { - @NotNull(message = "集合不能为空") + @NotEmpty(message = "集合不能为空") private List reqList; } From 65aff3e56c524deec3f5534628bab635bfc5b573 Mon Sep 17 00:00:00 2001 From: xudawei Date: Tue, 7 Jan 2025 14:30:29 +0800 Subject: [PATCH 10/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E5=8E=86=E5=8F=B2=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E4=BA=BA=E5=91=98=E6=8E=A5=E5=8F=A3=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?workspaceId/ouId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/vo/req/chatuser/QueryChatUserHistoryReq.java | 8 ++++++++ .../axzo/im/service/impl/ChatUserHistoryServiceImpl.java | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java index 19bdd86..618a9a8 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java @@ -23,4 +23,12 @@ public class QueryChatUserHistoryReq { */ @NotBlank(message = "发送人IM账号不能为空") private String senderImAccount; + /** + * 接收人项目Id + */ + private Long receiverWorkspaceId; + /** + * 接收人单位Id + */ + private Long receiverOuId; } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 1dbcdf9..a033656 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -15,8 +15,8 @@ import org.apache.commons.collections.CollectionUtils; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; -import java.util.Date; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -63,6 +63,8 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl searchChatUserHistory(QueryChatUserHistoryReq req) { List list = this.lambdaQuery() .eq(ChatUserHistory::getSenderImAccount, req.getSenderImAccount()) + .eq(Objects.nonNull(req.getReceiverOuId()), ChatUserHistory::getReceiverOuId, req.getReceiverOuId()) + .eq(Objects.nonNull(req.getReceiverWorkspaceId()), ChatUserHistory::getReceiverWorkspaceId, req.getReceiverWorkspaceId()) .orderByDesc(ChatUserHistory::getId) .last(" limit 10") .list(); From d8e5c69213259a06f412845313dca8f71b12967d Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 8 Jan 2025 17:06:34 +0800 Subject: [PATCH 11/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=9B=B4=E6=8D=A2UserRoleRelation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/payload/SaasRoleUserRelation.java | 90 +++++++++++++++++++ .../SaasRoleUserRelationRemovePayload.java | 1 - .../SaasRoleUserRelationUpsertPayload.java | 1 - .../ChatGroupChangeOwnerEventHandler.java | 2 +- 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelation.java diff --git a/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelation.java b/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelation.java new file mode 100644 index 0000000..54d7d5a --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelation.java @@ -0,0 +1,90 @@ +package cn.axzo.im.event.payload; + +import cn.axzo.basics.profiles.common.enums.IdentityType; +import cn.axzo.tyr.client.model.enums.SaasJobTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class SaasRoleUserRelation implements Serializable { + + /** + * 身份Id + */ + private Long identityId; + /** + * 身份类型 1:工人 2:从业人员 3:班组长 4:运营人员 5:政务人员 + */ + private IdentityType identityType; + /** + * 角色Id + */ + private Long roleId; + /** + * 自然人Id + */ + private Long naturalPersonId; + /** + * 创建者 + */ + private Long createBy; + /** + * 更新者 + */ + private Long updateBy; + + /** + * 所属单位Id 用户在当前工作台的所属单位 + */ + private Long ouId; + + /** + * 工作台Id + */ + private Long workspaceId; + + /** + * 资源类型 + */ + private Integer resourceType; + + /** + * 资源Id + */ + private Long resourceId; + + /** + * 岗位类型 1:主岗 2:兼岗 + * 一个人在一个工作台内,除非 特殊的角色(超管,无权限角色等)必定有且只有一个主岗,可以有N个兼岗 + */ + private SaasJobTypeEnum jobType; + + /** + * id + */ + private Long id; + + /** + * 创建时间 + */ + private Date createAt; + + /** + * 修改时间 + */ + private Date updateAt; + + /** + * 是否删除 0正常,1删除 + */ + private Long isDelete = 0L; + +} diff --git a/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationRemovePayload.java b/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationRemovePayload.java index 9b53f02..617126b 100644 --- a/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationRemovePayload.java +++ b/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationRemovePayload.java @@ -1,6 +1,5 @@ package cn.axzo.im.event.payload; -import cn.axzo.basics.auth.dto.SaasRoleUserRelation; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationUpsertPayload.java b/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationUpsertPayload.java index 1b099f5..fb05f4a 100644 --- a/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationUpsertPayload.java +++ b/im-center-server/src/main/java/cn/axzo/im/event/payload/SaasRoleUserRelationUpsertPayload.java @@ -1,6 +1,5 @@ package cn.axzo.im.event.payload; -import cn.axzo.basics.auth.dto.SaasRoleUserRelation; import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupChangeOwnerEventHandler.java b/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupChangeOwnerEventHandler.java index 8a2f68c..692cc74 100644 --- a/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupChangeOwnerEventHandler.java +++ b/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupChangeOwnerEventHandler.java @@ -1,6 +1,5 @@ package cn.axzo.im.handler.chatgroup; -import cn.axzo.basics.auth.dto.SaasRoleUserRelation; import cn.axzo.basics.common.exception.ServiceException; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; @@ -11,6 +10,7 @@ import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.ChatGroupUserDataSourceEnum; import cn.axzo.im.entity.ChatGroup; import cn.axzo.im.event.inner.EventTypeEnum; +import cn.axzo.im.event.payload.SaasRoleUserRelation; import cn.axzo.im.event.payload.SaasRoleUserRelationUpsertPayload; import cn.axzo.im.gateway.TyrApiGateway; import cn.axzo.im.service.ChatGroupService; From 4596dd8169f923963fde69eb73dbea90db59f0a3 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 8 Jan 2025 20:42:53 +0800 Subject: [PATCH 12/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=9B=B4=E6=8D=A2=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=8E=86=E5=8F=B2=E8=81=8A=E5=A4=A9=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../req/chatuser/QueryChatUserHistoryReq.java | 5 ++ .../im/controller/ChatUserController.java | 2 +- .../im/dao/mapper/ChatUserHistoryMapper.java | 21 ++++++ .../im/dao/repository/ChatUserHistoryDao.java | 24 +++++++ .../cn/axzo/im/entity/ChatUserHistory.java | 2 - .../im/service/ChatUserHistoryService.java | 2 +- .../impl/ChatUserHistoryServiceImpl.java | 68 +++++++++++++++++-- 7 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 im-center-server/src/main/java/cn/axzo/im/dao/repository/ChatUserHistoryDao.java diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java index 618a9a8..61f60a5 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/QueryChatUserHistoryReq.java @@ -31,4 +31,9 @@ public class QueryChatUserHistoryReq { * 接收人单位Id */ private Long receiverOuId; + + /** + * 接收人Id + */ + private Long receiverPersonId; } diff --git a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java index fdf98a4..b894a4b 100644 --- a/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java +++ b/im-center-server/src/main/java/cn/axzo/im/controller/ChatUserController.java @@ -52,7 +52,7 @@ public class ChatUserController implements ChatUserApi { */ @Override public ApiResult> searchChatUserHistory(QueryChatUserHistoryReq req) { - List list = chatUserHistoryService.searchChatUserHistory(req); + List list = chatUserHistoryService.searchChatUserHistory(req, 10); return ApiResult.ok(list); } } diff --git a/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java b/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java index 1ca84be..b2fdc7b 100644 --- a/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java +++ b/im-center-server/src/main/java/cn/axzo/im/dao/mapper/ChatUserHistoryMapper.java @@ -1,7 +1,12 @@ package cn.axzo.im.dao.mapper; +import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.entity.ChatUserHistory; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * @author xudawei@axzo.cn @@ -9,4 +14,20 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @desc 历史聊天用户 */ public interface ChatUserHistoryMapper extends BaseMapper { + + + @Select("") + List findBySenderReceiver( + @Param("reqList") List reqList); + } diff --git a/im-center-server/src/main/java/cn/axzo/im/dao/repository/ChatUserHistoryDao.java b/im-center-server/src/main/java/cn/axzo/im/dao/repository/ChatUserHistoryDao.java new file mode 100644 index 0000000..fb415a2 --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/dao/repository/ChatUserHistoryDao.java @@ -0,0 +1,24 @@ +package cn.axzo.im.dao.repository; + +import cn.axzo.im.dao.mapper.ChatUserHistoryMapper; +import cn.axzo.im.dao.mapper.MessageHistoryMapper; +import cn.axzo.im.entity.ChatUserHistory; +import cn.axzo.im.entity.MessageHistory; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import java.util.Collections; +import java.util.List; + +/** + * im-center + * + * @author xudawei@axzo.cn + * @date 2025/01/08 + */ + +@Repository("chatUserHistoryDao") +public class ChatUserHistoryDao extends ServiceImpl { + +} diff --git a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java index e694ab0..f4d77fd 100644 --- a/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java +++ b/im-center-server/src/main/java/cn/axzo/im/entity/ChatUserHistory.java @@ -117,8 +117,6 @@ public class ChatUserHistory implements Serializable { .receiverOuId(req.getReceiverOuId()) .receiverWorkspaceId(req.getReceiverWorkspaceId()) .chatType(req.getChatType()) - .createAt(new Date()) - .updateAt(new Date()) .creator(req.getCreator()) .isDelete(0L).build(); } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java b/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java index b446541..2f12a5a 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/ChatUserHistoryService.java @@ -29,5 +29,5 @@ public interface ChatUserHistoryService extends IService { /** * 查询历史聊天用户 */ - List searchChatUserHistory(QueryChatUserHistoryReq req); + List searchChatUserHistory(QueryChatUserHistoryReq req, int limitSize); } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index a033656..01e76a5 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -5,17 +5,22 @@ import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; import cn.axzo.im.dao.mapper.ChatUserHistoryMapper; +import cn.axzo.im.dao.repository.ChatUserHistoryDao; import cn.axzo.im.entity.ChatUserHistory; import cn.axzo.im.service.ChatUserHistoryService; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -27,9 +32,12 @@ import java.util.stream.Collectors; @Slf4j @Service @RefreshScope +@RequiredArgsConstructor public class ChatUserHistoryServiceImpl extends ServiceImpl implements ChatUserHistoryService { + private final ChatUserHistoryDao chatUserHistoryDao; + /** * 创建历史聊天用户 */ @@ -48,25 +56,75 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl historyList = this.buildHistory(req); + log.info("batchCreate-historyList:{}", JSON.toJSONString(historyList)); + try { + return this.saveOrUpdateBatch(historyList); + } catch (Exception e) { + log.warn("batchCreateChatUserHistory-expcetion,req:{}", JSON.toJSONString(req)); + } + return false; + } + + /** + * 构建历史聊天用户 + */ + private List buildHistory(BatchCreateChatUserHistoryReq req) { + // 非空校验 + if (Objects.isNull(req) || CollectionUtils.isEmpty(req.getReqList())) { + return Lists.newArrayList(); + } + //根据Req构建entity对象 List historyList = req.getReqList().stream() .map(item -> ChatUserHistory.create(item)) .collect(Collectors.toList()); + //从db中获取历史聊天用户 + List bySenderReceiver = chatUserHistoryDao.getBaseMapper().findBySenderReceiver(req.getReqList()); + if (CollectionUtils.isEmpty(bySenderReceiver)) { + return historyList; + } - log.info("batchCreate-historyList:{}", JSON.toJSONString(historyList)); - return this.saveBatch(historyList); + //db已经有聊天用户记录的则,重新设置id,更新时间 + //db没有聊天用户记录的则,插入记录 + Map imAccountMap = bySenderReceiver.stream() + .collect(Collectors.toMap((this::buildChatHistoryKey), (v -> v.getId()), (x, y) -> x)); + for (ChatUserHistory history : historyList) { + Long id = imAccountMap.get(this.buildChatHistoryKey(history)); + if (Objects.nonNull(id)) { + history.setId(id); + } + } + return historyList; + } + + /** + * 构建Key + */ + private String buildChatHistoryKey(ChatUserHistory history) { + if (Objects.isNull(history)) { + return ""; + } + StringBuilder builder = new StringBuilder(); + builder.append(StringUtils.hasText(history.getSenderImAccount()) ? history.getSenderImAccount() : "-") + .append(Objects.nonNull(history.getReceiverPersonId()) ? history.getReceiverPersonId() : "-") + .append(Objects.nonNull(history.getReceiverOuId()) ? history.getReceiverOuId() : "-") + .append(Objects.nonNull(history.getReceiverWorkspaceId()) ? history.getReceiverWorkspaceId() : "-"); + return builder.toString(); } /** * 查询历史聊天用户 */ @Override - public List searchChatUserHistory(QueryChatUserHistoryReq req) { + public List searchChatUserHistory(QueryChatUserHistoryReq req, int limitSize) { List list = this.lambdaQuery() - .eq(ChatUserHistory::getSenderImAccount, req.getSenderImAccount()) + .eq(StringUtils.hasText(req.getSenderImAccount()), ChatUserHistory::getSenderImAccount, req.getSenderImAccount()) .eq(Objects.nonNull(req.getReceiverOuId()), ChatUserHistory::getReceiverOuId, req.getReceiverOuId()) .eq(Objects.nonNull(req.getReceiverWorkspaceId()), ChatUserHistory::getReceiverWorkspaceId, req.getReceiverWorkspaceId()) + .eq(Objects.nonNull(req.getReceiverPersonId()), ChatUserHistory::getReceiverPersonId, req.getReceiverPersonId()) .orderByDesc(ChatUserHistory::getId) - .last(" limit 10") + .last(" limit " + limitSize) .list(); return BeanUtil.copyToList(list, QueryChatUserHistoryResp.class); } From b238efb96d66d1b72aa24e7d81f9bdd23968ff98 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 9 Jan 2025 09:54:09 +0800 Subject: [PATCH 13/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=9B=B4=E6=96=B0=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E8=81=8A=E5=A4=A9update=5Fat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 01e76a5..73b85a4 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; @@ -93,6 +94,7 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl Date: Mon, 13 Jan 2025 09:54:10 +0800 Subject: [PATCH 14/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E6=9B=B4=E6=96=B0=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E8=81=8A=E5=A4=A9update=5Fat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chatuser/CreateChatUserHistoryReq.java | 3 ++ .../impl/ChatUserHistoryServiceImpl.java | 38 ++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java index bcfbea9..b9588fd 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/chatuser/CreateChatUserHistoryReq.java @@ -1,6 +1,7 @@ package cn.axzo.im.center.api.vo.req.chatuser; import cn.axzo.im.center.api.vo.req.ComplaintCreateReq; +import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.WorkspaceOrOuEnum; import lombok.AllArgsConstructor; import lombok.Builder; @@ -33,6 +34,8 @@ public class CreateChatUserHistoryReq { */ private Long senderOuId; + private AppTypeEnum imSenderAccountAppType; + /** * 接收人IM账号 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 73b85a4..46cd30f 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -1,12 +1,15 @@ package cn.axzo.im.service.impl; +import cn.axzo.im.center.api.vo.req.AccountAbsentQuery; import cn.axzo.im.center.api.vo.req.chatuser.BatchCreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.CreateChatUserHistoryReq; import cn.axzo.im.center.api.vo.req.chatuser.QueryChatUserHistoryReq; +import cn.axzo.im.center.api.vo.resp.UserAccountResp; import cn.axzo.im.center.api.vo.resp.chatuser.QueryChatUserHistoryResp; import cn.axzo.im.dao.mapper.ChatUserHistoryMapper; import cn.axzo.im.dao.repository.ChatUserHistoryDao; import cn.axzo.im.entity.ChatUserHistory; +import cn.axzo.im.service.AccountService; import cn.axzo.im.service.ChatUserHistoryService; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; @@ -39,6 +42,8 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl historyList = req.getReqList().stream() - .map(item -> ChatUserHistory.create(item)) + .map(item -> { + //im账号为空则重新设置Im账号 + this.rechangeSenderImAccount(item); + //创建历史聊天对象 + return ChatUserHistory.create(item); + }) .collect(Collectors.toList()); //从db中获取历史聊天用户 List bySenderReceiver = chatUserHistoryDao.getBaseMapper().findBySenderReceiver(req.getReqList()); @@ -100,6 +110,32 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl userAccountResps = accountService.registerAccountIfAbsent(query); + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(userAccountResps)) { + return userAccountResps.get(0).getImAccount(); + } + return ""; + } + /** * 构建Key */ From c46a36a498684d5b5cb9ac845d40b171b0066e13 Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 13 Jan 2025 20:27:42 +0800 Subject: [PATCH 15/15] =?UTF-8?q?feat:=20(REQ-3457)=20IM=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8-=E5=8E=86=E5=8F=B2=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=81=8A=E5=A4=A9=E6=8C=89=E7=85=A7updateAt=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java index 46cd30f..fe307fb 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatUserHistoryServiceImpl.java @@ -68,7 +68,7 @@ public class ChatUserHistoryServiceImpl extends ServiceImpl