feat: 定义im自定义消息的feign api

This commit is contained in:
songyuanlun 2023-12-21 16:04:42 +08:00
parent 35bc5e05e7
commit 92fad59a1b
7 changed files with 153 additions and 7 deletions

View File

@ -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<List<MessageDispatchResp>> sendMessage(@RequestBody @Validated MessageInfo messageInfo);
/**
* 发送自定义消息
*/
@PostMapping("api/im/custom-message/send")
ApiResult<List<MessageCustomResp>> sendCustomMessage(@RequestBody @Validated CustomMessageInfo messageInfo);
}

View File

@ -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端
* 工人端企业端服务器
* CMCMPSYSTEM
*
* @See cn.axzo.im.center.common.enums.AppTypeEnum
*/
@NotEmpty(message = "消息接收端类型appTypeList不能为空")
private List<AppTypeEnum> appTypeList;
/**
* 接收用户自然人Id
*/
@NotBlank(message = "接收用户自然人Id不能为空")
private String toPersonId;
/**
* 业务类型
*/
@NotNull(message = "业务类型不能为空")
private BizTypeEnum bizType;
/**
* 推送内容 - 业务数据json格式
*/
private String payload;
}

View File

@ -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<String, String> attachments;
public static void main(String[] args) {
System.out.println(JSONUtil.toJsonStr(UserAccountReq.builder()
.userId("84982")
.appType("SYSTEM")
.nickName("自定义")
.headImageUrl("")
.build()));
}
}

View File

@ -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;
}

View File

@ -1,6 +1,5 @@
package cn.axzo.im.center.api.vo.resp;
import lombok.Builder;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

View File

@ -20,7 +20,12 @@ public enum AccountTypeEnum {
/**
* 普通用户
*/
USER("user", "普通用户");
USER("user", "普通用户"),
/**
* 自定义用户
*/
CUSTOM("custom", "自定义用户"),
;
private final String code;

View File

@ -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;
}