This commit is contained in:
张良(004796)
2024-01-22 12:43:40 +08:00
parent 827c12b2ca
commit 351642d1d4
17 changed files with 469 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.LowHeightRisk;
import com.ruoyi.cai.domain.UserErrorLog;
import com.ruoyi.cai.dto.admin.vo.LowHeightRiskAdminVo;
import com.ruoyi.common.core.domain.PageQuery;
@@ -15,4 +16,6 @@ import com.ruoyi.common.core.domain.PageQuery;
public interface LowHeightRiskService extends IService<LowHeightRisk> {
Page<LowHeightRiskAdminVo> pageAdmin(PageQuery pageQuery, LowHeightRiskAdminVo bo);
void incsNum(UserErrorLog log);
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.UserErrorLog;
import com.ruoyi.cai.dto.admin.vo.UserErrorLogAdminVo;
import com.ruoyi.cai.dto.app.query.push.PushErrorReq;
import com.ruoyi.common.core.domain.PageQuery;
/**
* 用户异常记录Service接口
*
* @author 77
* @date 2024-01-22
*/
public interface UserErrorLogService extends IService<UserErrorLog> {
void pushError(PushErrorReq req);
Page<UserErrorLogAdminVo> pageAdmin(PageQuery pageQuery, UserErrorLogAdminVo bo);
}

View File

@@ -1,14 +1,19 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.LowHeightRisk;
import com.ruoyi.cai.domain.UserErrorLog;
import com.ruoyi.cai.dto.admin.vo.LowHeightRiskAdminVo;
import com.ruoyi.cai.enums.user.UserErrorLogType;
import com.ruoyi.cai.mapper.LowHeightRiskMapper;
import com.ruoyi.cai.service.LowHeightRiskService;
import com.ruoyi.common.core.domain.PageQuery;
import org.springframework.stereotype.Service;
import java.util.concurrent.locks.ReentrantLock;
/**
* 高风险用户记录Service业务层处理
*
@@ -22,4 +27,33 @@ public class LowHeightRiskServiceImpl extends ServiceImpl<LowHeightRiskMapper, L
public Page<LowHeightRiskAdminVo> pageAdmin(PageQuery pageQuery, LowHeightRiskAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
@Override
public void incsNum(UserErrorLog log){
if(log == null || log.getUserId() == null){
return;
}
LowHeightRisk one = this.getOne(Wrappers.lambdaQuery(LowHeightRisk.class)
.eq(LowHeightRisk::getUserId, log.getUserId()));
if(one == null){
ReentrantLock lock = new ReentrantLock();
try {
lock.lock();
one = this.getOne(Wrappers.lambdaQuery(LowHeightRisk.class)
.eq(LowHeightRisk::getUserId, log.getUserId()));
if(one == null){
one = new LowHeightRisk();
one.setUserId(log.getUserId());
}
this.save(one);
}finally {
lock.unlock();
}
}
if(UserErrorLogType.SCREEN_SHOT.getCode().equals(log.getType())){
baseMapper.incsScreenShot(one.getId());
}else if(UserErrorLogType.SCREEN_RECORDING.getCode().equals(log.getType())){
baseMapper.incsScreenRecording(one.getId());
}
}
}

View File

@@ -0,0 +1,77 @@
package com.ruoyi.cai.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.UserErrorLog;
import com.ruoyi.cai.dto.admin.UserForbidDTO;
import com.ruoyi.cai.dto.admin.vo.UserErrorLogAdminVo;
import com.ruoyi.cai.dto.app.query.push.PushErrorReq;
import com.ruoyi.cai.enums.ForbidTimeEnum;
import com.ruoyi.cai.enums.ForbidTypeEnum;
import com.ruoyi.cai.enums.user.UserErrorLogHomeIndexEnum;
import com.ruoyi.cai.enums.user.UserErrorLogType;
import com.ruoyi.cai.manager.UserForbidManager;
import com.ruoyi.cai.mapper.UserErrorLogMapper;
import com.ruoyi.cai.service.LowHeightRiskService;
import com.ruoyi.cai.service.UserErrorLogService;
import com.ruoyi.common.core.domain.PageQuery;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 用户异常记录Service业务层处理
*
* @author 77
* @date 2024-01-22
*/
@Service
@Slf4j
public class UserErrorLogServiceImpl extends ServiceImpl<UserErrorLogMapper,UserErrorLog> implements UserErrorLogService {
@Autowired
private LowHeightRiskService lowHeightRiskService;
@Autowired
private UserForbidManager userForbidManager;
@Override
@Transactional(rollbackFor = Exception.class)
public void pushError(PushErrorReq req) {
UserErrorLogType logType = UserErrorLogType.getByCode(req.getType());
if(logType == null){
log.error("记录高危风险失败,参数异常! req={}", JSON.toJSONString(req));
return;
}
if(req.getHomeIndex() == null){
req.setHomeIndex(UserErrorLogHomeIndexEnum.OTHER.getCode());
}
UserErrorLog log = new UserErrorLog();
log.setType(req.getType());
log.setUserId(req.getUserId());
log.setHomeIndex(req.getHomeIndex());
this.save(log);
lowHeightRiskService.incsNum(log);
// 记录风险
if(UserErrorLogHomeIndexEnum.VIDEO.getCode().equals(log.getHomeIndex())){ // 直播的直接封号
String remark = String.format("于%s 直播期间%s封10年",
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")),
logType.getName());
UserForbidDTO dto = new UserForbidDTO();
dto.setForbidTime(ForbidTimeEnum.YEAR_10.getCode());
dto.setForbidType(ForbidTypeEnum.USER.getCode());
dto.setMember(req.getUserId()+"");
dto.setRemark(remark);
userForbidManager.forbid(dto);
}
}
@Override
public Page<UserErrorLogAdminVo> pageAdmin(PageQuery pageQuery, UserErrorLogAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
}