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