|
|
@@ -3,6 +3,7 @@ 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.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@@ -11,6 +12,7 @@ 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.result.R;
|
|
|
import shop.alien.entity.store.*;
|
|
|
import shop.alien.entity.store.vo.ActivityInviteConfigVo;
|
|
|
import shop.alien.entity.store.vo.ActivityInviteInfoVo;
|
|
|
@@ -30,6 +32,8 @@ import java.time.ZoneId;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
@@ -283,6 +287,7 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
|
|
|
activityInviteLog.setInvitedRewardCoupon(activityInviteConfig.getInvitedRewardCoupon());
|
|
|
activityInviteLog.setInvitedRewardPoint(activityInviteConfig.getInvitedRewardPoint());
|
|
|
activityInviteLog.setInviteTime(Date.from(Instant.now()));
|
|
|
+ activityInviteLog.setDistributionStatus(0);
|
|
|
activityInviteLogMapper.insert(activityInviteLog);
|
|
|
|
|
|
if(activityInviteConfig.getInviteRewardType() == 2){
|
|
|
@@ -308,4 +313,69 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
|
|
|
}
|
|
|
return "参数异常";
|
|
|
}
|
|
|
+
|
|
|
+ public boolean distributionInviteReward(String invitedUserId, int inviteCondition){
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ActivityInviteLog> activityInviteLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getInvitedUserId, invitedUserId);
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDeleteFlag, 0);
|
|
|
+ activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDistributionStatus, 0);
|
|
|
+
|
|
|
+ // 未发放的邀请记录
|
|
|
+ List<ActivityInviteLog> activityInviteLogList = activityInviteLogMapper.selectList(activityInviteLogLambdaQueryWrapper);
|
|
|
+ if(CollectionUtils.isEmpty(activityInviteLogList)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Integer> logIdList = activityInviteLogList.stream()
|
|
|
+ .map(ActivityInviteLog::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if(CollectionUtils.isEmpty(logIdList)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 邀请记录对应的活动
|
|
|
+ List<Integer> activityIdList = activityInviteLogList.stream()
|
|
|
+ .map(ActivityInviteLog::getActivityId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if(CollectionUtils.isEmpty(activityIdList)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ List<ActivityInviteConfig> activityInviteConfigList = activityInviteConfigMapper.selectBatchIds(activityIdList);
|
|
|
+ if(CollectionUtils.isEmpty(activityInviteConfigList)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Integer, Integer> inviteConditionMap = activityInviteConfigList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ ActivityInviteConfig::getId,
|
|
|
+ ActivityInviteConfig::getInviteCondition
|
|
|
+ ));
|
|
|
+
|
|
|
+ for(ActivityInviteLog activityInviteLog : activityInviteLogList){
|
|
|
+ Integer activityId = activityInviteLog.getActivityId();
|
|
|
+ if(inviteConditionMap.containsKey(activityId)){
|
|
|
+ Integer inviteConditionValue = inviteConditionMap.get(activityId);
|
|
|
+ if(inviteConditionValue != null && !inviteConditionValue.equals(inviteCondition)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(activityInviteLog.getInviteRewardType() == 2){
|
|
|
+ userPointService.addPoint(activityInviteLog.getInviteUserId(), activityInviteLog.getInviteRewardPoint());
|
|
|
+ } else if(activityInviteLog.getInviteRewardType() == 1 && activityInviteLog.getInviteRewardCoupon() > 0){
|
|
|
+ lifeDiscountCouponService.issuePlatformCoupon(Collections.singletonList(activityInviteLog.getInviteUserId()), activityInviteLog.getInviteRewardCoupon());
|
|
|
+ }
|
|
|
+ if(activityInviteLog.getInvitedRewardType() == 2){
|
|
|
+ userPointService.addPoint(activityInviteLog.getInvitedUserId(), activityInviteLog.getInvitedRewardPoint());
|
|
|
+ } else if (activityInviteLog.getInvitedRewardType() == 1 && activityInviteLog.getInvitedRewardCoupon() > 0) {
|
|
|
+ lifeDiscountCouponService.issuePlatformCoupon(Collections.singletonList(activityInviteLog.getInvitedUserId()), activityInviteLog.getInvitedRewardCoupon());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaUpdateWrapper<ActivityInviteLog> activityInviteLogLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ activityInviteLogLambdaUpdateWrapper.in(ActivityInviteLog::getId, logIdList);
|
|
|
+ activityInviteLogLambdaUpdateWrapper.set(ActivityInviteLog::getDistributionStatus, 1);
|
|
|
+ activityInviteLogMapper.update(null, activityInviteLogLambdaUpdateWrapper);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|