REQ-4015: 添加火山渠道;短信渠道主备
This commit is contained in:
parent
5527bdc696
commit
f1472986bc
@ -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<CreateTemplateRequestDto> requests){
|
||||
HashMap<String, Object> result = new HashMap<>();
|
||||
for (CreateTemplateRequestDto request : requests) {
|
||||
QueryTemplateRequestDto query = new QueryTemplateRequestDto();
|
||||
query.setChannelTemplateNo(request.getChannelTemplateCode());
|
||||
query.setChannelCode(request.getChannel());
|
||||
List<QueryTemplateResponseDto> 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<DeleteTemplateRequest> requests){
|
||||
HashMap<String, Object> 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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 消息渠道表
|
||||
|
||||
@ -23,7 +23,8 @@ public enum ChannelHandlerEnum implements EnumBase<String> {
|
||||
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;
|
||||
|
||||
@ -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 {
|
||||
|
||||
|
||||
@ -28,6 +28,8 @@ public interface SmsSendManager {
|
||||
* @param requestDto
|
||||
* @return
|
||||
*/
|
||||
BatchMessageSendResponseDto sendBatchMessage(BatchMessageSendRequestDto requestDto);
|
||||
default BatchMessageSendResponseDto sendBatchMessage(BatchMessageSendRequestDto requestDto) {
|
||||
return new BatchMessageSendResponseDto();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -20,14 +20,16 @@ public class QueryTemplateRequestDto extends PageQuery<QueryTemplateRequestDto>
|
||||
/**
|
||||
* ali模版编码
|
||||
*/
|
||||
private String templateAliNo;
|
||||
private String channelTemplateNo;
|
||||
/**
|
||||
* axzo模版编码
|
||||
*/
|
||||
private String templateNo;
|
||||
private String innerTemplateNo;
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
private String channelCode;
|
||||
|
||||
}
|
||||
|
||||
@ -20,6 +20,11 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.volcengine</groupId>
|
||||
<artifactId>volc-sdk-java</artifactId>
|
||||
<version>1.0.105</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.msgcenter</groupId>
|
||||
<artifactId>msg-center-common</artifactId>
|
||||
|
||||
@ -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<MNSMessageChannel> 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
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* <a href="https://www.volcengine.com/docs/6361/67380">发送短信</a>
|
||||
*
|
||||
* @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<String, String> effectiveParam = new HashMap<>();
|
||||
if (requestDto.getTemplateMap() != null) {
|
||||
for (Map.Entry<String, Object> 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()));
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<String> includeInnerTemplates = Collections.emptySet();
|
||||
|
||||
private Set<String> excludeInnerTemplates = Collections.emptySet();
|
||||
|
||||
}
|
||||
@ -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 = "安心筑";
|
||||
|
||||
}
|
||||
@ -29,6 +29,8 @@ public interface PlatService {
|
||||
*/
|
||||
Page<QueryTemplateResponseDto> list(QueryTemplateRequestDto request);
|
||||
|
||||
boolean deleteChannelTemplate(String channelTemplateNo, String channelCode);
|
||||
|
||||
/*
|
||||
* 删除短信模板
|
||||
*/
|
||||
|
||||
@ -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<MNSChannelMessageTemplate> 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) {
|
||||
|
||||
@ -19,6 +19,10 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.msgcenter</groupId>
|
||||
<artifactId>msg-center-webapi</artifactId>
|
||||
|
||||
@ -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<JSONObject> templates = new ArrayList<>();
|
||||
EasyExcel.read(filePath, Row.class, new ReadListener<Row>() {
|
||||
@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;
|
||||
}
|
||||
}
|
||||
@ -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() {
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user