...
|
...
|
@@ -22,10 +22,12 @@ import org.slf4j.Logger; |
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class ActivityServiceImpl implements IActivityService {
|
...
|
...
|
@@ -53,25 +55,19 @@ public class ActivityServiceImpl implements IActivityService { |
|
|
@Override
|
|
|
public List<PromotionActivityRspBo> getActivityListForProduct(Integer productId, String businessClient) {
|
|
|
logger.info("getPromotionActivityList: enter. productId is {}, businessClient is {}", productId, businessClient);
|
|
|
//获取当前正在进行中的活动
|
|
|
Activity activity = activityMapper.selectRunningActivity(DateUtil.getCurrentTimeSeconds());
|
|
|
if(activity == null) { // 没有进行中的促销活动
|
|
|
//获取当前正在进行中活动
|
|
|
List<Activity> activityList = activityMapper.selectRunningActivity(DateUtil.getCurrentTimeSeconds());
|
|
|
if(CollectionUtils.isEmpty(activityList)){
|
|
|
logger.info("getPromotionActivityList: no running activity. productId is {}", productId);
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
|
|
|
if (BusinessClientEnum.BUSINESS_CLIENT_XIANYU.getName().equals(businessClient)
|
|
|
&& StringUtils.isNotEmpty(activity.getBusinessClient())
|
|
|
&& !activity.getBusinessClient().contains(BusinessClientEnum.BUSINESS_CLIENT_XIANYU.getName())) { // 如果是闲鱼请求,则比较促销活动的类型是否含有闲鱼
|
|
|
logger.info("getPromotionActivityList: no running xianyu activity. productId is {}", productId);
|
|
|
return new ArrayList<>();
|
|
|
} else if (!BusinessClientEnum.BUSINESS_CLIENT_XIANYU.getName().equals(businessClient)
|
|
|
&& StringUtils.isNotEmpty(activity.getBusinessClient())
|
|
|
&& !activity.getBusinessClient().contains(BusinessClientEnum.BUSINESS_CLIENT_UFO.getName())) { // 非闲鱼请求 ,则比较促销活动类型是否含有UFO
|
|
|
logger.info("getPromotionActivityList: no running ufo activity. productId is {}", productId);
|
|
|
//匹配对用购买渠道的活动(同一时间最多两个促销活动,闲鱼,ufo各一个)
|
|
|
List<Activity> businessClientActivityList = activityList.stream().filter(x -> StringUtils.isNotEmpty(x.getBusinessClient()) && x.getBusinessClient().equals(businessClient)).collect(Collectors.toList());
|
|
|
if(CollectionUtils.isEmpty(businessClientActivityList)){
|
|
|
logger.info("getPromotionActivityList: no running activity. productId is {}, businessClient is {}", productId, businessClient);
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
|
|
|
Activity activity = businessClientActivityList.get(0);
|
|
|
//判断商品是否符合商品池限制条件(limitType: 1-包含商品池 2-不包含商品池)
|
|
|
ActivityProductScope productScope = activityProductScopeMapper.selectByActivityId(activity.getId());
|
|
|
if(productScope.getProductScopeType().equals(PromotionProductLimitEnum.POOL.getCode())) {
|
...
|
...
|
@@ -101,53 +97,55 @@ public class ActivityServiceImpl implements IActivityService { |
|
|
@Override
|
|
|
public List<PromotionActivityRspBo> getActivityListForOrder() {
|
|
|
logger.info("getPromotionActivityList: enter");
|
|
|
//获取当前正在进行的活动
|
|
|
Activity activity = activityMapper.selectRunningActivity(DateUtil.getCurrentTimeSeconds());
|
|
|
if(activity == null){
|
|
|
logger.info("getPromotionActivityList: no running activity");
|
|
|
//获取当前正在进行的活动,当前时间最多同时存在两个促销活动,ufo/闲鱼各一个
|
|
|
List<Activity> activityList = activityMapper.selectRunningActivity(DateUtil.getCurrentTimeSeconds());
|
|
|
if(CollectionUtils.isEmpty(activityList)){
|
|
|
logger.info("getPromotionActivityList: no running activity ");
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
//组装活动详细信息
|
|
|
PromotionActivityRspBo rspBo = new PromotionActivityRspBo();
|
|
|
rspBo.setId(activity.getId());
|
|
|
rspBo.setActivityName(activity.getActivityName());
|
|
|
rspBo.setStartTime(activity.getStartTime());
|
|
|
rspBo.setEndTime(activity.getEndTime());
|
|
|
rspBo.setPromotionType(activity.getPromotionType());
|
|
|
rspBo.setLabel(activity.getLabel());
|
|
|
rspBo.setBusinessClient(activity.getBusinessClient());
|
|
|
List<Integer> productLimitTypeList = new ArrayList<>();
|
|
|
for(String productLimitType : activity.getProductLimitType().split(",")){
|
|
|
productLimitTypeList.add(Integer.valueOf(productLimitType));
|
|
|
}
|
|
|
rspBo.setProductTypeLimitList(productLimitTypeList);
|
|
|
//参与次数过滤条件
|
|
|
PromotionJoinTimeLimitBo joinTimeLimitBo = new PromotionJoinTimeLimitBo();
|
|
|
joinTimeLimitBo.setType(activity.getJoinLimitType());
|
|
|
joinTimeLimitBo.setActivityJoinLimitTime(activity.getJoinLimitTimes());
|
|
|
rspBo.setPromotionJoinTimeLimit(joinTimeLimitBo);
|
|
|
//金额限制条件
|
|
|
ActivityAmountCondition activityAmountCondition = activityAmountConditionMapper.selectByActivityId(activity.getId());
|
|
|
List<PromotionAmountConditionBo> amountConditionBoList = new ArrayList<>();
|
|
|
PromotionAmountConditionBo amountConditionBo = new PromotionAmountConditionBo();
|
|
|
amountConditionBo.setLimitAmount(activityAmountCondition.getLimitAmount());
|
|
|
amountConditionBo.setOfferAmount(activityAmountCondition.getOfferAmount());
|
|
|
amountConditionBo.setOfferMaxLimit(activityAmountCondition.getOfferMaxLimit());
|
|
|
amountConditionBoList.add(amountConditionBo);
|
|
|
rspBo.setPromotionConditionList(amountConditionBoList);
|
|
|
//商品范围限制条件
|
|
|
ActivityProductScope productScope = activityProductScopeMapper.selectByActivityId(activity.getId());
|
|
|
List<PromotionProductScopeBo> productScopeBoList = new ArrayList<>();
|
|
|
PromotionProductScopeBo productScopeBo = new PromotionProductScopeBo();
|
|
|
Integer productScopeType = productScope.getProductScopeType();
|
|
|
productScopeBo.setProductScopeType(productScopeType);
|
|
|
productScopeBo.setLimitType(productScopeType.equals(PromotionProductLimitEnum.ALL.getCode()) ? null : productScope.getLimitType());
|
|
|
productScopeBo.setScopeValue(productScopeType.equals(PromotionProductLimitEnum.ALL.getCode()) ? null : productScope.getLimitValues());
|
|
|
productScopeBoList.add(productScopeBo);
|
|
|
rspBo.setPromotionProductScopeList(productScopeBoList);
|
|
|
logger.info("getPromotionActivityList: end.activityInfo is {}", rspBo);
|
|
|
List<PromotionActivityRspBo> list = new ArrayList<>();
|
|
|
list.add(rspBo);
|
|
|
for(Activity activity: activityList) {
|
|
|
//组装活动详细信息
|
|
|
PromotionActivityRspBo rspBo = new PromotionActivityRspBo();
|
|
|
rspBo.setId(activity.getId());
|
|
|
rspBo.setActivityName(activity.getActivityName());
|
|
|
rspBo.setStartTime(activity.getStartTime());
|
|
|
rspBo.setEndTime(activity.getEndTime());
|
|
|
rspBo.setPromotionType(activity.getPromotionType());
|
|
|
rspBo.setLabel(activity.getLabel());
|
|
|
rspBo.setBusinessClient(activity.getBusinessClient());
|
|
|
List<Integer> productLimitTypeList = new ArrayList<>();
|
|
|
for (String productLimitType : activity.getProductLimitType().split(",")) {
|
|
|
productLimitTypeList.add(Integer.valueOf(productLimitType));
|
|
|
}
|
|
|
rspBo.setProductTypeLimitList(productLimitTypeList);
|
|
|
//参与次数过滤条件
|
|
|
PromotionJoinTimeLimitBo joinTimeLimitBo = new PromotionJoinTimeLimitBo();
|
|
|
joinTimeLimitBo.setType(activity.getJoinLimitType());
|
|
|
joinTimeLimitBo.setActivityJoinLimitTime(activity.getJoinLimitTimes());
|
|
|
rspBo.setPromotionJoinTimeLimit(joinTimeLimitBo);
|
|
|
//金额限制条件
|
|
|
ActivityAmountCondition activityAmountCondition = activityAmountConditionMapper.selectByActivityId(activity.getId());
|
|
|
List<PromotionAmountConditionBo> amountConditionBoList = new ArrayList<>();
|
|
|
PromotionAmountConditionBo amountConditionBo = new PromotionAmountConditionBo();
|
|
|
amountConditionBo.setLimitAmount(activityAmountCondition.getLimitAmount());
|
|
|
amountConditionBo.setOfferAmount(activityAmountCondition.getOfferAmount());
|
|
|
amountConditionBo.setOfferMaxLimit(activityAmountCondition.getOfferMaxLimit());
|
|
|
amountConditionBoList.add(amountConditionBo);
|
|
|
rspBo.setPromotionConditionList(amountConditionBoList);
|
|
|
//商品范围限制条件
|
|
|
ActivityProductScope productScope = activityProductScopeMapper.selectByActivityId(activity.getId());
|
|
|
List<PromotionProductScopeBo> productScopeBoList = new ArrayList<>();
|
|
|
PromotionProductScopeBo productScopeBo = new PromotionProductScopeBo();
|
|
|
Integer productScopeType = productScope.getProductScopeType();
|
|
|
productScopeBo.setProductScopeType(productScopeType);
|
|
|
productScopeBo.setLimitType(productScopeType.equals(PromotionProductLimitEnum.ALL.getCode()) ? null : productScope.getLimitType());
|
|
|
productScopeBo.setScopeValue(productScopeType.equals(PromotionProductLimitEnum.ALL.getCode()) ? null : productScope.getLimitValues());
|
|
|
productScopeBoList.add(productScopeBo);
|
|
|
rspBo.setPromotionProductScopeList(productScopeBoList);
|
|
|
list.add(rspBo);
|
|
|
}
|
|
|
logger.info("getPromotionActivityList: end.activityInfo is {}", list);
|
|
|
return list;
|
|
|
}
|
|
|
|
...
|
...
|
|