Przeglądaj źródła

审计日志调整

liuchengsen 1 miesiąc temu
rodzic
commit
e8c4c0b4e9

+ 1 - 1
zhijiayun-activity/src/main/java/com/xuekairui/activity/service/ActivityInviteService.java

@@ -221,7 +221,7 @@ public class ActivityInviteService implements ActivityInviteGate {
         // 变更后快照
         Map<String, Object> afterData = configSnapshot(config);
         auditLogService.logSuccess(
-                0L, OperatorRole.ADMIN, OperationType.INVITE_REWARD_GRANT,
+                0L, OperatorRole.ADMIN, OperationType.ACTIVITY_INVITE_CONFIG_UPDATE,
                 "ACTIVITY_INVITE_CONFIG:" + CONFIG_ID, CONFIG_ID,
                 beforeData, afterData,
                 "邀请有礼活动配置变更",

+ 4 - 4
zhijiayun-activity/src/main/java/com/xuekairui/activity/service/ActivityLotteryService.java

@@ -120,7 +120,7 @@ public class ActivityLotteryService implements ActivityLotteryGate {
         // 变更后快照 → 审计日志
         java.util.Map<String, Object> afterData = configSnapshot(config);
         operationAuditLogService.logSuccess(
-                0L, OperatorRole.ADMIN, OperationType.USER_UPDATE,
+                0L, OperatorRole.ADMIN, OperationType.ACTIVITY_LOTTERY_CONFIG_UPDATE,
                 "LOTTERY_CONFIG:" + CONFIG_ID, CONFIG_ID,
                 beforeData, afterData,
                 "比价抽奖活动配置变更",
@@ -469,7 +469,7 @@ public class ActivityLotteryService implements ActivityLotteryGate {
         createAfter.put("stock", stock);
         createAfter.put("rewardDays", prize.getRewardDays());
         operationAuditLogService.logSuccess(
-                0L, OperatorRole.ADMIN, OperationType.USER_UPDATE,
+                0L, OperatorRole.ADMIN, OperationType.ACTIVITY_LOTTERY_PRIZE_CREATE,
                 "LOTTERY_PRIZE:" + prize.getId(), prize.getId(),
                 null,
                 createAfter,
@@ -513,7 +513,7 @@ public class ActivityLotteryService implements ActivityLotteryGate {
         updateAfter.put("remainingStock", prize.getRemainingStock());
         updateAfter.put("rewardDays", prize.getRewardDays());
         operationAuditLogService.logSuccess(
-                0L, OperatorRole.ADMIN, OperationType.USER_UPDATE,
+                0L, OperatorRole.ADMIN, OperationType.ACTIVITY_LOTTERY_PRIZE_UPDATE,
                 "LOTTERY_PRIZE:" + prize.getId(), prize.getId(),
                 null,
                 updateAfter,
@@ -530,7 +530,7 @@ public class ActivityLotteryService implements ActivityLotteryGate {
             deleteBefore.put("stock", prize.getStock());
             deleteBefore.put("remainingStock", prize.getRemainingStock());
             operationAuditLogService.logSuccess(
-                    0L, OperatorRole.ADMIN, OperationType.USER_UPDATE,
+                    0L, OperatorRole.ADMIN, OperationType.ACTIVITY_LOTTERY_PRIZE_DELETE,
                     "LOTTERY_PRIZE:" + id, id,
                     deleteBefore,
                     null, "删除抽奖奖品:" + prize.getName());

+ 31 - 0
zhijiayun-activity/src/main/java/com/xuekairui/activity/service/CheckInConfigService.java

@@ -7,6 +7,10 @@ import com.xuekairui.activity.mapper.CheckInConfigMapper;
 import com.xuekairui.activity.mapper.CheckInPeriodMapper;
 import com.xuekairui.common.BusinessException;
 import com.xuekairui.common.ErrorCode;
+import com.xuekairui.user.enums.OperationSource;
+import com.xuekairui.user.enums.OperationType;
+import com.xuekairui.user.enums.OperatorRole;
+import com.xuekairui.user.service.OperationAuditLogService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -16,6 +20,7 @@ import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjusters;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -39,6 +44,7 @@ public class CheckInConfigService {
 
     private final CheckInConfigMapper checkinConfigMapper;
     private final CheckInPeriodMapper periodMapper;
+    private final OperationAuditLogService auditLogService;
 
     /**
      * 获取签到配置(不存在则初始化默认值并生成周期)
@@ -74,6 +80,8 @@ public class CheckInConfigService {
     public CheckInConfig updateConfig(CheckInConfigRequest request) {
         CheckInConfig config = getConfig();
 
+        Map<String, Object> beforeData = configSnapshot(config);
+
         boolean timeChanged = !java.util.Objects.equals(config.getStartTime(), request.getStartTime())
                 || !java.util.Objects.equals(config.getEndTime(), request.getEndTime());
         boolean modeChanged = request.getCycleMode() != null && !request.getCycleMode().equals(config.getCycleMode());
@@ -94,6 +102,14 @@ public class CheckInConfigService {
         config.setRemark(request.getRemark());
         checkinConfigMapper.updateById(config);
 
+        Map<String, Object> afterData = configSnapshot(config);
+        auditLogService.logSuccess(
+                0L, OperatorRole.ADMIN, OperationType.ACTIVITY_CHECKIN_CONFIG_UPDATE,
+                "CHECKIN_CONFIG:" + CONFIG_ID, CONFIG_ID,
+                beforeData, afterData,
+                "签到送会员活动配置变更",
+                OperationSource.ADMIN_CREATE);
+
         boolean active = request.getEnabled() != null && request.getEnabled() == 1;
         if (active) {
             if (timeChanged || modeChanged) {
@@ -349,6 +365,21 @@ public class CheckInConfigService {
         return "ACTIVE";
     }
 
+    private Map<String, Object> configSnapshot(CheckInConfig c) {
+        Map<String, Object> s = new HashMap<>();
+        s.put("enabled", c.getEnabled());
+        s.put("startTime", c.getStartTime());
+        s.put("endTime", c.getEndTime());
+        s.put("cycleMode", c.getCycleMode());
+        s.put("requiredDays", c.getRequiredDays());
+        s.put("rewardMode", c.getRewardMode());
+        s.put("rewardDays", c.getRewardDays());
+        s.put("rewardLevel", c.getRewardLevel());
+        s.put("maxRewardCount", c.getMaxRewardCount());
+        s.put("remark", c.getRemark());
+        return s;
+    }
+
     /** 值为 null 时返回默认值 */
     private static <T> T orDefault(T value, T defaultValue) {
         return value != null ? value : defaultValue;

+ 14 - 0
zhijiayun-user/src/main/java/com/xuekairui/user/enums/OperationType.java

@@ -83,6 +83,20 @@ public enum OperationType {
     /** 配置邀请规则 */
     INVITE_CONFIG_UPDATE("INVITE", "CONFIG_UPDATE", "INVITE", "配置邀请规则", true),
 
+    // ==================== 活动模块 ====================
+    /** 比价抽奖活动配置变更 */
+    ACTIVITY_LOTTERY_CONFIG_UPDATE("ACTIVITY", "LOTTERY_CONFIG_UPDATE", "ACTIVITY", "比价抽奖活动配置变更", true),
+    /** 新增抽奖奖品 */
+    ACTIVITY_LOTTERY_PRIZE_CREATE("ACTIVITY", "LOTTERY_PRIZE_CREATE", "ACTIVITY", "新增抽奖奖品", true),
+    /** 更新抽奖奖品 */
+    ACTIVITY_LOTTERY_PRIZE_UPDATE("ACTIVITY", "LOTTERY_PRIZE_UPDATE", "ACTIVITY", "更新抽奖奖品", true),
+    /** 删除抽奖奖品 */
+    ACTIVITY_LOTTERY_PRIZE_DELETE("ACTIVITY", "LOTTERY_PRIZE_DELETE", "ACTIVITY", "删除抽奖奖品", true),
+    /** 邀请有礼活动配置变更 */
+    ACTIVITY_INVITE_CONFIG_UPDATE("ACTIVITY", "INVITE_CONFIG_UPDATE", "ACTIVITY", "邀请有礼活动配置变更", true),
+    /** 签到送会员活动配置变更 */
+    ACTIVITY_CHECKIN_CONFIG_UPDATE("ACTIVITY", "CHECKIN_CONFIG_UPDATE", "ACTIVITY", "签到送会员活动配置变更", true),
+
     // ==================== 优惠券模块 ====================
     /** 创建优惠券模板 */
     COUPON_TEMPLATE_CREATE("COUPON", "TEMPLATE_CREATE", "COUPON", "创建优惠券模板", true),