dev_0531
郑皇 5 years ago
parent c7024ae7b6
commit eb129e5354

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

@ -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<PmnActivityStoreRelation> relationList = pmnActivityStoreRelationService.list(Wrappers.<PmnActivityStoreRelation>lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, instance.getId()).select(PmnActivityStoreRelation::getStoreId).eq(PmnActivityStoreRelation::getStatus, 1));
List<Long> storeIds = relationList.stream().map(PmnActivityStoreRelation::getStoreId).collect(Collectors.toList());
log.info("storeIds: {}", storeIds);
List<PoiStoreStaff> staffs = poiStoreStaffDOMapper.selectList(Wrappers.<PoiStoreStaff>lambdaQuery().in(PoiStoreStaff::getStoreId, storeIds).eq(PoiStoreStaff::getType, 1).eq(PoiStoreStaff::getStatus, 1));
log.info("staffs: {}", staffs);
List<PoiStoreStaff> fails = new LinkedList<>();
staffs.stream().forEach(item -> {
boolean save = pmnPromotionSrcService.createCode(item, instance.getId());
if(!save) {
fails.add(item);
}
});
log.info("生成失败数据: {}", fails);
}
}

@ -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 活动实例/实例关联信息/活动码失效

@ -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 ServiceImpl<PmnActivityInsta
@Autowired
private RetailCompanyMapper retailCompanyMapper;
@Autowired
private ApplicationContext applicationContext;
/**
* mapper
*/
@ -131,9 +133,10 @@ public class PmnActivityInstanceServiceImpl extends ServiceImpl<PmnActivityInsta
pmnActivityStoreRelationService.saveOrUpdate(pmnActivityStoreRelation, Wrappers.<PmnActivityStoreRelation>lambdaQuery().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.<PmnActivityStoreRelation>lambdaQuery().eq(PmnActivityStoreRelation::getInstanceId, pmnActivityInstance.getId()).notIn(PmnActivityStoreRelation::getStoreId, storeIds));
}
applicationContext.publishEvent(new ActivityInstanceCreatedEvent(this, pmnActivityInstance));
return saveInstance && saveCase;
}

@ -165,11 +165,16 @@ public class PmnPromotionSrcServiceImpl extends ServiceImpl<PmnPromotionSrcDOMap
@Transactional
public boolean createCode(PoiStoreStaff staff, Long instanceId) {
try {
Long userId = staff.getUserId();
PmnPromotionSrc src = getOne(Wrappers.<PmnPromotionSrc>lambdaQuery().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.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getPromoterId, promoterId).eq(PmnPromotionSrc::getType, staff.getType()).eq(PmnPromotionSrc::getInstanceId, instanceId));
ActivityInstanceVO instanceVO = pmnActivityInstanceService.getVO(instanceId);
PmnActivityInstanceConfig config = pmnActivityInstanceConfigService.getOne(Wrappers.<PmnActivityInstanceConfig>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<PmnPromotionSrcDOMap
saveSrc.setCreateTime(new Date());
saveSrc.setExpiredTime(instanceVO.getEndTime());
saveSrc.setInstanceId(instanceId);
saveSrc.setPromoterId(userId);
saveSrc.setIsAddition(2L); //是否要独立码: 1、默认 2、额外码
saveSrc.setType(1L);
saveSrc.setType(staff.getType());
saveSrc.setUpdateTime(new Date());
saveSrc.setStatus(1L);
String url = storeEmployeeService.createActivityQrCode(staff.getStaffCode(), staff.getStoreCode(), 1, instanceId, userId);
String url = storeEmployeeService.createActivityQrCode(staff.getStaffCode(), staff.getStoreCode(), type, instanceId, promoterId);
saveSrc.setQrCode(url);
pmnPromotionSrcService.saveCodeFile(url, new SimpleHash("MD5", state).toHex());
boolean save = pmnPromotionSrcService.saveOrUpdate(saveSrc);

Loading…
Cancel
Save