From c5f052ed43cec754ed685576fec44ea4d8510a81 Mon Sep 17 00:00:00 2001 From: zhenghuang <236220500@qq.com> Date: Fri, 29 May 2020 15:53:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=99=A8,=E6=AC=A2=E8=BF=8E?= =?UTF-8?q?=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/scheduleds/ActivityExpire.java | 15 +++- .../service/IPmnActivityInstanceService.java | 3 + .../impl/PmnActivityInstanceServiceImpl.java | 53 ++++++++++++++ src/test/java/test/Test.java | 70 +++++++++++++++++-- 4 files changed, 135 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java b/src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java index 264f045..fd583ef 100644 --- a/src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java +++ b/src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java @@ -1,15 +1,28 @@ package com.kiisoo.ic.activity.scheduleds; +import com.kiisoo.ic.activity.service.*; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component @Slf4j public class ActivityExpire { + @Autowired + IPmnActivityInstanceService pmnActivityInstanceService; + @Scheduled(cron = "0 0 0 * * ?") public void scheduled(){ //TODO 活动实例/实例关联信息/活动码失效 - log.info("执行活动失效: {}",System.currentTimeMillis()); + log.info("执行活动状态: {}",System.currentTimeMillis()); + /** + * 有效 + */ + pmnActivityInstanceService.scanValidAndSet(); + /** + * 失效 + */ + pmnActivityInstanceService.scanInvalidAndSer(); } } diff --git a/src/main/java/com/kiisoo/ic/activity/service/IPmnActivityInstanceService.java b/src/main/java/com/kiisoo/ic/activity/service/IPmnActivityInstanceService.java index 272fa0b..ec53004 100644 --- a/src/main/java/com/kiisoo/ic/activity/service/IPmnActivityInstanceService.java +++ b/src/main/java/com/kiisoo/ic/activity/service/IPmnActivityInstanceService.java @@ -31,4 +31,7 @@ public interface IPmnActivityInstanceService extends IService listByStoreId(Long storeId, Integer status, Date beginTime, Date endTime); + + void scanValidAndSet(); + void scanInvalidAndSer(); } diff --git a/src/main/java/com/kiisoo/ic/activity/service/impl/PmnActivityInstanceServiceImpl.java b/src/main/java/com/kiisoo/ic/activity/service/impl/PmnActivityInstanceServiceImpl.java index 52140ad..da1e5b4 100644 --- a/src/main/java/com/kiisoo/ic/activity/service/impl/PmnActivityInstanceServiceImpl.java +++ b/src/main/java/com/kiisoo/ic/activity/service/impl/PmnActivityInstanceServiceImpl.java @@ -23,6 +23,7 @@ import com.kiisoo.ic.system.entity.PrivilageRoleDO; import com.kiisoo.ic.system.enums.RoleEnum; import com.kiisoo.ic.system.mapper.PrivilageAccountDOMapper; import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -43,6 +44,7 @@ import java.util.stream.Collectors; * @since 2020-05-19 */ @Service +@Slf4j public class PmnActivityInstanceServiceImpl extends ServiceImpl implements IPmnActivityInstanceService { @Autowired private IPmnActivityInstanceService pmnActivityInstanceService; @@ -89,6 +91,8 @@ public class PmnActivityInstanceServiceImpl extends ServiceImpl starts = pmnActivityInstanceService.list(Wrappers.lambdaQuery().eq(PmnActivityInstance::getStatus, 1).le(PmnActivityInstance::getBeginTime, now).ge(PmnActivityInstance::getEndTime, now).select(PmnActivityInstance::getId)); + if(starts.size() > 0) { + starts.stream().forEach(item -> item.setStatus(2L)); + Set startInstances = starts.stream().map(PmnActivityInstance::getId).collect(Collectors.toSet()); + pmnActivityInstanceService.updateBatchById(starts); + PmnPromotionSrc startPromotionSrc = new PmnPromotionSrc(); + startPromotionSrc.setStatus(1L); + PmnActivityInstanceConfig startConfig = new PmnActivityInstanceConfig(); + startConfig.setStatus(1L); + PmnActivityStoreRelation startStoreRelation = new PmnActivityStoreRelation(); + startStoreRelation.setStatus(1); + PmnActivityPromotionCase startCase = new PmnActivityPromotionCase(); + startCase.setStatus(1L); + pmnPromotionSrcService.update(startPromotionSrc, Wrappers.lambdaQuery().in(PmnPromotionSrc::getInstanceId, startInstances).ne(PmnPromotionSrc::getStatus, 1)); + pmnActivityInstanceConfigService.update(startConfig, Wrappers.lambdaQuery().in(PmnActivityInstanceConfig::getInstanceId, startInstances).ne(PmnActivityInstanceConfig::getStatus, 1)); + pmnActivityStoreRelationService.update(startStoreRelation, Wrappers.lambdaQuery().in(PmnActivityStoreRelation::getInstanceId, startInstances).ne(PmnActivityStoreRelation::getStatus, 1)); + pmnActivityPromotionCaseService.update(startCase, Wrappers.lambdaQuery().in(PmnActivityPromotionCase::getInstanceId, startInstances).ne(PmnActivityPromotionCase::getStatus, 1)); + log.info("starts: {}", starts); + } + } + + @Transactional + @Override + public void scanInvalidAndSer() { + Date now = new Date(); + List ends = pmnActivityInstanceService.list(Wrappers.lambdaQuery().ne(PmnActivityInstance::getStatus, 3).ne(PmnActivityInstance::getStatus, 4).le(PmnActivityInstance::getEndTime, now).select(PmnActivityInstance::getId)); + if(ends.size() > 0) { + ends.stream().forEach(item -> item.setStatus(3L)); + Set endInstances = ends.stream().map(PmnActivityInstance::getId).collect(Collectors.toSet()); + pmnActivityInstanceService.updateBatchById(ends); + PmnPromotionSrc endPromotionSrc = new PmnPromotionSrc(); + endPromotionSrc.setStatus(2L); + PmnActivityInstanceConfig endConfig = new PmnActivityInstanceConfig(); + endConfig.setStatus(2L); + PmnActivityStoreRelation endStoreRelation = new PmnActivityStoreRelation(); + endStoreRelation.setStatus(2); + PmnActivityPromotionCase endCase = new PmnActivityPromotionCase(); + endCase.setStatus(2L); + pmnPromotionSrcService.update(endPromotionSrc, Wrappers.lambdaQuery().in(PmnPromotionSrc::getInstanceId, endInstances).ne(PmnPromotionSrc::getStatus, 2)); + pmnActivityInstanceConfigService.update(endConfig, Wrappers.lambdaQuery().in(PmnActivityInstanceConfig::getInstanceId, endInstances).ne(PmnActivityInstanceConfig::getStatus, 2)); + pmnActivityStoreRelationService.update(endStoreRelation, Wrappers.lambdaQuery().in(PmnActivityStoreRelation::getInstanceId, endInstances).ne(PmnActivityStoreRelation::getStatus, 2)); + pmnActivityPromotionCaseService.update(endCase, Wrappers.lambdaQuery().in(PmnActivityPromotionCase::getInstanceId, endInstances).ne(PmnActivityPromotionCase::getStatus, 2)); + } + } } diff --git a/src/test/java/test/Test.java b/src/test/java/test/Test.java index dc3d543..ff7df1c 100644 --- a/src/test/java/test/Test.java +++ b/src/test/java/test/Test.java @@ -1,20 +1,27 @@ package test; -import com.kiisoo.ic.activity.entity.PmnActivityStoreRelation; -import com.kiisoo.ic.activity.service.IPmnActivityStoreRelationService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.kiisoo.ic.activity.entity.*; +import com.kiisoo.ic.activity.service.*; import com.kiisoo.ic.app.IcApplication; import com.kiisoo.ic.generalize.entity.PrivilageOrganizational; import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; import com.kiisoo.ic.wx.service.AddWXService; +import lombok.extern.slf4j.Slf4j; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @RunWith(SpringRunner.class) @SpringBootTest(classes = IcApplication.class) +@Slf4j public class Test { @Autowired @@ -23,9 +30,17 @@ public class Test { PoiStoreDOMapper poiStoreDOMapper; @Autowired IPmnActivityStoreRelationService pmnActivityStoreRelationService; + @Autowired + IPmnPromotionSrcService pmnPromotionSrcService; + @Autowired + IPmnActivityInstanceService pmnActivityInstanceService; + @Autowired + IPmnActivityInstanceConfigService pmnActivityInstanceConfigService; + @Autowired + IPmnActivityPromotionCaseService pmnActivityPromotionCaseService; @org.junit.Test - public void fillStoreCompany(){ + public void fillStoreCompany() { List relations = pmnActivityStoreRelationService.list(); relations.stream().forEach(item -> { PrivilageOrganizational org = poiStoreDOMapper.findStoreCompany(item.getStoreId()); @@ -35,7 +50,52 @@ public class Test { } @org.junit.Test - public void te(){ - addWXService.addWX("a","b"); + @Transactional + public void activityStatusTest() { + /** + * 有效 + */ + Date now = new Date(); + List starts = pmnActivityInstanceService.list(Wrappers.lambdaQuery().eq(PmnActivityInstance::getStatus, 1).le(PmnActivityInstance::getBeginTime, now).ge(PmnActivityInstance::getEndTime, now).select(PmnActivityInstance::getId)); + if(starts.size() > 0) { + starts.stream().forEach(item -> item.setStatus(2L)); + Set startInstances = starts.stream().map(PmnActivityInstance::getId).collect(Collectors.toSet()); + pmnActivityInstanceService.updateBatchById(starts); + PmnPromotionSrc startPromotionSrc = new PmnPromotionSrc(); + startPromotionSrc.setStatus(1L); + PmnActivityInstanceConfig startConfig = new PmnActivityInstanceConfig(); + startConfig.setStatus(1L); + PmnActivityStoreRelation startStoreRelation = new PmnActivityStoreRelation(); + startStoreRelation.setStatus(1); + PmnActivityPromotionCase startCase = new PmnActivityPromotionCase(); + startCase.setStatus(1L); + pmnPromotionSrcService.update(startPromotionSrc, Wrappers.lambdaQuery().in(PmnPromotionSrc::getInstanceId, startInstances).ne(PmnPromotionSrc::getStatus, 1)); + pmnActivityInstanceConfigService.update(startConfig, Wrappers.lambdaQuery().in(PmnActivityInstanceConfig::getInstanceId, startInstances).ne(PmnActivityInstanceConfig::getStatus, 1)); + pmnActivityStoreRelationService.update(startStoreRelation, Wrappers.lambdaQuery().in(PmnActivityStoreRelation::getInstanceId, startInstances).ne(PmnActivityStoreRelation::getStatus, 1)); + pmnActivityPromotionCaseService.update(startCase, Wrappers.lambdaQuery().in(PmnActivityPromotionCase::getInstanceId, startInstances).ne(PmnActivityPromotionCase::getStatus, 1)); + log.info("starts: {}", starts); + } + /** + * 失效 + */ + List ends = pmnActivityInstanceService.list(Wrappers.lambdaQuery().ne(PmnActivityInstance::getStatus, 3).ne(PmnActivityInstance::getStatus, 4).le(PmnActivityInstance::getEndTime, now).select(PmnActivityInstance::getId)); + if(ends.size() > 0) { + ends.stream().forEach(item -> item.setStatus(3L)); + Set endInstances = ends.stream().map(PmnActivityInstance::getId).collect(Collectors.toSet()); + pmnActivityInstanceService.updateBatchById(ends); + PmnPromotionSrc endPromotionSrc = new PmnPromotionSrc(); + endPromotionSrc.setStatus(2L); + PmnActivityInstanceConfig endConfig = new PmnActivityInstanceConfig(); + endConfig.setStatus(2L); + PmnActivityStoreRelation endStoreRelation = new PmnActivityStoreRelation(); + endStoreRelation.setStatus(2); + PmnActivityPromotionCase endCase = new PmnActivityPromotionCase(); + endCase.setStatus(2L); + pmnPromotionSrcService.update(endPromotionSrc, Wrappers.lambdaQuery().in(PmnPromotionSrc::getInstanceId, endInstances).ne(PmnPromotionSrc::getStatus, 2)); + pmnActivityInstanceConfigService.update(endConfig, Wrappers.lambdaQuery().in(PmnActivityInstanceConfig::getInstanceId, endInstances).ne(PmnActivityInstanceConfig::getStatus, 2)); + pmnActivityStoreRelationService.update(endStoreRelation, Wrappers.lambdaQuery().in(PmnActivityStoreRelation::getInstanceId, endInstances).ne(PmnActivityStoreRelation::getStatus, 2)); + pmnActivityPromotionCaseService.update(endCase, Wrappers.lambdaQuery().in(PmnActivityPromotionCase::getInstanceId, endInstances).ne(PmnActivityPromotionCase::getStatus, 2)); + } + log.info("ends: {}", ends); } }