From 92fad59a1b02ce74623c029fc5816aec807a22bf Mon Sep 17 00:00:00 2001 From: songyuanlun Date: Thu, 21 Dec 2023 16:04:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9A=E4=B9=89im=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=B6=88=E6=81=AF=E7=9A=84feign=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/im/center/api/feign/MessageApi.java | 11 +++- .../center/api/vo/req/CustomMessageInfo.java | 50 +++++++++++++++++++ .../im/center/api/vo/req/UserAccountReq.java | 21 ++++++-- .../center/api/vo/resp/MessageCustomResp.java | 38 ++++++++++++++ .../api/vo/resp/MessageDispatchResp.java | 1 - .../center/common/enums/AccountTypeEnum.java | 7 ++- .../im/center/common/enums/BizTypeEnum.java | 32 ++++++++++++ 7 files changed, 153 insertions(+), 7 deletions(-) create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/CustomMessageInfo.java create mode 100644 im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageCustomResp.java create mode 100644 im-center-common/src/main/java/cn/axzo/im/center/common/enums/BizTypeEnum.java diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/MessageApi.java b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/MessageApi.java index 4ba3c24..ed2ef8d 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/feign/MessageApi.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/feign/MessageApi.java @@ -1,15 +1,16 @@ package cn.axzo.im.center.api.feign; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.im.center.api.vo.req.CustomMessageInfo; import cn.axzo.im.center.api.vo.req.MessageInfo; +import cn.axzo.im.center.api.vo.resp.MessageCustomResp; import cn.axzo.im.center.api.vo.resp.MessageDispatchResp; +import java.util.List; 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; - /** * IM消息管理API * @@ -34,4 +35,10 @@ public interface MessageApi { @PostMapping("api/im/message/dispatch") ApiResult> sendMessage(@RequestBody @Validated MessageInfo messageInfo); + /** + * 发送自定义消息 + */ + @PostMapping("api/im/custom-message/send") + ApiResult> sendCustomMessage(@RequestBody @Validated CustomMessageInfo messageInfo); + } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/CustomMessageInfo.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/CustomMessageInfo.java new file mode 100644 index 0000000..35e116c --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/CustomMessageInfo.java @@ -0,0 +1,50 @@ +package cn.axzo.im.center.api.vo.req; + +import cn.axzo.im.center.common.enums.AppTypeEnum; +import cn.axzo.im.center.common.enums.BizTypeEnum; +import java.util.List; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author syl + * @date 2023/12/21 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CustomMessageInfo { + + /** + * 发送消息到App端 + * 工人端、企业端、服务器 + * CM、CMP、SYSTEM + * + * @See cn.axzo.im.center.common.enums.AppTypeEnum + */ + @NotEmpty(message = "消息接收端类型appTypeList不能为空") + private List appTypeList; + + /** + * 接收用户自然人Id + */ + @NotBlank(message = "接收用户自然人Id不能为空") + private String toPersonId; + + /** + * 业务类型 + */ + @NotNull(message = "业务类型不能为空") + private BizTypeEnum bizType; + + /** + * 推送内容 - 业务数据,json格式 + */ + private String payload; +} diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/UserAccountReq.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/UserAccountReq.java index 4becad1..fab2ee0 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/UserAccountReq.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/UserAccountReq.java @@ -1,9 +1,12 @@ package cn.axzo.im.center.api.vo.req; -import lombok.Data; - -import javax.validation.constraints.NotNull; +import cn.hutool.json.JSONUtil; import java.util.Map; +import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; /** * 账户信息 @@ -13,6 +16,9 @@ import java.util.Map; * @date 2023/10/9 16:01 */ @Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class UserAccountReq { /** @@ -45,4 +51,13 @@ public class UserAccountReq { * 用户账户扩展信息 */ private Map attachments; + + public static void main(String[] args) { + System.out.println(JSONUtil.toJsonStr(UserAccountReq.builder() + .userId("84982") + .appType("SYSTEM") + .nickName("自定义") + .headImageUrl("") + .build())); + } } diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageCustomResp.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageCustomResp.java new file mode 100644 index 0000000..9f6f996 --- /dev/null +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageCustomResp.java @@ -0,0 +1,38 @@ +package cn.axzo.im.center.api.vo.resp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author syl + * @date 2023/12/21 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MessageCustomResp { + + /** + * 接收消息端类型 + */ + private String appType; + + /** + * 接收人IM账户 + */ + private String toImAccount; + + /** + * 接收人personId + */ + private String personId; + + /** + * true - 发送成功 + * false - 发送失败 + */ + private Boolean isSuccess; +} diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageDispatchResp.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageDispatchResp.java index 5f336c2..560cc7b 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageDispatchResp.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/resp/MessageDispatchResp.java @@ -1,6 +1,5 @@ package cn.axzo.im.center.api.vo.resp; -import lombok.Builder; import lombok.Data; import org.apache.commons.lang3.StringUtils; diff --git a/im-center-common/src/main/java/cn/axzo/im/center/common/enums/AccountTypeEnum.java b/im-center-common/src/main/java/cn/axzo/im/center/common/enums/AccountTypeEnum.java index 14b25de..ffe2299 100644 --- a/im-center-common/src/main/java/cn/axzo/im/center/common/enums/AccountTypeEnum.java +++ b/im-center-common/src/main/java/cn/axzo/im/center/common/enums/AccountTypeEnum.java @@ -20,7 +20,12 @@ public enum AccountTypeEnum { /** * 普通用户 */ - USER("user", "普通用户"); + USER("user", "普通用户"), + /** + * 自定义用户 + */ + CUSTOM("custom", "自定义用户"), + ; private final String code; diff --git a/im-center-common/src/main/java/cn/axzo/im/center/common/enums/BizTypeEnum.java b/im-center-common/src/main/java/cn/axzo/im/center/common/enums/BizTypeEnum.java new file mode 100644 index 0000000..a6051f5 --- /dev/null +++ b/im-center-common/src/main/java/cn/axzo/im/center/common/enums/BizTypeEnum.java @@ -0,0 +1,32 @@ +package cn.axzo.im.center.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 业务类型 + */ +@Getter +@AllArgsConstructor +public enum BizTypeEnum { + + /** + * 工友圈 + */ + WORKMATE("WORKMATE", "工友圈"), + /** + * 招工 + */ + RECRUIT("RECRUIT", "招工"), + /** + * 待办 + */ + PENDING("PENDING", "待办"), + ; + + + private final String code; + + private final String message; + +}