From eb129e5354a732c61c9f6e652306450b738b7954 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E7=9A=87?= <236220500@qq.com> Date: Sun, 24 May 2020 17:57:12 +0800 Subject: [PATCH] 1 --- .../activity/entity/PmnActivityInstance.java | 2 + .../listener/GenerateQRCodeListener.java | 42 +++++++++++++++++-- .../ActivityExpire.java} | 4 +- .../impl/PmnActivityInstanceServiceImpl.java | 11 +++-- .../impl/PmnPromotionSrcServiceImpl.java | 16 ++++--- 5 files changed, 59 insertions(+), 16 deletions(-) rename src/main/java/com/kiisoo/ic/activity/{listener/ActivityExpireListener.java => scheduleds/ActivityExpire.java} (82%) diff --git a/src/main/java/com/kiisoo/ic/activity/entity/PmnActivityInstance.java b/src/main/java/com/kiisoo/ic/activity/entity/PmnActivityInstance.java index f5fa7f3..61457a8 100644 --- a/src/main/java/com/kiisoo/ic/activity/entity/PmnActivityInstance.java +++ b/src/main/java/com/kiisoo/ic/activity/entity/PmnActivityInstance.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.ToString; import java.util.Date; @@ -12,6 +13,7 @@ import java.util.Date; */ @Data @TableName ("pmn_activity_instance") +@ToString public class PmnActivityInstance { @TableId(type = IdType.AUTO) diff --git a/src/main/java/com/kiisoo/ic/activity/listener/GenerateQRCodeListener.java b/src/main/java/com/kiisoo/ic/activity/listener/GenerateQRCodeListener.java index fc25952..fcaf639 100644 --- a/src/main/java/com/kiisoo/ic/activity/listener/GenerateQRCodeListener.java +++ b/src/main/java/com/kiisoo/ic/activity/listener/GenerateQRCodeListener.java @@ -1,20 +1,54 @@ package com.kiisoo.ic.activity.listener; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.kiisoo.ic.activity.entity.PmnActivityInstance; +import com.kiisoo.ic.activity.entity.PmnActivityStoreRelation; import com.kiisoo.ic.activity.event.ActivityInstanceCreatedEvent; +import com.kiisoo.ic.activity.service.IPmnActivityStoreRelationService; +import com.kiisoo.ic.activity.service.IPmnPromotionSrcService; +import com.kiisoo.ic.store.entity.PoiStore; +import com.kiisoo.ic.store.entity.PoiStoreStaff; +import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; +import com.kiisoo.ic.store.service.PoiStoreService; +import com.kiisoo.ic.store.service.PoiStoreStaffService; 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 GenerateQRCodeListener { - + @Autowired + private IPmnPromotionSrcService pmnPromotionSrcService; + @Autowired + private PoiStoreService poiStoreService; + @Autowired + private IPmnActivityStoreRelationService pmnActivityStoreRelationService; + @Autowired + private PoiStoreStaffDOMapper poiStoreStaffDOMapper; @Async @EventListener + //后台创建活动实例并绑定店铺之后,给店铺批量生成二维码 public void GenerateQRCode(ActivityInstanceCreatedEvent event) { - // TODO 备用 - // TODO 后台创建活动实例并绑定店铺之后,给店铺和导购批量生成二维码 - // TODO 也可以等后台或者用户查接口的时候,被动生成 + log.info("生成店铺码: {}", event.instance()); + PmnActivityInstance instance = event.instance(); + List relationList = pmnActivityStoreRelationService.list(Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, instance.getId()).select(PmnActivityStoreRelation::getStoreId).eq(PmnActivityStoreRelation::getStatus, 1)); + List storeIds = relationList.stream().map(PmnActivityStoreRelation::getStoreId).collect(Collectors.toList()); + log.info("storeIds: {}", storeIds); + List staffs = poiStoreStaffDOMapper.selectList(Wrappers.lambdaQuery().in(PoiStoreStaff::getStoreId, storeIds).eq(PoiStoreStaff::getType, 1).eq(PoiStoreStaff::getStatus, 1)); + log.info("staffs: {}", staffs); + List fails = new LinkedList<>(); + staffs.stream().forEach(item -> { + boolean save = pmnPromotionSrcService.createCode(item, instance.getId()); + if(!save) { + fails.add(item); + } + }); + log.info("生成失败数据: {}", fails); } } diff --git a/src/main/java/com/kiisoo/ic/activity/listener/ActivityExpireListener.java b/src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java similarity index 82% rename from src/main/java/com/kiisoo/ic/activity/listener/ActivityExpireListener.java rename to src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java index d00a5e0..264f045 100644 --- a/src/main/java/com/kiisoo/ic/activity/listener/ActivityExpireListener.java +++ b/src/main/java/com/kiisoo/ic/activity/scheduleds/ActivityExpire.java @@ -1,4 +1,4 @@ -package com.kiisoo.ic.activity.listener; +package com.kiisoo.ic.activity.scheduleds; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; @Component @Slf4j -public class ActivityExpireListener { +public class ActivityExpire { @Scheduled(cron = "0 0 0 * * ?") public void scheduled(){ //TODO 活动实例/实例关联信息/活动码失效 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 624293f..daa39dc 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 @@ -1,23 +1,22 @@ package com.kiisoo.ic.activity.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.Page; 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.service.*; import com.kiisoo.ic.activity.bean.ActivityInstanceVO; import com.kiisoo.ic.activity.mapper.PmnActivityInstanceDOMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kiisoo.ic.domain.service.PrivilageDomainService; -import com.kiisoo.ic.generalize.entity.CompanyStoreDO; -import com.kiisoo.ic.generalize.entity.PrivilageOrganizational; import com.kiisoo.ic.generalize.mapper.RetailCompanyMapper; import com.kiisoo.ic.generalize.service.RetailCompanyService; import com.kiisoo.ic.store.entity.PoiStore; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -57,6 +56,9 @@ public class PmnActivityInstanceServiceImpl extends ServiceImpllambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).eq(PmnActivityStoreRelation::getStoreId, store.getId())); storeIds.add(store.getId()); } - if(storeIds.size() > 0) { + if (storeIds.size() > 0) { pmnActivityStoreRelationService.remove(Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).notIn(PmnActivityStoreRelation::getStoreId, storeIds)); } + applicationContext.publishEvent(new ActivityInstanceCreatedEvent(this, pmnActivityInstance)); return saveInstance && saveCase; } diff --git a/src/main/java/com/kiisoo/ic/activity/service/impl/PmnPromotionSrcServiceImpl.java b/src/main/java/com/kiisoo/ic/activity/service/impl/PmnPromotionSrcServiceImpl.java index b15bafb..14da816 100644 --- a/src/main/java/com/kiisoo/ic/activity/service/impl/PmnPromotionSrcServiceImpl.java +++ b/src/main/java/com/kiisoo/ic/activity/service/impl/PmnPromotionSrcServiceImpl.java @@ -165,11 +165,16 @@ public class PmnPromotionSrcServiceImpl extends ServiceImpllambdaQuery().eq(PmnPromotionSrc::getPromoterId, userId).eq(PmnPromotionSrc::getType, staff.getType()).eq(PmnPromotionSrc::getInstanceId, instanceId)); + Long promoterId = staff.getUserId(); + int type = 1; + if(staff.getType().equals(1L)) { + promoterId = staff.getStoreId(); + type = 0; + } + PmnPromotionSrc src = getOne(Wrappers.lambdaQuery().eq(PmnPromotionSrc::getPromoterId, promoterId).eq(PmnPromotionSrc::getType, staff.getType()).eq(PmnPromotionSrc::getInstanceId, instanceId)); ActivityInstanceVO instanceVO = pmnActivityInstanceService.getVO(instanceId); PmnActivityInstanceConfig config = pmnActivityInstanceConfigService.getOne(Wrappers.lambdaQuery().eq(PmnActivityInstanceConfig::getInstanceId, instanceId)); - String state = Constants.ACTIVITY_QR_CODE_PREFIX + Constants.LINE + instanceId + Constants.LINE + staff.getType() + Constants.LINE + userId; + String state = Constants.ACTIVITY_QR_CODE_PREFIX + Constants.LINE + instanceId + Constants.LINE + type + Constants.LINE + promoterId; PmnPromotionSrc saveSrc = new PmnPromotionSrc(); if (src != null) { saveSrc.setId(src.getId()); @@ -179,12 +184,11 @@ public class PmnPromotionSrcServiceImpl extends ServiceImpl