From 42486f473990d3535837b705a6ce2771e488f534 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Fri, 10 May 2024 14:30:34 +0800 Subject: [PATCH] 123 --- .../src/main/java/com/ruoyi/op/BusOp.java | 63 +++++++- .../cai/admin/op/BusOpController.java | 17 ++ .../java/com/ruoyi/test/business/BusTest.java | 25 +++ .../ruoyi/system/domain/SysOperLogCopy.java | 146 ++++++++++++++++++ .../system/mapper/SysOperLogCopyMapper.java | 13 ++ 5 files changed, 257 insertions(+), 7 deletions(-) create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/business/BusTest.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLogCopy.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogCopyMapper.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/op/BusOp.java b/ruoyi-admin/src/main/java/com/ruoyi/op/BusOp.java index b9d833e4..a1ebfafc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/op/BusOp.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/op/BusOp.java @@ -2,22 +2,28 @@ package com.ruoyi.op; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.cai.domain.RechargeOrder; -import com.ruoyi.cai.domain.User; -import com.ruoyi.cai.domain.VipOrder; +import com.ruoyi.cai.domain.*; import com.ruoyi.cai.pay.PayManager; import com.ruoyi.cai.pay.PayStatusEnum; -import com.ruoyi.cai.service.RechargeOrderService; -import com.ruoyi.cai.service.UserMemberService; -import com.ruoyi.cai.service.UserService; -import com.ruoyi.cai.service.VipOrderService; +import com.ruoyi.cai.service.*; +import com.ruoyi.cai.ws.constant.RoomStatusEnums; +import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.SysOperLog; +import com.ruoyi.system.domain.SysOperLogCopy; +import com.ruoyi.system.mapper.SysOperLogMapper; +import com.ruoyi.system.mapper.SysOperLogCopyMapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.time.LocalDateTime; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @Component @Slf4j @@ -32,6 +38,49 @@ public class BusOp { private RechargeOrderService rechargeOrderService; @Autowired private VipOrderService vipOrderService; + @Autowired + private UserCallService userCallService; + @Resource + private SysOperLogMapper sysOperLogMapper; + @Resource + private SysOperLogCopyMapper sysOperLogCopyMapper; + + public void deleteUserCall(int days){ + LocalDateTime deleteTimeFlag = LocalDateTime.now().plusDays(-days); + int current = 0; + while (true){ + List list = userCallService.list(Wrappers.lambdaUpdate(UserCall.class) + .lt(UserCall::getCreateTime, deleteTimeFlag) + .eq(UserCall::getStatus, RoomStatusEnums.STATUS_CREATE.getCode()) + .last("limit 100")); + if(current > 500 || CollectionUtils.isEmpty(list)){ + break; + } + current++; + List ids = list.stream().map(UserCall::getId).collect(Collectors.toList()); + userCallService.removeBatchByIds(ids); + } + } + + public void copySysLog(int days){ + Date copyTimeFlag = DateUtils.addDays(new Date(), -days); + int current = 0; + while (true){ + List list = sysOperLogMapper.selectList(Wrappers.lambdaUpdate(SysOperLog.class) + .lt(SysOperLog::getOperTime, copyTimeFlag) + .orderByDesc(SysOperLog::getOperTime) + .last("limit 300")); + if(current > 500 || CollectionUtils.isEmpty(list)){ + break; + } + current++; + for (SysOperLog sysOperLog : list) { + sysOperLogMapper.deleteById(sysOperLog.getOperId()); + sysOperLogCopyMapper.insert(BeanConvertUtil.convertTo(sysOperLog, SysOperLogCopy::new)); + } + } + } + public void checkVipOrder(LocalDateTime startTime, LocalDateTime endTime, String orderNo){ if(StringUtils.isNotEmpty(orderNo)){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/BusOpController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/BusOpController.java index 62e396ac..901b3a1e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/BusOpController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/op/BusOpController.java @@ -25,6 +25,23 @@ public class BusOpController { @Autowired private BusOp busOp; + @GetMapping("/copySysLog") + public R copySysLog(int days){ + log.info("备份操作日志-开始"); + busOp.copySysLog(days); + log.info("备份操作日志-结束"); + return R.ok(); + } + + @GetMapping("/deleteUserCall") + public R deleteUserCall(){ + log.info("清洗垃圾通话记录-开始"); + busOp.deleteUserCall(15); + log.info("清洗垃圾通话记录-结束"); + return R.ok(); + } + + @GetMapping("/refreshUserVipStatus") public R refreshUserVipStatus(){ busOp.refreshUserVipStatus(); diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/business/BusTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/business/BusTest.java new file mode 100644 index 00000000..9134eaf9 --- /dev/null +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/business/BusTest.java @@ -0,0 +1,25 @@ +package com.ruoyi.test.business; + +import com.ruoyi.op.BusOp; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +@Slf4j +public class BusTest { + + @Autowired + private BusOp busOp; + + @Test + public void caiLoginManager(){ + busOp.deleteUserCall(15); + } + + @Test + public void joinAnchorInvite(){ + busOp.copySysLog(1); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLogCopy.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLogCopy.java new file mode 100644 index 00000000..929fb193 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLogCopy.java @@ -0,0 +1,146 @@ +package com.ruoyi.system.domain; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 操作日志记录表 oper_log + * + * @author Lion Li + */ + +@Data +@TableName("sys_oper_log_bak") +@ExcelIgnoreUnannotated +public class SysOperLogCopy implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 日志主键 + */ + @ExcelProperty(value = "日志主键") + @TableId(value = "oper_id") + private Long operId; + + /** + * 操作模块 + */ + @ExcelProperty(value = "操作模块") + private String title; + + /** + * 业务类型(0其它 1新增 2修改 3删除) + */ + @ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_oper_type") + private Integer businessType; + + /** + * 业务类型数组 + */ + @TableField(exist = false) + private Integer[] businessTypes; + + /** + * 请求方法 + */ + @ExcelProperty(value = "请求方法") + private String method; + + /** + * 请求方式 + */ + @ExcelProperty(value = "请求方式") + private String requestMethod; + + /** + * 操作类别(0其它 1后台用户 2手机端用户) + */ + @ExcelProperty(value = "操作类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=其它,1=后台用户,2=手机端用户") + private Integer operatorType; + + /** + * 操作人员 + */ + @ExcelProperty(value = "操作人员") + private String operName; + +// @ExcelProperty(value = "用户类型") + private String userType; + + /** + * 部门名称 + */ + @ExcelProperty(value = "部门名称") + private String deptName; + + /** + * 请求url + */ + @ExcelProperty(value = "请求地址") + private String operUrl; + + /** + * 操作地址 + */ + @ExcelProperty(value = "操作地址") + private String operIp; + + /** + * 操作地点 + */ + @ExcelProperty(value = "操作地点") + private String operLocation; + + /** + * 请求参数 + */ + @ExcelProperty(value = "请求参数") + private String operParam; + + /** + * 返回参数 + */ + @ExcelProperty(value = "返回参数") + private String jsonResult; + + /** + * 操作状态(0正常 1异常) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_common_status") + private Integer status; + + /** + * 错误消息 + */ + @ExcelProperty(value = "错误消息") + private String errorMsg; + + /** + * 操作时间 + */ + @ExcelProperty(value = "操作时间") + private Date operTime; + + + /** + * 请求参数 + */ + @TableField(exist = false) + private Map params = new HashMap<>(); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogCopyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogCopyMapper.java new file mode 100644 index 00000000..2b255d88 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogCopyMapper.java @@ -0,0 +1,13 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.common.core.mapper.BaseMapperPlus; +import com.ruoyi.system.domain.SysOperLogCopy; + +/** + * 操作日志 数据层 + * + * @author Lion Li + */ +public interface SysOperLogCopyMapper extends BaseMapperPlus { + +}