白名单
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:
|
datasource:
|
||||||
driverClassName: dm.jdbc.driver.DmDriver
|
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
|
username: SUNYARD
|
||||||
# Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果)
|
# Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果)
|
||||||
password: 123456
|
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_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;
|
SET IDENTITY_INSERT SC_ROLE ON;
|
||||||
INSERT INTO SC_ROLE (ID, NAME, DEFAULT_ROLE, DESCRIPTION, DATA_TYPE) VALUES (1, '超级管理员', null, null, null);
|
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 (187, 1);
|
||||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (30, 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 (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 (24, 1);
|
||||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (5, 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 (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 (207, 1);
|
||||||
INSERT INTO SC_ROLE_PERMISSION (PERMISSION_ID, ROLE_ID) VALUES (208, 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);
|
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',
|
ip VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'ip',
|
||||||
scope VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'app | global',
|
scope VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'app | global',
|
||||||
status VARCHAR(30) NOT NULL DEFAULT '' COMMENT '',
|
status VARCHAR(30) NOT NULL DEFAULT '' COMMENT '',
|
||||||
|
creator VARCHAR(30) NOT NULL DEFAULT '' COMMENT '',
|
||||||
remark VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
|
remark VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
|
||||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
||||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
Loading…
Reference in New Issue
Block a user