diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysIpWhitelistController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysIpWhitelistController.java new file mode 100644 index 0000000..be31b96 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysIpWhitelistController.java @@ -0,0 +1,117 @@ +package com.bonus.system.controller; + +import com.bonus.common.core.utils.poi.ExcelUtil; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.annotation.RequiresPermissions; +import com.bonus.system.domain.SysIpWhitelist; +import com.bonus.system.service.ISysIpWhitelistService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * 白名单管理Controller + * + * @author bonus + * @date 2024-11-06 + */ +@RestController +@RequestMapping("/whitelist") +public class SysIpWhitelistController extends BaseController +{ + @Autowired + private ISysIpWhitelistService sysIpWhitelistService; + + /** + * 查询白名单管理列表 + */ + @RequiresPermissions("system:whitelist:list") + @GetMapping("/list") + public TableDataInfo list(SysIpWhitelist sysIpWhitelist) + { + try { + startPage(); + List list = sysIpWhitelistService.selectSysIpWhitelistList(sysIpWhitelist); + return getDataTable(list); + }catch (Exception e){ + return getDataTable(new ArrayList<>()); + } + + } + + /** + * 导出白名单管理列表 + */ + @RequiresPermissions("system:whitelist:export") + @PostMapping("/export") + @SysLog(title = "白名单管理", businessType = OperaType.EXPORT,logType = 0,module = "白名单管理",details = "导出白名单管理列表") + public void export(HttpServletResponse response, SysIpWhitelist sysIpWhitelist) + { + List list = sysIpWhitelistService.selectSysIpWhitelistList(sysIpWhitelist); + ExcelUtil util = new ExcelUtil(SysIpWhitelist.class); + util.exportExcel(response, list, "白名单管理数据"); + } + + /** + * 获取白名单管理详细信息 + */ + @RequiresPermissions("system:whitelist:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return sysIpWhitelistService.selectSysIpWhitelistById(id); + } + + /** + * 新增白名单管理 + */ + @RequiresPermissions("system:whitelist:add") + @PostMapping("/add") + @SysLog(title = "白名单管理", businessType = OperaType.INSERT,logType = 0,module = "白名单管理",details = "导出白名单管理列表") + public AjaxResult add(@RequestBody SysIpWhitelist sysIpWhitelist) + { + return sysIpWhitelistService.insertSysIpWhitelist(sysIpWhitelist); + } + + /** + * 修改白名单管理 + */ + @RequiresPermissions("system:whitelist:edit") + @PostMapping("/edit") + @SysLog(title = "白名单管理", businessType = OperaType.UPDATE,logType = 0,module = "白名单管理",details = "导出白名单管理列表") + public AjaxResult edit(@RequestBody SysIpWhitelist sysIpWhitelist) + { + return sysIpWhitelistService.updateSysIpWhitelist(sysIpWhitelist); + } + + /** + * 删除白名单管理 + */ + @RequiresPermissions("system:whitelist:remove") + @PostMapping("/{ids}") + @SysLog(title = "白名单管理", businessType = OperaType.DELETE,logType = 0,module = "白名单管理",details = "导出白名单管理列表") + public AjaxResult remove(@PathVariable Long[] ids) + { + return sysIpWhitelistService.deleteSysIpWhitelistByIds(ids); + } + + /** + * 删除白名单管理 + */ + @PostMapping("/updateSysIpWhitelistStatus") + @SysLog(title = "白名单管理", businessType = OperaType.DELETE,logType = 0,module = "白名单管理",details = "导出白名单管理列表") + public AjaxResult updateSysIpWhitelistStatus(@RequestBody SysIpWhitelist sysIpWhitelist) + { + return sysIpWhitelistService.updateSysIpWhitelistStatus(sysIpWhitelist); + } + + + +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java index 2c1e402..ae2e433 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java @@ -1,5 +1,6 @@ package com.bonus.system.controller; +import com.bonus.common.core.constant.CacheConstants; import com.bonus.common.core.domain.R; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.poi.ExcelUtil; @@ -8,7 +9,11 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; -import com.bonus.common.security.annotation.*; +import com.bonus.common.redis.service.RedisService; +import com.bonus.common.security.annotation.InnerAuth; +import com.bonus.common.security.annotation.PreventRepeatSubmit; +import com.bonus.common.security.annotation.RequiresPermissions; +import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.SysDept; import com.bonus.system.api.domain.SysRole; @@ -25,9 +30,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -59,6 +62,9 @@ public class SysUserController extends BaseController { @Resource private PasswordValidatorService passwordValidatorService; + @Resource + private RedisService redisService; + /** * 获取用户列表 @@ -508,4 +514,20 @@ public class SysUserController extends BaseController { return AjaxResult.success(false); } + + @GetMapping("/getLockUser") + public AjaxResult getLockUser() { + Set pwdErrCnt = redisService.getKeysByPrefix(CacheConstants.REDIS_KEY); + List> list = new ArrayList<>(); + for (String key : pwdErrCnt) { + Map map = new HashMap<>(); + map.put("userName", key.split(":")[1]); + long time = redisService.getExpire(key); + map.put("time", time+1); + list.add(map); + } + // 3. 如果都不需要操作,返回成功 + return AjaxResult.success(list); + } + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysIpWhitelist.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysIpWhitelist.java new file mode 100644 index 0000000..7d0d794 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/domain/SysIpWhitelist.java @@ -0,0 +1,148 @@ +package com.bonus.system.domain; + +import com.bonus.common.core.annotation.Excel; +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 【请填写功能名称】对象 sys_ip_whitelist + * + * @author bonus + * @date 2024-11-06 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysIpWhitelist extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 单个IP地址 */ + @Excel(name = "单个IP地址") + private String ipAddress; + + /** IP网段起始地址 */ + @Excel(name = "IP网段起始地址") + private String ipRangeStart; + + /** IP网段结束地址 */ + @Excel(name = "IP网段结束地址") + private String ipRangeEnd; + + /** 允许访问的开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "允许访问的开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date accessStartTime; + + /** 允许访问的结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "允许访问的结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date accessEndTime; + + /** 记录创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date createdAt; + + /** 记录更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "记录更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date updatedAt; + + private String status; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setIpAddress(String ipAddress) + { + this.ipAddress = ipAddress; + } + + public String getIpAddress() + { + return ipAddress; + } + public void setIpRangeStart(String ipRangeStart) + { + this.ipRangeStart = ipRangeStart; + } + + public String getIpRangeStart() + { + return ipRangeStart; + } + public void setIpRangeEnd(String ipRangeEnd) + { + this.ipRangeEnd = ipRangeEnd; + } + + public String getIpRangeEnd() + { + return ipRangeEnd; + } + public void setAccessStartTime(Date accessStartTime) + { + this.accessStartTime = accessStartTime; + } + + public Date getAccessStartTime() + { + return accessStartTime; + } + public void setAccessEndTime(Date accessEndTime) + { + this.accessEndTime = accessEndTime; + } + + public Date getAccessEndTime() + { + return accessEndTime; + } + public void setCreatedAt(Date createdAt) + { + this.createdAt = createdAt; + } + + public Date getCreatedAt() + { + return createdAt; + } + public void setUpdatedAt(Date updatedAt) + { + this.updatedAt = updatedAt; + } + + public Date getUpdatedAt() + { + return updatedAt; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("ipAddress", getIpAddress()) + .append("ipRangeStart", getIpRangeStart()) + .append("ipRangeEnd", getIpRangeEnd()) + .append("accessStartTime", getAccessStartTime()) + .append("accessEndTime", getAccessEndTime()) + .append("createdAt", getCreatedAt()) + .append("updatedAt", getUpdatedAt()) + .toString(); + } +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysIpWhitelistMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysIpWhitelistMapper.java new file mode 100644 index 0000000..12de051 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysIpWhitelistMapper.java @@ -0,0 +1,66 @@ +package com.bonus.system.mapper; + +import com.bonus.system.domain.SysIpWhitelist; + +import java.util.List; + +/** + * 白名单管理Mapper接口 + * + * @author bonus + * @date 2024-11-06 + */ +public interface SysIpWhitelistMapper +{ + /** + * 查询白名单管理 + * + * @param id 白名单管理主键 + * @return 白名单管理 + */ + public SysIpWhitelist selectSysIpWhitelistById(Long id); + + /** + * 查询白名单管理列表 + * + * @param sysIpWhitelist 白名单管理 + * @return 白名单管理集合 + */ + public List selectSysIpWhitelistList(SysIpWhitelist sysIpWhitelist); + + /** + * 新增白名单管理 + * + * @param sysIpWhitelist 白名单管理 + * @return 结果 + */ + public int insertSysIpWhitelist(SysIpWhitelist sysIpWhitelist); + + /** + * 修改白名单管理 + * + * @param sysIpWhitelist 白名单管理 + * @return 结果 + */ + public int updateSysIpWhitelist(SysIpWhitelist sysIpWhitelist); + + /** + * 删除白名单管理 + * + * @param id 白名单管理主键 + * @return 结果 + */ + public int deleteSysIpWhitelistById(Long id); + + /** + * 批量删除白名单管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSysIpWhitelistByIds(Long[] ids); + + public int updateSysIpWhitelistStatus(SysIpWhitelist sysIpWhitelist); + + public List selectSysIpWhitelist(); +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysIpWhitelistService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysIpWhitelistService.java new file mode 100644 index 0000000..5c79680 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysIpWhitelistService.java @@ -0,0 +1,60 @@ +package com.bonus.system.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.system.domain.SysIpWhitelist; + +import java.util.List; + +/** + * 白名单管理Service接口 + * + * @author bonus + * @date 2024-11-06 + */ +public interface ISysIpWhitelistService +{ + /** + * 查询白名单管理 + * + * @param id 白名单管理主键 + * @return 白名单管理 + */ + public AjaxResult selectSysIpWhitelistById(Long id); + + /** + * 查询白名单管理列表 + * + * @param sysIpWhitelist 白名单管理 + * @return 白名单管理集合 + */ + public List selectSysIpWhitelistList(SysIpWhitelist sysIpWhitelist); + + /** + * 新增白名单管理 + * + * @param sysIpWhitelist 白名单管理 + * @return 结果 + */ + public AjaxResult insertSysIpWhitelist(SysIpWhitelist sysIpWhitelist); + + /** + * 修改白名单管理 + * + * @param sysIpWhitelist 白名单管理 + * @return 结果 + */ + public AjaxResult updateSysIpWhitelist(SysIpWhitelist sysIpWhitelist); + + /** + * 批量删除白名单管理 + * + * @param ids 需要删除的白名单管理主键集合 + * @return 结果 + */ + public AjaxResult deleteSysIpWhitelistByIds(Long[] ids); + + + public AjaxResult updateSysIpWhitelistStatus(SysIpWhitelist sysIpWhitelist); + + public void selectSysIpWhitelist(); +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysIpWhitelistServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysIpWhitelistServiceImpl.java new file mode 100644 index 0000000..e9acf8c --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysIpWhitelistServiceImpl.java @@ -0,0 +1,139 @@ +package com.bonus.system.service.impl; + +import com.bonus.common.core.constant.CacheConstants; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.redis.service.RedisService; +import com.bonus.system.domain.SysIpWhitelist; +import com.bonus.system.mapper.SysIpWhitelistMapper; +import com.bonus.system.service.ISysIpWhitelistService; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; + +/** + * 白名单管理Service业务层处理 + * + * @author bonus + * @date 2024-11-06 + */ +@Service +public class SysIpWhitelistServiceImpl implements ISysIpWhitelistService { + @Resource + private SysIpWhitelistMapper sysIpWhitelistMapper; + + @Resource + private RedisService redisService; + + @PostConstruct + public void init() { + selectSysIpWhitelist(); + } + + /** + * 查询白名单管理 + * + * @param id 白名单管理主键 + * @return 白名单管理 + */ + @Override + public AjaxResult selectSysIpWhitelistById(Long id) { + try { + SysIpWhitelist sysIpWhitelist = sysIpWhitelistMapper.selectSysIpWhitelistById(id); + if (ObjectUtils.isEmpty(sysIpWhitelist)) { + return AjaxResult.error(); + } else { + return AjaxResult.success(sysIpWhitelist); + } + } catch (Exception e) { + return AjaxResult.error(); + } + } + + /** + * 查询白名单管理列表 + * + * @param sysIpWhitelist 白名单管理 + * @return 白名单管理 + */ + @Override + public List selectSysIpWhitelistList(SysIpWhitelist sysIpWhitelist) { + selectSysIpWhitelist(); + return sysIpWhitelistMapper.selectSysIpWhitelistList(sysIpWhitelist); + } + + /** + * 新增白名单管理 + * + * @param sysIpWhitelist 白名单管理 + * @return 结果 + */ + @Override + public AjaxResult insertSysIpWhitelist(SysIpWhitelist sysIpWhitelist) { + try { + int rows = sysIpWhitelistMapper.insertSysIpWhitelist(sysIpWhitelist); + return rows > 0 ? AjaxResult.success() : AjaxResult.error(); + } catch (Exception e) { + return AjaxResult.error(); + } + } + + /** + * 修改白名单管理 + * + * @param sysIpWhitelist 白名单管理 + * @return 结果 + */ + @Override + public AjaxResult updateSysIpWhitelist(SysIpWhitelist sysIpWhitelist) { + try { + int rows = sysIpWhitelistMapper.updateSysIpWhitelist(sysIpWhitelist); + return rows > 0 ? AjaxResult.success() : AjaxResult.error(); + } catch (Exception e) { + return AjaxResult.error(); + } + } + + /** + * 批量删除白名单管理 + * + * @param ids 需要删除的白名单管理主键 + * @return 结果 + */ + @Override + public AjaxResult deleteSysIpWhitelistByIds(Long[] ids) { + try { + + int rows = sysIpWhitelistMapper.deleteSysIpWhitelistByIds(ids); + return rows > 0 ? AjaxResult.success() : AjaxResult.error(); + } catch (Exception e) { + return AjaxResult.error(); + } + } + + /** + * @param sysIpWhitelist + * @return + */ + @Override + public AjaxResult updateSysIpWhitelistStatus(SysIpWhitelist sysIpWhitelist) { + try { + int i = sysIpWhitelistMapper.updateSysIpWhitelistStatus(sysIpWhitelist); + return i > 0 ? AjaxResult.success() : AjaxResult.error(); + + } catch (Exception e) { + return AjaxResult.error(); + } + } + + /** + * @return + */ + @Override + public void selectSysIpWhitelist() { + List list = sysIpWhitelistMapper.selectSysIpWhitelist(); + redisService.setCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST, list); + } +} diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml new file mode 100644 index 0000000..23df916 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + select id, ip_address, ip_range_start, ip_range_end,status, access_start_time, access_end_time, created_at, updated_at from sys_ip_whitelist + + + + + + + + insert into sys_ip_whitelist + + ip_address, + ip_range_start, + ip_range_end, + access_start_time, + access_end_time, + created_at, + updated_at, + + + #{ipAddress}, + #{ipRangeStart}, + #{ipRangeEnd}, + #{accessStartTime}, + #{accessEndTime}, + #{createdAt}, + #{updatedAt}, + + + + + update sys_ip_whitelist + + ip_address = #{ipAddress}, + ip_range_start = #{ipRangeStart}, + ip_range_end = #{ipRangeEnd}, + access_start_time = #{accessStartTime}, + access_end_time = #{accessEndTime}, + created_at = #{createdAt}, + updated_at = #{updatedAt}, + + where id = #{id} + + + + delete from sys_ip_whitelist where id = #{id} + + + + delete from sys_ip_whitelist where id in + + #{id} + + + + + + update sys_ip_whitelist + set status =#{status} + where id = #{id} + + + + \ No newline at end of file