|
|
@@ -1,38 +1,38 @@
|
|
|
package com.ylx.point.service.impl;
|
|
|
|
|
|
-import java.time.DateTimeException;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.LocalTime;
|
|
|
-import java.time.ZoneId;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.ylx.common.core.domain.R;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ylx.common.exception.base.BaseException;
|
|
|
import com.ylx.common.utils.DateUtils;
|
|
|
+import com.ylx.point.domain.PointActivity;
|
|
|
import com.ylx.point.domain.PointActivityTask;
|
|
|
import com.ylx.point.domain.PointSignReward;
|
|
|
import com.ylx.point.domain.PointSignTask;
|
|
|
import com.ylx.point.domain.dto.*;
|
|
|
import com.ylx.point.domain.vo.*;
|
|
|
+import com.ylx.point.enums.PointActivityExpirePolicyEnum;
|
|
|
import com.ylx.point.enums.PointActivityStatusEnum;
|
|
|
import com.ylx.point.enums.PointActivityTypeEnum;
|
|
|
+import com.ylx.point.mapper.PointActivityMapper;
|
|
|
+import com.ylx.point.service.IPointActivityService;
|
|
|
import com.ylx.point.service.IPointActivityTaskService;
|
|
|
import com.ylx.point.service.IPointSignRewardService;
|
|
|
import com.ylx.point.service.IPointSignTaskService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import com.ylx.point.domain.PointActivity;
|
|
|
-import com.ylx.point.mapper.PointActivityMapper;
|
|
|
-import com.ylx.point.service.IPointActivityService;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.DateTimeException;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 积分活动主Service业务层处理
|
|
|
@@ -41,7 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
* @date 2026-03-25
|
|
|
*/
|
|
|
@Service
|
|
|
-public class PointActivityServiceImpl implements IPointActivityService {
|
|
|
+public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, PointActivity> implements IPointActivityService {
|
|
|
@Autowired
|
|
|
private PointActivityMapper pointActivityMapper;
|
|
|
@Autowired
|
|
|
@@ -135,6 +135,24 @@ public class PointActivityServiceImpl implements IPointActivityService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void editValidity(PointActivityValidityDTO dto) {
|
|
|
|
|
|
+ // 根据dto中activityType获取全部的活动list
|
|
|
+ LambdaQueryWrapper<PointActivity> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(PointActivity::getActivityType, dto.getActivityType());
|
|
|
+ List<PointActivity> activityList = pointActivityMapper.selectList(queryWrapper);
|
|
|
+ if (CollectionUtil.isEmpty(activityList)) {
|
|
|
+ throw new BaseException("该类型的活动不存在,设置失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断活动list中只要有活动的状态为"进行中",修改就失败
|
|
|
+ boolean hasOngoingActivity = activityList.stream()
|
|
|
+ .anyMatch(activity -> PointActivityStatusEnum.IN_PROGRESS.getCode().equals(activity.getStatus()));
|
|
|
+ if (hasOngoingActivity) {
|
|
|
+ throw new BaseException("存在进行中的活动,无法修改有效期");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量更新活动的有效期策略
|
|
|
+ batchUpdateExpirePolicy(activityList, dto);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void validateActivityDTO(PointActivityDTO dto) {
|
|
|
@@ -399,4 +417,32 @@ public class PointActivityServiceImpl implements IPointActivityService {
|
|
|
pointActivityTaskService.batchInsertPointActivityTask(activityTasks);
|
|
|
}
|
|
|
|
|
|
+ private void batchUpdateExpirePolicy(List<PointActivity> activityList, PointActivityValidityDTO dto) {
|
|
|
+ Integer expirePolicy = dto.getExpirePolicy();
|
|
|
+
|
|
|
+ // 使用Stream处理活动列表
|
|
|
+ List<PointActivity> updateList = activityList.stream()
|
|
|
+ .peek(activity -> {
|
|
|
+ activity.setExpirePolicy(expirePolicy);
|
|
|
+
|
|
|
+ // 根据策略设置不同的过期时间字段
|
|
|
+ if (PointActivityExpirePolicyEnum.TRANSACTION_EXPIRE.getCode().equals(expirePolicy)) {
|
|
|
+ activity.setExpireDays(dto.getExpireDays());
|
|
|
+ activity.setExpireYear(null);
|
|
|
+ } else if (PointActivityExpirePolicyEnum.YEARLY_EXPIRE.getCode().equals(expirePolicy)) {
|
|
|
+ activity.setExpireYear(dto.getExpireYear());
|
|
|
+ activity.setExpireDays(null);
|
|
|
+ } else {
|
|
|
+ activity.setExpireDays(null);
|
|
|
+ activity.setExpireYear(null);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 批量更新数据库
|
|
|
+ if (CollectionUtil.isNotEmpty(updateList)) {
|
|
|
+ super.updateBatchById(updateList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|