|
@@ -1,5 +1,6 @@
|
|
|
package shop.alien.store.service.impl;
|
|
package shop.alien.store.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -10,13 +11,17 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
+import shop.alien.entity.store.ActivityPeriod;
|
|
|
import shop.alien.entity.store.ActivitySignInConfig;
|
|
import shop.alien.entity.store.ActivitySignInConfig;
|
|
|
import shop.alien.entity.store.ActivitySignInReward;
|
|
import shop.alien.entity.store.ActivitySignInReward;
|
|
|
import shop.alien.entity.store.vo.ActivityConfigVO;
|
|
import shop.alien.entity.store.vo.ActivityConfigVO;
|
|
|
|
|
+import shop.alien.mapper.ActivityPeriodMapper;
|
|
|
import shop.alien.mapper.ActivitySignRewardMapper;
|
|
import shop.alien.mapper.ActivitySignRewardMapper;
|
|
|
import shop.alien.store.service.ActivityConfigService;
|
|
import shop.alien.store.service.ActivityConfigService;
|
|
|
import shop.alien.mapper.ActivitySignInConfigMapper;
|
|
import shop.alien.mapper.ActivitySignInConfigMapper;
|
|
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -32,29 +37,68 @@ public class ActivityConfigServiceImpl extends ServiceImpl<ActivitySignInConfigM
|
|
|
|
|
|
|
|
private final ActivitySignInConfigMapper activitySignInConfigMapper;
|
|
private final ActivitySignInConfigMapper activitySignInConfigMapper;
|
|
|
private final ActivitySignRewardMapper activitySignRewardMapper;
|
|
private final ActivitySignRewardMapper activitySignRewardMapper;
|
|
|
|
|
+ private final ActivityPeriodMapper activityPeriodMapper;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public ActivitySignInConfig createOrUpdateActivity(ActivityConfigVO configVO) {
|
|
|
|
|
|
|
+ public ActivityConfigVO createOrUpdateActivity(ActivityConfigVO configVO) {
|
|
|
log.info("创建活动开始执行,请求参数: {}", configVO);
|
|
log.info("创建活动开始执行,请求参数: {}", configVO);
|
|
|
if(configVO == null) {
|
|
if(configVO == null) {
|
|
|
log.error("创建活动configVO为空。");
|
|
log.error("创建活动configVO为空。");
|
|
|
- return null;
|
|
|
|
|
|
|
+ configVO = new ActivityConfigVO();
|
|
|
|
|
+ configVO.setErrorMessage("参数为空");
|
|
|
|
|
+ return configVO;
|
|
|
}
|
|
}
|
|
|
List<ActivitySignInReward> activitySignInRewardList = configVO.getRewards();
|
|
List<ActivitySignInReward> activitySignInRewardList = configVO.getRewards();
|
|
|
if(CollectionUtils.isEmpty(activitySignInRewardList)) {
|
|
if(CollectionUtils.isEmpty(activitySignInRewardList)) {
|
|
|
log.error("创建活动奖励配置为空。");
|
|
log.error("创建活动奖励配置为空。");
|
|
|
- return null;
|
|
|
|
|
|
|
+ configVO.setErrorMessage("活动奖励配置为空");
|
|
|
|
|
+ return configVO;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ List<ActivityPeriod> activityPeriodList = configVO.getActivityPeriodList();
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activityPeriodList)){
|
|
|
|
|
+ boolean checkPeriodResult= checkPeriodTime(activityPeriodList);
|
|
|
|
|
+ if(!checkPeriodResult){
|
|
|
|
|
+ configVO.setErrorMessage("方案时间重叠");
|
|
|
|
|
+ return configVO;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
ActivitySignInConfig activitySignInConfig = new ActivitySignInConfig();
|
|
ActivitySignInConfig activitySignInConfig = new ActivitySignInConfig();
|
|
|
|
|
+
|
|
|
if(configVO.getId() == null) {
|
|
if(configVO.getId() == null) {
|
|
|
|
|
+ if(configVO.getPlanConfigType()!=null && configVO.getPlanConfigType() == 1){
|
|
|
|
|
+ // 创建默认活动,先check是否已经存在默认数据
|
|
|
|
|
+ LambdaQueryWrapper<ActivitySignInConfig> activitySignInConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ activitySignInConfigLambdaQueryWrapper.eq(ActivitySignInConfig::getDeleteFlag, 0);
|
|
|
|
|
+ activitySignInConfigLambdaQueryWrapper.eq(ActivitySignInConfig::getPlanConfigType, 1);
|
|
|
|
|
+ int count = activitySignInConfigMapper.selectCount(activitySignInConfigLambdaQueryWrapper);
|
|
|
|
|
+ if(count > 0){
|
|
|
|
|
+ log.error("已经存在默认方案,请不要重复创建。");
|
|
|
|
|
+ configVO.setErrorMessage("已经存在默认方案,请不要重复创建。");
|
|
|
|
|
+ return configVO;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//创建活动操作
|
|
//创建活动操作
|
|
|
BeanUtils.copyProperties(configVO, activitySignInConfig);
|
|
BeanUtils.copyProperties(configVO, activitySignInConfig);
|
|
|
int configInsertResult = activitySignInConfigMapper.insert(activitySignInConfig);
|
|
int configInsertResult = activitySignInConfigMapper.insert(activitySignInConfig);
|
|
|
if(configInsertResult == 0){
|
|
if(configInsertResult == 0){
|
|
|
//插入活动配置数据失败,返回
|
|
//插入活动配置数据失败,返回
|
|
|
log.error("插入活动配置数据失败, {}", configVO);
|
|
log.error("插入活动配置数据失败, {}", configVO);
|
|
|
- return null;
|
|
|
|
|
|
|
+ configVO.setErrorMessage("插入活动配置数据失败");
|
|
|
|
|
+ return configVO;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 创建时间段数据
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activityPeriodList)) {
|
|
|
|
|
+ activityPeriodList.forEach(item -> {
|
|
|
|
|
+ item.setActivityId(activitySignInConfig.getId());
|
|
|
|
|
+ activityPeriodMapper.insert(item);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 创建活动奖励记录
|
|
|
activitySignInRewardList.forEach(item -> {
|
|
activitySignInRewardList.forEach(item -> {
|
|
|
item.setActivityId(activitySignInConfig.getId());
|
|
item.setActivityId(activitySignInConfig.getId());
|
|
|
activitySignRewardMapper.insert(item);
|
|
activitySignRewardMapper.insert(item);
|
|
@@ -66,15 +110,57 @@ public class ActivityConfigServiceImpl extends ServiceImpl<ActivitySignInConfigM
|
|
|
if(configUpdateResult == 0){
|
|
if(configUpdateResult == 0){
|
|
|
//更新活动配置数据失败,返回
|
|
//更新活动配置数据失败,返回
|
|
|
log.error("更新活动配置数据失败, {}", configVO);
|
|
log.error("更新活动配置数据失败, {}", configVO);
|
|
|
- return null;
|
|
|
|
|
|
|
+ configVO.setErrorMessage("更新活动配置数据失败");
|
|
|
|
|
+ return configVO;
|
|
|
}
|
|
}
|
|
|
- activitySignInRewardList.forEach(item -> {
|
|
|
|
|
- activitySignRewardMapper.updateById(item);
|
|
|
|
|
|
|
+ int activityId = configVO.getId();
|
|
|
|
|
+
|
|
|
|
|
+ //更新时间段信息
|
|
|
|
|
+ LambdaQueryWrapper<ActivityPeriod> deletePeriodWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ deletePeriodWrapper.eq(ActivityPeriod::getActivityId, configVO.getId());
|
|
|
|
|
+ activityPeriodMapper.delete(deletePeriodWrapper);
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activityPeriodList)){
|
|
|
|
|
+ activityPeriodList.forEach(item -> {
|
|
|
|
|
+ item.setActivityId(activityId);
|
|
|
|
|
+ activityPeriodMapper.insert(item);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //更新活动奖励
|
|
|
|
|
+ LambdaQueryWrapper<ActivitySignInReward> deleteRewardWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ deleteRewardWrapper.eq(ActivitySignInReward::getActivityId, configVO.getId());
|
|
|
|
|
+ activitySignRewardMapper.delete(deleteRewardWrapper);
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activitySignInRewardList)){
|
|
|
|
|
+ activitySignInRewardList.forEach(item -> {
|
|
|
|
|
+ item.setActivityId(activityId);
|
|
|
|
|
+ activitySignRewardMapper.insert(item);
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
return configVO;
|
|
return configVO;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private boolean checkPeriodTime(List<ActivityPeriod> activityPeriodList){
|
|
|
|
|
+ if (activityPeriodList == null || activityPeriodList.size() <= 1) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 按开始时间排序
|
|
|
|
|
+ List<ActivityPeriod> sorted = new ArrayList<>(activityPeriodList);
|
|
|
|
|
+ sorted.sort(Comparator.comparing(ActivityPeriod::getStartTime));
|
|
|
|
|
+ for (int i = 0; i < sorted.size() - 1; i++) {
|
|
|
|
|
+ ActivityPeriod current = sorted.get(i);
|
|
|
|
|
+ ActivityPeriod next = sorted.get(i + 1);
|
|
|
|
|
+
|
|
|
|
|
+ // 检查重叠条件:当前结束时间 > 下一个开始时间
|
|
|
|
|
+ if (current.getEndTime().compareTo(next.getStartTime()) > 0) {
|
|
|
|
|
+ return false; // 存在重叠
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public ActivitySignInConfig updateActivity(Long id, ActivityConfigVO configVO) {
|
|
public ActivitySignInConfig updateActivity(Long id, ActivityConfigVO configVO) {
|
|
|
return null;
|
|
return null;
|
|
@@ -100,20 +186,67 @@ public class ActivityConfigServiceImpl extends ServiceImpl<ActivitySignInConfigM
|
|
|
wrapper.eq(ActivitySignInReward::getActivityId, id);
|
|
wrapper.eq(ActivitySignInReward::getActivityId, id);
|
|
|
wrapper.eq(ActivitySignInReward::getDeleteFlag,0);
|
|
wrapper.eq(ActivitySignInReward::getDeleteFlag,0);
|
|
|
List <ActivitySignInReward> activitySignInRewardList = activitySignRewardMapper.selectList(wrapper);
|
|
List <ActivitySignInReward> activitySignInRewardList = activitySignRewardMapper.selectList(wrapper);
|
|
|
- if(CollectionUtils.isEmpty(activitySignInRewardList)){
|
|
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activitySignInRewardList)){
|
|
|
|
|
+ activityConfigVO.setRewards(activitySignInRewardList);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 查询活动时间段列表
|
|
|
|
|
+ LambdaQueryWrapper<ActivityPeriod> activityPeriodWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ activityPeriodWrapper.eq(ActivityPeriod::getActivityId, id);
|
|
|
|
|
+ activityPeriodWrapper.eq(ActivityPeriod::getDeleteFlag,0);
|
|
|
|
|
+ List <ActivityPeriod> activityPeriodList = activityPeriodMapper.selectList(activityPeriodWrapper);
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activityPeriodList)){
|
|
|
|
|
+ activityConfigVO.setActivityPeriodList(activityPeriodList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return activityConfigVO;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public ActivityConfigVO getDefaultActivitySignInConfigById() {
|
|
|
|
|
+ ActivityConfigVO activityConfigVO = new ActivityConfigVO();
|
|
|
|
|
+
|
|
|
|
|
+ // 查询签到活动配置信息
|
|
|
|
|
+ LambdaQueryWrapper<ActivitySignInConfig> activitySignInConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ activitySignInConfigLambdaQueryWrapper.eq(ActivitySignInConfig::getDeleteFlag, 0);
|
|
|
|
|
+ activitySignInConfigLambdaQueryWrapper.eq(ActivitySignInConfig::getPlanConfigType,1);
|
|
|
|
|
+ ActivitySignInConfig activitySignInConfig = activitySignInConfigMapper.selectOne(activitySignInConfigLambdaQueryWrapper);
|
|
|
|
|
+ if(activitySignInConfig == null){
|
|
|
return activityConfigVO;
|
|
return activityConfigVO;
|
|
|
}
|
|
}
|
|
|
- activityConfigVO.setRewards(activitySignInRewardList);
|
|
|
|
|
|
|
+ BeanUtils.copyProperties(activitySignInConfig, activityConfigVO);
|
|
|
|
|
+
|
|
|
|
|
+ // 查询活动奖励列表
|
|
|
|
|
+ LambdaQueryWrapper<ActivitySignInReward> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.eq(ActivitySignInReward::getActivityId, activitySignInConfig.getId());
|
|
|
|
|
+ wrapper.eq(ActivitySignInReward::getDeleteFlag,0);
|
|
|
|
|
+ List <ActivitySignInReward> activitySignInRewardList = activitySignRewardMapper.selectList(wrapper);
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activitySignInRewardList)){
|
|
|
|
|
+ activityConfigVO.setRewards(activitySignInRewardList);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 查询活动时间段列表
|
|
|
|
|
+ LambdaQueryWrapper<ActivityPeriod> activityPeriodWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ activityPeriodWrapper.eq(ActivityPeriod::getActivityId, activitySignInConfig.getId());
|
|
|
|
|
+ activityPeriodWrapper.eq(ActivityPeriod::getDeleteFlag,0);
|
|
|
|
|
+ List <ActivityPeriod> activityPeriodList = activityPeriodMapper.selectList(activityPeriodWrapper);
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(activityPeriodList)){
|
|
|
|
|
+ activityConfigVO.setActivityPeriodList(activityPeriodList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return activityConfigVO;
|
|
return activityConfigVO;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public IPage<ActivitySignInConfig> getActivityList(int pageNum, int pageSize, String activityName) {
|
|
|
|
|
|
|
+ public IPage<ActivitySignInConfig> getActivityList(int pageNum, int pageSize, String activityName, Integer status) {
|
|
|
IPage<ActivitySignInConfig> iPage = new Page<>(pageNum, pageSize);
|
|
IPage<ActivitySignInConfig> iPage = new Page<>(pageNum, pageSize);
|
|
|
LambdaQueryWrapper<ActivitySignInConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<ActivitySignInConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
if(StringUtils.isNotBlank(activityName)){
|
|
if(StringUtils.isNotBlank(activityName)){
|
|
|
lambdaQueryWrapper.like(ActivitySignInConfig::getActivityName, activityName);
|
|
lambdaQueryWrapper.like(ActivitySignInConfig::getActivityName, activityName);
|
|
|
}
|
|
}
|
|
|
|
|
+ if(status != null){
|
|
|
|
|
+ lambdaQueryWrapper.eq(ActivitySignInConfig::getStatus, status);
|
|
|
|
|
+ }
|
|
|
|
|
+ lambdaQueryWrapper.eq(ActivitySignInConfig::getDeleteFlag, 0);
|
|
|
|
|
+ lambdaQueryWrapper.eq(ActivitySignInConfig::getPlanConfigType, 2);
|
|
|
return activitySignInConfigMapper.selectPage(iPage, lambdaQueryWrapper);
|
|
return activitySignInConfigMapper.selectPage(iPage, lambdaQueryWrapper);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -133,4 +266,26 @@ public class ActivityConfigServiceImpl extends ServiceImpl<ActivitySignInConfigM
|
|
|
public void saveActivityRewards(Long activityId, List<ActivitySignInReward> rewards) {
|
|
public void saveActivityRewards(Long activityId, List<ActivitySignInReward> rewards) {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public boolean deleteActivity(Integer id) {
|
|
|
|
|
+ if(id != null){
|
|
|
|
|
+ // 删除活动信息
|
|
|
|
|
+ int configResult = activitySignInConfigMapper.deleteById(id);
|
|
|
|
|
+ if(configResult == 0){
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 删除活动奖励信息
|
|
|
|
|
+ LambdaQueryWrapper<ActivitySignInReward> activitySignInRewardWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ activitySignInRewardWrapper.eq(ActivitySignInReward::getActivityId, id);
|
|
|
|
|
+ activitySignRewardMapper.delete(activitySignInRewardWrapper);
|
|
|
|
|
+
|
|
|
|
|
+ // 删除活动时间信息
|
|
|
|
|
+ LambdaQueryWrapper<ActivityPeriod> activityPeriodLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ activityPeriodLambdaQueryWrapper.eq(ActivityPeriod::getActivityId, id);
|
|
|
|
|
+ activityPeriodMapper.delete(activityPeriodLambdaQueryWrapper);
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|