Kaynağa Gözat

创建活动增加校验,如果是签到活动,当前城市有正在进行中的签到,则不能再次创建

wangzhijun 11 saat önce
ebeveyn
işleme
4e01b373a3

+ 24 - 0
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -629,6 +629,30 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
                 (ObjectUtil.isNull(timeConfig.getStartTime()) || ObjectUtil.isNull(timeConfig.getEndTime())))) {
             throw new ServiceException("活动时间配置不能为空");
         }
+        
+        // 检查是否为签到活动
+        if (PointActivityTypeEnum.SIGN_TASK.getCode().equals(dto.getActivityType())) {
+            // 检查该城市是否已存在进行中的签到活动
+            checkExistingSignInActivity(dto.getCityCode());
+        }
+    }
+
+    /**
+     * 检查指定城市是否已存在进行中的签到活动
+     * @param cityCode 城市代码
+     */
+    private void checkExistingSignInActivity(String cityCode) {
+        // 构建查询条件:活动类型为签到任务,状态为进行中,城市代码匹配
+        LambdaQueryWrapper<PointActivity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PointActivity::getActivityType, PointActivityTypeEnum.SIGN_TASK.getCode())
+                   .eq(PointActivity::getStatus, PointActivityStatusEnum.IN_PROGRESS.getCode())
+                   .eq(PointActivity::getCityCode, cityCode);
+
+        // 查询是否存在符合条件的活动
+        long count = this.count(queryWrapper);
+        if (count > 0) {
+            throw new ServiceException("该城市已存在进行中的签到活动,不能再次创建");
+        }
     }
 
     private PointActivity createActivityEntity(PointActivityDTO dto) {