diff --git a/msg-center-api-v2/src/main/java/cn/axzo/msg/center/api/v2/message/feign/SmsApiV2.java b/msg-center-api-v2/src/main/java/cn/axzo/msg/center/api/v2/message/feign/SmsApiV2.java new file mode 100644 index 00000000..8892bc1c --- /dev/null +++ b/msg-center-api-v2/src/main/java/cn/axzo/msg/center/api/v2/message/feign/SmsApiV2.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.api.v2.message.feign; + +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.msg.center.api.v2.message.req.SendSmsReq; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.validation.Valid; + +@FeignClient( + value = "msg-center", + url = "${axzo.service.msg-center:http://msg-center:8080}") +public interface SmsApiV2 { + + /** + * 发送短信消息 + */ + @PostMapping("api/message/v2/send/sms") + ApiResult sendSms(@RequestBody @Valid SendSmsReq request); + +} \ No newline at end of file diff --git a/msg-center-api-v2/src/main/java/cn/axzo/msg/center/api/v2/message/req/SendSmsReq.java b/msg-center-api-v2/src/main/java/cn/axzo/msg/center/api/v2/message/req/SendSmsReq.java new file mode 100644 index 00000000..2083f016 --- /dev/null +++ b/msg-center-api-v2/src/main/java/cn/axzo/msg/center/api/v2/message/req/SendSmsReq.java @@ -0,0 +1,49 @@ +package cn.axzo.msg.center.api.v2.message.req; + +import lombok.*; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.HashMap; +import java.util.Map; + +/** + * 发送消息请求 + */ +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Setter +@Getter +public class SendSmsReq { + + /** + * 请求号 + */ + private String requestNo; + + /** + * 应用接入码 + */ + @NotBlank(message = "app code must not be null") + private String appCode; + + /** + * 短信模板号 + */ + @NotBlank(message = "template no must not be null") + private String templateNo; + + /** + * 电话号码 + */ + @NotBlank(message = "phone no must not be null") + private String phoneNo; + + /** + * 短信模板变更 + */ + @NotNull(message = "params must not be null") + private Map params = new HashMap<>(); + +} \ No newline at end of file diff --git a/msg-notices/msg-notices-service/pom.xml b/msg-notices/msg-notices-service/pom.xml index ee5f941a..ba19333c 100644 --- a/msg-notices/msg-notices-service/pom.xml +++ b/msg-notices/msg-notices-service/pom.xml @@ -62,6 +62,10 @@ cn.axzo.msgcenter msg-center-api + + cn.axzo.msgcenter + msg-center-api-v2 + \ No newline at end of file diff --git a/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/v2/SmsApiV2Impl.java b/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/v2/SmsApiV2Impl.java new file mode 100644 index 00000000..a78c0d44 --- /dev/null +++ b/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/v2/SmsApiV2Impl.java @@ -0,0 +1,51 @@ +package cn.axzo.msg.center.notices.service.v2; + +import cn.axzo.basics.common.exception.ServiceException; +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.foundation.result.ResultCode; +import cn.axzo.msg.center.api.v2.message.feign.SmsApiV2; +import cn.axzo.msg.center.api.v2.message.req.SendSmsReq; +import cn.axzo.msg.center.notices.common.enums.ReturnCodeEnum; +import cn.axzo.msg.center.notices.manager.api.dto.request.MnsRequestDto; +import cn.axzo.msg.center.notices.service.api.MessageService; +import cn.axzo.msg.center.notices.service.impl.MnsType; +import cn.azxo.framework.common.model.CommonResponse; +import cn.hutool.json.JSONUtil; +import com.alibaba.nacos.common.utils.UuidUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/13 + */ +@Service +@Slf4j +@RestController +@RequiredArgsConstructor +public class SmsApiV2Impl implements SmsApiV2 { + + private final MessageService messageService; + + @Override + public ApiResult sendSms(SendSmsReq request) { + MnsRequestDto mnsRequestDto = new MnsRequestDto(); + BeanUtils.copyProperties(request, mnsRequestDto); + log.info("request value={},mnsRequestDto value={}", JSONUtil.toJsonStr(request), JSONUtil.toJsonStr(mnsRequestDto)); + try { + if (StringUtils.isBlank(mnsRequestDto.getRequestNo())) { + mnsRequestDto.setRequestNo(UuidUtils.generateUuid()); + } + mnsRequestDto.setInternalObj(MnsType.BIZ); + messageService.sendMessage(mnsRequestDto); + return ApiResult.success(); + } catch (Exception e) { + return ApiResult.error(ResultCode.RUNTIME_EXCEPTION.getCode(), e.getMessage()); + } + } + +}