|
@@ -1,19 +1,41 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.UserFirstTimeSearch;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.UserFirstTime;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
+import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.ActivityPlanVo;
|
|
|
+import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
|
|
|
+import com.yonge.cooleshow.common.enums.ConditionEnum;
|
|
|
+import com.yonge.cooleshow.common.enums.ConditionMethodEnum;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ActivityPlanStandardDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.service.ActivityPlanStandardService;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
|
public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanStandardDao, ActivityPlanStandard> implements ActivityPlanStandardService {
|
|
|
private final static Logger log = LoggerFactory.getLogger(ActivityPlanStandardServiceImpl.class);
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ActivityPlanService activityPlanService;
|
|
|
+ @Autowired
|
|
|
+ private UserFirstTimeService userFirstTimeService;
|
|
|
+ @Autowired
|
|
|
+ private ActivityRewardService activityRewardService;
|
|
|
+
|
|
|
@Override
|
|
|
public boolean createOrUpdate(ActivityPlanDto activityPlan) {
|
|
|
ActivityPlanStandard planExpand = activityPlan.getPlanStandard();
|
|
@@ -22,7 +44,7 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
|
|
|
planExpand.setCreateBy(activityPlan.getUserId());
|
|
|
planExpand.setUpdateBy(activityPlan.getUserId());
|
|
|
save(planExpand);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
planExpand.setUpdateBy(activityPlan.getUserId());
|
|
|
updateById(planExpand);
|
|
|
}
|
|
@@ -31,7 +53,58 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
|
|
|
|
|
|
@Override
|
|
|
public void activityIng(Object param) {
|
|
|
+ //查询当前进行的活动
|
|
|
+ List<ActivityPlan> activityIds = activityPlanService.list(Wrappers.<ActivityPlan>lambdaQuery()
|
|
|
+ .eq(ActivityPlan::getActivityType, ActivityTypeEnum.STANDARD_GIFT)
|
|
|
+ .eq(ActivityPlan::getActivityState, 1)
|
|
|
+ .select(ActivityPlan::getId));
|
|
|
|
|
|
+ for (ActivityPlan activityPlan : activityIds) {
|
|
|
+ ActivityPlanVo detail = activityPlanService.detail(activityPlan.getId());
|
|
|
+
|
|
|
+ dealActivityIng(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void dealActivityIng(ActivityPlanVo detail) {
|
|
|
+ if(null == detail){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ActivityPlanStandard planStandard = detail.getPlanStandard();
|
|
|
+ if(null == planStandard){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ UserFirstTimeSearch search = new UserFirstTimeSearch();
|
|
|
+ search.setStartTime(detail.getActivityStart());
|
|
|
+ search.setEndTime(detail.getActivityEnd());
|
|
|
+ search.setUserType(detail.getActivityClient().getCode());
|
|
|
+
|
|
|
+ String timeType = planStandard.getCondition();
|
|
|
+ search.setTimeType(timeType);
|
|
|
+ List<String> timeTypes = WrapperUtil.toList(timeType);
|
|
|
+
|
|
|
+ List<UserFirstTime> userFirstTimes = userFirstTimeService.selectAllList(search);
|
|
|
+ if(CollectionUtils.isEmpty(userFirstTimes)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Map<Long, List<UserFirstTime>> userMap = userFirstTimes.stream().collect(Collectors.groupingBy(UserFirstTime::getUserId));
|
|
|
+ if(ConditionMethodEnum.OR.equals(planStandard.getCalculationMethod())){
|
|
|
+ for(Long userId : userMap.keySet()){
|
|
|
+ //给用户发奖
|
|
|
+ activityRewardService.sendReward(userId,detail.getId());
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ for(Long userId : userMap.keySet()){
|
|
|
+ List<UserFirstTime> firstTimes = userMap.get(userId);
|
|
|
+ if(firstTimes.size() == timeTypes.size()){
|
|
|
+ //给用户发奖
|
|
|
+ activityRewardService.sendReward(userId,detail.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|