|
|
@@ -1,5 +1,6 @@
|
|
|
package shop.alien.store.service.impl;
|
|
|
|
|
|
+import com.alibaba.nacos.common.utils.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
@@ -9,13 +10,15 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import shop.alien.entity.store.ActivityPeriod;
|
|
|
-import shop.alien.entity.store.ActivitySignInConfig;
|
|
|
+import shop.alien.entity.store.*;
|
|
|
import shop.alien.entity.store.vo.ActivityConfigVo;
|
|
|
import shop.alien.entity.store.vo.ActivityInviteConfigVo;
|
|
|
-import shop.alien.entity.store.ActivityInviteConfig;
|
|
|
+import shop.alien.entity.store.vo.ActivityInviteInfoVo;
|
|
|
import shop.alien.mapper.ActivityInviteConfigMapper;
|
|
|
+import shop.alien.mapper.ActivityInviteLogMapper;
|
|
|
+import shop.alien.mapper.LifeUserMapper;
|
|
|
import shop.alien.store.service.ActivityInviteConfigService;
|
|
|
+import shop.alien.util.common.RandomCreateUtil;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
@@ -28,6 +31,10 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
|
|
|
|
|
|
private final ActivityInviteConfigMapper activityInviteConfigMapper;
|
|
|
|
|
|
+ private final LifeUserMapper lifeUserMapper;
|
|
|
+
|
|
|
+ private final ActivityInviteLogMapper activityInviteLogMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public ActivityInviteConfigVo createOrUpdateInviteActivity(ActivityInviteConfigVo activityInviteConfigVo) {
|
|
|
|
|
|
@@ -41,30 +48,16 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
|
|
|
|
|
|
ActivityInviteConfig activityInviteConfig = new ActivityInviteConfig();
|
|
|
if(activityInviteConfigVo.getId() == null) {
|
|
|
- if(activityInviteConfigVo.getActivityTimeType()!=null && activityInviteConfigVo.getActivityTimeType() == 1){
|
|
|
- //永久邀请活动,不重复
|
|
|
- LambdaQueryWrapper<ActivityInviteConfig> activityInviteConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- activityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getDeleteFlag, 0);
|
|
|
- activityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getActivityTimeType,1);
|
|
|
- int count = activityInviteConfigMapper.selectCount(activityInviteConfigLambdaQueryWrapper);
|
|
|
- if(count > 0){
|
|
|
- log.error("存在永久邀请活动,请修改。");
|
|
|
- activityInviteConfigVo = new ActivityInviteConfigVo();
|
|
|
- activityInviteConfigVo.setErrorMessage("存在永久邀请活动");
|
|
|
- return activityInviteConfigVo;
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 限时活动,校验时间段不重复
|
|
|
- LambdaQueryWrapper<ActivityInviteConfig> limitedTimeActivityInviteConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- limitedTimeActivityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getDeleteFlag, 0);
|
|
|
- limitedTimeActivityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getActivityTimeType,2);
|
|
|
- List<ActivityInviteConfig> activityInviteConfigList = activityInviteConfigMapper.selectList(limitedTimeActivityInviteConfigLambdaQueryWrapper);
|
|
|
- boolean checkResult = checkTime(activityInviteConfigList);
|
|
|
- if(!checkResult){
|
|
|
- activityInviteConfigVo.setErrorMessage("方案时间重叠");
|
|
|
- return activityInviteConfigVo;
|
|
|
- }
|
|
|
+ LambdaQueryWrapper<ActivityInviteConfig> activityInviteConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ activityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getDeleteFlag, 0);
|
|
|
+ int count = activityInviteConfigMapper.selectCount(activityInviteConfigLambdaQueryWrapper);
|
|
|
+ if(count > 0){
|
|
|
+ log.error("存在有效的邀请活动。");
|
|
|
+ activityInviteConfigVo = new ActivityInviteConfigVo();
|
|
|
+ activityInviteConfigVo.setErrorMessage("存在有效的邀请活动");
|
|
|
+ return activityInviteConfigVo;
|
|
|
}
|
|
|
+
|
|
|
BeanUtils.copyProperties(activityInviteConfigVo, activityInviteConfig);
|
|
|
int insertCount = activityInviteConfigMapper.insert(activityInviteConfig);
|
|
|
if(insertCount == 0){
|
|
|
@@ -75,18 +68,6 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
|
|
|
}
|
|
|
} else {
|
|
|
BeanUtils.copyProperties(activityInviteConfigVo, activityInviteConfig);
|
|
|
- if(activityInviteConfigVo.getActivityTimeType()!=null && activityInviteConfigVo.getActivityTimeType() == 2) {
|
|
|
- LambdaQueryWrapper<ActivityInviteConfig> limitedTimeUpdateActivityInviteConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- limitedTimeUpdateActivityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getDeleteFlag, 0);
|
|
|
- limitedTimeUpdateActivityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getActivityTimeType,2);
|
|
|
- limitedTimeUpdateActivityInviteConfigLambdaQueryWrapper.ne(ActivityInviteConfig::getId,activityInviteConfig.getId());
|
|
|
- List<ActivityInviteConfig> activityInviteConfigList = activityInviteConfigMapper.selectList(limitedTimeUpdateActivityInviteConfigLambdaQueryWrapper);
|
|
|
- boolean checkResult = checkTime(activityInviteConfigList);
|
|
|
- if(!checkResult){
|
|
|
- activityInviteConfigVo.setErrorMessage("方案时间重叠");
|
|
|
- return activityInviteConfigVo;
|
|
|
- }
|
|
|
- }
|
|
|
int updateCount = activityInviteConfigMapper.updateById(activityInviteConfig);
|
|
|
if(updateCount == 0){
|
|
|
//更新活动配置数据失败,返回
|
|
|
@@ -148,23 +129,82 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- private boolean checkTime(List<ActivityInviteConfig> activityInviteConfigList){
|
|
|
- if (activityInviteConfigList == null || activityInviteConfigList.size() <= 1) {
|
|
|
- return true;
|
|
|
+ @Override
|
|
|
+ public ActivityInviteInfoVo getInviteInfo(Integer userId) {
|
|
|
+ LifeUser lifeUser = lifeUserMapper.selectById(userId);
|
|
|
+ String inviteCode = "";
|
|
|
+
|
|
|
+ if(lifeUser != null && StringUtils.isNotBlank(lifeUser.getInviteCode())){
|
|
|
+ inviteCode = lifeUser.getInviteCode();
|
|
|
+ } else{
|
|
|
+ int count = 1;
|
|
|
+ while (count <= 5) {
|
|
|
+ count++;
|
|
|
+ inviteCode = RandomCreateUtil.getRandomNStr(6);
|
|
|
+ LambdaQueryWrapper<LifeUser> lifeUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lifeUserLambdaQueryWrapper.eq(LifeUser::getInviteCode, inviteCode);
|
|
|
+ lifeUserLambdaQueryWrapper.eq(LifeUser::getDeleteFlag, 0);
|
|
|
+ int repeatCount = lifeUserMapper.selectCount(lifeUserLambdaQueryWrapper);
|
|
|
+ if(repeatCount == 0) {
|
|
|
+ LifeUser updateLifeUser = new LifeUser();
|
|
|
+ updateLifeUser.setId(userId);
|
|
|
+ updateLifeUser.setInviteCode(inviteCode);
|
|
|
+ lifeUserMapper.updateById(updateLifeUser);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ActivityInviteLog> activityInviteLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getInviteUserId, userId);
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDeleteFlag, 0);
|
|
|
+ List<ActivityInviteLog> activityInviteLogList = activityInviteLogMapper.selectList(activityInviteLogLambdaQueryWrapper);
|
|
|
+ int inviteCount = 0;
|
|
|
+ int invitePoint = 0;
|
|
|
+ if(CollectionUtils.isNotEmpty(activityInviteLogList)){
|
|
|
+ inviteCount = activityInviteLogList.size();
|
|
|
+// invitePoint = activityInviteLogList.stream()
|
|
|
+// .mapToInt(ActivityInviteLog::getInvitePoint) // 将 Entity 流转换为 int 流
|
|
|
+// .sum();
|
|
|
+ }
|
|
|
+ ActivityInviteInfoVo activityInviteInfoVo = new ActivityInviteInfoVo();
|
|
|
+ activityInviteInfoVo.setInviteCode(inviteCode);
|
|
|
+ activityInviteInfoVo.setInviteCount(inviteCount);
|
|
|
+ activityInviteInfoVo.setInvitePoint(invitePoint);
|
|
|
+
|
|
|
+ return activityInviteInfoVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<ActivityInviteLog> getInviteActivityLogList(int pageNum, int pageSize, Integer userId) {
|
|
|
+
|
|
|
+ IPage<ActivityInviteLog> iPage = new Page<>(pageNum, pageSize);
|
|
|
+ LambdaQueryWrapper<ActivityInviteLog> activityInviteLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if(userId != null) {
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getInvitedUserId, userId);
|
|
|
}
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDeleteFlag, 0 );
|
|
|
+ return activityInviteLogMapper.selectPage(iPage, activityInviteLogLambdaQueryWrapper);
|
|
|
+ }
|
|
|
|
|
|
- // 按开始时间排序
|
|
|
- List<ActivityInviteConfig> sorted = new ArrayList<>(activityInviteConfigList);
|
|
|
- sorted.sort(Comparator.comparing(ActivityInviteConfig::getActivityStartTime));
|
|
|
- for (int i = 0; i < sorted.size() - 1; i++) {
|
|
|
- ActivityInviteConfig current = sorted.get(i);
|
|
|
- ActivityInviteConfig next = sorted.get(i + 1);
|
|
|
+ @Override
|
|
|
+ public String bindInviteCode(Integer userId, String inviteCode) {
|
|
|
+ if(StringUtils.isNotBlank(inviteCode)){
|
|
|
+ LifeUser originalLifeUser = lifeUserMapper.selectById(userId);
|
|
|
+ if(originalLifeUser!=null && StringUtils.isNotBlank(originalLifeUser.getInviteCode())){
|
|
|
+ return "已经绑定邀请码";
|
|
|
+ } else {
|
|
|
+ LambdaQueryWrapper<ActivityInviteConfig> activityInviteConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ activityInviteConfigLambdaQueryWrapper.eq(ActivityInviteConfig::getDeleteFlag,0);
|
|
|
+ List<ActivityInviteConfig> activityInviteConfigList = activityInviteConfigMapper.selectList(activityInviteConfigLambdaQueryWrapper);
|
|
|
+ if(CollectionUtils.isNotEmpty(activityInviteConfigList)){
|
|
|
+ ActivityInviteConfig activityInviteConfig = activityInviteConfigList.get(0);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 检查重叠条件:当前结束时间 > 下一个开始时间
|
|
|
- if (current.getActivityEndTime().compareTo(next.getActivityStartTime()) > 0) {
|
|
|
- return false; // 存在重叠
|
|
|
- }
|
|
|
}
|
|
|
- return true;
|
|
|
+ return "";
|
|
|
}
|
|
|
}
|