用户登录问题修改

This commit is contained in:
jiang 2024-11-06 20:57:00 +08:00
parent d2e68d6228
commit a39bc3dff2
7 changed files with 656 additions and 4 deletions

View File

@ -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<SysIpWhitelist> 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<SysIpWhitelist> list = sysIpWhitelistService.selectSysIpWhitelistList(sysIpWhitelist);
ExcelUtil<SysIpWhitelist> util = new ExcelUtil<SysIpWhitelist>(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);
}
}

View File

@ -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<String> pwdErrCnt = redisService.getKeysByPrefix(CacheConstants.REDIS_KEY);
List<Map<String,Object>> list = new ArrayList<>();
for (String key : pwdErrCnt) {
Map<String,Object> 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);
}
}

View File

@ -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();
}
}

View File

@ -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<SysIpWhitelist> 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<SysIpWhitelist> selectSysIpWhitelist();
}

View File

@ -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<SysIpWhitelist> 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();
}

View File

@ -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<SysIpWhitelist> 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<SysIpWhitelist> list = sysIpWhitelistMapper.selectSysIpWhitelist();
redisService.setCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST, list);
}
}

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.system.mapper.SysIpWhitelistMapper">
<resultMap type="com.bonus.system.domain.SysIpWhitelist" id="SysIpWhitelistResult">
<result property="id" column="id" />
<result property="ipAddress" column="ip_address" />
<result property="ipRangeStart" column="ip_range_start" />
<result property="ipRangeEnd" column="ip_range_end" />
<result property="accessStartTime" column="access_start_time" />
<result property="accessEndTime" column="access_end_time" />
<result property="createdAt" column="created_at" />
<result property="updatedAt" column="updated_at" />
<result property="status" column="status" />
</resultMap>
<sql id="selectSysIpWhitelistVo">
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
</sql>
<select id="selectSysIpWhitelistList" parameterType="com.bonus.system.domain.SysIpWhitelist" resultMap="SysIpWhitelistResult">
<include refid="selectSysIpWhitelistVo"/>
where 1=1
<if test="ipAddress != null and ipAddress != ''"> and (
ip_address = #{ipAddress}
or (INET_ATON(ip_range_start) &lt;= INET_ATON(#{ipAddress})
AND INET_ATON(#{ipAddress}) &lt;= INET_ATON(ip_range_end))
)
</if>
order by created_at desc
</select>
<select id="selectSysIpWhitelistById" parameterType="Long" resultMap="SysIpWhitelistResult">
<include refid="selectSysIpWhitelistVo"/>
where id = #{id}
</select>
<insert id="insertSysIpWhitelist" parameterType="com.bonus.system.domain.SysIpWhitelist" useGeneratedKeys="true" keyProperty="id">
insert into sys_ip_whitelist
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="ipAddress != null">ip_address,</if>
<if test="ipRangeStart != null">ip_range_start,</if>
<if test="ipRangeEnd != null">ip_range_end,</if>
<if test="accessStartTime != null">access_start_time,</if>
<if test="accessEndTime != null">access_end_time,</if>
<if test="createdAt != null">created_at,</if>
<if test="updatedAt != null">updated_at,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="ipAddress != null">#{ipAddress},</if>
<if test="ipRangeStart != null">#{ipRangeStart},</if>
<if test="ipRangeEnd != null">#{ipRangeEnd},</if>
<if test="accessStartTime != null">#{accessStartTime},</if>
<if test="accessEndTime != null">#{accessEndTime},</if>
<if test="createdAt != null">#{createdAt},</if>
<if test="updatedAt != null">#{updatedAt},</if>
</trim>
</insert>
<update id="updateSysIpWhitelist" parameterType="com.bonus.system.domain.SysIpWhitelist">
update sys_ip_whitelist
<trim prefix="SET" suffixOverrides=",">
<if test="ipAddress != null">ip_address = #{ipAddress},</if>
<if test="ipRangeStart != null">ip_range_start = #{ipRangeStart},</if>
<if test="ipRangeEnd != null">ip_range_end = #{ipRangeEnd},</if>
access_start_time = #{accessStartTime},
access_end_time = #{accessEndTime},
<if test="createdAt != null">created_at = #{createdAt},</if>
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSysIpWhitelistById" parameterType="Long">
delete from sys_ip_whitelist where id = #{id}
</delete>
<delete id="deleteSysIpWhitelistByIds" parameterType="String">
delete from sys_ip_whitelist where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<update id="updateSysIpWhitelistStatus" parameterType="com.bonus.system.domain.SysIpWhitelist">
update sys_ip_whitelist
set status =#{status}
where id = #{id}
</update>
<select id="selectSysIpWhitelist" resultMap="SysIpWhitelistResult">
<include refid="selectSysIpWhitelistVo"/>
where status='0'
order by created_at desc
</select>
</mapper>