Procházet zdrojové kódy

调整isLottery接口实现

wangzhijun před 1 týdnem
rodič
revize
cb40cbe916

+ 2 - 1
nightFragrance-massage/src/main/java/com/ylx/lottery/domain/dto/IsLotteryDTO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.List;
 
 @Data
 public class IsLotteryDTO implements Serializable {
@@ -12,6 +13,6 @@ public class IsLotteryDTO implements Serializable {
 
     @NotNull(message = "类型不能为空")
     @ApiModelProperty(value = "类型:1.按摩订单 2.积分订单 3.评论有礼", required = true)
-    private Integer type;
+    private List<Integer> types;
 
 }

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/lottery/domain/vo/IsLotteryVO.java

@@ -13,4 +13,7 @@ public class IsLotteryVO implements Serializable {
     @ApiModelProperty("是否可以抽奖:0.没有 1有")
     private Integer isLottery;
 
+    @ApiModelProperty("本地活动表ID")
+    private String activityId;
+
 }

+ 18 - 12
nightFragrance-massage/src/main/java/com/ylx/lottery/service/impl/LotteryCountLogServiceImpl.java

@@ -49,25 +49,31 @@ public class LotteryCountLogServiceImpl extends ServiceImpl<LotteryCountLogMappe
 
         // 2. 构建查询条件 (用于查找未弹窗的记录)
         LambdaQueryWrapper<LotteryCountLog> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.select(LotteryCountLog::getId)
-                .eq(LotteryCountLog::getType, dto.getType())
-                .eq(LotteryCountLog::getUserId, userId)
+        queryWrapper.eq(LotteryCountLog::getUserId, userId)
                 .eq(LotteryCountLog::getIsLottery, 0) // 只查未弹窗的
-                .eq(LotteryCountLog::getIsDelete, 0);
+                .eq(LotteryCountLog::getIsDelete, 0)
+                .in(LotteryCountLog::getType, dto.getTypes());
 
-        // 3.提取 ID 列表
-        List<Long> logIds = this.baseMapper.selectList(queryWrapper).stream()
-                .map(LotteryCountLog::getId)
-                .collect(Collectors.toList());
+        // 3.提取列表
+        List<LotteryCountLog> lotteryCountLogs = this.baseMapper.selectList(queryWrapper);
 
         // 4. 设置返回结果
-        boolean hasChance = CollUtil.isNotEmpty(logIds);
-        vo.setIsLottery(hasChance ? 1 : 0);
+        if (CollUtil.isEmpty(lotteryCountLogs)) {
+            vo.setIsLottery(0);
+            return vo;
+        }
+
+        LotteryCountLog lotteryCountLog = CollUtil.getFirst(lotteryCountLogs);
+
+        vo.setIsLottery(1);
+        vo.setActivityId(lotteryCountLog.getLocalActivityTableId());
 
         // 5. 如果有记录,批量更新状态为“已弹窗”
-        if (CollUtil.isNotEmpty(logIds)) {
+        if (CollUtil.isNotEmpty(lotteryCountLogs)) {
+
             LambdaUpdateWrapper<LotteryCountLog> updateWrapper = new LambdaUpdateWrapper<>();
-            updateWrapper.in(LotteryCountLog::getId, logIds)
+            updateWrapper.in(LotteryCountLog::getType, dto.getTypes())
+                    .eq(LotteryCountLog::getUserId, userId)
                     .set(LotteryCountLog::getIsLottery, 1)
                     .set(LotteryCountLog::getUpdateTime, new Date());