This commit is contained in:
dute7liang
2024-01-28 17:03:22 +08:00
parent 76cfa50e5e
commit d8b3c52bd9
6 changed files with 67 additions and 6 deletions

View File

@@ -1,12 +1,18 @@
package com.ruoyi.cai.controller.admin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.net.Ipv4Util;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.UserForbid;
import com.ruoyi.cai.dto.admin.UserForbidDTO;
import com.ruoyi.cai.dto.admin.query.forbid.UserForbidIpReq;
import com.ruoyi.cai.dto.admin.vo.UserForbidAdminVo;
import com.ruoyi.cai.enums.ForbidTimeEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum;
import com.ruoyi.cai.manager.UserForbidManager;
import com.ruoyi.cai.service.UserForbidService;
import com.ruoyi.cai.util.IpAddressUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
@@ -16,6 +22,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -63,6 +70,28 @@ public class UserForbidController extends BaseController {
return R.ok(userForbidService.getById(id));
}
@Log(title = "封禁IP", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@SaCheckPermission("cai:userForbid:forbidIp")
@PostMapping("/forbid/ip")
public R<Void> forbid(@RequestBody UserForbidIpReq ip) {
boolean isIP = IpAddressUtil.isIp(ip.getIp());
if(!isIP){
return R.fail("请输入正常的IP地址");
}
boolean innerIP = Ipv4Util.isInnerIP(ip.getIp());
if(innerIP){
return R.fail("不允许封禁内网IP地址");
}
UserForbidDTO dto = new UserForbidDTO();
dto.setForbidTime(ip.getForbidTime());
dto.setForbidType(ForbidTypeEnum.IP.getCode());
dto.setMember(ip.getIp());
dto.setRemark(ip.getRemark());
userForbidManager.forbid(dto);
return R.ok();
}
@Log(title = "解封", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@SaCheckPermission("cai:userForbid:unForbid")

View File

@@ -0,0 +1,10 @@
package com.ruoyi.cai.dto.admin.query.forbid;
import lombok.Data;
@Data
public class UserForbidIpReq {
private String ip;
private Integer forbidTime;
private String remark;
}

View File

@@ -57,12 +57,14 @@ public class UserForbidManager {
// 封设备
}else if(integer == 3){ // 封IP
UserInfo userInfo = userInfoService.getByUserId(user.getId());
UserForbidDTO dto = new UserForbidDTO();
dto.setForbidTime(userForbidReq.getForbidTime());
dto.setForbidType(ForbidTypeEnum.IP.getCode());
dto.setMember(userInfo.getLastLoginIp());
dto.setRemark(userForbidReq.getReason());
this.forbid(dto);
if(userInfo != null && StringUtils.isNotEmpty(userInfo.getLastLoginIp())){
UserForbidDTO dto = new UserForbidDTO();
dto.setForbidTime(userForbidReq.getForbidTime());
dto.setForbidType(ForbidTypeEnum.IP.getCode());
dto.setMember(userInfo.getLastLoginIp());
dto.setRemark(userForbidReq.getReason());
this.forbid(dto);
}
}
}
}

View File

@@ -6,6 +6,7 @@ import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserForbid;
import com.ruoyi.cai.domain.UserForbidLog;
import com.ruoyi.cai.dto.admin.query.UserForbidReq;
import com.ruoyi.cai.dto.admin.query.forbid.UserForbidIpReq;
import com.ruoyi.cai.dto.admin.vo.UserForbidAdminVo;
import com.ruoyi.common.core.domain.PageQuery;

View File

@@ -8,6 +8,8 @@ import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserForbid;
import com.ruoyi.cai.domain.UserForbidLog;
import com.ruoyi.cai.dto.admin.UserForbidDTO;
import com.ruoyi.cai.dto.admin.query.forbid.UserForbidIpReq;
import com.ruoyi.cai.dto.admin.vo.UserForbidAdminVo;
import com.ruoyi.cai.enums.ForbidTimeEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum;
@@ -19,6 +21,7 @@ import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.UserForbidService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -97,6 +100,8 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
private LocalDateTime getEndTime(LocalDateTime beginTime, ForbidTimeEnum time){
switch (time){
case DAY_1:

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.util;
import cn.hutool.core.util.ReUtil;
public class IpAddressUtil {
public static boolean isIp(String ip){
if(ip == null || ip.length() < 7 || ip.length() > 15){
return false;
}
return ReUtil.isMatch("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}",ip);
}
}