|
|
@@ -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) {
|