diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java index fcc78a7e..81503ba1 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java @@ -1,5 +1,28 @@ package cn.axzo.msg.center.message.controller; +import static java.util.stream.Collectors.toMap; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.cloud.bootstrap.config.BootstrapPropertySource; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.PropertySource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.yaml.snakeyaml.DumperOptions; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; + import cn.axzo.msg.center.api.MNSNoticesApi; import cn.axzo.msg.center.api.MessageAPIV3; import cn.axzo.msg.center.api.MessageAPIV4; @@ -35,31 +58,17 @@ import cn.axzo.msg.center.notices.manager.api.MessageChannelRouter; import cn.axzo.msg.center.notices.manager.api.MessageTemplateManager; import cn.axzo.msg.center.notices.manager.api.dto.request.plat.AddMnsAppRequest; import cn.axzo.msg.center.notices.manager.api.dto.request.plat.CreateTemplateRequestDto; +import cn.axzo.msg.center.notices.manager.api.dto.request.plat.DeleteTemplateRequest; +import cn.axzo.msg.center.notices.manager.api.dto.request.plat.QueryTemplateRequestDto; import cn.axzo.msg.center.notices.manager.api.dto.request.plat.TingyunInterfaceListRequest; +import cn.axzo.msg.center.notices.manager.api.dto.response.plat.QueryTemplateResponseDto; import cn.axzo.msg.center.notices.service.api.PlatService; import cn.axzo.msg.center.service.enums.MqMessageType; import cn.axzo.msg.center.service.pending.request.ResendMessageRequest; import cn.axzo.msg.center.service.pending.request.RevokeByTemplateCodeRequest; import cn.axzo.trade.web.annotation.EnableResponseAdvice; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.cloud.bootstrap.config.BootstrapPropertySource; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.PropertySource; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.yaml.snakeyaml.DumperOptions; - -import javax.validation.Valid; -import java.util.Map; - -import static java.util.stream.Collectors.toMap; /** * @author syl @@ -196,6 +205,43 @@ public class PrivateMessageController { return "created"; } + @PostMapping("/createMnsTemplates") + @EnableResponseAdvice(enable = false) + @Transactional(rollbackFor = Exception.class) + public Object createMnsTemplates(@RequestBody List requests){ + HashMap result = new HashMap<>(); + for (CreateTemplateRequestDto request : requests) { + QueryTemplateRequestDto query = new QueryTemplateRequestDto(); + query.setChannelTemplateNo(request.getChannelTemplateCode()); + query.setChannelCode(request.getChannel()); + List saved = platService.list(query).getList(); + if (saved.isEmpty()) { + log.info("saving template. innerTemplateNo={}, channelTemplateNo={}", request.getInnerTemplateNo(), + request.getChannelTemplateCode()); + platService.createTemplate(request); + result.put(request.getChannelTemplateCode(), "已创建"); + } + else { + log.info("ignore saving template, it's present. innerTemplateNo={}, channelTemplateNo={}", + request.getInnerTemplateNo(), request.getChannelTemplateCode()); + result.put(request.getChannelTemplateCode(), "已存在"); + } + } + return result; + } + + @PostMapping("/deleteChannelTemplates") + @EnableResponseAdvice(enable = false) + @Transactional(rollbackFor = Exception.class) + public Object deleteChannelTemplates(@RequestBody List requests){ + HashMap result = new HashMap<>(); + for (DeleteTemplateRequest request : requests) { + boolean deleted = platService.deleteChannelTemplate(request.getChannelTemplateCode(), request.getChannelCode()); + result.put(request.getChannelTemplateCode(), deleted ? "已删除" : "不存在"); + } + return result; + } + @PostMapping("/sendSms") @EnableResponseAdvice(enable = false) public Object sendSms(@RequestBody @Valid SendMessageRequestDto request) { diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MNSMessageChannel.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MNSMessageChannel.java index 7464d169..27992941 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MNSMessageChannel.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/MNSMessageChannel.java @@ -1,14 +1,15 @@ package cn.axzo.msg.center.domain.entity; -import cn.axzo.msg.center.domain.persistence.BaseOwnEntity; +import java.io.Serializable; + import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; + +import cn.axzo.msg.center.domain.persistence.BaseOwnEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.io.Serializable; - /** *

* 消息渠道表 diff --git a/msg-notices/msg-notices-common/src/main/java/cn/axzo/msg/center/notices/common/enums/ChannelHandlerEnum.java b/msg-notices/msg-notices-common/src/main/java/cn/axzo/msg/center/notices/common/enums/ChannelHandlerEnum.java index f0deb154..ed9459af 100644 --- a/msg-notices/msg-notices-common/src/main/java/cn/axzo/msg/center/notices/common/enums/ChannelHandlerEnum.java +++ b/msg-notices/msg-notices-common/src/main/java/cn/axzo/msg/center/notices/common/enums/ChannelHandlerEnum.java @@ -23,7 +23,8 @@ public enum ChannelHandlerEnum implements EnumBase { SUB_MAIL("sub_mail", "subMailSmsSendManager", "赛邮"), LIAN_LU("lian_lu", "lianLuSmsSendManager", "联麓"), REGULATORY_GAOXIN("regulatory_gaoxin", "regulatoryGaoxinManager", "监管机构: 高新"), - REGULATORY_LONGQUAN("regulatory_longquan", "regulatoryLongquanManager", "监管机构: 龙泉") + REGULATORY_LONGQUAN("regulatory_longquan", "regulatoryLongquanManager", "监管机构: 龙泉"), + VOLC("volc", "volcManager", "火山云") ; private final String code; diff --git a/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/AliYunSmsClientImpl.java b/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/AliYunSmsClientImpl.java index ed007e96..c462e260 100644 --- a/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/AliYunSmsClientImpl.java +++ b/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/AliYunSmsClientImpl.java @@ -24,6 +24,7 @@ import com.aliyun.teautil.models.RuntimeOptions; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -38,6 +39,7 @@ import java.util.Optional; * @since 2021-05-19 12:39 */ @Slf4j +@RefreshScope @Service("aliYunSmsClient") public class AliYunSmsClientImpl implements AliYunSmsClient { diff --git a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java index 56848363..a4e975d8 100644 --- a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java +++ b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/SmsSendManager.java @@ -28,6 +28,8 @@ public interface SmsSendManager { * @param requestDto * @return */ - BatchMessageSendResponseDto sendBatchMessage(BatchMessageSendRequestDto requestDto); + default BatchMessageSendResponseDto sendBatchMessage(BatchMessageSendRequestDto requestDto) { + return new BatchMessageSendResponseDto(); + } } diff --git a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/DeleteTemplateRequest.java b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/DeleteTemplateRequest.java new file mode 100644 index 00000000..1d551077 --- /dev/null +++ b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/DeleteTemplateRequest.java @@ -0,0 +1,21 @@ +package cn.axzo.msg.center.notices.manager.api.dto.request.plat; + +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; + +/** + * @author yanglin + */ +@Setter +@Getter +public class DeleteTemplateRequest { + + @NotBlank(message = "channelTemplateCode") + private String channelTemplateCode; + + @NotBlank(message = "channelCode") + private String channelCode; + +} diff --git a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/QueryTemplateRequestDto.java b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/QueryTemplateRequestDto.java index 672e5000..eed36115 100644 --- a/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/QueryTemplateRequestDto.java +++ b/msg-notices/msg-notices-manager-api/src/main/java/cn/axzo/msg/center/notices/manager/api/dto/request/plat/QueryTemplateRequestDto.java @@ -20,14 +20,16 @@ public class QueryTemplateRequestDto extends PageQuery /** * ali模版编码 */ - private String templateAliNo; + private String channelTemplateNo; /** * axzo模版编码 */ - private String templateNo; + private String innerTemplateNo; /** * 标题 */ private String title; + private String channelCode; + } diff --git a/msg-notices/msg-notices-manager/pom.xml b/msg-notices/msg-notices-manager/pom.xml index bf2c1a96..4598c433 100644 --- a/msg-notices/msg-notices-manager/pom.xml +++ b/msg-notices/msg-notices-manager/pom.xml @@ -20,6 +20,11 @@ + + com.volcengine + volc-sdk-java + 1.0.105 + cn.axzo.msgcenter msg-center-common diff --git a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/MessageChannelRouteImpl.java b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/MessageChannelRouteImpl.java index 29996109..a44798d6 100644 --- a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/MessageChannelRouteImpl.java +++ b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/MessageChannelRouteImpl.java @@ -1,5 +1,24 @@ package cn.axzo.msg.center.notices.manager; +import static java.util.stream.Collectors.toList; + +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; + +import javax.annotation.Resource; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + import cn.axzo.msg.center.api.request.AddMnsChannelRequest; import cn.axzo.msg.center.dal.MNSMessageChannelDao; import cn.axzo.msg.center.domain.entity.MNSMessageChannel; @@ -9,20 +28,8 @@ import cn.axzo.msg.center.notices.common.enums.ReturnCodeEnum; import cn.axzo.msg.center.notices.common.exception.BizException; import cn.axzo.msg.center.notices.manager.api.MessageChannelRouter; import cn.axzo.msg.center.notices.manager.api.MessageTemplateManager; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; +import cn.axzo.msg.center.notices.manager.support.SmsFailoverProps; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; /** * 消息渠道路由实现类 @@ -32,6 +39,7 @@ import java.util.Set; * @since 2021-05-27 15:04 */ @Slf4j +@RefreshScope @Service("messageChannelRoute") public class MessageChannelRouteImpl implements MessageChannelRouter { @@ -39,6 +47,8 @@ public class MessageChannelRouteImpl implements MessageChannelRouter { private MNSMessageChannelDao mnsMessageChannelDao; @Resource(name = "messageTemplateManager") private MessageTemplateManager messageTemplateManager; + @Resource + private SmsFailoverProps failoverProps; @Override public MNSMessageChannel route(String condition) { @@ -70,13 +80,23 @@ public class MessageChannelRouteImpl implements MessageChannelRouter { pickChannelCodes.clear(); pickChannelCodes.add(specifyChannelCode); } - // 查询优先级最高的一个 - return messageChannels.stream() + List validChannels = messageChannels.stream() // 条件过滤 .filter(messageChannel -> pickChannelCodes.contains(messageChannel.getChannelCode())) + .collect(toList()); + // 查询优先级最高的一个 + MNSMessageChannel selectedChannel = validChannels.stream() // 优先级越小,排在越前 .min(Comparator.comparing(MNSMessageChannel::getPriority)) .orElse(null); + MNSMessageChannel failoverChannel = validChannels.stream() + .filter(c -> c.getChannelCode().equals(failoverProps.getFailoverChannel())) + .findFirst() + .orElse(null); + boolean failover = StringUtils.isNotBlank(failoverProps.getFailoverChannel()) + && (failoverProps.isGlobal() || failoverProps.getIncludeInnerTemplates().contains(innerTemplateCode)) + && !failoverProps.getExcludeInnerTemplates().contains(innerTemplateCode); + return failover && failoverChannel != null ? failoverChannel : selectedChannel; } @Override diff --git a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/VolcManager.java b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/VolcManager.java new file mode 100644 index 00000000..546318fd --- /dev/null +++ b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/VolcManager.java @@ -0,0 +1,82 @@ + +package cn.axzo.msg.center.notices.manager; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Service; + +import com.alibaba.fastjson.JSON; +import com.volcengine.model.request.SmsSendRequest; +import com.volcengine.model.response.SmsSendResponse; +import com.volcengine.service.sms.SmsService; +import com.volcengine.service.sms.SmsServiceInfoConfig; +import com.volcengine.service.sms.impl.SmsServiceImpl; + +import cn.axzo.msg.center.common.exception.ServiceException; +import cn.axzo.msg.center.notices.manager.api.SmsSendManager; +import cn.axzo.msg.center.notices.manager.api.dto.request.MessageSendRequestDto; +import cn.axzo.msg.center.notices.manager.api.dto.response.SendSmsCommonResponseDto; +import cn.axzo.msg.center.notices.manager.support.VolcSmsProps; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 发送短信 + * + * @author yanglin + */ +@Slf4j +@RequiredArgsConstructor +@Service("volcManager") +public class VolcManager implements SmsSendManager, InitializingBean { + + private final VolcSmsProps props; + private SmsService smsService; + + @Override + public SendSmsCommonResponseDto sendMessage(MessageSendRequestDto requestDto) { + SmsSendRequest volcRequest = new SmsSendRequest(); + volcRequest.setPhoneNumbers(requestDto.getPhoneNo()); + volcRequest.setSmsAccount(props.getGroupId()); + volcRequest.setTemplateId(requestDto.getTemplateNo()); + volcRequest.setSign(props.getSign()); + + Map effectiveParam = new HashMap<>(); + if (requestDto.getTemplateMap() != null) { + for (Map.Entry e : requestDto.getTemplateMap().entrySet()) { + if (e.getKey() == null || e.getValue() == null) + continue; + effectiveParam.put(e.getKey(), String.valueOf(e.getValue())); + } + } + volcRequest.setTemplateParamByMap(effectiveParam); + + try { + log.info("[VolcManager#sendMessage] 开始发送sms, request={}", volcRequest); + SmsSendResponse volcResponse = smsService.sendV2(volcRequest); + log.info("[VolcManager#sendMessage] 结束发送sms, request={}, response={}", volcRequest, volcResponse); + if (StringUtils.isBlank(volcResponse.getCode())) { + SendSmsCommonResponseDto result = new SendSmsCommonResponseDto(); + result.setBizId(volcResponse.getResult().getMessageId().get(0)); + result.setRequestId(volcResponse.getResponseMetadata().getRequestId()); + result.setMessage(result.getMessage()); + return result; + } + throw new ServiceException( + "发送短信失败, request=" + JSON.toJSONString(volcRequest) + ", response=" + JSON.toJSONString(volcResponse)); + } + catch (Exception e) { + throw new ServiceException(e); + } + } + + @Override + public void afterPropertiesSet() { + smsService = SmsServiceImpl.getInstance( + new SmsServiceInfoConfig(props.getAccessKey(), props.getSecretAccessKey())); + } + +} diff --git a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/support/SmsFailoverProps.java b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/support/SmsFailoverProps.java new file mode 100644 index 00000000..daa70086 --- /dev/null +++ b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/support/SmsFailoverProps.java @@ -0,0 +1,31 @@ +package cn.axzo.msg.center.notices.manager.support; + +import java.util.Collections; +import java.util.Set; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author yanglin + */ +@Setter +@Getter +@RefreshScope +@Configuration +@ConfigurationProperties(prefix = "sms.failover") +public class SmsFailoverProps { + + private boolean global = false; + + private String failoverChannel = "volc"; + + private Set includeInnerTemplates = Collections.emptySet(); + + private Set excludeInnerTemplates = Collections.emptySet(); + +} \ No newline at end of file diff --git a/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/support/VolcSmsProps.java b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/support/VolcSmsProps.java new file mode 100644 index 00000000..db92f2ef --- /dev/null +++ b/msg-notices/msg-notices-manager/src/main/java/cn/axzo/msg/center/notices/manager/support/VolcSmsProps.java @@ -0,0 +1,25 @@ +package cn.axzo.msg.center.notices.manager.support; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author yanglin + */ +@Setter +@Getter +@RefreshScope +@Configuration +@ConfigurationProperties(prefix = "sms.volc") +public class VolcSmsProps { + + private String accessKey = "AKLTZWMwNzI4OWZmYmRjNGJhZDgzMzNmZWM4Y2QzODRkZjA"; + private String secretAccessKey = "Wmpnek1tWTFaRGhtTmpaak5EVTNZbUkxTXpsak1UUmlZV0ZpWW1Fek1tUQ=="; + private String groupId = "8349906e"; + private String sign = "安心筑"; + +} \ No newline at end of file diff --git a/msg-notices/msg-notices-service-api/src/main/java/cn/axzo/msg/center/notices/service/api/PlatService.java b/msg-notices/msg-notices-service-api/src/main/java/cn/axzo/msg/center/notices/service/api/PlatService.java index 51265f2d..0013dddf 100644 --- a/msg-notices/msg-notices-service-api/src/main/java/cn/axzo/msg/center/notices/service/api/PlatService.java +++ b/msg-notices/msg-notices-service-api/src/main/java/cn/axzo/msg/center/notices/service/api/PlatService.java @@ -29,6 +29,8 @@ public interface PlatService { */ Page list(QueryTemplateRequestDto request); + boolean deleteChannelTemplate(String channelTemplateNo, String channelCode); + /* * 删除短信模板 */ diff --git a/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/PlatServiceImpl.java b/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/PlatServiceImpl.java index 8f3b0518..38a86951 100644 --- a/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/PlatServiceImpl.java +++ b/msg-notices/msg-notices-service/src/main/java/cn/axzo/msg/center/notices/service/impl/PlatServiceImpl.java @@ -1,7 +1,23 @@ package cn.axzo.msg.center.notices.service.impl; +import static cn.axzo.basics.common.util.Queries.query; + +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + import cn.axzo.msg.center.common.enums.TableIsDeleteEnum; import cn.axzo.msg.center.common.utils.PlaceholderResolver; +import cn.axzo.msg.center.dal.MNSChannelMessageTemplateDao; import cn.axzo.msg.center.dal.MNSMessageTemplateParamDao; import cn.axzo.msg.center.dal.mapper.MNSChannelMessageTemplateMapper; import cn.axzo.msg.center.dal.mapper.MNSMessageAppMapper; @@ -20,19 +36,7 @@ import cn.axzo.msg.center.notices.manager.api.dto.request.plat.CreateTemplateReq import cn.axzo.msg.center.notices.manager.api.dto.request.plat.QueryTemplateRequestDto; import cn.axzo.msg.center.notices.manager.api.dto.response.plat.QueryTemplateResponseDto; import cn.axzo.msg.center.notices.service.api.PlatService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; - -import static cn.axzo.basics.common.util.Queries.query; @Slf4j @Service("platService") @@ -41,6 +45,9 @@ public class PlatServiceImpl implements PlatService { @Resource private MNSChannelMessageTemplateMapper mnsChannelMessageTemplateMapper; + @Resource + private MNSChannelMessageTemplateDao mnsChannelMessageTemplateDao; + @Resource private MNSMessageTemplateMapper mnsMessageTemplateMapper; @@ -229,9 +236,10 @@ public class PlatServiceImpl implements PlatService { // queryWrapper.eq(MNSChannelMessageTemplate::getChannelCode, ChannelHandlerEnum.ALI_YUN.getCode()); queryWrapper.eq(request.getMessageTemplateType() != null, MNSChannelMessageTemplate::getType, request.getMessageTemplateType()); queryWrapper.like(StringUtils.isNoneBlank(request.getServiceName()), MNSChannelMessageTemplate::getInnerTemplateNo, request.getServiceName()); - queryWrapper.like(StringUtils.isNoneBlank(request.getTemplateAliNo()), MNSChannelMessageTemplate::getTemplateNo, request.getTemplateAliNo()); - queryWrapper.like(StringUtils.isNoneBlank(request.getTemplateNo()), MNSChannelMessageTemplate::getInnerTemplateNo, request.getTemplateNo()); + queryWrapper.like(StringUtils.isNoneBlank(request.getChannelTemplateNo()), MNSChannelMessageTemplate::getTemplateNo, request.getChannelTemplateNo()); + queryWrapper.like(StringUtils.isNoneBlank(request.getInnerTemplateNo()), MNSChannelMessageTemplate::getInnerTemplateNo, request.getInnerTemplateNo()); queryWrapper.like(StringUtils.isNoneBlank(request.getTitle()), MNSChannelMessageTemplate::getTitle, request.getTitle()); + queryWrapper.eq(StringUtils.isNotBlank(request.getChannelCode()), MNSChannelMessageTemplate::getChannelCode, request.getChannelCode()); queryWrapper.orderByDesc(MNSChannelMessageTemplate::getCreateAt); com.baomidou.mybatisplus.extension.plugins.pagination.Page page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(); @@ -259,6 +267,14 @@ public class PlatServiceImpl implements PlatService { return result; } + @Override + public boolean deleteChannelTemplate(String channelTemplateNo, String channelCode) { + return mnsChannelMessageTemplateDao.lambdaUpdate() + .eq(MNSChannelMessageTemplate::getTemplateNo, channelTemplateNo) + .eq(MNSChannelMessageTemplate::getChannelCode, channelCode) + .remove(); + } + @Override @Transactional(rollbackFor = Exception.class) public void delete(String templateNo) { diff --git a/start/pom.xml b/start/pom.xml index 605e0160..e461a367 100644 --- a/start/pom.xml +++ b/start/pom.xml @@ -19,6 +19,10 @@ + + com.alibaba + easyexcel + cn.axzo.msgcenter msg-center-webapi diff --git a/start/src/test/java/cn/axzo/msg/center/notices/manager/VolcImportTest.java b/start/src/test/java/cn/axzo/msg/center/notices/manager/VolcImportTest.java new file mode 100644 index 00000000..99012b68 --- /dev/null +++ b/start/src/test/java/cn/axzo/msg/center/notices/manager/VolcImportTest.java @@ -0,0 +1,63 @@ +package cn.axzo.msg.center.notices.manager; + +import java.util.ArrayList; + +import org.junit.jupiter.api.Test; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.alibaba.fastjson.JSONObject; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author yanglin + */ +public class VolcImportTest { + + @Test + void gen() { + String filePath = "/Users/yanglin/Desktop/1.xlsx"; + ArrayList templates = new ArrayList<>(); + EasyExcel.read(filePath, Row.class, new ReadListener() { + @Override public void invoke(Row row, AnalysisContext context) { + JSONObject template = new JSONObject(); + template.put("serviceName", "add"); + template.put("messageTemplateType", 1); + template.put("innerTemplateNo", row.getInnerTemplateNo()); + template.put("channelTemplateCode", row.getVolcTemplateNo()); + template.put("title", row.getTitle()); + template.put("templateContent", row.getContent()); + template.put("remark", ""); + template.put("channel", "volc"); + templates.add(template); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + } + }).sheet().doRead(); + System.out.println(templates); + } + + @Setter @Getter + public static class Row { + @ExcelProperty(index = 0) + private String innerTemplateNo; + @ExcelProperty(index = 1) + private String aliyunTemplateNo; + @ExcelProperty(index = 2) + private String volcTemplateNo; + @ExcelProperty(index = 3) + private String volcRemark; + @ExcelProperty(index = 4) + private String templateType; + @ExcelProperty(index = 5) + private String title; + @ExcelProperty(index = 6) + private String content; + } +} diff --git a/start/src/test/java/cn/axzo/msg/center/notices/manager/VolcManagerTest.java b/start/src/test/java/cn/axzo/msg/center/notices/manager/VolcManagerTest.java new file mode 100644 index 00000000..3afdb02c --- /dev/null +++ b/start/src/test/java/cn/axzo/msg/center/notices/manager/VolcManagerTest.java @@ -0,0 +1,25 @@ + +package cn.axzo.msg.center.notices.manager; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import cn.axzo.msg.center.MsgCenterApplication; +import lombok.RequiredArgsConstructor; + +/** + * @author yanglin + */ +@SpringBootTest(classes = MsgCenterApplication.class) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +class VolcManagerTest { + + @Test + void exec() throws Exception { + } + + @Test + void volcSend() { + } +}