白名单
This commit is contained in:
parent
8716e97f04
commit
856723e729
@ -0,0 +1,16 @@
|
||||
package com.sunyard.chsm.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.sunyard.chsm.model.entity.IpWhitelist;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @author liulu
|
||||
* @since 2024/11/6
|
||||
*/
|
||||
@Mapper
|
||||
public interface IpWhitelisttMapper extends BaseMapper<IpWhitelist> {
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.sunyard.chsm.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author liulu
|
||||
* @since 2024/11/22
|
||||
*/
|
||||
@Data
|
||||
@TableName("sp_ip_whitelist")
|
||||
public class IpWhitelist {
|
||||
|
||||
private Long id;
|
||||
private Long appId;
|
||||
private String ip;
|
||||
private String scope;
|
||||
private String status;
|
||||
|
||||
private String creator;
|
||||
private String remark;
|
||||
private LocalDateTime createTime;
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package com.sunyard.chsm.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.sunyard.chsm.constant.AuditLogConst;
|
||||
import com.sunyard.chsm.dto.IpWhitelistDTO;
|
||||
import com.sunyard.chsm.model.R;
|
||||
import com.sunyard.chsm.service.IpWhitelistService;
|
||||
import com.sunyard.ssp.common.annotation.AuditControllerLog;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
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 javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 访问控制接口
|
||||
*
|
||||
* @author liulu
|
||||
* @since 2024/11/22
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sysconf/ipWhitelist")
|
||||
public class IpWhitelistController {
|
||||
|
||||
@Resource
|
||||
private IpWhitelistService iIpWhitelistService;
|
||||
|
||||
/**
|
||||
* 分页查询设备组列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 分页列表
|
||||
*/
|
||||
@PostMapping("/queryList")
|
||||
public R<Page<IpWhitelistDTO.IpView>> servicePageList(@RequestBody IpWhitelistDTO.Query query) {
|
||||
|
||||
Page<IpWhitelistDTO.IpView> page = iIpWhitelistService.selectPageList(query);
|
||||
|
||||
return R.data(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增白名单
|
||||
*
|
||||
* @param save save
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/save")
|
||||
@AuditControllerLog(description = "新增白名单", operateType = AuditLogConst.ADD)
|
||||
public R<Long> save(@Valid IpWhitelistDTO.IpSave save) {
|
||||
Long id = iIpWhitelistService.save(save);
|
||||
return R.data(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改白名单
|
||||
*
|
||||
* @param update update
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
@AuditControllerLog(description = "修改白名单", operateType = AuditLogConst.UPDATE)
|
||||
public R<Void> update(@Valid IpWhitelistDTO.IpSave update) {
|
||||
iIpWhitelistService.update(update);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除白名单
|
||||
*
|
||||
* @param ids ids
|
||||
* @return void
|
||||
*/
|
||||
@DeleteMapping("/deleteByIds")
|
||||
@AuditControllerLog(description = "删除白名单", operateType = AuditLogConst.DELETE)
|
||||
public R<Void> delete(@RequestParam Long[] ids) {
|
||||
iIpWhitelistService.delete(ids);
|
||||
return R.ok("批量通过id删除数据成功");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.sunyard.chsm.dto;
|
||||
|
||||
import com.sunyard.chsm.model.PageQuery;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author liulu
|
||||
* @since 2024/11/22
|
||||
*/
|
||||
public abstract class IpWhitelistDTO {
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public static class Query extends PageQuery {
|
||||
|
||||
private String ipAddress;
|
||||
private LocalDate startDate;
|
||||
private LocalDate endDate;
|
||||
private Integer status;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public static class IpView {
|
||||
private Long id;
|
||||
private String ipAddress;
|
||||
private String creator;
|
||||
private Integer status;
|
||||
private String memo;
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public static class IpSave {
|
||||
private Long id;
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
private String ipAddress;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度在1-500之间")
|
||||
private String memo;
|
||||
|
||||
private Integer status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.sunyard.chsm.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.sunyard.chsm.dto.IpWhitelistDTO;
|
||||
|
||||
/**
|
||||
* @author liulu
|
||||
* @since 2024/11/22
|
||||
*/
|
||||
public interface IpWhitelistService {
|
||||
|
||||
Page<IpWhitelistDTO.IpView> selectPageList(IpWhitelistDTO.Query query);
|
||||
|
||||
Long save(IpWhitelistDTO.IpSave save);
|
||||
|
||||
void update(IpWhitelistDTO.IpSave save);
|
||||
|
||||
void delete(Long[] ids);
|
||||
}
|
@ -0,0 +1,142 @@
|
||||
package com.sunyard.chsm.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.sunyard.chsm.dto.IpWhitelistDTO;
|
||||
import com.sunyard.chsm.enums.EnableStatus;
|
||||
import com.sunyard.chsm.mapper.IpWhitelisttMapper;
|
||||
import com.sunyard.chsm.model.entity.IpWhitelist;
|
||||
import com.sunyard.chsm.service.IpWhitelistService;
|
||||
import com.sunyard.ssp.utils.SecurityUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author liulu
|
||||
* @since 2024/11/22
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@Transactional
|
||||
public class IpWhitelistServiceImpl implements IpWhitelistService {
|
||||
|
||||
private static final String global = "global";
|
||||
private static final String app = "app";
|
||||
|
||||
@Resource
|
||||
private IpWhitelisttMapper ipWhitelisttMapper;
|
||||
@Resource
|
||||
private SecurityUtil securityUtil;
|
||||
|
||||
|
||||
@Override
|
||||
public Page<IpWhitelistDTO.IpView> selectPageList(IpWhitelistDTO.Query query) {
|
||||
|
||||
LambdaQueryWrapper<IpWhitelist> wrapper = new LambdaQueryWrapper<IpWhitelist>()
|
||||
.eq(IpWhitelist::getScope, global)
|
||||
.eq(StringUtils.hasText(query.getIpAddress()), IpWhitelist::getIp, query.getIpAddress())
|
||||
|
||||
.orderByDesc(IpWhitelist::getCreateTime);
|
||||
if (Objects.nonNull(query.getStartDate())) {
|
||||
wrapper.gt(IpWhitelist::getCreateTime, LocalDateTime.of(query.getStartDate(), LocalTime.MIN));
|
||||
}
|
||||
if (Objects.nonNull(query.getEndDate())) {
|
||||
wrapper.lt(IpWhitelist::getCreateTime, LocalDateTime.of(query.getEndDate(), LocalTime.MAX));
|
||||
}
|
||||
if (Objects.nonNull(query.getStatus())) {
|
||||
wrapper.eq(IpWhitelist::getStatus, query.getStatus() == 0 ? EnableStatus.ENABLED.getCode() : EnableStatus.DISABLED.getCode());
|
||||
}
|
||||
IPage<IpWhitelist> page = ipWhitelisttMapper.selectPage(
|
||||
new Page<>(query.getPageNumber(), query.getPageSize()),
|
||||
wrapper
|
||||
);
|
||||
List<IpWhitelist> records = page.getRecords();
|
||||
if (CollectionUtils.isEmpty(records)) {
|
||||
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
|
||||
}
|
||||
List<IpWhitelistDTO.IpView> viewList = records.stream()
|
||||
.map(it -> {
|
||||
IpWhitelistDTO.IpView view = new IpWhitelistDTO.IpView();
|
||||
view.setId(it.getId());
|
||||
view.setIpAddress(it.getIp());
|
||||
view.setStatus(-EnableStatus.of(it.getStatus()).ordinal());
|
||||
view.setCreator(it.getCreator());
|
||||
view.setMemo(it.getRemark());
|
||||
view.setCreateTime(it.getCreateTime());
|
||||
return view;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return new Page<IpWhitelistDTO.IpView>(page.getCurrent(), page.getSize(), page.getTotal()).setRecords(viewList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long save(IpWhitelistDTO.IpSave save) {
|
||||
|
||||
Assert.notNull(save.getIpAddress(), "IP地址不能为空");
|
||||
IpWhitelist exist = ipWhitelisttMapper.selectOne(
|
||||
new LambdaQueryWrapper<IpWhitelist>().eq(IpWhitelist::getIp, save.getIpAddress())
|
||||
);
|
||||
Assert.isNull(exist, "此ip已经存在");
|
||||
|
||||
IpWhitelist whitelist = new IpWhitelist();
|
||||
whitelist.setId(IdWorker.getId());
|
||||
whitelist.setAppId(0L);
|
||||
whitelist.setIp(save.getIpAddress());
|
||||
whitelist.setScope(global);
|
||||
whitelist.setStatus(EnableStatus.ENABLED.getCode());
|
||||
whitelist.setCreator(securityUtil.getCurrUser().getRealname());
|
||||
whitelist.setCreateTime(LocalDateTime.now());
|
||||
whitelist.setRemark(save.getMemo());
|
||||
|
||||
ipWhitelisttMapper.insert(whitelist);
|
||||
|
||||
return whitelist.getId();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void update(IpWhitelistDTO.IpSave update) {
|
||||
|
||||
Assert.notNull(update.getId(), "id不能为空");
|
||||
|
||||
IpWhitelist exist = ipWhitelisttMapper.selectById(update.getId());
|
||||
Assert.notNull(exist, "要更新的数据不存在");
|
||||
|
||||
if (StringUtils.hasText(update.getIpAddress())
|
||||
&& !Objects.equals(update.getIpAddress(), exist.getIp())) {
|
||||
IpWhitelist check = ipWhitelisttMapper.selectOne(
|
||||
new LambdaQueryWrapper<IpWhitelist>().eq(IpWhitelist::getIp, update.getIpAddress())
|
||||
);
|
||||
Assert.isNull(check, "此ip已经存在");
|
||||
}
|
||||
IpWhitelist whitelist = new IpWhitelist();
|
||||
whitelist.setId(update.getId());
|
||||
whitelist.setIp(update.getIpAddress());
|
||||
whitelist.setStatus(update.getStatus() == 0 ? EnableStatus.ENABLED.getCode() : EnableStatus.DISABLED.getCode());
|
||||
whitelist.setUpdateTime(LocalDateTime.now());
|
||||
whitelist.setRemark(update.getMemo());
|
||||
|
||||
ipWhitelisttMapper.updateById(whitelist);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long[] ids) {
|
||||
for (Long id : ids) {
|
||||
ipWhitelisttMapper.deleteById(id);
|
||||
}
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ spring:
|
||||
# 数据源
|
||||
datasource:
|
||||
driverClassName: dm.jdbc.driver.DmDriver
|
||||
url: jdbc:dm://172.16.17.236:5236?schema=SSP&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
|
||||
url: jdbc:dm://172.16.17.236:5236?schema=SUNYARD_SSP&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
|
||||
username: SUNYARD
|
||||
# Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果)
|
||||
password: 123456
|
||||
|
@ -400,7 +400,7 @@ INSERT INTO SC_PERMISSION (ID, DESCRIPTION, NAME, PARENT_ID, P_TYPE, SORT_ORDER,
|
||||
INSERT INTO SC_PERMISSION (ID, DESCRIPTION, NAME, PARENT_ID, P_TYPE, SORT_ORDER, COMPONENT, PATH, TITLE, ICON, P_LEVEL, BUTTON_TYPE, P_STATUS, URL, NEED_VERIFY) VALUES (216, null, 'mainKeyManagement', 20, 0, 0, 'sys-configuration/keyManagement/index', '/mainKeyManagement', '主密钥管理', 'ios-key', 2, null, 0, null, 0);
|
||||
|
||||
|
||||
INSERT INTO SC_USER (USERNAME, PASSWORD, REALNAME, ORGANIZATION_ID, TEL, EMAIL, STATUS, UPDATE_TIME, POSITION_ID, SEX, AVATAR, PASS_UPDATE_TIME, U_PUBLICKEY) VALUES ('admin1', '$2a$10$9.9KrL/wEMPhxwFf/G3M7OFPnE/ICwWuyE1GRIT1XVXiH7Gksb8XC', '超级管理员', null, null, null, 0, CURRENT_TIMESTAMP(), null, null, null, CURRENT_TIMESTAMP(), '');
|
||||
INSERT INTO SC_USER (USERNAME, PASSWORD, REALNAME, ORGANIZATION_ID, TEL, EMAIL, STATUS, UPDATE_TIME, POSITION_ID, SEX, AVATAR, PASS_UPDATE_TIME, U_PUBLICKEY) VALUES ('admin', '$2a$10$9.9KrL/wEMPhxwFf/G3M7OFPnE/ICwWuyE1GRIT1XVXiH7Gksb8XC', '超级管理员', null, null, null, 0, CURRENT_TIMESTAMP(), null, null, null, CURRENT_TIMESTAMP(), '');
|
||||
|
||||
SET IDENTITY_INSERT SC_ROLE ON;
|
||||
INSERT INTO SC_ROLE (ID, NAME, DEFAULT_ROLE, DESCRIPTION, DATA_TYPE) VALUES (1, '超级管理员', null, null, null);
|
||||
@ -436,13 +436,10 @@ INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (186, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (187, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (30, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (20, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (216, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (24, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (5, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (32, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (25, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (29, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (28, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (78, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (207, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (208, 1);
|
||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (205, 1);
|
||||
@ -708,6 +705,7 @@ CREATE TABLE sp_ip_whitelist (
|
||||
ip VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'ip',
|
||||
scope VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'app | global',
|
||||
status VARCHAR(30) NOT NULL DEFAULT '' COMMENT '',
|
||||
creator VARCHAR(30) NOT NULL DEFAULT '' COMMENT '',
|
||||
remark VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
||||
|
Loading…
Reference in New Issue
Block a user