|
@@ -6,20 +6,36 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fire.admin.dto.FlowAppInfoDto;
|
|
|
+import com.fire.admin.dto.IpWhiteListDto;
|
|
|
import com.fire.admin.mapper.FlowAppMapper;
|
|
|
import com.fire.admin.service.ChannelGroupService;
|
|
|
import com.fire.admin.service.FlowAppInfoService;
|
|
|
+import com.fire.admin.service.IpWhiteListService;
|
|
|
import com.fire.admin.vo.FlowAppInfoVo;
|
|
|
+import com.fire.common.exception.BaseException;
|
|
|
import com.fire.dto.ChannelGroup;
|
|
|
import com.fire.dto.FlowAppInfo;
|
|
|
+import com.fire.dto.IpWhiteList;
|
|
|
+import com.fire.dto.enums.Status;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.messaging.support.MessageBuilder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import redis.clients.jedis.JedisCluster;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.fire.common.constants.RocketTags.CONSUMER_PRODUCT_TAG;
|
|
|
+import static com.fire.common.constants.RocketTags.PRODUCT_TAG;
|
|
|
+import static com.fire.common.constants.RocketTopic.UPDATE_TOPIC;
|
|
|
+import static com.fire.dto.enums.RedisKey.GLOBAL_ID_INCR;
|
|
|
+
|
|
|
/**
|
|
|
* @author: liuliu
|
|
|
* @ClassName: FlowAppInfoServiceImpl
|
|
@@ -31,12 +47,21 @@ import java.util.stream.Collectors;
|
|
|
public class FlowAppInfoServiceImpl extends ServiceImpl<FlowAppMapper, FlowAppInfo> implements FlowAppInfoService {
|
|
|
|
|
|
|
|
|
-
|
|
|
private ChannelGroupService channelGroupService;
|
|
|
|
|
|
+ private IpWhiteListService ipWhiteListService;
|
|
|
+
|
|
|
+ private RocketMQTemplate rocketMQTemplate;
|
|
|
+
|
|
|
+ private JedisCluster jedisCluster;
|
|
|
+
|
|
|
@Autowired
|
|
|
- public FlowAppInfoServiceImpl(ChannelGroupService channelGroupService){
|
|
|
- this.channelGroupService=channelGroupService;
|
|
|
+ public FlowAppInfoServiceImpl(ChannelGroupService channelGroupService, IpWhiteListService ipWhiteListService,
|
|
|
+ RocketMQTemplate rocketMQTemplate, JedisCluster jedisCluster) {
|
|
|
+ this.channelGroupService = channelGroupService;
|
|
|
+ this.ipWhiteListService = ipWhiteListService;
|
|
|
+ this.rocketMQTemplate = rocketMQTemplate;
|
|
|
+ this.jedisCluster = jedisCluster;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -53,16 +78,16 @@ public class FlowAppInfoServiceImpl extends ServiceImpl<FlowAppMapper, FlowAppIn
|
|
|
IPage<FlowAppInfoVo> flowAppInfoVoIPage = baseMapper.queryFlowAppInfoPage(page, customerName);
|
|
|
|
|
|
// TODO 元数据
|
|
|
- List<FlowAppInfoVo> flowAppInfoVoList= flowAppInfoVoIPage.getRecords();
|
|
|
+ List<FlowAppInfoVo> flowAppInfoVoList = flowAppInfoVoIPage.getRecords();
|
|
|
|
|
|
List<Long> channelGroupIds = JSONArray.parseArray(flowAppInfoVoList.stream().map(FlowAppInfoVo::getChannelId).collect(Collectors.toList()).toString(), Long.class);
|
|
|
|
|
|
List<ChannelGroup> channelGroups = channelGroupService.queryChannelGroup(channelGroupIds);
|
|
|
|
|
|
- flowAppInfoVoList.forEach(app->{
|
|
|
- channelGroups.forEach(channel->{
|
|
|
- if(ObjectUtil.isNotEmpty(app.getChannelId()) && ObjectUtil.isNotEmpty(channel.getChannelGroupId())){
|
|
|
- if(app.getChannelId().longValue() == channel.getChannelGroupId().longValue()){
|
|
|
+ flowAppInfoVoList.forEach(app -> {
|
|
|
+ channelGroups.forEach(channel -> {
|
|
|
+ if (ObjectUtil.isNotEmpty(app.getChannelId()) && ObjectUtil.isNotEmpty(channel.getChannelGroupId())) {
|
|
|
+ if (app.getChannelId().longValue() == channel.getChannelGroupId().longValue()) {
|
|
|
app.setGroupName(channel.getGroupName());
|
|
|
}
|
|
|
}
|
|
@@ -80,6 +105,7 @@ public class FlowAppInfoServiceImpl extends ServiceImpl<FlowAppMapper, FlowAppIn
|
|
|
* @Date: 2021/5/26 10:16
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void updateFlowAppInfo(FlowAppInfoDto flowAppInfoDto) {
|
|
|
FlowAppInfo appInfo = FlowAppInfo.builder()
|
|
|
.flowAppId(flowAppInfoDto.getFlowAppId())
|
|
@@ -88,20 +114,46 @@ public class FlowAppInfoServiceImpl extends ServiceImpl<FlowAppMapper, FlowAppIn
|
|
|
.status(flowAppInfoDto.getStatus())
|
|
|
.appName(flowAppInfoDto.getAppName())
|
|
|
.callbackUrl(flowAppInfoDto.getCallbackUrl())
|
|
|
- .ipAddress(flowAppInfoDto.getIpAddress())
|
|
|
+ .ipAddress(formatIps(flowAppInfoDto.getIpWhiteListList()))
|
|
|
.dispatchChannel(flowAppInfoDto.getDispatchChannel())
|
|
|
.totalCount(flowAppInfoDto.getTotalCount())
|
|
|
.time(flowAppInfoDto.getTime())
|
|
|
- .channelId(flowAppInfoDto.getChannelId()).build();
|
|
|
+ .channelId(flowAppInfoDto.getChannelId())
|
|
|
+ .secondCallback(flowAppInfoDto.getSecondCallback()).build();
|
|
|
int count = baseMapper.updateById(appInfo);
|
|
|
+ List<IpWhiteList> list = Lists.newArrayList();
|
|
|
+ flowAppInfoDto.getIpWhiteListList().forEach(ip -> {
|
|
|
+ IpWhiteList whiteList = IpWhiteList.builder().ipId(jedisCluster.incr(GLOBAL_ID_INCR.key()))
|
|
|
+ .des(ip.getDes())
|
|
|
+ .ipAddr(ip.getIpAddr())
|
|
|
+ .customerId(flowAppInfoDto.getCustomerId()).build();
|
|
|
+ list.add(whiteList);
|
|
|
+ });
|
|
|
+ ipWhiteListService.saveCustomerIpWhiteList(list, flowAppInfoDto.getCustomerId());
|
|
|
+
|
|
|
if (count > 0) {
|
|
|
log.info("客户接入信息修改,修改信息为:【{}】", appInfo.toString());
|
|
|
// TODO 发送消息到 客户接入 topic
|
|
|
-
|
|
|
+ rocketMQTemplate.send(UPDATE_TOPIC + ":" + CONSUMER_PRODUCT_TAG, MessageBuilder.withPayload(CONSUMER_PRODUCT_TAG).build());
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @descible: TODO 将 list 集合的ip地址转换为 string
|
|
|
+ * @param: list
|
|
|
+ * @return: java.lang.String
|
|
|
+ * @author: liuliu
|
|
|
+ * @date: 2021-06-24 13:22
|
|
|
+ */
|
|
|
+ private String formatIps(List<IpWhiteListDto> list) {
|
|
|
+ if(!list.isEmpty()){
|
|
|
+ return list.stream().map(ipWhiteListDto -> ipWhiteListDto.getIpAddr().concat(";")).collect(Collectors.joining());
|
|
|
+ }else {
|
|
|
+ throw new BaseException(Status.PARAM_LOSS.status(),Status.PARAM_LOSS.message());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|