|
|
package com.yohoufo.promotion.service.impl;
|
|
|
|
|
|
import com.yoho.tools.common.utils.DateUtil;
|
|
|
import com.yohobuy.ufo.model.promotion.response.promotionActivity.PromotionActivityRspBo;
|
|
|
import com.yohobuy.ufo.model.promotion.response.promotionActivity.PromotionAmountConditionBo;
|
|
|
import com.yohobuy.ufo.model.promotion.response.promotionActivity.PromotionJoinTimeLimitBo;
|
|
|
import com.yohobuy.ufo.model.promotion.response.promotionActivity.PromotionProductScopeBo;
|
|
|
import com.yohoufo.dal.product.ProductPoolDetailMapper;
|
|
|
import com.yohoufo.dal.product.model.ProductPoolDetail;
|
|
|
import com.yohoufo.dal.promotion.IActivityAmountConditionMapper;
|
|
|
import com.yohoufo.dal.promotion.IActivityMapper;
|
|
|
import com.yohoufo.dal.promotion.IActivityProductScopeMapper;
|
|
|
import com.yohoufo.dal.promotion.model.Activity;
|
|
|
import com.yohoufo.dal.promotion.model.ActivityAmountCondition;
|
|
|
import com.yohoufo.dal.promotion.model.ActivityProductScope;
|
|
|
import com.yohoufo.promotion.service.IActivityService;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Service
|
|
|
public class ActivityServiceImpl implements IActivityService {
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
|
@Autowired
|
|
|
IActivityMapper activityMapper;
|
|
|
|
|
|
@Autowired
|
|
|
ProductPoolDetailMapper productPoolDetailMapper;
|
|
|
|
|
|
@Autowired
|
|
|
IActivityProductScopeMapper activityProductScopeMapper;
|
|
|
|
|
|
@Autowired
|
|
|
IActivityAmountConditionMapper activityAmountConditionMapper;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 根据商品id返回符合条件的促销活动
|
|
|
* @param productId
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public List<PromotionActivityRspBo> getPromotionActivityList(Integer productId) {
|
|
|
logger.info("getPromotionActivityList: enter. productId is {}", productId);
|
|
|
//获取当前正在进行中的活动
|
|
|
Activity activity = activityMapper.selectRunningActivity(DateUtil.getCurrentTimeSeconds());
|
|
|
if(activity == null){
|
|
|
logger.info("getPromotionActivityList: no running activity. productId is {}", productId);
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
//判断商品是否符合商品池限制条件(limitType: 1-包含商品池 2-不包含商品池)
|
|
|
ActivityProductScope productScope = activityProductScopeMapper.selectByActivityId(activity.getId());
|
|
|
ProductPoolDetail productPoolDetail = productPoolDetailMapper.selectByPoolId(productId, Integer.valueOf(productScope.getLimitValues()));
|
|
|
if((productScope.getLimitType() == 1 && productPoolDetail == null)
|
|
|
|| (productScope.getLimitType() == 2 && productPoolDetail != null)){
|
|
|
logger.info("getPromotionActivityList: not in productScope. productId is {}, productPoolId is {}", productScope.getLimitValues());
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
//获取这些活动列表相关的信息
|
|
|
PromotionActivityRspBo rspBo = new PromotionActivityRspBo();
|
|
|
rspBo.setActivityName(activity.getActivityName());
|
|
|
rspBo.setStartTime(activity.getStartTime());
|
|
|
rspBo.setEndTime(activity.getEndTime());
|
|
|
rspBo.setPromotionType(activity.getPromotionType());
|
|
|
rspBo.setLabel(activity.getLabel());
|
|
|
List<PromotionActivityRspBo> list = new ArrayList<>();
|
|
|
list.add(rspBo);
|
|
|
logger.info("getPromotionActivityList: end. productId is {}, activityId is {}", rspBo);
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public PromotionActivityRspBo getPromotionActivityDetail(Integer currentTime) {
|
|
|
logger.info("getPromotionActivityList: enter. currentTime is {}", currentTime);
|
|
|
//获取当前正在进行的活动
|
|
|
Activity activity = activityMapper.selectRunningActivity(currentTime);
|
|
|
if(activity == null){
|
|
|
logger.info("getPromotionActivityList: no running activity. currentTime is {}", currentTime);
|
|
|
return null;
|
|
|
}
|
|
|
//组装活动详细信息
|
|
|
PromotionActivityRspBo rspBo = new PromotionActivityRspBo();
|
|
|
rspBo.setActivityName(activity.getActivityName());
|
|
|
rspBo.setStartTime(activity.getStartTime());
|
|
|
rspBo.setEndTime(activity.getEndTime());
|
|
|
rspBo.setPromotionType(activity.getPromotionType());
|
|
|
rspBo.setLabel(activity.getLabel());
|
|
|
//参与次数过滤条件
|
|
|
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();
|
|
|
productScopeBo.setLimitType(productScope.getLimitType());
|
|
|
productScopeBo.setProductScopeType(productScope.getProductScopeType());
|
|
|
productScopeBo.setScopeValue(productScope.getLimitValues());
|
|
|
productScopeBoList.add(productScopeBo);
|
|
|
rspBo.setPromotionProductScopeList(productScopeBoList);
|
|
|
logger.info("getPromotionActivityList: end. currentTime is {}, activityInfo is {}", currentTime, rspBo);
|
|
|
return rspBo;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|