From 17bc552dc5e11bfcdb85a36fc9eeed073bd97983 Mon Sep 17 00:00:00 2001 From: liulu Date: Tue, 24 Dec 2024 15:02:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=A2=9E=E5=8A=A0=E7=99=BD?= =?UTF-8?q?=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chsm/mapper/IpWhitelisttMapper.java | 20 +++++++++ .../java/com/sunyard/chsm/dto/AppSave.java | 6 +++ .../java/com/sunyard/chsm/dto/AppView.java | 1 + .../service/impl/ApplicationServiceImpl.java | 41 +++++++++++++++++++ 4 files changed, 68 insertions(+) diff --git a/chsm-common/src/main/java/com/sunyard/chsm/mapper/IpWhitelisttMapper.java b/chsm-common/src/main/java/com/sunyard/chsm/mapper/IpWhitelisttMapper.java index 66d747a..0a52d9c 100644 --- a/chsm-common/src/main/java/com/sunyard/chsm/mapper/IpWhitelisttMapper.java +++ b/chsm-common/src/main/java/com/sunyard/chsm/mapper/IpWhitelisttMapper.java @@ -1,8 +1,13 @@ package com.sunyard.chsm.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sunyard.chsm.model.entity.IpWhitelist; import org.apache.ibatis.annotations.Mapper; +import org.springframework.util.CollectionUtils; + +import java.util.Collections; +import java.util.List; /** * @author liulu @@ -11,6 +16,21 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface IpWhitelisttMapper extends BaseMapper { + default List selectByAppIds(List appIds) { + if (CollectionUtils.isEmpty(appIds)) { + return Collections.emptyList(); + } + return selectList( + new LambdaQueryWrapper() + .in(IpWhitelist::getAppId, appIds) + ); + } + default void deleteByAppId(Long appId) { + delete( + new LambdaQueryWrapper() + .eq(IpWhitelist::getAppId, appId) + ); + } } diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppSave.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppSave.java index 2b8dc90..449f94a 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppSave.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppSave.java @@ -25,6 +25,12 @@ public class AppSave { */ @NotEmpty(message = "密码服务不能为空") private List serviceIds; + + /** + * 应用白名单 + */ + private List whiteIps; + @Size(max = 500, message = "备注长度在1-500之间") private String remark; diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppView.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppView.java index 1152fef..d0984c7 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppView.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/dto/AppView.java @@ -20,6 +20,7 @@ public class AppView { private String statusText; private String appKey; private String appSecret; + private List whiteIps; private String remark; private LocalDateTime createTime; diff --git a/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/ApplicationServiceImpl.java b/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/ApplicationServiceImpl.java index fbba1cb..9395891 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/ApplicationServiceImpl.java +++ b/chsm-web-manage/src/main/java/com/sunyard/chsm/service/impl/ApplicationServiceImpl.java @@ -11,10 +11,13 @@ import com.sunyard.chsm.enums.EnableStatus; import com.sunyard.chsm.mapper.AppServiceMapper; import com.sunyard.chsm.mapper.ApplicationMapper; import com.sunyard.chsm.mapper.CryptoServiceMapper; +import com.sunyard.chsm.mapper.IpWhitelisttMapper; import com.sunyard.chsm.model.entity.AppService; import com.sunyard.chsm.model.entity.Application; import com.sunyard.chsm.model.entity.CryptoService; +import com.sunyard.chsm.model.entity.IpWhitelist; import com.sunyard.chsm.service.ApplicationService; +import com.sunyard.ssp.utils.SecurityUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -46,6 +49,10 @@ public class ApplicationServiceImpl implements ApplicationService { private AppServiceMapper appServiceMapper; @Resource private CryptoServiceMapper cryptoServiceMapper; + @Resource + private IpWhitelisttMapper ipWhitelisttMapper; + @Resource + private SecurityUtil securityUtil; @Override public Page selectPageList(AppQuery query) { @@ -68,12 +75,17 @@ public class ApplicationServiceImpl implements ApplicationService { List services = cryptoServiceMapper.selectBatchIds(appServices.stream().map(AppService::getServiceId).collect(Collectors.toList())); Map snMap = services.stream().collect(Collectors.toMap(CryptoService::getId, CryptoService::getName)); + List appWhiteIps = ipWhitelisttMapper.selectByAppIds(appIds); + Map> appIpMap = appWhiteIps.stream() + .collect(Collectors.groupingBy(IpWhitelist::getAppId, Collectors.mapping(IpWhitelist::getIp, Collectors.toList()))); + List viewList = records.stream() .map(it -> { AppView view = new AppView(); BeanUtils.copyProperties(it, view); List sIds = appServiceMap.getOrDefault(it.getId(), Collections.emptyList()); view.setServiceIds(sIds.stream().map(String::valueOf).collect(Collectors.toList())); + view.setWhiteIps(appIpMap.get(it.getId())); String sn = sIds.stream() .map(snMap::get) .filter(Objects::nonNull) @@ -111,9 +123,24 @@ public class ApplicationServiceImpl implements ApplicationService { as.setCreateTime(now); appServiceMapper.insert(as); } + + if (!CollectionUtils.isEmpty(save.getWhiteIps())) { + for (String ip : save.getWhiteIps()) { + IpWhitelist whitelist = new IpWhitelist(); + whitelist.setId(IdWorker.getId()); + whitelist.setAppId(app.getId()); + whitelist.setIp(ip); + whitelist.setScope("app"); + whitelist.setStatus(EnableStatus.ENABLED.getCode()); + whitelist.setCreator(securityUtil.getCurrUser().getRealname()); + whitelist.setCreateTime(LocalDateTime.now()); + ipWhitelisttMapper.insert(whitelist); + } + } return app.getId(); } + @Override public void update(AppSave update) { Assert.notNull(update.getId(), "id不能为空"); @@ -141,6 +168,20 @@ public class ApplicationServiceImpl implements ApplicationService { as.setCreateTime(now); appServiceMapper.insert(as); } + ipWhitelisttMapper.deleteByAppId(update.getId()); + if (!CollectionUtils.isEmpty(update.getWhiteIps())) { + for (String ip : update.getWhiteIps()) { + IpWhitelist whitelist = new IpWhitelist(); + whitelist.setId(IdWorker.getId()); + whitelist.setAppId(exist.getId()); + whitelist.setIp(ip); + whitelist.setScope("app"); + whitelist.setStatus(EnableStatus.ENABLED.getCode()); + whitelist.setCreator(securityUtil.getCurrUser().getRealname()); + whitelist.setCreateTime(LocalDateTime.now()); + ipWhitelisttMapper.insert(whitelist); + } + } }