diff --git a/src/main/java/com/kiisoo/ic/activity/event/ActivityInstanceCreatedEvent.java b/src/main/java/com/kiisoo/ic/activity/event/ActivityInstanceCreatedEvent.java index a6cf10d..dd458a1 100644 --- a/src/main/java/com/kiisoo/ic/activity/event/ActivityInstanceCreatedEvent.java +++ b/src/main/java/com/kiisoo/ic/activity/event/ActivityInstanceCreatedEvent.java @@ -10,6 +10,7 @@ public class ActivityInstanceCreatedEvent extends ApplicationEvent { private ActivityInstanceVO activityInstanceVO; + public ActivityInstanceCreatedEvent(Object source, PmnActivityInstance pmnActivityInstance, ActivityInstanceVO activityInstanceVO) { super(source); this.pmnActivityInstance = pmnActivityInstance; diff --git a/src/main/java/com/kiisoo/ic/activity/event/WelcomeCreatedEvent.java b/src/main/java/com/kiisoo/ic/activity/event/WelcomeCreatedEvent.java new file mode 100644 index 0000000..c5efe0c --- /dev/null +++ b/src/main/java/com/kiisoo/ic/activity/event/WelcomeCreatedEvent.java @@ -0,0 +1,28 @@ +package com.kiisoo.ic.activity.event; + +import com.kiisoo.ic.activity.bean.ActivityInstanceVO; +import com.kiisoo.ic.activity.entity.PmnActivityInstance; +import com.kiisoo.ic.store.entity.PoiStore; +import org.springframework.context.ApplicationEvent; + +import java.util.List; + +public class WelcomeCreatedEvent extends ApplicationEvent { + private List saveStores; + + private PmnActivityInstance instance; + + public WelcomeCreatedEvent(Object source, PmnActivityInstance instance, List saveStores) { + super(source); + this.instance = instance; + this.saveStores = saveStores; + } + + public PmnActivityInstance instance() { + return this.instance; + } + + public List stores() { + return this.saveStores; + } +} diff --git a/src/main/java/com/kiisoo/ic/activity/listener/WelcomeCreatedListener.java b/src/main/java/com/kiisoo/ic/activity/listener/WelcomeCreatedListener.java new file mode 100644 index 0000000..0cfdb40 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/activity/listener/WelcomeCreatedListener.java @@ -0,0 +1,57 @@ +package com.kiisoo.ic.activity.listener; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.kiisoo.ic.activity.entity.PmnActivityStoreRelation; +import com.kiisoo.ic.activity.event.WelcomeCreatedEvent; +import com.kiisoo.ic.activity.service.IPmnActivityStoreRelationService; +import com.kiisoo.ic.generalize.entity.PrivilageOrganizational; +import com.kiisoo.ic.store.entity.PoiStore; +import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class WelcomeCreatedListener { + @Autowired + private IPmnActivityStoreRelationService pmnActivityStoreRelationService; + @Autowired + private PoiStoreDOMapper poiStoreDOMapper; + @Async + @EventListener + public void createStores(WelcomeCreatedEvent event) { + log.info("创建欢迎语"); + Set storeIds = new HashSet<>(); + List saveStores = new ArrayList<>(); + for (PoiStore store : event.stores()) { + PrivilageOrganizational org = poiStoreDOMapper.findStoreCompany(store.getId()); + PmnActivityStoreRelation pmnActivityStoreRelation = new PmnActivityStoreRelation(); + pmnActivityStoreRelation.setUpdateTime(new Date()); + pmnActivityStoreRelation.setStoreId(store.getId()); + pmnActivityStoreRelation.setInstanceId(event.instance().getId()); + pmnActivityStoreRelation.setCreateTime(new Date()); + int status = 1; + if (event.instance().getStatus() > 2) { + status = 2; + } + pmnActivityStoreRelation.setStatus(status); + pmnActivityStoreRelation.setCaseId(event.instance().getId()); + pmnActivityStoreRelation.setOrgId(org.getId()); + saveStores.add(pmnActivityStoreRelation); +// pmnActivityStoreRelationService.saveOrUpdate(pmnActivityStoreRelation, Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).eq(PmnActivityStoreRelation::getStoreId, store.getId())); + storeIds.add(store.getId()); + } + List relations = pmnActivityStoreRelationService.list(Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, event.instance().getId()).in(PmnActivityStoreRelation::getStoreId, storeIds).select(PmnActivityStoreRelation::getStoreId)); + Set hasStores = relations.stream().map(PmnActivityStoreRelation::getStoreId).collect(Collectors.toSet()); + if (hasStores.size() > 0) { + saveStores = saveStores.stream().filter(store -> hasStores.contains(store.getStoreId())).collect(Collectors.toList()); + } + pmnActivityStoreRelationService.saveBatch(saveStores); + } +} 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 c96b44b..31a36d8 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 @@ -6,6 +6,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.kiisoo.ic.activity.entity.*; import com.kiisoo.ic.activity.event.ActivityInstanceCreatedEvent; +import com.kiisoo.ic.activity.event.WelcomeCreatedEvent; import com.kiisoo.ic.activity.service.*; import com.kiisoo.ic.activity.bean.ActivityInstanceVO; import com.kiisoo.ic.activity.mapper.PmnActivityInstanceDOMapper; @@ -339,33 +340,9 @@ public class PmnActivityInstanceServiceImpl extends ServiceImpl 0) { pmnActivityPromotionParamService.remove(Wrappers.lambdaQuery().eq(PmnActivityPromotionParam::getPromotionId, pmnActivityPromotion.getId()).notIn(PmnActivityPromotionParam::getId, paramIds).eq(PmnActivityPromotionParam::getAttr, 2)); } - Set storeIds = new HashSet<>(); - List saveStores = new ArrayList<>(); - for (PoiStore store : activityInstanceVO.getStores()) { - PrivilageOrganizational org = poiStoreDOMapper.findStoreCompany(store.getId()); - PmnActivityStoreRelation pmnActivityStoreRelation = new PmnActivityStoreRelation(); - pmnActivityStoreRelation.setUpdateTime(new Date()); - pmnActivityStoreRelation.setStoreId(store.getId()); - pmnActivityStoreRelation.setInstanceId(pmnActivityInstance.getId()); - pmnActivityStoreRelation.setCreateTime(new Date()); - int status = 1; - if (pmnActivityInstance.getStatus() > 2) { - status = 2; - } - pmnActivityStoreRelation.setStatus(status); - pmnActivityStoreRelation.setCaseId(pmnActivityInstance.getId()); - pmnActivityStoreRelation.setOrgId(org.getId()); - saveStores.add(pmnActivityStoreRelation); -// pmnActivityStoreRelationService.saveOrUpdate(pmnActivityStoreRelation, Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).eq(PmnActivityStoreRelation::getStoreId, store.getId())); - storeIds.add(store.getId()); - } - List relations = pmnActivityStoreRelationService.list(Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).in(PmnActivityStoreRelation::getStoreId, storeIds).select(PmnActivityStoreRelation::getStoreId)); - Set hasStores = relations.stream().map(PmnActivityStoreRelation::getStoreId).collect(Collectors.toSet()); - if (hasStores.size() > 0) { - saveStores = saveStores.stream().filter(store -> hasStores.contains(store.getStoreId())).collect(Collectors.toList()); - } - boolean saveStore = pmnActivityStoreRelationService.saveBatch(saveStores); - return saveStore && saveSchedule && saveCase && saveInstance && saveActivityPromotion; + + applicationContext.publishEvent(new WelcomeCreatedEvent(this, pmnActivityInstance, activityInstanceVO.getStores())); + return saveSchedule && saveCase && saveInstance && saveActivityPromotion; } @Transactional