dev_0531
郑皇 5 years ago
parent f94380c961
commit b3cc51daad

@ -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;

@ -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<PoiStore> saveStores;
private PmnActivityInstance instance;
public WelcomeCreatedEvent(Object source, PmnActivityInstance instance, List<PoiStore> saveStores) {
super(source);
this.instance = instance;
this.saveStores = saveStores;
}
public PmnActivityInstance instance() {
return this.instance;
}
public List<PoiStore> stores() {
return this.saveStores;
}
}

@ -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<Long> storeIds = new HashSet<>();
List<PmnActivityStoreRelation> 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.<PmnActivityStoreRelation>lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).eq(PmnActivityStoreRelation::getStoreId, store.getId()));
storeIds.add(store.getId());
}
List<PmnActivityStoreRelation> relations = pmnActivityStoreRelationService.list(Wrappers.<PmnActivityStoreRelation>lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, event.instance().getId()).in(PmnActivityStoreRelation::getStoreId, storeIds).select(PmnActivityStoreRelation::getStoreId));
Set<Long> 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);
}
}

@ -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<PmnActivityInsta
if (paramIds.size() > 0) {
pmnActivityPromotionParamService.remove(Wrappers.<PmnActivityPromotionParam>lambdaQuery().eq(PmnActivityPromotionParam::getPromotionId, pmnActivityPromotion.getId()).notIn(PmnActivityPromotionParam::getId, paramIds).eq(PmnActivityPromotionParam::getAttr, 2));
}
Set<Long> storeIds = new HashSet<>();
List<PmnActivityStoreRelation> 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.<PmnActivityStoreRelation>lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).eq(PmnActivityStoreRelation::getStoreId, store.getId()));
storeIds.add(store.getId());
}
List<PmnActivityStoreRelation> relations = pmnActivityStoreRelationService.list(Wrappers.<PmnActivityStoreRelation>lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).in(PmnActivityStoreRelation::getStoreId, storeIds).select(PmnActivityStoreRelation::getStoreId));
Set<Long> 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

Loading…
Cancel
Save