diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index 8b0a790f..5790e5e6 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.hzs.activity.base.service.IAcBaseConfigService; import com.hzs.activity.declaration.service.IAcDeclarationGiftConfigService; import com.hzs.activity.declaration.service.IAcDeclarationGiftRecordService; +import com.hzs.common.core.enums.*; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftConfig; import com.hzs.common.domain.activity.declaration.AcDeclarationGiftRecord; import com.hzs.activity.tourism.IAcTourismServiceApi; import com.hzs.activity.tourism.service.IAcTourismDataService; import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.EOrderType; import com.hzs.common.domain.activity.base.AcBaseConfig; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.sale.order.SaOrder; @@ -110,33 +110,38 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { Date targetDate = java.sql.Date.valueOf(LocalDate.now().minusDays(7)); log.info("处理日期: {}", targetDate); + // 获取所有7天前有效的报单赠送活动 + List acBaseConfigList = iAcBaseConfigService.list(new LambdaQueryWrapper() + .le(AcBaseConfig::getActStartDate, targetDate) + .ge(AcBaseConfig::getActEndDate, targetDate) + .eq(AcBaseConfig::getActType, EActType.DECLARATION_GIFT.getValue()) + .eq(AcBaseConfig::getDelFlag, EDelFlag.UN_DELETE.getValue())); + if (acBaseConfigList.isEmpty()) { + log.info("{}天前无有效报单赠送活动,处理结束", daysAgo); + return R.ok(); + } + // 查询订单 List orderList = iSaOrderService.list(new LambdaQueryWrapper() .nested(w -> w.in(SaOrder::getOrderType, EOrderType.REGISTER_ORDER.getValue(), EOrderType.UPGRADE_ORDER.getValue()) .or() .nested(x -> x.eq(SaOrder::getOrderType, EOrderType.REPURCHASE_ORDER.getValue()) - .eq(SaOrder::getOrderTypeExtend, 1))) + .eq(SaOrder::getOrderTypeExtend, EOrderTypeExtend.REG_REP.getValue()))) .apply("TRUNC(PAY_TIME) BETWEEN TRUNC(SYSDATE - {0}) AND TRUNC(SYSDATE - 7)", daysAgo) - .eq(SaOrder::getOrderStatus, 1) - .eq(SaOrder::getDelFlag, 0) + .eq(SaOrder::getOrderStatus, EOrderStatus.PAY.getValue()) + .eq(SaOrder::getDelFlag, EDelFlag.UN_DELETE.getValue()) ); - log.info("{}天无有效订单,处理结束", daysAgo); - // 获取所有7天前有效的报单赠送活动 - List acBaseConfigList = iAcBaseConfigService.list(new LambdaQueryWrapper() - .le(AcBaseConfig::getActStartDate, targetDate) - .ge(AcBaseConfig::getActEndDate, targetDate) - .eq(AcBaseConfig::getActType, 32) - .eq(AcBaseConfig::getDelFlag, 0)); - if (acBaseConfigList.isEmpty()) { - log.info("{}天前无有效报单赠送活动,处理结束", daysAgo); + if (orderList.isEmpty()) { + log.info("{}天无有效订单,处理结束", daysAgo); return R.ok(); } + // 报单赠送活动主键集合 List declarationBaseIds = acBaseConfigList.stream().map(AcBaseConfig::getPkId).collect(Collectors.toList()); // 查询所有报单赠送活动数据 List declarationGiftConfigs = iAcDeclarationGiftConfigService.list(new LambdaQueryWrapper() .in(AcDeclarationGiftConfig::getPkBaseId, declarationBaseIds) - .eq(AcDeclarationGiftConfig::getDelFlag, 0)); + .eq(AcDeclarationGiftConfig::getDelFlag, EDelFlag.UN_DELETE.getValue())); Map configMap = declarationGiftConfigs.stream() .collect(Collectors.toMap( cfg -> cfg.getRegisterAuthority() + "_" + cfg.getSpecifyLevel(), @@ -145,14 +150,16 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { )); orderList.forEach(order -> { + // TODO 一天可能会有几百单,最好改成批量查询 // 查看是否有重复订单 int count = iAcDeclarationGiftRecordService.count(new LambdaQueryWrapper() .eq(AcDeclarationGiftRecord::getOrderCode, order.getOrderCode()) - .eq(AcDeclarationGiftRecord::getDelFlag, 0)); + .eq(AcDeclarationGiftRecord::getDelFlag, EDelFlag.UN_DELETE.getValue())); if (count > 0) { log.warn("当前订单已同步至报单明细{}", order.getOrderCode()); return; } + // TODO 下面两个查询会员,报单会员可能都是同一个人,最好提前查询或者做个map存下来,防止多次查询数据库 // 查询新会员信息 R newMemberResult = iMemberServiceApi.getMember(order.getPkMember()); CuMember newMember = newMemberResult.getData(); @@ -174,6 +181,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { return; } + // TODO 入库改成批量 AcDeclarationGiftRecord record = AcDeclarationGiftRecord.builder() .pkRuleId(matchedConfig.getPkId()) .pkBaseId(matchedConfig.getPkBaseId()) @@ -181,7 +189,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { .syncStatus(0) .build(); record.setCreationTime(new Date()); - record.setDelFlag(0); + record.setDelFlag(EDelFlag.UN_DELETE.getValue()); record.setPkCreator(oldMember.getPkId()); record.setPkCountry(pkCountry); // 插入数据库