diff --git a/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/PublicClueTask.java b/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/PublicClueTask.java index cf9c975..06e0af7 100644 --- a/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/PublicClueTask.java +++ b/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/PublicClueTask.java @@ -1,14 +1,17 @@ package cn.fw.valhalla.controller.task; import cn.fw.valhalla.common.utils.DateUtil; +import cn.fw.valhalla.domain.db.customer.AffiliationRecord; import cn.fw.valhalla.domain.db.pool.PublicCluePool; import cn.fw.valhalla.domain.db.pool.PublicPool; import cn.fw.valhalla.domain.dto.CustomerDetailDto; +import cn.fw.valhalla.domain.enums.CustomerChangeTypeEnum; import cn.fw.valhalla.domain.enums.DefeatReasonEnum; import cn.fw.valhalla.domain.enums.PublicClueStateEnum; import cn.fw.valhalla.domain.enums.PublicPoolTypeEnum; import cn.fw.valhalla.service.bus.cust.CustomerBizService; import cn.fw.valhalla.service.bus.follow.PCFollowBizService; +import cn.fw.valhalla.service.data.AffiliationRecordService; import cn.fw.valhalla.service.data.PublicCluePoolService; import cn.fw.valhalla.service.data.PublicPoolService; import cn.fw.valhalla.service.data.StammkundePoolService; @@ -23,6 +26,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; import java.util.Objects; @@ -43,6 +47,7 @@ public class PublicClueTask { private final StammkundePoolService stammkundePoolService; private final PCFollowBizService pcFollowBizService; private final ApplicationEventPublisher eventPublisher; + private final AffiliationRecordService affiliationRecordService; @Autowired public PublicClueTask(final PublicCluePoolService publicCluePoolService, @@ -50,13 +55,15 @@ public class PublicClueTask { final CustomerBizService customerBizService, final StammkundePoolService stammkundePoolService, final PCFollowBizService pcFollowBizService, - final ApplicationEventPublisher eventPublisher) { + final ApplicationEventPublisher eventPublisher, + final AffiliationRecordService affiliationRecordService) { this.publicCluePoolService = publicCluePoolService; this.publicPoolService = publicPoolService; this.customerBizService = customerBizService; this.stammkundePoolService = stammkundePoolService; this.pcFollowBizService = pcFollowBizService; this.eventPublisher = eventPublisher; + this.affiliationRecordService = affiliationRecordService; } @@ -91,11 +98,9 @@ public class PublicClueTask { } } - @Transactional(rollbackFor = Exception.class) public void doSomething(PublicCluePool cluePool) { cluePool.setCloseTime(new Date()); cluePool.setState(PublicClueStateEnum.DEFEAT); - Long customerId = cluePool.getCustomerId(); CustomerDetailDto detailDto = customerBizService.queryById(customerId); if (Objects.isNull(detailDto)) { @@ -104,13 +109,25 @@ public class PublicClueTask { detailDto.setAdviserId(cluePool.getAdviserId()); detailDto.setAdviserName(cluePool.getAdviserName()); detailDto.setShopId(cluePool.getShopId()); + AffiliationRecord record = new AffiliationRecord(); + record.setCustomerId(detailDto.getId()); + record.setType(CustomerChangeTypeEnum.DEFEAT); + record.setDefeatTime(DateUtil.localDateTime2Date(LocalDateTime.now())); + record.setOriginUserId(cluePool.getAdviserId()); + record.setOriginShopId(cluePool.getShopId()); + record.setCreateTime(DateUtil.localDateTime2Date(LocalDateTime.now())); + record.setReason("公共客户线索到期战败"); + saveData(cluePool, detailDto, record); + } + @Transactional(rollbackFor = Exception.class) + public void saveData(PublicCluePool cluePool, CustomerDetailDto detailDto, AffiliationRecord record) { PublicPool publicPool = customerBizService.createPublicPool(detailDto, PublicPoolTypeEnum.PD, PublicPoolTypeEnum.PD.getName()); stammkundePoolService.reject(cluePool.getCustomerId(), cluePool.getGroupId(), DefeatReasonEnum.LC); customerBizService.move2PublicPool(detailDto.getId()); publicPoolService.save(publicPool); publicCluePoolService.updateById(cluePool); - + affiliationRecordService.save(record); PublicPoolEvent poolEvent = new PublicPoolEvent(detailDto.getFrameNo(), detailDto.getGroupId()); eventPublisher.publishEvent(poolEvent); }