This commit is contained in:
张良(004796)
2024-02-01 16:45:34 +08:00
parent bc30fe24a4
commit d4908f9db8
3 changed files with 49 additions and 14 deletions

View File

@@ -96,7 +96,7 @@ public class UserForbidController extends BaseController {
@SaCheckPermission("cai:userForbid:unForbid") @SaCheckPermission("cai:userForbid:unForbid")
@GetMapping("/un/forbid") @GetMapping("/un/forbid")
public R<Void> unForbid(Long id) { public R<Void> unForbid(Long id) {
userForbidManager.unForbidByForbidId(id); userForbidManager.unForbidByForbidId(id, null);
return R.ok(); return R.ok();
} }
} }

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.manager; package com.ruoyi.cai.manager;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -52,15 +53,28 @@ public class UserForbidManager {
if(forbidTimeEnum == null){ if(forbidTimeEnum == null){
throw new ServiceException("封禁天数错误"); throw new ServiceException("封禁天数错误");
} }
if(forbidTimeEnum == ForbidTimeEnum.UNFORBID){
UserForbidManager userForbidManager = SpringUtil.getBean(UserForbidManager.class);
for (Integer integer : type) { for (Integer integer : type) {
if(ForbidTypeEnum.USER.getCode().equals(integer)){ // 封用户 if(ForbidTypeEnum.USER.getCode().equals(integer)){
userForbidManager.unForbidByTypeAndMember(integer,user.getUsercode(),userForbidReq.getReason());
}else if(ForbidTypeEnum.IMEI.getCode().equals(integer)){
userForbidManager.unForbidByTypeAndMember(integer,user.getUsercode(),userForbidReq.getReason());
}else if(ForbidTypeEnum.IP.getCode().equals(integer)){
userForbidManager.unForbidByTypeAndMember(integer,user.getUsercode(),userForbidReq.getReason());
}
}
return;
}
for (Integer integer : type) {
if(ForbidTypeEnum.USER.getCode().equals(integer)){
UserForbidDTO dto = new UserForbidDTO(); UserForbidDTO dto = new UserForbidDTO();
dto.setForbidTime(userForbidReq.getForbidTime()); dto.setForbidTime(userForbidReq.getForbidTime());
dto.setForbidType(ForbidTypeEnum.USER.getCode()); dto.setForbidType(ForbidTypeEnum.USER.getCode());
dto.setMember(user.getUsercode()); dto.setMember(user.getUsercode());
dto.setRemark(userForbidReq.getReason()); dto.setRemark(userForbidReq.getReason());
this.forbid(dto); this.forbid(dto);
}else if(ForbidTypeEnum.IMEI.getCode().equals(integer)){ // 封设备 }else if(ForbidTypeEnum.IMEI.getCode().equals(integer)){
UserInfo userInfo = userInfoService.getByUserId(user.getId()); UserInfo userInfo = userInfoService.getByUserId(user.getId());
if(userInfo != null && StringUtils.isNotEmpty(userInfo.getImei())){ if(userInfo != null && StringUtils.isNotEmpty(userInfo.getImei())){
UserForbidDTO dto = new UserForbidDTO(); UserForbidDTO dto = new UserForbidDTO();
@@ -70,7 +84,7 @@ public class UserForbidManager {
dto.setRemark(userForbidReq.getReason()); dto.setRemark(userForbidReq.getReason());
this.forbid(dto); this.forbid(dto);
} }
}else if(ForbidTypeEnum.IP.getCode().equals(integer)){ // 封IP }else if(ForbidTypeEnum.IP.getCode().equals(integer)){
UserInfo userInfo = userInfoService.getByUserId(user.getId()); UserInfo userInfo = userInfoService.getByUserId(user.getId());
if(userInfo != null && StringUtils.isNotEmpty(userInfo.getLastLoginIp())){ if(userInfo != null && StringUtils.isNotEmpty(userInfo.getLastLoginIp())){
UserForbidDTO dto = new UserForbidDTO(); UserForbidDTO dto = new UserForbidDTO();
@@ -164,21 +178,41 @@ public class UserForbidManager {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void unForbidByForbidId(Long id) { public void unForbidByTypeAndMember(Integer type,String member,String remark) {
UserForbid userForbid = userForbidService.getById(id); UserForbid userForbid = userForbidService.getOne(Wrappers.lambdaQuery(UserForbid.class)
.eq(UserForbid::getType,type)
.eq(UserForbid::getMember,member)
.last("limit 1"));
if(ForbidStatusEnum.NORMAL.getCode().equals(userForbid.getForbidStatus())
|| userForbid.getEndTime().isBefore(LocalDateTime.now())){ // 无封号
log.info("无封号,无需操作! type={},member={}", type,member);
}else{
userForbidService.update(Wrappers.lambdaUpdate(UserForbid.class) userForbidService.update(Wrappers.lambdaUpdate(UserForbid.class)
.eq(UserForbid::getId,userForbid.getId()) .eq(UserForbid::getId,userForbid.getId())
.set(UserForbid::getForbidStatus, ForbidStatusEnum.NORMAL.getCode())); .set(UserForbid::getForbidStatus, ForbidStatusEnum.NORMAL.getCode())
.set(StringUtils.isNotBlank(remark), UserForbid::getReason, remark));
}
if(ForbidTypeEnum.USER.getCode().equals(userForbid.getType())){ if(ForbidTypeEnum.USER.getCode().equals(userForbid.getType())){
User user = userService.getByUserCode(userForbid.getMember()); User user = userService.getByUserCode(userForbid.getMember());
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,0)); userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,0));
anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId,user.getId()).set(Anchor::getStatus,0)); anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId,user.getId()).set(Anchor::getStatus,0));
} }
this.unForbid(userForbid.getType(),userForbid.getMember()); forbidCache.unForbid(userForbid.getType(),userForbid.getMember());
} }
public void unForbid(Integer type,String member){ @Transactional(rollbackFor = Exception.class)
forbidCache.unForbid(type,member); public void unForbidByForbidId(Long id,String remark) {
UserForbid userForbid = userForbidService.getById(id);
userForbidService.update(Wrappers.lambdaUpdate(UserForbid.class)
.eq(UserForbid::getId,userForbid.getId())
.set(UserForbid::getForbidStatus, ForbidStatusEnum.NORMAL.getCode())
.set(StringUtils.isNotBlank(remark), UserForbid::getReason, remark));
if(ForbidTypeEnum.USER.getCode().equals(userForbid.getType())){
User user = userService.getByUserCode(userForbid.getMember());
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,0));
anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId,user.getId()).set(Anchor::getStatus,0));
}
forbidCache.unForbid(userForbid.getType(),userForbid.getMember());
} }
public void checkAll(){ public void checkAll(){
@@ -234,7 +268,8 @@ public class UserForbidManager {
if(userForbid.getEndTime().isAfter(LocalDateTime.now())){ if(userForbid.getEndTime().isAfter(LocalDateTime.now())){
return; return;
} }
this.unForbidByForbidId(id); UserForbidManager userForbidManager = SpringUtil.getBean(UserForbidManager.class);
userForbidManager.unForbidByForbidId(id,null);
} }
@Data @Data

View File

@@ -71,7 +71,7 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
} else if(ForbidStatusEnum.NORMAL.getCode().equals(one.getForbidStatus())){ // 已解封 } else if(ForbidStatusEnum.NORMAL.getCode().equals(one.getForbidStatus())){ // 已解封
one.setBeginTime(LocalDateTime.now()); one.setBeginTime(LocalDateTime.now());
one.setEndTime(getEndTime(one.getBeginTime(), forbidTime)); one.setEndTime(getEndTime(one.getBeginTime(), forbidTime));
} else if(ForbidStatusEnum.FORBID.getCode().equals(one.getForbidStatus()) && one.getEndTime().isAfter(LocalDateTime.now())){ // 已解封到期 } else if(ForbidStatusEnum.FORBID.getCode().equals(one.getForbidStatus()) && one.getEndTime().isBefore(LocalDateTime.now())){ // 已解封到期
one.setBeginTime(LocalDateTime.now()); one.setBeginTime(LocalDateTime.now());
one.setEndTime(getEndTime(one.getBeginTime(), forbidTime)); one.setEndTime(getEndTime(one.getBeginTime(), forbidTime));
} else { } else {