From 0e3dba5b888b6c5509f869f0a806e77df02ddb57 Mon Sep 17 00:00:00 2001 From: amos wong Date: Sat, 10 May 2025 21:08:14 +0800 Subject: [PATCH] =?UTF-8?q?master=E6=9C=80=E6=96=B0=E7=A8=B3=E5=AE=9A?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 42 + APP-META/docker-config/Dockerfile-dev | 46 + APP-META/docker-config/Dockerfile-pre | 49 + APP-META/docker-config/Dockerfile-prod | 49 + APP-META/docker-config/Dockerfile-test | 46 + README.md | 30 + pom.xml | 463 +++ tptradecore-api/pom.xml | 37 + .../controller/OrderDispatchController.java | 48 + .../controller/pay/PaymentController.java | 141 + .../controller/test/AlipayTestController.java | 43 + .../test/ContractTestController.java | 52 + .../controller/test/OrderTestController.java | 124 + .../test/PaymentTestController.java | 217 ++ .../test/VoucherTestController.java | 223 ++ .../controller/test/WechatTestController.java | 0 .../service/impl/AlipayCallbackService.java | 381 +++ .../impl/WechatPayCallbackService.java | 261 ++ .../impl/WechatRefundCallbackService.java | 193 ++ tptradecore-app-starter/pom.xml | 194 ++ .../tptradecore/ApplicationStarter.java | 23 + .../advise/GlobalControllerAdvise.java | 100 + .../config/Knife4jConfiguration.java | 88 + .../tptradecore/config/RetryConfig.java | 36 + .../tptradecore/config/RetryListener.java | 29 + .../tptradecore/config/RocketMQConfig.java | 39 + .../tptradecore/config/ValidatorConfig.java | 33 + .../src/main/resources/application-dev.yml | 88 + .../src/main/resources/application-local.yml | 88 + .../src/main/resources/application-pre.yml | 80 + .../src/main/resources/application-prod.yml | 80 + .../src/main/resources/application-test.yml | 78 + .../src/main/resources/application.yml | 26 + .../src/main/resources/bootstrap.yml | 23 + .../src/main/resources/logback-spring.xml | 143 + .../src/main/resources/sql/tp_order.sql | 751 +++++ .../MybatisPlusGenerator.java | 146 + .../TpAuditDomainServiceTest.java | 84 + .../TpOrderChangeApplyServiceTest.java | 167 ++ .../TpOrderDispatchDomainServiceTest.java | 105 + .../TpOrderDispatchFacadeTest.java | 35 + .../TpOrderDomainServiceTest.java | 139 + .../TpUserPassengerDomainServiceTest.java | 74 + ...pUserRouteCollectionDomainServiceTest.java | 50 + .../TpWechatV3ConfigTest.java | 81 + .../VerifySignatureAndDecryptTest.java | 102 + .../impl/TpPayOrderDomainServiceImplTest.java | 420 +++ .../src/test/resources/json/createOrder.json | 148 + .../test/resources/json/createSubOrders.json | 183 ++ tptradecore-biz/pom.xml | 19 + .../tptradecore-biz-service-impl/pom.xml | 98 + .../advice/IntegrationClientInterceptor.java | 41 + .../biz/advice/RpcExceptionHandleAspect.java | 78 + .../biz/config/ThreadPoolConfig.java | 79 + .../biz/constants/TpOrderCalcFormula.java | 98 + .../tptradecore/biz/constants/XConstants.java | 1 + .../biz/convert/TpAuditBizConverter.java | 38 + .../convert/TpOrderChangeBizConverter.java | 44 + .../convert/TpOrderDispatchBizConverter.java | 39 + .../convert/TpOrderReceivedBizConverter.java | 30 + .../biz/enums/TpOrderIdentityFlagEnum.java | 55 + .../enums/TpOrderServiceChargeFreeEnum.java | 55 + .../TpOrderPushStatusStrategyFactory.java | 34 + .../tptradecore/biz/log/LogFormatHelper.java | 42 + .../biz/quarz/OrderStasticsTimer.java | 177 ++ .../service/impl/audit/TpAuditFacadeImpl.java | 236 ++ .../impl/contract/TpContractFacadeImpl.java | 385 +++ .../order/TpOrderChangedApplyFacadeImpl.java | 137 + .../impl/order/TpOrderChangedFacadeImpl.java | 108 + .../impl/order/TpOrderDispatchFacadeImpl.java | 143 + .../service/impl/order/TpOrderFacadeImpl.java | 2509 +++++++++++++++++ .../impl/order/TpOrderReceivedFacadeImpl.java | 45 + .../impl/order/TpUserPassengerFacadeImpl.java | 133 + .../TpUserRouteCollectionFacadeImpl.java | 79 + .../impl/trans/TpPaymentFacadeImpl.java | 658 +++++ .../impl/voucher/TpVoucherFacadeImpl.java | 1528 ++++++++++ .../strategy/TpOrderPushStatusStrategy.java | 27 + ...TpOrderRescheduleNoRefundStrategyImpl.java | 41 + .../impl/TpOrderAllExpireStrategyImpl.java | 43 + .../impl/TpOrderAllRefundStrategyImpl.java | 42 + .../impl/TpOrderAllVerifiedStrategyImpl.java | 43 + .../TpOrderCancelAuditedStrategyImpl.java | 61 + .../TpOrderCancelNeedAuditStrategyImpl.java | 76 + .../TpOrderCancelNeedPayStrategyImpl.java | 62 + .../TpOrderCancelNeedRefundStrategyImpl.java | 63 + .../impl/TpOrderCancelPaidStrategyImpl.java | 61 + .../TpOrderCancelRefundedStrategyImpl.java | 61 + .../impl/TpOrderCancelStrategyImpl.java | 62 + .../TpOrderChangeAuditedStrategyImpl.java | 61 + .../TpOrderChangeNeedAuditStrategyImpl.java | 61 + .../TpOrderConfirmRejectStrategyImpl.java | 61 + .../impl/TpOrderConfirmedStrategyImpl.java | 61 + .../TpOrderDepositNeedPayStrategyImpl.java | 63 + .../impl/TpOrderDepositPayedStrategyImpl.java | 75 + .../TpOrderDepositTimeoutStrategyImpl.java | 61 + .../impl/TpOrderDispatchedStrategyImpl.java | 53 + .../impl/TpOrderExpireStrategyImpl.java | 53 + .../impl/TpOrderNeedConfirmStrategyImpl.java | 61 + .../impl/TpOrderNeedDispatchStrategyImpl.java | 52 + .../impl/TpOrderNeedPayStrategyImpl.java | 59 + .../impl/TpOrderPaidStrategyImpl.java | 58 + ...pOrderPartExpireHasRefundStrategyImpl.java | 44 + .../impl/TpOrderPartExpireStrategyImpl.java | 44 + ...artRefundHasNotUnverifiedStrategyImpl.java | 44 + ...erPartRefundHasUnverifiedStrategyImpl.java | 53 + ...rPartVerifiedHasNotRefundStrategyImpl.java | 52 + .../impl/TpOrderRefundingStrategyImpl.java | 62 + ...pOrderRescheduleHasRefundStrategyImpl.java | 45 + .../TpOrderTimeoutConfirmStrategyImpl.java | 61 + ...erTripEndConfirmingAmountStrategyImpl.java | 64 + .../TpOrderTripEndNeedPayStrategyImpl.java | 65 + .../impl/TpOrderTripEndPaidStrategyImpl.java | 71 + .../TpOrderTripEndRefundedStrategyImpl.java | 61 + .../TpOrderTripEndRefundingStrategyImpl.java | 61 + .../impl/TpOrderTripEndStrategyImpl.java | 61 + .../impl/TpOrderTripStartedStrategyImpl.java | 62 + ...rderCarpoolCancelRefundedStrategyImpl.java | 65 + ...derCarpoolCancelRefundingStrategyImpl.java | 65 + ...rderCarpoolCancelUnRefundStrategyImpl.java | 65 + ...pOrderCarpoolFailRefundedStrategyImpl.java | 65 + ...OrderCarpoolFailRefundingStrategyImpl.java | 65 + ...pOrderCarpoolFailUnRefundStrategyImpl.java | 65 + .../TpOrderCarpoolFinishStrategyImpl.java | 65 + .../TpOrderCarpoolSuccessStrategyImpl.java | 65 + .../biz/util/TpTimeFormatUtil.java | 24 + .../tptradecore/biz/util/TpVoucherUtil.java | 46 + .../deepinnet/tptradecore/biz/util/XUtil.java | 1 + tptradecore-common/pom.xml | 22 + .../tptradecore-common-dal/pom.xml | 94 + .../QueryRefundPassengerCondition.java | 25 + .../UpdateRefundApplyOrderCondition.java | 39 + .../condition/task/UpdateTaskCondition.java | 24 + .../condition/trans/QueryBillCondition.java | 25 + .../condition/trans/QueryChargeCondition.java | 25 + .../trans/QueryPayOrderCondition.java | 55 + .../condition/trans/UpdateBillCondition.java | 25 + .../trans/UpdateChargeCondition.java | 25 + .../trans/UpdatePayOrderCondition.java | 27 + .../dal/condition/voucher/QueryCondition.java | 31 + .../condition/voucher/UpdateCondition.java | 29 + .../VoucherVerificationQueryCondition.java | 45 + .../dal/convert/audit/TpAuditDOConverter.java | 105 + .../contract/TpRefundApplicantConvert.java | 48 + .../contract/TpRefundApplyOrderConvert.java | 175 ++ .../contract/TpRefundPassengerConvert.java | 52 + .../TpRefundRequirementUserConvert.java | 52 + .../contract/TpRefundRouteConverter.java | 73 + .../TpRefundRouteShuttleConverter.java | 65 + .../contract/TpRefundSubjectItemConvert.java | 57 + .../TpRefundSubjectItemElementConvert.java | 52 + .../TpRefundVoucherRecordConvert.java | 55 + .../order/TpOrderBalanceConverter.java | 57 + .../order/TpOrderCarpoolRecordConverter.java | 62 + .../order/TpOrderChangeApplyConverter.java | 111 + .../order/TpOrderChangeItemConverter.java | 86 + .../TpOrderChangeItemFactorConverter.java | 84 + .../TpOrderChangePriceRecordConverter.java | 79 + .../order/TpOrderChargeRecordConverter.java | 97 + .../dal/convert/order/TpOrderConverter.java | 116 + .../order/TpOrderDepositConverter.java | 60 + .../order/TpOrderDiscountConverter.java | 96 + .../order/TpOrderDispatchConverter.java | 154 + .../order/TpOrderElementConverter.java | 58 + .../order/TpOrderInvoiceConverter.java | 74 + .../order/TpOrderItemElementConverter.java | 88 + .../order/TpOrderPassengerConverter.java | 88 + .../convert/order/TpOrderPlacerConverter.java | 68 + .../order/TpOrderPriceRecordConverter.java | 102 + .../TpOrderPriceRecordDetailConverter.java | 87 + .../order/TpOrderReceivedConverter.java | 86 + .../TpOrderRequirementUserConverter.java | 74 + .../convert/order/TpOrderRouteConverter.java | 89 + .../order/TpOrderRouteShuttleConverter.java | 82 + .../order/TpOrderServiceTargetConverter.java | 66 + .../order/TpOrderSubjectItemConverter.java | 90 + .../order/TpOrderTravelTripConverter.java | 104 + .../TpOrderTripDispatchRecordConverter.java | 86 + .../order/TpOrderTripPositionConverter.java | 90 + .../order/TpUserPassengerConverter.java | 114 + .../order/TpUserRouteCollectionConverter.java | 106 + .../rule/TpBizRuleMapStructConvert.java | 48 + .../task/TpScheduleTaskMapStructConvert.java | 23 + .../convert/trans/TpBillMapStructConvert.java | 85 + .../trans/TpChargeMapStructConvert.java | 70 + .../TpFinancialAccountMapStructConvert.java | 52 + .../trans/TpPayOrderMapStructConvert.java | 433 +++ ...ucherInspectionRecordMapStructConvert.java | 51 + .../voucher/TpVoucherMapStructConvert.java | 84 + .../TpVoucherPassengerMapStructConvert.java | 67 + ...TpVoucherVerificationMapStructConvert.java | 83 + .../common/dal/dao/audit/TpAuditDao.java | 30 + .../dao/contract/TpRefundApplicantDao.java | 16 + .../dao/contract/TpRefundApplyOrderDao.java | 27 + .../dao/contract/TpRefundPassengerDao.java | 16 + .../contract/TpRefundRequirementUserDao.java | 16 + .../dal/dao/contract/TpRefundRouteDao.java | 16 + .../contract/TpRefundRouteScheduleDao.java | 16 + .../dao/contract/TpRefundSubjectItemDao.java | 16 + .../TpRefundSubjectItemElementDao.java | 16 + .../contract/TpRefundVoucherRecordDao.java | 17 + .../common/dal/dao/order/TpOrderAuditDao.java | 16 + .../dal/dao/order/TpOrderBalanceDao.java | 16 + .../dao/order/TpOrderCarpoolRecordDao.java | 16 + .../dal/dao/order/TpOrderChangeApplyDao.java | 16 + .../dal/dao/order/TpOrderChangeItemDao.java | 16 + .../dao/order/TpOrderChangeItemFactorDao.java | 16 + .../order/TpOrderChangePriceRecordDao.java | 16 + .../dal/dao/order/TpOrderChargeRecordDao.java | 16 + .../common/dal/dao/order/TpOrderDao.java | 76 + .../dal/dao/order/TpOrderDepositDao.java | 16 + .../dal/dao/order/TpOrderDiscountDao.java | 16 + .../dal/dao/order/TpOrderDispatchDao.java | 16 + .../dao/order/TpOrderDispatchFleetDao.java | 16 + .../order/TpOrderDispatchJoinFleetDao.java | 12 + .../dal/dao/order/TpOrderDriverInfoDao.java | 16 + .../dal/dao/order/TpOrderElementDao.java | 16 + .../dal/dao/order/TpOrderInvoiceDao.java | 16 + .../dal/dao/order/TpOrderItemElementDao.java | 16 + .../dal/dao/order/TpOrderPassengerDao.java | 16 + .../TpOrderPassengerTripRelationDao.java | 16 + .../dal/dao/order/TpOrderPlacerDao.java | 16 + .../dal/dao/order/TpOrderPriceRecordDao.java | 16 + .../order/TpOrderPriceRecordDetailDao.java | 16 + .../dal/dao/order/TpOrderReceiveDao.java | 16 + .../dao/order/TpOrderRequirementUserDao.java | 16 + .../dao/order/TpOrderRescheduleRecordDao.java | 16 + .../common/dal/dao/order/TpOrderRouteDao.java | 16 + .../dal/dao/order/TpOrderRouteShuttleDao.java | 16 + .../dao/order/TpOrderServiceTargetDao.java | 16 + .../dal/dao/order/TpOrderSubjectItemDao.java | 16 + .../dao/order/TpOrderTransportationDao.java | 16 + .../order/TpOrderTravelDispatchRecordDao.java | 16 + .../dal/dao/order/TpOrderTravelTripDao.java | 16 + .../dal/dao/order/TpOrderTripPositionDao.java | 16 + .../dal/dao/order/TpOrderVehicleInfoDao.java | 16 + .../dal/dao/order/TpUserPassengerDao.java | 15 + .../dao/order/TpUserRouteCollectionDao.java | 15 + .../common/dal/dao/rule/TpBizRuleDao.java | 13 + .../dal/dao/task/TpScheduleTaskDao.java | 13 + .../common/dal/dao/trans/TpBillDao.java | 16 + .../common/dal/dao/trans/TpChargeDao.java | 16 + .../dal/dao/trans/TpFinancialAccountDao.java | 16 + .../common/dal/dao/trans/TpPayOrderDao.java | 16 + .../TpRescheduleInvalidVoucherRecordDao.java | 16 + .../common/dal/dao/voucher/TpVoucherDao.java | 27 + .../voucher/TpVoucherInspectionRecordDao.java | 16 + .../dao/voucher/TpVoucherPassengerDao.java | 16 + .../TpVoucherVerificationRecordDao.java | 21 + .../dal/dataobject/audit/TpAuditDO.java | 139 + .../contract/TpRefundApplicantDO.java | 44 + .../contract/TpRefundApplyOrderDO.java | 160 ++ .../contract/TpRefundPassengerDO.java | 100 + .../contract/TpRefundRequirementUserDO.java | 88 + .../dataobject/contract/TpRefundRouteDO.java | 93 + .../contract/TpRefundRouteShuttleDO.java | 99 + .../contract/TpRefundSubjectItemDO.java | 85 + .../TpRefundSubjectItemElementDO.java | 82 + .../contract/TpRefundVoucherRecordDO.java | 50 + .../dal/dataobject/order/TpOrderAuditDO.java | 110 + .../dataobject/order/TpOrderBalanceDO.java | 98 + .../order/TpOrderCarpoolRecordDO.java | 110 + .../order/TpOrderChangeApplyDO.java | 160 ++ .../dataobject/order/TpOrderChangeItemDO.java | 95 + .../order/TpOrderChangeItemFactorDO.java | 123 + .../order/TpOrderChangePriceRecordDO.java | 92 + .../order/TpOrderChargeRecordDO.java | 116 + .../dal/dataobject/order/TpOrderDO.java | 260 ++ .../dataobject/order/TpOrderDepositDO.java | 99 + .../dataobject/order/TpOrderDiscountDO.java | 95 + .../dataobject/order/TpOrderDispatchDO.java | 190 ++ .../order/TpOrderDispatchFleetDO.java | 116 + .../order/TpOrderDispatchJoinFleetDO.java | 109 + .../dataobject/order/TpOrderDriverInfoDO.java | 83 + .../dataobject/order/TpOrderElementDO.java | 93 + .../dataobject/order/TpOrderInvoiceDO.java | 80 + .../order/TpOrderItemElementDO.java | 102 + .../dataobject/order/TpOrderPassengerDO.java | 120 + .../order/TpOrderPassengerTripRelationDO.java | 51 + .../dal/dataobject/order/TpOrderPlacerDO.java | 116 + .../order/TpOrderPriceRecordDO.java | 108 + .../order/TpOrderPriceRecordDetailDO.java | 117 + .../dataobject/order/TpOrderReceivedDO.java | 116 + .../order/TpOrderRequirementUserDO.java | 93 + .../order/TpOrderRescheduleRecordDO.java | 168 ++ .../dal/dataobject/order/TpOrderRouteDO.java | 111 + .../order/TpOrderRouteShuttleDO.java | 105 + .../order/TpOrderServiceTargetDO.java | 84 + .../order/TpOrderSubjectItemDO.java | 126 + .../order/TpOrderTransportationDO.java | 102 + .../order/TpOrderTravelDispatchRecordDO.java | 140 + .../dataobject/order/TpOrderTravelTripDO.java | 151 + .../order/TpOrderTripPositionDO.java | 114 + .../order/TpOrderVehicleInfoDO.java | 78 + .../dataobject/order/TpUserPassengerDO.java | 90 + .../order/TpUserRouteCollectionDO.java | 139 + .../dal/dataobject/rule/TpBizRuleDO.java | 98 + .../dal/dataobject/task/TpScheduleTaskDO.java | 46 + .../common/dal/dataobject/trans/TpBillDO.java | 108 + .../dal/dataobject/trans/TpChargeDO.java | 115 + .../trans/TpFinancialAccountDO.java | 109 + .../dal/dataobject/trans/TpPayOrderDO.java | 152 + ...gVoucherVerificationRecordQueryResult.java | 33 + .../dataobject/voucher/RefundPassengerDO.java | 44 + .../dataobject/voucher/TpPassengerListDO.java | 82 + .../TpRescheduleInvalidVoucherRecordDO.java | 31 + .../dal/dataobject/voucher/TpVoucherDO.java | 208 ++ .../voucher/TpVoucherInspectionRecordDO.java | 100 + .../voucher/TpVoucherPassengerDO.java | 94 + .../TpVoucherVerificationRecordDO.java | 94 + .../repository/audit/TpAuditRepository.java | 77 + .../audit/impl/TpAuditRepositoryImpl.java | 118 + .../contract/TpRefundApplicantRepository.java | 15 + .../TpRefundApplyOrderRepository.java | 23 + .../TpRefundApplyOrderRouteRepository.java | 24 + .../contract/TpRefundPassengerRepository.java | 20 + .../TpRefundRequirementUserRepository.java | 18 + .../contract/TpRefundRouteRepository.java | 27 + .../TpRefundRouteShuttleRepository.java | 28 + .../TpRefundSubjectItemElementRepository.java | 17 + .../TpRefundSubjectItemRepository.java | 17 + .../TpRefundVoucherRecordRepository.java | 22 + .../impl/TpRefundApplicantRepositoryImpl.java | 36 + .../TpRefundApplyOrderRepositoryImpl.java | 76 + .../impl/TpRefundPassengerRepositoryImpl.java | 50 + ...TpRefundRequirementUserRepositoryImpl.java | 49 + .../impl/TpRefundRouteRepositoryImpl.java | 40 + .../TpRefundRouteShuttleRepositoryImpl.java | 40 + ...efundSubjectItemElementRepositoryImpl.java | 47 + .../TpRefundSubjectItemRepositoryImpl.java | 47 + .../TpRefundVoucherRecordRepositoryImpl.java | 68 + .../order/TpOrderBalanceRepository.java | 22 + .../order/TpOrderCarpoolRecordRepository.java | 22 + .../order/TpOrderChangeApplyRepository.java | 33 + .../TpOrderChangeItemFactorRepository.java | 21 + .../order/TpOrderChangeItemRepository.java | 21 + .../TpOrderChangePriceRecordRepository.java | 16 + .../order/TpOrderChargeRecordRepository.java | 20 + .../order/TpOrderDepositRepository.java | 17 + .../order/TpOrderDiscountRepository.java | 27 + .../order/TpOrderDispatchFleetRepository.java | 28 + .../TpOrderDispatchJoinFleetRepository.java | 19 + .../order/TpOrderDispatchRepository.java | 28 + .../order/TpOrderDriverInfoRepository.java | 16 + .../order/TpOrderElementRepository.java | 26 + .../order/TpOrderInvoiceRepository.java | 16 + .../order/TpOrderItemElementRepository.java | 27 + .../order/TpOrderPassengerRepository.java | 25 + ...pOrderPassengerTripRelationRepository.java | 16 + .../order/TpOrderPlacerRepository.java | 31 + .../TpOrderPriceRecordDetailRepository.java | 27 + .../order/TpOrderPriceRecordRepository.java | 26 + .../order/TpOrderReceivedRepository.java | 24 + .../repository/order/TpOrderRepository.java | 130 + .../TpOrderRequirementUserRepository.java | 24 + .../TpOrderRescheduleRecordRepository.java | 16 + .../order/TpOrderRouteRepository.java | 36 + .../order/TpOrderRouteShuttleRepository.java | 25 + .../order/TpOrderServiceTargetRepository.java | 24 + .../order/TpOrderSubjectItemRepository.java | 26 + .../TpOrderTransportationRepository.java | 16 + ...TpOrderTravelDispatchRecordRepository.java | 16 + .../order/TpOrderTravelTripRepository.java | 26 + .../order/TpOrderTripPositionRepository.java | 26 + .../order/TpOrderVehicleInfoRepository.java | 16 + .../order/TpUserPassengerRepository.java | 51 + .../TpUserRouteCollectionRepository.java | 26 + .../impl/TpOrderBalanceRepositoryImpl.java | 32 + .../TpOrderCarpoolRecordRepositoryImpl.java | 44 + .../TpOrderChangeApplyRepositoryImpl.java | 111 + ...TpOrderChangeItemFactorRepositoryImpl.java | 38 + .../impl/TpOrderChangeItemRepositoryImpl.java | 38 + ...pOrderChangePriceRecordRepositoryImpl.java | 20 + .../TpOrderChargeRecordRepositoryImpl.java | 38 + .../impl/TpOrderDepositRepositoryImpl.java | 34 + .../impl/TpOrderDiscountRepositoryImpl.java | 37 + .../TpOrderDispatchFleetRepositoryImpl.java | 38 + ...pOrderDispatchJoinFleetRepositoryImpl.java | 34 + .../impl/TpOrderDispatchRepositoryImpl.java | 71 + .../impl/TpOrderDriverInfoRepositoryImpl.java | 20 + .../impl/TpOrderElementRepositoryImpl.java | 36 + .../impl/TpOrderInvoiceRepositoryImpl.java | 20 + .../TpOrderItemElementRepositoryImpl.java | 37 + .../impl/TpOrderPassengerRepositoryImpl.java | 37 + ...erPassengerTripRelationRepositoryImpl.java | 20 + .../impl/TpOrderPlacerRepositoryImpl.java | 55 + ...pOrderPriceRecordDetailRepositoryImpl.java | 39 + .../TpOrderPriceRecordRepositoryImpl.java | 36 + .../impl/TpOrderReceivedRepositoryImpl.java | 52 + .../order/impl/TpOrderRepositoryImpl.java | 150 + .../TpOrderRequirementUserRepositoryImpl.java | 35 + ...TpOrderRescheduleRecordRepositoryImpl.java | 20 + .../impl/TpOrderRouteRepositoryImpl.java | 44 + .../TpOrderRouteShuttleRepositoryImpl.java | 36 + .../TpOrderServiceTargetRepositoryImpl.java | 35 + .../TpOrderSubjectItemRepositoryImpl.java | 36 + .../TpOrderTransportationRepositoryImpl.java | 20 + ...derTravelDispatchRecordRepositoryImpl.java | 20 + .../impl/TpOrderTravelTripRepositoryImpl.java | 36 + .../TpOrderTripPositionRepositoryImpl.java | 37 + .../TpOrderVehicleInfoRepositoryImpl.java | 20 + .../impl/TpUserPassengerRepositoryImpl.java | 80 + .../TpUserRouteCollectionRepositoryImpl.java | 40 + .../repository/rule/TpBizRuleRepository.java | 17 + .../rule/impl/TpBizRuleRepositoryImpl.java | 47 + .../task/TpScheduleTaskRepository.java | 21 + .../impl/TpScheduleTaskRepositoryImpl.java | 67 + .../repository/trans/TpBillRepository.java | 21 + .../repository/trans/TpChargeRepository.java | 21 + .../trans/TpFinancialAccountRepository.java | 18 + .../trans/TpPayOrderRepository.java | 23 + .../trans/impl/TpBillRepositoryImpl.java | 67 + .../trans/impl/TpChargeRepositoryImpl.java | 67 + .../TpFinancialAccountRepositoryImpl.java | 54 + .../trans/impl/TpPayOrderRepositoryImpl.java | 90 + ...cheduleInvalidVoucherRecordRepository.java | 13 + .../TpVoucherInspectionRecordRepository.java | 15 + .../voucher/TpVoucherPassengerRepository.java | 16 + .../voucher/TpVoucherRepository.java | 45 + ...TpVoucherVerificationRecordRepository.java | 22 + ...uleInvalidVoucherRecordRepositoryImpl.java | 31 + ...VoucherInspectionRecordRepositoryImpl.java | 33 + .../TpVoucherPassengerRepositoryImpl.java | 42 + .../voucher/impl/TpVoucherRepositoryImpl.java | 206 ++ ...ucherVerificationRecordRepositoryImpl.java | 69 + .../mybatis/mapper/audit/TpAuditMapper.xml | 91 + .../contract/TpRefundApplicantMapper.xml | 17 + .../contract/TpRefundApplyOrderMapper.xml | 92 + .../contract/TpRefundPassengerMapper.xml | 28 + .../contract/TpRefundRequirementUserDao.xml | 26 + .../mapper/contract/TpRefundRouteMapper.xml | 24 + .../contract/TpRefundRouteShuttleMapper.xml | 25 + .../TpRefundSubjectItemElementMapper.xml | 25 + .../contract/TpRefundSubjectItemMapper.xml | 24 + .../contract/TpRefundVoucherRecordMapper.xml | 23 + .../mapper/order/TpOrderBalanceMapper.xml | 24 + .../order/TpOrderCarpoolRecordMapper.xml | 25 + .../mapper/order/TpOrderChangeApplyMapper.xml | 23 + .../order/TpOrderChangeItemFactorMapper.xml | 27 + .../mapper/order/TpOrderChangeItemMapper.xml | 23 + .../order/TpOrderChangePriceRecordMapper.xml | 23 + .../order/TpOrderChargeRecordMapper.xml | 27 + .../mapper/order/TpOrderDepositMapper.xml | 24 + .../mapper/order/TpOrderDiscountMapper.xml | 24 + .../order/TpOrderDispatchFleetMapper.xml | 26 + .../order/TpOrderDispatchJoinFleetDao.xml | 24 + .../mapper/order/TpOrderDriverInfoMapper.xml | 23 + .../mapper/order/TpOrderElementMapper.xml | 25 + .../mapper/order/TpOrderInvoiceMapper.xml | 21 + .../mapper/order/TpOrderItemElementMapper.xml | 26 + .../mybatis/mapper/order/TpOrderMapper.xml | 447 +++ .../TpOrderPassengerTripRelationMapper.xml | 17 + .../mapper/order/TpOrderPlacerMapper.xml | 27 + .../order/TpOrderPriceRecordDetailMapper.xml | 29 + .../mapper/order/TpOrderPriceRecordMapper.xml | 27 + .../order/TpOrderRequirementUserMapper.xml | 24 + .../order/TpOrderRescheduleRecordMapper.xml | 35 + .../mapper/order/TpOrderRouteMapper.xml | 27 + .../mapper/order/TpOrderRouteShuttleDao.xml | 26 + .../order/TpOrderServiceTargetMapper.xml | 23 + .../mapper/order/TpOrderSubjectItemMapper.xml | 30 + .../order/TpOrderTransportationMapper.xml | 26 + .../TpOrderTravelDispatchRecordMapper.xml | 31 + .../mapper/order/TpOrderTravelTripMapper.xml | 33 + .../order/TpOrderTripPositionMapper.xml | 27 + .../mapper/order/TpOrderVehicleInfoMapper.xml | 22 + .../order/TpRefundRouteScheduleRepository.xml | 28 + .../mapper/order/TpUserPassengerMapper.xml | 25 + .../order/TpUserRouteCollectionMapper.xml | 33 + .../mybatis/mapper/trans/TpBillMapper.xml | 28 + .../mybatis/mapper/trans/TpChargeMapper.xml | 31 + .../mapper/trans/TpFinancialAccountMapper.xml | 28 + .../mybatis/mapper/trans/TpPayOrderMapper.xml | 36 + .../TpRescheduleInvalidVoucherRecordDao.xml | 24 + .../TpVoucherInspectionRecordMapper.xml | 27 + .../mapper/voucher/TpVoucherMapper.xml | 154 + .../voucher/TpVoucherPassengerMapper.xml | 25 + .../TpVoucherVerificationRecordMapper.xml | 111 + .../tptradecore-common-service/pom.xml | 19 + .../tptradecore-common-service-facade/pom.xml | 117 + .../constants/TpBizDataKeyConstants.java | 14 + .../dto/audit/TpAuditApprovedSubmitDTO.java | 68 + .../common/dto/audit/TpAuditCreatedDTO.java | 103 + .../dto/audit/TpAuditLatestDetailDTO.java | 65 + .../common/dto/audit/TpAuditListQueryDTO.java | 48 + .../dto/audit/TpAuditQueryDetailDTO.java | 27 + .../dto/audit/TpOrderAuditListQueryDTO.java | 81 + .../dto/audit/TpOrderAuditPagedQueryDTO.java | 83 + .../contract/TpCalculateRefundAmountDTO.java | 54 + .../dto/contract/TpCharteredBusRefundDTO.java | 95 + ...onRealNamePassengerAvailableRefundDTO.java | 19 + .../TpNonRealNameTicketRefundChoiceDTO.java | 28 + .../TpPageQueryRefundApplyOrderDTO.java | 82 + .../TpQueryAvailableRefundVoucherDTO.java | 37 + .../contract/TpQueryRefundApplyOrderDTO.java | 57 + .../dto/contract/TpQueryRefundDetailDTO.java | 30 + ...TpRealNamePassengerAvailableRefundDTO.java | 21 + .../TpRealNameTicketRefundChoiceDTO.java | 29 + .../dto/contract/TpRefundApplicantDTO.java | 35 + .../common/dto/contract/TpRefundApplyDTO.java | 133 + .../dto/contract/TpRefundApplyOrderDTO.java | 171 ++ .../common/dto/contract/TpRefundAuditDTO.java | 57 + .../dto/contract/TpRefundListQueryDTO.java | 32 + .../dto/contract/TpRefundPassengerDTO.java | 59 + .../contract/TpRefundRequirementUserDTO.java | 47 + .../common/dto/contract/TpRefundRouteDTO.java | 60 + .../dto/contract/TpRefundRouteShuttleDTO.java | 56 + .../dto/contract/TpRefundSubjectItemDTO.java | 79 + .../TpRefundSubjectItemElementDTO.java | 59 + .../contract/TpRefundTicketSuccessDTO.java | 28 + .../dto/contract/TpRefundVoucherDTO.java | 15 + .../common/dto/order/TpBalanceOrderDTO.java | 52 + .../dto/order/TpBatchQueryOrderDTO.java | 29 + .../common/dto/order/TpCancelCarpoolDTO.java | 37 + .../dto/order/TpCarPoolEndScheduleDTO.java | 30 + .../dto/order/TpCarPoolListQueryDTO.java | 39 + .../dto/order/TpCheckSuccessCallbackDTO.java | 39 + .../common/dto/order/TpDepositOrderDTO.java | 57 + .../dto/order/TpHistoryPassengerQueryDTO.java | 19 + .../order/TpOrderCancelApplyCreatedDTO.java | 72 + .../order/TpOrderCarpoolPushStatusDTO.java | 24 + .../dto/order/TpOrderCarpoolSearchDTO.java | 29 + .../TpOrderChangeApplicantCreatedDTO.java | 32 + .../TpOrderChangeApplyApprovedSubmitDTO.java | 72 + .../order/TpOrderChangeApplyBatchListDTO.java | 51 + .../order/TpOrderChangeApplyCreatedDTO.java | 91 + .../order/TpOrderChangeApplyDetailDTO.java | 58 + .../TpOrderChangeApplyLatestDetailDTO.java | 51 + .../dto/order/TpOrderChangeApplyListDTO.java | 51 + .../order/TpOrderChangeApplyRscApplyDTO.java | 79 + .../TpOrderChangeApplyStatusUpdateDTO.java | 72 + .../order/TpOrderChangeItemCreatedDTO.java | 73 + .../TpOrderChangeItemFactorCreatedDTO.java | 98 + .../dto/order/TpOrderChangeItemListDTO.java | 47 + .../dto/order/TpOrderChangePriceDTO.java | 97 + .../dto/order/TpOrderChargeRecordDTO.java | 66 + .../dto/order/TpOrderCountQueryDTO.java | 35 + .../common/dto/order/TpOrderCreateDTO.java | 277 ++ .../dto/order/TpOrderDetailQueryDTO.java | 23 + .../common/dto/order/TpOrderDiscountDTO.java | 53 + .../dto/order/TpOrderDispatchCallBackDTO.java | 54 + .../dto/order/TpOrderDispatchCreatedDTO.java | 122 + .../dto/order/TpOrderDispatchDetailDTO.java | 50 + .../order/TpOrderDispatchFleetCreatedDTO.java | 86 + .../dto/order/TpOrderDispatchGiveBackDTO.java | 55 + .../order/TpOrderDispatchJoinFleetDTO.java | 80 + .../dto/order/TpOrderDispatchListDTO.java | 45 + .../order/TpOrderDispatchStatusUpdateDTO.java | 60 + .../common/dto/order/TpOrderElementDTO.java | 46 + .../dto/order/TpOrderEndPriceConfirmDTO.java | 45 + .../common/dto/order/TpOrderEndorseDTO.java | 16 + .../common/dto/order/TpOrderInvoiceDTO.java | 56 + .../common/dto/order/TpOrderListQueryDTO.java | 207 ++ .../dto/order/TpOrderOfflinePaidDTO.java | 78 + .../common/dto/order/TpOrderPaidDTO.java | 41 + .../common/dto/order/TpOrderPayDTO.java | 116 + .../common/dto/order/TpOrderPlacerDTO.java | 36 + .../dto/order/TpOrderPriceRecordDTO.java | 78 + .../order/TpOrderPriceRecordDetailDTO.java | 77 + .../TpOrderPushPaidStatusStrategyDTO.java | 24 + .../dto/order/TpOrderPushStatusDTO.java | 49 + .../order/TpOrderPushStatusStrategyDTO.java | 32 + .../common/dto/order/TpOrderQueryDTO.java | 58 + .../order/TpOrderQueryRefundDetailDTO.java | 26 + .../dto/order/TpOrderReceivedCreatedDTO.java | 89 + .../dto/order/TpOrderReceivedDetailDTO.java | 48 + .../common/dto/order/TpOrderRefundDTO.java | 34 + .../dto/order/TpOrderRequirementUserDTO.java | 43 + .../dto/order/TpOrderRescheduleDTO.java | 60 + .../dto/order/TpOrderRescheduleInfoDTO.java | 76 + .../dto/order/TpOrderRescheduleRecordDTO.java | 35 + .../common/dto/order/TpOrderRouteDTO.java | 67 + .../dto/order/TpOrderRouteShuttleDTO.java | 52 + .../dto/order/TpOrderShuttleQueryDTO.java | 47 + .../dto/order/TpOrderShuttlesQueryDTO.java | 38 + .../common/dto/order/TpOrderStationDTO.java | 115 + .../dto/order/TpOrderSubjectItemDTO.java | 94 + .../order/TpOrderSubjectItemElementDTO.java | 50 + .../dto/order/TpOrderSwipeQueryDTO.java | 24 + .../dto/order/TpOrderTargetServiceDTO.java | 40 + .../dto/order/TpOrderTravelDispatchDTO.java | 42 + .../dto/order/TpOrderUnverifiedQueryDTO.java | 39 + .../common/dto/order/TpOrderUpdateDTO.java | 41 + .../common/dto/order/TpPassengerDTO.java | 62 + .../common/dto/order/TpPassengerSaveDTO.java | 8 + .../common/dto/order/TpRouteBookDTO.java | 35 + .../order/TpRouteBookingDetailQueryDTO.java | 25 + .../dto/order/TpRouteBookingQueryDTO.java | 21 + .../dto/order/TpTravelTripPathPointDTO.java | 52 + .../common/dto/order/TpUserPassengerDTO.java | 80 + .../dto/order/TpUserPassengerQueryDTO.java | 39 + .../dto/order/TpUserRouteCollectionDTO.java | 113 + .../order/TpUserRouteCollectionQueryDTO.java | 44 + .../dto/order/TpUserTicketsQueryDTO.java | 46 + .../common/dto/trans/TpBillDTO.java | 76 + .../common/dto/trans/TpChargeDTO.java | 88 + .../trans/TpFinancialAccountCreateDTO.java | 55 + .../dto/trans/TpFinancialAccountDTO.java | 83 + .../common/dto/trans/TpPaidOfflineDTO.java | 52 + .../common/dto/trans/TpPayOrderCloseDTO.java | 39 + .../common/dto/trans/TpPayOrderCreateDTO.java | 118 + .../common/dto/trans/TpPayOrderDTO.java | 139 + .../common/dto/trans/TpPayOrderQueryDTO.java | 61 + .../common/dto/trans/TpPayOrderUpdateDTO.java | 34 + .../common/dto/trans/TpPayRefundDTO.java | 88 + .../common/dto/trans/TpPaySuccessDTO.java | 32 + .../common/dto/trans/TpPreparePayDTO.java | 58 + .../common/dto/trans/TpQueryPayResultDTO.java | 41 + .../dto/trans/TpQueryRefundResultDTO.java | 41 + .../common/dto/trans/TpRefundSuccessDTO.java | 34 + .../dto/trans/TpReschedulePaidSuccessDTO.java | 34 + .../common/dto/trans/TpUserInfoDTO.java | 32 + .../common/dto/voucher/TpBizRuleDTO.java | 76 + .../voucher/TpBuyLimitQueryVoucherDTO.java | 31 + .../dto/voucher/TpInvalidVoucherDTO.java | 23 + .../TpMngVerificationRecordQueryDTO.java | 58 + .../dto/voucher/TpRefreshQrCodeDTO.java | 23 + .../TpRescheduleInvalidVoucherDTO.java | 35 + .../common/dto/voucher/TpStudentInfoDTO.java | 41 + ...geExistVerificationRecordDateQueryDTO.java | 39 + ...eUserVerificationRecordDetailQueryDTO.java | 26 + .../dto/voucher/TpUserTicketChoiceDTO.java | 40 + .../TpUserVoucherVerificationRecordDTO.java | 32 + .../voucher/TpVerificationPassengerDTO.java | 52 + .../dto/voucher/TpVouchPassengerListDTO.java | 50 + .../common/dto/voucher/TpVoucherCheckDTO.java | 95 + .../dto/voucher/TpVoucherCheckSuccessDTO.java | 54 + .../dto/voucher/TpVoucherCreateDTO.java | 102 + .../common/dto/voucher/TpVoucherDTO.java | 223 ++ .../dto/voucher/TpVoucherEncodeDTO.java | 83 + .../dto/voucher/TpVoucherInvalidDTO.java | 20 + .../dto/voucher/TpVoucherNonRealNameDTO.java | 52 + .../dto/voucher/TpVoucherPassengerDTO.java | 71 + .../voucher/TpVoucherPassengerQueryDTO.java | 51 + .../dto/voucher/TpVoucherPurchaseInfoDTO.java | 51 + .../common/dto/voucher/TpVoucherQueryDTO.java | 75 + .../dto/voucher/TpVoucherUpdateDTO.java | 31 + .../TpVoucherVerificationRecordDTO.java | 58 + .../TpVoucherVerificationRecordQueryDTO.java | 34 + .../common/enums/TpBizTypeEnum.java | 84 + .../enums/audit/TpAuditBizObjectTypeEnum.java | 40 + .../common/enums/audit/TpAuditStatusEnum.java | 64 + .../common/enums/audit/TpAuditTypeEnum.java | 88 + .../TpRefundApplyOrderModulesEnum.java | 53 + .../TpRefundApplyOrderStatusEnum.java | 66 + .../enums/contract/TpRefundTypeEnum.java | 44 + .../TpAuditOrChangePriceBizTypeEnum.java | 63 + .../order/TpCarpoolOrderOperateEnum.java | 32 + .../enums/order/TpOrderApproveStatusEnum.java | 53 + .../order/TpOrderChangeApplyStatusEnum.java | 74 + .../order/TpOrderChangeItemFactorEnum.java | 47 + .../order/TpOrderChangeItemTypeEnum.java | 25 + .../enums/order/TpOrderChangeTypeEnum.java | 39 + .../order/TpOrderChargeRecordTypeEnum.java | 19 + .../enums/order/TpOrderDepositStatusEnum.java | 17 + .../order/TpOrderDispatchSceneTypeEnum.java | 35 + .../order/TpOrderDispatchStatusEnum.java | 73 + .../order/TpOrderIdentityStatusEnum.java | 48 + .../enums/order/TpOrderModulesEnum.java | 104 + .../enums/order/TpOrderNeedApproveEnum.java | 48 + .../enums/order/TpOrderPayModeEnum.java | 54 + .../enums/order/TpOrderPushStatusEnum.java | 306 ++ .../order/TpOrderReceivedBizObjTypeEnum.java | 29 + .../order/TpOrderReceivedStatusEnum.java | 39 + ...TpOrderReductionServiceChargeTypeEnum.java | 38 + .../common/enums/order/TpOrderSourceEnum.java | 57 + .../order/TpOrderTravelTripStatusEnum.java | 64 + .../enums/order/TpOrderTripTypeEnum.java | 54 + .../TpServiceChargeOperationTypeEnum.java | 53 + .../TpUserPassengerIdentityTypeEnum.java | 55 + .../enums/order/TpUserPassengerTypeEnum.java | 77 + .../enums/task/TpScheduleTaskStatusEnum.java | 43 + .../enums/task/TpScheduleTaskTypeEnum.java | 67 + .../common/enums/trans/TpBillStatusEnum.java | 55 + .../common/enums/trans/TpBillTypeEnum.java | 44 + .../common/enums/trans/TpChannelEnum.java | 59 + .../enums/trans/TpChargeStatusEnum.java | 55 + .../common/enums/trans/TpChargeTypeEnum.java | 40 + .../enums/trans/TpChargingEntityTypeEnum.java | 40 + .../trans/TpFinancialAccountTypeEnum.java | 45 + .../enums/trans/TpPayOrderStatusEnum.java | 64 + .../common/enums/trans/TpPaySceneEnum.java | 70 + .../common/enums/trans/TpPayTypeEnum.java | 56 + .../trans/TpVoucherNeedPropertiesEnum.java | 52 + .../enums/voucher/TpQueryScopeEnum.java | 45 + .../enums/voucher/TpVoucherChannelEnum.java | 46 + .../enums/voucher/TpVoucherCheckTypeEnum.java | 50 + .../enums/voucher/TpVoucherStatusEnum.java | 72 + .../enums/voucher/TpVoucherTypeEnum.java | 65 + .../voucher/TpVoucherValidationTypeEnum.java | 69 + .../voucher/TpVoucherVerifiedResultEnum.java | 44 + .../tptradecore/common/error/ErrorLevel.java | 13 + .../tptradecore/common/error/ErrorType.java | 15 + .../common/error/TpTradeCoreErrorCode.java | 554 ++++ .../exception/TpTradeCoreException.java | 137 + .../service/facade/audit/TpAuditFacade.java | 70 + .../facade/contract/TpContractFacade.java | 66 + .../order/TpOrderChangedApplyFacade.java | 99 + .../facade/order/TpOrderChangedFacade.java | 81 + .../facade/order/TpOrderDispatchFacade.java | 78 + .../service/facade/order/TpOrderFacade.java | 286 ++ .../facade/order/TpOrderReceivedFacade.java | 35 + .../facade/order/TpUserPassengerFacade.java | 53 + .../order/TpUserRouteCollectionFacade.java | 42 + .../service/facade/trans/TpPaymentFacade.java | 81 + .../facade/voucher/TpVoucherFacade.java | 118 + .../common/vo/audit/TpAuditOrderListVO.java | 106 + .../common/vo/audit/TpAuditOrderVO.java | 82 + .../common/vo/audit/TpAuditVO.java | 103 + .../contract/TpCalculateRefundAmountVO.java | 38 + .../TpQueryAvailableRefundVoucherVO.java | 43 + .../vo/contract/TpQueryRefundDetailVO.java | 50 + .../common/vo/contract/TpRefundDateVO.java | 20 + .../common/vo/order/DriverInfoVO.java | 41 + .../vo/order/TpOrderChangeApplicantVO.java | 30 + .../common/vo/order/TpOrderChangeApplyVO.java | 109 + .../vo/order/TpOrderChangeItemFactorVO.java | 92 + .../common/vo/order/TpOrderChangeItemVO.java | 71 + .../vo/order/TpOrderChargeRecordVO.java | 77 + .../common/vo/order/TpOrderCreateVO.java | 58 + .../common/vo/order/TpOrderDetailVO.java | 422 +++ .../common/vo/order/TpOrderDiscountVO.java | 49 + .../vo/order/TpOrderDispatchFleetVO.java | 82 + .../vo/order/TpOrderDispatchJoinFleetVO.java | 64 + .../common/vo/order/TpOrderDispatchVO.java | 139 + .../common/vo/order/TpOrderDriverInfoVO.java | 47 + .../common/vo/order/TpOrderElementVO.java | 51 + .../common/vo/order/TpOrderEndorseVO.java | 26 + .../common/vo/order/TpOrderInvoiceVO.java | 47 + .../common/vo/order/TpOrderListVO.java | 278 ++ .../common/vo/order/TpOrderPaidVO.java | 29 + .../common/vo/order/TpOrderPassengerVO.java | 75 + .../common/vo/order/TpOrderPayVO.java | 36 + .../common/vo/order/TpOrderPlacerVO.java | 71 + .../vo/order/TpOrderPriceRecordDetailVO.java | 72 + .../common/vo/order/TpOrderPriceRecordVO.java | 73 + .../vo/order/TpOrderQueryRefundDetailVO.java | 35 + .../common/vo/order/TpOrderReceivedVO.java | 79 + .../common/vo/order/TpOrderRefundVO.java | 30 + .../vo/order/TpOrderRequirementUserVO.java | 54 + .../vo/order/TpOrderRescheduleInfoVO.java | 71 + .../vo/order/TpOrderRescheduleRecordVO.java | 53 + .../vo/order/TpOrderRouteShuttleVO.java | 65 + .../common/vo/order/TpOrderRouteVO.java | 77 + .../vo/order/TpOrderSubjectItemElementVO.java | 64 + .../common/vo/order/TpOrderSubjectItemVO.java | 101 + .../vo/order/TpOrderTargetServiceVO.java | 47 + .../vo/order/TpOrderTransportationVO.java | 78 + .../order/TpOrderTravelDispatchRecordVO.java | 108 + .../common/vo/order/TpOrderTravelTripVO.java | 110 + .../vo/order/TpOrderTripPositionVO.java | 64 + .../common/vo/order/TpOrderVehicleInfoVO.java | 33 + .../common/vo/order/TpSalesUnitCarpoolVO.java | 86 + .../common/vo/order/TpUserPassengerVO.java | 63 + .../vo/order/TpUserRouteCollectionVO.java | 107 + .../common/vo/trans/TpPayOrderCreateVO.java | 23 + .../common/vo/trans/TpPayOrderVO.java | 92 + .../common/vo/trans/TpPreparePayVO.java | 25 + .../common/vo/trans/TpQueryPayResultVO.java | 60 + .../vo/trans/TpQueryRefundResultVO.java | 49 + .../vo/voucher/TpBuyLimitQueryVoucherVO.java | 31 + .../voucher/TpMngVerificationRecordDTO.java | 61 + .../common/vo/voucher/TpQrCodeQueryVO.java | 26 + .../vo/voucher/TpQueryVoucherListVO.java | 25 + ...ngeExistVerificationRecordDateQueryVO.java | 23 + ...geUserVerificationRecordDetailQueryVO.java | 23 + .../common/vo/voucher/TpVoucherCheckVO.java | 37 + .../pom.xml | 77 + .../builder/AlipayRequestBuilder.java | 165 ++ .../builder/WechatPayRequestBuilder.java | 120 + .../integration/client/TpAliPayClient.java | 319 +++ .../integration/client/TpBizRuleClient.java | 32 + .../integration/client/TpCategoryClient.java | 48 + .../integration/client/TpConfigClient.java | 65 + .../integration/client/TpContractClient.java | 50 + .../integration/client/TpEmailClient.java | 24 + .../client/TpGlobalStoreClient.java | 130 + .../integration/client/TpInventoryClient.java | 33 + .../integration/client/TpOrderClient.java | 32 + .../client/TpOrderDispatchClient.java | 48 + .../integration/client/TpOrgClient.java | 77 + .../integration/client/TpPaymentClient.java | 66 + .../integration/client/TpProductClient.java | 60 + .../client/TpProductSalesUnitClient.java | 77 + .../integration/client/TpRouteClient.java | 137 + .../integration/client/TpSequenceClient.java | 298 ++ .../integration/client/TpSmsClient.java | 29 + .../integration/client/TpStudentClient.java | 52 + .../integration/client/TpTenantClient.java | 72 + .../integration/client/TpTripClient.java | 42 + .../client/TpUserCertificationClient.java | 53 + .../integration/client/TpVoucherClient.java | 75 + .../integration/client/TpWechatPayClient.java | 548 ++++ .../client/TpWechatPayClientV2.java | 328 +++ .../integration/config/TpAlipayConfig.java | 37 + .../config/TpAlipayMiniProgramConfig.java | 47 + .../integration/config/TpPayConfig.java | 28 + .../config/TpPayReturnUrlConfig.java | 17 + .../service/integration/config/TpUrl.java | 15 + .../config/TpWechatMiniProgramConfig.java | 62 + .../integration/config/TpWechatPayConfig.java | 46 + .../constants/PayPlatformConstants.java | 197 ++ .../dto/PayPlatformPreparePayDTO.java | 83 + .../dto/PayPlatformQueryResultDTO.java | 43 + .../integration/dto/PayPlatformRefundDTO.java | 69 + .../integration/dto/TpPayResultDTO.java | 55 + .../integration/dto/TpRefundResultDTO.java | 45 + .../integration/dto/TpWechatH5Response.java | 16 + .../integration/entity/H5SceneInfo.java | 20 + .../entity/TpConfigItemMultiValue.java | 18 + .../entity/TpConfigItemSingleValue.java | 16 + .../initializer/TpPayConfigInitializer.java | 176 ++ .../mq/constants/MessageConstants.java | 60 + .../mq/constants/MessageDelayLevel.java | 28 + .../mq/constants/MessageSysConstants.java | 44 + .../mq/entity/BaseMessageEntity.java | 36 + .../CarPoolPosGuoLangMessageEntity.java | 46 + .../mq/entity/OrderDelayMessageEntity.java | 26 + .../mq/entity/PayOrderDelayMessageEntity.java | 26 + .../entity/PayRefundDelayMessageEntity.java | 19 + .../mq/entity/PaySuccessMessageEntity.java | 35 + .../mq/entity/RefundSuccessMessageEntity.java | 35 + .../TicketRefundSuccessMessageEntity.java | 51 + .../mq/entity/VoucherExpireMessageEntity.java | 31 + ...VoucherRescheduleInvalidMessageEntity.java | 28 + ...ucherVerificationSuccessMessageEntity.java | 51 + .../mq/template/MessageClient.java | 110 + .../integration/strategy/AlipayStrategy.java | 46 + .../integration/strategy/PayStrategy.java | 24 + .../strategy/WechatPayStrategy.java | 44 + .../tptradecore-common-util/pom.xml | 26 + .../common/util/NacosConfigUtil.java | 37 + .../common/util/PayCommonUtil.java | 60 + .../common/util/TimeConvertUtil.java | 65 + .../util/constants/BizDataKeyConstants.java | 13 + tptradecore-core/pom.xml | 19 + .../tptradecore-core-model/pom.xml | 21 + .../tptradecore/core/model/audit/TpAudit.java | 94 + .../core/model/audit/TpAuditOrder.java | 63 + .../core/model/audit/TpAuditOrderList.java | 85 + .../model/contract/TpInvalidVoucherParam.java | 13 + .../model/contract/TpRefundApplicant.java | 35 + .../model/contract/TpRefundApplyOrder.java | 148 + .../model/contract/TpRefundPassenger.java | 61 + .../contract/TpRefundRequirementUser.java | 49 + .../core/model/contract/TpRefundRoute.java | 58 + .../model/contract/TpRefundRouteShuttle.java | 52 + .../model/contract/TpRefundSubjectItem.java | 65 + .../contract/TpRefundSubjectItemElement.java | 48 + .../core/model/contract/TpRefundVoucher.java | 13 + .../model/contract/TpRefundVoucherRecord.java | 33 + .../model/enums/order/TpOrderMainEnum.java | 68 + .../model/enums/order/TpOrderStatusEnum.java | 366 +++ .../model/enums/order/TpOrderTypeEnum.java | 68 + .../core/model/order/BaseModel.java | 20 + .../core/model/order/BasePage.java | 33 + .../core/model/order/TpBalanceOrder.java | 58 + .../core/model/order/TpBatchQueryOrder.java | 27 + .../core/model/order/TpDepositOrder.java | 57 + .../tptradecore/core/model/order/TpOrder.java | 286 ++ .../model/order/TpOrderCarpoolRecord.java | 72 + .../model/order/TpOrderChangeApplicant.java | 29 + .../core/model/order/TpOrderChangeApply.java | 98 + .../core/model/order/TpOrderChangeItem.java | 59 + .../model/order/TpOrderChangeItemFactor.java | 77 + .../model/order/TpOrderChangePriceRecord.java | 51 + .../core/model/order/TpOrderChargeRecord.java | 82 + .../core/model/order/TpOrderDiscount.java | 51 + .../core/model/order/TpOrderDispatch.java | 140 + .../model/order/TpOrderDispatchFleet.java | 84 + .../model/order/TpOrderDispatchJoinFleet.java | 65 + .../core/model/order/TpOrderDriverInfo.java | 45 + .../core/model/order/TpOrderElement.java | 53 + .../core/model/order/TpOrderInvoice.java | 49 + .../core/model/order/TpOrderItemElement.java | 60 + .../core/model/order/TpOrderPassenger.java | 69 + .../core/model/order/TpOrderPlacer.java | 64 + .../core/model/order/TpOrderPriceRecord.java | 76 + .../model/order/TpOrderPriceRecordDetail.java | 74 + .../core/model/order/TpOrderPushStatus.java | 31 + .../core/model/order/TpOrderQueryList.java | 179 ++ .../core/model/order/TpOrderReceived.java | 75 + .../model/order/TpOrderRequirementUser.java | 50 + .../model/order/TpOrderRescheduleInfo.java | 82 + .../model/order/TpOrderRescheduleRecord.java | 53 + .../core/model/order/TpOrderRoute.java | 69 + .../core/model/order/TpOrderRouteShuttle.java | 58 + .../core/model/order/TpOrderSubjectItem.java | 89 + .../model/order/TpOrderTargetService.java | 44 + .../model/order/TpOrderTransportation.java | 70 + .../order/TpOrderTravelDispatchRecord.java | 87 + .../core/model/order/TpOrderTravelTrip.java | 98 + .../core/model/order/TpOrderTripPosition.java | 63 + .../core/model/order/TpOrderUpdateCharge.java | 53 + .../core/model/order/TpOrderVehicleInfo.java | 33 + .../order/TpUserDelPassengerCondition.java | 36 + .../core/model/order/TpUserPassenger.java | 61 + .../model/order/TpUserPassengerCondition.java | 33 + .../model/order/TpUserRouteCollection.java | 97 + .../order/TpUserRouteCollectionCondition.java | 34 + .../core/model/rule/TpBizRule.java | 76 + .../core/model/task/TpScheduleTask.java | 53 + .../tptradecore/core/model/trans/TpBill.java | 64 + .../core/model/trans/TpCharge.java | 75 + .../core/model/trans/TpFinancialAccount.java | 69 + .../core/model/trans/TpPayOrder.java | 128 + .../core/model/voucher/TpPassengerList.java | 46 + .../core/model/voucher/TpVoucher.java | 164 ++ .../voucher/TpVoucherInspectionRecord.java | 60 + .../model/voucher/TpVoucherPassenger.java | 79 + .../voucher/TpVoucherVerificationRecord.java | 61 + .../tptradecore-core-service/pom.xml | 79 + .../TpTenantNacosConfigComponent.java | 47 + .../TransactionTemplateConfiguration.java | 33 + .../core/mq/constants/MessageConstants.java | 63 + .../core/mq/entity/TpMessageEntity.java | 47 + .../core/mq/handler/TpMessageHandler.java | 24 + .../TpUserMiniRegisterMessageHandler.java | 194 ++ .../mq/listener/UserMqMessageListener.java | 91 + .../service/audit/TpAuditDomainService.java | 81 + .../audit/impl/TpAuditDomainServiceImpl.java | 179 ++ .../contract/TpContractDomainService.java | 76 + .../impl/TpContractDomainServiceImpl.java | 384 +++ .../TpOrderChangedApplyDomainService.java | 99 + .../order/TpOrderDispatchDomainService.java | 98 + .../service/order/TpOrderDomainService.java | 341 +++ .../order/TpOrderReceivedDomainService.java | 63 + .../order/TpUserPassengerDomainService.java | 46 + .../TpUserRouteCollectionDomainService.java | 34 + .../TpOrderChangedApplyDomainServiceImpl.java | 402 +++ .../TpOrderDispatchDomainServiceImpl.java | 313 ++ .../order/impl/TpOrderDomainServiceImpl.java | 1647 +++++++++++ .../TpOrderReceivedDomainServiceImpl.java | 118 + .../TpUserPassengerDomainServiceImpl.java | 114 + ...pUserRouteCollectionDomainServiceImpl.java | 57 + .../CommonScheduleTaskExecuteTemplate.java | 86 + .../service/task/TpScheduleTaskService.java | 108 + .../task/worker/AbstractBaseTaskWorker.java | 165 ++ .../service/task/worker/CarPoolEndWorker.java | 275 ++ .../worker/CharterBusTripEndTaskWorker.java | 145 + .../worker/DepositOrderPayTimeoutWorker.java | 79 + .../task/worker/OrderTripStartWorker.java | 71 + .../worker/PayOrderTimeoutCloseWorker.java | 88 + .../task/worker/VoucherExpiredWorker.java | 232 ++ .../trans/TpPayOrderDomainService.java | 90 + .../impl/TpPayOrderDomainServiceImpl.java | 412 +++ .../voucher/TpVoucherDomainService.java | 104 + .../TpVoucherVerificationDomainService.java | 22 + .../impl/TpVoucherDomainServiceImpl.java | 448 +++ ...pVoucherVerificationDomainServiceImpl.java | 51 + .../core/util/TpTimeFormatUtil.java | 24 + 950 files changed, 70449 insertions(+) create mode 100644 .gitignore create mode 100644 APP-META/docker-config/Dockerfile-dev create mode 100644 APP-META/docker-config/Dockerfile-pre create mode 100644 APP-META/docker-config/Dockerfile-prod create mode 100644 APP-META/docker-config/Dockerfile-test create mode 100644 README.md create mode 100644 pom.xml create mode 100644 tptradecore-api/pom.xml create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/OrderDispatchController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/pay/PaymentController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/AlipayTestController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/ContractTestController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/OrderTestController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/PaymentTestController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/VoucherTestController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/WechatTestController.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/AlipayCallbackService.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatPayCallbackService.java create mode 100644 tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatRefundCallbackService.java create mode 100644 tptradecore-app-starter/pom.xml create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/ApplicationStarter.java create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/advise/GlobalControllerAdvise.java create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/Knife4jConfiguration.java create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryConfig.java create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryListener.java create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RocketMQConfig.java create mode 100644 tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/ValidatorConfig.java create mode 100644 tptradecore-app-starter/src/main/resources/application-dev.yml create mode 100644 tptradecore-app-starter/src/main/resources/application-local.yml create mode 100644 tptradecore-app-starter/src/main/resources/application-pre.yml create mode 100644 tptradecore-app-starter/src/main/resources/application-prod.yml create mode 100644 tptradecore-app-starter/src/main/resources/application-test.yml create mode 100644 tptradecore-app-starter/src/main/resources/application.yml create mode 100644 tptradecore-app-starter/src/main/resources/bootstrap.yml create mode 100644 tptradecore-app-starter/src/main/resources/logback-spring.xml create mode 100644 tptradecore-app-starter/src/main/resources/sql/tp_order.sql create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/MybatisPlusGenerator.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpAuditDomainServiceTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderChangeApplyServiceTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchDomainServiceTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchFacadeTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDomainServiceTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserPassengerDomainServiceTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserRouteCollectionDomainServiceTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpWechatV3ConfigTest.java create mode 100644 tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/VerifySignatureAndDecryptTest.java create mode 100644 tptradecore-app-starter/src/test/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImplTest.java create mode 100644 tptradecore-app-starter/src/test/resources/json/createOrder.json create mode 100644 tptradecore-app-starter/src/test/resources/json/createSubOrders.json create mode 100644 tptradecore-biz/pom.xml create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/pom.xml create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/IntegrationClientInterceptor.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/RpcExceptionHandleAspect.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/config/ThreadPoolConfig.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/TpOrderCalcFormula.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/XConstants.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpAuditBizConverter.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderChangeBizConverter.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderDispatchBizConverter.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderReceivedBizConverter.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderIdentityFlagEnum.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderServiceChargeFreeEnum.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/factory/TpOrderPushStatusStrategyFactory.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/log/LogFormatHelper.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/quarz/OrderStasticsTimer.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/audit/TpAuditFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/contract/TpContractFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedApplyFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderDispatchFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderReceivedFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserPassengerFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserRouteCollectionFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/trans/TpPaymentFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/voucher/TpVoucherFacadeImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderPushStatusStrategy.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderRescheduleNoRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllExpireStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllVerifiedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelAuditedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedAuditStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedPayStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelPaidStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelRefundedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeAuditedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeNeedAuditStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmRejectStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositNeedPayStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositPayedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositTimeoutStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDispatchedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderExpireStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedConfirmStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedDispatchStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedPayStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPaidStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireHasRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasNotUnverifiedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasUnverifiedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartVerifiedHasNotRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRefundingStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRescheduleHasRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTimeoutConfirmStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndConfirmingAmountStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndNeedPayStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndPaidStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundingStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripStartedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundingStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelUnRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundedStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundingStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailUnRefundStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFinishStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolSuccessStrategyImpl.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpTimeFormatUtil.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpVoucherUtil.java create mode 100644 tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/XUtil.java create mode 100644 tptradecore-common/pom.xml create mode 100644 tptradecore-common/tptradecore-common-dal/pom.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/QueryRefundPassengerCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/UpdateRefundApplyOrderCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/task/UpdateTaskCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryBillCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryChargeCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryPayOrderCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateBillCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateChargeCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdatePayOrderCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/QueryCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/UpdateCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/VoucherVerificationQueryCondition.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/audit/TpAuditDOConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplicantConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplyOrderConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundPassengerConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRequirementUserConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteShuttleConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemElementConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundVoucherRecordConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderBalanceConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderCarpoolRecordConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeApplyConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemFactorConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangePriceRecordConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChargeRecordConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDepositConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDiscountConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDispatchConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderElementConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderInvoiceConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderItemElementConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPassengerConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPlacerConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordDetailConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderReceivedConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRequirementUserConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteShuttleConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderServiceTargetConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderSubjectItemConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTravelTripConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripDispatchRecordConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripPositionConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserPassengerConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserRouteCollectionConverter.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/rule/TpBizRuleMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/task/TpScheduleTaskMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpBillMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpChargeMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpFinancialAccountMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpPayOrderMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherInspectionRecordMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherPassengerMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherVerificationMapStructConvert.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/audit/TpAuditDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplicantDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplyOrderDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundPassengerDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRequirementUserDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteScheduleDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemElementDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundVoucherRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderAuditDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderBalanceDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderCarpoolRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeApplyDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemFactorDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangePriceRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChargeRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDepositDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDiscountDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchFleetDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchJoinFleetDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDriverInfoDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderElementDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderInvoiceDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderItemElementDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerTripRelationDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPlacerDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDetailDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderReceiveDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRequirementUserDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRescheduleRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteShuttleDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderServiceTargetDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderSubjectItemDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTransportationDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelDispatchRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelTripDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTripPositionDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderVehicleInfoDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserPassengerDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserRouteCollectionDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/rule/TpBizRuleDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/task/TpScheduleTaskDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpBillDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpChargeDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpFinancialAccountDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpPayOrderDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpRescheduleInvalidVoucherRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherInspectionRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherPassengerDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherVerificationRecordDao.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/audit/TpAuditDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplicantDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplyOrderDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundPassengerDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRequirementUserDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteShuttleDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemElementDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundVoucherRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderAuditDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderBalanceDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderCarpoolRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeApplyDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemFactorDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangePriceRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChargeRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDepositDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDiscountDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchFleetDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchJoinFleetDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDriverInfoDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderElementDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderInvoiceDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderItemElementDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerTripRelationDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPlacerDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDetailDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderReceivedDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRequirementUserDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRescheduleRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteShuttleDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderServiceTargetDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderSubjectItemDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTransportationDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelDispatchRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelTripDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTripPositionDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderVehicleInfoDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserPassengerDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserRouteCollectionDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/rule/TpBizRuleDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/task/TpScheduleTaskDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpBillDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpChargeDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpFinancialAccountDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpPayOrderDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/MngVoucherVerificationRecordQueryResult.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/RefundPassengerDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpPassengerListDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpRescheduleInvalidVoucherRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherInspectionRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherPassengerDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherVerificationRecordDO.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/TpAuditRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/impl/TpAuditRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplicantRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRouteRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundPassengerRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRequirementUserRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteShuttleRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemElementRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundVoucherRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplicantRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplyOrderRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundPassengerRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRequirementUserRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteShuttleRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemElementRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundVoucherRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderBalanceRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderCarpoolRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeApplyRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemFactorRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangePriceRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChargeRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDepositRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDiscountRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchFleetRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchJoinFleetRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDriverInfoRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderElementRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderInvoiceRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderItemElementRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerTripRelationRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPlacerRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordDetailRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderReceivedRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRequirementUserRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRescheduleRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteShuttleRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderServiceTargetRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderSubjectItemRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTransportationRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelDispatchRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelTripRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTripPositionRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderVehicleInfoRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserPassengerRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserRouteCollectionRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderBalanceRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderCarpoolRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeApplyRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemFactorRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangePriceRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChargeRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDepositRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDiscountRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchFleetRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchJoinFleetRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDriverInfoRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderElementRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderInvoiceRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderItemElementRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerTripRelationRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPlacerRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordDetailRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderReceivedRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRequirementUserRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRescheduleRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteShuttleRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderServiceTargetRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderSubjectItemRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTransportationRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelDispatchRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelTripRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTripPositionRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderVehicleInfoRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserPassengerRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserRouteCollectionRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/TpBizRuleRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/impl/TpBizRuleRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/TpScheduleTaskRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/impl/TpScheduleTaskRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpBillRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpChargeRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpFinancialAccountRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpPayOrderRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpBillRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpChargeRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpFinancialAccountRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpPayOrderRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpRescheduleInvalidVoucherRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherInspectionRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherPassengerRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherVerificationRecordRepository.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpRescheduleInvalidVoucherRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherInspectionRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherPassengerRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherVerificationRecordRepositoryImpl.java create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/audit/TpAuditMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplicantMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplyOrderMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundPassengerMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRequirementUserDao.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteShuttleMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemElementMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundVoucherRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderBalanceMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderCarpoolRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeApplyMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemFactorMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangePriceRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChargeRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDepositMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDiscountMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchFleetMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchJoinFleetDao.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDriverInfoMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderElementMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderInvoiceMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderItemElementMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPassengerTripRelationMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPlacerMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordDetailMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRequirementUserMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRescheduleRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteShuttleDao.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderServiceTargetMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderSubjectItemMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTransportationMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelDispatchRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelTripMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTripPositionMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderVehicleInfoMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpRefundRouteScheduleRepository.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserPassengerMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserRouteCollectionMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpBillMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpChargeMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpFinancialAccountMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpPayOrderMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpRescheduleInvalidVoucherRecordDao.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherInspectionRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherPassengerMapper.xml create mode 100644 tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherVerificationRecordMapper.xml create mode 100644 tptradecore-common/tptradecore-common-service/pom.xml create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/pom.xml create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/constants/TpBizDataKeyConstants.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditApprovedSubmitDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditLatestDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditListQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditQueryDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditListQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditPagedQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCalculateRefundAmountDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCharteredBusRefundDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNamePassengerAvailableRefundDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNameTicketRefundChoiceDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpPageQueryRefundApplyOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryAvailableRefundVoucherDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundApplyOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNamePassengerAvailableRefundDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNameTicketRefundChoiceDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplicantDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundAuditDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundListQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundPassengerDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRequirementUserDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteShuttleDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemElementDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundTicketSuccessDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundVoucherDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBalanceOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBatchQueryOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCancelCarpoolDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolEndScheduleDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolListQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCheckSuccessCallbackDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpDepositOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpHistoryPassengerQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCancelApplyCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolPushStatusDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolSearchDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplicantCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyApprovedSubmitDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyBatchListDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyLatestDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyListDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyRscApplyDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyStatusUpdateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemFactorCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemListDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangePriceDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChargeRecordDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCountQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCreateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDetailQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDiscountDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCallBackDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchFleetCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchGiveBackDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchJoinFleetDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchListDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchStatusUpdateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderElementDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndPriceConfirmDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndorseDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderInvoiceDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderListQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderOfflinePaidDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPaidDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPayDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPlacerDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushPaidStatusStrategyDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusStrategyDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryRefundDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedCreatedDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedDetailDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRefundDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRequirementUserDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleInfoDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleRecordDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteShuttleDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttleQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttlesQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderStationDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemElementDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSwipeQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTargetServiceDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTravelDispatchDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUnverifiedQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUpdateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerSaveDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingDetailQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpTravelTripPathPointDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserTicketsQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpBillDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpChargeDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountCreateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaidOfflineDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCloseDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCreateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderUpdateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayRefundDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaySuccessDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPreparePayDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryPayResultDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryRefundResultDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpRefundSuccessDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpReschedulePaidSuccessDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpUserInfoDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBizRuleDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBuyLimitQueryVoucherDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpInvalidVoucherDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpMngVerificationRecordQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRefreshQrCodeDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRescheduleInvalidVoucherDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpStudentInfoDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeExistVerificationRecordDateQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeUserVerificationRecordDetailQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserTicketChoiceDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserVoucherVerificationRecordDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVerificationPassengerDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVouchPassengerListDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckSuccessDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCreateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherEncodeDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherInvalidDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherNonRealNameDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPurchaseInfoDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherUpdateDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordQueryDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/TpBizTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditBizObjectTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderModulesEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpAuditOrChangePriceBizTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpCarpoolOrderOperateEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderApproveStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeApplyStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemFactorEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChargeRecordTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDepositStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchSceneTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderIdentityStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderModulesEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderNeedApproveEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPayModeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPushStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedBizObjTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReductionServiceChargeTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderSourceEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTravelTripStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTripTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpServiceChargeOperationTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerIdentityTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChannelEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargingEntityTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpFinancialAccountTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayOrderStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPaySceneEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpVoucherNeedPropertiesEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpQueryScopeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherChannelEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherCheckTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherStatusEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherValidationTypeEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherVerifiedResultEnum.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorLevel.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorType.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/TpTradeCoreErrorCode.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/exception/TpTradeCoreException.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/audit/TpAuditFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/contract/TpContractFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedApplyFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderDispatchFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderReceivedFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserPassengerFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserRouteCollectionFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/trans/TpPaymentFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/voucher/TpVoucherFacade.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderListVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpCalculateRefundAmountVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryAvailableRefundVoucherVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryRefundDetailVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpRefundDateVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/DriverInfoVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplicantVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplyVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemFactorVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChargeRecordVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderCreateVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDetailVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDiscountVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchFleetVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchJoinFleetVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDriverInfoVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderElementVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderEndorseVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderInvoiceVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderListVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPaidVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPassengerVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPayVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPlacerVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordDetailVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderQueryRefundDetailVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderReceivedVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRefundVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRequirementUserVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleInfoVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleRecordVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteShuttleVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemElementVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTargetServiceVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTransportationVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelDispatchRecordVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelTripVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTripPositionVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderVehicleInfoVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpSalesUnitCarpoolVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserPassengerVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserRouteCollectionVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderCreateVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPreparePayVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryPayResultVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryRefundResultVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpBuyLimitQueryVoucherVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpMngVerificationRecordDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQrCodeQueryVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQueryVoucherListVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeExistVerificationRecordDateQueryVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeUserVerificationRecordDetailQueryVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpVoucherCheckVO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/pom.xml create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/AlipayRequestBuilder.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/WechatPayRequestBuilder.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpAliPayClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpBizRuleClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpCategoryClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpConfigClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpContractClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpEmailClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpGlobalStoreClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpInventoryClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderDispatchClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrgClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpPaymentClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductSalesUnitClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpRouteClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSequenceClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSmsClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpStudentClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTenantClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTripClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpUserCertificationClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpVoucherClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClientV2.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayConfig.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayMiniProgramConfig.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayConfig.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayReturnUrlConfig.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpUrl.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatMiniProgramConfig.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatPayConfig.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/constants/PayPlatformConstants.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformPreparePayDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformQueryResultDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformRefundDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpPayResultDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpRefundResultDTO.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpWechatH5Response.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/H5SceneInfo.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemMultiValue.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemSingleValue.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/initializer/TpPayConfigInitializer.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageConstants.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageDelayLevel.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageSysConstants.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/BaseMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/CarPoolPosGuoLangMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/OrderDelayMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayOrderDelayMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayRefundDelayMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PaySuccessMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/RefundSuccessMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/TicketRefundSuccessMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherExpireMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherRescheduleInvalidMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherVerificationSuccessMessageEntity.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/template/MessageClient.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/AlipayStrategy.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/PayStrategy.java create mode 100644 tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/WechatPayStrategy.java create mode 100644 tptradecore-common/tptradecore-common-util/pom.xml create mode 100644 tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/NacosConfigUtil.java create mode 100644 tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/PayCommonUtil.java create mode 100644 tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/TimeConvertUtil.java create mode 100644 tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/constants/BizDataKeyConstants.java create mode 100644 tptradecore-core/pom.xml create mode 100644 tptradecore-core/tptradecore-core-model/pom.xml create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAudit.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrderList.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpInvalidVoucherParam.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplicant.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplyOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundPassenger.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRequirementUser.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRoute.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRouteShuttle.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItem.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItemElement.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucher.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucherRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderMainEnum.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderStatusEnum.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderTypeEnum.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BaseModel.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BasePage.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBalanceOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBatchQueryOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpDepositOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderCarpoolRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApplicant.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApply.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItem.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItemFactor.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangePriceRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChargeRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDiscount.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatch.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchFleet.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchJoinFleet.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDriverInfo.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderElement.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderInvoice.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderItemElement.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPassenger.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPlacer.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecordDetail.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPushStatus.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderQueryList.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderReceived.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRequirementUser.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleInfo.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRoute.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRouteShuttle.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderSubjectItem.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTargetService.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTransportation.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelDispatchRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelTrip.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTripPosition.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderUpdateCharge.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderVehicleInfo.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserDelPassengerCondition.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassenger.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassengerCondition.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollection.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollectionCondition.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/rule/TpBizRule.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/task/TpScheduleTask.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpBill.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpCharge.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpFinancialAccount.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpPayOrder.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpPassengerList.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucher.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherInspectionRecord.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherPassenger.java create mode 100644 tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherVerificationRecord.java create mode 100644 tptradecore-core/tptradecore-core-service/pom.xml create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/component/TpTenantNacosConfigComponent.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/config/TransactionTemplateConfiguration.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/constants/MessageConstants.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/entity/TpMessageEntity.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpMessageHandler.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpUserMiniRegisterMessageHandler.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/listener/UserMqMessageListener.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/TpAuditDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/impl/TpAuditDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/TpContractDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/impl/TpContractDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderChangedApplyDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDispatchDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderReceivedDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserPassengerDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserRouteCollectionDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderChangedApplyDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDispatchDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderReceivedDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserPassengerDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserRouteCollectionDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/CommonScheduleTaskExecuteTemplate.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/TpScheduleTaskService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/AbstractBaseTaskWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CarPoolEndWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CharterBusTripEndTaskWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/DepositOrderPayTimeoutWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/OrderTripStartWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/PayOrderTimeoutCloseWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/VoucherExpiredWorker.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/TpPayOrderDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherVerificationDomainService.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherVerificationDomainServiceImpl.java create mode 100644 tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/util/TpTimeFormatUtil.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..08d9f10 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store + +#日志文件 +logs \ No newline at end of file diff --git a/APP-META/docker-config/Dockerfile-dev b/APP-META/docker-config/Dockerfile-dev new file mode 100644 index 0000000..8d2cd7c --- /dev/null +++ b/APP-META/docker-config/Dockerfile-dev @@ -0,0 +1,46 @@ +FROM deepinnet-k8s-images-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/rdc-base:no-java +#FROM deepinnet-k8s-image-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/openjdk:8-jdk-alpine +#FROM openjdk:8-jdk-alpine +ARG jdk_versions="1.8" +RUN for version in ${jdk_versions}; \ + do \ + cd /tmp && \ + wget -q https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/jdk/jdk${version}.tar.gz && \ + mkdir -p /jdk/jdk${version} && \ + tar xf jdk${version}.tar.gz -C /jdk/jdk${version} --strip-components 1 && \ + ln -s /jdk/jdk${version} /jdk/jdk${version}/jvm && \ + rm -f jdk${version}.tar.gz; \ + done + +RUN export JAVA_HOME=/jdk/jdk1.8 && \ + export PATH=$JAVA_HOME/bin:$PATH && \ + export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar + +## +ENV BUILD_APP_NAME tptradecore +ENV SPRING_PROFILE dev + +ARG APP_JAR=tptradecore.jar + +RUN mkdir -p /home/$BUILD_APP_NAME/target + +RUN echo "#!/bin/bash" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "cd /home/$BUILD_APP_NAME/target/" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "tar -xvf /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "chmod 777 /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "exec /jdk/jdk1.8/bin/java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=${SPRING_PROFILE} -jar /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN chmod +x /home/$BUILD_APP_NAME/*.sh + +### +ADD $APP_JAR /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz + +WORKDIR /home/$BUILD_APP_NAME + +ENTRYPOINT ["/bin/sh", "/home/tptradecore/start.sh"] + +EXPOSE 8080 \ No newline at end of file diff --git a/APP-META/docker-config/Dockerfile-pre b/APP-META/docker-config/Dockerfile-pre new file mode 100644 index 0000000..76a6c2b --- /dev/null +++ b/APP-META/docker-config/Dockerfile-pre @@ -0,0 +1,49 @@ +FROM shendu-prod-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/rdc-base:no-java +#FROM deepinnet-k8s-image-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/openjdk:8-jdk-alpine +#FROM openjdk:8-jdk-alpine +ARG jdk_versions="11" +RUN for version in ${jdk_versions}; \ + do \ + cd /tmp && \ + wget -q https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/jdk/jdk${version}.tar.gz && \ + mkdir -p /jdk/jdk${version} && \ + tar xf jdk${version}.tar.gz -C /jdk/jdk${version} --strip-components 1 && \ + ln -s /jdk/jdk${version} /jdk/jdk${version}/jvm && \ + rm -f jdk${version}.tar.gz; \ + done + +RUN export JAVA_HOME=/jdk/jdk${jdk_versions} && \ + export PATH=$JAVA_HOME/bin:$PATH && \ + export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar + +RUN apt-get update && \ + apt-get install -y fontconfig ttf-dejavu + +## +ENV BUILD_APP_NAME tptradecore +ENV SPRING_PROFILE pre + +ARG APP_JAR=tptradecore.jar + +RUN mkdir -p /home/$BUILD_APP_NAME/target + +RUN echo "#!/bin/bash" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "cd /home/$BUILD_APP_NAME/target/" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "tar -xvf /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "chmod 777 /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "exec /jdk/jdk${jdk_versions}/bin/java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=${SPRING_PROFILE} -jar /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN chmod +x /home/$BUILD_APP_NAME/*.sh + +### +ADD $APP_JAR /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz + +WORKDIR /home/$BUILD_APP_NAME + +ENTRYPOINT ["/bin/sh", "/home/tptradecore/start.sh"] + +EXPOSE 8080 \ No newline at end of file diff --git a/APP-META/docker-config/Dockerfile-prod b/APP-META/docker-config/Dockerfile-prod new file mode 100644 index 0000000..49e7f69 --- /dev/null +++ b/APP-META/docker-config/Dockerfile-prod @@ -0,0 +1,49 @@ +FROM shendu-prod-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/rdc-base:no-java +#FROM deepinnet-k8s-image-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/openjdk:8-jdk-alpine +#FROM openjdk:8-jdk-alpine +ARG jdk_versions="11" +RUN for version in ${jdk_versions}; \ + do \ + cd /tmp && \ + wget -q https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/jdk/jdk${version}.tar.gz && \ + mkdir -p /jdk/jdk${version} && \ + tar xf jdk${version}.tar.gz -C /jdk/jdk${version} --strip-components 1 && \ + ln -s /jdk/jdk${version} /jdk/jdk${version}/jvm && \ + rm -f jdk${version}.tar.gz; \ + done + +RUN export JAVA_HOME=/jdk/jdk${jdk_versions} && \ + export PATH=$JAVA_HOME/bin:$PATH && \ + export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar + +RUN apt-get update && \ + apt-get install -y fontconfig ttf-dejavu + +## +ENV BUILD_APP_NAME tptradecore +ENV SPRING_PROFILE prod + +ARG APP_JAR=tptradecore.jar + +RUN mkdir -p /home/$BUILD_APP_NAME/target + +RUN echo "#!/bin/bash" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "cd /home/$BUILD_APP_NAME/target/" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "tar -xvf /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "chmod 777 /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "exec /jdk/jdk${jdk_versions}/bin/java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=${SPRING_PROFILE} -jar /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN chmod +x /home/$BUILD_APP_NAME/*.sh + +### +ADD $APP_JAR /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz + +WORKDIR /home/$BUILD_APP_NAME + +ENTRYPOINT ["/bin/sh", "/home/tptradecore/start.sh"] + +EXPOSE 8080 \ No newline at end of file diff --git a/APP-META/docker-config/Dockerfile-test b/APP-META/docker-config/Dockerfile-test new file mode 100644 index 0000000..7537876 --- /dev/null +++ b/APP-META/docker-config/Dockerfile-test @@ -0,0 +1,46 @@ +FROM deepinnet-k8s-images-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/rdc-base:no-java +#FROM deepinnet-k8s-image-registry.cn-hangzhou.cr.aliyuncs.com/deepinnet/openjdk:8-jdk-alpine +#FROM openjdk:8-jdk-alpine +ARG jdk_versions="11" +RUN for version in ${jdk_versions}; \ + do \ + cd /tmp && \ + wget -q https://rdc-public-software.oss-cn-hangzhou.aliyuncs.com/jdk/jdk${version}.tar.gz && \ + mkdir -p /jdk/jdk${version} && \ + tar xf jdk${version}.tar.gz -C /jdk/jdk${version} --strip-components 1 && \ + ln -s /jdk/jdk${version} /jdk/jdk${version}/jvm && \ + rm -f jdk${version}.tar.gz; \ + done + +RUN export JAVA_HOME=/jdk/jdk${jdk_versions} && \ + export PATH=$JAVA_HOME/bin:$PATH && \ + export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar + +## +ENV BUILD_APP_NAME tptradecore +ENV SPRING_PROFILE test + +ARG APP_JAR=tptradecore.jar + +RUN mkdir -p /home/$BUILD_APP_NAME/target + +RUN echo "#!/bin/bash" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "cd /home/$BUILD_APP_NAME/target/" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "tar -xvf /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "chmod 777 /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN echo "exec /jdk/jdk${jdk_versions}/bin/java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=${SPRING_PROFILE} -jar /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.jar" >> /home/$BUILD_APP_NAME/start.sh + +RUN chmod +x /home/$BUILD_APP_NAME/*.sh + +### +ADD $APP_JAR /home/$BUILD_APP_NAME/target/$BUILD_APP_NAME.tgz + +WORKDIR /home/$BUILD_APP_NAME + +ENTRYPOINT ["/bin/sh", "/home/tptradecore/start.sh"] + +EXPOSE 8080 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7954634 --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +## 命名规则: +groupId:统一使用com.deepinnet +
+artifactId:deepinnet-应用名 + +包命名规范:com.deepinnet.应用名.模块名 +
+举例:com.deepinnet.tptradecore.biz + +## 项目分层说明: +- tptradecore-app-starter(SpringBoot应用启动类) +- tptradecore-biz(业务层) + - tptradecore-biz-service-impl(业务层的实现,具体业务流程编排) + +- tptradecore-common(通用层) + - tptradecore-common-dal(仓储层) + - tptradecore-common-service + - tptradecore-common-service-facade(需要向外界暴露的领域服务) + - tptradecore-common-service-integration(集成的第三方接口) + - tptradecore-common-util(工具) + +- tptradecore-core(领域层) + - tptradecore-core-service(本系统内使用的service接口) + - tptradecore-core-model(领域模型) + +## 各模块依赖关系: +- biz:负责业务流程编排,依赖于common-service-facade、common-service-integration、 + common-service-util、core-service +- core-service:本系统内的服务, 不需要向外暴露,依赖core-model、 + common-dal、common-util diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..aa85c2f --- /dev/null +++ b/pom.xml @@ -0,0 +1,463 @@ + + + 4.0.0 + + com.deepinnet + tptradecore + 1.0-SNAPSHOT + pom + + tptradecore-api + tptradecore-app-starter + tptradecore-biz + tptradecore-common + tptradecore-core + + + + 11 + 11 + UTF-8 + + + 2.6.11 + 2021.0.4 + 2021.0.4.0 + 2.6.0 + + + 8.0.28 + 1.2.17 + 3.5.3 + 2.3.0 + 3.6.3 + 3.1.4 + 1.7.9 + 1.0.1 + + + 1.18.24 + 2.13.4 + 3.12.0 + 4.4 + 5.8.9 + 5.8.9 + 3.0.3 + 1.70 + 3.0.5 + 1.4.7 + 3.18.0 + 3.18.0 + 4.9.3 + + 2.6.0 + 0.9.16 + 2.4 + 3.15.1 + 1.5.0.Final + 32.1.1-jre + 2.9.7 + 3.2.4 + 4.39.123.ALL + 1.3.4 + 3.1.4 + + + 1.0.0.20240227 + 1.0.0.20231218.1-SNAPSHOT + + + 1.0-SNAPSHOT + 1.0.0.20241014.1-SNAPSHOT + 1.0.0.20240730-RELEASE + 202407.0.0-SNAPSHOT + 202405.0.1-RELEASE + 202407.0.0-RELEASE + + + + + + + com.deepinnet + deepinnet-common-boot-starter + ${deepinnet-common-boot-starter-version} + + + + com.deepinnet + tp-common-lang + ${tp-common-lang-version} + + + + org.springframework.boot + spring-boot-dependencies + ${spring.boot.version} + import + pom + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + import + pom + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + org.apache.dubbo + dubbo-bom + ${dubbo.version} + pom + import + + + + com.deepinnet + tptradecore-common-service-integration + ${tptradecore.version} + + + + com.deepinnet + tptradecore-common-util + ${tptradecore.version} + + + + com.deepinnet + tptradecore-biz-service-impl + ${tptradecore.version} + + + + com.deepinnet + tptradecore-api + ${tptradecore.version} + + + + com.deepinnet + tptradecore-core-service + ${tptradecore.version} + + + + com.deepinnet + tptradecore-common-dal + ${tptradecore.version} + + + + com.deepinnet + tptradecore-core-model + ${tptradecore.version} + + + + com.deepinnet + tptradecore-common-service-facade + ${tptradecore-common-service-facade-version} + + + + com.deepinnet + tpcommoncore-common-service-facade + ${tpcommoncore-common-service-facade-version} + + + + com.deepinnet + tpbaseopcore-common-service-facade + ${tpbaseopcore-common-service-facade-version} + + + + com.deepinnet + tpconfigcore-common-service-facade + ${tpconfigcore-common-service-facade-version} + + + + com.deepinnet + tpproductcore-common-service-facade + ${tpproductcore-common-service-facade-version} + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + ${jasypt.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + cn.hutool + hutool-all + ${hutool.version} + + + + + org.apache.dubbo + dubbo + ${dubbo.version} + + + + org.apache.dubbo + dubbo-registry-nacos + ${dubbo.version} + + + + org.perf4j + perf4j + ${perf4j.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + org.bouncycastle + bcprov-jdk15on + ${bcprov-jdk15on.version} + + + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun-oss.version} + + + + org.apache.rocketmq + rocketmq-spring-boot-starter + ${rocketmq.version} + + + + org.springframework.retry + spring-retry + ${spring-retry.version} + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife.version} + + + + + com.aliyun.schedulerx + schedulerx2-spring-boot-starter + ${schedulerx2.version} + + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + log4j + log4j + + + + + + com.aliyun.schedulerx + schedulerx2-plugin-kubernetes + ${schedulerx-plugin-kubernetes} + + + + + org.redisson + redisson-spring-boot-starter + + + org.redssion + redisson-spring-data-27 + + + ${redssion-spring-boot-starter.version} + + + + org.redisson + redisson-spring-data-26 + ${redisson-spring-data.version} + + + + com.github.pagehelper + pagehelper-spring-boot-starter + ${pageHelper.version} + + + + com.alibaba + easyexcel + ${easy-excel.version} + + + + org.mapstruct + mapstruct + ${mapstruct.version} + + + + org.mapstruct + mapstruct-processor + ${mapstruct.version} + + + + com.google.guava + guava + ${guava.version} + + + + com.github.javen205 + IJPay-All + ${IJPay.version} + + + + com.github.xkzhangsan + xk-time + ${xk-time.version} + + + + com.alipay.sdk + alipay-sdk-java + ${alipay-sdk.version} + + + + + + + + com.squareup.okhttp3 + okhttp + ${okhttp.version} + + + + com.squareup.okhttp3 + okhttp + ${okhttp.version} + + + + com.deepinnet + deepinnet-common-boot-starter + + + + com.deepinnet + tp-common-lang + + + okhttp + com.squareup.okhttp3 + + + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + cn.hutool + hutool-all + ${hutool.version} + + + + org.apache.commons + commons-lang3 + ${common-lang3.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + + com.google.guava + guava + + + + diff --git a/tptradecore-api/pom.xml b/tptradecore-api/pom.xml new file mode 100644 index 0000000..131220c --- /dev/null +++ b/tptradecore-api/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + com.deepinnet + tptradecore + 1.0-SNAPSHOT + + + tptradecore-api + + + + org.springframework.boot + spring-boot-starter-web + + + + com.deepinnet + tptradecore-biz-service-impl + 1.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-validation + + + + com.alibaba + easyexcel + + + + diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/OrderDispatchController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/OrderDispatchController.java new file mode 100644 index 0000000..97620a9 --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/OrderDispatchController.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.controller; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderDispatchFacade; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderReceivedFacade; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; + +/** + *

+ * 订单派单 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@Api(tags = "订单派单") +@CrossOrigin +@RestController("/order/") +public class OrderDispatchController { + + @Resource + private TpOrderDispatchFacade tpOrderDispatchFacade; + @Resource + private TpOrderReceivedFacade tpOrderReceivedFacade; + + @ApiOperation(value = "订单分配") + @PostMapping("/dispatchOrder") + public TpResult dispatchOrder (@RequestBody @NotNull(message = "入参不能为空") TpOrderDispatchCreatedDTO dto) { + return tpOrderDispatchFacade.dispatchOrder(dto); + } + + @ApiOperation(value = "用户接单") + @PostMapping("/receiveOrder") + public TpResult receiveOrder (@RequestBody @NotNull(message = "入参不能为空") TpOrderReceivedCreatedDTO dto) { + return tpOrderReceivedFacade.receiveOrder(dto); + } + +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/pay/PaymentController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/pay/PaymentController.java new file mode 100644 index 0000000..55a8039 --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/pay/PaymentController.java @@ -0,0 +1,141 @@ +package com.deepinnet.tptradecore.controller.pay; + +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.log.LogFormatHelper; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.service.impl.*; +import org.slf4j.*; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.*; +import java.util.*; + +/** + * @author amos wong + * @create 2022-11-16 17:12 + *

+ * 第三方支付平台的api接口 + */ +@RestController +@CrossOrigin +public class PaymentController { + + @Resource + private AlipayCallbackService alipayCallbackService; + + @Resource + private WechatPayCallbackService wechatPayCallbackService; + + @Resource + private WechatRefundCallbackService wechatRefundCallbackService; + + private static final Logger BIZ_DIGEST_LOG = LoggerFactory.getLogger("BIZ-DIGEST-LOG"); + + /** + * 接收支付宝支付结果的回调接口 + * + * @param request + */ + @PostMapping("/alipay/pay/callback") + public String processAlipayCallback(HttpServletRequest request) { + Long startTime = System.currentTimeMillis(); + Exception ex = null; + try { + LogUtil.info("接收到支付宝回调请求:{}", request); + alipayCallbackService.processPayResultCallback(request); + } catch (Exception e) { + ex = e; + LogUtil.error("支付宝支付回调接口处理失败,原因:{}", e); + return "fail"; + } finally { + boolean isSuccess = ex == null; + LogUtil.info(BIZ_DIGEST_LOG, "{}", LogFormatHelper.logFormat(startTime, "PaymentController", "processAlipayCallback", isSuccess, ex)); + } + + LogUtil.info("支付宝回调请求处理成功"); + return "success"; + } + + /** + * 接收微信支付结果的回调接口 + * + * @param request + */ + @PostMapping(value = "/wechat/pay/callback") + public Map processWechatPaySuccessCallback(HttpServletRequest request) { + Long startTime = System.currentTimeMillis(); + Exception ex = null; + + try { + LogUtil.info("接收到微信支付支付成功回调通知"); + wechatPayCallbackService.processPayResultCallback(request); + LogUtil.info("微信回调请求处理成功"); + + return generateSuccessResultMap(); + } catch (TpTradeCoreException e) { + ex = e; + if (e.getErrorCode() == TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR) { + // 幂等处理,告知微信已经处理成功了 + return generateSuccessResultMap(); + } + + LogUtil.error("微信支付回调接口处理失败,原因:{}", e); + return generateFailResultMap(); + } catch (Exception e) { + ex = e; + LogUtil.error("微信支付回调接口处理失败,原因:{}", e); + return generateFailResultMap(); + } finally { + boolean isSuccess = ex == null; + LogUtil.info(BIZ_DIGEST_LOG, "{}", LogFormatHelper.logFormat(startTime, "PaymentController", "processWechatPaySuccessCallback", isSuccess, ex)); + } + } + + /** + * 接收微信支付退款结果的回调接口 + * + * @param request + */ + @PostMapping(value = "/wechat/refund/callback") + public Map processWechatRefundCallback(HttpServletRequest request) { + Long startTime = System.currentTimeMillis(); + Exception ex = null; + try { + LogUtil.info("接收到微信支付退款回调通知"); + wechatRefundCallbackService.processRefundSuccessCallback(request); + LogUtil.info("微信支付退款成功回调处理成功"); + + return generateSuccessResultMap(); + } catch (TpTradeCoreException e) { + ex = e; + if (e.getErrorCode() == TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR) { + // 幂等处理,告知微信已经处理成功了 + return generateSuccessResultMap(); + } + + return generateFailResultMap(); + } catch (Exception e) { + LogUtil.error("微信支付退款成功回调接口处理失败,原因:{}", e); + return generateFailResultMap(); + } finally { + boolean isSuccess = ex == null; + LogUtil.info(BIZ_DIGEST_LOG, "{}", LogFormatHelper.logFormat(startTime, "PaymentController", "processWechatRefundCallback", isSuccess, ex)); + } + } + + private Map generateSuccessResultMap() { + Map resultMap = new HashMap<>(); + resultMap.put("code", "SUCCESS"); + resultMap.put("message", "成功"); + return resultMap; + } + + private Map generateFailResultMap() { + Map resultMap = new HashMap<>(); + resultMap.put("code", "FAIL"); + resultMap.put("message", "失败"); + return resultMap; + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/AlipayTestController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/AlipayTestController.java new file mode 100644 index 0000000..f6c2b3f --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/AlipayTestController.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.controller.test; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tptradecore.common.service.integration.client.TpAliPayClient; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import org.springframework.security.core.parameters.P; +import com.deepinnet.tptradecore.core.service.task.CommonScheduleTaskExecuteTemplate; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2022-11-16 17:12 + *

+ * 第三方支付平台的api接口 + */ +@RestController +@CrossOrigin +@RequestMapping(value = "/alipay") +public class AlipayTestController { + + @Resource + private TpAliPayClient aliPayClient; + + @Resource + private CommonScheduleTaskExecuteTemplate scheduleTaskExecuteTemplate; + + @PostMapping("/prepay") + public String alipayPrepay(@RequestBody PayPlatformPreparePayDTO preparePayDTO) { + TpMoney payAmount = new TpMoney("0.01", TpMoney.ValueUnitEnum.YUAN); + preparePayDTO.setPayAmount(payAmount); + preparePayDTO.setPayTimeout(LocalDateTime.now().plusHours(1)); + preparePayDTO.setUserIp("192.168.3.200"); + return aliPayClient.preparePay(preparePayDTO); + } + + @PostMapping("/task") + public void executeScheduleTask() { + scheduleTaskExecuteTemplate.process(); + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/ContractTestController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/ContractTestController.java new file mode 100644 index 0000000..205f6b1 --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/ContractTestController.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.controller.test; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import com.deepinnet.tptradecore.common.service.facade.contract.TpContractFacade; +import com.deepinnet.tptradecore.common.vo.contract.*; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/7 17:23 + * @Description + */ +@RestController +@CrossOrigin +public class ContractTestController { + + @Resource + private TpContractFacade contractFacade; + + @PostMapping("/contract/refund") + public TpResult refundTicket(@RequestBody @Validated TpRefundApplyDTO refundApplyDTO) { + return contractFacade.refundTicket(refundApplyDTO); + } + + @PostMapping("/contract/query") + public TpResult> queryRefundApplyOrders(@RequestBody @Validated TpQueryRefundApplyOrderDTO queryDTO) { + return contractFacade.getRefundApplyOrderList(queryDTO); + } + + @PostMapping("/contract/page") + public TpResult> pageQueryApplyOrders(@RequestBody @Validated TpPageQueryRefundApplyOrderDTO queryDTO) { + return contractFacade.pageQueryApplyRefundOrders(queryDTO); + } + + @PostMapping("/contract/detail") + public TpResult getRefundDetail(@RequestBody @Validated TpQueryRefundDetailDTO queryDTO) { + return contractFacade.getRefundDetail(queryDTO); + } + + @PostMapping("/contract/refund/available") + public TpResult> getRefundAvailableVoucherList(@RequestBody @Validated TpQueryAvailableRefundVoucherDTO queryDTO) { + return contractFacade.queryAvailableRefundVoucherList(queryDTO); + } + +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/OrderTestController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/OrderTestController.java new file mode 100644 index 0000000..8ccb41b --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/OrderTestController.java @@ -0,0 +1,124 @@ +package com.deepinnet.tptradecore.controller.test; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.service.facade.order.*; +import com.deepinnet.tptradecore.common.vo.order.*; +import io.swagger.annotations.*; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 测试接口 + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ + +@Api(tags = "订单接口") +@CrossOrigin +@RestController +@RequestMapping(value = "/order") +public class OrderTestController { + + @Resource + private TpUserPassengerFacade tpUserPassengerFacade; + + @Resource + private TpOrderFacade tpOrderFacade; + + @GetMapping("/test") + public TpResult test() { + return tpOrderFacade.getOrderDetail(TpOrderQueryDTO.builder() + .originalOrderNo("20231108006000009008") + .tenantId("test").build()); + } + + @ApiOperation(value = "创建订单") + @PostMapping("/createOrder") + public TpResult createOrder(@RequestBody @NotNull(message = "入参不能为空") TpOrderCreateDTO dto) { + return tpOrderFacade.createOrder(dto); + } + + @ApiOperation(value = "改签订单") + @PostMapping("/endorse") + public TpResult endorseOrdder(@RequestBody @NotNull(message = "入参不能为空") TpOrderCreateDTO dto) { + return tpOrderFacade.endorseOrder(dto); + } + + @ApiOperation(value = "保存用户乘客信息") + @PostMapping("/saveUserPassenger") + public TpResult savePassenger(@RequestBody @NotNull(message = "入参不能为空") TpUserPassengerDTO dto) { + return tpUserPassengerFacade.saveUserPassenger(dto); + } + + @ApiOperation(value = "支付订单") + @PostMapping("/payOrder") + public TpResult payOrder(@RequestBody @NotNull(message = "入参不能为空") TpOrderPayDTO dto) { + return tpOrderFacade.payOrder(dto); + } + + @ApiOperation(value = "删除乘客信息") + @PostMapping("/delUserPassenger") + public TpResult delUserPassenger(@RequestBody @NotNull(message = "入参不能为空") TpUserPassengerQueryDTO dto) { + return tpUserPassengerFacade.delUserPassenger(dto); + } + + @ApiOperation(value = "编辑乘客信息") + @PostMapping("/modifyPassenger") + public TpResult modifyPassenger(@RequestBody @NotNull(message = "入参不能为空") TpUserPassengerDTO dto) { + return tpUserPassengerFacade.modifyPassenger(dto); + } + + @ApiOperation(value = "查询乘客列表") + @PostMapping("/passengerList") + public TpResult> queryPassengerList(@RequestBody @NotNull(message = "入参不能为空") TpUserPassengerQueryDTO dto) { + return tpUserPassengerFacade.queryPassengerList(dto); + } + + @ApiOperation(value = "查询订单列表") + @PostMapping("/orderList") + public TpResult> orderList(@RequestBody @NotNull(message = "入参不能为空") TpOrderListQueryDTO dto) { + return tpOrderFacade.orderList(dto); + } + + @ApiOperation(value = "查询订单列表--预约包车--C端") + @PostMapping("/charterBusOrderListToC") + public TpResult> charterBusOrderListToC(@RequestBody @NotNull(message = "入参不能为空") TpOrderListQueryDTO dto) { + return tpOrderFacade.charterBusOrderListToC(dto); + } + + @ApiOperation(value = "查询订单列表--预约包车--B端") + @PostMapping("/charterBusOrderListToB") + public TpResult> charterBusOrderListToB(@RequestBody @NotNull(message = "入参不能为空") TpOrderListQueryDTO dto) { + return tpOrderFacade.charterBusOrderListToB(dto); + } + + @ApiOperation(value = "查询订单详情") + @PostMapping("/orderDetail") + public TpResult getOrderDetail(@RequestBody @NotNull(message = "入参不能为空") TpOrderQueryDTO dto) { + return tpOrderFacade.getOrderDetail(dto); + } + + @ApiModelProperty(value = "上传发票") + @PostMapping("/saveInvoice") + public TpResult saveInvoice(@RequestBody TpOrderInvoiceDTO dto) { + return tpOrderFacade.saveInvoice(dto); + } + + @PostMapping("/carpool/check") + public TpResult carpoolCheckCallback(@RequestBody TpCheckSuccessCallbackDTO checkSuccessCallbackDTO) { + return tpOrderFacade.checkSuccessCallback(checkSuccessCallbackDTO); + } + + @PostMapping("/carpool/cancel") + public TpResult cancelCarpoolOrder(@RequestBody TpCancelCarpoolDTO cancelCarpoolDTO) { + return tpOrderFacade.cancelOrCarpoolFailOrder(cancelCarpoolDTO); + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/PaymentTestController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/PaymentTestController.java new file mode 100644 index 0000000..8e739a4 --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/PaymentTestController.java @@ -0,0 +1,217 @@ +package com.deepinnet.tptradecore.controller.test; + +import cn.hutool.core.io.file.FileWriter; +import cn.hutool.json.*; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.*; +import com.deepinnet.tpbaseopcore.common.dto.pay.OrgWxPayDTO; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.service.facade.trans.TpPaymentFacade; +import com.deepinnet.tptradecore.common.service.integration.client.*; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.deepinnet.tptradecore.common.vo.trans.*; +import com.ijpay.core.IJPayHttpResponse; +import com.ijpay.core.enums.RequestMethodEnum; +import com.ijpay.core.kit.*; +import com.ijpay.wxpay.WxPayApi; +import com.ijpay.wxpay.enums.WxDomainEnum; +import com.ijpay.wxpay.enums.v3.OtherApiEnum; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.security.cert.X509Certificate; +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2023/10/10 16:53 + * @Description + */ +@RestController +@CrossOrigin +public class PaymentTestController { + + @Resource + private TpPaymentFacade paymentFacade; + + @Resource + private TpWechatPayClientV2 wechatPayClientV2; + + @Resource + private TpWechatPayClient wechatPayClient; + + @Resource + private TpOrgClient orgClient; + + @PostMapping("/wechat/v2/prepay") + public String prepay(@RequestBody PayPlatformPreparePayDTO preparePayRequestDTO) { + preparePayRequestDTO.setPayTimeout(LocalDateTime.now().plusHours(24)); + preparePayRequestDTO.setPayAmount(new TpMoney("0.01", TpMoney.ValueUnitEnum.YUAN)); + return wechatPayClientV2.preparePay(preparePayRequestDTO); + } + + @PostMapping("/wechat/v3/prepay") + public String prepayV3(@RequestBody PayPlatformPreparePayDTO preparePayRequestDTO) { + preparePayRequestDTO.setPayTimeout(LocalDateTime.now().plusHours(24)); + preparePayRequestDTO.setPayAmount(new TpMoney("0.01", TpMoney.ValueUnitEnum.YUAN)); + return wechatPayClient.preparePay(preparePayRequestDTO); + } + + @PostMapping("/wechat/v3/refund") + public TpRefundResultDTO refundV3(@RequestBody PayPlatformRefundDTO refundDTO) { + return wechatPayClient.refund(refundDTO); + } + + @RequestMapping("/get/platformCert") + @ResponseBody + public String v3Get() { + // 获取平台证书列表 + try { + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.GET, + WxDomainEnum.CHINA.toString(), + OtherApiEnum.GET_CERTIFICATES.toString(), + "1668231818", + "6812B7131474C248CE239C715831AD73CA56F856", + null, + PayKit.getPrivateKeyByKeyContent("-----BEGIN PRIVATE KEY-----\n" + + "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1Lzv8fbtZrYKL\n" + + "q2HuccYJFzIRCk5sazyIlKxZKYhOpDjquP+wnUGQ+ffcQYCI2j1zjkz0cDYR7+ZC\n" + + "OuirmV0tKhZTbTAJCFfxShQ7VZ1mJ48RONiUxxnNph5xeJ/6HuGyopUiCbTKdK++\n" + + "goWkV//iOOE/qf993WLk+oa3DTgB8va/0ahK3+XUZb2y1DXI85eilgqTIMfj5+cv\n" + + "dLyMqy/+sw+fSDY+lk2Wec/mTQUZ+RjDbFLpHgTot90nx9udg7+tpT/2q+zHKdS/\n" + + "Av+M0FRqV/D1Kl4SemykjVcvk8Vk71FfYRElmnxChmvc9IFWyC+e+SAakLnUx5lm\n" + + "b3MOcp8JAgMBAAECggEAB3va+3PqECs1kDVVBzdV2bxGiiOl156aUn3pnIk1oyHv\n" + + "Y+qeTRpBwg5BKaze9Ugmb6Z6EUKtSRJirWunfqcIDTyGzY1eBZF9qG7J5SWFKdoK\n" + + "c8ioUYTj0PXCnidAXGF4KxvCEzTZbd9h/vl/Mamc3ShCTZHlBrrlQdYDSH5YSORB\n" + + "duJ7aMdnoPp6JRnVSg4o8+Cg0wVaxo7UXdcB6agPHxzeKmMwpiuJT/Y8tiAhOmRw\n" + + "z14+nrVgWZjgl8kUQfy7bvLgLMiui9zW66QrINQIrUwBLmrAugZtYdDsDK8qzAyu\n" + + "1PnC8Jse5r/OUqJlP79177X5/XBCWS56K5h3epA4TQKBgQDcrVtldktnVoY4jv5M\n" + + "175zHWWcfyZrkbalHQaX5ZKEDX8HCHvjXstBT47jGiScdXiUt3s398y3hBLijKlX\n" + + "oG4N65IJ1U6hSvakG0qeuAgIM9BByG0dRI0P4m8qP/bEPg3DfhXaMNQ8wouxwauE\n" + + "AQ9wwBXQqcGj9XiUuBduZjTsQwKBgQDSL5gvCmhi11NzZpqT70YR4vKD3Lt9tmEF\n" + + "3MYdx+oqFPOa9W3AKaJulRMl4hzusWUSTCZBJzj+DT2YqecwMZJkVfPlrwsVJpP0\n" + + "itcKZRSRT+egkjf9rlONuOp1ad8QKv8qbNKNQ3NbaQbTOHBvp+4c201yG8RrUlJj\n" + + "t3TzEHw4wwKBgFhtKuN0THDDLhN50RLPnKQaEn5sQOP3xp1RDTROrLA3jEAwORx5\n" + + "/q5UB+iesC71r3TANSLPK/wZc0vOm4jeY1s2mxVPoStmk4Bc40DIc4d946SIgJiq\n" + + "wG+uB2eBrAsk5nUAkBcXW+Rg/IMlHOpPVnWSsusjKtHdag0F23XEhM5rAoGBAJFl\n" + + "ORn5UiJln6WpqW6CS29eFbLfw5b/zXf3s9iwDS0VFzrvYf9XDbT/TKKdGrSHZEpX\n" + + "APN7BXLAiAaOKY3uDL15s+EDyF/WMu0sCft31tV6d9lcrHzA1a2o6A9WsGaHx8F6\n" + + "S+BKc4cdTQpZ9XVXrmCp15YC3Un8RWATbUQi+DtvAoGBAIK4uPODRCfZM6q8a57U\n" + + "vlyw/BD21WwujIzctsDINYaoG2ncanBI5CynXW4o6X+tGAZrNQZkIai+tl2JCbTt\n" + + "/qVIIV9qmEUyJ9t97UMEPKCYqYTDdXQGzk3i+1XGMqS1luRFfMohUv5JUAdwmS7b\n" + + "pnFZK2M1/Dr9GwBiz8UqgUqx\n" + + "-----END PRIVATE KEY-----\n"), + "" + ); + + String timestamp = response.getHeader("Wechatpay-Timestamp"); + String nonceStr = response.getHeader("Wechatpay-Nonce"); + String serialNumber = response.getHeader("Wechatpay-Serial"); + String signature = response.getHeader("Wechatpay-Signature"); + String body = response.getBody(); + int status = response.getStatus(); + + int isOk = 200; + if (status == isOk) { + JSONObject jsonObject = JSONUtil.parseObj(body); + JSONArray dataArray = jsonObject.getJSONArray("data"); + // 默认认为只有一个平台证书 + JSONObject encryptObject = dataArray.getJSONObject(0); + JSONObject encryptCertificate = encryptObject.getJSONObject("encrypt_certificate"); + String associatedData = encryptCertificate.getStr("associated_data"); + String cipherText = encryptCertificate.getStr("ciphertext"); + String nonce = encryptCertificate.getStr("nonce"); + String serialNo = encryptObject.getStr("serial_no"); + final String platSerialNo = savePlatformCert(associatedData, nonce, cipherText, "/Users/amos/Downloads/项目文档/微信支付/微信支付密钥/平台证书序列号222.txt"); + LogUtil.info("serialNo:{}", serialNo); + LogUtil.info("platSerialNo:{}", platSerialNo); + } + + // 根据证书序列号查询对应的证书来验证签名结果 + boolean verifySignature = WxPayKit.verifySignature(response, "/Users/amos/Downloads/项目文档/微信支付/微信支付密钥/平台证书序列号222.txt"); + System.out.println("verifySignature:" + verifySignature); + return body; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + private String savePlatformCert(String associatedData, String nonce, String cipherText, String certPath) { + try { + AesUtil aesUtil = new AesUtil("Shenduzhilian168188Shenduzhilian".getBytes(StandardCharsets.UTF_8)); + // 平台证书密文解密 + // encrypt_certificate 中的 associated_data nonce ciphertext + String publicKey = aesUtil.decryptToString( + associatedData.getBytes(StandardCharsets.UTF_8), + nonce.getBytes(StandardCharsets.UTF_8), + cipherText + ); + // 保存证书 + FileWriter writer = new FileWriter(certPath); + writer.write(publicKey); + // 获取平台证书序列号 + X509Certificate certificate = PayKit.getCertificate(new ByteArrayInputStream(publicKey.getBytes())); + return certificate.getSerialNumber().toString(16).toUpperCase(); + } catch (Exception e) { + e.printStackTrace(); + return e.getMessage(); + } + } + + @PostMapping(value = "/prepay", headers = "Referer=https://dev-travel-h5.deepinnet.com") + public TpResult prepay(@RequestBody TpPreparePayDTO prepayDTO) { + TpPayOrderCreateDTO createDTO = prepayDTO.getCreateDTO(); + createDTO.setPaymentAmount(new TpMoney("136.00", TpMoney.ValueUnitEnum.YUAN)); + createDTO.setDiscountAmount(new TpMoney("0.00", TpMoney.ValueUnitEnum.YUAN)); + return paymentFacade.preparePay(prepayDTO); + } + + @PostMapping("/refund") + public String refund(@RequestBody TpPayRefundDTO refundDTO) { + refundDTO.setRefundAmount(new TpMoney("136", TpMoney.ValueUnitEnum.YUAN)); + refundDTO.setChargeAmount(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)); + paymentFacade.refund(refundDTO); + return "success"; + } + + @PostMapping("/get/refund") + public void queryRefundResult(@RequestBody TpQueryRefundResultDTO refundResultDTO) { + TpResult result = paymentFacade.queryRefundResult(refundResultDTO); + LogUtil.info("查询退款结果:{}", result); + } + + @PostMapping("/get/pay/result") + public void queryPayResult(@RequestBody TpQueryPayResultDTO payResultDTO) { + TpResult resultVO = paymentFacade.queryPayResult(payResultDTO); + LogUtil.info("查询支付结果:{}", resultVO); + } + + @PostMapping("/close") + public void closePayOrder(@RequestBody TpPayOrderCloseDTO dto) { + TpResult result = paymentFacade.closePayOrder(dto); + } + + + @ApiOperation("根据微信平台证书序列号获取微信支付配置") + @PostMapping("/pay/platSerialNo") + public TpResult getWechatConfigByPlatSerialNo(String platSerialNo) { + OrgWxPayDTO wxPayConfig = orgClient.getWxPayByPlatSerialNo(platSerialNo); + return TpResult.success(wxPayConfig); + } + + @ApiOperation("线下支付,标记支付成功") + @PostMapping("/pay/offline") + public TpResult paidOffline(@RequestBody TpPaidOfflineDTO paidOfflineDTO) { + return paymentFacade.paidOffline(paidOfflineDTO); + } + + @PostMapping("/pay/reschedule") + public TpResult reschedulePaidSuccess(@RequestBody TpReschedulePaidSuccessDTO reschedulePaidSuccessDTO) { + return paymentFacade.reschedulePaidSuccess(reschedulePaidSuccessDTO); + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/VoucherTestController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/VoucherTestController.java new file mode 100644 index 0000000..01c20cf --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/VoucherTestController.java @@ -0,0 +1,223 @@ +package com.deepinnet.tptradecore.controller.test; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.dto.rule.*; +import com.deepinnet.tpproductcore.common.enums.TpRuleExpressionGroupEnum; +import com.deepinnet.tptradecore.common.dal.convert.task.TpScheduleTaskMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dataobject.task.TpScheduleTaskDO; +import com.deepinnet.tptradecore.common.dal.repository.task.TpScheduleTaskRepository; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherVerificationRecordRepository; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.common.enums.voucher.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.facade.voucher.TpVoucherFacade; +import com.deepinnet.tptradecore.common.service.integration.client.TpBizRuleClient; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.common.vo.voucher.*; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucher; +import com.deepinnet.tptradecore.core.service.task.worker.VoucherExpiredWorker; +import com.deepinnet.tptradecore.core.service.voucher.TpVoucherDomainService; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; + +/** + * @author amos wong + * @create 2023/8/7 17:23 + * @Description + */ +@RestController +@CrossOrigin +public class VoucherTestController { + + @Resource + private TpVoucherFacade voucherFacade; + + @Resource + private TpVoucherDomainService voucherDomainService; + + @Resource + private MessageClient messageClient; + + @Resource + private TpBizRuleClient bizRuleClient; + + @Resource + private VoucherExpiredWorker voucherExpiredWorker; + + @Resource + private TpScheduleTaskMapStructConvert taskMapStructConvert; + + @Resource + private TpScheduleTaskRepository scheduleTaskRepository; + + @Resource + private TpVoucherVerificationRecordRepository verificationRecordRepository; + + @PostMapping("/voucher/create") + public TpResult createVoucher(@RequestBody @Validated TpVoucherCreateDTO createDTO) { + return voucherFacade.createVoucher(createDTO); + } + + @PostMapping("/voucher/list") + public TpResult> listVoucher(@RequestBody @Validated TpVoucherQueryDTO queryDTO) { + return voucherFacade.getOrderDetailVoucherList(queryDTO); + } + + @PostMapping("/voucher/check") + public TpResult checkVoucher(@RequestBody @Validated TpVoucherCheckDTO checkDTO) { + return voucherFacade.check(checkDTO); + } + + @PostMapping("/voucher/village/check") + public TpResult villageCheck(@RequestBody @Validated TpVoucherCheckSuccessDTO checkDTO) { + return voucherFacade.villageBatchCheckSuccess(checkDTO); + } + + @PostMapping("/voucher/invalid") + public TpResult invalidVoucher(@RequestBody @Validated List updateDTOS) { + return voucherFacade.invalidVoucher(updateDTOS); + } + + @PostMapping("/voucher/count") + public TpResult queryBuyLimitNeedVoucherCount(@RequestBody TpBuyLimitQueryVoucherDTO queryDTO) { + return voucherFacade.queryBuyLimitNeedVoucherCount(queryDTO); + } + + @PostMapping("/voucher/expire/msg") + public void testExpireMsg(String voucherNo, String tenantId) { + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + TpVoucher voucher = voucherDomainService.getVoucher(queryDTO.setVoucherNo(voucherNo).setTenantId(tenantId)); + String orderNo = voucher.getOrderNo(); + + TpVoucherQueryDTO queryVoucherDTO = new TpVoucherQueryDTO(); + List voucherList = voucherDomainService.getVoucherList(queryVoucherDTO.setOrderNo(orderNo).setTenantId(tenantId)); + TpVoucher curVoucher = voucherList.get(0); + if (StringUtils.equals(curVoucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + BaseMessageEntity expireMessageEntity = buildVoucherExpireMsg(voucherNo, orderNo, tenantId); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_VOUCHER_EXPIRED_SUCCESS, expireMessageEntity); + } else { + // 如果是月票 + voucherList.sort(Comparator.comparing(TpVoucher::getEffectiveEndTime)); + TpVoucher tpVoucher = voucherList.get(voucherList.size() - 1); + if (StringUtils.equals(tpVoucher.getVoucherNo(), curVoucher.getVoucherNo())) { + BaseMessageEntity expireMessageEntity = buildVoucherExpireMsg(voucherNo, orderNo, tenantId); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_VOUCHER_EXPIRED_SUCCESS, expireMessageEntity); + } + } + + voucherDomainService.expireVoucher(voucherNo, tenantId); + } + + private BaseMessageEntity buildVoucherExpireMsg(String voucherNo, String orderNo, String tenantId) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_VOUCHER); + baseMessageEntity.setKey(voucherNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + VoucherExpireMessageEntity expireMessageEntity = new VoucherExpireMessageEntity(); + List voucherList = getVoucherList(orderNo, tenantId); + + boolean existValid = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.CREATED.getCode()) + || StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode())); + expireMessageEntity.setExistValid(existValid); + expireMessageEntity.setVoucherNo(voucherNo); + expireMessageEntity.setOrderNo(orderNo); + expireMessageEntity.setTenantId(tenantId); + baseMessageEntity.setBody(JSONUtil.toJsonStr(expireMessageEntity)); + + return baseMessageEntity; + } + + private List getVoucherList(String orderNo, String tenantId) { + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + List curVoucherList = voucherDomainService.getVoucherList(queryDTO.setOrderNo(orderNo).setTenantId(tenantId)); + if (CollectionUtils.isEmpty(curVoucherList)) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_VOUCHER); + } + return curVoucherList; + } + + @PostMapping("/voucher/check/time") + public void testCheckTimeRule() { + TpRuleExecuteDTO ruleExecuteDTO = new TpRuleExecuteDTO<>(); + TpTicketCheckParamDTO checkParamDTO = new TpTicketCheckParamDTO(); + checkParamDTO.setDepartureTime(System.currentTimeMillis() - 1000); + ruleExecuteDTO.setRuleList(Lists.newArrayList("long now = new Date().getTime();\n" + + " if (now > departureTime) {\n" + + " return false;\n" + + " }\n" + + " long checkRangeStart = departureTime - 90000000;\n" + + " if (now >= checkRangeStart && now <= endTime) {\n" + + " return true;\n" + + " }\n" + + " return false;")); + ruleExecuteDTO.setParameter(checkParamDTO); + ruleExecuteDTO.setRuleExpressionGroup(TpRuleExpressionGroupEnum.TICKET_CHECK); + TpRuleExecuteResultVO result = bizRuleClient.executeRule(ruleExecuteDTO); + System.out.println(result.getResult()); + } + + @PostMapping("/voucher/check/count") + public void testCheckCountRule() { + TpRuleExecuteDTO ruleExecuteDTO = new TpRuleExecuteDTO<>(); + TpRollShuttleTripsParamDTO checkParamDTO = new TpRollShuttleTripsParamDTO(); + ruleExecuteDTO.setRuleList(Lists.newArrayList(" return 1 * passengerCount;")); + ruleExecuteDTO.setParameter(checkParamDTO); + checkParamDTO.setPassengerCount(1); + ruleExecuteDTO.setRuleExpressionGroup(TpRuleExpressionGroupEnum.ROLL_SHUTTLE_TRIPS); + TpRuleExecuteResultVO result = bizRuleClient.executeRule(ruleExecuteDTO); + System.out.println(result.getResult()); + } + + @PostMapping("/voucher/range/verification") + public TpResult getTimeRangeVoucherVerification(@RequestBody TpTimeRangeExistVerificationRecordDateQueryDTO queryDTO) { + return voucherFacade.getTimeRangeExistVerificationRecordDate(queryDTO); + } + + @PostMapping("/voucher/verification") + public TpResult getVoucherVerificationDetail(@RequestBody TpTimeRangeUserVerificationRecordDetailQueryDTO queryDTO) { + return voucherFacade.getTimeRangeUserVerificationRecordDetail(queryDTO); + } + + @PostMapping("/voucher/verification/record") + public TpResult> getVoucherVerificationRecordList(@RequestBody TpVoucherVerificationRecordQueryDTO queryDTO) { + return voucherFacade.getVoucherVerificationRecordList(queryDTO); + } + + @PostMapping("/schedule/voucher/expire") + public void voucherExpireTask(Long taskId) { + TpScheduleTaskDO taskDO = scheduleTaskRepository.getById(taskId); + if (taskDO == null) { + LogUtil.error("定时任务id对应的定时任务不存在,任务id为:{}", taskId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ILLEGAL_PARAMS); + } + + TpScheduleTask scheduleTask = taskMapStructConvert.convert2Domain(taskDO); + voucherExpiredWorker.doCommit(scheduleTask); + } + + @PostMapping("/mng/voucher/verification") + public TpResult> queryMngVoucherVerificationRecords(@RequestBody TpMngVerificationRecordQueryDTO queryDTO) { + return voucherFacade.queryMngVerificationRecords(queryDTO); + } + + @PostMapping("/voucher/reschedule/invalid") + public TpResult rescheduleInvalidVouchers(@RequestBody TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO) { + return voucherFacade.rescheduleInvalidVouchers(rescheduleInvalidVoucherDTO); + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/WechatTestController.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/controller/test/WechatTestController.java new file mode 100644 index 0000000..e69de29 diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/AlipayCallbackService.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/AlipayCallbackService.java new file mode 100644 index 0000000..2bd29b5 --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/AlipayCallbackService.java @@ -0,0 +1,381 @@ +package com.deepinnet.tptradecore.service.impl; + +import cn.hutool.core.date.*; +import cn.hutool.core.net.URLDecoder; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.json.JSONUtil; +import com.alipay.api.internal.util.AlipaySignature; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.util.*; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.trans.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.config.TpAlipayMiniProgramConfig; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.initializer.*; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import com.deepinnet.tptradecore.core.service.trans.TpPayOrderDomainService; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import javax.servlet.http.*; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.*; + +/** + * @author amos wong + * @create 2022-11-17 10:29 + * 处理支付宝回调的服务 + */ +@Service("alipayCallbackService") +public class AlipayCallbackService { + + @Resource + private TpPayOrderDomainService payOrderDomainService; + + @Resource + private TpPayConfigInitializer payConfigInitializer; + + @Resource + private MessageClient messageClient; + + public void processPayResultCallback(HttpServletRequest request) { + try { + // 取出参数 + Map paramMap = buildParamMap(request); + + // 为了避免死锁,这里只能先取出响应体里的orgCode,然后再验签 + Map passBackParamMap = generatePassBackParamMap(request); + String orgCode = passBackParamMap.get(PayPlatformConstants.ORG_CODE); + Assert.hasText("支付回调接口,回传参数:组织code不能为空", orgCode); + String tenantId = passBackParamMap.get(PayPlatformConstants.TENANT_ID); + Assert.hasText("支付回调接口,回传参数:租户id不能为空", tenantId); + String payScene = passBackParamMap.get(PayPlatformConstants.PAY_SCENE); + Assert.hasText("支付回调接口,回传参数:支付场景不能为空", payScene); + String bizType = passBackParamMap.get(PayPlatformConstants.BIZ_TYPE); + Assert.hasText("支付回调接口,回传参数:业务类型不能为空", bizType); + + String publicKey; + if (StringUtils.equals(payScene, TpPaySceneEnum.ALI_MINI_PROGRAM.getCode())) { + String appId = passBackParamMap.get(PayPlatformConstants.APP_ID); + Assert.hasText("支付回调接口,回传参数:appId不能为空", appId); + TpAlipayMiniProgramConfig alipayConfig = payConfigInitializer.getAlipayMiniProgramPayConfig(null, appId); + Assert.notNull(alipayConfig, "支付回调接口,appId对应的支付宝配置不存在"); + publicKey = alipayConfig.getPublicKey(); + } else { + publicKey = payConfigInitializer.getPayConfig(orgCode, bizType, tenantId).getAlipayConfig().getPublicKey(); + } + + // 验签 + boolean flag = AlipaySignature.rsaCheckV1(paramMap, publicKey, PayPlatformConstants.DEFAULT_CHARSET, PayPlatformConstants.DEFAULT_SIGN_TYPE); + if (!flag) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.SIGN_VERIFIED_ERROR); + } + + // 判断是否是退款成功的回调通知 + boolean isRefundCallback = false; + String refundTimeParam = request.getParameter(PayPlatformConstants.ALIPAY_NOTIFY_REFUND_TIME); + if (StringUtils.isNotBlank(refundTimeParam)) { + String refundTime = new String(refundTimeParam.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + if (StringUtils.isNotEmpty(refundTime)) { + isRefundCallback = true; + } + } + + // 获取支付单:正向支付单或者退款支付单 + List payOrders = getPayOrders(request, isRefundCallback); + + // 针对退款或者支付进行不同的业务处理 + if (!isRefundCallback) { + processPaySuccessCallback(request, payOrders); + } else { + processAlipayRefundSuccessCallback(request, payOrders); + } + } catch (Exception e) { + if (e instanceof TpTradeCoreException) { + TpTradeCoreException tradeCoreException = (TpTradeCoreException) e; + if (tradeCoreException.getErrorCode() == TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR) { + LogUtil.warn("接收支付宝支付结果的回调接口,该支付单状态已经更新进行幂等处理"); + } else { + LogUtil.error("支付宝回调处理失败,异常原因:{}", tradeCoreException); + } + + throw tradeCoreException; + } + + LogUtil.error("接收支付宝支付结果的回调接口,异步验签失败,失败原因:{}", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PROCESS_PLATFORM_CALLBACK_ERROR); + } + } + + private List getPayOrders(HttpServletRequest request, boolean isRefundCallback) { + String outTradeNo = new String(request.getParameter(PayPlatformConstants.OUT_TRADE_NO).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String totalAmount = new String(request.getParameter(PayPlatformConstants.TOTAL_AMOUNT).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String passBackAppId = new String(request.getParameter(PayPlatformConstants.APP_ID).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String payTime = new String(request.getParameter(PayPlatformConstants.ALIPAY_NOTIFY_PAY_TIME).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String outBizNo = null; + if (isRefundCallback) { + // 退款流水号 + outBizNo = new String(request.getParameter(PayPlatformConstants.OUT_BIZ_NO).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + } + String encodePassBackParams = new String(request.getParameter(PayPlatformConstants.PASS_BACK_PARAMS).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + + Assert.hasText(outTradeNo, "外部交易单号不能为空"); + Assert.hasText(totalAmount, "支付总金额不能为空"); + Assert.hasText(payTime, "支付时间不能为空"); + Assert.hasText(encodePassBackParams, "支付回传参数为空"); + + Map passBackParamMap = generatePassBackParamMap(request); + String tenantId = passBackParamMap.get(PayPlatformConstants.TENANT_ID); + String orgCode = passBackParamMap.get(PayPlatformConstants.ORG_CODE); + String payScene = passBackParamMap.get(PayPlatformConstants.PAY_SCENE); + String bizType = passBackParamMap.get(PayPlatformConstants.BIZ_TYPE); + Assert.hasText("支付回调接口,回传参数:租户id不能为空", tenantId); + Assert.hasText("支付回调接口,回传参数:组织code不能为空", bizType); + Assert.hasText("支付回调接口,回传参数:payScene不能为空", payScene); + + // 校验appId是否正确 + if (StringUtils.equals(payScene, TpPaySceneEnum.ALI_MINI_PROGRAM.getCode())) { + Assert.hasText("支付回调接口,回传参数:appId不能为空", passBackAppId); + String configAppId = payConfigInitializer.getAlipayMiniProgramPayConfig(null, passBackAppId).getAppId(); + if (!StringUtils.equals(passBackAppId, configAppId)) { + LogUtil.error("处理支付平台回调失败,支付宝返回的appId错误,订单号:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PROCESS_PLATFORM_CALLBACK_ERROR); + } + } else { + if (!StringUtils.equals(passBackAppId, payConfigInitializer.getPayConfig(orgCode, bizType, tenantId).getAlipayConfig().getAppId())) { + LogUtil.error("处理支付平台回调失败,支付宝返回的appId错误,订单号:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PROCESS_PLATFORM_CALLBACK_ERROR); + } + } + + // 查询所有支付类型中在途的和已经支付成功的支付单 + // 针对支付平台返回的outTradeNo需要处理 + List payOrders; + if (!isRefundCallback) { + String[] splitOutTradeNo = outTradeNo.split(GlobalConstants.HORIZONTAL_LINE); + payOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .bizNo(splitOutTradeNo[0]) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAYING.getCode(), TpPayOrderStatusEnum.PAID.getCode())) + .tenantId(tenantId) + .build()); + } else { + payOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .bizNo(outBizNo) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.REFUNDING.getCode(), TpPayOrderStatusEnum.REFUND.getCode())) + .tenantId(tenantId) + .build()); + } + + // 校验支付单是否存在 + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("处理支付平台回调失败,支付单不存在,支付宝返回的订单号:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PAY_ORDER_NOT_FOUND); + } + + return payOrders; + } + + private void processPaySuccessCallback(HttpServletRequest request, List payOrders) { + // 取出响应的参数并校验 + TpPayOrder payOrder = checkCallbackResponse(request, payOrders); + + // 判断支付结果 + String tradeStatus = new String(request.getParameter(PayPlatformConstants.TRADE_STATUS).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String payTime = new String(request.getParameter(PayPlatformConstants.ALIPAY_NOTIFY_PAY_TIME).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + + // 更新支付单、账单信息 + if (StringUtils.equals(tradeStatus, PayPlatformConstants.ALIPAY_TRADE_SUCCESS) || StringUtils.equals(tradeStatus, PayPlatformConstants.ALIPAY_TRADE_FINISHED)) { + updatePayOrderSuccess(request, payOrder, DateUtil.parse(payTime).getTime()); + } + + // 发送支付成功消息 + BaseMessageEntity messageEntity = buildPaySuccessMessage(payOrder.getOrderNo(), payOrder.getPayOrderNo(), payOrder.getBizType(), DateUtil.parse(payTime).getTime(), payOrder.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_PAY_SUCCESS, messageEntity); + LogUtil.info("发送支付宝支付成功的消息成功,支付单号为:{}", payOrder.getPayOrderNo()); + } + + private void processAlipayRefundSuccessCallback(HttpServletRequest request, List payOrders) { + String outBizNo = new String(request.getParameter(PayPlatformConstants.OUT_BIZ_NO).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String refundFee = new String(request.getParameter(PayPlatformConstants.REFUND_FEE).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String refundTimeParam = request.getParameter(PayPlatformConstants.ALIPAY_NOTIFY_REFUND_TIME); + Assert.hasText(outBizNo, "退款业务单号不能为空"); + Assert.hasText(refundFee, "退款金额不能为空"); + Assert.hasText(refundTimeParam, "退款时间参数不能为空"); + String refundTime = new String(refundTimeParam.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + Assert.hasText(refundTime, "退款时间不能为空"); + + if (payOrders.size() > 1) { + LogUtil.error("同一个业务单号发现多笔退款中的支付单,退款业务单号为:{}", outBizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.FOUND_DUPLICATE_REFUNDING_PAY_ORDER); + } + + TpPayOrder refundPayOrder = payOrders.get(0); + if (StringUtils.equals(refundPayOrder.getStatus(), TpPayOrderStatusEnum.REFUND.getCode())) { + LogUtil.info("支付单已经修改为已退款,幂等处理,支付单号为:{}", refundPayOrder.getPayOrderNo()); + return; + } + + TpMoney refundAmount = refundPayOrder.getPayAmount(); + TpMoney alipayRefundFee = new TpMoney(refundFee, TpMoney.ValueUnitEnum.YUAN); + if (refundAmount.compare(alipayRefundFee) != TpMoney.CompareResult.EQUAL) { + LogUtil.error("支付宝退款金额错误,与退款支付单的金额不匹配,支付宝退款金额为:{},支付单金额为:{},退款业务单号:{}", refundFee, refundAmount.getCent(), outBizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ERROR_REFUND_AMOUNT); + } + + // 这里更新业务单号以及发送退款成功的消息 + // 退款支付单改为退款成功 + long refundTimestamp = DateUtil.parse(refundTime).getTime(); + payOrderDomainService.refundSuccess(TpRefundSuccessDTO.builder() + .refundPayOrderNo(refundPayOrder.getPayOrderNo()) + .refundTime(refundTimestamp) + .tenantId(refundPayOrder.getTenantId()) + .build()); + + // 发送退款成功消息推进流程 + BaseMessageEntity messageEntity = buildRefundSuccessMessage(refundPayOrder.getOrderNo(), refundPayOrder.getPayOrderNo(), + refundPayOrder.getBizNo(), refundPayOrder.getBizType(), refundPayOrder.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_REFUND_SUCCESS, messageEntity); + LogUtil.info("发送支付宝退款成功的消息,退款支付单号为:{}", refundPayOrder.getPayOrderNo()); + + LogUtil.info("支付宝退款成功回调处理成功..."); + } + + private BaseMessageEntity buildPaySuccessMessage(String orderNo, String payOrderNo, String bizType, Long payTime, String tenantId) { + BaseMessageEntity messageEntity = new BaseMessageEntity(); + messageEntity.setKey(payOrderNo); + messageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + messageEntity.setSendTime(LocalDateTime.now()); + + PaySuccessMessageEntity payOrderSuccessEntity = new PaySuccessMessageEntity(); + payOrderSuccessEntity.setPayOrderNo(payOrderNo); + payOrderSuccessEntity.setBizType(bizType); + payOrderSuccessEntity.setOrderNo(orderNo); + payOrderSuccessEntity.setPayTime(payTime); + payOrderSuccessEntity.setTenantId(tenantId); + String body = JSONUtil.toJsonStr(payOrderSuccessEntity); + messageEntity.setBody(body); + return messageEntity; + } + + private Map buildParamMap(HttpServletRequest request) { + Map parameterMap = request.getParameterMap(); + Map params = new HashMap<>(); + + for (String name : parameterMap.keySet()) { + String[] values = parameterMap.get(name); + String valueStr = ""; + for (int i = 0; i < values.length; i++) { + valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; + } + params.put(name, valueStr); + } + + return params; + } + + private TpPayOrder checkCallbackResponse(HttpServletRequest request, List payOrders) { + // 这里对应系统中的订单号即bizNo字段 + String outTradeNo = new String(request.getParameter(PayPlatformConstants.OUT_TRADE_NO).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + String totalAmount = new String(request.getParameter(PayPlatformConstants.TOTAL_AMOUNT).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + + // 微信、支付宝重复支付的校验 + checkWechatDuplicatePaidOrder(payOrders, outTradeNo); + + // 校验支付宝的支付单是否有支付完成的支付单 + boolean aliPayExistsPaidOrder = payOrders + .stream() + .anyMatch(payOrder -> StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode()) + && StringUtils.equals(payOrder.getPayType(), TpPayTypeEnum.ALIPAY.getCode())); + + if (aliPayExistsPaidOrder) { + LogUtil.error("幂等处理,当前订单状态已经为已支付,订单号:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + // 如果发现了两笔支付中的支付单直接报错 + if (payOrders.size() > 1) { + LogUtil.error("业务数据异常,发现多笔支付单,投保单号:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_UNPAID_PAY_ORDER); + } + + // 校验支付金额是否正确 + TpPayOrder payOrder = payOrders.get(0); + TpMoney money = new TpMoney(totalAmount, TpMoney.ValueUnitEnum.YUAN); + if (payOrder.getPayAmount().compare(money) != TpMoney.CompareResult.EQUAL) { + LogUtil.error("处理支付平台回调失败,用户支付金额错误,订单号:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PROCESS_PLATFORM_CALLBACK_ERROR); + } + + return payOrder; + } + + private Map generatePassBackParamMap(HttpServletRequest request) { + String encodePassBackParams = new String(request.getParameter(PayPlatformConstants.PASS_BACK_PARAMS).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + Assert.hasText(encodePassBackParams, "支付回传参数为空"); + + Map paramMap = new HashMap<>(); + String decodePassBackParams = URLDecoder.decode(encodePassBackParams, CharsetUtil.CHARSET_UTF_8); + String[] splitParam = decodePassBackParams.split(GlobalConstants.AND); + for (String sp : splitParam) { + String[] param = sp.split(GlobalConstants.EQUAL_SIGN); + paramMap.put(param[0], param[1]); + } + + return paramMap; + } + + private void updatePayOrderSuccess(HttpServletRequest request, TpPayOrder payOrder, Long payTime) { + String outPayFlowId = new String(request.getParameter(PayPlatformConstants.TRADE_NO).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + payOrderDomainService.paySuccess(TpPaySuccessDTO.builder() + .payOrderNo(payOrder.getPayOrderNo()) + .outPayFlowId(outPayFlowId) + .payTime(payTime) + .tenantId(payOrder.getTenantId()) + .build()); + + payOrder.setStatus(TpPayOrderStatusEnum.PAID.getCode()); + payOrder.setOutPayFlowId(outPayFlowId); + payOrder.setPayTime(payTime); + } + + private boolean checkWechatDuplicatePaidOrder(List payOrders, String bizNo) { + boolean hasWechatPaidOrder = payOrders + .stream() + .anyMatch(payOrder -> Objects.equals(payOrder.getPayType(), TpPayTypeEnum.WECHAT_PAY.getCode()) + && StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())); + + if (hasWechatPaidOrder) { + LogUtil.error("支付宝支付成功回调接口,处理失败,发现有已经支付的微信订单,请及时处理,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.FOUND_DUPLICATED_PAID); + } + + return false; + } + + private BaseMessageEntity buildRefundSuccessMessage(String orderNo, String refundPayOrderNo, String refundBizNo, String bizType, String tenantId) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + baseMessageEntity.setKey(refundBizNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + RefundSuccessMessageEntity messageEntity = new RefundSuccessMessageEntity(); + messageEntity.setRefundPayOrderNo(refundPayOrderNo); + messageEntity.setOrderNo(orderNo); + messageEntity.setRefundBizNo(refundBizNo); + messageEntity.setBizType(bizType); + messageEntity.setTenantId(tenantId); + + baseMessageEntity.setBody(JSONUtil.toJsonStr(messageEntity)); + return baseMessageEntity; + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatPayCallbackService.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatPayCallbackService.java new file mode 100644 index 0000000..c7af62c --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatPayCallbackService.java @@ -0,0 +1,261 @@ +package com.deepinnet.tptradecore.service.impl; + +import cn.hutool.core.date.*; +import cn.hutool.core.net.URLDecoder; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.json.*; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.pay.OrgWxPayDTO; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.trans.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpOrgClient; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import com.deepinnet.tptradecore.core.service.trans.TpPayOrderDomainService; +import com.google.common.collect.Lists; +import com.ijpay.core.kit.*; +import com.ijpay.core.utils.DateTimeZoneUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2022-11-17 10:29 + *

+ * 处理微信回调的服务 + */ +@Service("wechatPayCallbackService") +public class WechatPayCallbackService { + + @Resource + private TpPayOrderDomainService payOrderDomainService; + + @Resource + private MessageClient messageClient; + + @Resource + private TpOrgClient orgClient; + + public void processPayResultCallback(HttpServletRequest request) { + Map paramsMap = new HashMap<>(); + + try { + // 验签 & 解密得到解密后的数据 + String plainText = verifySignatureAndDecrypt(request); + + // 将数据转换为map + convertWechatPayMsgToMap(plainText, paramsMap); + + // 幂等校验 + String tenantId = paramsMap.get(PayPlatformConstants.TENANT_ID); + String outTradeNo = paramsMap.get(PayPlatformConstants.OUT_TRADE_NO); + // 获取业务系统内部的bizNo + String[] splitOutTradeNo = outTradeNo.split(GlobalConstants.HORIZONTAL_LINE); + String bizNo = splitOutTradeNo[0]; + TpPayOrder payOrder = checkIdempotent(bizNo, tenantId); + + // 处理业务逻辑 + String tradeState = paramsMap.get(PayPlatformConstants.TRADE_STATE); + String transactionId = paramsMap.get(PayPlatformConstants.TRANSACTION_ID); + String successTime = paramsMap.get(PayPlatformConstants.WECHAT_SUCCESS_TIME); + + if (StringUtils.equals(tradeState, PayPlatformConstants.WECHAT_PAY_SUCCESS)) { + // 微信的时间格式需要转换 + String wechatPaySuccessTime = DateTimeZoneUtil.timeZoneDateToStr(successTime); + DateTime dateTime = DateUtil.parse(wechatPaySuccessTime); + // 更新支付单、账单信息 + payOrderDomainService.paySuccess(TpPaySuccessDTO.builder() + .payOrderNo(payOrder.getPayOrderNo()) + .outPayFlowId(transactionId) + .payTime(dateTime.getTime()) + .tenantId(tenantId) + .build()); + } + + // 发送支付成功消息 + BaseMessageEntity messageEntity = buildPaySuccessMessage(payOrder.getOrderNo(), payOrder.getPayOrderNo(), payOrder.getBizType(), DateUtil.parse(successTime).getTime(), payOrder.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_PAY_SUCCESS, messageEntity); + LogUtil.info("微信支付成功回调,发送支付成功消息成功,支付单号为:{}", payOrder.getPayOrderNo()); + } catch (TpTradeCoreException e) { + throw e; + } catch (Exception e) { + LogUtil.error("微信支付成功回调异常,订单号为:{},异常信息为:{}", paramsMap.get(PayPlatformConstants.OUT_TRADE_NO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PROCESS_PLATFORM_CALLBACK_ERROR); + } + } + + private String verifySignatureAndDecrypt(HttpServletRequest request) { + // 平台证书序列号,每个商户是唯一的 + String platSerialNo = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_SERIAL); + Assert.hasText(platSerialNo, "微信支付回调接口,平台证书序列号为空"); + + OrgWxPayDTO wxPayDTO = orgClient.getWxPayByPlatSerialNo(platSerialNo); + Assert.notNull(wxPayDTO, "根据平台序列号查询到的微信支付配置不能为空"); + + // 取出加密数据内容 + String encryptData = HttpKit.readData(request); + LogUtil.info("接收到微信回调请求,加密数据为:{}", encryptData); + + // 验签 & 解密 + return verifySignatureAndDecrypt(request, encryptData, wxPayDTO); + } + + private BaseMessageEntity buildPaySuccessMessage(String orderNo, String payOrderNo, String bizType, Long payTime, String tenantId) { + BaseMessageEntity messageEntity = new BaseMessageEntity(); + messageEntity.setKey(payOrderNo); + messageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + messageEntity.setSendTime(LocalDateTime.now()); + + PaySuccessMessageEntity payOrderSuccessEntity = new PaySuccessMessageEntity(); + payOrderSuccessEntity.setPayOrderNo(payOrderNo); + payOrderSuccessEntity.setOrderNo(orderNo); + payOrderSuccessEntity.setBizType(bizType); + payOrderSuccessEntity.setPayTime(payTime); + payOrderSuccessEntity.setTenantId(tenantId); + String body = JSONUtil.toJsonStr(payOrderSuccessEntity); + messageEntity.setBody(body); + return messageEntity; + } + + /** + * 验签&将密文进行解密 + * + * @param request + * @return + */ + private String verifySignatureAndDecrypt(HttpServletRequest request, String encryptData, OrgWxPayDTO orgWxPayDTO) { + String signature = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_SIGNATURE); + String nonce = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_NONCE); + String timestamp = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_TIMESTAMP); + String platSerialNo = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_SERIAL); + + String plainText; + try { + InputStream certInputStream = new ByteArrayInputStream(orgWxPayDTO.getCertContent().getBytes()); + plainText = WxPayKit.verifyNotify(platSerialNo, encryptData, signature, nonce, timestamp, + orgWxPayDTO.getApiV3(), certInputStream); + } catch (Exception e) { + LogUtil.error("微信支付结果回调,验签失败,异常堆栈:{}", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.SIGN_VERIFIED_ERROR); + } + + LogUtil.info("微信支付结果回调接口,解密后的明文为:{}", plainText); + return plainText; + } + + /** + * 转换body为map + * + * @param plainBody 解密后的明文 + */ + private void convertWechatPayMsgToMap(String plainBody, Map paramsMap) { + JSONObject jsonObject = JSONUtil.parseObj(plainBody); + + String outTradeNo = jsonObject.getStr(PayPlatformConstants.OUT_TRADE_NO); + String tradeState = jsonObject.getStr(PayPlatformConstants.TRADE_STATE); + String transactionId = jsonObject.getStr(PayPlatformConstants.TRANSACTION_ID); + String successTime = jsonObject.getStr(PayPlatformConstants.WECHAT_SUCCESS_TIME); + String attach = jsonObject.getStr(PayPlatformConstants.ATTACH); + + Assert.hasText(outTradeNo, "商户订单号不能为空"); + Assert.hasText(tradeState, "交易状态不能为空"); + Assert.hasText(transactionId, "微信支付流水号不能为空"); + Assert.hasText(attach, "支付成功回传参数不能为空"); + + Map passBackParamMap = generatePassBackParamMap(attach); + + // 租户id + String tenantId = passBackParamMap.get(PayPlatformConstants.TENANT_ID); + Assert.hasText(tenantId, "支付成功回传参数中租户id不能为空"); + + paramsMap.put(PayPlatformConstants.TENANT_ID, tenantId); + // 商户订单号 + paramsMap.put(PayPlatformConstants.OUT_TRADE_NO, outTradeNo); + // 交易状态 + paramsMap.put(PayPlatformConstants.TRADE_STATE, tradeState); + // 微信支付流水号 + paramsMap.put(PayPlatformConstants.TRANSACTION_ID, transactionId); + // 支付成功时间 + paramsMap.put(PayPlatformConstants.WECHAT_SUCCESS_TIME, successTime); + } + + private TpPayOrder checkIdempotent(String bizNo, String tenantId) { + // 根据退款申请单号 + List payOrders = payOrderDomainService.queryPayOrderList( + TpPayOrderQueryDTO.builder() + .bizNo(bizNo) + .tenantId(tenantId) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAYING.getCode(), TpPayOrderStatusEnum.PAID.getCode())) + .build()); + + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("处理支付平台回调失败,支付单不存在,微信返回的订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PAY_ORDER_NOT_FOUND); + } + + // 校验是否已经有使用支付宝进行支付 + boolean existsAlipayPaidOrder = payOrders + .parallelStream() + .anyMatch(payOrder -> StringUtils.equals(payOrder.getPayType(), TpPayTypeEnum.ALIPAY.getCode()) + && StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())); + + if (existsAlipayPaidOrder) { + LogUtil.error("微信支付回调接口,发现该用户已经使用支付宝进行支付,请及时处理,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.FOUND_DUPLICATED_PAID); + } + + // 过滤出使用微信支付的订单 + List wechatPayOrders = payOrders + .stream() + .filter(payOrder -> StringUtils.equals(payOrder.getPayType(), TpPayTypeEnum.WECHAT_PAY.getCode())) + .collect(Collectors.toList()); + + // 微信支付的幂等校验 + boolean existsWechatPaidOrder = wechatPayOrders + .stream() + .anyMatch(wechatPayOrder -> StringUtils.equals(wechatPayOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())); + + if (existsWechatPaidOrder) { + LogUtil.error("微信支付回调接口,微信支付幂等处理,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + // 出现两笔待支付的支付单,业务数据异常 + if (payOrders.size() > 1) { + LogUtil.error("业务数据异常,发现多笔待支付的支付单,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_IN_PROCESS_PAY_ORDER); + } + + return payOrders.get(0); + } + + private Map generatePassBackParamMap(String attach) { + String encodePassBackParams = new String(attach.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + + Map paramMap = new HashMap<>(); + String decodePassBackParams = URLDecoder.decode(encodePassBackParams, CharsetUtil.CHARSET_UTF_8); + String[] splitParam = decodePassBackParams.split(GlobalConstants.AND); + for (String sp : splitParam) { + String[] param = sp.split(GlobalConstants.EQUAL_SIGN); + paramMap.put(param[0], param[1]); + } + + return paramMap; + } +} diff --git a/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatRefundCallbackService.java b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatRefundCallbackService.java new file mode 100644 index 0000000..b4cca65 --- /dev/null +++ b/tptradecore-api/src/main/java/com/deepinnet/tptradecore/service/impl/WechatRefundCallbackService.java @@ -0,0 +1,193 @@ +package com.deepinnet.tptradecore.service.impl; + +import cn.hutool.core.date.*; +import cn.hutool.json.*; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.pay.OrgWxPayDTO; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.trans.TpPayOrderStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpOrgClient; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import com.deepinnet.tptradecore.core.service.trans.TpPayOrderDomainService; +import com.google.common.collect.Lists; +import com.ijpay.core.kit.*; +import com.ijpay.core.utils.DateTimeZoneUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.time.LocalDateTime; +import java.util.*; + +/** + * @author amos wong + * @create 2022-11-17 10:29 + *

+ * 处理微信回调的服务 + */ +@Service("wechatRefundCallbackService") +public class WechatRefundCallbackService { + + @Resource + private TpPayOrderDomainService payOrderDomainService; + + @Resource + private TpOrgClient orgClient; + + @Resource + private MessageClient messageClient; + + public void processRefundSuccessCallback(HttpServletRequest request) { + Map paramsMap = new HashMap<>(); + + try { + // 验签 & 解密得到解密后的数据 + String plainText = verifySignatureAndDecrypt(request); + + // 将数据转换为map + convertWechatRefundMsgToMap(plainText, paramsMap); + + // 幂等校验 + String outRefundNo = paramsMap.get(PayPlatformConstants.OUT_REFUND_NO); + String outTradeNo = paramsMap.get(PayPlatformConstants.OUT_TRADE_NO); + TpPayOrder refundPayOrder = checkRefundIdempotent(outRefundNo); + + // 处理业务逻辑 + String tradeState = paramsMap.get(PayPlatformConstants.TRADE_STATE); + String successTime = paramsMap.get(PayPlatformConstants.WECHAT_SUCCESS_TIME); + + if (StringUtils.equals(tradeState, PayPlatformConstants.WECHAT_REFUND_SUCCESS)) { + // 微信的时间格式需要转换 + String wechatRefundSuccessTime = DateTimeZoneUtil.timeZoneDateToStr(successTime); + DateTime dateTime = DateUtil.parse(wechatRefundSuccessTime); + + // 更新支付单、账单信息 + payOrderDomainService.refundSuccess(TpRefundSuccessDTO.builder() + .refundPayOrderNo(refundPayOrder.getPayOrderNo()) + .refundTime(dateTime.getTime()) + .tenantId(refundPayOrder.getTenantId()) + .build()); + + // 发送退款成功消息推进流程 + BaseMessageEntity messageEntity = buildRefundSuccessMessage(refundPayOrder.getOrderNo(), outRefundNo, refundPayOrder.getBizType(), refundPayOrder.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_REFUND_SUCCESS, messageEntity); + LogUtil.info("微信支付退款成功回调,发送退款成功消息,消息内容为:{}", JSONUtil.toJsonStr(messageEntity)); + } + } catch (Exception e) { + LogUtil.error("微信支付退款成功回调处理失败,异常堆栈:{}", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PROCESS_PLATFORM_REFUND_CALLBACK_ERROR); + } + } + + private String verifySignatureAndDecrypt(HttpServletRequest request) { + // 平台证书序列号,每个商户是唯一的 + String platSerialNo = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_SERIAL); + Assert.hasText(platSerialNo, "微信支付回调接口,平台证书序列号为空"); + + OrgWxPayDTO wxPayDTO = orgClient.getWxPayByPlatSerialNo(platSerialNo); + Assert.notNull(wxPayDTO, "根据平台序列号查询到的微信支付配置不能为空"); + + // 取出加密数据内容 + String encryptData = HttpKit.readData(request); + LogUtil.info("接收到微信回调请求,加密数据为:{}", encryptData); + + // 验签 & 解密 + return verifySignatureAndDecrypt(request, encryptData, wxPayDTO); + } + + /** + * 验签&将密文进行解密 + * + * @param request + * @return + */ + private String verifySignatureAndDecrypt(HttpServletRequest request, String encryptData, OrgWxPayDTO orgWxPayDTO) { + String signature = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_SIGNATURE); + String nonce = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_NONCE); + String timestamp = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_TIMESTAMP); + String platSerialNo = request.getHeader(PayPlatformConstants.WECHAT_CALLBACK_SERIAL); + + String plainText; + try { + InputStream certInputStream = new ByteArrayInputStream(orgWxPayDTO.getCertContent().getBytes()); + plainText = WxPayKit.verifyNotify(platSerialNo, encryptData, signature, nonce, timestamp, + orgWxPayDTO.getApiV3(), certInputStream); + } catch (Exception e) { + LogUtil.error("微信支付结果回调,验签失败,异常堆栈:{}", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.SIGN_VERIFIED_ERROR); + } + + LogUtil.info("微信支付结果回调接口,解密后的明文为:{}", plainText); + return plainText; + } + + private void convertWechatRefundMsgToMap(String plainBody, Map paramsMap) { + JSONObject jsonObject = JSONUtil.parseObj(plainBody); + + String outTradeNo = jsonObject.getStr(PayPlatformConstants.OUT_TRADE_NO); + String refundStatus = jsonObject.getStr(PayPlatformConstants.REFUND_STATUS); + String outRefundNo = jsonObject.getStr(PayPlatformConstants.OUT_REFUND_NO); + String successTime = jsonObject.getStr(PayPlatformConstants.WECHAT_SUCCESS_TIME); + + Assert.hasText(outTradeNo, "商户订单号不能为空"); + Assert.hasText(refundStatus, "交易状态不能为空"); + Assert.hasText(outRefundNo, "微信外部退款号不能为空"); + Assert.hasText(successTime, "微信退款成功时间不能为空"); + + // 商户订单号 + paramsMap.put(PayPlatformConstants.OUT_TRADE_NO, outTradeNo); + // 交易状态 + paramsMap.put(PayPlatformConstants.TRADE_STATE, refundStatus); + // 微信外部退款单号:退票申请单号 + paramsMap.put(PayPlatformConstants.OUT_REFUND_NO, outRefundNo); + // 退款成功时间 + paramsMap.put(PayPlatformConstants.WECHAT_SUCCESS_TIME, successTime); + } + + private TpPayOrder checkRefundIdempotent(String bizNo) { + // 查询退款中和已退款的支付单 + List payOrders = payOrderDomainService.queryPayOrderList( + TpPayOrderQueryDTO.builder() + .bizNo(bizNo) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.REFUNDING.getCode(), TpPayOrderStatusEnum.REFUND.getCode())) + .build()); + + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("微信支付退款回调幂等处理失败,退票申请单号对应的支付单不存在,退票申请单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PAY_ORDER_NOT_FOUND); + } + + TpPayOrder payOrder = payOrders.get(0); + if (StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.REFUND.getCode())) { + LogUtil.error("微信支付退款回调幂等处理,当前退票申请单已经退款成功:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + return payOrder; + } + + private BaseMessageEntity buildRefundSuccessMessage(String orderNo, String refundApplyOrderNo, String bizType, String tenantId) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + baseMessageEntity.setKey(refundApplyOrderNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + RefundSuccessMessageEntity messageEntity = new RefundSuccessMessageEntity(); + messageEntity.setOrderNo(orderNo); + messageEntity.setRefundBizNo(refundApplyOrderNo); + messageEntity.setBizType(bizType); + messageEntity.setTenantId(tenantId); + baseMessageEntity.setBody(JSONUtil.toJsonStr(messageEntity)); + return baseMessageEntity; + } +} diff --git a/tptradecore-app-starter/pom.xml b/tptradecore-app-starter/pom.xml new file mode 100644 index 0000000..676ea5a --- /dev/null +++ b/tptradecore-app-starter/pom.xml @@ -0,0 +1,194 @@ + + + 4.0.0 + + com.deepinnet + tptradecore + 1.0-SNAPSHOT + + + tptradecore-app-starter + + + + org.springframework.boot + spring-boot-starter-web + + + + com.deepinnet + tptradecore-biz-service-impl + + + + com.deepinnet + tptradecore-api + + + + org.springframework.boot + spring-boot-starter-test + test + + + + mysql + mysql-connector-java + + + + com.alibaba + druid-spring-boot-starter + + + + com.github.jsonzou + jmockdata + 4.3.0 + compile + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + + com.baomidou + mybatis-plus-boot-starter + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + org.apache.dubbo + dubbo + + + + org.apache.dubbo + dubbo-registry-nacos + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + + + + com.ibeetl + beetl-framework-starter + 1.2.40.Beetl.RELEASE + test + + + + org.mockito + mockito-inline + test + + + + + tptradecore + + + org.springframework.boot + spring-boot-maven-plugin + 2.7.6 + + + com.deepinnet.tptradecore.ApplicationStarter + + + org.projectlombok + lombok + + + + + + + + repackage + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M5 + + ${argLine} -Djacoco.agent.destfile=target/jacoco.exec + true + + + + org.jacoco + jacoco-maven-plugin + 0.8.7 + + + report + + report + + + + jacoco-initialize + + prepare-agent + + + + verify + + report-aggregate + + + + + + + + + src/main/java + + **/*.xml + + true + + + src/main/resources + + **/*.xml + **/*.yml + **/*.json + + true + + + + + diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/ApplicationStarter.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/ApplicationStarter.java new file mode 100644 index 0000000..cca7c04 --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/ApplicationStarter.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore; + +import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.retry.annotation.EnableRetry; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@MapperScan({"com.deepinnet.tptradecore.common.dal.dao"}) +@EnableDubbo(scanBasePackages = "com.deepinnet") +@EnableScheduling +@EnableAspectJAutoProxy(proxyTargetClass = true) +@EnableRetry +public class ApplicationStarter { + + public static void main(String[] args) { + SpringApplication.run(ApplicationStarter.class, args); + } + +} diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/advise/GlobalControllerAdvise.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/advise/GlobalControllerAdvise.java new file mode 100644 index 0000000..a9a7bcf --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/advise/GlobalControllerAdvise.java @@ -0,0 +1,100 @@ +package com.deepinnet.tptradecore.advise; + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.rpc.RpcException; +import org.springframework.context.support.DefaultMessageSourceResolvable; +import org.springframework.validation.BindException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.*; + +import javax.validation.*; +import java.util.stream.Collectors; + +/** + * Description: 全局异常统一处理 + *

+ * Date: 2022/11/2 + * Author: lijunheng + */ +@Slf4j +@RestControllerAdvice +public class GlobalControllerAdvise { + + /** + * RPC异常处理 + */ + @ExceptionHandler(RpcException.class) + public TpResult RpcExceptionHandler(RpcException e) { + log.error("RPC服务异常", e); + return TpResult.fail(TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR.getCode(), TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR.getDesc()); + } + + /** + * 处理请求参数格式错误 @RequestBody上validate失败后抛出的异常是MethodArgumentNotValidException异常 + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + public TpResult methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) { + String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining(";")); + return TpResult.fail(TpTradeCoreErrorCode.ILLEGAL_PARAMS.getCode(), message); + } + + /** + * 处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常 + */ + @ExceptionHandler(BindException.class) + public TpResult bindExceptionHandler(BindException e) { + log.error("系统业务异常", e); + String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining(";")); + return TpResult.fail(TpTradeCoreErrorCode.ILLEGAL_PARAMS.getCode(), message); + } + + /** + * 处理请求参数格式错误 @RequestParam上validate失败后抛出的异常是ConstraintViolationException + */ + @ExceptionHandler(ConstraintViolationException.class) + public TpResult constraintViolationExceptionHandler(ConstraintViolationException e) { + log.error("系统业务异常", e); + String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(";")); + return TpResult.fail(TpTradeCoreErrorCode.ILLEGAL_PARAMS.getCode(), message); + } + + /** + * 系统具体异常提示 + * + * @param e + * @return + */ + @ExceptionHandler(TpTradeCoreException.class) + public TpResult tradecoreExceptionHandler(TpTradeCoreException e) { + log.error("系统业务异常", e); + return TpResult.fail(e.getErrorCode().getCode(), e.getMessage()); + } + + /** + * 系统具体异常提示 + * + * @param e + * @return + */ + @ExceptionHandler(TpException.class) + public TpResult tpExpection(TpException e) { + log.error("系统业务异常", e); + return TpResult.fail(e.getErrorCode(), e.getMessage()); + } + + /** + * 内部兜底异常处理 + * + * @param e + * @return + */ + @ExceptionHandler(Exception.class) + public TpResult exceptionHandler(Exception e) { + log.error("系统异常", e); + return TpResult.fail(TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR.getCode(), TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR.getDesc()); + } +} diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/Knife4jConfiguration.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/Knife4jConfiguration.java new file mode 100644 index 0000000..fb321e1 --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/Knife4jConfiguration.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.config; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.ReflectionUtils; +import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.lang.reflect.Field; +import java.util.List; +import java.util.stream.Collectors; + +/** +* Knife Configuration +* +* @author chenjiaju +* @version 2023/07/25 +*/ + +@Configuration +@EnableSwagger2 +public class Knife4jConfiguration { + + @Bean(value = "docketBean") + public Docket docketBean() { + //指定使用Swagger2规范 + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(new ApiInfoBuilder() + .title("tptradecore-接口文档") + //描述字段支持Markdown语法 + .description("# tptradecore-Rest API") + .termsOfServiceUrl("http://localhost:8080/") + .contact(new Contact("chenjiaju", "http://localhost:8080","ccc-ju@outlook.com")) + .version("1.0") + .build()) + //分组名称 + .groupName("tptradecore") + .select() + //这里指定Controller扫描包路径 + .apis(RequestHandlerSelectors.basePackage("com.deepinnet")) + .paths(PathSelectors.any()) + .build(); + } + + @Bean + public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return new BeanPostProcessor() { + + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + if (bean instanceof WebMvcRequestHandlerProvider) { + customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); + } + return bean; + } + + private void customizeSpringfoxHandlerMappings(List mappings) { + List copy = mappings.stream() + .filter(mapping -> mapping.getPatternParser() == null) + .collect(Collectors.toList()); + mappings.clear(); + mappings.addAll(copy); + } + + @SuppressWarnings("unchecked") + private List getHandlerMappings(Object bean) { + try { + Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); + field.setAccessible(true); + return (List) field.get(bean); + } catch (IllegalArgumentException | IllegalAccessException e) { + throw new IllegalStateException(e); + } + } + }; + } + + +} diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryConfig.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryConfig.java new file mode 100644 index 0000000..32c5002 --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryConfig.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.config; + +import org.springframework.context.annotation.*; +import org.springframework.retry.annotation.EnableRetry; +import org.springframework.retry.backoff.*; +import org.springframework.retry.policy.SimpleRetryPolicy; +import org.springframework.retry.support.RetryTemplate; + +import javax.annotation.Resource; + +/** + * @author amos wong + * @create 2023/12/19 16:40 + * @Description + */ +@Configuration +@EnableRetry +public class RetryConfig { + + @Resource + private RetryListener retryListener; + + /** + * 失败重试机制调用模板 + * + * @return + */ + @Bean + public RetryTemplate retryTemplate() { + return RetryTemplate.builder() + .exponentialBackoff(1000, 2, 10000) + .maxAttempts(5) + .retryOn(Exception.class) + .withListener(retryListener).build(); + } +} diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryListener.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryListener.java new file mode 100644 index 0000000..766e47c --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RetryListener.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.config; + +import com.deepinnet.tp.common.lang.util.LogUtil; +import org.springframework.retry.*; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2023/12/19 17:12 + * @Description + */ +@Component +public class RetryListener implements org.springframework.retry.RetryListener { + @Override + public boolean open(RetryContext context, RetryCallback callback) { + LogUtil.info("尝试已打开,当前重试次数:{}", context.getRetryCount()); + return true; + } + + @Override + public void close(RetryContext context, RetryCallback callback, Throwable throwable) { + LogUtil.info("尝试已关闭,当前尝试次数:{}", context.getRetryCount()); + } + + @Override + public void onError(RetryContext context, RetryCallback callback, Throwable throwable) { + LogUtil.warn("第{}次尝试失败,异常信息:{}", context.getRetryCount(), throwable.getMessage()); + } +} diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RocketMQConfig.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RocketMQConfig.java new file mode 100644 index 0000000..ec7bb0a --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/RocketMQConfig.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.apache.rocketmq.spring.support.RocketMQMessageConverter; +import org.springframework.context.annotation.*; +import org.springframework.messaging.converter.*; + +import java.util.List; + +/** + * RocketMQ序列化器处理 + * + * @author tianxincoord@163.com + * @since 2022/5/13 + */ +@Configuration +public class RocketMQConfig { + + /** + * 解决RocketMQ Jackson不支持Java时间类型配置 + */ + @Bean + @Primary + public RocketMQMessageConverter createRocketMQMessageConverter() { + RocketMQMessageConverter converter = new RocketMQMessageConverter(); + CompositeMessageConverter compositeMessageConverter = (CompositeMessageConverter) converter.getMessageConverter(); + List messageConverterList = compositeMessageConverter.getConverters(); + for (MessageConverter messageConverter : messageConverterList) { + if (messageConverter instanceof MappingJackson2MessageConverter) { + MappingJackson2MessageConverter jackson2MessageConverter = (MappingJackson2MessageConverter) messageConverter; + ObjectMapper objectMapper = jackson2MessageConverter.getObjectMapper(); + // 增加Java8时间模块支持,实体类可以传递LocalDate/LocalDateTime + objectMapper.registerModules(new JavaTimeModule()); + } + } + return converter; + } +} diff --git a/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/ValidatorConfig.java b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/ValidatorConfig.java new file mode 100644 index 0000000..76cde57 --- /dev/null +++ b/tptradecore-app-starter/src/main/java/com/deepinnet/tptradecore/config/ValidatorConfig.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.config; + +import org.hibernate.validator.HibernateValidator; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.*; +import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; + +import javax.validation.*; + +@Configuration +public class ValidatorConfig { + + @Bean + public MethodValidationPostProcessor methodValidationPostProcessor() { + MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor(); + postProcessor.setBeforeExistingAdvisors(false); + postProcessor.setProxyTargetClass(true); + postProcessor.setValidator(validator()); + return postProcessor; + } + + /** + * 开启快速失败模式,一旦失败立即抛出异常 + */ + @Bean + public Validator validator() { + return Validation.byProvider(HibernateValidator.class) + .configure() + .failFast(true) + .buildValidatorFactory() + .getValidator(); + } +} \ No newline at end of file diff --git a/tptradecore-app-starter/src/main/resources/application-dev.yml b/tptradecore-app-starter/src/main/resources/application-dev.yml new file mode 100644 index 0000000..4f82014 --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/application-dev.yml @@ -0,0 +1,88 @@ +spring: + redis: + host: 192.168.3.200 + port: 6379 + password: ENC(ao+A54rgdnsZ/wIydpBlnxYqM34u5B4O) + #=======druid数据源配置======= + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + # 公网地址 记得替换地址和密码!!! + url: jdbc:mysql://rm-bp193v7i846v01k442o.mysql.rds.aliyuncs.com:3306/tp_order?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + # 内网地址 + #url: jdbc:mysql://rm-bp193v7i846v01k44.mysql.rds.aliyuncs.com:3306/ins?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + username: tp_deepinnet_dev + password: B%dkLnXRt@nWjeUA + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 + filters: stat,wall + initialSize: 5 + keepAlive: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 + stat-view-servlet: + enabled: true + url-pattern: /druid/* + +# dubbo +dubbo: + application: + name: ${spring.application.name} + registry: + address: nacos://192.168.3.200:8848 + parameters: + namespace: ${spring.cloud.nacos.discovery.namespace} + protocol: + port: 20880 + provider: + timeout: 3000 + retries: 0 + check: false + consumer: + timeout: 3000 + retries: 0 + check: false +#MQ +rocketmq: + name-server: 192.168.3.200:9876 + producer: + group: ${spring.application.name}-provider-group + access-key: ENC(1tdvMPxo2WaCW3exv64HG7LQHgg/T/zdUsubpXmYHjU=) + secret-key: ENC(SIbQF8Bjxfgf6ehjLtwj5azXCl2tEV79XcRL2IbEQHU=) + enable-msg-trace: true + consumer: + group: ${spring.application.name}-consumer-group + +message: + consumerGroup: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + delayConsumerGroup: GID_${spring.application.name}-delay-consumer-group-${spring.profiles.active} + +mybatis-plus: + mapper-locations: classpath*:mybatis/mapper/*/*Mapper.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + sql: + print: true + +# 打印日志的配置 +logging: + level: + com: + alibaba: + cloud: + nacos: + client: debug + +pos: + guolang: + url: http://posdemo3.hzgolong.com:41001/api/pos/notice + secretKey: 141dd8dd814b20baf326daa1f563b5ec \ No newline at end of file diff --git a/tptradecore-app-starter/src/main/resources/application-local.yml b/tptradecore-app-starter/src/main/resources/application-local.yml new file mode 100644 index 0000000..c3432d0 --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/application-local.yml @@ -0,0 +1,88 @@ +spring: + redis: + host: 192.168.3.200 + port: 6379 + password: ENC(ao+A54rgdnsZ/wIydpBlnxYqM34u5B4O) + #=======druid数据源配置======= + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + url: jdbc:mysql://rm-bp193v7i846v01k442o.mysql.rds.aliyuncs.com:3306/tp_order-env-dev?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + # 内网地址 + #url: jdbc:mysql://rm-bp193v7i846v01k44.mysql.rds.aliyuncs.com:3306/ins?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + username: tp_deepinnet_dev + password: B%dkLnXRt@nWjeUA + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 + filters: stat,slf4j + initialSize: 5 + keepAlive: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 + stat-view-servlet: + enabled: true + url-pattern: /druid/* + +# dubbo +dubbo: + application: + name: ${spring.application.name} + registry: + address: nacos://192.168.3.200:8848 + parameters: + namespace: ${spring.cloud.nacos.discovery.namespace} + protocol: + port: 20880 + provider: + timeout: 30000 + retries: 0 + check: false + consumer: + timeout: 30000 + retries: 0 + check: false + +#MQ +rocketmq: + name-server: 192.168.3.200:9876 + producer: + group: ${spring.application.name}-provider-group + access-key: ENC(1tdvMPxo2WaCW3exv64HG7LQHgg/T/zdUsubpXmYHjU=) + secret-key: ENC(SIbQF8Bjxfgf6ehjLtwj5azXCl2tEV79XcRL2IbEQHU=) + enable-msg-trace: true + consumer: + group: ${spring.application.name}-consumer-group + +message: + consumerGroup: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + delayConsumerGroup: GID_${spring.application.name}-delay-consumer-group-${spring.profiles.active} + +mybatis-plus: + mapper-locations: classpath*:mybatis/mapper/*/*Mapper.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + sql: + print: true + +# 打印日志的配置 +logging: + level: + com: + alibaba: + cloud: + nacos: + client: debug + +pos: + guolang: + url: http://posdemo3.hzgolong.com:41001/api/pos/notice + secretKey: 141dd8dd814b20baf326daa1f563b5ec \ No newline at end of file diff --git a/tptradecore-app-starter/src/main/resources/application-pre.yml b/tptradecore-app-starter/src/main/resources/application-pre.yml new file mode 100644 index 0000000..f420e75 --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/application-pre.yml @@ -0,0 +1,80 @@ +spring: + redis: + host: r-bp1ev5drg1lfxkny1p.redis.rds.aliyuncs.com + port: 6379 + username: ENC(SCb67WmqS3xLcOWcrGfpRpEszS+bfTEuwycZPawDOPo=) + password: ENC(Va6APbdZCz2kBtKJQIVb97XY4KM6t6qXRnIO5IGY/+U=) + database: 0 + autoconfigure: + exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration + + #=======druid数据源配置======= + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + url: jdbc:mysql://rm-bp13l2n5s8gvc0g7a.mysql.rds.aliyuncs.com:3306/tp_order-env-prod?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + username: ENC(SSQ+shVgs44I1MYoh21T5197DmHjJBBiDcyfXcePf1M=) + password: ENC(rkHZZpYsDbG+npIGG/P4RAGMf9ySzKDmtiwcTDGoliA=) + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 + filters: stat,slf4j + initialSize: 5 + keepAlive: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 + stat-view-servlet: + enabled: true + url-pattern: /druid/* + +# dubbo +dubbo: + application: + name: ${spring.application.name} + registry: + address: nacos://192.168.3.200:8848 + parameters: + namespace: ${spring.cloud.nacos.discovery.namespace} + protocol: + port: 20880 + provider: + timeout: 5000 + retries: 0 + check: false + consumer: + timeout: 5000 + retries: 0 + check: false + +#MQ +rocketmq: + name-server: ep-bp1ie6850ec21aa6c1cd.epsrv-bp1g2k84c7kid2igyiun.cn-hangzhou.privatelink.aliyuncs.com:8080 + producer: + group: GID_${spring.application.name}-provider-group-${spring.profiles.active} + access-key: ENC(kIlPWF9cvjyrFjCGo+XO6y43TzYf99t0W3M/eOdi8wI=) + secret-key: ENC(ZWjaBSFtTZh7asRax8+mC1eGf+uSAuLVvUimRr1QB/4=) + enable-msg-trace: true + consumer: + group: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + access-key: ENC(kIlPWF9cvjyrFjCGo+XO6y43TzYf99t0W3M/eOdi8wI=) + secret-key: ENC(ZWjaBSFtTZh7asRax8+mC1eGf+uSAuLVvUimRr1QB/4=) + +message: + consumerGroup: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + delayConsumerGroup: GID_${spring.application.name}-delay-consumer-group-${spring.profiles.active} + +mybatis-plus: + mapper-locations: classpath*:mybatis/mapper/*/*Mapper.xml + +pos: + guolang: + url: http://10.0.30.157:41001/api/pos/notice + secretKey: 246dd25f10552ba553912d018f4df26f \ No newline at end of file diff --git a/tptradecore-app-starter/src/main/resources/application-prod.yml b/tptradecore-app-starter/src/main/resources/application-prod.yml new file mode 100644 index 0000000..0ddc934 --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/application-prod.yml @@ -0,0 +1,80 @@ +spring: + redis: + host: r-bp1ev5drg1lfxkny1p.redis.rds.aliyuncs.com + port: 6379 + username: ENC(SCb67WmqS3xLcOWcrGfpRpEszS+bfTEuwycZPawDOPo=) + password: ENC(Va6APbdZCz2kBtKJQIVb97XY4KM6t6qXRnIO5IGY/+U=) + database: 1 + autoconfigure: + exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration + + #=======druid数据源配置======= + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + url: jdbc:mysql://rm-bp13l2n5s8gvc0g7a.mysql.rds.aliyuncs.com:3306/tp_order-env-prod?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + username: ENC(SSQ+shVgs44I1MYoh21T5197DmHjJBBiDcyfXcePf1M=) + password: ENC(rkHZZpYsDbG+npIGG/P4RAGMf9ySzKDmtiwcTDGoliA=) + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 + filters: stat,slf4j + initialSize: 15 + keepAlive: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 + stat-view-servlet: + enabled: true + url-pattern: /druid/* + +# dubbo +dubbo: + application: + name: ${spring.application.name} + registry: + address: nacos://192.168.3.200:8848 + parameters: + namespace: ${spring.cloud.nacos.discovery.namespace} + protocol: + port: 20880 + provider: + timeout: 5000 + retries: 0 + check: false + consumer: + timeout: 5000 + retries: 0 + check: false + +#MQ +rocketmq: + name-server: ep-bp1ie6850ec21aa6c1cd.epsrv-bp1g2k84c7kid2igyiun.cn-hangzhou.privatelink.aliyuncs.com:8080 + producer: + group: GID_${spring.application.name}-provider-group-${spring.profiles.active} + access-key: ENC(kIlPWF9cvjyrFjCGo+XO6y43TzYf99t0W3M/eOdi8wI=) + secret-key: ENC(ZWjaBSFtTZh7asRax8+mC1eGf+uSAuLVvUimRr1QB/4=) + enable-msg-trace: true + consumer: + group: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + access-key: ENC(kIlPWF9cvjyrFjCGo+XO6y43TzYf99t0W3M/eOdi8wI=) + secret-key: ENC(ZWjaBSFtTZh7asRax8+mC1eGf+uSAuLVvUimRr1QB/4=) + +message: + consumerGroup: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + delayConsumerGroup: GID_${spring.application.name}-delay-consumer-group-${spring.profiles.active} + +mybatis-plus: + mapper-locations: classpath*:mybatis/mapper/*/*Mapper.xml + +pos: + guolang: + url: http://10.0.30.157:41001/api/pos/notice + secretKey: 246dd25f10552ba553912d018f4df26f \ No newline at end of file diff --git a/tptradecore-app-starter/src/main/resources/application-test.yml b/tptradecore-app-starter/src/main/resources/application-test.yml new file mode 100644 index 0000000..9160f4c --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/application-test.yml @@ -0,0 +1,78 @@ +spring: + redis: + host: r-bp1jtsv1a3ougumlzw.redis.rds.aliyuncs.com + port: 6379 + username: ENC(9d6KFkbMHm78VQO26J2gNbV9UGuiDZJL) + password: ENC(08E69p0zaGkABm5yj/nV4B3UWGoQeBhWvc7F5JbTp3g=) + database: 1 + #=======druid数据源配置======= + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + # 公网地址 记得替换地址和密码!!! + url: jdbc:mysql://rm-bp193v7i846v01k442o.mysql.rds.aliyuncs.com:3306/tp_order-env-test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + # 内网地址 + #url: jdbc:mysql://rm-bp193v7i846v01k44.mysql.rds.aliyuncs.com:3306/ins?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + username: tp_deepinnet_test + password: 20230424MnfFfdWZsyH2KvuF + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 + filters: stat,slf4j + initialSize: 5 + keepAlive: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 + stat-view-servlet: + enabled: true + url-pattern: /druid/* + +# dubbo +dubbo: + application: + name: ${spring.application.name} + registry: + address: nacos://192.168.3.200:8848 + parameters: + namespace: ${spring.cloud.nacos.discovery.namespace} + protocol: + port: 20880 + provider: + timeout: 10000 + retries: 0 + check: false + consumer: + timeout: 10000 + retries: 0 + check: false + +#MQ +rocketmq: + name-server: rmq-cn-lbj3h31640b-vpc.cn-hangzhou.rmq.aliyuncs.com:8080 + producer: + group: ${spring.application.name}-provider-group + access-key: ENC(1g0pNKHGlvtuY4YKgOlGr/MH2BbcDNu0+qPTvjR/EIo=) + secret-key: ENC(MeO1kHiQbBCu4qPRFcCWlgGzbKNl6rOg7YyXxCDNH0M=) + enable-msg-trace: true + consumer: + group: ${spring.application.name}-consumer-group + +message: + consumerGroup: GID_${spring.application.name}-consumer-group-${spring.profiles.active} + delayConsumerGroup: GID_${spring.application.name}-delay-consumer-group-${spring.profiles.active} + +mybatis-plus: + mapper-locations: classpath*:mybatis/mapper/*/*Mapper.xml + +pos: + guolang: + url: http://posdemo3.hzgolong.com:41001/api/pos/notice + secretKey: 141dd8dd814b20baf326daa1f563b5ec \ No newline at end of file diff --git a/tptradecore-app-starter/src/main/resources/application.yml b/tptradecore-app-starter/src/main/resources/application.yml new file mode 100644 index 0000000..7ecf99c --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/application.yml @@ -0,0 +1,26 @@ +# oss配置 +oss: + accessSecret: ENC(ys+mbFnF71afPL22YUWw0P0B/RSRMh8vgOswK7KhFIq5tq3/SAZQQg==) + accessKey: ENC(NaC4iCnLX+bUXi5ifbwjJQXenTTsKE5xpt7QXQs0nMPxzCfgxzQfVQ==) + # 文件过期时间 3600 * 1000 默认1个小时 (毫秒) + expireMilliSecond: 3600000 + + +spring: + # 防止 Knife4j 2.0及以上版本访问报错 + mvc: + pathmatch: + matching-strategy: ant_path_matcher + +jasypt: + encryptor: + # 自定义加密盐值(密钥) + password: shendu188 + # 加密算法设置 + algorithm: PBEWithMD5AndDES + iv-generator-classname: org.jasypt.iv.NoIvGenerator + + +message: + user-topic: TP_USER_EVENT_TOPIC-${spring.profiles.active} + tradecore-topic: TP_TRADECORE_EVENT_TOPIC-${spring.profiles.active} diff --git a/tptradecore-app-starter/src/main/resources/bootstrap.yml b/tptradecore-app-starter/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..d834d17 --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/bootstrap.yml @@ -0,0 +1,23 @@ +server: + port: 8080 + +spring: + application: + name: tptradecore + # nacos + cloud: + nacos: + # 注册中心的配置 + discovery: + server-addr: http://192.168.3.200:8848 + namespace: tp_dev + group: DEFAULT_GROUP + register-enabled: false + config: + import-check: + enabled: false + server-addr: http://192.168.3.200:8848 + refresh-enabled: true + namespace: ${spring.cloud.nacos.discovery.namespace} + name: ${spring.application.name} + file-extension: properties diff --git a/tptradecore-app-starter/src/main/resources/logback-spring.xml b/tptradecore-app-starter/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..04ff5d1 --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/logback-spring.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + + + + + + ${LOG_FILE_PATH}/common-default.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + + ${LOG_FILE_PATH}/common-default.log.%d{yyyy-MM-dd} + + + + + + ${LOG_FILE_PATH}/common-dal.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + + ${LOG_FILE_PATH}/common-dal.log.%d{yyyy-MM-dd} + + + + + + + ${LOG_FILE_PATH}/biz-digest.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + + ${LOG_FILE_PATH}/biz-digest.log.%d{yyyy-MM-dd} + + + + + + ${LOG_FILE_PATH}/message.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + + ${LOG_FILE_PATH}/message.log.%d{yyyy-MM-dd} + + + + + + ${LOG_FILE_PATH}/task.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + + ${LOG_FILE_PATH}/task.log.%d{yyyy-MM-dd} + + + + + + ${LOG_FILE_PATH}/integration.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + + ${LOG_FILE_PATH}/integration.log.%d{yyyy-MM-dd} + + + + + + ${LOG_FILE_PATH}/common-error.log + + + ERROR + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread][%X{traceId}][Tenant-Id:%X{Tenant-Id}][BizType:%X{bizType}] %-5level %logger{36}:%L - %msg%n + + + + ${LOG_FILE_PATH}/common-error.log.%d{yyyy-MM-dd} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tptradecore-app-starter/src/main/resources/sql/tp_order.sql b/tptradecore-app-starter/src/main/resources/sql/tp_order.sql new file mode 100644 index 0000000..dba193d --- /dev/null +++ b/tptradecore-app-starter/src/main/resources/sql/tp_order.sql @@ -0,0 +1,751 @@ +/* + Navicat Premium Data Transfer + + Source Server : laobinggun + Source Server Type : MySQL + Source Server Version : 80028 (8.0.28) + Source Host : 120.48.79.82:3307 + Source Schema : tp_order + + Target Server Type : MySQL + Target Server Version : 80028 (8.0.28) + File Encoding : 65001 + + Date: 14/08/2023 17:56:44 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for tp_audit_record +-- ---------------------------- +DROP TABLE IF EXISTS `tp_audit_record`; +CREATE TABLE `tp_audit_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `audit_no` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '审核单号', + `biz_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务单号', + `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型', + `audit_time` datetime DEFAULT NULL COMMENT '审核时间', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态', + `auditor_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '审核员编号', + `auditor_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '审核员姓名', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '业务拓展字段', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='审核单'; + +-- ---------------------------- +-- Table structure for tp_bill +-- ---------------------------- +DROP TABLE IF EXISTS `tp_bill`; +CREATE TABLE `tp_bill` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `bill_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账单编号', + `amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账单金额', + `order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单号', + `pay_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付单号', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账单状态', + `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型', + `bill_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账单类型', + `remark` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='账单'; + +-- ---------------------------- +-- Table structure for tp_charge +-- ---------------------------- +DROP TABLE IF EXISTS `tp_charge`; +CREATE TABLE `tp_charge` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `charge_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '计费单号', + `pay_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付单号', + `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '计费标题', + `charge_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '计费类型', + `amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '收退费金额', + `ratio` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '计费比例', + `charging_entity_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '收费主体id', + `charging_entity_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '收费主体类型', + `status` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='计费单'; + +-- ---------------------------- +-- Table structure for tp_financial_account +-- ---------------------------- +DROP TABLE IF EXISTS `tp_financial_account`; +CREATE TABLE `tp_financial_account` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `biz_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '关联的业务单号', + `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型', + `account_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号类型:收款方或者付款方', + `account` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号', + `account_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号名称', + `channel` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付宝、微信、银行', + `card_issuer_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '卡机构id', + `bank_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '开户行名称', + `bank_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '银行账号', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=209 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='资金账号'; + +-- ---------------------------- +-- Table structure for tp_order +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order`; +CREATE TABLE `tp_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `product_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品编码', + `product_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品名称', + `product_category_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品类目编码', + `product_category` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品类目名称', + `out_request_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '外部业务单号', + `user_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户编码', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编码', + `parent_order_no` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父订单编号', + `original_order_no` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '原订单号', + `main` tinyint NOT NULL COMMENT '是否主订单(0-否;1-是)', + `status` int NOT NULL COMMENT '订单状态', + `approve_status` tinyint DEFAULT NULL COMMENT '审核状态(0-待审核;1-审核通过;2-审核不通过)', + `type` tinyint NOT NULL COMMENT '订单类型(尾款订单 / 改签订单 / 普通订单)', + `pay_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '付款金额', + `original_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '订单优惠前原金额', + `source` tinyint NOT NULL COMMENT '订单来源(APP / 微信小程序 / 支付宝小程序 / H5)', + `pay_type` tinyint DEFAULT NULL COMMENT '支付方式', + `identity_verificat` tinyint NOT NULL COMMENT '是否实名认证(0-否;1-是)', + `ticket_type` tinyint DEFAULT NULL COMMENT '车票类型', + `order_time` bigint NOT NULL COMMENT '下单时间', + `pay_time` bigint DEFAULT NULL COMMENT '支付时间', + `close_time` bigint DEFAULT NULL COMMENT '订单关闭时间', + `expire_time` bigint DEFAULT NULL COMMENT '订单过期时间', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_order_no` (`order_no`) USING BTREE COMMENT '订单唯一编号', + KEY `idx_user_no` (`user_no`) USING BTREE COMMENT '用户编号索引', + KEY `idx_parent_order_no` (`parent_order_no`) USING BTREE COMMENT '父订单号索引', + KEY `idx_original_order_no` (`original_order_no`) USING BTREE COMMENT '原订单号索引' +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='订单'; + +-- ---------------------------- +-- Table structure for tp_order_discount +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_discount`; +CREATE TABLE `tp_order_discount` ( + `id` bigint NOT NULL COMMENT '主键ID', + `pricing_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '计价记录编号', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编码', + `type` tinyint NOT NULL COMMENT '优惠类型', + `discount_amount` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '优惠金额', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'CURRENT_TIMESTAMP', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='优惠信息'; + +-- ---------------------------- +-- Table structure for tp_order_dispatch_record +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_dispatch_record`; +CREATE TABLE `tp_order_dispatch_record` ( + `id` bigint NOT NULL COMMENT '主键ID', + `dispatch_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '派单编码', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编码', + `dispatch_status` tinyint NOT NULL COMMENT '派单状态', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='派单记录'; + +-- ---------------------------- +-- Table structure for tp_order_driver_info +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_driver_info`; +CREATE TABLE `tp_order_driver_info` ( + `id` bigint NOT NULL COMMENT '主键ID', + `transportation_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '承运交通工具编码', + `name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '司机', + `concat` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '司机联系方式', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='司机信息'; + +-- ---------------------------- +-- Table structure for tp_order_element +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_element`; +CREATE TABLE `tp_order_element` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `element_type` tinyint NOT NULL COMMENT '要素类型(下单 / 退款 / 改签)', + `element_code` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素code', + `element_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素名称', + `element_key` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素Key', + `element_value` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素值', + `tenant_id` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_item_element +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_item_element`; +CREATE TABLE `tp_order_item_element` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `item_no` varchar(20) COLLATE utf8mb4_general_ci NOT NULL COMMENT '标的项编码', + `element_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素名称', + `element_value` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素值', + `element_unit` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '要素单位', + `biz_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_passenger +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_passenger`; +CREATE TABLE `tp_order_passenger` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `passenger_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '乘客编号', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `passenger_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '乘客姓名', + `passenger_contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系方式', + `identification_type` tinyint DEFAULT NULL COMMENT '乘客证件类型', + `identification_number` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '乘客证件编号', + `biz_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='乘客'; + +-- ---------------------------- +-- Table structure for tp_order_passenger_trip_relation +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_passenger_trip_relation`; +CREATE TABLE `tp_order_passenger_trip_relation` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `passenger_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '干系人编号', + `trip_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '行程单编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_placer +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_placer`; +CREATE TABLE `tp_order_placer` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `placer_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '下单人编号', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `placer_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '下单人姓名', + `placer_contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系方式', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='下单人'; + +-- ---------------------------- +-- Table structure for tp_order_price_record +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_price_record`; +CREATE TABLE `tp_order_price_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `pricing_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '计价记录编号', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编码', + `pricing_amount` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '计价金额', + `pricing_type` tinyint NOT NULL COMMENT '计价类型', + `pricing_params` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '计价参数', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='计价记录'; + +-- ---------------------------- +-- Table structure for tp_order_requirement_user +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_requirement_user`; +CREATE TABLE `tp_order_requirement_user` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `requirement_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用车人名称', + `requirement_contact_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, + `requirement_contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系方式', + `biz_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='需求方'; + +-- ---------------------------- +-- Table structure for tp_order_route +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_route`; +CREATE TABLE `tp_order_route` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `route_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路编号', + `route_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路名称', + `round_trip` tinyint DEFAULT NULL COMMENT '去程 / 返程', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_route_schedule +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_route_schedule`; +CREATE TABLE `tp_order_route_schedule` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `route_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路编号', + `schedule_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '班次编号', + `schedule_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '班次名称', + `schedule_time` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '班次时间', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_service_target +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_service_target`; +CREATE TABLE `tp_order_service_target` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `target_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '服务主体名称', + `target_number` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '服务对象唯一编码', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='服务对象'; + +-- ---------------------------- +-- Table structure for tp_order_subject_item +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_subject_item`; +CREATE TABLE `tp_order_subject_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `item_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '标的编码', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编码', + `passenger_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '乘客编码(干系人)', + `name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标的名称', + `type` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标的类型', + `count` int NOT NULL COMMENT '标的项购买数量', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_transportation +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_transportation`; +CREATE TABLE `tp_order_transportation` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `dispatch_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '派单编码', + `transportation_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '承运交通工具编码', + `driver` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '司机', + `status` tinyint DEFAULT NULL COMMENT '状态', + `position` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '位置', + `type` tinyint DEFAULT NULL COMMENT '类型', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_travel_trip +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_travel_trip`; +CREATE TABLE `tp_order_travel_trip` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `trip_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '行程单编号', + `passenger_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '乘客编号', + `order_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单编号', + `pick_up_location_code` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上车点code', + `pick_up_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上车点名称', + `drop_off_location_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '下车点code', + `drop_off_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '下车点名称', + `start_time` datetime DEFAULT NULL COMMENT '出发时间', + `end_time` datetime DEFAULT NULL COMMENT '到达时间', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='行程单'; + +-- ---------------------------- +-- Table structure for tp_order_trip_position +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_trip_position`; +CREATE TABLE `tp_order_trip_position` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `trip_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '行程单编号', + `location_code` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '位置编码', + `location_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '位置名称', + `lng` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '经度', + `lat` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '维度', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_order_vehicle_info +-- ---------------------------- +DROP TABLE IF EXISTS `tp_order_vehicle_info`; +CREATE TABLE `tp_order_vehicle_info` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `transportation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '交通工具编码', + `vehicle_number` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '车牌号', + `biz_data` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `tenant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除(0-否;1-是)', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_pay_order +-- ---------------------------- +DROP TABLE IF EXISTS `tp_pay_order`; +CREATE TABLE `tp_pay_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `pay_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付单号', + `biz_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务单号', + `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型', + `discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '优惠金额', + `charge_amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '计费金额', + `pay_amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '实付金额', + `pay_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付方式', + `pay_scene` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付场景', + `pay_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付标题', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付单状态', + `pay_time` datetime DEFAULT NULL COMMENT '支付时间', + `pay_timeout` datetime DEFAULT NULL COMMENT '支付超时时间', + `out_pay_flow_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '三方支付流水号', + `charge_required` tinyint(1) NOT NULL COMMENT '是否需要计收费', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=115 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='支付单'; + +-- ---------------------------- +-- Table structure for tp_refund_apply_order +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_apply_order`; +CREATE TABLE `tp_refund_apply_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `refund_apply_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票申请单号', + `product_category_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品类目编码', + `product_category_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品类目名称', + `user_no` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名', + `order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '原订单号', + `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务类型', + `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退票原因', + `apply_time` bigint NOT NULL COMMENT '申请时间', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态', + `apply_amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '申请金额', + `charge_amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '计费金额', + `refund_amount` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '实退金额', + `refund_type` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '退款方式', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='退票申请单'; + +-- ---------------------------- +-- Table structure for tp_refund_element +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_element`; +CREATE TABLE `tp_refund_element` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `refund_apply_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退款申请单号', + `element_type` tinyint NOT NULL COMMENT '要素类型(下单 / 退款 / 改签)', + `element_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素code', + `element_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素名称', + `element_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素Key', + `element_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素值', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_refund_passenger +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_passenger`; +CREATE TABLE `tp_refund_passenger` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `refund_apply_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票申请单编号', + `refund_subject_item_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票标的项编号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名', + `contact_info` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系方式', + `cert_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '证件号', + `cert_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '证件类型', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='退款申请单关联的乘客信息'; + +-- ---------------------------- +-- Table structure for tp_refund_requirement_user +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_requirement_user`; +CREATE TABLE `tp_refund_requirement_user` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `refund_apply_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票申请单编号', + `refund_subject_item_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票标的项id', + `requirement_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '交通需求方编号', + `requirement_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '交通需求方名称', + `contact_info` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系方式', + `contact_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系人姓名', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='退款申请单关联的交通需求方(用车方)'; + +-- ---------------------------- +-- Table structure for tp_refund_route +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_route`; +CREATE TABLE `tp_refund_route` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `refund_apply_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票申请单号', + `route_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路编号', + `route_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路名称', + `round_trip` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '去程 / 返程', + `tenant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `biz_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展字段', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_refund_route_schedule +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_route_schedule`; +CREATE TABLE `tp_refund_route_schedule` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `refund_apply_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票申请单号', + `route_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路编号', + `schedule_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班次编号', + `schedule_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '班次名称', + `schedule_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班次时间', + `biz_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `tenant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户ID', + `gmt_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `is_deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for tp_refund_subject_item +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_subject_item`; +CREATE TABLE `tp_refund_subject_item` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `refund_apply_order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票申请单号', + `subject_item_no` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '退票标的项编号', + `subject_item_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标的项id', + `subject_item_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标的项类型', + `quantity` int NOT NULL COMMENT '数量', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='退票标的项'; + +-- ---------------------------- +-- Table structure for tp_refund_subject_item_element +-- ---------------------------- +DROP TABLE IF EXISTS `tp_refund_subject_item_element`; +CREATE TABLE `tp_refund_subject_item_element` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `subject_item_no` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '标的项编号', + `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素名称', + `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素编码', + `value` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '要素值', + `unit_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '单位编码', + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='退票标的项要素'; + +-- ---------------------------- +-- Table structure for tp_voucher +-- ---------------------------- +DROP TABLE IF EXISTS `tp_voucher`; +CREATE TABLE `tp_voucher` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `voucher_no` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证编号', + `user_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户编号', + `order_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单号', + `voucher_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证编码', + `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证类型', + `effective_start_time` datetime NOT NULL COMMENT '有效期开始时间', + `effective_end_time` datetime NOT NULL COMMENT '有效期结束时间', + `earliest_check_time` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '当天最早检票时间', + `latest_check_time` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '当天最晚检票时间', + `route_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路id', + `route_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '线路名称', + `schedule_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班次id', + `schedule_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班次名称', + `validation_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '验票方式', + `total_count` int NOT NULL COMMENT '总可用次数', + `redemption_count` int NOT NULL COMMENT '已核销次数', + `required_real_name` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否需要实名,0表示非实名,1表示实名', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证状态', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='出行凭证'; + +-- ---------------------------- +-- Table structure for tp_voucher_inspection_record +-- ---------------------------- +DROP TABLE IF EXISTS `tp_voucher_inspection_record`; +CREATE TABLE `tp_voucher_inspection_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `voucher_no` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证编号', + `user_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户编号', + `param` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '送检参数', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '返回结果', + `api` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '送检api', + `inspection_time` datetime NOT NULL COMMENT '送检时间', + `inst_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '三方机构名称', + `inst_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '三方机构编码', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='第三方送检记录'; + +-- ---------------------------- +-- Table structure for tp_voucher_passenger +-- ---------------------------- +DROP TABLE IF EXISTS `tp_voucher_passenger`; +CREATE TABLE `tp_voucher_passenger` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `voucher_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证编号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名', + `contact_info` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '联系方式', + `cert_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '证件号', + `cert_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '证件类型', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='凭证干系人'; + +-- ---------------------------- +-- Table structure for tp_voucher_verification_record +-- ---------------------------- +DROP TABLE IF EXISTS `tp_voucher_verification_record`; +CREATE TABLE `tp_voucher_verification_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `voucher_no` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '凭证编号', + `user_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户编号', + `verification_time` bigint NOT NULL COMMENT '验票时间', + `result` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '检票结果', + `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '失败原因', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id', + `biz_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='检票记录'; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/MybatisPlusGenerator.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/MybatisPlusGenerator.java new file mode 100644 index 0000000..0d77820 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/MybatisPlusGenerator.java @@ -0,0 +1,146 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.generator.FastAutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig.Builder; +import com.baomidou.mybatisplus.generator.config.OutputFile; +import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; +import com.baomidou.mybatisplus.generator.engine.BeetlTemplateEngine; +import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler; +import org.junit.jupiter.api.Test; + +import java.util.Collections; + +/** + *         ┏┓   ┏┓+ + + *        ┏┛┻━━━┛┻┓ + + + *        ┃       ┃ + *        ┃   ━   ┃ ++ + + + + *        ████━████ ┃+ + *        ┃       ┃ + + *        ┃   ┻   ┃ + *        ┃       ┃ + + + *        ┗━┓    ┏━┛ + *          ┃   ┃ + *          ┃   ┃ + + + + + *          ┃   ┃    Code is far away from bug with the animal protecting + *          ┃   ┃ +     神兽保佑,代码无bug + *          ┃   ┃ + *          ┃   ┃  + + *          ┃    ┗━━━┓ + + + *          ┃        ┣┓ + *          ┃        ┏┛ + *          ┗┓┓┏━┳┓┏┛ + + + + + *           ┃┫┫ ┃┫┫ + *           ┗┻┛ ┗┻┛+ + + + + * + * @author 唐国翔 + * @since 2022-11-05 星期六 + *

+ * dao层模版生成 + * 直接运行test方法即可拥有mybatis-plus模版方法!!! + *

+ * 本地修改后请勿提交!!! + **/ +@SuppressWarnings("all") +public class MybatisPlusGenerator { + + //============================================ 数据库连接信息 根据实际情况改===============================================// + private final String url = "jdbc:mysql://rm-bp193v7i846v01k442o.mysql.rds.aliyuncs.com:3306/tp_order-env-dev"; + private final String userName = "tp_deepinnet_dev"; + private final String password = "B%dkLnXRt@nWjeUA"; + //============================================ 数据库连接信息 根据实际情况改===============================================// + + //======================================= 项目路径根据自己实际情况改 window D:// =========================================// + private final String path + = "/Users/laobinggun/work_space/tptradecore/tptradecore-common/tptradecore-common-dal"; + //============================= ============ 项目路径根据自己实际情况改 window D:// ========================================// + + //====================================== 包名(例如rule)(会新建包不需要请置空)==============================================// + + private final String moduleName = "order"; + //===================================== 包名(例如rule)(会新建包不需要请置空)==============================================// + + //===================================== 作者 ====================================================// + private final String auth = "abel"; + //===================================== 作者 ====================================================// + + //============================================ 需要生成的表多个用,分割 ==================================================// + private final String needTables = "tp_order_invoice"; + //============================================ 需要生成的表多个用,分割 ==================================================// + + @Test + public void generator() { + FastAutoGenerator.create(new Builder(url, userName, password) + .keyWordsHandler(new MySqlKeyWordsHandler()) //关键字处理 + .typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> { + switch (metaInfo.getJdbcType()) { + //数据库tinyint类型映射为java的Integer类型 + case TINYINT: + case BIT: + return DbColumnType.INTEGER; + //数据库时间类型统一映射为java的Date类型 + case DATE: + case TIME: + case TIMESTAMP: + return DbColumnType.LOCAL_DATE_TIME; + default: + return typeRegistry.getColumnType(metaInfo); + } + })) + .globalConfig(builder -> { + builder + .author(auth) // 设置作者 + .outputDir(path + "/src/main/java"); // 指定输出目录 + }) + + .packageConfig(builder -> { + builder.parent("com.deepinnet.tptradecore.common.dal") // 设置父包名 + .entity("dataobject" + getModuleName()) + .mapper("dao" + getModuleName()) + .service("repository" + getModuleName()) + .serviceImpl( + "repository" + getModuleName() + ".impl") + .pathInfo( + Collections.singletonMap(OutputFile.xml, + path + "/src/main/resources/mybatis/mapper/" + moduleName)); // 设置mapperXml生成路径 + }) + .strategyConfig(builder -> builder.addInclude(needTables) // 设置需要生成的表名 多个用,隔开 + //.addTablePrefix("t_", "c_") // 设置过滤表前缀 + //实体类 配置 + .entityBuilder() + .idType(IdType.AUTO) + .enableActiveRecord() + //.superClass(BaseEntity.class) + .formatFileName("%sDO") + .enableFileOverride() //是否覆盖 + .enableLombok() + .logicDeleteColumnName("is_deleted") + .enableTableFieldAnnotation() + //mapper 配置 + .mapperBuilder() + .formatMapperFileName("%sDao") + //.enableFileOverride() //是否覆盖 + .enableBaseColumnList() + .enableBaseResultMap() + //repository 配置 + .serviceBuilder() + //.enableFileOverride() + .formatServiceFileName("%sRepository") + .formatServiceImplFileName("%sRepositoryImpl")) + .templateConfig(builder -> { + //不生成controller + builder.controller(""); + //默认不生成xml 需要的话把下面代码注释掉 + //builder.xml(""); + }) + .templateEngine(new BeetlTemplateEngine()) // 使用beetl引擎模板,默认的是Velocity引擎模板 + .execute(); + } + + private String getModuleName() { + return StringUtils.isNotBlank(moduleName) ? "." + moduleName : moduleName; + } + +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpAuditDomainServiceTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpAuditDomainServiceTest.java new file mode 100644 index 0000000..82695ed --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpAuditDomainServiceTest.java @@ -0,0 +1,84 @@ +package com.deepinnet.tptradecore.core.service.order; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditCreatedDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpOrderAuditListQueryDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpOrderAuditPagedQueryDTO; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditBizObjectTypeEnum; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditTypeEnum; +import com.deepinnet.tptradecore.common.service.facade.audit.TpAuditFacade; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditOrderListVO; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.service.audit.TpAuditDomainService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.TestPropertySource; +import org.springframework.transaction.support.TransactionTemplate; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + *

+ * 审核领域服务测试类 + *

+ * + * @author chenjiaju + * @since 2023/7/28 + */ +@SpringBootTest +//@ActiveProfiles("local") +@TestPropertySource(properties = { + "spring.profiles.active=local" +}) +public class TpAuditDomainServiceTest { + + @Autowired + private TpAuditDomainService tpAuditDomainService; + + @Autowired + private TpAuditFacade tpAuditFacade; + + @Test + public void createAuditTest() { + TpAuditCreatedDTO tpAuditCreatedDTO = TpAuditCreatedDTO.builder().tenantId("test").auditorNo("xhqtest01").auditorName("xiehuaqiao") + .bizObjectNo("1234567").bizObjType(TpAuditBizObjectTypeEnum.ORDER_CHANGE_APPLY.getType()).status(TpAuditStatusEnum.WAITING_APPROVED.getType()) + .build(); + Boolean createFlag = tpAuditDomainService.createAudit(tpAuditCreatedDTO); + Assert.isTrue(createFlag,"创建审核单失败"); + + } + + + @Test + public void listOrderAuditTest() { + + TpOrderAuditListQueryDTO tpAuditCreatedDTO = TpOrderAuditListQueryDTO.builder().tenantId("1000293") + .auditTypes(Arrays.asList(TpAuditTypeEnum.CHARTER_BUS_ORDER_CANCEL_RSC_APPROVAL.getBizType())) + .build(); + List tpAudits = tpAuditDomainService.listOrderAudit(tpAuditCreatedDTO); + Assert.isTrue(CollUtil.isNotEmpty(tpAudits),"查询列表失败"); + + } + + @Test + public void pageOrderAuditListTest() { + + TpOrderAuditPagedQueryDTO dto = TpOrderAuditPagedQueryDTO.builder().tenantId("1000293") + .auditTypes(Arrays.asList(TpAuditTypeEnum.CHARTER_BUS_ORDER_CHANGE_RSC_APPROVAL.getBizType())) +// .orgCodes(Arrays.asList("1111")) + .build(); + dto.setPageSize(10); + TpResult> commonPageTpResult = tpAuditFacade.pageOrderAuditList(dto); + System.err.println(JSONUtil.toJsonPrettyStr(commonPageTpResult.getData())); + + } +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderChangeApplyServiceTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderChangeApplyServiceTest.java new file mode 100644 index 0000000..b6d1660 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderChangeApplyServiceTest.java @@ -0,0 +1,167 @@ +package com.deepinnet.tptradecore.core.service.order; + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeTypeEnum; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderChangedFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeApplyVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +import java.util.Arrays; +import java.util.List; + +/** + *

+ * 审核领域服务测试类 + *

+ * + * @author chenjiaju + * @since 2023/7/28 + */ +@SpringBootTest +//@ActiveProfiles("local") +@TestPropertySource(properties = { + "spring.profiles.active=local" +}) +public class TpOrderChangeApplyServiceTest { + + @Autowired + private TpOrderChangedApplyDomainService tpOrderChangedDomainService; + + @Autowired + private TpOrderChangedFacade tpOrderChangedFacade; + + @Test + public void createOrderChangeApplyTest() { + String applyJson = "{\n" + + " \"orderNo\":\"20231208006000011214\",\n" + + " \"originalOrderNo\":\"20231208006000011214\",\n" + + " \"applyStatus\":\"waiting_approved\",\n" + + " \"applyTime\":1702021188516,\n" + + " \"applyType\":\"order_change\",\n" + + " \"autoAudit\":false,\n" + + " \"orderChangeItems\":[\n" + + " {\n" + + " \"orderNo\":\"20231208006000011214\",\n" + + " \"itemType\":\"go_trip_changed\",\n" + + " \"itemFactors\":[\n" + + " {\n" + + " \"factorCode\":\"passenger_count\",\n" + + " \"factorName\":\"乘车人数\",\n" + + " \"beforeValue\":\"12\",\n" + + " \"afterValue\":\"32\",\n" + + " \"orderNo\":\"20231208006000011214\",\n" + + " \"tenantId\":\"test\"\n" + + " },\n" + + " {\n" + + " \"factorCode\":\"car_info\",\n" + + " \"factorName\":\"车辆信息\",\n" + + " \"beforeValue\":\"宝斯通K2\",\n" + + " \"afterValue\":\"宝斯通K3\",\n" + + " \"orderNo\":\"20231208006000011214\",\n" + + " \"tenantId\":\"test\"\n" + + " },\n" + + " {\n" + + " \"factorCode\":\"way_point\",\n" + + " \"factorName\":\"途径点\",\n" + + " \"beforeValue\":\"杭州萧山国际机场\",\n" + + " \"afterValue\":\"杭州西湖风景名胜区\",\n" + + " \"sortIndex\":1,\n" + + " \"orderNo\":\"20231208006000011214\",\n" + + " \"tenantId\":\"test\"\n" + + " },\n" + + " {\n" + + " \"factorCode\":\"way_point\",\n" + + " \"factorName\":\"途径点\",\n" + + " \"afterValue\":\"杭州萧山国际机场\",\n" + + " \"sortIndex\":2,\n" + + " \"orderNo\":\"20231208006000011214\",\n" + + " \"tenantId\":\"test\"\n" + + " }\n" + + " ],\n" + + " \"tenantId\":\"test\"\n" + + " }\n" + + " ],\n" + + " \"orderChangeApplicant\":{\n" + + " \"applicantNo\":\"21857\",\n" + + " \"applicantName\":\"18191253790\"\n" + + " },\n" + + " \"tenantId\":\"test\"\n" + + "}"; + TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO = JSONObject.parseObject(applyJson, TpOrderChangeApplyCreatedDTO.class); + Boolean createFlag = tpOrderChangedDomainService.createOrderChangeApply(orderChangeApplyCreatedDTO); + Assert.isTrue(createFlag,"创建申请单失败"); + + } + + @Test + public void getOrderChangeApplyDetailTest() { + TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO = new TpOrderChangeApplyDetailDTO(); +// orderChangeApplyQueryDTO.setOrderNo("20231212006000011421"); + orderChangeApplyQueryDTO.setOrderNo("20240122006000034026"); + orderChangeApplyQueryDTO.setApplyType(TpOrderChangeTypeEnum.ORDER_CHANGE.getType()); + orderChangeApplyQueryDTO.setTenantId("21"); + TpOrderChangeApply tpOrderChangeApply = tpOrderChangedDomainService.getOrderChangedApplyDetail(orderChangeApplyQueryDTO); + Assert.notNull(tpOrderChangeApply,"该订单没有申请单"); + System.err.println(JSON.toJSONString(tpOrderChangeApply)); + + TpResult orderChangeApplyVOs = tpOrderChangedFacade.getOrderChangedApplyDetail(orderChangeApplyQueryDTO); + Assert.notNull(orderChangeApplyVOs,"该订单没有申请单"); + System.err.println(JSON.toJSONString(orderChangeApplyVOs)); + + } + + @Test + public void getLatestOrderChangeApplyDetailTest() { + TpOrderChangeApplyLatestDetailDTO orderChangeApplyQueryDTO = new TpOrderChangeApplyLatestDetailDTO(); + orderChangeApplyQueryDTO.setOriginalOrderNo("20240220006000037023"); +// orderChangeApplyQueryDTO.setOrderNo("20240220006000037023"); + orderChangeApplyQueryDTO.setApplyTypes(Arrays.asList(TpOrderChangeTypeEnum.ORDER_CHANGE.getType(),TpOrderChangeTypeEnum.ORDER_CANCEL.getType())); + orderChangeApplyQueryDTO.setTenantId("1000293"); + TpOrderChangeApply tpOrderChangeApply = tpOrderChangedDomainService.getLatestOrderChangedApplyDetail(orderChangeApplyQueryDTO); + Assert.notNull(tpOrderChangeApply,"该订单没有申请单"); + System.err.println(JSON.toJSONString(tpOrderChangeApply)); + + TpResult orderChangeApplyVOs = tpOrderChangedFacade.getLatestOrderChangedApplyDetail(orderChangeApplyQueryDTO); + Assert.notNull(orderChangeApplyVOs,"该订单没有申请单"); + System.err.println(JSON.toJSONString(orderChangeApplyVOs)); + + } + + @Test + public void batchQueryOrderChangeApplyByOrderNosTest() { + TpOrderChangeApplyBatchListDTO orderChangeApplyQueryDTO = new TpOrderChangeApplyBatchListDTO(); +// orderChangeApplyQueryDTO.setOrderNos(Arrays.asList("20231212006000011421")); + orderChangeApplyQueryDTO.setOriginalOrderNos(Arrays.asList("20231212006000011421")); + orderChangeApplyQueryDTO.setTenantId("test"); + List orderChangeApplies = tpOrderChangedDomainService.batchQueryOrderChangeApplyByOrderNos(orderChangeApplyQueryDTO); + Assert.notNull(orderChangeApplies,"该订单没有申请单"); + System.err.println(JSON.toJSONString(orderChangeApplies)); + + } + + + @Test + public void listOrderChangeApplyTest() { + TpOrderChangeApplyListDTO orderChangeApplyQueryDTO = new TpOrderChangeApplyListDTO(); +// orderChangeApplyQueryDTO.setOrderNo("20231212006000011421"); + orderChangeApplyQueryDTO.setOriginalOrderNo("20231212006000011421"); + orderChangeApplyQueryDTO.setApplyTypes(Arrays.asList(TpOrderChangeTypeEnum.ORDER_CHANGE.getType(),TpOrderChangeTypeEnum.ORDER_CANCEL.getType())); + orderChangeApplyQueryDTO.setTenantId("test"); + + TpResult> orderChangeApplyVOs = tpOrderChangedFacade.listOrderChangeApply(orderChangeApplyQueryDTO); + Assert.notNull(orderChangeApplyVOs,"该订单没有申请单"); + System.err.println(JSON.toJSONString(orderChangeApplyVOs)); + + } + + + +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchDomainServiceTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchDomainServiceTest.java new file mode 100644 index 0000000..e06646d --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchDomainServiceTest.java @@ -0,0 +1,105 @@ +package com.deepinnet.tptradecore.core.service.order; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditCreatedDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpOrderAuditListQueryDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchCallBackDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchFleetCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchGiveBackDTO; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditBizObjectTypeEnum; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditTypeEnum; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import com.deepinnet.tptradecore.core.service.audit.TpAuditDomainService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +import java.util.Arrays; +import java.util.List; + +/** + *

+ * 审核领域服务测试类 + *

+ * + * @author chenjiaju + * @since 2023/7/28 + */ +@SpringBootTest +//@ActiveProfiles("local") +@TestPropertySource(properties = { + "spring.profiles.active=local","alipay.returnUrl=test" +}) +public class TpOrderDispatchDomainServiceTest { + + @Autowired + private TpOrderDispatchDomainService tpOrderDispatchDomainService; + + @Test + public void dispatchFleetTest() { + TpOrderDispatchFleetCreatedDTO tpAuditCreatedDTO = new TpOrderDispatchFleetCreatedDTO(); + tpAuditCreatedDTO.setDispatchNo("20231206015000000334"); + tpAuditCreatedDTO.setOrderNo("20231206006000011112"); + tpAuditCreatedDTO.setTenantId("test"); + tpAuditCreatedDTO.setTargetFleetNo("5111"); + Boolean createFlag = tpOrderDispatchDomainService.dispatchFleet(tpAuditCreatedDTO); + Assert.isTrue(createFlag,"指派车队失败"); + + } + + @Test + public void dispatchOrderTest() { + String dispatchJson = "{\"originalOrderNo\":\"20231209006000011249\",\"dispatchScene\":\"user_create_order\",\"dispatchTime\":1702102001294,\"dispatchStatus\":10,\"originOrgNo\":\"21\",\"originOrgName\":\"杭州公交集团公司\",\"originOrgType\":\"0\",\"targetOrgNo\":\"21\",\"targetOrgName\":\"杭州公交集团公司\",\"targetOrgType\":\"0\",\"operatorNo\":\"sysadmin\",\"operatorName\":\"sysadmin\",\"tenantId\":\"test\"}"; + TpOrderDispatchCreatedDTO tpOrderDispatch = JSONUtil.toBean(dispatchJson,TpOrderDispatchCreatedDTO.class); + Boolean createFlag = tpOrderDispatchDomainService.dispatchOrder(tpOrderDispatch); + Assert.isTrue(createFlag,"派单失败"); + + } + + @Test + public void getDispatchOrderTest() { + String orderNo = "20231218006000013336"; + String tenantId = "1000293"; + List statuses = Arrays.asList(20); + + TpOrderDispatch orderDispatch = tpOrderDispatchDomainService.getDispatchOrder(tenantId,null,orderNo,statuses); + Assert.notNull(orderDispatch,"派单失败"); + + } + + @Test + public void giveBackOrderTest() { + TpOrderDispatchGiveBackDTO tpAuditCreatedDTO = new TpOrderDispatchGiveBackDTO(); + tpAuditCreatedDTO.setDispatchNo("20231211015000001011"); + tpAuditCreatedDTO.setOriginalOrderNo("20231211006000011340"); + tpAuditCreatedDTO.setGiveBackTime(DateUtil.current()); + tpAuditCreatedDTO.setTenantId("test"); + Boolean createFlag = tpOrderDispatchDomainService.giveBackOrder(tpAuditCreatedDTO); + Assert.isTrue(createFlag,"退单失败"); + + } + + @Test + public void callBackOrderTest() { + TpOrderDispatchCallBackDTO tpAuditCreatedDTO = new TpOrderDispatchCallBackDTO(); + tpAuditCreatedDTO.setDispatchNo("20231211015000001011"); + tpAuditCreatedDTO.setOriginalOrderNo("20231211006000011340"); + tpAuditCreatedDTO.setCallBackTime(DateUtil.current()); + tpAuditCreatedDTO.setTenantId("test"); + Boolean createFlag = tpOrderDispatchDomainService.callBackOrder(tpAuditCreatedDTO); + Assert.isTrue(createFlag,"退单失败"); + + } + + + + + +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchFacadeTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchFacadeTest.java new file mode 100644 index 0000000..8666852 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDispatchFacadeTest.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.JsonUtil; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchDetailDTO; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderDispatchFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +import javax.annotation.Resource; + +/** + * Description: + * Date: 2024/6/14 + * Author: lijunheng + */ +@SpringBootTest +@TestPropertySource(properties = {"spring.profiles.active=local"}) +public class TpOrderDispatchFacadeTest { + + @Resource + private TpOrderDispatchFacade orderDispatchFacade; + + + @Test + public void testGetOrderDispatchDetail() { + TpOrderDispatchDetailDTO dto = new TpOrderDispatchDetailDTO(); + dto.setOriginalOrderNo("20231213006000011487"); + dto.setTenantId("1000293"); + TpResult orderDispatchDetail = orderDispatchFacade.getOrderDispatchDetail(dto); + System.out.println(JsonUtil.toJsonStr(orderDispatchDetail)); + } +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDomainServiceTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDomainServiceTest.java new file mode 100644 index 0000000..8c7b7d5 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpOrderDomainServiceTest.java @@ -0,0 +1,139 @@ +package com.deepinnet.tptradecore.core.service.order; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tptradecore.common.enums.order.TpOrderModulesEnum; +import com.deepinnet.tptradecore.core.model.order.TpBatchQueryOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderQueryList; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +import java.nio.charset.Charset; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 订单领域服务测试类 + *

+ * + * @author chenjiaju + * @since 2023/7/28 + */ +@SpringBootTest +@TestPropertySource(properties = {"spring.profiles.active=local"}) +public class TpOrderDomainServiceTest { + + @Autowired + private TpOrderDomainService tpOrderDomainService; + + private static TpOrder tpCreateOrder; + + private static TpOrder tpSubOrders; + + @BeforeAll + public static void beforeAll() { + Path path = Paths.get("src", "test", "resources", "json"); + String tpOrderJson = FileUtil.readString(path.toAbsolutePath() + "/createOrder.json", Charset.defaultCharset()); + tpCreateOrder = JSONObject.parseObject(tpOrderJson, TpOrder.class); + String tpSubOrdersJson = FileUtil.readString(path.toAbsolutePath() + "/createSubOrders.json", Charset.defaultCharset()); + tpSubOrders = JSONObject.parseObject(tpSubOrdersJson, TpOrder.class); + } + + /** + * 创建订单 + */ + @Test + public void createOrder() { + TpOrder order = tpOrderDomainService.createOrder(tpCreateOrder); + Assertions.assertTrue(ObjectUtil.isNotNull(order)); + } + + /** + * 创建订单(子订单) + */ + @Test + public void createSubOrders() { + TpOrder order = tpOrderDomainService.createOrder(tpSubOrders); + Assertions.assertTrue(ObjectUtil.isNotNull(order)); + } + + /** + * 订单详情查询,按模块查询 + */ + @Test + public void queryOrderDetail(){ + List needModules = new ArrayList<>(); + needModules.add(TpOrderModulesEnum.ORDER_SUBJECT_ITEM); + TpOrder order = tpOrderDomainService.getOrder("test", null,"ORDER001", needModules); + Assertions.assertTrue(ObjectUtil.isNotNull(order)); + } + + /** + * 订单列表 + */ + @Test + public void queryOrderList() { + TpOrderQueryList tpOrderQueryList = new TpOrderQueryList(); + tpOrderQueryList.setTenantId("test"); + tpOrderQueryList.setPageNum(1); + tpOrderQueryList.setPageSize(10); + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.getOrderList(tpOrderQueryList)); + } + + /** + * 超时关单 + */ + @Test + public void closeExpireTimeTest() { + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.closeOrderExpireTime("test", "ORDER001")); + } + + /** + * 定制包车取消订单 + */ + @Test + public void cancelCharterBusTest() { + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.cancelCharterBus("test", "ORDER001")); + } + + /** + * 支付订单状态推进 + */ + @Test + public void payOrderTest() { + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.payOrder("test", "ORDER001", null)); + } + + /** + * 根据线路查询是否有未核销的订单 + */ + @Test + public void queryRouteHasUnverifiedOrderTest() { + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.queryRouteHasUnverifiedOrder("123456", "test")); + } + + /** + * 根据线路、班次查询是否存在未核销的订单 + */ + @Test + public void queryRouteScheduleHasUnverifiedOrderTest() { + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.queryRouteScheduleHasUnverifiedOrder("123456", "438957438", "test")); + } + + @Test + public void batchQueryTest() { + Assertions.assertDoesNotThrow(() -> tpOrderDomainService.batchQueryListByOriginalOrderNos(TpBatchQueryOrder.builder() + .originalOrderNos(ListUtil.toList("20231206006000011107", "20231206006000011115")) + .tenantId("test").build())); + } +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserPassengerDomainServiceTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserPassengerDomainServiceTest.java new file mode 100644 index 0000000..e64d349 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserPassengerDomainServiceTest.java @@ -0,0 +1,74 @@ +package com.deepinnet.tptradecore.core.service.order; +import com.deepinnet.tptradecore.core.model.order.TpUserDelPassengerCondition; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; + +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +/** + *

+ * 乘客信息领域服务测试类 + *

+ * + * @author chenjiaju + * @since 2023/7/28 + */ +@SpringBootTest +@ActiveProfiles("local") +public class TpUserPassengerDomainServiceTest { + + @Autowired + private TpUserPassengerDomainService tpUserPassengerDomainService; + + @Test + public void savePassengerTest() { + TpUserPassenger tpUserPassenger = new TpUserPassenger(); + tpUserPassenger.setUserNo("USER_001"); + tpUserPassenger.setPassengerNo("PASSENGER_001"); + tpUserPassenger.setPassengerType("1"); + tpUserPassenger.setName("juju"); + tpUserPassenger.setIdentityType("001"); + tpUserPassenger.setIdentityNumber("311000199901011111"); + tpUserPassenger.setTenantId("test"); + + Assertions.assertDoesNotThrow(() -> tpUserPassengerDomainService.savePassenger(tpUserPassenger)); + } + + @Test + public void modifyPassenger() { + TpUserPassenger tpUserPassenger = new TpUserPassenger(); + tpUserPassenger.setUserNo("USER_001"); + tpUserPassenger.setPassengerNo("PASSENGER_001"); + tpUserPassenger.setPassengerType("1"); + tpUserPassenger.setName("ccc-ju"); + tpUserPassenger.setIdentityType("001"); + tpUserPassenger.setIdentityNumber("311000199901011111"); + tpUserPassenger.setTenantId("test"); + + Assertions.assertDoesNotThrow(() -> tpUserPassengerDomainService.modifyPassenger(tpUserPassenger)); + } + + @Test + public void getPassengerListTest() { + TpUserPassengerCondition tpUserPassengerCondition = new TpUserPassengerCondition(); + tpUserPassengerCondition.setUserNo("USER_001"); + tpUserPassengerCondition.setTenantId("test"); + + Assertions.assertDoesNotThrow(() -> tpUserPassengerDomainService.getPassengerList(tpUserPassengerCondition)); + } + + @Test + public void delPassenger() { + TpUserDelPassengerCondition tpUserDelPassengerCondition = new TpUserDelPassengerCondition(); + tpUserDelPassengerCondition.setUserNo("USER_001"); + tpUserDelPassengerCondition.setPassengerNo("PASSENGER_001"); + tpUserDelPassengerCondition.setTenantId("test"); + + Assertions.assertDoesNotThrow(() -> tpUserPassengerDomainService.delPassenger(tpUserDelPassengerCondition)); + } + +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserRouteCollectionDomainServiceTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserRouteCollectionDomainServiceTest.java new file mode 100644 index 0000000..21d1340 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpUserRouteCollectionDomainServiceTest.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollectionCondition; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +/** + *

+ * 线路收集领域服务测试类 + *

+ * + * @author chenjiaju + * @since 2023/7/28 + */ +@SpringBootTest +@ActiveProfiles("local") +public class TpUserRouteCollectionDomainServiceTest { + + @Autowired + private TpUserRouteCollectionDomainService tpUserRouteCollectionDomainService; + + @Test + public void saveRouteCollectionTest() { + TpUserRouteCollection tpUserRouteCollection = new TpUserRouteCollection(); + tpUserRouteCollection.setUserNo("ORDER001"); + tpUserRouteCollection.setUpLocation("东京"); + tpUserRouteCollection.setUpLocationLng("120.8934"); + tpUserRouteCollection.setUpLocationLat("32.9846"); + tpUserRouteCollection.setDownLocation("北京"); + tpUserRouteCollection.setDownLocationLng("125.6745"); + tpUserRouteCollection.setDownLocationLat("35.6782"); + tpUserRouteCollection.setExpectArriveTime("2024-01-01 00:00:00"); + tpUserRouteCollection.setExpectBackTime("2024-01-01 06:00:00"); + tpUserRouteCollection.setTravelPurpose("上班"); + tpUserRouteCollection.setTenantId("test"); + tpUserRouteCollectionDomainService.collectRoute(tpUserRouteCollection); + } + + @Test + public void queryListTest() { + TpUserRouteCollectionCondition tpUserRouteCollectionCondition = new TpUserRouteCollectionCondition(); + tpUserRouteCollectionCondition.setTenantId("test"); + Assertions.assertDoesNotThrow(() -> tpUserRouteCollectionDomainService.getCollectionRouteList(tpUserRouteCollectionCondition)); + } + +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpWechatV3ConfigTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpWechatV3ConfigTest.java new file mode 100644 index 0000000..8bf5864 --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/TpWechatV3ConfigTest.java @@ -0,0 +1,81 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.common.service.integration.config.TpWechatPayConfig; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +/** + * @author amos wong + * @create 2023/11/20 10:39 + * @Description + */ +@SpringBootTest +@ActiveProfiles("local") +public class TpWechatV3ConfigTest { + + @Test + public void getWechatPayConfig() { + TpWechatPayConfig wechatPayConfig = new TpWechatPayConfig(); + wechatPayConfig.setAppId("wx63bcbd1ee3143658"); + wechatPayConfig.setMchId("1658735192"); + //wechatPayConfig.setPayNotifyUrl("https://test.deepinnet.com/tptradecore/wechat/pay/callback"); + wechatPayConfig.setPayNotifyUrl("https://deepinnet-callback.vip.cpolar.cn/wechat/pay/callback"); + wechatPayConfig.setRefundNotifyUrl("https://deepinnet-callback.vip.cpolar.cn/wechat/refund/callback"); + wechatPayConfig.setSerialNo("1145A15B95F7A3B3F2888DCFA94BC71474C68B50"); + wechatPayConfig.setPlatSerialNo("30784F90AEF14CB3EE383094878F6247AA3747D7"); + wechatPayConfig.setApiKey("Shenduzhilian168188Shenduzhilian"); + wechatPayConfig.setCertificate("-----BEGIN CERTIFICATE-----\n" + + "MIIEFDCCAvygAwIBAgIUMHhPkK7xTLPuODCUh49iR6o3R9cwDQYJKoZIhvcNAQEL\n" + + "BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT\n" + + "FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg\n" + + "Q0EwHhcNMjMxMTA3MDkxMTI1WhcNMjgxMTA1MDkxMTI1WjBuMRgwFgYDVQQDDA9U\n" + + "ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl\n" + + "bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGDAJDTjERMA8GA1UEBwwIU2hlblpo\n" + + "ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzuI4U+RVrlRQ3pVRH\n" + + "Uy4Q9/pPS8KmKgZ/PqTHYLRR4JTibYXg+RTUvY4nC8gLwX8IaE72Nbiv3COXfPk8\n" + + "8DlRnVEvqneZ9q2sTdcCCbMApkylnhpR25+x5Cha/uJDC5o54ThXPQngCtoWZSzV\n" + + "LI60WIB1ti3uQQVg2AVcPz1fxJLxs06Hjn+Qkq3O0GyxnQndKJI0LVwFyVKkXLsm\n" + + "3hD6YhN5pP/7mx8OznMLH01FatSQyJIqWSXLUN8zfkhdLDYBcnvG7MZNkKiRLcDN\n" + + "7UgymalAVAlUw4jLkOIehOlY1boM4aTMhzYX4R22OgIcnL8wGyLzhjNNmY7HNwZY\n" + + "XK6rAgMBAAGjgbkwgbYwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gwgZsGA1UdHwSB\n" + + "kzCBkDCBjaCBiqCBh4aBhGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMv\n" + + "aXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4\n" + + "RUJEMiZzZz1IQUNDNDcxQjY1NDIyRTEyQjI3QTlEMzNBODdBRDFDREY1OTI2RTE0\n" + + "MDM3MTANBgkqhkiG9w0BAQsFAAOCAQEAXlmlrufIMaYwj3Hc4oKRQIIs18kxTArz\n" + + "1m6Wrri8OX0gq2A3rsWmyejWKlJ+kEEwiREbOqm25y2OktQZwoSZvcyliwGltBQ6\n" + + "F3jvybnq4hcfFtFZQVSLSeyxEnaRbFnzKkNI7E7UJCSa+CgQWXdDgCCOM3AiEN7C\n" + + "sLmsdDpPszUpTAXrf/27WDJb1xGnLYhYH+rW/grN39RjazDE2MPXQ4xPC+mLSv34\n" + + "qONxX4UxhDij+wlvU8KpcH1rHiE/mZNQdN0nouq/l+5tSBfVREIWqXTsOumA8qyk\n" + + "2GruLEwUiwL3Ffo04dcmp9SVFIQTAMju/T4QgkXFJI9cy167wdCqWg==\n" + + "-----END CERTIFICATE-----"); + wechatPayConfig.setPrivateKey("-----BEGIN PRIVATE KEY-----\n" + + "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtbfwLE5cgg78z\n" + + "9f4lqkfD+AfhHqKM0Q173HcEmWYof6b6SvhcqxVCvEj3UAyh6Aq6Cf/aoFighMxv\n" + + "MnbKXi+WWSfWHwZA9BY7gjP/jnlH6ihlKJgecn7N8jeLAuc23R9LSocn7hNFklEh\n" + + "C9SUV2gmej42n0F8bTTMCOb2NqyjhUOq8tnnUzKg98RVyu8YgRMmH1yZiZxUM/1C\n" + + "J6LNCg0qyd4Z4Cs/psVYFDJnE5js2ttORI0ersFpuXpvqCBLlTJ5m4mmTTcY4qe6\n" + + "Ui4WWHtQWcEu4bFsJrXyRYtfFqVAHtTtTI/PFWUhZKv1VagoRqtkIip4EggwJ2+0\n" + + "Dux12nb5AgMBAAECggEBAIbVY4cZC/3zb8vuDFEsOe9Z/oY/UxE31svdc4rX2FzU\n" + + "IfWmI8GoITdpOzFLwwZ9aRmKfKh00XK6zFYHXeOnpke1uQr3w9zr5/0MFXEyS4hl\n" + + "vFIpZVsGmR90mUoyT6CP+ayHnNymc8U7JGgU0okiC48eqw+8cSVToiCfKzFxAHd/\n" + + "9IxB/gSsXXYWKRlhcPcMfjlerl9Wgk5Bxw5Hs2wNTf3QzM5FKbmuJp6cHR7YSxIX\n" + + "tv2aZCcd1qIzXD3IzF7wClHnnnEPRV/arzyL8FrrmKhtQhh85AHZgQdLL8jnXlJ6\n" + + "rYJO9YR5ganTYJoDoO5beH2/5bIxs+VhtCDeLABVMAECgYEA13Gkv2uOFU50qx5V\n" + + "mX9MzAT3v9pyH8hgFaJBmG7uzpXDVCVgF9QqWMtyVdz4MJ+uLFbFBYM/woSNrmwZ\n" + + "zTfDXA/SZyQQaG4x/QXZ318EIGPxDy2s62lJSMPoc11/SN2o9stqMGowntBFTgNb\n" + + "y1Y1npdSO0+MdY4C+0a5oE2GBUECgYEAzhOmZlZqyU2XFFCwFlRdDIlQkm0mgtUz\n" + + "5zjtEOaGCA/8t9yx9R5u9REZqcI7WkLzeyENcsdbOy/iDCirp+O5g3ENGi9eGKtp\n" + + "zuJQ7qgTbDon7dNjqHlzqOgKvU5yoHcTRSqfz6QBFMKbZUYVD0FDYSmerauuGT//\n" + + "v9wO2heu67kCgYAhoF47dlkd4Dn7f2eS5rig22Gj8z9+0HKWzdV5Kk9htSRgnNjL\n" + + "v1TAuThmSHAAftvblct4mcy42qGWiM7aJgr68ok/ifR5qEFrIZ+o6palS5QTb2ie\n" + + "8bb7gYBliUFVqSs3Ifa4Ccr+7rjyfTm1mgYSc8Hk+fyNWJYEjDxq1c7GQQKBgQCj\n" + + "Slq+GJfBLuQZyt3cs7iPaHcZr7emT/4yp57hl2h5FwHvRscULatKMOSe6TNSkF6S\n" + + "IFyhqGoX+hcp/0gVXpLvHjN9ni73aUwMDLSIh1HsniBpiOkc5C/LlSJ9Yp3dnLz+\n" + + "P4omZBQfOR0dIG0ri1EyumHrx2/KvjWO93YlRkLqsQKBgDQ0iwHAPXWLPltCIeqr\n" + + "Ry0quo5Kh0yOM4bM2q2jxCAO7mVgdDGeu9iOTZS1VdCKbLy9La9jftll3FrPvLXM\n" + + "eakMEjK7qlQfZKP3sq76bM7UpcFVmUVCjv4tPCKMoROx+4kTEXyRaEtfo2JSN3CH\n" + + "7ljBSpmgSUKnHxdDyjkeqfmx\n" + + "-----END PRIVATE KEY-----\n"); + } +} diff --git a/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/VerifySignatureAndDecryptTest.java b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/VerifySignatureAndDecryptTest.java new file mode 100644 index 0000000..c5596bb --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com.deepinnet.tptradecore.core.service.order/VerifySignatureAndDecryptTest.java @@ -0,0 +1,102 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.service.integration.config.TpWechatPayConfig; +import com.ijpay.core.kit.WxPayKit; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.io.*; + +/** + * @author amos wong + * @create 2023/11/17 14:43 + * @Description + */ +@SpringBootTest +@ActiveProfiles("local") +public class VerifySignatureAndDecryptTest { + + @Test + public void testVerifySignature() throws Exception { + TpWechatPayConfig wechatPayConfig = getWechatPayConfig(); + + String serialNo = "30784F90AEF14CB3EE383094878F6247AA3747D7"; + String encryptData = "{\"id\":\"16d4f48a-302a-5d9b-8091-d7c64e10a5fb\",\"create_time\":\"2023-11-17T14:57:03+08:00\",\"resource_type\":\"encrypt-resource\",\"event_type\":\"TRANSACTION.SUCCESS\",\"summary\":\"支付成功\",\"resource\":{\"original_type\":\"transaction\",\"algorithm\":\"AEAD_AES_256_GCM\",\"ciphertext\":\"cB3g4Etq2gz55524dOh20fK6LV0ZQ2a1jVsA7Jzi9URrP6jd7OD04loIqNh7M93ZPQSBVGtblAIbAZGj1dMAM0wT6V25tRepJTf07URdJz1Zqdq7Bb5MjIh3vP1TcgoC+4cm3AWxOOpMdK16v9U5yphm145wPYTmEZGfwhnSgljN6xGQFcnalMrbPXo2AC4WFx5aV4ouiXrkc3zBmV1jbxQyZN16BOMER1fHPQ1bIRHyxM8jR+iisDiIGt3itRCCXPa6L8XOMdz9qorEQj41QojIsaOj5SRb4r0ywiN068zExx69OR7YaVrjAA8xManAG4ILAaQY43stImW6WzKmWPUUbOI3Rmhlhs+2B9TsBARz9l3gYp077hv0ufmQ9mbyML/ahWwZ2ppxHs0E9LYVY07GCKMBM2sbzWYp+PbMHkfde92dNistHzhcWIki5QI7i7Nkss0ELK++zHBw9Yft/cddN1NH3uEgtKPQOQobgOwniKcS/5P0Wqasrw6nEnOoawlCUGuyCTg5MmMizNVXIqcT02/zj7v/Ptn7BwsC1MWE91evq42rcO/nGeT8FwPgF14vtwh/iMeiFNM7Xwkfrbzfp9mfExNvHSud0v6mQOH/IA==\",\"associated_data\":\"transaction\",\"nonce\":\"iV2lnWPDXilJ\"}}"; + String signature = "Rlw4HJHHtCBjLyhHZ/UEbI3zF1PeF+GYhyHe87L6+GYOqk/cXSSMSah7J/pIRbfDOZtf6RAf0e2boQqmuISBxAuhloDu5AtdfOaN7rRcDiSmr2XrbIR5bsYxMDHFdB0HBayQ/yIJ/QaWb9RGaiJbs8gxkCg5FyQ7lP2i0EJrMC3USi0t8MoP7ku4N3luHOUQS+Pf6x3GNfPBRIbdc0TKMpTQslHcdkxirS5m48p5InmiPlT4gskOOcTQL0E/Qp56DBSxkLwMk8vmZAJB1EpumgI/d/olkFiVnJzoYuFe28PZ75bNtKpQ2ThERVuyEKX58Qd+rFaLEhOtovhdHACVbQ="; + String nonce = "SsnDazxpxAPXnyFMe5kBwHk82rYJ4Cfa"; + String timestamp = "1700204223"; + InputStream certInputStream = new ByteArrayInputStream(wechatPayConfig.getCertificate().getBytes()); + LogUtil.info("certificate:{}, apiV3Key:{}, certInputStream:{}", wechatPayConfig.getCertificate(), wechatPayConfig.getApiKey(), certInputStream); + String plainText = WxPayKit.verifyNotify(serialNo, encryptData, signature, nonce, timestamp, + wechatPayConfig.getApiKey(), certInputStream); + System.out.println(plainText); + } + + private TpWechatPayConfig getWechatPayConfig() { + TpWechatPayConfig wechatPayConfig = new TpWechatPayConfig(); + wechatPayConfig.setAppId("wx63bcbd1ee3143658"); + wechatPayConfig.setMchId("1658735192"); + //wechatPayConfig.setPayNotifyUrl("https://test.deepinnet.com/tptradecore/wechat/pay/callback"); + wechatPayConfig.setPayNotifyUrl("https://deepinnet-callback.vip.cpolar.cn/wechat/pay/callback"); + wechatPayConfig.setRefundNotifyUrl("https://deepinnet-callback.vip.cpolar.cn/wechat/refund/callback"); + wechatPayConfig.setSerialNo("1145A15B95F7A3B3F2888DCFA94BC71474C68B50"); + wechatPayConfig.setPlatSerialNo("30784F90AEF14CB3EE383094878F6247AA3747D7"); + wechatPayConfig.setApiKey("Shenduzhilian168188Shenduzhilian"); + wechatPayConfig.setCertificate("-----BEGIN CERTIFICATE-----\n" + + "MIIEFDCCAvygAwIBAgIUMHhPkK7xTLPuODCUh49iR6o3R9cwDQYJKoZIhvcNAQEL\n" + + "BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT\n" + + "FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg\n" + + "Q0EwHhcNMjMxMTA3MDkxMTI1WhcNMjgxMTA1MDkxMTI1WjBuMRgwFgYDVQQDDA9U\n" + + "ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl\n" + + "bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGDAJDTjERMA8GA1UEBwwIU2hlblpo\n" + + "ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzuI4U+RVrlRQ3pVRH\n" + + "Uy4Q9/pPS8KmKgZ/PqTHYLRR4JTibYXg+RTUvY4nC8gLwX8IaE72Nbiv3COXfPk8\n" + + "8DlRnVEvqneZ9q2sTdcCCbMApkylnhpR25+x5Cha/uJDC5o54ThXPQngCtoWZSzV\n" + + "LI60WIB1ti3uQQVg2AVcPz1fxJLxs06Hjn+Qkq3O0GyxnQndKJI0LVwFyVKkXLsm\n" + + "3hD6YhN5pP/7mx8OznMLH01FatSQyJIqWSXLUN8zfkhdLDYBcnvG7MZNkKiRLcDN\n" + + "7UgymalAVAlUw4jLkOIehOlY1boM4aTMhzYX4R22OgIcnL8wGyLzhjNNmY7HNwZY\n" + + "XK6rAgMBAAGjgbkwgbYwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gwgZsGA1UdHwSB\n" + + "kzCBkDCBjaCBiqCBh4aBhGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMv\n" + + "aXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4\n" + + "RUJEMiZzZz1IQUNDNDcxQjY1NDIyRTEyQjI3QTlEMzNBODdBRDFDREY1OTI2RTE0\n" + + "MDM3MTANBgkqhkiG9w0BAQsFAAOCAQEAXlmlrufIMaYwj3Hc4oKRQIIs18kxTArz\n" + + "1m6Wrri8OX0gq2A3rsWmyejWKlJ+kEEwiREbOqm25y2OktQZwoSZvcyliwGltBQ6\n" + + "F3jvybnq4hcfFtFZQVSLSeyxEnaRbFnzKkNI7E7UJCSa+CgQWXdDgCCOM3AiEN7C\n" + + "sLmsdDpPszUpTAXrf/27WDJb1xGnLYhYH+rW/grN39RjazDE2MPXQ4xPC+mLSv34\n" + + "qONxX4UxhDij+wlvU8KpcH1rHiE/mZNQdN0nouq/l+5tSBfVREIWqXTsOumA8qyk\n" + + "2GruLEwUiwL3Ffo04dcmp9SVFIQTAMju/T4QgkXFJI9cy167wdCqWg==\n" + + "-----END CERTIFICATE-----"); + wechatPayConfig.setPrivateKey("-----BEGIN PRIVATE KEY-----\n" + + "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtbfwLE5cgg78z\n" + + "9f4lqkfD+AfhHqKM0Q173HcEmWYof6b6SvhcqxVCvEj3UAyh6Aq6Cf/aoFighMxv\n" + + "MnbKXi+WWSfWHwZA9BY7gjP/jnlH6ihlKJgecn7N8jeLAuc23R9LSocn7hNFklEh\n" + + "C9SUV2gmej42n0F8bTTMCOb2NqyjhUOq8tnnUzKg98RVyu8YgRMmH1yZiZxUM/1C\n" + + "J6LNCg0qyd4Z4Cs/psVYFDJnE5js2ttORI0ersFpuXpvqCBLlTJ5m4mmTTcY4qe6\n" + + "Ui4WWHtQWcEu4bFsJrXyRYtfFqVAHtTtTI/PFWUhZKv1VagoRqtkIip4EggwJ2+0\n" + + "Dux12nb5AgMBAAECggEBAIbVY4cZC/3zb8vuDFEsOe9Z/oY/UxE31svdc4rX2FzU\n" + + "IfWmI8GoITdpOzFLwwZ9aRmKfKh00XK6zFYHXeOnpke1uQr3w9zr5/0MFXEyS4hl\n" + + "vFIpZVsGmR90mUoyT6CP+ayHnNymc8U7JGgU0okiC48eqw+8cSVToiCfKzFxAHd/\n" + + "9IxB/gSsXXYWKRlhcPcMfjlerl9Wgk5Bxw5Hs2wNTf3QzM5FKbmuJp6cHR7YSxIX\n" + + "tv2aZCcd1qIzXD3IzF7wClHnnnEPRV/arzyL8FrrmKhtQhh85AHZgQdLL8jnXlJ6\n" + + "rYJO9YR5ganTYJoDoO5beH2/5bIxs+VhtCDeLABVMAECgYEA13Gkv2uOFU50qx5V\n" + + "mX9MzAT3v9pyH8hgFaJBmG7uzpXDVCVgF9QqWMtyVdz4MJ+uLFbFBYM/woSNrmwZ\n" + + "zTfDXA/SZyQQaG4x/QXZ318EIGPxDy2s62lJSMPoc11/SN2o9stqMGowntBFTgNb\n" + + "y1Y1npdSO0+MdY4C+0a5oE2GBUECgYEAzhOmZlZqyU2XFFCwFlRdDIlQkm0mgtUz\n" + + "5zjtEOaGCA/8t9yx9R5u9REZqcI7WkLzeyENcsdbOy/iDCirp+O5g3ENGi9eGKtp\n" + + "zuJQ7qgTbDon7dNjqHlzqOgKvU5yoHcTRSqfz6QBFMKbZUYVD0FDYSmerauuGT//\n" + + "v9wO2heu67kCgYAhoF47dlkd4Dn7f2eS5rig22Gj8z9+0HKWzdV5Kk9htSRgnNjL\n" + + "v1TAuThmSHAAftvblct4mcy42qGWiM7aJgr68ok/ifR5qEFrIZ+o6palS5QTb2ie\n" + + "8bb7gYBliUFVqSs3Ifa4Ccr+7rjyfTm1mgYSc8Hk+fyNWJYEjDxq1c7GQQKBgQCj\n" + + "Slq+GJfBLuQZyt3cs7iPaHcZr7emT/4yp57hl2h5FwHvRscULatKMOSe6TNSkF6S\n" + + "IFyhqGoX+hcp/0gVXpLvHjN9ni73aUwMDLSIh1HsniBpiOkc5C/LlSJ9Yp3dnLz+\n" + + "P4omZBQfOR0dIG0ri1EyumHrx2/KvjWO93YlRkLqsQKBgDQ0iwHAPXWLPltCIeqr\n" + + "Ry0quo5Kh0yOM4bM2q2jxCAO7mVgdDGeu9iOTZS1VdCKbLy9La9jftll3FrPvLXM\n" + + "eakMEjK7qlQfZKP3sq76bM7UpcFVmUVCjv4tPCKMoROx+4kTEXyRaEtfo2JSN3CH\n" + + "7ljBSpmgSUKnHxdDyjkeqfmx\n" + + "-----END PRIVATE KEY-----\n"); + + return wechatPayConfig; + } +} diff --git a/tptradecore-app-starter/src/test/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImplTest.java b/tptradecore-app-starter/src/test/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImplTest.java new file mode 100644 index 0000000..087534d --- /dev/null +++ b/tptradecore-app-starter/src/test/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImplTest.java @@ -0,0 +1,420 @@ +package com.deepinnet.tptradecore.core.service.trans.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.deepinnet.tptradecore.common.dal.condition.trans.UpdatePayOrderCondition; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpBillRepository; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpChargeRepository; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpFinancialAccountRepository; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpPayOrderRepository; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.trans.TpPayOrderStatusEnum; +import com.deepinnet.tptradecore.common.enums.trans.TpPayTypeEnum; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.dto.TpPayResultDTO; +import com.deepinnet.tptradecore.common.service.integration.dto.TpRefundResultDTO; +import com.deepinnet.tptradecore.common.service.integration.strategy.AlipayStrategy; +import com.deepinnet.tptradecore.common.service.integration.strategy.PayStrategy; +import com.deepinnet.tptradecore.core.model.trans.TpBill; +import com.deepinnet.tptradecore.core.model.trans.TpCharge; +import com.deepinnet.tptradecore.core.model.trans.TpFinancialAccount; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import com.google.common.collect.Lists; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.*; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.support.TransactionTemplate; + +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * Creator zengjuerui + * Date 2023-12-28 + **/ + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +public class TpPayOrderDomainServiceImplTest { + + @InjectMocks + private TpPayOrderDomainServiceImpl tpPayOrderDomainService; + @Mock + private TpPayOrderRepository payOrderRepository; + @Mock + private TpBillRepository billRepository; + @Mock + private TpChargeRepository chargeRepository; + @Mock + private TpFinancialAccountRepository financialAccountRepository; + @Spy + private TransactionTemplate tpTransactionTemplate; + @Mock + private PlatformTransactionManager platformTransactionManager; + @Mock + private Map payStrategyMap; + + @BeforeEach + public void setUp() { + tpTransactionTemplate = new TransactionTemplate(platformTransactionManager); + tpPayOrderDomainService = new TpPayOrderDomainServiceImpl(); + + MockitoAnnotations.openMocks(this); + } + + @Test + public void testCreatePayOrder() { + TpPayOrder payOrder = mock(TpPayOrder.class); + TpBill tpBill = new TpBill(); + TpFinancialAccount payeeAccount = new TpFinancialAccount(); + TpFinancialAccount payerAccount = new TpFinancialAccount(); + TpCharge tpCharge = new TpCharge(); + + when(payOrder.getTpBill()).thenReturn(tpBill); + when(payOrder.getPayeeAccount()).thenReturn(payeeAccount); + when(payOrder.getPayerAccount()).thenReturn(payerAccount); + when(payOrder.getTpCharge()).thenReturn(tpCharge); + + tpPayOrderDomainService.createPayOrder(payOrder); + verify(payOrderRepository).save(payOrder); + verify(billRepository).save(tpBill); + verify(financialAccountRepository).batchSave(Lists.newArrayList(payeeAccount, payerAccount)); + verify(chargeRepository).save(tpCharge); + } + + @Test + public void testQueryPayResult() { + + TpQueryPayResultDTO queryPayResultDTO = mock(TpQueryPayResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.PAID.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.PAID.getCode()); + + mockListPayResult(); + + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.queryPayResult(queryPayResultDTO)); + } + + @Test + public void testQueryPayResult1() { + + TpQueryPayResultDTO queryPayResultDTO = mock(TpQueryPayResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + MockedStatic beanUtilMockedStatic = Mockito.mockStatic(BeanUtil.class); + beanUtilMockedStatic.when(() -> BeanUtil.copyProperties(queryPayResultDTO, TpPayOrderQueryDTO.class)).thenReturn(new TpPayOrderQueryDTO()); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.PAID.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.PAYING.getCode()); + + mockListPayResult(); + + TpPayResultDTO except = mock(TpPayResultDTO.class); + beanUtilMockedStatic.when(() -> BeanUtil.copyProperties(payOrder, TpPayResultDTO.class)) + .thenReturn(except); + + TpPayResultDTO actual = tpPayOrderDomainService.queryPayResult(queryPayResultDTO); + assertEquals(except, actual); + verify(except).setPaySuccess(true); + } + + @Test + public void testQueryPayResult2() { + TpQueryPayResultDTO queryPayResultDTO = mock(TpQueryPayResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUND.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUND.getCode()); + + mockListPayResult(); + + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.queryPayResult(queryPayResultDTO)); + } + + @Test + public void testQueryPayResult3() { + TpQueryPayResultDTO queryPayResultDTO = mock(TpQueryPayResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.PAYING.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.PAYING.getCode()); + + mockListPayResult(); + + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.queryPayResult(queryPayResultDTO)); + } + + @Test + public void testQueryPayResult4() { + TpQueryPayResultDTO queryPayResultDTO = mock(TpQueryPayResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.PAYING.getCode()); + when(payOrder.getPayType()).thenReturn(TpPayTypeEnum.ALIPAY.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUND.getCode()); + + mockListPayResult(); + + AlipayStrategy alipayStrategy = mock(AlipayStrategy.class); + when(payStrategyMap.values()).thenReturn(Lists.newArrayList(alipayStrategy)); + when(alipayStrategy.getPayType()).thenReturn(TpPayTypeEnum.ALIPAY); + tpPayOrderDomainService.afterPropertiesSet(); + + TpPayResultDTO except = mock(TpPayResultDTO.class); + when(alipayStrategy.queryPayResult(any())).thenReturn(except); + when(payOrder.getPayeeAccount()).thenReturn(new TpFinancialAccount()); + when(except.isPaySuccess()).thenReturn(true); + + + TpPayResultDTO actual = tpPayOrderDomainService.queryPayResult(queryPayResultDTO); + + assertEquals(except, actual); + verify(payOrderRepository).updatePayOrderByCondition(any()); + verify(billRepository).updateByCondition(any()); + } + + @Test + public void testQueryRefundResult() { + + TpQueryRefundResultDTO queryRefundResultDTO = mock(TpQueryRefundResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUND.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUND.getCode()); + + mockListPayResult(); + + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.queryRefundResult(queryRefundResultDTO)); + } + + @Test + public void testQueryRefundResult1() { + + TpQueryRefundResultDTO queryRefundResultDTO = mock(TpQueryRefundResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + MockedStatic beanUtilMockedStatic = Mockito.mockStatic(BeanUtil.class); + beanUtilMockedStatic.when(() -> BeanUtil.copyProperties(queryRefundResultDTO, TpRefundResultDTO.class)).thenReturn(new TpPayOrderQueryDTO()); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUND.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUNDING.getCode()); + + mockListPayResult(); + + TpRefundResultDTO except = mock(TpRefundResultDTO.class); + beanUtilMockedStatic.when(() -> BeanUtil.copyProperties(payOrder, TpRefundResultDTO.class)) + .thenReturn(except); + + TpRefundResultDTO actual = tpPayOrderDomainService.queryRefundResult(queryRefundResultDTO); + assertEquals(except, actual); + verify(except).setSuccess(true); + } + + @Test + public void testQueryRefundResult2() { + TpQueryRefundResultDTO queryRefundResultDTO = mock(TpQueryRefundResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.PAID.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.PAID.getCode()); + + mockListPayResult(); + + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.queryRefundResult(queryRefundResultDTO)); + } + + @Test + public void testQueryRefundResult3() { + TpQueryRefundResultDTO queryRefundResultDTO = mock(TpQueryRefundResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(Lists.newArrayList(payOrder, payOrder1)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUNDING.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUNDING.getCode()); + + mockListPayResult(); + + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.queryRefundResult(queryRefundResultDTO)); + } + + @Test + public void testQueryRefundResult4() { + TpQueryRefundResultDTO queryRefundResultDTO = mock(TpQueryRefundResultDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + TpPayOrder payOrder1 = mock(TpPayOrder.class); + TpPayOrder payOrder3 = mock(TpPayOrder.class); + + when(payOrderRepository.listPayOrderByCondition(any())) + .thenReturn(Lists.newArrayList(payOrder, payOrder1)) + .thenReturn(Lists.newArrayList(payOrder3)); + + when(payOrder.getStatus()).thenReturn(TpPayOrderStatusEnum.REFUNDING.getCode()); + when(payOrder.getPayType()).thenReturn(TpPayTypeEnum.ALIPAY.getCode()); + when(payOrder1.getStatus()).thenReturn(TpPayOrderStatusEnum.PAID.getCode()); + + mockListPayResult(); + + AlipayStrategy alipayStrategy = mock(AlipayStrategy.class); + when(payStrategyMap.values()).thenReturn(Lists.newArrayList(alipayStrategy)); + when(alipayStrategy.getPayType()).thenReturn(TpPayTypeEnum.ALIPAY); + tpPayOrderDomainService.afterPropertiesSet(); + + TpRefundResultDTO except = mock(TpRefundResultDTO.class); + when(alipayStrategy.queryRefundResult(any())).thenReturn(except); + when(payOrder.getPayerAccount()).thenReturn(new TpFinancialAccount()); + when(except.isSuccess()).thenReturn(true); + + when(payOrderRepository.getByCondition(any())).thenReturn(new TpPayOrder()); + when(chargeRepository.queryByCondition(any())).thenReturn(new TpCharge()); + + TpRefundResultDTO actual = tpPayOrderDomainService.queryRefundResult(queryRefundResultDTO); + + assertEquals(except, actual); + verify(payOrderRepository).updatePayOrderByCondition(any()); + verify(billRepository).updateByCondition(any()); + verify(chargeRepository).updateByCondition(any()); + } + + @Test + public void testQueryPayOrderList() { + TpPayOrderQueryDTO queryDTO = mock(TpPayOrderQueryDTO.class); + + TpPayOrder payOrder = mock(TpPayOrder.class); + when(payOrder.getPayOrderNo()).thenReturn("pon"); + when(payOrder.getTenantId()).thenReturn("ti"); + + List except = Lists.newArrayList(payOrder); + + when(payOrderRepository.listPayOrderByCondition(any())).thenReturn(except); + + mockListPayResult(); + + List actual = tpPayOrderDomainService.queryPayOrderList(queryDTO); + + assertEquals(except, actual); + } + + @Test + public void testClosePayOrder() { + TpPayOrderCloseDTO closeDTO = mock(TpPayOrderCloseDTO.class); + UpdatePayOrderCondition updateCondition = mock(UpdatePayOrderCondition.class); + + mockStatic(BeanUtil.class) + .when(() -> BeanUtil.copyProperties(closeDTO, UpdatePayOrderCondition.class)) + .thenReturn(updateCondition); + + when(payOrderRepository.updatePayOrderByCondition(any())).thenReturn(true); + + Boolean actual = tpPayOrderDomainService.closePayOrder(closeDTO); + assertTrue(actual); + } + + @Test + public void testUpdatePayOrder() { + TpPayOrderUpdateDTO updateDTO = mock(TpPayOrderUpdateDTO.class); + + mockStatic(BeanUtil.class) + .when(() -> BeanUtil.copyProperties(updateDTO, UpdatePayOrderCondition.class)) + .thenReturn(new UpdatePayOrderCondition()); + + when(payOrderRepository.updatePayOrderByCondition(any())).thenReturn(true); + + assertTrue(tpPayOrderDomainService.updatePayOrder(updateDTO)); + } + + @Test + public void testPaySuccess() { + TpPaySuccessDTO successDTO = mock(TpPaySuccessDTO.class); + assertTrue(tpPayOrderDomainService.paySuccess(successDTO)); + + verify(payOrderRepository).updatePayOrderByCondition(any()); + verify(billRepository).updateByCondition(any()); + } + + @Test + public void testRefundSuccess() { + when(payOrderRepository.getByCondition(any())).thenReturn(null); + assertThrows(TpTradeCoreException.class, () -> tpPayOrderDomainService.refundSuccess(new TpRefundSuccessDTO())); + } + + @Test + public void testRefundSuccess1() { + when(payOrderRepository.getByCondition(any())).thenReturn(new TpPayOrder()); + when(chargeRepository.queryByCondition(any())).thenReturn(null); + + assertTrue(tpPayOrderDomainService.refundSuccess(new TpRefundSuccessDTO())); + verify(payOrderRepository).updatePayOrderByCondition(any()); + verify(billRepository).updateByCondition(any()); + verify(chargeRepository, never()).updateByCondition(any()); + } + + @Test + public void testRefundSuccess2() { + when(payOrderRepository.getByCondition(any())).thenReturn(new TpPayOrder()); + when(chargeRepository.queryByCondition(any())).thenReturn(new TpCharge()); + + assertTrue(tpPayOrderDomainService.refundSuccess(new TpRefundSuccessDTO())); + verify(payOrderRepository).updatePayOrderByCondition(any()); + verify(billRepository).updateByCondition(any()); + verify(chargeRepository).updateByCondition(any()); + } + + private void mockListPayResult() { + TpBill tpBill = mock(TpBill.class); + when(billRepository.listByPayOrderNos(anyList(), any())).thenReturn(Lists.newArrayList(tpBill)); + when(tpBill.getPayOrderNo()).thenReturn("pon"); + + TpCharge tpCharge = mock(TpCharge.class); + when(chargeRepository.listByPayOrderNos(anyList(), any())).thenReturn(Lists.newArrayList(tpCharge)); + when(tpCharge.getPayOrderNo()).thenReturn("pon"); + + + TpFinancialAccount tpFinancialAccount = mock(TpFinancialAccount.class); + when(financialAccountRepository.listByPayOrderNos(anyList(), any())).thenReturn(Lists.newArrayList(tpFinancialAccount)); + when(tpFinancialAccount.getBizNo()).thenReturn("bn"); + } +} diff --git a/tptradecore-app-starter/src/test/resources/json/createOrder.json b/tptradecore-app-starter/src/test/resources/json/createOrder.json new file mode 100644 index 0000000..f1b5635 --- /dev/null +++ b/tptradecore-app-starter/src/test/resources/json/createOrder.json @@ -0,0 +1,148 @@ +{ + "productNo": "CXCP001", + "productName": "彪彪专线", + "ticketType": 1, + "productCategoryNo": "001001", + "productCategory": "校园巴士", + "outRequestNo": "1234567890", + "userNo": "USER001", + "orderNo": "ORDER001", + "main": 1, + "type": 1, + "status": 0, + "quotationNo": "Q001", + "payAmount": "15.50", + "originalAmount": "20.00", + "source": 1, + "identityVerificat": 1, + "orderTime": 1690527870000, + "expireTime": 1722150270000, + "tenantId": "test", + "orderElements": [ + { + "orderNo": "ORDER001", + "elementType": 1, + "elementCode": "E001", + "elementName": "line", + "elementKey": "BUS", + "elementValue": "386", + "tenantId": "test" + }, + { + "orderNo": "ORDER001", + "elementType": 1, + "elementCode": "E002", + "elementName": "lineA", + "elementKey": "BUS", + "elementValue": "386", + "tenantId": "test" + } + ], + "orderPriceRecord": [ + { + "pricingNo": "PRICE001", + "orderNo": "ORDER001", + "pricingAmount": "20.00", + "pricingType": 1, + "pricingParams": "example json", + "tenantId": "test", + "orderDiscounts": [ + { + "pricingNo": "PRICE001", + "orderNo": "ORDER001", + "type": 1, + "discountAmount": "4.50", + "tenantId": "test" + } + ] + } + ], + "orderPlacer": { + "placerNo": "USER001", + "orderNo": "ORDER001", + "placerName": "juju", + "placerContact": "13140000520", + "tenantId": "test" + }, + "orderSubjectItem": [ + { + "itemNo": "ITEM001", + "orderNo": "ORDER001", + "passengerNo": "PASSENGER001", + "name": "线路", + "type": 1, + "count": 1, + "tenantId": "test", + "passenger": { + "passengerNo": "PASSENGER001", + "orderNo": "ORDER001", + "passengerType": 1, + "passengerName": "juju", + "passengerContact": "13140000520", + "tenantId": "test" + }, + "orderItemElements": [ + { + "orderNo": "ORDER001", + "itemNo": "ITEM001", + "elementName": "线路组成要素1", + "elementValue": "386", + "tenantId": "test" + } + ] + } + ], + "orderTravelTrips": [ + { + "tripNo": "TRIP001", + "orderNo": "ORDER001", + "passengerNo": "PASSENGER001", + "pickUpLocationCode": "LOCATION001", + "pickUpLocation": "五常", + "dropOffLocationCode": "LOCATION002", + "dropOffLocation": "西湖", + "startTime": "1693537870000", + "tenantId": "test", + "tripPositions": [ + { + "tripNo": "TRIP001", + "locationCode": "LOCATION001", + "locationName": "五常", + "lng": "34.1233", + "lat": "123.33", + "tenantId": "test" + }, + { + "tripNo": "TRIP001", + "locationCode": "LOCATION002", + "locationName": "西湖", + "lng": "33.1233", + "lat": "124.33", + "tenantId": "test" + } + ] + } + ], + "tpOrderTargetService": { + "orderNo": "ORDER001", + "targetName": "深度智联", + "targetNumber": "91330110MABULXQY2F", + "tenantId": "test" + }, + "tpOrderRoutes": [ + { + "orderNo": "ORDER001", + "routeNo": "ROUTE001", + "routeName": "深度智联定制班车", + "tenantId": "test", + "tpOrderRouteShuttle": { + "orderNo": "ORDER001", + "routeNo": "ROUTE001", + "shuttleNo": "SCHEDULE001", + "shuttleName": "9点班次", + "shuttleTime": "9:00", + "tenantId": "test", + } + } + ] +} \ No newline at end of file diff --git a/tptradecore-app-starter/src/test/resources/json/createSubOrders.json b/tptradecore-app-starter/src/test/resources/json/createSubOrders.json new file mode 100644 index 0000000..3ba51ae --- /dev/null +++ b/tptradecore-app-starter/src/test/resources/json/createSubOrders.json @@ -0,0 +1,183 @@ +{ + "productNo": "CXCP001", + "productCategoryNo": "001001", + "outRequestNo": "1234567890", + "userNo": "USER001", + "orderNo": "ORDER001", + "main": 1, + "type": 1, + "status": 0, + "quotationNo": "Q001", + "payAmount": "15.50", + "originalAmount": "20.00", + "source": 1, + "identityVerificat": 1, + "orderTime": 1690527870000, + "expireTime": 1722150270000, + "tenantId": "test", + "orderElements": [ + { + "orderNo": "ORDER001", + "elementType": 1, + "elementCode": "E001", + "elementName": "line", + "elementKey": "BUS", + "elementValue": "386", + "tenantId": "test", + }, + { + "orderNo": "ORDER001", + "elementType": 1, + "elementCode": "E002", + "elementName": "lineA", + "elementKey": "BUS", + "elementValue": "386", + "tenantId": "test", + } + ], + "orderPriceRecord": [ + { + "pricingNo": "PRICE001", + "orderNo": "ORDER001", + "pricingAmount": "20.00", + "pricingType": 1, + "pricingParams": "example json", + "tenantId": "test", + "orderDiscounts": [ + { + "pricingNo": "PRICE001", + "orderNo": "ORDER001", + "type": 1, + "discountAmount": "4.50", + "tenantId": "test", + } + ] + } + ], + "orderPlacer": { + "orderNo": "ORDER001", + "placerName": "juju", + "placerContact": "13140000520", + "tenantId": "test", + }, + "tpOrderTargetService": { + "orderNo": "ORDER001", + "targetName": "深度智联", + "targetNumber": "91330110MABULXQY2F", + }, + "tpOrderRoutes": [ + { + "orderNo": "ORDER001", + "routeNo": "ROUTE001", + "routeName": "深度智联定制班车", + "tenantId": "test", + "tpOrderRouteShuttle": { + "orderNo": "ORDER001", + "routeNo": "ROUTE001", + "scheduleNo": "SCHEDULE001", + "scheduleName": "9点班次", + "scheduleTime": "9:00", + "tenantId": "test" + } + } + ], + "subOrders":[ + { + "outRequestNo": "1234567890", + "parentOrderNo": "ORDER001", + "productNo": "CXCP001", + "productCategoryNo": "001001", + "userNo": "USER001", + "orderNo": "ORDER002", + "main": 0, + "type": 1, + "status": 0, + "source": 1, + "identityVerificat": 1, + "orderTime": 1690527870000, + "expireTime": 1722150270000, + "tenantId": "test", + "orderSubjectItem": [ + { + "itemNo": "ITEM001", + "orderNo": "ORDER002", + "passengerNo": "PASSENGER001", + "name": "线路", + "type": 1, + "count": 1, + "tenantId": "test", + "passenger": { + "passengerNo": "PASSENGER001", + "orderNo": "ORDER002", + "passengerType": 1, + "passengerName": "juju", + "passengerContact": "13140000520", + "tenantId": "test" + }, + "orderItemElements": [ + { + "orderNo": "ORDER002", + "itemNo": "ITEM001", + "elementName": "线路组成要素1", + "elementValue": "386", + "tenantId": "test" + } + ] + } + ], + "orderTravelTrips": [ + { + "tripNo": "TRIP001", + "orderNo": "ORDER002", + "passengerNo": "PASSENGER001", + "pickUpLocationCode": "LOCATION001", + "pickUpLocation": "五常", + "dropOffLocationCode": "LOCATION002", + "dropOffLocation": "西湖", + "startTime": "1693537870000", + "tenantId": "test", + "tripPositions": [ + { + "tripNo": "TRIP001", + "locationCode": "LOCATION001", + "locationName": "五常", + "lng": "34.1233", + "lat": "123.33", + "tenantId": "test" + }, + { + "tripNo": "TRIP001", + "locationCode": "LOCATION002", + "locationName": "西湖", + "lng": "33.1233", + "lat": "124.33", + "tenantId": "test" + } + ] + } + ], + "tpOrderTargetService": { + "orderNo": "ORDER001", + "targetName": "深度智联", + "targetNumber": "91330110MABULXQY2F", + "tenantId": "test" + }, + "tpOrderRoutes": [ + { + "orderNo": "ORDER001", + "routeNo": "ROUTE001", + "routeName": "深度智联定制班车", + "tenantId": "test", + "tpOrderRouteShuttle": { + "orderNo": "ORDER001", + "routeNo": "ROUTE001", + "shuttleNo": "SCHEDULE001", + "shuttleName": "9点班次", + "shuttleTime": "9:00", + "tenantId": "test" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/tptradecore-biz/pom.xml b/tptradecore-biz/pom.xml new file mode 100644 index 0000000..b089a35 --- /dev/null +++ b/tptradecore-biz/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + + com.deepinnet + tptradecore + 1.0-SNAPSHOT + + + tptradecore-biz + pom + + tptradecore-biz-service-impl + + + diff --git a/tptradecore-biz/tptradecore-biz-service-impl/pom.xml b/tptradecore-biz/tptradecore-biz-service-impl/pom.xml new file mode 100644 index 0000000..66c63bf --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/pom.xml @@ -0,0 +1,98 @@ + + + 4.0.0 + + + com.deepinnet + tptradecore-biz + 1.0-SNAPSHOT + + + tptradecore-biz-service-impl + + + + + com.deepinnet + tptradecore-common-service-integration + + + + com.deepinnet + tptradecore-common-service-facade + + + + com.deepinnet + tptradecore-common-util + + + + com.deepinnet + tptradecore-core-service + + + + org.springframework + spring-tx + + + org.mockito + mockito-core + test + + + com.github.jsonzou + jmockdata + 4.3.0 + test + + + junit + junit + test + + + org.aspectj + aspectjweaver + + + + org.apache.dubbo + dubbo + + + + com.alibaba.fastjson2 + fastjson2 + 2.0.25 + + + + org.redisson + redisson-spring-boot-starter + + + org.redssion + redisson-spring-data-27 + + + + + + org.redisson + redisson-spring-data-26 + + + com.deepinnet + tptradecore-common-service-facade + + + com.deepinnet + tptradecore-common-service-facade + + + + diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/IntegrationClientInterceptor.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/IntegrationClientInterceptor.java new file mode 100644 index 0000000..9cfcf84 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/IntegrationClientInterceptor.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.biz.advice; + +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.log.LogFormatHelper; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.*; +import org.slf4j.*; +import org.springframework.stereotype.Component; + +@Aspect +@Component +public class IntegrationClientInterceptor { + + private static final Logger INTEGRATION_LOG = LoggerFactory.getLogger("INTEGRATION-LOG"); + + @Pointcut("execution(* com.deepinnet.*.common.service.integration..*.*(..))") + public void pointCut() { + } + + @Around("pointCut()") + public Object integrationClientHandle(ProceedingJoinPoint pj) throws Throwable { + boolean res = true; + Long startTime = System.currentTimeMillis(); + String className = pj.getTarget().getClass().getSimpleName(); + String methodName = pj.getSignature().getName(); + Object proceed; + Throwable ex = null; + try { + proceed = pj.proceed(); + return proceed; + } catch (Throwable e) { + res = false; + ex = e; + throw e; + } finally { + LogUtil.info(INTEGRATION_LOG, "{}", + LogFormatHelper.logFormat(startTime, className, methodName, res, ex)); + } + } + +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/RpcExceptionHandleAspect.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/RpcExceptionHandleAspect.java new file mode 100644 index 0000000..dbdd156 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/advice/RpcExceptionHandleAspect.java @@ -0,0 +1,78 @@ +package com.deepinnet.tptradecore.biz.advice; + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.log.LogFormatHelper; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.*; +import org.slf4j.*; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2022-11-14 15:00 + *

+ * 异常处理切面 + */ +@Component +@Aspect +public class RpcExceptionHandleAspect { + + private static final String TPTRADECORE_CORE_SIMPLE_NAME = "TpTradeCoreException"; + + private static final Logger REQUEST_LOG = LoggerFactory.getLogger("REQUEST-LOG"); + + private static final Logger BIZ_DIGEST_LOG = LoggerFactory.getLogger("BIZ-DIGEST-LOG"); + + @Pointcut(value = "@within(org.apache.dubbo.config.annotation.DubboService)") + private void myPointcut() { + } + + @Around(value = "myPointcut()") + private Object around(ProceedingJoinPoint joinPoint) { + Long startTime = System.currentTimeMillis(); + String className = joinPoint.getTarget().getClass().getSimpleName(); + String methodName = joinPoint.getSignature().getName(); + boolean isSuccess = true; + Throwable ex = null; + + try { + LogUtil.info(REQUEST_LOG, "{},{},{}", className, methodName, joinPoint.getArgs()); + Object proceedResult = joinPoint.proceed(); + if (proceedResult instanceof TpResult) { + TpResult result = (TpResult) proceedResult; + if (!result.isSuccess()) { + isSuccess = false; + } + } + + return proceedResult; + } catch (Throwable e) { + isSuccess = false; + ex = e; + LogUtil.error("RPC服务调用异常", e); + // 业务异常 + if (e instanceof TpTradeCoreException) { + TpTradeCoreException exception = (TpTradeCoreException) e; + // ATTENTION:如果是幂等异常,需要返回成功,但是要带上异常信息 + TpTradeCoreErrorCode errorCode = exception.getErrorCode(); + if (TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR == errorCode) { + return new TpResult<>(true, TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR.getCode(), TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR.getDesc(), TPTRADECORE_CORE_SIMPLE_NAME); + } + return TpResult.fail(errorCode.getCode(), exception.getMessage(), TPTRADECORE_CORE_SIMPLE_NAME); + } else if (e instanceof IllegalArgumentException) { + return TpResult.fail(TpTradeCoreErrorCode.ILLEGAL_PARAMS.getCode(), TpTradeCoreErrorCode.ILLEGAL_PARAMS.getDesc(), TPTRADECORE_CORE_SIMPLE_NAME); + } else if (e instanceof TpException) { + return TpResult.fail(((TpException) e).getErrorCode(), e.getMessage(), TPTRADECORE_CORE_SIMPLE_NAME); + } else { + // 未知异常 + return TpResult.fail(TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR.getCode(), TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR.getDesc(), TPTRADECORE_CORE_SIMPLE_NAME); + } + } finally { + LogUtil.info(BIZ_DIGEST_LOG, "{}", LogFormatHelper.logFormat(startTime, className, methodName, isSuccess, ex)); + } + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/config/ThreadPoolConfig.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/config/ThreadPoolConfig.java new file mode 100644 index 0000000..82071c9 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/config/ThreadPoolConfig.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.biz.config; + +import cn.hutool.core.thread.ExecutorBuilder; +import cn.hutool.core.thread.RejectPolicy; +import cn.hutool.core.thread.ThreadFactoryBuilder; +import com.deepinnet.trace.wrapper.ExecutorServiceWrapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + *         ┏┓   ┏┓+ + + *        ┏┛┻━━━┛┻┓ + + + *        ┃       ┃ + *        ┃   ━   ┃ ++ + + + + *        ████━████ ┃+ + *        ┃       ┃ + + *        ┃   ┻   ┃ + *        ┃       ┃ + + + *        ┗━┓    ┏━┛ + *          ┃   ┃ + *          ┃   ┃ + + + + + *          ┃   ┃    Code is far away from bug with the animal protecting + *          ┃   ┃ +     神兽保佑,代码无bug + *          ┃   ┃ + *          ┃   ┃  + + *          ┃    ┗━━━┓ + + + *          ┃        ┣┓ + *          ┃        ┏┛ + *          ┗┓┓┏━┳┓┏┛ + + + + + *           ┃┫┫ ┃┫┫ + *           ┗┻┛ ┗┻┛+ + + + + * 线程池配置类 + * + * @author 唐国翔 + * @since 2023-01-08 星期日 + **/ +@Configuration +public class ThreadPoolConfig { + public static final int CPU_CORE_NUMBER = Runtime.getRuntime().availableProcessors(); + + public static final int CORE_POOL_SIZE = CPU_CORE_NUMBER; + + public static final String SMS_SEND_POOL_NAME_PREFIX = "sms-send-pool-"; + + /** + * 扩展查询线程池 + */ + @Bean(name = "smsSendPool") + public ExecutorService smsSendPool() { + ThreadPoolExecutor threadPoolExecutor = ExecutorBuilder + .create().setCorePoolSize(CORE_POOL_SIZE) + .setMaxPoolSize(200) + .setThreadFactory(ThreadFactoryBuilder.create().setNamePrefix(SMS_SEND_POOL_NAME_PREFIX).build()) + .setHandler(RejectPolicy.CALLER_RUNS.getValue()) //如果达到阻塞队列上限直接由调用线程执行) + .setKeepAliveTime(60, TimeUnit.SECONDS) + .useSynchronousQueue()//不存储阻塞队列直接new线程调用 + .build(); + //预热核心线程 等待任务提交 + threadPoolExecutor.prestartCoreThread(); + return ExecutorServiceWrapper.getTtlExecutorService(threadPoolExecutor); + } + + @Bean + public ThreadPoolTaskExecutor payRefundThreadPool() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(Runtime.getRuntime().availableProcessors() * 2); + executor.setMaxPoolSize(Runtime.getRuntime().availableProcessors() * 3 + 1); + executor.setKeepAliveSeconds(10); + executor.setQueueCapacity(128); + executor.setThreadNamePrefix("refund-send-task-"); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); + return executor; + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/TpOrderCalcFormula.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/TpOrderCalcFormula.java new file mode 100644 index 0000000..6daeca1 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/TpOrderCalcFormula.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.biz.constants; + +/** + *

+ * 计算公式枚举 + *

+ * + * @author chenjiaju + * @since 2024/2/2 + */ +public class TpOrderCalcFormula { + + /** + * 行程结束 应退金额(手续费) + */ + public final static String ORDER_END_NEED_REFUND_AMOUNT_WITH_SERVICE_CHARGE = "应退金额=已付金额-订单金额-手续费"; + + /** + * 行程结束 应退金额(无手续费) + */ + public final static String ORDER_END_NEED_REFUND_AMOUNT_WITHOUT_SERVICE_CHARGE = "应退金额=已付金额-订单金额"; + + /** + * 取消 退款中 有手续费 + */ + public final static String ORDER_CANCEL_REFUNDING_WITH_SERVICE_CHARGE = "应退金额=已付金额-手续费"; + + /** + * 取消 退款中 无手续费 + */ + public final static String ORDER_CANCEL_REFUNDING_WITHOUT_SERVICE_CHARGE = "应退金额=已付金额"; + + /** + * 行程结束 已退款 实付金额(手续费) + */ + public final static String ORDER_END_REFUNDED_AMOUNT_WITH_SERVICE_CHARGE = "应退金额=已付金额-订单金额-手续费"; + + /** + * 行程结束 已退款 实付金额(无手续费) + */ + public final static String ORDER_END_REFUNDED_AMOUNT_WITHOUT_SERVICE_CHARGE = "已退金额=已付金额-订单金额"; + + /** + * 取消 应退(手续费) + */ + public final static String ORDER_CANCEL_NEED_REFUND_AMOUNT_WITH_SERVICE_CHARGE = "应退金额=已付金额-手续费"; + + /** + * 取消 应退(无手续费) + */ + public final static String ORDER_CANCEL_NEED_REFUND_AMOUNT_WITHOUT_SERVICE_CHARGE = "应退金额=已付金额"; + + /** + * 取消 已退金额(手续费) + */ + public final static String ORDER_CANCEL_REFUNDED_AMOUNT_WITH_SERVICE_CHARGE = "已退金额=已付金额-手续费"; + + /** + * 取消 已退金额(无手续费) + */ + public final static String ORDER_CANCEL_REFUNDED_AMOUNT_WITHOUT_SERVICE_CHARGE = "已退金额=已付金额"; + + /** + * 取消 应付 + */ + public final static String ORDER_CANCEL_NEED_PAY_AMOUNT_WITH_SERVICE_CHARGE = "应付金额=手续费-已付金额"; + + /** + * 取消 实付金额 + */ + public final static String ORDER_CANCEL_PAID_AMOUNT_WITH_SERVICE_CHARGE = "实付金额=手续费-已支付订金金额"; + + /** + * 应付尾款(手续费) + */ + public final static String ORDER_NEED_PAY_BALANCE_AMOUNT_WITH_SERVICE_CHARGE = "应付尾款=订单金额-已付金额+手续费"; + + /** + * 应付尾款(无手续费) + */ + public final static String ORDER_NEED_PAY_BALANCE_AMOUNT_WITHOUT_SERVICE_CHARGE = "应付尾款=订单金额-已付金额"; + + /** + * 实付金额(手续费) + */ + public final static String ORDER_ACTUAL_PAID_AMOUNT_WITH_SERVICE_CHARGE = "实付金额=订单金额+手续费"; + + /** + * 实付金额(无手续费) + */ + public final static String ORDER_ACTUAL_PAID_AMOUNT_WITHOUT_SERVICE_CHARGE = "实付金额=订单金额"; + + /** + * 订单结束 不退不补 实付金额 + */ + public final static String ORDER_ACTUAL_PAID_AMOUNT_WITHOUT_BALANCE_WITHOUT_SERVICE_CHARGE = "实付金额=已支付订金金额"; + +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/XConstants.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/XConstants.java new file mode 100644 index 0000000..83d5464 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/constants/XConstants.java @@ -0,0 +1 @@ +package com.deepinnet.tptradecore.biz.constants; diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpAuditBizConverter.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpAuditBizConverter.java new file mode 100644 index 0000000..b0c50b4 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpAuditBizConverter.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.biz.convert; + +import com.deepinnet.tptradecore.common.vo.audit.TpAuditOrderListVO; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderListVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderReceivedVO; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.audit.TpAuditOrderList; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +import java.util.List; + +/** + *

+ * 审核单转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpAuditBizConverter { + + + /** + * TpAudit to TpAuditVO + * @param tpAudit model + * @return do + */ + TpAuditVO model2VO(TpAudit tpAudit); + + + List model2VOList(List tpAudits); + + List modelList2VOList(List orderList); +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderChangeBizConverter.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderChangeBizConverter.java new file mode 100644 index 0000000..cbe2dbc --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderChangeBizConverter.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.biz.convert; + +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeApplyVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeItemVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItem; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +import java.util.List; + +/** + *

+ * 订单变更申请单转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderChangeBizConverter { + + + /** + * TpOrderChangeApply to TpOrderChangeApplyVO + * @param tpOrderChangeApply model + * @return vo + */ + TpOrderChangeApplyVO model2VO(TpOrderChangeApply tpOrderChangeApply); + + /** + * TpOrderChangeItem to TpOrderChangeItemVO + * @param tpOrderChangeItem model + * @return vo + */ + TpOrderChangeItemVO model2VO(TpOrderChangeItem tpOrderChangeItem); + + + List model2ItemVOList(List tpOrderChangeItemList); + + List model2VOList(List tpOrderChangeApplyList); +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderDispatchBizConverter.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderDispatchBizConverter.java new file mode 100644 index 0000000..3b24dce --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderDispatchBizConverter.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.biz.convert; + +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderReceivedVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +import java.util.List; + +/** + *

+ * 订单派单转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderDispatchBizConverter { + + + /** + * TpOrderDispatch to TpOrderDispatchVO + * @param tpOrderDispatch model + * @return do + */ + TpOrderDispatchVO model2VO(TpOrderDispatch tpOrderDispatch); + + + + /** + * TpOrderDispatch to TpOrderDispatchVO + * @param tpOrderDispatchList model + * @return do + */ + List model2VOList(List tpOrderDispatchList); +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderReceivedBizConverter.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderReceivedBizConverter.java new file mode 100644 index 0000000..e7231b0 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/convert/TpOrderReceivedBizConverter.java @@ -0,0 +1,30 @@ +package com.deepinnet.tptradecore.biz.convert; + +import com.deepinnet.tptradecore.common.vo.order.TpOrderReceivedVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderReceived; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +/** + *

+ * 订单接单转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderReceivedBizConverter { + + + /** + * TpOrderReceived to TpOrderReceivedVO + * @param tpOrderReceived model + * @return do + */ + TpOrderReceivedVO model2VO(TpOrderReceived tpOrderReceived); + + + +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderIdentityFlagEnum.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderIdentityFlagEnum.java new file mode 100644 index 0000000..ccea156 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderIdentityFlagEnum.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.biz.enums; + +/** + *

+ * 枚举 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ +public enum TpOrderIdentityFlagEnum { + + /** + * 实名认证 + */ + REAL_NAME_ORDER(1, "实名认证"), + + /** + * 非实名认证 + */ + NOT_REAL_NAME_ORDER(0, "非实名认证"), + + ; + + /** + * 实名认证标识 + */ + private Integer identityFlag; + + /** + * 实名认证标识中文描述 + */ + private String identityDesc; + + TpOrderIdentityFlagEnum(Integer identityFlag, String identityDesc) { + this.identityFlag = identityFlag; + this.identityDesc = identityDesc; + } + + public Integer getIdentityFlag() { + return identityFlag; + } + + public void setIdentityFlag(Integer identityFlag) { + this.identityFlag = identityFlag; + } + + public String getIdentityDesc() { + return identityDesc; + } + + public void setIdentityDesc(String identityDesc) { + this.identityDesc = identityDesc; + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderServiceChargeFreeEnum.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderServiceChargeFreeEnum.java new file mode 100644 index 0000000..0ba6a2d --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/enums/TpOrderServiceChargeFreeEnum.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.biz.enums; + +import cn.hutool.core.util.ObjectUtil; + +/** + *

+ * 订单服务费是否免费 + *

+ * + * @author chenjiaju + * @since 2023/10/30 + */ +public enum TpOrderServiceChargeFreeEnum { + + FREE(1, "免费"), + + NOT_FREE(0, "按规则收取手续费"), + + ; + + private Integer code; + + private String desc; + + TpOrderServiceChargeFreeEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public static TpOrderServiceChargeFreeEnum getTripEnumByTripCode(Integer code) { + for (TpOrderServiceChargeFreeEnum bizTypeEnum : TpOrderServiceChargeFreeEnum.values()) { + if (ObjectUtil.equals(bizTypeEnum.getCode(), code)) { + return bizTypeEnum; + } + } + + return null; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/factory/TpOrderPushStatusStrategyFactory.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/factory/TpOrderPushStatusStrategyFactory.java new file mode 100644 index 0000000..3a64ced --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/factory/TpOrderPushStatusStrategyFactory.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.biz.factory; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + *

+ * 工厂类,用于订单状态推进 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPushStatusStrategyFactory implements InitializingBean { + + @Resource + private Map strategyMap; + + public Map orderPushStatusStrategyMap = new ConcurrentHashMap<>(); + + + @Override + public void afterPropertiesSet() throws Exception { + strategyMap.values().parallelStream().forEach(strategy -> orderPushStatusStrategyMap.put(strategy.statusStrategy(), strategy)); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/log/LogFormatHelper.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/log/LogFormatHelper.java new file mode 100644 index 0000000..6c058df --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/log/LogFormatHelper.java @@ -0,0 +1,42 @@ +package com.deepinnet.tptradecore.biz.log; + + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; + +public class LogFormatHelper { + + /** + * 日志格式 + * [类名,方法名,执行结果,耗时,异常类名,异常码,异常信息] + */ + private static final String LOG_PATTERN = "[%s,%s,%s,%sms,%s,%s,%s]"; + + /** + * 占位符 + */ + private static final String PLACE_HOLDER = "null"; + + public static String logFormat(Long startTime, String className, String methodName, Boolean isSuccess, Throwable ex) { + Long endTime = System.currentTimeMillis(); + if (ex instanceof TpTradeCoreException) { + TpTradeCoreException e = (TpTradeCoreException) ex; + return String.format(LOG_PATTERN, + className, methodName, isSuccess, (endTime - startTime), + ex.getClass().getSimpleName(), e.getErrorCode(), e.getMessage()); + } else if (ex instanceof TpException) { + TpException e = (TpException) ex; + return String.format(LOG_PATTERN, + className, methodName, isSuccess, (endTime - startTime), + ex.getClass().getSimpleName(), e.getErrorCode(), e.getMessage()); + } else if (ex != null) { + return String.format(LOG_PATTERN, + className, methodName, isSuccess, (endTime - startTime), + ex.getClass().getSimpleName(), PLACE_HOLDER, ex.getMessage() == null ? PLACE_HOLDER : ex.getMessage()); + } else { + return String.format(LOG_PATTERN, + className, methodName, isSuccess, (endTime - startTime), + PLACE_HOLDER, PLACE_HOLDER, PLACE_HOLDER); + } + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/quarz/OrderStasticsTimer.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/quarz/OrderStasticsTimer.java new file mode 100644 index 0000000..2e34b3b --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/quarz/OrderStasticsTimer.java @@ -0,0 +1,177 @@ +package com.deepinnet.tptradecore.biz.quarz; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import com.alibaba.excel.EasyExcel; +import com.deepinnet.tpcommoncore.common.service.dto.TpStoreQueryDTO; +import com.deepinnet.tpcommoncore.common.service.dto.TpStoreUploadDTO; +import com.deepinnet.tpcommoncore.common.service.enums.TpStoreBizTypeEnum; +import com.deepinnet.tpcommoncore.common.service.enums.TpStoreBucketTypeEnum; +import com.deepinnet.tptradecore.common.service.integration.client.TpGlobalStoreClient; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.mail.MessagingException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +@Component +@Slf4j +@Profile("pre") +public class OrderStasticsTimer { + + @Resource + private TpGlobalStoreClient tpGlobalStoreClient; + + @Resource + private javax.sql.DataSource dbDataSource; + + @PostConstruct + public void init() { + log.info("======================佛山统计定时任务启动===================="); + } + // 每10分钟执行一次 + @Scheduled(fixedRate = 10, timeUnit = TimeUnit.MINUTES) + public void sendEmail() throws SQLException, MessagingException { + String SQL = "SELECT\n" + + " FROM_UNIXTIME( verification_time / 1000, '%Y年-%m月-%d日-%H点' ) AS '核销时间',\n" + + " COUNT( 1 ) AS '核销数量',\n" + + " (case WHEN tv.type = 'day' THEN '次票' WHEN tv.type = 'month' THEN '月票' WHEN tv.type = 'term' THEN '学期票' END) as '票类型',\n" + + " (case WHEN tor.round_trip = 'go' THEN '去程' WHEN tor.round_trip = 'back' THEN '返程' END) as '行程类型'\n" + + "FROM\n" + + " tp_voucher_verification_record tvr\n" + + " LEFT JOIN tp_voucher tv ON tvr.voucher_no = tv.voucher_no and tvr.tenant_id = '1648' and tv.tenant_id = '1648'\n" + + " LEFT JOIN tp_order_route tor ON tv.order_no = tor.order_no and tor.tenant_id = '1648' and tv.tenant_id = '1648'\n" + + "GROUP BY\n" + + " FROM_UNIXTIME( verification_time / 1000, '%Y-%m-%d-%H' ),\n" + + " tor.round_trip,\n" + + " tv.type\n" + + "ORDER BY\n" + + " FROM_UNIXTIME( verification_time / 1000, '%Y-%m-%d-%H' ) DESC"; + + Connection connection = dbDataSource.getConnection(); + try { + + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(SQL); + + // 生成Excel表格 + List list = new ArrayList<>(); + while (resultSet.next()) { + ExcelData data = new ExcelData(); + data.setUseTime(resultSet.getString("核销时间")); + data.setUseCount(resultSet.getInt("核销数量")); + data.setTicketType(resultSet.getString("票类型")); + data.setTripType(resultSet.getString("行程类型")); + list.add(data); + } + + String fileName = "order_foshan.xlsx"; + String filePath = generateLocalFilePath(fileName); + EasyExcel.write(filePath, ExcelData.class).sheet("sheet1").doWrite(list); + + // 上传OSS + uploadToOss(filePath); + } finally { + connection.close(); + } + + } + + + @NotNull + private static String generateLocalFilePath(String fileName) { + return FileUtil.getUserHomePath() + "/" + fileName; + } + + protected String uploadToOss(String filePath) { + // 上传【以分钟时间作为key,同一分钟内的请求不重复生成文件】 + String ossKey = uploadOss(filePath); + + // 获取url + String ossDownloadUrl = getOssDownloadUrl(ossKey); + + log.info("订单统计结果OSS下载地址:" + ossDownloadUrl); + + return ossDownloadUrl; + } + + /** + * @param localFilePath + * @return + */ + protected String uploadOss(String localFilePath) { + // 上传文件 + TpStoreUploadDTO tpStoreUploadDTO = new TpStoreUploadDTO(); + tpStoreUploadDTO.setBucketType(TpStoreBucketTypeEnum.PUBLIC_BUCKET.getBucketType()); + tpStoreUploadDTO.setBizType(TpStoreBizTypeEnum.OSS_STORE.getBizType()); + String ossKey = getOssKey(localFilePath); + tpStoreUploadDTO.setKey(ossKey); + tpStoreUploadDTO.setInputStream(FileUtil.readBytes(localFilePath)); + tpGlobalStoreClient.putObject(tpStoreUploadDTO); + return ossKey; + } + + protected String getOssKey(String localFilePath) { + return DateUtil.format(LocalDateTime.now(), "yyyyMMddHH") + localFilePath.substring(localFilePath.lastIndexOf("/")); + } + + protected String getOssDownloadUrl(String ossKey) { + TpStoreQueryDTO tpStoreQueryDTO = new TpStoreQueryDTO(); + tpStoreQueryDTO.setBucketType(TpStoreBucketTypeEnum.PUBLIC_BUCKET.getBucketType()); + tpStoreQueryDTO.setKey(ossKey); + return tpGlobalStoreClient.getUrl(tpStoreQueryDTO); + } + +} + +class ExcelData { + + private String useTime; + private int useCount; + private String ticketType; + private String tripType; + + public String getUseTime() { + return useTime; + } + + public void setUseTime(String useTime) { + this.useTime = useTime; + } + + public int getUseCount() { + return useCount; + } + + public void setUseCount(int useCount) { + this.useCount = useCount; + } + + public String getTicketType() { + return ticketType; + } + + public void setTicketType(String ticketType) { + this.ticketType = ticketType; + } + + public String getTripType() { + return tripType; + } + + public void setTripType(String tripType) { + this.tripType = tripType; + } +} \ No newline at end of file diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/audit/TpAuditFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/audit/TpAuditFacadeImpl.java new file mode 100644 index 0000000..10e8c51 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/audit/TpAuditFacadeImpl.java @@ -0,0 +1,236 @@ +package com.deepinnet.tptradecore.biz.service.impl.audit; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.convert.TpAuditBizConverter; +import com.deepinnet.tptradecore.common.dto.audit.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.service.facade.audit.TpAuditFacade; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditOrderListVO; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditOrderVO; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditVO; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.order.TpBatchQueryOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import com.deepinnet.tptradecore.core.service.audit.TpAuditDomainService; +import com.deepinnet.tptradecore.core.service.order.TpOrderChangedApplyDomainService; +import com.deepinnet.tptradecore.core.service.order.TpOrderDispatchDomainService; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.apache.dubbo.config.annotation.DubboService; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@DubboService +public class TpAuditFacadeImpl implements TpAuditFacade { + + @Resource + private TpAuditBizConverter tpAuditBizConverter; + @Resource + private TpAuditDomainService auditDomainService; + + @Resource + private TpOrderChangedApplyDomainService orderChangedDomainService; + + @Resource + private TpOrderDispatchDomainService orderDispatchDomainService; + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpResult getAuditDetail(TpAuditQueryDetailDTO tpAuditQueryDetailDTO) { + TpAudit tpAudit = auditDomainService.getAuditDetail(tpAuditQueryDetailDTO); + return TpResult.success(tpAuditBizConverter.model2VO(tpAudit)); + + } + + @Override + public TpResult getLatestAuditDetail(TpAuditLatestDetailDTO auditLatestDetailDTO) { + TpAudit tpAudit = auditDomainService.getLatestAuditDetail(auditLatestDetailDTO); + return TpResult.success(tpAuditBizConverter.model2VO(tpAudit)); + } + + @Override + public TpResult> listAudits(TpAuditListQueryDTO tpAuditListQueryDTO) { + List tpAudits = auditDomainService.listAudits(tpAuditListQueryDTO); + return TpResult.success(tpAuditBizConverter.model2VOList(tpAudits)); + + } + + @Override + public TpResult createAudit(TpAuditCreatedDTO tpAuditCreatedDTO) { + Boolean createFlag = auditDomainService.createAudit(tpAuditCreatedDTO); + if (createFlag) { + return TpResult.success(createFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.SUBMIT_APPROVAL_ERROR.getCode(), TpTradeCoreErrorCode.SUBMIT_APPROVAL_ERROR.getDesc()); + + } + + @Override + public TpResult confirmAudit(TpAuditApprovedSubmitDTO confirmAuditDTO) { + Boolean createFlag = auditDomainService.submitApproved(confirmAuditDTO); + if (createFlag) { + return TpResult.success(createFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.APPROVAL_ERROR.getCode(), TpTradeCoreErrorCode.APPROVAL_ERROR.getDesc()); + + } + + @Override + public TpResult> pageOrderAuditList(TpOrderAuditPagedQueryDTO dto) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(dto.getOriginalOrderNo())){ + dto.setOriginalOrderNo(dto.getOrderNo()); + } + Page page = PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + + List auditList = auditDomainService.listOrderAudit(buildTpOrderAuditListQuery(dto)); + List auditOrderList = tpAuditBizConverter.modelList2VOList(auditList); + if (CollUtil.isNotEmpty(auditList)) { + String tenantId = dto.getTenantId(); + //1. 获取审核单关联订单列表 + List originalOrderNoList = listOriginalOrderNo(auditOrderList, tenantId); + + if (CollUtil.isNotEmpty(originalOrderNoList)) { + LogUtil.info("originalOrderNoList:" + JSONUtil.toJsonStr(originalOrderNoList)); + //2。填充订单信息 + fillOrderInfo(auditOrderList, originalOrderNoList, tenantId); + //3.填充组织信息 + fillTargetOrg(auditOrderList, originalOrderNoList, tenantId); + } + } + + return TpResult.success( buildListPage(page, sortAuditOrderListVOS(auditOrderList))); + } + + @Nullable + private List sortAuditOrderListVOS(List auditOrderList) { + if(CollUtil.isEmpty(auditOrderList)){ + return Collections.EMPTY_LIST; + } + auditOrderList = CollUtil.sort(auditOrderList, new Comparator() { + @Override + public int compare(TpAuditOrderListVO source, TpAuditOrderListVO target) { + return target.getSubmitTime().compareTo(source.getSubmitTime()); + } + }); + return auditOrderList; + } + + private List listOriginalOrderNo(List auditOrderList, String tenantId) { + List applyNos = auditOrderList.stream().map(TpAuditOrderListVO::getBizObjectNo).collect(Collectors.toList()); + if (CollUtil.isEmpty(applyNos)) { + return CollUtil.newArrayList(); + } + List applyList = orderChangedDomainService.listByApplyNos(tenantId, applyNos); + if (CollUtil.isEmpty(applyList)) { + return CollUtil.newArrayList(); + } + Map applyMap = applyList.stream().collect(Collectors.toMap(TpOrderChangeApply::getApplyNo, Function.identity())); + auditOrderList.stream().forEach(tpAuditOrderListVO -> { + TpOrderChangeApply apply = applyMap.get(tpAuditOrderListVO.getBizObjectNo()); + if (apply != null) { + TpAuditOrderVO auditOrder = tpAuditOrderListVO.getAuditOrder(); + if (auditOrder == null) { + auditOrder = new TpAuditOrderVO(); + } + auditOrder.setOrderNo(apply.getOrderNo()); + auditOrder.setOriginalOrderNo(apply.getOriginalOrderNo()); + tpAuditOrderListVO.setAuditOrder(auditOrder); + } + }); + + return applyList.stream().map(TpOrderChangeApply::getOriginalOrderNo).collect(Collectors.toList()); + } + + private void fillOrderInfo(List auditOrderList, List originalOrderNoList, String tenantId) { + TpBatchQueryOrder batchQueryOrder = TpBatchQueryOrder.builder().build(); + batchQueryOrder.setTenantId(tenantId); + batchQueryOrder.setOriginalOrderNos(originalOrderNoList); + List tpOrders = tpOrderDomainService.batchQueryListByOriginalOrderNos(batchQueryOrder); + if (CollUtil.isEmpty(tpOrders)) { + return; + } + Map tpOrderMap = tpOrders.stream().collect(Collectors.toMap(TpOrder::getOriginalOrderNo, Function.identity())); + auditOrderList.stream().forEach(tpAuditOrderListVO -> { + + TpAuditOrderVO auditOrder = tpAuditOrderListVO.getAuditOrder(); + if (auditOrder == null) { + return; + } + TpOrder tpOrder = tpOrderMap.get(auditOrder.getOriginalOrderNo()); + if (tpOrder == null) { + return; + } + auditOrder.setPayableAmount(tpOrder.getPayableAmount()); + auditOrder.setCharterBusType(tpOrder.getProductCategoryNo()); + auditOrder.setCharterBusTypeName(tpOrder.getProductCategory()); + auditOrder.setServiceCharge(tpOrder.getServiceCharge()); + }); + } + + private void fillTargetOrg(List auditOrderList, List originalOrderNoList, String tenantId) { + + List tpOrderDispatchList = orderDispatchDomainService.listOrderDispatchDetail(tenantId, originalOrderNoList, null); + if (CollUtil.isEmpty(tpOrderDispatchList)) { + return; + } + Map tpOrderDispatchMap = tpOrderDispatchList.stream().collect(Collectors.toMap(TpOrderDispatch::getOriginalOrderNo, Function.identity())); + auditOrderList.stream().forEach(tpAuditOrderListVO -> { + + TpAuditOrderVO auditOrder = tpAuditOrderListVO.getAuditOrder(); + if (auditOrder == null) { + return; + } + TpOrderDispatch tpOrderDispatch = tpOrderDispatchMap.get(auditOrder.getOriginalOrderNo()); + if (tpOrderDispatch == null) { + return; + } + auditOrder.setOrgNo(tpOrderDispatch.getTargetOrgNo()); + auditOrder.setOrgName(tpOrderDispatch.getTargetOrgName()); + }); + } + + private TpOrderAuditListQueryDTO buildTpOrderAuditListQuery(TpOrderAuditPagedQueryDTO dto) { + TpOrderAuditListQueryDTO tpOrderAuditListQueryDTO = new TpOrderAuditListQueryDTO(); + tpOrderAuditListQueryDTO.setOrderNo(dto.getOrderNo()); + tpOrderAuditListQueryDTO.setOriginalOrderNo(dto.getOriginalOrderNo()); + tpOrderAuditListQueryDTO.setAuditTypes(dto.getAuditTypes()); + tpOrderAuditListQueryDTO.setAuditStatus(dto.getAuditStatus()); + tpOrderAuditListQueryDTO.setCharterBusType(dto.getCharterBusType()); + tpOrderAuditListQueryDTO.setOrgCode(dto.getOrgNo()); + tpOrderAuditListQueryDTO.setOrgCodes(dto.getOrgCodes()); + tpOrderAuditListQueryDTO.setTenantId(dto.getTenantId()); + return tpOrderAuditListQueryDTO; + } + + @NotNull + private CommonPage buildListPage(Page page, List auditOrderList) { + CommonPage result = new CommonPage<>(); + result.setPageNum(page.getPageNum()); + result.setPageSize(page.getPageSize()); + result.setTotal(page.getTotal()); + result.setList(auditOrderList); + return result; + } + +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/contract/TpContractFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/contract/TpContractFacadeImpl.java new file mode 100644 index 0000000..0be945c --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/contract/TpContractFacadeImpl.java @@ -0,0 +1,385 @@ +package com.deepinnet.tptradecore.biz.service.impl.contract; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.contract.*; +import com.deepinnet.tptradecore.common.dal.convert.voucher.TpVoucherPassengerMapStructConvert; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.common.enums.TpBizTypeEnum; +import com.deepinnet.tptradecore.common.enums.contract.*; +import com.deepinnet.tptradecore.common.enums.trans.*; +import com.deepinnet.tptradecore.common.enums.voucher.TpVoucherVerifiedResultEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.facade.contract.TpContractFacade; +import com.deepinnet.tptradecore.common.service.integration.client.*; +import com.deepinnet.tptradecore.common.vo.contract.TpQueryRefundDetailVO; +import com.deepinnet.tptradecore.core.model.contract.*; +import com.deepinnet.tptradecore.core.service.contract.TpContractDomainService; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2023/8/9 11:38 + * @Description + */ +@DubboService +public class TpContractFacadeImpl implements TpContractFacade { + + @Resource + private TpContractDomainService contractDomainService; + + @Resource + private TpRefundApplyOrderConvert refundApplyOrderConvert; + + @Resource + private TpRefundSubjectItemConvert refundSubjectItemConvert; + + @Resource + private TpRefundApplicantConvert refundApplicantConvert; + + @Resource + private TpPaymentClient paymentClient; + + @Resource + private TpVoucherClient voucherClient; + + @Resource + private TpSequenceClient sequenceClient; + + @Override + public TpResult> queryAvailableRefundVoucherList(TpQueryAvailableRefundVoucherDTO queryDTO) { + // 查询凭证信息 + TpVoucherQueryDTO voucherQueryDTO = new TpVoucherQueryDTO(); + voucherQueryDTO.setTargetStatusList(queryDTO.getAvailableStatusList()); + List voucherList = voucherClient.getVoucherList(voucherQueryDTO + .setOrderNo(queryDTO.getOrderNo()) + .setTenantId(queryDTO.getTenantId()) + .setNeedProperties(Lists.newArrayList(TpVoucherNeedPropertiesEnum.PASSENGER.getCode()))); + if (CollectionUtils.isEmpty(voucherList)) { + LogUtil.error("不存在可退的凭证,入参:{}", JSONUtil.toJsonStr(queryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_REFUND_AVAILABLE_VOUCHER); + } + Boolean requiredRealName = voucherList.get(0).getRequiredRealName(); + + // 已乘坐的凭证不允许退票 + List curOrderVoucherNos = voucherList.stream() + .map(TpVoucherDTO::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + + TpVoucherVerificationRecordQueryDTO verificationRecordQueryDTO = new TpVoucherVerificationRecordQueryDTO(); + verificationRecordQueryDTO.setVoucherNos(curOrderVoucherNos); + verificationRecordQueryDTO.setTenantId(queryDTO.getTenantId()); + List verificationRecordList = voucherClient.getVerificationRecordList(verificationRecordQueryDTO); + + List availableRefundVoucherList = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(verificationRecordList)) { + List successRecords = verificationRecordList.stream() + .filter(v -> StringUtils.equals(v.getResult(), TpVoucherVerifiedResultEnum.SUCCESS.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(successRecords)) { + List haveVerifiedVoucherNos = successRecords.stream() + .map(TpVoucherVerificationRecordDTO::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + // 实名制坐过就不能退了 + if (requiredRealName) { + // 过滤出未乘车的凭证 + availableRefundVoucherList = voucherList.stream() + .filter(v -> !haveVerifiedVoucherNos.contains(v.getVoucherNo())) + .collect(Collectors.toList()); + } else { + // 非实名的多个乘车人只有一张凭证即使核销过也可能可以退,需要判断是否还有剩余次数 + availableRefundVoucherList = voucherList.stream().filter(v -> isRefundPassengerCountValid(v, 1)).collect(Collectors.toList()); + } + } + } else { + availableRefundVoucherList = voucherList; + } + + // 组装结果 + return TpResult.success(availableRefundVoucherList); + } + + private boolean isRefundPassengerCountValid(TpVoucherDTO voucherDTO, int refundPassengerCount) { + int passengerCount = voucherDTO.getPassengerCount(); + int totalCount = voucherDTO.getTotalCount(); + int refundCount = voucherDTO.getRefundCount(); + int redemptionCount = voucherDTO.getRedemptionCount(); + int eachPassengerTotalCount = totalCount / passengerCount; + // 计算最大剩余可退的乘车人数 + int divisor = voucherDTO.getRedemptionCount() % eachPassengerTotalCount; + int redemptionPassengerCount = divisor == 0 ? redemptionCount / eachPassengerTotalCount : redemptionCount / eachPassengerTotalCount + 1; + int availableRefundPassengerCount = passengerCount - refundCount / eachPassengerTotalCount - redemptionPassengerCount; + return availableRefundPassengerCount >= refundPassengerCount; + } + + @Override + public TpResult refundTicket(TpRefundApplyDTO refundApplyDTO) { + // 幂等校验 + idempotentCheck(refundApplyDTO.getOrderNo(), refundApplyDTO.getTenantId()); + + // 构建退票申请单 + String refundApplyOrderNo = sequenceClient.generateRefundApplyOrderNo(); + List refundSubjectItems = convertRefundItemDTOs2Domain(refundApplyOrderNo, refundApplyDTO.getRefundSubjectItems()); + TpRefundApplyOrder refundApplyOrder = refundApplyOrderConvert.buildRefundApplyOrder(refundApplyDTO, refundSubjectItems, refundApplyOrderNo); + assembleRefundApplyOrder(refundApplyOrder, refundApplyDTO.getRefundApplicantDTO()); + + // 持久化退票申请单 + contractDomainService.applyTicketRefund(refundApplyOrder); + return TpResult.success(refundApplyOrderNo); + } + + private void idempotentCheck(String orderNo, String tenantId) { + List refundApplyOrderList = contractDomainService.getRefundApplyOrderList(TpQueryRefundApplyOrderDTO.builder() + .orderNo(orderNo) + .tenantId(tenantId) + .build()); + if (CollectionUtils.isNotEmpty(refundApplyOrderList)) { + boolean existRefundingApplyOrder = refundApplyOrderList + .stream() + .anyMatch(refundApplyOrder -> StringUtils.equals(TpRefundApplyOrderStatusEnum.REFUNDING.getCode(), refundApplyOrder.getStatus())); + if (existRefundingApplyOrder) { + LogUtil.error("存在在途的退票申请单,不能继续申请,订单号:{}", orderNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_REFUNDING_APPLY_ORDER); + } + } + } + + private TpRefundApplyOrder assembleRefundApplyOrder(TpRefundApplyOrder refundApplyOrder, TpRefundApplicantDTO refundApplicantDTO) { + TpRefundApplicant refundApplicant = refundApplicantConvert.convertDTO2Domain(refundApplicantDTO); + refundApplicant.setRefundApplyOrderNo(refundApplyOrder.getRefundApplyOrderNo()); + refundApplicant.setTenantId(refundApplyOrder.getTenantId()); + refundApplyOrder.setRefundApplicant(refundApplicant); + return refundApplyOrder; + } + + @Override + public TpResult refundTicketSuccess(TpRefundTicketSuccessDTO refundTicketSuccessDTO) { + String refundApplyOrderNo = refundTicketSuccessDTO.getRefundApplyOrderNo(); + String tenantId = refundTicketSuccessDTO.getTenantId(); + + List refundApplyOrderList = contractDomainService.getRefundApplyOrderList(TpQueryRefundApplyOrderDTO.builder().refundApplyOrderNo(refundApplyOrderNo).tenantId(tenantId).build()); + if (CollectionUtils.isEmpty(refundApplyOrderList)) { + LogUtil.error("退票申请单不存在,退票申请单号为:{}", refundApplyOrderNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_REFUND_APPLY_ORDER); + } + + if (refundApplyOrderList.size() != 1) { + LogUtil.error("同一个退票申请单号对应多笔退票申请单,退票申请单号:{}", refundApplyOrderNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_REFUND_APPLY_ORDER_ORDER); + } + + TpRefundApplyOrder refundApplyOrder = refundApplyOrderList.get(0); + if (!StringUtils.equals(refundApplyOrder.getStatus(), TpRefundApplyOrderStatusEnum.REFUNDING.getCode())) { + LogUtil.error("退票申请单状态非法,无法更新为退票成功", refundApplyOrderNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.INVALID_REFUND_APPLY_ORDER_STATUS_ORDER); + } + + Boolean res = contractDomainService.refundSuccess(refundApplyOrderNo, tenantId); + return TpResult.success(res); + } + + public List convertRefundItemDTOs2Domain(String refundApplyOrderNo, List refundSubjectItemDTOs) { + List subjectItems = refundSubjectItemConvert.convertDTOs2DomainList(refundSubjectItemDTOs); + subjectItems.forEach(subjectItem -> subjectItem.setRefundApplyOrderNo(refundApplyOrderNo)); + return subjectItems; + } + + @Override + public TpResult> pageQueryApplyRefundOrders(TpPageQueryRefundApplyOrderDTO queryDTO) { + PageInfo pageInfo = contractDomainService.pageQueryRefundApplyOrders(queryDTO); + if (pageInfo == null) { + return TpResult.success(CommonPage.buildEmptyPage()); + } + + // 正向支付单 + assemblePaidOrders(pageInfo.getList(), queryDTO.getTenantId()); + + // 退款支付单 + assembleRefundPayOrders(Lists.newArrayList(TpPayOrderStatusEnum.REFUNDING.getCode(), TpPayOrderStatusEnum.REFUND.getCode()), + pageInfo.getList(), queryDTO.getTenantId()); + + return TpResult.success(CommonPage.buildPage(queryDTO.getPageNum(), queryDTO.getPageSize(), pageInfo.getPages(), pageInfo.getTotal(), pageInfo.getList())); + } + + private void assemblePaidOrders(List refundApplyOrderDTOS, String tenantId) { + List orderNos = refundApplyOrderDTOS.stream() + .map(TpRefundApplyOrderDTO::getOrderNo) + .distinct() + .collect(Collectors.toList()); + + List bizNos = Lists.newArrayList(); + orderNos.forEach(orderNo -> bizNos.add(orderNo + TpBizTypeEnum.CUSTOM_BUS_PAY.getCode())); + List paidOrderList = getPayOrderList(bizNos, Lists.newArrayList(TpPayOrderStatusEnum.PAID.getCode()), tenantId); + if (CollectionUtils.isEmpty(paidOrderList)) { + LogUtil.error("查询退票申请单业务,不存在已支付的支付单,数据错误,订单号列表:{}", JSONUtil.toJsonStr(bizNos)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PAY_ORDER_NOT_FOUND); + } + + Map payOrderMap = paidOrderList.stream() + .collect(Collectors.toMap(TpPayOrderDTO::getOrderNo, Function.identity())); + refundApplyOrderDTOS.forEach(refundApplyOrder -> { + TpPayOrderDTO paidOrder = payOrderMap.get(refundApplyOrder.getOrderNo()); + refundApplyOrder.setPaidOrder(paidOrder); + }); + } + + @Override + public TpResult> getRefundApplyOrderList(TpQueryRefundApplyOrderDTO queryDTO) { + List refundApplyOrders = contractDomainService.getRefundApplyOrderList(queryDTO); + if (CollectionUtils.isEmpty(refundApplyOrders)) { + return TpResult.success(null); + } + + // 查询退款支付单 + List refundApplyOrderDTOs = refundApplyOrderConvert.convert2DTOList(refundApplyOrders); + if (CollectionUtils.isNotEmpty(queryDTO.getNeedProperties()) && queryDTO.getNeedProperties().contains(TpRefundApplyOrderModulesEnum.REFUND_PAY_ORDER.getModule())) { + assembleRefundPayOrders(Lists.newArrayList(TpPayOrderStatusEnum.REFUND.getCode(), TpPayOrderStatusEnum.REFUNDING.getCode()), refundApplyOrderDTOs, queryDTO.getTenantId()); + } + + return TpResult.success(refundApplyOrderDTOs); + } + + @Override + public TpResult getRefundDetail(TpQueryRefundDetailDTO queryDTO) { + // 查询退票申请单 + List needProperties = Lists.newArrayList(TpRefundApplyOrderModulesEnum.REFUND_PAY_ORDER.getModule(), TpRefundApplyOrderModulesEnum.REFUND_VOUCHER.getModule(), + TpRefundApplyOrderModulesEnum.REFUND_ROUTE.getModule(), TpRefundApplyOrderModulesEnum.REFUND_APPLICANT.getModule()); + List refundApplyOrders = contractDomainService.getRefundApplyOrderList(TpQueryRefundApplyOrderDTO.builder() + .needProperties(needProperties) + .refundApplyOrderNo(queryDTO.getRefundApplyOrderNo()) + .tenantId(queryDTO.getTenantId()) + .build()); + + if (CollectionUtils.isEmpty(refundApplyOrders)) { + return TpResult.success(null); + } + + Assert.isTrue(refundApplyOrders.size() == 1, "同一个退票申请单号查询到两个退票申请单,数据错误"); + TpRefundApplyOrder refundApplyOrder = refundApplyOrders.get(0); + TpRefundApplyOrderDTO refundApplyOrderDTO = refundApplyOrderConvert.convert2DTO(refundApplyOrder); + + // 查询凭证 + List voucherNos = refundApplyOrder.getRefundVoucherList().stream() + .map(TpRefundVoucher::getVoucherNo) + .collect(Collectors.toList()); + TpVoucherQueryDTO voucherQueryDTO = new TpVoucherQueryDTO(); + List voucherNeedProperties = TpVoucherNeedPropertiesEnum.buildNeedPropertiesList(TpVoucherNeedPropertiesEnum.PASSENGER); + List voucherDTOs = voucherClient.getVoucherList(voucherQueryDTO + .setVoucherNos(voucherNos) + .setTenantId(queryDTO.getTenantId()) + .setNeedProperties(voucherNeedProperties)); + Assert.isTrue(CollectionUtils.isNotEmpty(voucherDTOs), "退票申请单对应的凭证列表为空"); + TpVoucherDTO voucherDTO = voucherDTOs.get(0); + Map voucherMap = voucherDTOs.stream().collect(Collectors.toMap(TpVoucherDTO::getVoucherNo, Function.identity())); + + // 查询正向支付单 + TpPayOrderDTO paidOrder = getPaidOrder(refundApplyOrder.getOrderNo(), queryDTO.getTenantId()); + + // 查询退款支付单 + List refundPayOrders = paymentClient.getPayOrderList(TpPayOrderQueryDTO.builder().bizNo(refundApplyOrder.getRefundApplyOrderNo()).tenantId(queryDTO.getTenantId()).build()); + Assert.notEmpty(refundPayOrders, "退票申请单关联的退款支付单不能为空"); + refundApplyOrderDTO.setRefundPayOrderDTOs(refundPayOrders); + + // 组装退票的信息 + List refundVoucherList = refundApplyOrder.getRefundVoucherList(); + Assert.notEmpty(refundVoucherList, "退票凭证不能为空"); + + // 实名制 + List nonRealNameTicketRefundChoiceDTOs = Lists.newArrayList(); + List realNameTicketRefundChoiceDTOs = Lists.newArrayList(); + if (voucherDTO.getRequiredRealName()) { + Map> passengerVoucherMap = voucherDTOs.stream().collect(Collectors.groupingBy(v -> v.getPassenger().getPassengerNo())); + passengerVoucherMap.forEach((passengerNo, voucherList) -> { + TpRealNameTicketRefundChoiceDTO choiceDTO = new TpRealNameTicketRefundChoiceDTO(); + List refundDateList = Lists.newArrayList(); + voucherList.forEach(v -> { + TpRefundPassengerDTO refundPassengerDTO = TpVoucherPassengerMapStructConvert.INSTANCE.convert2RefundPassengerDTO(v.getPassenger()); + choiceDTO.setRefundPassengerDTO(refundPassengerDTO); + String refundDate = v.getEffectiveStartTime() + GlobalConstants.HORIZONTAL_LINE + v.getEffectiveEndTime(); + choiceDTO.setTripType(v.getTripType()); + refundDateList.add(refundDate); + }); + choiceDTO.setVoucherTravelDateList(refundDateList); + realNameTicketRefundChoiceDTOs.add(choiceDTO); + }); + } else { + for (TpRefundVoucher refundVoucher : refundVoucherList) { + TpNonRealNameTicketRefundChoiceDTO choiceDTO = new TpNonRealNameTicketRefundChoiceDTO(); + TpVoucherDTO voucher = voucherMap.get(refundVoucher.getVoucherNo()); + int perPassengerCount = voucher.getTotalCount() / voucher.getPassengerCount(); + choiceDTO.setRefundPassengerCount(refundVoucher.getRefundCount() / perPassengerCount); + choiceDTO.setVoucherTravelDate(voucher.getEffectiveStartTime() + GlobalConstants.HORIZONTAL_LINE + voucher.getEffectiveEndTime()); + choiceDTO.setTripType(voucher.getTripType()); + nonRealNameTicketRefundChoiceDTOs.add(choiceDTO); + } + } + + // 组装退票日期 + return TpResult.success(TpQueryRefundDetailVO.builder() + .nonRealNameTicketRefundChoiceDTOs(nonRealNameTicketRefundChoiceDTOs) + .realNameTicketRefundChoiceDTOs(realNameTicketRefundChoiceDTOs) + .realNameRefund(voucherDTO.getRequiredRealName()) + .refundApplyOrderDTO(refundApplyOrderDTO) + .paidOrderDTO(paidOrder) + .voucherType(voucherDTO.getType()) + .build()); + } + + private List getPayOrderList(List bizNos, List targetStatusList, String tenantId) { + return paymentClient.getPayOrderList(TpPayOrderQueryDTO.builder() + .bizNos(bizNos) + .targetStatusList(targetStatusList) + .tenantId(tenantId) + .build()); + } + + private TpPayOrderDTO getPaidOrder(String orderNo, String tenantId) { + String bizNo = orderNo + TpBizTypeEnum.CUSTOM_BUS_PAY.getCode(); + List paidOrders = getPayOrderList(Lists.newArrayList(bizNo), Lists.newArrayList(TpPayOrderStatusEnum.PAID.getCode()), tenantId); + + if (CollectionUtils.isEmpty(paidOrders)) { + return null; + } + + if (paidOrders.size() > 1) { + LogUtil.error("存在重复支付的支付单,数据错误,无法进行退票,订单号:{}", JSONUtil.toJsonStr(bizNo)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.CALCULATE_REFUND_AMOUNT_DUPLICATE_PAID_ORDER); + } + + return paidOrders.get(0); + } + + private void assembleRefundPayOrders(List targetStatusList, List refundApplyOrders, String tenantId) { + List refundApplyOrderNos = refundApplyOrders.stream() + .map(TpRefundApplyOrderDTO::getRefundApplyOrderNo) + .collect(Collectors.toList()); + + List payOrders = getPayOrderList(refundApplyOrderNos, targetStatusList, tenantId); + if (CollectionUtils.isNotEmpty(payOrders)) { + Map> payOrderMap = payOrders.stream() + .collect(Collectors.groupingBy(TpPayOrderDTO::getBizNo)); + refundApplyOrders.forEach(refundApplyOrder -> { + List payOrderDTOS = payOrderMap.get(refundApplyOrder.getRefundApplyOrderNo()); + refundApplyOrder.setRefundPayOrderDTOs(payOrderDTOS); + }); + } + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedApplyFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedApplyFacadeImpl.java new file mode 100644 index 0000000..e25f9d5 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedApplyFacadeImpl.java @@ -0,0 +1,137 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.biz.convert.TpOrderChangeBizConverter; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderChangedApplyFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeApplyVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeItemVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItem; +import com.deepinnet.tptradecore.core.service.order.TpOrderChangedApplyDomainService; +import org.apache.dubbo.config.annotation.DubboService; + +import javax.annotation.Resource; +import java.util.List; + +@DubboService +public class TpOrderChangedApplyFacadeImpl implements TpOrderChangedApplyFacade { + + @Resource + private TpOrderChangeBizConverter orderChangeBizConverter; + @Resource + private TpOrderChangedApplyDomainService orderChangedDomainService; + @Override + public TpResult getOrderChangedApplyDetail(TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderChangeApplyQueryDTO.getOriginalOrderNo())){ + orderChangeApplyQueryDTO.setOriginalOrderNo(orderChangeApplyQueryDTO.getOrderNo()); + } + TpOrderChangeApply tpOrderChangeApply = orderChangedDomainService.getOrderChangedApplyDetail(orderChangeApplyQueryDTO); + return TpResult.success(orderChangeBizConverter.model2VO(tpOrderChangeApply)); + } + + @Override + public TpResult> listOrderChangeApply(TpOrderChangeApplyListDTO tpOrderChangeApplyListDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(tpOrderChangeApplyListDTO.getOriginalOrderNo())){ + tpOrderChangeApplyListDTO.setOriginalOrderNo(tpOrderChangeApplyListDTO.getOrderNo()); + } + List tpOrderChangeApplyList = orderChangedDomainService.listOrderChangeApply(tpOrderChangeApplyListDTO); + return TpResult.success(orderChangeBizConverter.model2VOList(tpOrderChangeApplyList)); + } + + + @Override + public TpResult> batchQueryOrderChangeApplyByOrderNos(TpOrderChangeApplyBatchListDTO tpOrderChangeApplyListDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(CollUtil.isEmpty(tpOrderChangeApplyListDTO.getOriginalOrderNos())){ + tpOrderChangeApplyListDTO.setOriginalOrderNos(tpOrderChangeApplyListDTO.getOrderNos()); + } + List tpOrderChangeApplyList = orderChangedDomainService.batchQueryOrderChangeApplyByOrderNos(tpOrderChangeApplyListDTO); + return TpResult.success(orderChangeBizConverter.model2VOList(tpOrderChangeApplyList)); + } + + @Override + public TpResult getLatestOrderChangedApplyDetail(TpOrderChangeApplyLatestDetailDTO tpOrderChangeApplyLatestDetailDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(tpOrderChangeApplyLatestDetailDTO.getOriginalOrderNo())){ + tpOrderChangeApplyLatestDetailDTO.setOriginalOrderNo(tpOrderChangeApplyLatestDetailDTO.getOrderNo()); + } + TpOrderChangeApply tpOrderChangeApply = orderChangedDomainService.getLatestOrderChangedApplyDetail(tpOrderChangeApplyLatestDetailDTO); + return TpResult.success(orderChangeBizConverter.model2VO(tpOrderChangeApply)); + } + + @Override + public TpResult> listOrderChangedItems(TpOrderChangeItemListDTO orderChangeItemListDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderChangeItemListDTO.getOriginalOrderNo())){ + orderChangeItemListDTO.setOriginalOrderNo(orderChangeItemListDTO.getOrderNo()); + } + List tpOrderChangeItemList = orderChangedDomainService.listOrderChangedItems(orderChangeItemListDTO); + return TpResult.success(orderChangeBizConverter.model2ItemVOList(tpOrderChangeItemList)); + } + + @Override + public TpResult createOrderChangeApply(TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderChangeApplyCreatedDTO.getOriginalOrderNo())){ + orderChangeApplyCreatedDTO.setOriginalOrderNo(orderChangeApplyCreatedDTO.getOrderNo()); + } + Boolean createFlag = orderChangedDomainService.createOrderChangeApply(orderChangeApplyCreatedDTO); + if(createFlag){ + return TpResult.success(createFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_CREATE_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_CREATE_ERROR.getDesc()); + + } + + @Override + public TpResult pushOrderChangedApplyStatus(TpOrderChangeApplyStatusUpdateDTO statusUpdateDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(statusUpdateDTO.getOriginalOrderNo())){ + statusUpdateDTO.setOriginalOrderNo(statusUpdateDTO.getOrderNo()); + } + Boolean statusUpdateFlag = orderChangedDomainService.pushOrderChangedApplyStatus(statusUpdateDTO); + if(statusUpdateFlag){ + return TpResult.success(statusUpdateFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR.getDesc()); + + } + + @Override + public TpResult submitApprovedApply(TpOrderChangeApplyApprovedSubmitDTO approvedSubmitDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(approvedSubmitDTO.getOriginalOrderNo())){ + approvedSubmitDTO.setOriginalOrderNo(approvedSubmitDTO.getOrderNo()); + } + Boolean statusUpdateFlag = orderChangedDomainService.submitApprovedApply(approvedSubmitDTO); + if(statusUpdateFlag){ + return TpResult.success(statusUpdateFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_APPROVED_UPDATE_ERROR.getDesc()); + + } + + @Override + public TpResult submitReduceFscApply(TpOrderChangeApplyRscApplyDTO rfscApplyDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(rfscApplyDTO.getOriginalOrderNo())){ + rfscApplyDTO.setOriginalOrderNo(rfscApplyDTO.getOrderNo()); + } + Boolean statusUpdateFlag = orderChangedDomainService.submitReduceFscApply(rfscApplyDTO); + if(statusUpdateFlag){ + return TpResult.success(statusUpdateFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_APPROVED_UPDATE_ERROR.getDesc()); + + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedFacadeImpl.java new file mode 100644 index 0000000..ec96312 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderChangedFacadeImpl.java @@ -0,0 +1,108 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.biz.convert.TpOrderChangeBizConverter; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderChangedFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeApplyVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeItemVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItem; +import com.deepinnet.tptradecore.core.service.order.TpOrderChangedApplyDomainService; +import org.apache.dubbo.config.annotation.DubboService; + +import javax.annotation.Resource; +import java.util.List; + +@DubboService +@Deprecated +public class TpOrderChangedFacadeImpl implements TpOrderChangedFacade { + + @Resource + private TpOrderChangeBizConverter orderChangeBizConverter; + @Resource + private TpOrderChangedApplyDomainService orderChangedDomainService; + @Override + public TpResult getOrderChangedApplyDetail(TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderChangeApplyQueryDTO.getOriginalOrderNo())){ + orderChangeApplyQueryDTO.setOriginalOrderNo(orderChangeApplyQueryDTO.getOrderNo()); + } + TpOrderChangeApply tpOrderChangeApply = orderChangedDomainService.getOrderChangedApplyDetail(orderChangeApplyQueryDTO); + return TpResult.success(orderChangeBizConverter.model2VO(tpOrderChangeApply)); + } + + @Override + public TpResult> listOrderChangeApply(TpOrderChangeApplyListDTO tpOrderChangeApplyListDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(tpOrderChangeApplyListDTO.getOriginalOrderNo())){ + tpOrderChangeApplyListDTO.setOriginalOrderNo(tpOrderChangeApplyListDTO.getOrderNo()); + } + List tpOrderChangeApplyList = orderChangedDomainService.listOrderChangeApply(tpOrderChangeApplyListDTO); + return TpResult.success(orderChangeBizConverter.model2VOList(tpOrderChangeApplyList)); + } + + + @Override + public TpResult> batchQueryOrderChangeApplyByOrderNos(TpOrderChangeApplyBatchListDTO tpOrderChangeApplyListDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(CollUtil.isEmpty(tpOrderChangeApplyListDTO.getOriginalOrderNos())){ + tpOrderChangeApplyListDTO.setOriginalOrderNos(tpOrderChangeApplyListDTO.getOrderNos()); + } + List tpOrderChangeApplyList = orderChangedDomainService.batchQueryOrderChangeApplyByOrderNos(tpOrderChangeApplyListDTO); + return TpResult.success(orderChangeBizConverter.model2VOList(tpOrderChangeApplyList)); + } + + @Override + public TpResult getLatestOrderChangedApplyDetail(TpOrderChangeApplyLatestDetailDTO tpOrderChangeApplyLatestDetailDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(tpOrderChangeApplyLatestDetailDTO.getOriginalOrderNo())){ + tpOrderChangeApplyLatestDetailDTO.setOriginalOrderNo(tpOrderChangeApplyLatestDetailDTO.getOrderNo()); + } + TpOrderChangeApply tpOrderChangeApply = orderChangedDomainService.getLatestOrderChangedApplyDetail(tpOrderChangeApplyLatestDetailDTO); + return TpResult.success(orderChangeBizConverter.model2VO(tpOrderChangeApply)); + } + + @Override + public TpResult> listOrderChangedItems(TpOrderChangeItemListDTO orderChangeItemListDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderChangeItemListDTO.getOriginalOrderNo())){ + orderChangeItemListDTO.setOriginalOrderNo(orderChangeItemListDTO.getOrderNo()); + } + List tpOrderChangeItemList = orderChangedDomainService.listOrderChangedItems(orderChangeItemListDTO); + return TpResult.success(orderChangeBizConverter.model2ItemVOList(tpOrderChangeItemList)); + } + + @Override + public TpResult createOrderChangeApply(TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderChangeApplyCreatedDTO.getOriginalOrderNo())){ + orderChangeApplyCreatedDTO.setOriginalOrderNo(orderChangeApplyCreatedDTO.getOrderNo()); + } + Boolean createFlag = orderChangedDomainService.createOrderChangeApply(orderChangeApplyCreatedDTO); + if(createFlag){ + return TpResult.success(createFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_CREATE_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_CREATE_ERROR.getDesc()); + + } + + @Override + public TpResult pushOrderChangedApplyStatus(TpOrderChangeApplyStatusUpdateDTO statusUpdateDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(statusUpdateDTO.getOriginalOrderNo())){ + statusUpdateDTO.setOriginalOrderNo(statusUpdateDTO.getOrderNo()); + } + Boolean statusUpdateFlag = orderChangedDomainService.pushOrderChangedApplyStatus(statusUpdateDTO); + if(statusUpdateFlag){ + return TpResult.success(statusUpdateFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR.getDesc()); + + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderDispatchFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderDispatchFacadeImpl.java new file mode 100644 index 0000000..3f4384a --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderDispatchFacadeImpl.java @@ -0,0 +1,143 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.biz.convert.TpOrderDispatchBizConverter; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderDispatchFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import com.deepinnet.tptradecore.core.model.order.TpOrderReceived; +import com.deepinnet.tptradecore.core.service.order.TpOrderDispatchDomainService; +import org.apache.dubbo.config.annotation.DubboService; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@DubboService +public class TpOrderDispatchFacadeImpl implements TpOrderDispatchFacade +{ + @Resource + private TpOrderDispatchBizConverter orderDispatchBizConverter; + + @Resource + private TpOrderDispatchDomainService orderDispatchDomainService; + + @Override + public TpResult dispatchOrder(TpOrderDispatchCreatedDTO dispatchCreatedDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(dispatchCreatedDTO.getOriginalOrderNo())){ + dispatchCreatedDTO.setOriginalOrderNo(dispatchCreatedDTO.getOrderNo()); + } + Boolean dispatchFlag = orderDispatchDomainService.dispatchOrder(dispatchCreatedDTO); + if(dispatchFlag){ + return TpResult.success(dispatchFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_DISPATCH_CREATE_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_DISPATCH_CREATE_ERROR.getDesc()); + + } + + @Override + public TpResult callBackOrder(TpOrderDispatchCallBackDTO callBackDTO) { + + Boolean callBackFlag = orderDispatchDomainService.callBackOrder(callBackDTO); + if(callBackFlag){ + return TpResult.success(callBackFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_DISPATCH_CALLBACK_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_DISPATCH_CALLBACK_ERROR.getDesc()); + + } + + @Override + public TpResult giveBackOrder(TpOrderDispatchGiveBackDTO giveBackDTO) { + + Boolean callBackFlag = orderDispatchDomainService.giveBackOrder(giveBackDTO); + if(callBackFlag){ + return TpResult.success(callBackFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_DISPATCH_GIVEBACK_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_DISPATCH_GIVEBACK_ERROR.getDesc()); + + } + + @Override + public TpResult getOrderDispatchDetail(TpOrderDispatchDetailDTO orderDispatchDetailDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(orderDispatchDetailDTO.getOriginalOrderNo())){ + orderDispatchDetailDTO.setOriginalOrderNo(orderDispatchDetailDTO.getOrderNo()); + } + String tenantId = orderDispatchDetailDTO.getTenantId(); + String dispatchNo = orderDispatchDetailDTO.getDispatchNo(); + String originalOrderNo = orderDispatchDetailDTO.getOriginalOrderNo(); + List statuses = orderDispatchDetailDTO.getStatuses(); + List statusCodes = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(statuses)){ + statuses.forEach(statusType->{ + TpOrderDispatchStatusEnum statusEnum = TpOrderDispatchStatusEnum.getOrderDispatchStatusByType(statusType); + if(statusEnum != null){ + statusCodes.add(statusEnum.getStatus()); + } + }); + } + + TpOrderDispatch tpOrderDispatch = orderDispatchDomainService.getDispatchOrder(tenantId,dispatchNo,originalOrderNo,statusCodes); + return TpResult.success(orderDispatchBizConverter.model2VO(tpOrderDispatch)); + } + + @Override + public TpResult> listOrderDispatchDetail(TpOrderDispatchListDTO dto) { + + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(CollUtil.isEmpty(dto.getOriginalOrderNoList())){ + dto.setOriginalOrderNoList(dto.getOrderNoList()); + } + String tenantId = dto.getTenantId(); + List originalOrderNoList = dto.getOriginalOrderNoList(); + List statuses = dto.getStatuses(); + List tpOrderDispatchList = orderDispatchDomainService.listOrderDispatchDetail(tenantId,originalOrderNoList,statuses); + return TpResult.success(orderDispatchBizConverter.model2VOList(tpOrderDispatchList)); + + } + + @Override + public TpResult dispatchFleet(TpOrderDispatchFleetCreatedDTO fleetCreatedDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(fleetCreatedDTO.getOriginalOrderNo())){ + fleetCreatedDTO.setOriginalOrderNo(fleetCreatedDTO.getOrderNo()); + } + Boolean dispatchFlag = orderDispatchDomainService.dispatchFleet(fleetCreatedDTO); + if(dispatchFlag){ + return TpResult.success(dispatchFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_DISPATCH_FLEET_CREATE_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_DISPATCH_FLEET_CREATE_ERROR.getDesc()); + + } + + @Override + public TpResult pushDispatchStatus(TpOrderDispatchStatusUpdateDTO statusUpdateDTO) { + //TODO 兼容逻辑,带前端修改好后,删除此逻辑 + if(StrUtil.isEmpty(statusUpdateDTO.getOriginalOrderNo())){ + statusUpdateDTO.setOriginalOrderNo(statusUpdateDTO.getOrderNo()); + } + String tenantId = statusUpdateDTO.getTenantId(); + String dispatchNo = statusUpdateDTO.getDispatchNo(); + String originalOrderNo = statusUpdateDTO.getOriginalOrderNo(); + TpOrderDispatchStatusEnum tpOrderDispatchStatusEnum = TpOrderDispatchStatusEnum.getOrderDispatchStatusByType(statusUpdateDTO.getTargetStatus()); + Boolean pushDispatchStatus = orderDispatchDomainService.pushDispatchStatus(tenantId,dispatchNo,originalOrderNo,tpOrderDispatchStatusEnum); + if(pushDispatchStatus){ + return TpResult.success(pushDispatchStatus.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_DISPATCH_CREATE_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_DISPATCH_CREATE_ERROR.getDesc()); + + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderFacadeImpl.java new file mode 100644 index 0000000..78419e7 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderFacadeImpl.java @@ -0,0 +1,2509 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tpbaseopcore.common.dto.dispatch.query.TpCharteredBusDispatchVO; +import com.deepinnet.tpbaseopcore.common.dto.dispatch.query.TpCharteredBusTripVO; +import com.deepinnet.tpbaseopcore.common.dto.dispatch.sync.TpCharteredBusTripDTO; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.BusDriverDTO; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.ShuttleOverviewDTO; +import com.deepinnet.tpbaseopcore.common.enums.DispatchStatusEnum; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsChangeDispatchNotifyCarTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsRemindCarTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsTripEndNeedUserPayTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsTripEndRefundTemplate; +import com.deepinnet.tpconfigcore.common.vo.TpTenantContractListDTO; +import com.deepinnet.tpproductcore.common.dto.inventory.TpInventoryOperationDTO; +import com.deepinnet.tpproductcore.common.enums.SalesUnitElementCodeEnum; +import com.deepinnet.tpproductcore.common.enums.TpInventoryBizTypeEnum; +import com.deepinnet.tpproductcore.common.enums.TpInventoryOperationTypeEnum; +import com.deepinnet.tpproductcore.common.vo.TpSalesUnitCarPoolVO; +import com.deepinnet.tptradecore.biz.constants.TpOrderCalcFormula; +import com.deepinnet.tptradecore.biz.convert.TpOrderChangeBizConverter; +import com.deepinnet.tptradecore.biz.convert.TpOrderDispatchBizConverter; +import com.deepinnet.tptradecore.biz.enums.TpOrderIdentityFlagEnum; +import com.deepinnet.tptradecore.biz.enums.TpOrderServiceChargeFreeEnum; +import com.deepinnet.tptradecore.biz.factory.TpOrderPushStatusStrategyFactory; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderConverter; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderPriceRecordDetailConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderCarpoolRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderCarpoolRecordRepository; +import com.deepinnet.tptradecore.common.dto.contract.TpQueryRefundApplyOrderDTO; +import com.deepinnet.tptradecore.common.dto.contract.TpRefundApplyOrderDTO; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpRescheduleInvalidVoucherDTO; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherCheckSuccessDTO; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherQueryDTO; +import com.deepinnet.tptradecore.common.enums.TpBizTypeEnum; +import com.deepinnet.tptradecore.common.enums.contract.TpRefundApplyOrderModulesEnum; +import com.deepinnet.tptradecore.common.enums.contract.TpRefundApplyOrderStatusEnum; +import com.deepinnet.tptradecore.common.enums.order.*; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskStatusEnum; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.enums.trans.TpPayOrderStatusEnum; +import com.deepinnet.tptradecore.common.enums.trans.TpVoucherNeedPropertiesEnum; +import com.deepinnet.tptradecore.common.enums.voucher.TpQueryScopeEnum; +import com.deepinnet.tptradecore.common.enums.voucher.TpVoucherValidationTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderFacade; +import com.deepinnet.tptradecore.common.service.facade.trans.TpPaymentFacade; +import com.deepinnet.tptradecore.common.service.facade.voucher.TpVoucherFacade; +import com.deepinnet.tptradecore.common.service.integration.client.*; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.MessageConstants; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.MessageSysConstants; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.BaseMessageEntity; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.CarPoolPosGuoLangMessageEntity; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.OrderDelayMessageEntity; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.common.vo.order.*; +import com.deepinnet.tptradecore.common.vo.trans.TpPreparePayVO; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderMainEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderTypeEnum; +import com.deepinnet.tptradecore.core.model.order.*; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.order.TpOrderChangedApplyDomainService; +import com.deepinnet.tptradecore.core.service.order.TpOrderDispatchDomainService; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.deepinnet.tptradecore.core.service.task.TpScheduleTaskService; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.dubbo.config.annotation.DubboService; +import org.jetbrains.annotations.NotNull; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static com.deepinnet.tptradecore.common.enums.order.TpOrderTravelTripStatusEnum.ALREADY_DISPATCH; + +/** + *

+ * 订单facade实现 + *

+ * + * @author chenjiaju + * @since 2023/8/18 + */ + +@DubboService +@Service +public class TpOrderFacadeImpl implements TpOrderFacade { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderFacadeImpl.class); + + @Resource + private TpOrderConverter tpOrderConverter; + + @Resource + private TpOrderPriceRecordDetailConverter tpOrderPriceRecordDetailConverter; + + @Resource + private TpOrderChangeBizConverter orderChangeBizConverter; + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Resource + private TpPaymentClient tpPaymentClient; + + @Resource + private TpVoucherClient tpVoucherClient; + + @Resource + private TpContractClient tpContractClient; + + @Resource + private TpSequenceClient tpSequenceClient; + + @Resource + private TpOrderPushStatusStrategyFactory tpOrderPushStatusStrategyFactory; + + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private MessageClient messageClient; + + @Resource + private TpRouteClient tpRouteClient; + + @Resource + private TpOrderDispatchDomainService tpOrderDispatchDomainService; + + @Resource + private TpOrderDispatchBizConverter orderDispatchBizConverter; + + @Resource + private TpOrderChangedApplyDomainService tpOrderChangedDomainService; + + @Resource + private TpTripClient tpTripClient; + + @Resource + private TpSmsClient tpSmsClient; + + @Resource + private TpOrderDispatchClient tpOrderDispatchClient; + + @Resource + private TpTenantClient tpTenantClient; + + @Resource + private RedissonClient redissonClient; + + @Resource + private TpVoucherFacade voucherFacade; + + @Resource + private TpInventoryClient inventoryClient; + + @Resource + private TpOrderCarpoolRecordRepository carpoolRecordRepository; + + @Resource + private TpProductSalesUnitClient productSalesUnitClient; + + @Resource + private TpScheduleTaskService scheduleTaskService; + + @Resource + private TpPaymentFacade paymentFacade; + + @Value("${spring.profiles.active}") + private String env; + + @Value("${spring.application.name}") + private String applicationName; + + private final static List NEED_CONFIRM_STATUS = ListUtil.toList(TpOrderStatusEnum.ORDER_NEED_CONFIRM.getStatus(), TpOrderStatusEnum.ORDER_CHANGE_AUDITING.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_AUDITING.getStatus()); + + private static final String DECIMAL_ZERO = "0.00"; + + @Override + public TpResult queryHasUnverifiedOrder(TpOrderUnverifiedQueryDTO dto) { + checkHasUnverifiedOrderParam(dto); + boolean result; + + // 查询线路是否存在未核销订单 + if (StrUtil.isEmpty(dto.getShuttleNo())) { + result = tpOrderDomainService.queryRouteHasUnverifiedOrder(dto.getRouteNo(), dto.getTenantId()); + } else { + Assert.hasText(dto.getShuttleNo(), "shuttleNo is null"); + result = tpOrderDomainService.queryRouteScheduleHasUnverifiedOrder(dto.getRouteNo(), dto.getShuttleNo(), dto.getTenantId()); + } + + return TpResult.success(result); + } + + @Override + public TpResult> orderList(TpOrderListQueryDTO dto) { + CommonPage orderList = tpOrderDomainService.getOrderList(buildTpOrderQueryList(dto)); + + if (CollUtil.isNotEmpty(orderList.getList())) { + orderList.getList().forEach(TpOrderFacadeImpl::setPassengerDatas); + } + + CommonPage result = buildCustomerBusListPage(orderList); + + return TpResult.success(result); + } + + private CommonPage buildCustomerBusListPage(CommonPage orderList) { + CommonPage result = new CommonPage<>(); + result.setPageNum(orderList.getPageNum()); + result.setPageSize(orderList.getPageSize()); + result.setTotal(orderList.getTotal()); + result.setList(tpOrderConverter.modelList2VOList(orderList.getList())); + return result; + } + + private static void setPassengerDatas(TpOrder order) { + // 主订单 + if (ObjectUtil.equal(order.getMain(), TpOrderMainEnum.MAIN_ORDER.getMain())) { + setPassengerNosOrPassengerNames(order); + } else { + // 子订单设置 + order.getSubOrders().forEach(TpOrderFacadeImpl::setPassengerNosOrPassengerNames); + } + } + + private static void setPassengerNosOrPassengerNames(TpOrder order) { + // 非实名设置购买人数 + if (ObjectUtil.equal(order.getIdentityVerificat(), TpOrderIdentityStatusEnum.NOT_REAL_NAME.getStatus())) { + order.setPassengerNumber(order.getOrderSubjectItem().get(0).getCount()); + } else { + List distinctPassengerSubjectItems = order.getOrderSubjectItem().stream().filter(distinctByKey(TpOrderSubjectItem::getPassengerNo)).collect(Collectors.toList()); + order.setPassengerNumber(distinctPassengerSubjectItems.size()); + order.setPassengerNames(distinctPassengerSubjectItems.stream().map(e -> e.getPassenger().getPassengerName()).collect(Collectors.toList())); + } + } + + public static Predicate distinctByKey(Function keyExtractor) { + Map seen = new ConcurrentHashMap<>(); + return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; + } + + @Override + public TpResult getOrderDetail(TpOrderQueryDTO dto) { + // 校验参数 + checkOrderDetailParam(dto); + List needModules = buildNeedModules(dto.getNeedModules()); + // List needModules = buildDetailNeedModules(); + + // 根据原始订单号 + TpOrder order; + if (StrUtil.isNotEmpty(dto.getOriginalOrderNo())) { + order = tpOrderDomainService.getOrderByOriginalOrderNo(dto.getTenantId(), dto.getUserNo(), dto.getOriginalOrderNo(), needModules); + } else { + order = tpOrderDomainService.getOrder(dto.getTenantId(), dto.getUserNo(), dto.getOrderNo(), needModules); + } + + if (CollUtil.isNotEmpty(order.getOrderSubjectItem())) { + setPassengerDatas(order); + } + + // 查询订单详情 + TpOrderDetailVO orderDetailVO = tpOrderConverter.model2DetailVO(order); + + String orderNo; + if (ObjectUtil.equals(TpOrderTypeEnum.PACKING_ORDER.getType(), orderDetailVO.getType())) { + orderNo = order.getOriginalOrderNo(); + } else { + orderNo = order.getOrderNo(); + } + + // 查询支付单 + List payOrderList = tpPaymentClient.getPayOrderList(TpPayOrderQueryDTO.builder() + .orderNo(orderNo) + .tenantId(dto.getTenantId()) + .targetStatusList(ListUtil.toList(TpPayOrderStatusEnum.PAID.getCode(), TpPayOrderStatusEnum.REFUND.getCode(), TpPayOrderStatusEnum.REFUNDING.getCode())).build()); + orderDetailVO.setPayOrders(payOrderList); + + // 查询凭证列表 + if (Objects.equals(orderDetailVO.getType(), TpOrderTypeEnum.CUSTOMIZED_ORDER.getType()) || Objects.equals(orderDetailVO.getType(), TpOrderTypeEnum.CUSTOMIZED_RESCHEDULE_ORDER.getType())) { + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + List needProperties = TpVoucherNeedPropertiesEnum.buildNeedPropertiesList(TpVoucherNeedPropertiesEnum.BIZ_RULE, TpVoucherNeedPropertiesEnum.PASSENGER); + queryDTO.setNeedProperties(needProperties); + List voucherList = tpVoucherClient.getOrderDetailVoucherList(queryDTO.setOrderNo(order.getOrderNo()).setTenantId(order.getTenantId()).setQueryScope(TpQueryScopeEnum.TODAY.getCode())); + orderDetailVO.setVoucherDTOs(voucherList); + } + + // 查询退款单 + if (ObjectUtil.equals(order.getType(), TpOrderTypeEnum.CUSTOMIZED_ORDER.getType())) { + List refundOrders = tpContractClient.getRefundOrders(TpQueryRefundApplyOrderDTO.builder() + .orderNo(order.getOriginalOrderNo()) + .tenantId(dto.getTenantId()) + .needProperties(Lists.newArrayList(TpRefundApplyOrderModulesEnum.REFUND_PAY_ORDER.getModule(), TpRefundApplyOrderModulesEnum.REFUND_SUBJECT_ITEM.getModule(), TpRefundApplyOrderModulesEnum.REFUND_PASSENGER.getModule())) + .targetStatusList(ListUtil.toList(TpRefundApplyOrderStatusEnum.REFUNDED_SUCCESS.getCode(), TpRefundApplyOrderStatusEnum.REFUNDING.getCode())).build()); + if (CollectionUtils.isEmpty(refundOrders)) { + orderDetailVO.setRefundOrders(null); + } else { + List sortedRefundOrders = refundOrders.stream() + .sorted(Comparator.comparing(TpRefundApplyOrderDTO::getApplyTime).reversed()) + .collect(Collectors.toList()); + orderDetailVO.setRefundOrders(sortedRefundOrders); + } + } else if (ObjectUtil.equals(order.getType(), TpOrderTypeEnum.CUSTOMIZED_RESCHEDULE_ORDER.getType())) { + List refundOrders = tpContractClient.getRefundOrders(TpQueryRefundApplyOrderDTO.builder() + .orderNo(order.getOrderNo()) + .tenantId(dto.getTenantId()) + .needProperties(Lists.newArrayList(TpRefundApplyOrderModulesEnum.REFUND_PAY_ORDER.getModule(), TpRefundApplyOrderModulesEnum.REFUND_SUBJECT_ITEM.getModule(), TpRefundApplyOrderModulesEnum.REFUND_PASSENGER.getModule())) + .targetStatusList(ListUtil.toList(TpRefundApplyOrderStatusEnum.REFUNDED_SUCCESS.getCode(), TpRefundApplyOrderStatusEnum.REFUNDING.getCode())).build()); + if (CollectionUtils.isEmpty(refundOrders)) { + orderDetailVO.setRefundOrders(null); + } else { + List sortedRefundOrders = refundOrders.stream() + .sorted(Comparator.comparing(TpRefundApplyOrderDTO::getApplyTime).reversed()) + .collect(Collectors.toList()); + orderDetailVO.setRefundOrders(sortedRefundOrders); + } + } else { + List refundPayOrders = payOrderList.stream() + .filter(payOrder -> StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.REFUND.getCode()) + || StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.REFUNDING.getCode())) + .collect(Collectors.toList()); + orderDetailVO.setRefundPayOrders(refundPayOrders); + } + + // 查询车辆 / 司机信息 + queryShuttleDrivers(dto, orderDetailVO); + + if (ObjectUtil.equals(orderDetailVO.getType(), TpOrderTypeEnum.PACKING_ORDER.getType())) { + orderAmountCalculate(orderDetailVO); + } + + if (ObjectUtil.equals(orderDetailVO.getType(), TpOrderTypeEnum.CARPOOL_ORDER.getType())) { + List itemNos = orderDetailVO.getOrderSubjectItem().stream().map(TpOrderSubjectItemVO::getItemNo).collect(Collectors.toList()); + TpCarPoolListQueryDTO saleUnitCarpoolQueryDto = new TpCarPoolListQueryDTO(); + saleUnitCarpoolQueryDto.setSalesUnitCodeList(itemNos); + saleUnitCarpoolQueryDto.setTenantId(dto.getTenantId()); + + List tpSalesUnitCarPoolVOS = productSalesUnitClient.listCarpools(saleUnitCarpoolQueryDto); + + orderDetailVO.setPreSaleEndTime(tpSalesUnitCarPoolVOS.get(0).getPreSaleEndTime()); + orderDetailVO.setCarpoolEndTime(tpSalesUnitCarPoolVOS.get(0).getCancelCarPoolTime()); + orderDetailVO.setCarPoolLimitNum(tpSalesUnitCarPoolVOS.get(0).getCarPoolLimitNum()); + orderDetailVO.setSoldQuantity(tpSalesUnitCarPoolVOS.get(0).getSoldQuantity()); + orderDetailVO.setBeginQuantity(tpSalesUnitCarPoolVOS.get(0).getBeginQuantity()); + orderDetailVO.setCarPoolStatus(tpSalesUnitCarPoolVOS.get(0).getCarPoolStatus()); + } + + return TpResult.success(orderDetailVO); + } + + private void orderAmountCalculate(TpOrderDetailVO orderDetail) { + // 订金支付金额 + BigDecimal depositPayAmount = new BigDecimal(orderDetail.getPayAmount()); + + // 订单应付金额 + BigDecimal orderNeedPayAmount = new BigDecimal(orderDetail.getPayableAmount()); + + // 已付金额 + BigDecimal paidAmount = new BigDecimal(DECIMAL_ZERO); + + List paidOrders = orderDetail.getPayOrders().stream().filter(payOrder -> ObjectUtil.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())).collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(paidOrders)) { + for (TpPayOrderDTO paidOrder : paidOrders) { + paidAmount = paidAmount.add(new BigDecimal(paidOrder.getPayAmount())).setScale(2, RoundingMode.DOWN); + } + } + + orderDetail.setPaidAmount(paidAmount.toString()); + + // 订单手续费金额 + BigDecimal orderServiceChargeAmount = BigDecimal.ZERO; + List orderChargeRecords = orderDetail.getOrderChargeRecords(); + + if (CollUtil.isNotEmpty(orderChargeRecords)) { + List chargeRecords = orderDetail.getOrderChargeRecords().stream().filter(record -> ObjectUtil.equals(TpOrderServiceChargeFreeEnum.NOT_FREE.getCode(), record.getFreeServiceCharge())).collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(chargeRecords)) { + for (TpOrderChargeRecordVO chargeRecord : chargeRecords) { + orderServiceChargeAmount = orderServiceChargeAmount.add(ObjectUtil.isNull(chargeRecord.getServiceCharge()) ? BigDecimal.ZERO : new BigDecimal(chargeRecord.getServiceCharge())); + } + } + } + + + // 应付金额 + 手续费 + BigDecimal orderTotalNeedPayAmount = orderNeedPayAmount.add(orderServiceChargeAmount); + + TpOrderStatusEnum statusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(orderDetail.getStatus(), orderDetail.getType()); + + switch (statusEnum) { + case ORDER_NEED_CONFIRM: + orderDetail.setCurrentNeedPayAmount(orderDetail.getPayableAmount()); + break; + case ORDER_CONFIRMED: + case ORDER_DEPOSIT_NEED_PAY: + orderDetail.setCurrentNeedPayAmount(orderDetail.getPayAmount()); + break; + case ORDER_CANCEL_AUDITING: + case ORDER_CANCEL_AUDITED: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + if (depositPayAmount.compareTo(orderServiceChargeAmount) > 0) { + // 取消审核中 | 审核通过 应退金额 + orderDetail.setCurrentNeedRefundAmount(depositPayAmount.subtract(orderServiceChargeAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_CANCEL_NEED_REFUND_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_CANCEL_NEED_REFUND_AMOUNT_WITH_SERVICE_CHARGE); + } else if (depositPayAmount.compareTo(orderServiceChargeAmount) < 0) { + // 取消审核中 | 审核通过 应付金额 + orderDetail.setCurrentNeedPayAmount(orderServiceChargeAmount.subtract(depositPayAmount).toString()); + orderDetail.setCalcFormula(TpOrderCalcFormula.ORDER_CANCEL_NEED_PAY_AMOUNT_WITH_SERVICE_CHARGE); + } else { + // 取消审核中 | 审核通过 + // 应退 0.00 应付 0.00 + // 取消订单 不退不补,不展示计算公式 + orderDetail.setCurrentNeedRefundAmount(DECIMAL_ZERO); + orderDetail.setCurrentNeedPayAmount(DECIMAL_ZERO); + } + break; + case ORDER_CANCEL_REFUNDING: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 应退金额 + orderDetail.setCurrentNeedRefundAmount(depositPayAmount.subtract(orderServiceChargeAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_CANCEL_REFUNDING_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_CANCEL_REFUNDING_WITH_SERVICE_CHARGE); + break; + case ORDER_CANCEL_REFUNDED: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 已退金额 + orderDetail.setRefundedAmount(depositPayAmount.subtract(orderServiceChargeAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_CANCEL_REFUNDED_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_CANCEL_REFUNDED_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_CANCEL_NEED_PAY: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 取消 应付金额 + orderDetail.setCurrentNeedPayAmount(orderServiceChargeAmount.subtract(depositPayAmount).toString()); + orderDetail.setCalcFormula(TpOrderCalcFormula.ORDER_CANCEL_NEED_PAY_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_CANCEL_PAID: + // 取消 实付金额 + orderDetail.setActualPayAmount(paidAmount.toString()); + // 已退金额 + orderDetail.setRefundedAmount(DECIMAL_ZERO); + break; + case ORDER_CANCELED: + orderDetail.setActualPayAmount(CollUtil.isEmpty(orderDetail.getPayOrders()) ? DECIMAL_ZERO : orderDetail.getPayAmount()); + // 应退 0.00 应付 0.00 + // 取消订单 不退不补,不展示计算公式 + break; + case ORDER_TRIP_END: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 行程结束,不退不补 + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_TRIP_END_NEED_PAY: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 应付尾款 + orderDetail.setCurrentNeedPayAmount(orderTotalNeedPayAmount.subtract(depositPayAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_NEED_PAY_BALANCE_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_NEED_PAY_BALANCE_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_TRIP_END_PAID: + // 行程结束已支付 实付金额 + orderDetail.setActualPayAmount(paidAmount.toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_TRIP_END_REFUNDING: + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 应退金额 + orderDetail.setCurrentNeedRefundAmount(depositPayAmount.subtract(orderTotalNeedPayAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_END_NEED_REFUND_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_END_NEED_REFUND_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_TRIP_END_REFUNDED: + List refunded = orderDetail.getPayOrders().stream().filter(payOrder -> ObjectUtil.equals(payOrder.getStatus(), TpPayOrderStatusEnum.REFUND.getCode())).collect(Collectors.toList()); + BigDecimal refundAmount = new BigDecimal(refunded.get(0).getPayAmount()).setScale(2, RoundingMode.DOWN); + orderDetail.setActualPayAmount(new BigDecimal(orderDetail.getPayAmount()).setScale(2, RoundingMode.DOWN).subtract(refundAmount).toString()); + // 已退金额 + orderDetail.setRefundedAmount(depositPayAmount.subtract(orderTotalNeedPayAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITH_SERVICE_CHARGE); + break; + case ORDER_DEPOSIT_PAID: + case ORDER_CHANGE_AUDITING: + case ORDER_CHANGE_AUDITED: + case ORDER_NEED_DISPATCH: + case ORDER_DISPATCHED: + case ORDER_TRIP_START: + // 判断是应退还是应付 + if (depositPayAmount.compareTo(orderTotalNeedPayAmount) > 0) { + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 应退 + orderDetail.setCurrentNeedRefundAmount(depositPayAmount.subtract(orderTotalNeedPayAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_END_NEED_REFUND_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_END_NEED_REFUND_AMOUNT_WITH_SERVICE_CHARGE); + } else if (depositPayAmount.compareTo(orderTotalNeedPayAmount) < 0) { + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 应付 + orderDetail.setCurrentNeedPayAmount(orderTotalNeedPayAmount.subtract(depositPayAmount).toString()); + orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_NEED_PAY_BALANCE_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_NEED_PAY_BALANCE_AMOUNT_WITH_SERVICE_CHARGE); + } else { + orderDetail.setActualPayAmount(orderDetail.getPayAmount()); + // 无需付款 无需退款 + // orderDetail.setCalcFormula(orderServiceChargeAmount.compareTo(BigDecimal.ZERO) == 0 ? TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITHOUT_SERVICE_CHARGE : TpOrderCalcFormula.ORDER_ACTUAL_PAID_AMOUNT_WITH_SERVICE_CHARGE); + } + } + } + + private void queryShuttleDrivers(TpOrderQueryDTO dto, TpOrderDetailVO orderDetailVO) { + if (CollUtil.isNotEmpty(orderDetailVO.getTpOrderRoutes())) { + List driverInfoVOList = Lists.newArrayList(); + List shuttleCodes = Lists.newArrayList(); + orderDetailVO.getTpOrderRoutes().forEach(route -> { + List tpOrderRouteShuttles = route.getTpOrderRouteShuttle(); + if (CollUtil.isNotEmpty(tpOrderRouteShuttles)) { + shuttleCodes.addAll(tpOrderRouteShuttles.stream().map(TpOrderRouteShuttleVO::getShuttleNo).collect(Collectors.toList())); + } + }); + + if (CollUtil.isNotEmpty(shuttleCodes)) { + buildDrivers(dto, shuttleCodes, driverInfoVOList, orderDetailVO); + } + + // 设置车辆 / 司机信息 + orderDetailVO.setDriverInfos(driverInfoVOList); + } + } + + private void buildDrivers(TpOrderQueryDTO dto, List shuttleCodes, List driverInfoVOList, TpOrderDetailVO orderDetailVO) { + List shuttleOverviewDTOS = tpRouteClient.listShuttle(TpOrderShuttlesQueryDTO.builder() + .shuttleCodes(shuttleCodes) + .tenantId(dto.getTenantId()).build()); + + // 未查询到对应的班次 + if (CollUtil.isEmpty(shuttleOverviewDTOS)) { + return; + } + + Map shuttleMap = orderDetailVO.getTpOrderRoutes().get(0).getTpOrderRouteShuttle().stream().collect(Collectors.toMap(TpOrderRouteShuttleVO::getShuttleNo, Function.identity(), (k1, k2) -> k2)); + + // 设置司机,车牌信息 + shuttleOverviewDTOS.forEach(carDriver -> { + List busDrivers = carDriver.getBusDrivers(); + if (CollUtil.isNotEmpty(busDrivers)) { + busDrivers.forEach(driver -> { + TpOrderRouteShuttleVO tpOrderRouteShuttleVO = shuttleMap.get(carDriver.getShuttleCode()); + DriverInfoVO driverInfoVO = new DriverInfoVO(); + driverInfoVO.setDriverNo(driver.getDriverCode()); + driverInfoVO.setDriverName(driver.getDriverName()); + driverInfoVO.setVehicleNumber(driver.getBusPlate()); + driverInfoVO.setTripType(tpOrderRouteShuttleVO.getTripType()); + driverInfoVOList.add(driverInfoVO); + }); + } + }); + } + + private List buildNeedModules(List needModules) { + List modules = Lists.newArrayList(); + + if (CollUtil.isNotEmpty(needModules)) { + needModules.forEach(module -> { + modules.add(TpOrderModulesEnum.getEnumByModuleName(module)); + }); + } else { + // 默认查询线路 / 行程单 + modules.add(TpOrderModulesEnum.ORDER_ROUTE_INFO); + modules.add(TpOrderModulesEnum.ORDER_SUBJECT_ITEM); + modules.add(TpOrderModulesEnum.RESCHEDULE_RECORD); + } + + return modules; + } + + @Override + public TpResult createOrder(TpOrderCreateDTO dto) { + LogUtil.info(LOGGER, "createOrder:{}", JSONObject.toJSONString(dto)); + + // 校验参数 + checkCreateOrderParams(dto); + + // 组装订单基础参数 + TpOrder tpOrder = buildTpOrder(dto, tpSequenceClient.generateOrderNo()); + + transactionTemplate.executeWithoutResult(e -> { + // 创建订单 + tpOrderDomainService.createOrder(tpOrder); + }); + + TpOrderCreateVO tpOrderCreateVO = new TpOrderCreateVO(); + tpOrderCreateVO.setOriginalOrderNo(tpOrder.getOriginalOrderNo()); + tpOrderCreateVO.setOrderNo(tpOrder.getOrderNo()); + tpOrderCreateVO.setFee(dto.getPayAmount()); + tpOrderCreateVO.setPayableAmount(dto.getPayableAmount()); + tpOrderCreateVO.setCreateTime(dto.getOrderTime()); + + return TpResult.success(tpOrderCreateVO); + } + + @Override + public TpResult rescheduleOrder(TpOrderRescheduleDTO dto) { + LogUtil.info(LOGGER, "rescheduleOrder:{}", JSONObject.toJSONString(dto)); + + // 校验参数 + checkCreateOrderParams(dto.getCreateOrderDto()); + + // 组装订单基础参数 + TpOrder tpOrder = buildTpOrder(dto.getCreateOrderDto(), tpSequenceClient.generateOrderNo()); + + transactionTemplate.executeWithoutResult(e -> { + // 创建订单 + LogUtil.info("创建改签单:{}", JSONObject.toJSONString(tpOrder)); + tpOrderDomainService.createOrder(tpOrder); + + // 组装改签记录 + List records = buildRescheduleRecords(dto, tpSequenceClient.generateRescheduleNo(), tpOrder.getOrderNo()); + + // 写入改签记录 + LogUtil.info("创建改签记录:{}", JSONObject.toJSONString(records)); + tpOrderDomainService.saveRescheduleRecords(records); + + TpRescheduleInvalidVoucherDTO tpRescheduleInvalidVoucherDTO = new TpRescheduleInvalidVoucherDTO(); + tpRescheduleInvalidVoucherDTO.setOriginalOrderNo(dto.getOriginalOrderNo()); + tpRescheduleInvalidVoucherDTO.setOrderNo(tpOrder.getOrderNo()); + tpRescheduleInvalidVoucherDTO.setInvalidVoucherDTOs(dto.getInvalidVoucherDTOs()); + tpRescheduleInvalidVoucherDTO.setTenantId(dto.getTenantId()); + // 失效凭证 + LogUtil.info("改签失效凭证:{}", JSONObject.toJSONString(tpRescheduleInvalidVoucherDTO)); + tpVoucherClient.rescheduleInvalidVouchers(tpRescheduleInvalidVoucherDTO); + + TpReschedulePaidSuccessDTO tpReschedulePaidSuccessDTO = new TpReschedulePaidSuccessDTO(); + tpReschedulePaidSuccessDTO.setOriginalOrderNo(dto.getOriginalOrderNo()); + tpReschedulePaidSuccessDTO.setOrderNo(tpOrder.getOrderNo()); + tpReschedulePaidSuccessDTO.setPayAmount(tpOrder.getPayAmount()); + tpReschedulePaidSuccessDTO.setTenantId(dto.getTenantId()); + // 生成支付单 + LogUtil.info("改签生成支付单:{}", JSONObject.toJSONString(tpReschedulePaidSuccessDTO)); + tpPaymentClient.reschedulePaidSuccessDTO(tpReschedulePaidSuccessDTO); + + // 释放库存 + LogUtil.info("释放库存:{}", JSONObject.toJSONString(dto)); + releaseInventory(tpOrder, dto.getRescheduleRecords(), dto.getTenantId()); + }); + + TpOrderCreateVO tpOrderCreateVO = new TpOrderCreateVO(); + tpOrderCreateVO.setOriginalOrderNo(tpOrder.getOriginalOrderNo()); + tpOrderCreateVO.setOrderNo(tpOrder.getOrderNo()); + tpOrderCreateVO.setFee(dto.getCreateOrderDto().getPayAmount()); + tpOrderCreateVO.setPayableAmount(dto.getCreateOrderDto().getPayableAmount()); + tpOrderCreateVO.setCreateTime(dto.getCreateOrderDto().getOrderTime()); + + return TpResult.success(tpOrderCreateVO); + } + + private void releaseInventory(TpOrder orderDetail, List rescheduleRecords, String tenantId) { + List operationDTOs = Lists.newArrayList(); + Map orderItemMap; + + List orderRescheduleInfos = rescheduleRecords.get(0).getOrderRescheduleInfos(); + + // 实名认证 + if (Objects.equals(orderDetail.getIdentityVerificat(), TpOrderIdentityFlagEnum.REAL_NAME_ORDER.getIdentityFlag())) { + orderItemMap = orderRescheduleInfos.stream().collect(Collectors.groupingBy(TpOrderRescheduleInfoDTO::getSubjectItemNo, Collectors.collectingAndThen(Collectors.toList(), List::size))); + } else { + orderItemMap = orderRescheduleInfos.stream().collect(Collectors.groupingBy(TpOrderRescheduleInfoDTO::getSubjectItemNo, Collectors.summingInt(TpOrderRescheduleInfoDTO::getPassengerCount))); + } + + AtomicInteger flagCount = new AtomicInteger(0); + orderItemMap.forEach((itemNo, count) -> { + flagCount.incrementAndGet(); + TpInventoryOperationDTO operationDTO = new TpInventoryOperationDTO(); + operationDTO.setCarrierCode(itemNo); + operationDTO.setBizType(TpInventoryBizTypeEnum.ORDER.getType()); + operationDTO.setBizNo(orderDetail.getOrderNo()); + operationDTO.setOperationInventoryCount(count); + operationDTO.setOperationType(TpInventoryOperationTypeEnum.DEDUCT_TO_ROLLBACK.getType()); + operationDTO.setTransactionNo(orderDetail.getOrderNo() + "_" + TpInventoryOperationTypeEnum.DEDUCT_TO_ROLLBACK.getType() + "_" + flagCount); + operationDTO.setTenantId(tenantId); + operationDTOs.add(operationDTO); + }); + + inventoryClient.batchOperateInventory(operationDTOs); + } + + private List buildRescheduleRecords(TpOrderRescheduleDTO dto, String rescheduleNo, String orderNo) { + // 组装改签记录 + return dto.getRescheduleRecords().stream().map(rescheduleRecord -> { + TpOrderRescheduleRecord record = new TpOrderRescheduleRecord(); + record.setRescheduleNo(rescheduleNo); + record.setOrderNo(orderNo); + record.setOriginalOrderNo(dto.getOriginalOrderNo()); + record.setOrderRescheduleInfos(buildRescheduleInfos(rescheduleRecord.getOrderRescheduleInfos(), rescheduleNo)); + record.setTripType(rescheduleRecord.getTripType()); + record.setRescheduleTime(DateUtil.current()); + record.setTenantId(dto.getTenantId()); + return record; + }).collect(Collectors.toList()); + } + + private List buildRescheduleInfos(List orderRescheduleInfos, String rescheduleNo) { + return orderRescheduleInfos.stream().map(info -> TpOrderRescheduleInfo.builder() + .rescheduleNo(rescheduleNo) + .shuttleNo(info.getShuttleNo()) + .rescheduleShuttleNo(info.getRescheduleShuttleNo()) + .subjectItemNo(info.getSubjectItemNo()) + .shuttleDate(info.getShuttleDate()) + .shuttleTime(info.getShuttleTime()) + .passengerNo(info.getPassengerNo()) + .passengerName(info.getPassengerName()) + .passengerCount(info.getPassengerCount()) + .rescheduleSubjectItemNo(info.getRescheduleSubjectItemNo()) + .rescheduleShuttleDate(info.getRescheduleShuttleDate()) + .rescheduleShuttleTime(info.getRescheduleShuttleTime()).build()).collect(Collectors.toList()); + } + + private BaseMessageEntity buildDelayMessageEntity(String orderNo, String tenantId) { + OrderDelayMessageEntity orderDelayMessageEntity = new OrderDelayMessageEntity(); + orderDelayMessageEntity.setOrderNo(orderNo); + orderDelayMessageEntity.setTenantId(tenantId); + + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_ORDER); + baseMessageEntity.setKey(orderNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + baseMessageEntity.setBody(JSONObject.toJSONString(orderDelayMessageEntity)); + return baseMessageEntity; + } + + @Override + public TpResult endorseOrder(TpOrderCreateDTO dto) { + // 参数校验 + checkEndorseOrder(dto); + + String orderNo = tpSequenceClient.generateOrderNo(); + + // 改签订单 + transactionTemplate.executeWithoutResult(e -> { + // 改签订单 + TpOrder order = tpOrderDomainService.changeOrder(buildTpOrder(dto, orderNo)); + + // 发送延时消息 + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_ORDER_DELAY_TAG_SUCCESS, buildDelayMessageEntity(order.getOrderNo(), dto.getTenantId()), dto.getExpireTime()); + }); + + TpOrderEndorseVO tpOrderEndorseVO = new TpOrderEndorseVO(); + tpOrderEndorseVO.setOriginalOrderNo(dto.getOriginalOrderNo()); + tpOrderEndorseVO.setOrderNo(orderNo); + tpOrderEndorseVO.setFee(dto.getPayAmount()); + tpOrderEndorseVO.setCreateTime(dto.getOrderTime()); + return TpResult.success(tpOrderEndorseVO); + } + + private void checkEndorseOrder(TpOrderCreateDTO dto) { + Assert.hasText(dto.getOriginalOrderNo(), "endorseOrder originalOrderNo is null"); + checkCreateOrderParams(dto); + } + + @Override + public TpResult payOrder(TpOrderPayDTO dto) { + // 参数校验 + checkPayParams(dto); + + // 推进订单状态待支付 + TpOrderPushStatusStrategyDTO tpOrderPushStatusStrategyDTO = new TpOrderPushStatusStrategyDTO(); + tpOrderPushStatusStrategyDTO.setOrderNo(dto.getOrderNo()); + tpOrderPushStatusStrategyDTO.setTenantId(dto.getTenantId()); + + AtomicReference isDuplicatedPayRequest = new AtomicReference<>(false); + TpPreparePayVO prepayVO = transactionTemplate.execute(e -> { + // tpOrderPushStatusStrategyFactory.orderPushStatusStrategyMap.get(TpOrderPushStatusEnum.NEED_PAY_PUSH_STATUS).pushOrderStatus(tpOrderPushStatusStrategyDTO); + + // 更新订单信息 + tpOrderDomainService.updateOrderPayInfoByOrderNo(dto.getOrderNo(), dto.getPayType(), dto.getUserNo(), dto.getTenantId()); + + // 调用预支付接口 + TpPreparePayDTO preparePayDTO = buildPreparePayDTO(dto); + try { + return tpPaymentClient.prepay(preparePayDTO); + } catch (TpException exception) { + if (StringUtils.equals(exception.getErrorCode(), TpTradeCoreErrorCode.DUPLICATE_PAY_REQUEST.getCode())) { + isDuplicatedPayRequest.set(true); + } else { + throw exception; + } + } + + return null; + }); + + if (isDuplicatedPayRequest.get()) { + return TpResult.fail(TpTradeCoreErrorCode.DUPLICATE_PAY_REQUEST.getCode(), TpTradeCoreErrorCode.DUPLICATE_PAY_REQUEST.getDesc()); + } + + return TpResult.success(TpOrderPayVO.builder().orderNo(dto.getOrderNo()).cashierUrl(ObjectUtil.isNull(prepayVO) ? null : prepayVO.getPrepayResult()).build()); + } + + private void checkPayParams(TpOrderPayDTO dto) { + Assert.notNull(dto, "dto is null"); + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getSource(), "source is null"); + Assert.hasText(dto.getUserIp(), "userIp is null"); + Assert.hasText(dto.getBizType(), "bizType is null"); + Assert.notNull(dto.getPayType(), "payType is null"); + } + + @Override + public TpResult queryRefundDetailVO(TpOrderQueryRefundDetailDTO queryRefundDetailDTO) { + List needModules = buildRefundDetailNeedModules(); + TpOrderDetailVO orderDetailVO = tpOrderConverter.model2DetailVO(tpOrderDomainService.getOrder(queryRefundDetailDTO.getTenantId(), null, queryRefundDetailDTO.getOrderNo(), needModules)); + List voucherQueryVO = tpContractClient.getAvailableRefundVoucherVO(queryRefundDetailDTO.getOrderNo(), queryRefundDetailDTO.getTenantId()); + return TpResult.success(TpOrderQueryRefundDetailVO.builder() + .voucherDTOList(voucherQueryVO) + .orderDetailVO(orderDetailVO) + .build()); + } + + @Override + public TpResult paid(TpOrderPaidDTO dto) { + // 校验参数 + checkPaidParams(dto); + + // 订单推进为已支付 + TpOrderPushPaidStatusStrategyDTO tpOrderPushPaidStatusStrategyDTO = new TpOrderPushPaidStatusStrategyDTO(); + tpOrderPushPaidStatusStrategyDTO.setPayTime(dto.getPayTime()); + tpOrderPushPaidStatusStrategyDTO.setOrderNo(dto.getOrderNo()); + tpOrderPushPaidStatusStrategyDTO.setTenantId(dto.getTenantId()); + + tpOrderPushStatusStrategyFactory.orderPushStatusStrategyMap.get(TpOrderPushStatusEnum.PAID_ORDER_PUSH_STATUS).pushOrderStatus(tpOrderPushPaidStatusStrategyDTO); + + return TpResult.success(TpOrderPaidVO.builder().orderNo(dto.getOrderNo()).build()); + } + + @Override + public TpResult pushOrderStatus(TpOrderPushStatusDTO dto) { + // 校验参数 + checkPushOrderStatusParams(dto); + + // 调用策略工厂执行具体的状态推进 + TpOrderPushStatusStrategyDTO tpOrderPushStatusStrategyDTO = buildOrderPushStatusStrategyDTO(dto); + + tpOrderPushStatusStrategyFactory.orderPushStatusStrategyMap.get(dto.getTpOrderPushStatusEnum()).pushOrderStatus(tpOrderPushStatusStrategyDTO); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult queryUserTickets(TpUserTicketsQueryDTO dto) { + checkQueryUserTicketsParams(dto); + TpOrderQueryList tpOrderQueryList = new TpOrderQueryList(); + tpOrderQueryList.setPlacerNo(dto.getUserNo()); + tpOrderQueryList.setTenantId(dto.getTenantId()); + tpOrderQueryList.setOrderStartTime(dto.getOrderStartTime()); + tpOrderQueryList.setOrderEndTime(dto.getOrderEndTime()); + tpOrderQueryList.setProductCategoryNo(dto.getCategoryNo()); + CommonPage orderList = tpOrderDomainService.getOrderList(tpOrderQueryList); + + int ticketCount = 0; + // 当前时间段内,该用户未购买过 + if (CollUtil.isEmpty(orderList.getList())) { + return TpResult.success(ticketCount); + } + + for (TpOrder order : orderList.getList()) { + ticketCount += order.getOrderSubjectItem().stream().mapToInt(TpOrderSubjectItem::getCount).sum(); + } + + return TpResult.success(ticketCount); + } + + @Override + public TpResult createDepositOrder(TpDepositOrderDTO dto) { + String bizLockKey = getBizLock(dto.getOrderNo(), dto.getTenantId()); + RLock lock = redissonClient.getLock(bizLockKey); + boolean isLock = lock.tryLock(); + if (!isLock) { + LogUtil.error("获取订金订单业务锁失败:{}", dto.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + try { + checkCreateDepositParam(dto); + + String depositNo = tpSequenceClient.generateDepositNo(); + + // 创建订金订单 + tpOrderDomainService.createDepositOrder(buildDepositModel(dto, depositNo)); + return TpResult.success(Boolean.TRUE); + } catch (Exception e) { + LogUtil.error("创建订金订单失败,订单单号为:{},异常堆栈为:{}", dto.getOrderNo(), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DEPOSIT_ORDER_CREATE_ERROR); + } finally { + // 释放锁: + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } + } + } + + private String getBizLock(String bizNo, String tenantId) { + return bizNo + ":" + tenantId; + } + + @Override + public TpResult createBalanceOrder(TpBalanceOrderDTO dto) { + checkCreateBalanceParam(dto); + + String balanceNo = tpSequenceClient.generateBalanceNo(); + + // 创建尾款单 + tpOrderDomainService.createBalanceOrder(buildBalanceModel(dto, balanceNo)); + return TpResult.success(Boolean.TRUE); + } + + private TpBalanceOrder buildBalanceModel(TpBalanceOrderDTO dto, String balanceNo) { + TpBalanceOrder tpBalanceOrder = new TpBalanceOrder(); + tpBalanceOrder.setBalanceOrderNo(balanceNo); + tpBalanceOrder.setOrderNo(dto.getOrderNo()); + tpBalanceOrder.setBalanceAmount(dto.getPayAmount()); + tpBalanceOrder.setTenantId(dto.getTenantId()); + + return tpBalanceOrder; + } + + @Override + public TpResult updateChargeRecord(TpOrderChargeRecordDTO dto) { + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getBizType(), "bizType is null"); + + // 更新费用记录 + tpOrderDomainService.updateChargeRecord(buildChargeRecord(dto)); + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult saveChargeRecord(TpOrderChargeRecordDTO dto) { + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getBizType(), "bizType is null"); + + // 添加费用记录 + List records = buildSaveChargeRecords(dto); + + tpOrderDomainService.saveChargeRecords(records); + return TpResult.success(Boolean.TRUE); + } + + @NotNull + private static List buildSaveChargeRecords(TpOrderChargeRecordDTO dto) { + List records = Lists.newArrayList(); + TpOrderChargeRecord tpOrderChargeRecord = new TpOrderChargeRecord(); + tpOrderChargeRecord.setOrderNo(dto.getOrderNo()); + tpOrderChargeRecord.setOriginalOrderNo(dto.getOriginalOrderNo()); + tpOrderChargeRecord.setInquireAmount(dto.getInquireAmount()); + tpOrderChargeRecord.setPayAmount(dto.getPayAmount()); + tpOrderChargeRecord.setChangeAmount(dto.getChangeAmount()); + tpOrderChargeRecord.setServiceCharge(dto.getServiceCharge()); + tpOrderChargeRecord.setServicePercentage(dto.getServiceChargeRate()); + tpOrderChargeRecord.setBizType(dto.getBizType()); + tpOrderChargeRecord.setTenantId(dto.getTenantId()); + records.add(tpOrderChargeRecord); + return records; + } + + @Override + public TpResult changePriceAndPayMode(TpOrderChangePriceDTO dto) { + Assert.hasText(dto.getOriginalOrderNo(), "originalOrderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getBizType(), "bizType is null"); + + TpOrder order = tpOrderDomainService.getOrderByOriginalOrderNo(dto.getTenantId(), null, dto.getOriginalOrderNo(), null); + + transactionTemplate.executeWithoutResult(e -> { + // 更新订单改价后的价格 + tpOrderDomainService.updateOrderChargeByOrderNo(TpOrderUpdateCharge.builder() + .orderNo(order.getOrderNo()) + .changeAmount(dto.getChangeAmount()) + .serviceCharge(dto.getServiceCharge()) + .payMode(dto.getPayMode()) + .payAmount(dto.getPayAmount()) + .tenantId(dto.getTenantId()).build()); + + // 确认订单 / 变更订单 / 结束订单 时可能会产生改价 + if (StrUtil.equals(dto.getBizType(), TpAuditOrChangePriceBizTypeEnum.CONFIRM_ORDER.getBizType()) + || StrUtil.equals(dto.getBizType(), TpAuditOrChangePriceBizTypeEnum.CHANGE_ORDER.getBizType()) + || StrUtil.equals(dto.getBizType(), TpAuditOrChangePriceBizTypeEnum.END_ORDER.getBizType())) { + // 新增改价记录 + tpOrderDomainService.saveChangePriceRecord(buildOrderChangePriceRecord(dto, order)); + } + + Boolean freeServiceChargeFlag = StrUtil.equals(TpServiceChargeOperationTypeEnum.SINGLE_FREE_SERVICE_CHARGE.getBizType(), dto.getServiceChargeOperationType()) + || StrUtil.equals(TpServiceChargeOperationTypeEnum.FREE_SERVICE_CHARGE.getBizType(), dto.getServiceChargeOperationType()) ? Boolean.TRUE : Boolean.FALSE; + + // 更新订单费用记录 + TpOrderChargeRecord tpOrderChargeRecord = new TpOrderChargeRecord(); + tpOrderChargeRecord.setOrderNo(order.getOrderNo()); + tpOrderChargeRecord.setOriginalOrderNo(order.getOriginalOrderNo()); + tpOrderChargeRecord.setPayAmount(dto.getPayAmount()); + tpOrderChargeRecord.setChangeAmount(dto.getChangeAmount()); + tpOrderChargeRecord.setServiceCharge(dto.getCurrentOperatorServiceCharge()); + tpOrderChargeRecord.setFreeServiceCharge(BooleanUtil.toInt(freeServiceChargeFlag)); + tpOrderChargeRecord.setBizType(dto.getBizType()); + + // 更新费用记录 + tpOrderDomainService.updateChargeRecord(tpOrderChargeRecord); + + // 全部手续费减免时,操作变更 / 取消订单的手续费标识为减免状态 + if (StrUtil.equals(TpServiceChargeOperationTypeEnum.FREE_SERVICE_CHARGE.getBizType(), dto.getServiceChargeOperationType())) { + tpOrderDomainService.updateOperationReduceServiceCharge(tpOrderChargeRecord); + } + + }); + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult removeChargeRecord(TpOrderChargeRecordDTO dto) { + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getBizType(), "bizType is null"); + + transactionTemplate.executeWithoutResult(e -> { + // 删除当前订单对应业务类型的费用记录 + tpOrderDomainService.removeChargeRecord(dto.getOrderNo(), dto.getBizType(), dto.getTenantId()); + }); + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult updateOrderNotVisible(TpOrderUpdateDTO dto) { + + transactionTemplate.executeWithoutResult(e -> { + tpOrderDomainService.updateOrderNotVisible(dto.getTenantId(), dto.getOrderNo()); + }); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult> charterBusOrderListToC(TpOrderListQueryDTO dto) { + Page page = PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + + List orderList = tpOrderDomainService.getCharterBusOrderListToC(buildTpOrderQueryList(dto)); + + CommonPage result = buildListPage(page, orderList); + + if (CollUtil.isEmpty(result.getList())) { + return TpResult.success(result); + } + + List originalOrderNos = result.getList().stream().map(TpOrderListVO::getOriginalOrderNo).collect(Collectors.toList()); + + // 查询支付单 + List payOrders = tpPaymentClient.getPayOrderList(TpPayOrderQueryDTO.builder() + .orderNos(originalOrderNos) + .tenantId(dto.getTenantId()) + .targetStatusList(ListUtil.toList(TpPayOrderStatusEnum.PAID.getCode(), TpPayOrderStatusEnum.REFUND.getCode(), TpPayOrderStatusEnum.REFUNDING.getCode())).build()); + + if (CollUtil.isEmpty(payOrders)) { + result.getList().forEach(order -> order.setPayOrders(Lists.newArrayList())); + return TpResult.success(result); + } + + Map> payOrderMapList = payOrders.stream().collect(Collectors.groupingBy(TpPayOrderDTO::getOrderNo)); + + result.getList().forEach(order -> { + List tpPayOrderDTOS = payOrderMapList.get(order.getOriginalOrderNo()); + if (CollUtil.isNotEmpty(tpPayOrderDTOS)) { + order.setPayOrders(tpPayOrderDTOS); + } else { + order.setPayOrders(Lists.newArrayList()); + } + }); + + return TpResult.success(result); + } + + @Override + public TpResult> charterBusOrderListToB(TpOrderListQueryDTO dto) { + Page page = PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + + List orderList = tpOrderDomainService.getCharterBusOrderListToB(buildTpOrderQueryList(dto)); + + CommonPage result = buildListPage(page, orderList); + + // 查询具体的审批单 + List list = result.getList(); + + if (CollUtil.isNotEmpty(orderList)) { + List originalOrderNos = orderList.stream().map(TpOrder::getOriginalOrderNo).collect(Collectors.toList()); + + Map dispatchMap = tpOrderDispatchDomainService.listOrderDispatchDetail(dto.getTenantId(), originalOrderNos, null) + .stream().collect(Collectors.toMap(TpOrderDispatch::getOrderNo, Function.identity())); + + // 查询申请单 + TpOrderChangeApplyBatchListDTO tpOrderChangeApplyBatchListDTO = new TpOrderChangeApplyBatchListDTO(); + tpOrderChangeApplyBatchListDTO.setOrderNos(originalOrderNos); + tpOrderChangeApplyBatchListDTO.setOriginalOrderNos(originalOrderNos); + tpOrderChangeApplyBatchListDTO.setApplyStatuses(ListUtil.toList(TpOrderChangeApplyStatusEnum.WAITING_APPROVED.getType(), TpOrderChangeApplyStatusEnum.SINGLE_RSC_WAITING_APPROVED.getType(), TpOrderChangeApplyStatusEnum.FULL_RSC_WAITING_APPROVED.getType(), TpOrderChangeApplyStatusEnum.RSC_WAITING_APPROVED.getType())); + tpOrderChangeApplyBatchListDTO.setTenantId(dto.getTenantId()); + Map changeApplyMap = tpOrderChangedDomainService.batchQueryOrderChangeApplyByOrderNos(tpOrderChangeApplyBatchListDTO) + .stream().collect(Collectors.toMap(TpOrderChangeApply::getOriginalOrderNo, Function.identity())); + list.forEach(order -> { + if (CollUtil.isNotEmpty(dispatchMap) && ObjectUtil.isNotNull(dispatchMap.get(order.getOriginalOrderNo()))) { + order.setOrderDispatch(orderDispatchBizConverter.model2VO(dispatchMap.get(order.getOriginalOrderNo()))); + } + + if (CollUtil.isNotEmpty(changeApplyMap) && ObjectUtil.isNotNull(changeApplyMap.get(order.getOriginalOrderNo()))) { + order.setOrderChangeApply(orderChangeBizConverter.model2VO(changeApplyMap.get(order.getOriginalOrderNo()))); + } + }); + } + + return TpResult.success(result); + } + + @Override + public TpResult syncTravelDispatchStatus(TpOrderTravelDispatchDTO dto) { + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getTripNo(), "tripNo is null"); + Assert.hasText(dto.getTripStatus(), "tripStatus is null"); + + TpOrderTravelTrip updateTrip = new TpOrderTravelTrip(); + updateTrip.setTripNo(dto.getTripNo()); + updateTrip.setTripStatus(dto.getTripStatus()); + updateTrip.setTenantId(dto.getTenantId()); + + // 行程回调状态 + if (StrUtil.equals(ALREADY_DISPATCH.getDispatchStatus(), dto.getTripStatus())) { + // 查询订单对应的行程单信息 + TpOrder orderDetail = tpOrderDomainService.getOrderByOriginalOrderNo(dto.getTenantId(), null, dto.getOrderNo(), ListUtil.toList(TpOrderModulesEnum.ORDER_TRAVEL_TRIP, TpOrderModulesEnum.ORDER_REQUIREMENT_USER)); + + List orderTravelTrips = orderDetail.getOrderTravelTrips().stream().filter(trip -> StrUtil.equals(trip.getTripNo(), dto.getTripNo())).collect(Collectors.toList()); + + // 未找到订单对应的行程单号,抛出错误信息 + if (CollUtil.isEmpty(orderTravelTrips)) { + LogUtil.error("当前原始订单:{}, 最新订单编号:{}, 未找到对应的行程单:{}", dto.getOrderNo(), orderDetail.getOriginalOrderNo(), dto.getTripNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.TRAVEL_TRIP_NO_NOT_EXIST_ERROR); + } + + TpOrderTravelTrip tpOrderTravelTrip = orderTravelTrips.get(0); + // 判断当前订单是否已有派车状态,如果有派车状态,幂等返回 + if (StrUtil.equals(tpOrderTravelTrip.getTripStatus(), ALREADY_DISPATCH.getDispatchStatus())) { + LogUtil.warn("当前原始订单:{}, 最新订单编号:{}, 行程单号:{}, 已派车,该信息忽略", dto.getOrderNo(), orderDetail.getOriginalOrderNo(), dto.getTripNo()); + return TpResult.success(Boolean.TRUE); + } + + // 更新当前行程单状态, 方便后续比对 + tpOrderTravelTrip.setTripStatus(dto.getTripStatus()); + + List travelTrips = orderDetail.getOrderTravelTrips(); + + long pickUpTime; + // 如果是单程,取出单程的出发时间 + if (travelTrips.size() == 1) { + pickUpTime = Convert.toLong(travelTrips.get(0).getStartTime()); + } else { + // 往返,取出去程的出发时间 + List goTrip = travelTrips.stream().filter(station -> StrUtil.equals(station.getTripType(), TpOrderTripTypeEnum.GO.getCode())).collect(Collectors.toList()); + pickUpTime = Convert.toLong(goTrip.get(0).getStartTime()); + } + + transactionTemplate.executeWithoutResult(e -> { + updateTrip.setOrderNo(ObjectUtil.equals(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_CHANGE_AUDITING.getStatus()) ? orderDetail.getParentOrderNo() : orderDetail.getOrderNo()); + // 更新当前行程单状态 + tpOrderDomainService.updateTravelTripStatus(updateTrip); + + checkOrderStatus(dto, orderDetail, pickUpTime); + }); + + // 发送短信 + try { + sendDispatchMessage(orderDetail, dto.getTenantId()); + } catch (Exception e) { + LogUtil.error("订单:{}, 源始订单:{}, 派车短信发送失败, {}", orderDetail.getOrderNo(), orderDetail.getOriginalOrderNo(), e); + } + } else { + // 系统内部更改行程单状态 + transactionTemplate.executeWithoutResult(e -> { + updateTrip.setOrderNo(dto.getOrderNo()); + // 更新当前行程单状态 + tpOrderDomainService.updateTravelTripStatus(updateTrip); + }); + } + + return TpResult.success(Boolean.TRUE); + } + + private void checkOrderStatus(TpOrderTravelDispatchDTO dto, TpOrder orderDetail, long pickUpTime) { + // 判断是否全部都已派车 + List alreadyDispatchTrips = orderDetail.getOrderTravelTrips().stream().filter(trip -> StrUtil.equals(trip.getTripStatus(), ALREADY_DISPATCH.getDispatchStatus())).collect(Collectors.toList()); + // 变更审核中,将上笔订单状态继续推进 + if (ObjectUtil.equals(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_CHANGE_AUDITING.getStatus()) + && (CollUtil.isNotEmpty(alreadyDispatchTrips) && alreadyDispatchTrips.size() == orderDetail.getOrderTravelTrips().size())) { + + // 推进上一笔订单到已派车或行程中 + // 已全部派车情况下订单推进至已派车 / 行程中 + pushOrderStatus(TpOrderPushStatusDTO.builder() + .orderNo(orderDetail.getParentOrderNo()) + .tenantId(dto.getTenantId()) + .tpOrderPushStatusEnum(DateUtil.current() >= pickUpTime ? TpOrderPushStatusEnum.ORDER_TRIP_STARTED : TpOrderPushStatusEnum.ORDER_DISPATCHED).build()); + + return; + } + // 取消订单审核中,将变更前订单状态继续推进 + if (ObjectUtil.equals(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_AUDITING.getStatus()) + && (CollUtil.isNotEmpty(alreadyDispatchTrips) && alreadyDispatchTrips.size() == orderDetail.getOrderTravelTrips().size())) { + + // 将订单变更前状态继续推进至后续状态,如果驳回,则通过此状态继续推进后续状态 + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(orderDetail.getOrderNo()); + // 重新塞入审核前的订单状态 + pushStatus.setCurrentStatus(DateUtil.current() >= pickUpTime ? TpOrderPushStatusEnum.ORDER_TRIP_STARTED.getStatus() : TpOrderPushStatusEnum.ORDER_DISPATCHED.getStatus()); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + + return; + } + + // 非变更审核中与取消审核中,则原有订单推进逻辑不变 + if (CollUtil.isNotEmpty(alreadyDispatchTrips) && alreadyDispatchTrips.size() == orderDetail.getOrderTravelTrips().size()) { + // 已全部派车情况下订单推进至已派车 + pushOrderStatus(TpOrderPushStatusDTO.builder() + .orderNo(orderDetail.getOrderNo()) + .tenantId(dto.getTenantId()) + .tpOrderPushStatusEnum(DateUtil.current() >= pickUpTime ? TpOrderPushStatusEnum.ORDER_TRIP_STARTED : TpOrderPushStatusEnum.ORDER_DISPATCHED).build()); + } + } + + private void sendDispatchMessage(TpOrder orderDetail, String tenantId) { + List alreadyDispatchTrips = orderDetail.getOrderTravelTrips().stream().filter(trip -> StrUtil.equals(trip.getTripStatus(), ALREADY_DISPATCH.getDispatchStatus())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(alreadyDispatchTrips) && alreadyDispatchTrips.size() == orderDetail.getOrderTravelTrips().size()) { + // 查询派单记录 + TpOrderDispatchDetailDTO dto = new TpOrderDispatchDetailDTO(); + dto.setOrderNo(orderDetail.getOriginalOrderNo()); + dto.setTenantId(tenantId); + TpOrderDispatchVO orderDispatchDetail = tpOrderDispatchClient.getOrderDispatchDetail(dto); + + // 查询组织对应的审核人手机号 + TpTenantContractListDTO auditorsByOrgCode = tpTenantClient.getAuditorsByOrgCode(orderDispatchDetail.getTargetOrgNo(), tenantId); + + // 全部派车情况下查询车辆及对应的司机信息 + List tripBusList = getTripBusList(orderDetail, tenantId); + List dispatchList = new ArrayList<>(); + tripBusList.forEach(tripBus -> { + dispatchList.addAll(tripBus.getDispatchList().stream().filter(dispatchBus -> ObjectUtil.equals(DispatchStatusEnum.FEEDBACK_RETURNED, dispatchBus.getStatus())).collect(Collectors.toList())); + }); + + List fleets = dispatchList.stream().map(TpCharteredBusDispatchVO::getBusPlate).collect(Collectors.toList()); + + // 未变更订单 + if (StrUtil.isEmpty(orderDetail.getParentOrderNo())) { + // 提醒 + TpSmsRemindCarTemplate smsTemplate = new TpSmsRemindCarTemplate(); + smsTemplate.setCarNumberList(fleets); + smsTemplate.setUserName(orderDetail.getOrderRequirementUser().getRequirementContactName()); + smsTemplate.setDriverPhone(CollUtil.isEmpty(dispatchList) ? "" : dispatchList.get(0).getDriverPhone()); + smsTemplate.setContactPhone(ObjectUtil.isNull(auditorsByOrgCode) || CollUtil.isEmpty(auditorsByOrgCode.getAuditorPhone()) ? "" : auditorsByOrgCode.getAuditorPhone().get(0)); + tpSmsClient.sendSms(orderDetail.getOrderRequirementUser().getRequirementContact(), smsTemplate); + } else { + // 变更订单 + TpSmsChangeDispatchNotifyCarTemplate smsTemplate = new TpSmsChangeDispatchNotifyCarTemplate(); + smsTemplate.setCarNumberList(fleets); + smsTemplate.setUserName(orderDetail.getOrderRequirementUser().getRequirementContactName()); + smsTemplate.setDriverPhone(CollUtil.isEmpty(dispatchList) ? "" : dispatchList.get(0).getDriverPhone()); + smsTemplate.setContactPhone(ObjectUtil.isNull(auditorsByOrgCode) || CollUtil.isEmpty(auditorsByOrgCode.getAuditorPhone()) ? "" : auditorsByOrgCode.getAuditorPhone().get(0)); + tpSmsClient.sendSms(orderDetail.getOrderRequirementUser().getRequirementContact(), smsTemplate); + } + + } + } + + private List getTripBusList(TpOrder orderDetail, String tenantId) { + TpCharteredBusTripDTO queryDto = new TpCharteredBusTripDTO(); + queryDto.setOrderNo(orderDetail.getOriginalOrderNo()); + queryDto.setTenantId(tenantId); + return tpTripClient.queryTripList(queryDto); + } + + @Override + public TpResult saveInvoice(TpOrderInvoiceDTO dto) { + checkSaveInvoiceParam(dto); + + // 查询订单是否已完结 + List orderDetails = tpOrderDomainService.queryOrderBatchList(dto.getOrderNos(), dto.getTenantId()); + + // 当前订单是否已上传过发票 + orderDetails.forEach(orderDetail -> { + if (ObjectUtil.isNotNull(orderDetail.getTpOrderInvoice())) { + LogUtil.error("当前原始订单编号:{}, 当前订单编号:{}, 发票已上传, 请勿重复上传", orderDetail.getOriginalOrderNo(), orderDetail.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.INVOICE_EXIST); + } + + // 判断是否可上传 + if (ObjectUtil.notEqual(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_PAID.getStatus()) + && ObjectUtil.notEqual(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_TRIP_END_PAID.getStatus()) + && ObjectUtil.notEqual(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_TRIP_END.getStatus()) + && ObjectUtil.notEqual(orderDetail.getStatus(), TpOrderStatusEnum.ORDER_TRIP_END_REFUNDED.getStatus())) { + LogUtil.error("当前原始订单编号:{}, 当前订单编号:{}, 状态未结束,暂时无法上传发票", orderDetail.getOriginalOrderNo(), orderDetail.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_SAVE_INVOICE_ERROR); + } + }); + + List invoiceList = Lists.newArrayList(); + + orderDetails.forEach(order -> { + TpOrderInvoice tpOrderInvoice = new TpOrderInvoice(); + tpOrderInvoice.setOrderNo(order.getOrderNo()); + tpOrderInvoice.setInvoiceNo(dto.getInvoiceNo()); + tpOrderInvoice.setInvoiceAddress(dto.getInvoiceAddress()); + tpOrderInvoice.setTenantId(dto.getTenantId()); + tpOrderInvoice.setBizData(dto.getBizData()); + invoiceList.add(tpOrderInvoice); + }); + + tpOrderDomainService.saveInvoice(invoiceList); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult queryOrderCount(TpOrderCountQueryDTO query) { + return TpResult.success(tpOrderDomainService.queryOrderCount(query.getOriginalOrderNo(), query.getTenantId())); + } + + @Override + public TpResult> batchQueryListByOriginalOrderNo(TpBatchQueryOrderDTO dto) { + Assert.notNull(dto, "dto is null"); + Assert.notEmpty(dto.getOriginalOrderNos(), "originalOrderNos is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + + List orderList = tpOrderDomainService.batchQueryListByOriginalOrderNos(TpBatchQueryOrder.builder() + .originalOrderNos(dto.getOriginalOrderNos()) + .tenantId(dto.getTenantId()).build()); + + return TpResult.success(tpOrderConverter.modelList2VOList(orderList)); + } + + /** + * 审核员手动结束订单 + * + * @param dto 查询参数 + * @return 操作结果 + */ + @Override + public TpResult endOrderByAuditor(TpOrderQueryDTO dto) { + Assert.notNull(dto, "dto is null"); + Assert.hasText(dto.getOriginalOrderNo(), "originalOrderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + + TpOrder order = tpOrderDomainService.getOrderByOriginalOrderNo(dto.getTenantId(), null, dto.getOriginalOrderNo(), null); + + if (!TpOrderStatusEnum.ORDER_END_STATUS.contains(order.getStatus())) { + LogUtil.error("当前订单状态不是【已结束】,无法执行结束操作,orderNo={}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_END_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(order.getOrderNo()); + pushStatus.setEndConfirmStatus(BooleanUtil.toInt(Boolean.TRUE)); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult> querySyncedTripNos(TpOrderQueryDTO dto) { + Assert.notNull(dto, "dto is null"); + Assert.hasText(dto.getOriginalOrderNo(), "originalOrderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + + TpOrder order = tpOrderDomainService.getOrderByOriginalOrderNo(dto.getTenantId(), null, dto.getOriginalOrderNo(), null); + + // 查询原始订单号对应的所有订单编号 + List orders = tpOrderDomainService.queryOrdersByOriginalOrderNo(dto.getTenantId(), dto.getOriginalOrderNo()); + + // 查询订单编号对应的行程单 + List trips = tpOrderDomainService.queryTripNosByOrderNos(dto.getTenantId(), orders.stream().map(TpOrder::getOrderNo).collect(Collectors.toList())); + + Map> tripNoMap = trips.stream().collect(Collectors.groupingBy(TpOrderTravelTrip::getTripNo)); + + List tripNos = ListUtil.toList(); + tripNoMap.forEach((key, value) -> { + List tripStatus = value.stream().map(TpOrderTravelTrip::getTripStatus).collect(Collectors.toList()); + // 存在同步成功和已派车的行程单 且 该行程单未被取消 + if ((tripStatus.contains(ALREADY_DISPATCH.getDispatchStatus()) + || tripStatus.contains(TpOrderTravelTripStatusEnum.ALREADY_SYNC.getDispatchStatus())) + && !tripStatus.contains(TpOrderTravelTripStatusEnum.CANCEL_SYNC.getDispatchStatus())) { + tripNos.add(key); + } + }); + return TpResult.success(tripNos); + } + + @Override + public TpResult queryCustomBusOrderCount(TpOrderListQueryDTO dto) { + TpOrderQueryList tpOrderQueryList = buildTpOrderQueryList(dto); + + Long count = tpOrderDomainService.queryCustomBusOrderCount(tpOrderQueryList); + return TpResult.success(count); + } + + @Override + public TpResult> padCarpoolOrderList(TpOrderListQueryDTO dto) { + CommonPage orderList = tpOrderDomainService.getPadCarpoolOrderList(buildTpOrderQueryList(dto)); + + if (CollUtil.isNotEmpty(orderList.getList())) { + orderList.getList().forEach(TpOrderFacadeImpl::setPassengerDatas); + } + + CommonPage result = buildCustomerBusListPage(orderList); + + return TpResult.success(result); + } + + @Override + public TpResult bathUpdateCarpoolSuccessOrder(TpOrderCarpoolPushStatusDTO dto) { + Assert.notNull(dto, "入参不能为空"); + Assert.hasText(dto.getSubjectItemNo(), "售卖单元编号不能为空"); + Assert.hasText(dto.getTenantId(), "租户ID不能为空"); + + List carpoolRecordDOs = carpoolRecordRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderCarpoolRecordDO::getSubjectItemNo, dto.getSubjectItemNo()) + .eq(TpOrderCarpoolRecordDO::getTenantId, dto.getTenantId()) + .groupBy(TpOrderCarpoolRecordDO::getOrderNo)); + + if (CollUtil.isEmpty(carpoolRecordDOs)) { + return TpResult.success(Boolean.TRUE); + } + + List orderNos = carpoolRecordDOs.stream().map(TpOrderCarpoolRecordDO::getOrderNo).collect(Collectors.toList()); + tpOrderDomainService.batchUpdateCarpoolOrderStatus(orderNos, TpOrderStatusEnum.ORDER_CARPOOLED.getStatus(), dto.getTenantId()); + + // 给国朗发送拼车成功通知, 需要真实流水号,否则报错 + carpoolRecordDOs.forEach(c -> { + if (StringUtils.isEmpty(c.getPosNo())) { + return; + }// 构建消息 + BaseMessageEntity messageEntity = buildGuoLangNoticeMessage(c); + // 发送消息 + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CAR_POOL_GUO_LANG_NOTICE_TAG_SUCCESS, messageEntity); + }); + + return TpResult.success(Boolean.TRUE); + } + + @NotNull + private static BaseMessageEntity buildGuoLangNoticeMessage(TpOrderCarpoolRecordDO c) { + BaseMessageEntity messageEntity = new BaseMessageEntity(); + messageEntity.setKey(c.getOrderNo()); + messageEntity.setSource(MessageSysConstants.SOURCE_ORDER); + messageEntity.setSendTime(LocalDateTime.now()); + + CarPoolPosGuoLangMessageEntity tpPosGuoLangDTO = new CarPoolPosGuoLangMessageEntity(); + tpPosGuoLangDTO.setCardNo(c.getCardNo()); + tpPosGuoLangDTO.setOutTradeNo(c.getCardBizNo()); + String planTravelTime = DateUtil.format(new Date(c.getDepartureTime()), "yyyy-MM-dd HH:mm:ss"); + tpPosGuoLangDTO.setPlanTravelTime(planTravelTime); + tpPosGuoLangDTO.setPosNo(c.getPosNo()); + String body = JSONUtil.toJsonStr(tpPosGuoLangDTO); + messageEntity.setBody(body); + return messageEntity; + } + + @Override + public TpResult checkSuccessCallback(TpCheckSuccessCallbackDTO checkSuccessCallbackDTO) { + Assert.notNull(checkSuccessCallbackDTO, "入参不能为空"); + Assert.hasText(checkSuccessCallbackDTO.getCardNo(), "卡号不能为空"); + Assert.hasText(checkSuccessCallbackDTO.getAmount(), "金额不能为空"); + Assert.hasText(checkSuccessCallbackDTO.getOutTradeNo(), "刷卡流水号不能为空"); + Assert.notNull(checkSuccessCallbackDTO.getCheckInTime(), "核销时间不能为空"); + Assert.notNull(checkSuccessCallbackDTO.getCheckInType(), "核销类型不能为空"); + + TpOrderCarpoolRecord carpoolRecord = carpoolRecordRepository.getCarpoolRecordByCardBizNo(checkSuccessCallbackDTO.getOutTradeNo()); + if (carpoolRecord == null) { + LogUtil.error("国朗核销成功回调,处理失败,拼车记录不存在,参数为:{}", JSONUtil.toJsonStr(checkSuccessCallbackDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.CARPOOL_RECORD_NOT_FOUND, TpTradeCoreErrorCode.CARPOOL_RECORD_NOT_FOUND.getDesc()); + } + + transactionTemplate.executeWithoutResult(action -> { + TpResult pushOrderResult = pushOrderStatus(TpOrderPushStatusDTO.builder() + .orderNo(carpoolRecord.getOrderNo()) + .tenantId(carpoolRecord.getTenantId()) + .tpOrderPushStatusEnum(TpOrderPushStatusEnum.ORDER_CARPOOL_FINISH) + .build()); + boolean isPushOrderSuccess = pushOrderResult.isSuccess(); + if (!isPushOrderSuccess && !StringUtils.equals(pushOrderResult.getErrorCode(), TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR.getCode())) { + LogUtil.error("国朗核销成功回调,处理失败,订单状态推进失败,参数为:{}", JSONUtil.toJsonStr(checkSuccessCallbackDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.CARPOOL_CHECK_CALLBACK_PROCESS_ERROR, TpTradeCoreErrorCode.CARPOOL_CHECK_CALLBACK_PROCESS_ERROR.getDesc()); + } + + TpVoucherCheckSuccessDTO voucherCheckSuccessDTO = buildVoucherCheckSuccessDTO(checkSuccessCallbackDTO, carpoolRecord); + TpResult checkResult = voucherFacade.villageBatchCheckSuccess(voucherCheckSuccessDTO); + boolean isVoucherCheckSuccess = checkResult.isSuccess(); + if (!isVoucherCheckSuccess && !StringUtils.equals(checkResult.getErrorCode(), TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR.getCode())) { + LogUtil.error("国朗核销成功回调,处理失败,凭证更新状态失败,参数为:{}", JSONUtil.toJsonStr(checkSuccessCallbackDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.CARPOOL_CHECK_CALLBACK_PROCESS_ERROR, TpTradeCoreErrorCode.CARPOOL_CHECK_CALLBACK_PROCESS_ERROR.getDesc()); + } + }); + + return TpResult.success(true); + } + + @Override + public TpResult cancelOrCarpoolFailOrder(TpCancelCarpoolDTO cancelCarpoolDTO) { + Assert.notNull(cancelCarpoolDTO, "请求参数不能为空"); + Assert.hasText(cancelCarpoolDTO.getOperateType(), "操作类型不能为空"); + Assert.hasText(cancelCarpoolDTO.getTenantId(), "租户id不能为空"); + + List availableCancelOrders = Lists.newArrayList(); + + if (StrUtil.equals(cancelCarpoolDTO.getOperateType(), TpCarpoolOrderOperateEnum.CANCEL.getOperateType())) { + Assert.hasText(cancelCarpoolDTO.getOrderNo(), "订单编号不能为空"); + TpOrder order = tpOrderDomainService.getOrder(cancelCarpoolDTO.getTenantId(), null, cancelCarpoolDTO.getOrderNo(), Lists.newArrayList(TpOrderModulesEnum.ORDER_SUBJECT_ITEM)); + availableCancelOrders.add(order); + } else { + // 根据标的项编号查询对应的预约订单,没有则直接返回 + List carpoolRecords = carpoolRecordRepository.listCarpoolRecordBySubjectItemNos(cancelCarpoolDTO.getSaleUnitCodeList(), cancelCarpoolDTO.getTenantId()); + if (CollectionUtils.isEmpty(carpoolRecords)) { + return TpResult.success(true); + } + + // 查询订单 + List orderNos = carpoolRecords.stream() + .map(TpOrderCarpoolRecord::getOrderNo) + .distinct() + .collect(Collectors.toList()); + List tpOrders = tpOrderDomainService.queryCarpoolOrderList(orderNos, cancelCarpoolDTO.getTenantId()); + List availableStatusList = Lists.newArrayList(TpOrderStatusEnum.ORDER_CARPOOLING.getStatus()); + availableCancelOrders = tpOrders.stream() + .filter(o -> availableStatusList.contains(o.getStatus())) + .collect(Collectors.toList()); + + } + + if (CollectionUtils.isEmpty(availableCancelOrders)) { + return TpResult.success(true); + } + + List availableCancelOrderNos = availableCancelOrders.stream() + .map(TpOrder::getOrderNo) + .collect(Collectors.toList()); + + // 取消拼车情况下 回滚库存 + if (StrUtil.equals(TpCarpoolOrderOperateEnum.CANCEL.getOperateType(), cancelCarpoolDTO.getOperateType())) { + releaseInventory(availableCancelOrders, cancelCarpoolDTO.getTenantId()); + } + + // 取消拼车 & 拼车失败 + tpOrderDomainService.batchUpdateCarpoolOrderStatus(availableCancelOrderNos, StrUtil.equals(TpCarpoolOrderOperateEnum.CANCEL.getOperateType(), cancelCarpoolDTO.getOperateType()) ? TpOrderStatusEnum.ORDER_CARPOOL_CANCELED_UN_REFUND.getStatus() : TpOrderStatusEnum.ORDER_CARPOOL_FAIL_UN_REFUND.getStatus(), cancelCarpoolDTO.getTenantId()); + return TpResult.success(true); + } + + @Override + public TpResult batchSaveCarPoolScheduleTask(List carPoolEndSchedules) { + // 构建拼车结束定时任务 + List carPoolEndScheduleTasks = Optional.ofNullable(carPoolEndSchedules).orElseGet(List::of).stream().map(this::buildCarPoolEndScheduleTask).collect(Collectors.toList()); + + // 保存任务 + scheduleTaskService.batchInsertScheduleTasks(carPoolEndScheduleTasks); + return TpResult.success(true); + } + + @Override + public TpResult querySwipeCardNoExist(TpOrderSwipeQueryDTO dto) { + Assert.notNull(dto, "入参不能为空"); + Assert.hasText(dto.getSwipeCardNo(), "刷卡卡号不能为空"); + Assert.hasText(dto.getTenantId(), "租户ID不能为空"); + + List records = tpOrderDomainService.querySwipeCardNoExist(dto.getSwipeCardNo(), dto.getTenantId()); + + return TpResult.success(CollUtil.isNotEmpty(records) ? Boolean.TRUE : Boolean.FALSE); + } + + @Override + public TpResult offlinePaid(TpOrderOfflinePaidDTO dto) { + String bizLockKey = "offlinePaid:" + getBizLock(dto.getOriginalOrderNo(), dto.getTenantId()); + RLock lock = redissonClient.getLock(bizLockKey); + boolean isLock = lock.tryLock(); + if (!isLock) { + LogUtil.error("获取订金订单业务锁失败:{}", dto.getOriginalOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + try { + //查询订单 + String originalOrderNo = dto.getOriginalOrderNo(); + String tenantId = dto.getTenantId(); + + TpOrder order = tpOrderDomainService.getOrderByOriginalOrderNo(tenantId, null, originalOrderNo, null); + Assert.notNull(order, "订单不存在"); + //判断订单状态 + TpOrderStatusEnum orderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (!TpOrderStatusEnum.ORDER_TRIP_END_NEED_PAY.equals(orderStatusEnum)) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + //推进订单状态 + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(order.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_PAID); + pushStatus.setCurrentStatus(orderStatusEnum.getStatus()); + pushStatus.setPayTime(System.currentTimeMillis()); + //pushStatus.setEndConfirmStatus(0); + pushStatus.setTenantId(tenantId); + tpOrderDomainService.changeOrderStatus(pushStatus); + + //生成支付单 + TpPaidOfflineDTO tpPaidOfflineDTO = new TpPaidOfflineDTO(); + tpPaidOfflineDTO.setOrderNo(originalOrderNo); + tpPaidOfflineDTO.setBizType(TpBizTypeEnum.BALANCE_PAY.getCode()); + tpPaidOfflineDTO.setOperatorNo(dto.getOperatorNo()); + tpPaidOfflineDTO.setOperatorName(dto.getOperatorName()); + tpPaidOfflineDTO.setPayAmount(dto.getPaidAmount()); + tpPaidOfflineDTO.setTenantId(tenantId); + transactionTemplate.executeWithoutResult(status -> { + tpOrderDomainService.changeOrderStatus(pushStatus); + TpResult result = paymentFacade.paidOffline(tpPaidOfflineDTO); + if (!result.isSuccess()) { + //回滚事务 + status.setRollbackOnly(); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + }); + return TpResult.success(true); + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } + } + } + + @Override + public TpResult endTripPriceConfirm(TpOrderEndPriceConfirmDTO dto) { + // 参数校验 + checkEndTripPriceConfirmParams(dto); + + //查询订单 + TpOrder order = tpOrderDomainService.getOrderByOriginalOrderNo(dto.getTenantId(), null, dto.getOrderNo(), Lists.newArrayList(TpOrderModulesEnum.ORDER_PLACER, TpOrderModulesEnum.ORDER_REQUIREMENT_USER)); + + // 校验订单类型 + if (ObjectUtil.notEqual(order.getType(), TpOrderTypeEnum.PACKING_ORDER.getType())) { + LogUtil.error("仅包车订单可进行价格确认,参数为:{}, 订单数据:{}", JSONUtil.toJsonStr(dto), JSONUtil.toJsonStr(order)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_TYPE_ERROR); + } + + // 校验订单状态 + if (ObjectUtil.notEqual(order.getStatus(), TpOrderStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT.getStatus())) { + LogUtil.error("当前订单状态为:{}, 无法进行价格确认,订单数据:{}", TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()), JSONUtil.toJsonStr(order)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + // 查询派单记录 + TpOrderDispatchDetailDTO dispatchDetailDTO = new TpOrderDispatchDetailDTO(); + dispatchDetailDTO.setOriginalOrderNo(order.getOriginalOrderNo()); + dispatchDetailDTO.setTenantId(dto.getTenantId()); + TpOrderDispatchVO orderDispatchDetail = tpOrderDispatchClient.getOrderDispatchDetail(dispatchDetailDTO); + + // 查询审核人员 + TpTenantContractListDTO orgAuditorDetail = tpTenantClient.getAuditorsByOrgCode(orderDispatchDetail.getTargetOrgNo(), dto.getTenantId()); + + BigDecimal payAmount = new BigDecimal(order.getPayAmount()); + + BigDecimal serviceCharge = StrUtil.isEmpty(order.getServiceCharge()) ? BigDecimal.ZERO : new BigDecimal(order.getServiceCharge()); + + BigDecimal confirmPayableAmount = ObjectUtil.isNotNull(dto.getConfirmPrice()) ? dto.getConfirmPrice().setScale(2, RoundingMode.DOWN) : new BigDecimal(order.getPayableAmount()).setScale(2, RoundingMode.DOWN); + + transactionTemplate.executeWithoutResult(e -> { + // 价格发生变更更改订单应付金额、保存改价记录、费用信息 + endConfirmPrice(dto, order, confirmPayableAmount); + + // 价格计算,推进订单状态(退款还是支付尾款) + TpOrderPushStatus tpOrderPushStatus = getTpOrderPushStatus(dto.getConfirmPrice(), order, confirmPayableAmount, orgAuditorDetail, dto.getTenantId(), payAmount, serviceCharge); + tpOrderDomainService.changeOrderStatus(tpOrderPushStatus); + + // 如果是退款中状态则调用退款接口 + refund(dto, order, payAmount, serviceCharge, confirmPayableAmount, orderDispatchDetail, tpOrderPushStatus); + }); + + return TpResult.success(true); + } + + private void refund(TpOrderEndPriceConfirmDTO dto, TpOrder order, BigDecimal payAmount, BigDecimal serviceCharge, BigDecimal confirmPayableAmount, TpOrderDispatchVO orderDispatchDetail, TpOrderPushStatus tpOrderPushStatus) { + if (ObjectUtil.notEqual(tpOrderPushStatus.getStatusEnum(), TpOrderStatusEnum.ORDER_TRIP_END_REFUNDING)) { + LogUtil.info("当前无需退款"); + return; + } + + TpPayRefundDTO tpPayRefundDTO = TpPayRefundDTO.builder() + .refundBizNo(order.getOriginalOrderNo() + TpBizTypeEnum.DEPOSIT_REFUND.getCode()) + .refundBizType(TpBizTypeEnum.DEPOSIT_REFUND.getCode()) + .payBizNo(order.getOriginalOrderNo() + TpBizTypeEnum.DEPOSIT_PAY.getCode()) + .refundAmount(new TpMoney(payAmount.subtract(serviceCharge.add(confirmPayableAmount)).toString(), TpMoney.ValueUnitEnum.YUAN)) + .chargeAmount(new TpMoney(serviceCharge.toString(), TpMoney.ValueUnitEnum.YUAN)) + .orgCode(orderDispatchDetail.getTargetOrgNo()) + .tenantId(dto.getTenantId()) + .build(); + + paymentFacade.refund(tpPayRefundDTO); + } + + private TpOrderPushStatus getTpOrderPushStatus(BigDecimal confirmPayableAmount, TpOrder order, BigDecimal payableAmount, TpTenantContractListDTO orgAuditorDetail, String tenantId, BigDecimal payAmount, BigDecimal serviceCharge) { + + // 应付金额 + 手续费 + BigDecimal payableAmountAndServiceCharge = payableAmount.add(serviceCharge); + + TpOrderStatusEnum statusEnum; + if (payAmount.compareTo(payableAmountAndServiceCharge) > 0) { + statusEnum = TpOrderStatusEnum.ORDER_TRIP_END_REFUNDING; + + // 退款发送短信 + TpSmsTripEndRefundTemplate smsTemplate = new TpSmsTripEndRefundTemplate(); + smsTemplate.setUserName(order.getOrderRequirementUser().getRequirementContactName()); + smsTemplate.setRefundAmount(payAmount.subtract(serviceCharge.add(confirmPayableAmount)).toString()); + smsTemplate.setContactPhone(ObjectUtil.isNull(orgAuditorDetail) ? "" : (CollUtil.isNotEmpty(orgAuditorDetail.getAuditorPhone()) ? orgAuditorDetail.getAuditorPhone().get(0) : "")); + tpSmsClient.sendSms(order.getOrderRequirementUser().getRequirementContact(), smsTemplate); + } else if (payAmount.compareTo(payableAmountAndServiceCharge) < 0) { + statusEnum = TpOrderStatusEnum.ORDER_TRIP_END_NEED_PAY; + + TpSmsTripEndNeedUserPayTemplate smsTemplate = new TpSmsTripEndNeedUserPayTemplate(); + smsTemplate.setUserName(order.getOrderRequirementUser().getRequirementContactName()); + smsTemplate.setPayAmount(payableAmountAndServiceCharge.subtract(payAmount).toString()); + smsTemplate.setContactPhone(ObjectUtil.isNull(orgAuditorDetail) ? "" : (CollUtil.isNotEmpty(orgAuditorDetail.getAuditorPhone()) ? orgAuditorDetail.getAuditorPhone().get(0) : "")); + tpSmsClient.sendSms(order.getOrderRequirementUser().getRequirementContact(), smsTemplate); + } else { + statusEnum = TpOrderStatusEnum.ORDER_TRIP_END; + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(order.getOrderNo()); + pushStatus.setStatusEnum(statusEnum); + pushStatus.setCurrentStatus(order.getStatus()); + pushStatus.setTenantId(tenantId); + + return pushStatus; + } + + private void endConfirmPrice(TpOrderEndPriceConfirmDTO dto, TpOrder order, BigDecimal confirmPayableAmount) { + if (ObjectUtil.isNotNull(dto.getConfirmPrice())) { + TpOrderChargeRecordDTO tpOrderChargeRecordDTO = new TpOrderChargeRecordDTO(); + tpOrderChargeRecordDTO.setOrderNo(order.getOrderNo()); + tpOrderChargeRecordDTO.setOriginalOrderNo(order.getOriginalOrderNo()); + tpOrderChargeRecordDTO.setInquireAmount(new BigDecimal(order.getPayableAmount()).setScale(2, RoundingMode.DOWN).toString()); + tpOrderChargeRecordDTO.setChangeAmount(dto.getConfirmPrice().setScale(2, RoundingMode.DOWN).toString()); + tpOrderChargeRecordDTO.setBizType(TpAuditOrChangePriceBizTypeEnum.ORDER_END_PRICE_CONFIRM_ORDER.getBizType()); + tpOrderChargeRecordDTO.setTenantId(dto.getTenantId()); + + // 保存改价费用记录 + saveChargeRecord(tpOrderChargeRecordDTO); + + // 保存改价信息 + TpOrderChangePriceRecord tpOrderChangePriceRecord = new TpOrderChangePriceRecord(); + tpOrderChangePriceRecord.setOrderNo(order.getOrderNo()); + tpOrderChangePriceRecord.setInquirePrice(order.getPayableAmount()); + tpOrderChangePriceRecord.setChangePrice(confirmPayableAmount.toString()); + tpOrderChangePriceRecord.setOperatorUser(dto.getOperatorNo()); + tpOrderChangePriceRecord.setOperatorName(dto.getOperatorName()); + tpOrderChangePriceRecord.setTenantId(dto.getTenantId()); + tpOrderDomainService.saveChangePriceRecord(tpOrderChangePriceRecord); + + // 更改价格 + tpOrderDomainService.updateOrderChargeByOrderNo(TpOrderUpdateCharge.builder() + .orderNo(order.getOrderNo()) + .changeAmount(confirmPayableAmount.toString()) + .tenantId(dto.getTenantId()).build()); + } + } + + private static void checkEndTripPriceConfirmParams(TpOrderEndPriceConfirmDTO dto) { + Assert.notNull(dto, "入参不能为空"); + Assert.hasText(dto.getOrderNo(), "订单编号不能为空"); + Assert.hasText(dto.getOperatorNo(), "操作员编号不能为空"); + Assert.hasText(dto.getOrderNo(), "操作员名称不能为空"); + Assert.hasText(dto.getTenantId(), "租户ID不能为空"); + } + + @NotNull + private TpScheduleTask buildCarPoolEndScheduleTask(TpCarPoolEndScheduleDTO carPoolEndSchedule) { + TpScheduleTask scheduleTask = new TpScheduleTask(); + scheduleTask.setBizNo(carPoolEndSchedule.getSalesUnitCode()); + scheduleTask.setTaskType(TpScheduleTaskTypeEnum.CAR_POOL_END.getType()); + scheduleTask.setStatus(TpScheduleTaskStatusEnum.WAIT_EXECUTE.getStatus()); + scheduleTask.setSource(applicationName); + scheduleTask.setEnv(env); + scheduleTask.setTriggerTime(carPoolEndSchedule.getTriggerTime()); + scheduleTask.setTenantId(carPoolEndSchedule.getTenantId()); + return scheduleTask; + } + + private TpVoucherCheckSuccessDTO buildVoucherCheckSuccessDTO(TpCheckSuccessCallbackDTO checkSuccessCallbackDTO, TpOrderCarpoolRecord carpoolRecord) { + TpVoucherCheckSuccessDTO voucherCheckSuccessDTO = new TpVoucherCheckSuccessDTO(); + voucherCheckSuccessDTO.setOrderNo(carpoolRecord.getOrderNo()); + voucherCheckSuccessDTO.setVerificationTime(checkSuccessCallbackDTO.getCheckInTime()); + voucherCheckSuccessDTO.setValidationType(TpVoucherValidationTypeEnum.VILLAGE_POS.getCode()); + voucherCheckSuccessDTO.setTenantId(carpoolRecord.getTenantId()); + voucherCheckSuccessDTO.setUserNo(carpoolRecord.getUserNo()); + voucherCheckSuccessDTO.setTenantId(carpoolRecord.getTenantId()); + return voucherCheckSuccessDTO; + } + + private static void checkSaveInvoiceParam(TpOrderInvoiceDTO dto) { + Assert.isTrue(CollUtil.isNotEmpty(dto.getOrderNos()), "orderNo is null"); + Assert.hasText(dto.getInvoiceNo(), "invoiceNo is null"); + Assert.hasText(dto.getInvoiceAddress(), "invoiceAddress is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + } + + @NotNull + private CommonPage buildListPage(Page page, List orderList) { + CommonPage result = new CommonPage<>(); + result.setPageNum(page.getPageNum()); + result.setPageSize(page.getPageSize()); + result.setTotal(page.getTotal()); + result.setList(tpOrderConverter.modelList2VOList(orderList)); + return result; + } + + @NotNull + private static TpOrderChangePriceRecord buildOrderChangePriceRecord(TpOrderChangePriceDTO dto, TpOrder order) { + TpOrderChangePriceRecord tpOrderChangePriceRecord = new TpOrderChangePriceRecord(); + tpOrderChangePriceRecord.setOrderNo(order.getOrderNo()); + tpOrderChangePriceRecord.setInquirePrice(order.getPayableAmount()); + tpOrderChangePriceRecord.setChangePrice(dto.getChangeAmount()); + tpOrderChangePriceRecord.setOperatorUser(dto.getOperatorUser()); + tpOrderChangePriceRecord.setOperatorName(dto.getOperatorName()); + tpOrderChangePriceRecord.setTenantId(dto.getTenantId()); + return tpOrderChangePriceRecord; + } + + private TpOrderChargeRecord buildChargeRecord(TpOrderChargeRecordDTO dto) { + TpOrderChargeRecord tpOrderChargeRecord = new TpOrderChargeRecord(); + tpOrderChargeRecord.setOrderNo(dto.getOrderNo()); + tpOrderChargeRecord.setChangeAmount(dto.getChangeAmount()); + tpOrderChargeRecord.setPayAmount(dto.getPayAmount()); + tpOrderChargeRecord.setServiceCharge(dto.getServiceCharge()); + tpOrderChargeRecord.setServicePercentage(dto.getServiceChargeRate()); + tpOrderChargeRecord.setBizType(dto.getBizType()); + tpOrderChargeRecord.setTenantId(dto.getTenantId()); + + return tpOrderChargeRecord; + } + + private TpDepositOrder buildDepositModel(TpDepositOrderDTO dto, String depositNo) { + TpDepositOrder tpDepositOrder = new TpDepositOrder(); + tpDepositOrder.setDepositOrderNo(depositNo); + tpDepositOrder.setOrderNo(dto.getOrderNo()); + tpDepositOrder.setPayAmount(dto.getPayAmount()); + tpDepositOrder.setPayPercentage(dto.getPayPercentage()); + tpDepositOrder.setPayTime(DateUtil.current()); + tpDepositOrder.setStatus(TpOrderDepositStatusEnum.UN_PAY.getStatus()); + tpDepositOrder.setBizData(dto.getBizData()); + tpDepositOrder.setTenantId(dto.getTenantId()); + return tpDepositOrder; + } + + private static void checkCreateBalanceParam(TpBalanceOrderDTO dto) { + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getPayAmount(), "payAmount is null"); + Assert.notNull(dto.getTenantId(), "tenantId is null"); + } + + private static void checkCreateDepositParam(TpDepositOrderDTO dto) { + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.notNull(dto.getPayPercentage(), "payPercentage is null"); + Assert.hasText(dto.getPayAmount(), "payAmount is null"); + Assert.notNull(dto.getTenantId(), "tenantId is null"); + } + + private void checkQueryUserTicketsParams(TpUserTicketsQueryDTO dto) { + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.notNull(dto.getOrderStartTime(), "orderStartTime is null"); + Assert.notNull(dto.getOrderEndTime(), "orderEndTime is null"); + } + + private static TpOrderPushStatusStrategyDTO buildOrderPushStatusStrategyDTO(TpOrderPushStatusDTO dto) { + TpOrderPushStatusStrategyDTO tpOrderPushStatusStrategyDTO = new TpOrderPushStatusStrategyDTO(); + tpOrderPushStatusStrategyDTO.setOrderNo(dto.getOrderNo()); + tpOrderPushStatusStrategyDTO.setPayTime(dto.getPayTime()); + tpOrderPushStatusStrategyDTO.setTenantId(dto.getTenantId()); + return tpOrderPushStatusStrategyDTO; + } + + private TpPreparePayDTO buildPreparePayDTO(TpOrderPayDTO dto) { + TpPreparePayDTO preparePayDTO = new TpPreparePayDTO(); + TpPayOrderCreateDTO createDTO = new TpPayOrderCreateDTO(); + createDTO.setOrderNo(dto.getOrderNo()); + createDTO.setDiscountAmount(new TpMoney(dto.getDiscountMoney(), TpMoney.ValueUnitEnum.YUAN)); + createDTO.setPaymentAmount(new TpMoney(dto.getPayAmount(), TpMoney.ValueUnitEnum.YUAN)); + createDTO.setPayType(dto.getPayType()); + createDTO.setPayScene(dto.getSource()); + createDTO.setPayTitle(dto.getPayTitle()); + createDTO.setUserInfoDTO(dto.getUserInfoDTO()); + createDTO.setOrgCode(dto.getOrgCode()); + createDTO.setPayTimeout(dto.getPayTimeout()); + createDTO.setBizType(dto.getBizType()); + createDTO.setBizNo(dto.getOrderNo() + dto.getBizType()); + createDTO.setReturnUrl(dto.getReturnUrl()); + + createDTO.setTenantId(dto.getTenantId()); + + preparePayDTO.setCreateDTO(createDTO); + preparePayDTO.setUserIp(dto.getUserIp()); + preparePayDTO.setAppId(dto.getAppId()); + preparePayDTO.setBuyerId(dto.getBuyerId()); + preparePayDTO.setTenantId(dto.getTenantId()); + preparePayDTO.setBizData(dto.getBizData()); + + return preparePayDTO; + } + + private static void checkPushOrderStatusParams(TpOrderPushStatusDTO dto) { + Assert.notNull(dto, "dto is null"); + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.notNull(dto.getTpOrderPushStatusEnum(), "orderPushStatusEnum is null"); + } + + private static void checkPaidParams(TpOrderPaidDTO dto) { + Assert.notNull(dto, "paidDTO is null"); + Assert.hasText(dto.getOrderNo(), "orderNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + } + + private static List buildDetailNeedModules() { + List needModules = new ArrayList<>(); + needModules.add(TpOrderModulesEnum.ORDER_PRICE_RECORD); + needModules.add(TpOrderModulesEnum.ORDER_ELEMENT_INFO); + needModules.add(TpOrderModulesEnum.ORDER_PLACER); + needModules.add(TpOrderModulesEnum.ORDER_REQUIREMENT_USER); + needModules.add(TpOrderModulesEnum.ORDER_SUBJECT_ITEM); + needModules.add(TpOrderModulesEnum.ORDER_TRAVEL_TRIP); + needModules.add(TpOrderModulesEnum.ORDER_DISPATCH_RECORD); + needModules.add(TpOrderModulesEnum.ORDER_SERVICE_TARGET); + needModules.add(TpOrderModulesEnum.ORDER_ROUTE_INFO); + return needModules; + } + + private static List buildRefundDetailNeedModules() { + List needModules = new ArrayList<>(); + needModules.add(TpOrderModulesEnum.ORDER_PLACER); + needModules.add(TpOrderModulesEnum.ORDER_REQUIREMENT_USER); + needModules.add(TpOrderModulesEnum.ORDER_TRAVEL_TRIP); + needModules.add(TpOrderModulesEnum.ORDER_SERVICE_TARGET); + needModules.add(TpOrderModulesEnum.ORDER_ROUTE_INFO); + return needModules; + } + + private static void checkOrderDetailParam(TpOrderQueryDTO dto) { + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.isTrue(StrUtil.isNotEmpty(dto.getOrderNo()) || StrUtil.isNotEmpty(dto.getOriginalOrderNo()), "orderNo or originalOrderNo is null"); + } + + private TpOrderQueryList buildTpOrderQueryList(TpOrderListQueryDTO dto) { + TpOrderQueryList tpOrderQueryList = new TpOrderQueryList(); + tpOrderQueryList.setPlacerNo(dto.getPlacerNo()); + tpOrderQueryList.setPosCardNo(dto.getPosCardNo()); + tpOrderQueryList.setBackendPlacerNo(dto.getBackendPlacerNo()); + tpOrderQueryList.setPlacerPhone(dto.getPlacerPhone()); + tpOrderQueryList.setContactName(dto.getContactName()); + tpOrderQueryList.setContactPhone(dto.getContactPhone()); + tpOrderQueryList.setProductCode(dto.getProductCode()); + tpOrderQueryList.setOrgNos(dto.getOrgNos()); + tpOrderQueryList.setProductName(dto.getProductName()); + tpOrderQueryList.setRouteName(dto.getRouteName()); + tpOrderQueryList.setRouteCode(dto.getRouteCode()); + tpOrderQueryList.setOrderNo(dto.getOrderNo()); + tpOrderQueryList.setOriginalOrderNo(dto.getOriginalOrderNo()); + tpOrderQueryList.setProductCategoryNo(dto.getProductCategoryNo()); + tpOrderQueryList.setDepartureTime(dto.getDepartureTime()); + tpOrderQueryList.setOrderType(ObjectUtil.isNull(dto.getOrderType()) ? TpOrderTypeEnum.CUSTOMIZED_ORDER.getType() : dto.getOrderType()); + tpOrderQueryList.setTicketType(dto.getTicketType()); + tpOrderQueryList.setTpOrderStatusEnum(dto.getTpOrderStatusEnum()); + tpOrderQueryList.setStatusArr(dto.getStatusArr()); + tpOrderQueryList.setNeedConfirmFlag(CollUtil.isEmpty(dto.getStatusArr()) ? Boolean.FALSE : new HashSet<>(NEED_CONFIRM_STATUS).containsAll(dto.getStatusArr())); + tpOrderQueryList.setServiceTargetName(dto.getServiceTargetName()); + tpOrderQueryList.setPickUpStartTime(dto.getPickUpStartTime()); + tpOrderQueryList.setPickUpEndTime(dto.getPickUpEndTime()); + tpOrderQueryList.setOrderStartTime(dto.getOrderStartTime()); + tpOrderQueryList.setOrderEndTime(dto.getOrderEndTime()); + tpOrderQueryList.setPageNum(dto.getPageNum()); + tpOrderQueryList.setPageSize(dto.getPageSize()); + tpOrderQueryList.setTenantId(dto.getTenantId()); + tpOrderQueryList.setTripType(dto.getTripType()); + tpOrderQueryList.setInvoiceStatus(dto.getInvoiceStatus()); + tpOrderQueryList.setInvoiceNo(dto.getInvoiceNo()); + tpOrderQueryList.setSource(dto.getSource()); + tpOrderQueryList.setAllRefundAuditStatus(dto.getAllRefundAuditStatus()); + return tpOrderQueryList; + } + + private void checkHasUnverifiedOrderParam(TpOrderUnverifiedQueryDTO dto) { + Assert.hasText(dto.getRouteNo(), "routeNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + } + + private TpOrder buildTpOrder(TpOrderCreateDTO dto, String orderNo) { + TpOrder tpOrder = new TpOrder(); + tpOrder.setProductNo(dto.getProductNo()); + tpOrder.setProductName(dto.getProductName()); + tpOrder.setProductCategoryNo(dto.getProductCategoryNo()); + tpOrder.setProductCategory(dto.getProductCategory()); + tpOrder.setOutRequestNo(dto.getOutRequestNo()); + tpOrder.setUserNo(dto.getUserNo()); + tpOrder.setOrderNo(orderNo); + tpOrder.setParentOrderNo(dto.getParentOrderNo()); + tpOrder.setOriginalOrderNo(StrUtil.isNotEmpty(dto.getOriginalOrderNo()) ? dto.getOriginalOrderNo() : orderNo); + tpOrder.setMain(dto.getMain()); + tpOrder.setStatus(TpOrderStatusEnum.INIT.getStatus()); + tpOrder.setBeforeApproveStatus(dto.getBeforeApproveStatus()); + tpOrder.setTripType(dto.getTripType()); + tpOrder.setPayMode(dto.getPayMode()); + tpOrder.setType(dto.getType()); + tpOrder.setPayAmount(dto.getPayAmount()); + tpOrder.setPayableAmount(dto.getPayableAmount()); + tpOrder.setOriginalAmount(dto.getOriginalAmount()); + tpOrder.setDiscountAmount(dto.getDiscountAmount()); + tpOrder.setServiceCharge(dto.getServiceCharge()); + tpOrder.setSource(dto.getSource()); + tpOrder.setPayType(dto.getPayType()); + tpOrder.setIdentityVerificat(dto.getIdentityVerificat()); + tpOrder.setTicketType(dto.getTicketType()); + tpOrder.setOrderTime(dto.getOrderTime() != null ? dto.getOrderTime() : DateUtil.current()); + tpOrder.setPayTime(dto.getPayTime()); + tpOrder.setCloseTime(dto.getCloseTime()); + tpOrder.setExpireTime(dto.getExpireTime()); + tpOrder.setBizData(dto.getBizData()); + // 产品询价记录 + tpOrder.setOrderPriceRecord(buildOrderPriceRecord(dto, orderNo)); + tpOrder.setOrderPlacer(buildOrderPlacer(dto, orderNo)); + // 包车业务需要 + tpOrder.setOrderRequirementUser(buildOrderRequirementUser(dto.getOrderRequirementUser(), orderNo, dto.getTenantId())); + + // 构建订单标的项与乘客信息 + setOrderSubjectItemsAndTravelTrips(dto, orderNo, tpOrder); + + // 预约包车构建费用记录 + if (ObjectUtil.equal(TpOrderTypeEnum.PACKING_ORDER.getType(), dto.getType())) { + setChargeRecord(dto, tpOrder, orderNo); + } + + tpOrder.setTpOrderTargetService(buildTargetService(dto.getTargetServiceDTO(), orderNo, dto.getTenantId())); + tpOrder.setTpOrderRoutes(buildOrderRoutes(dto.getRoutes(), orderNo, dto.getTenantId())); + tpOrder.setTenantId(dto.getTenantId()); + + // 约车记录,订单与卡号、售卖单元的关联关系 + if (ObjectUtil.equal(TpOrderTypeEnum.CARPOOL_ORDER.getType(), dto.getType())) { + tpOrder.setOrderCarpoolRecords(buildCarpoolRecord(dto, orderNo)); + } + + return tpOrder; + } + + private List buildCarpoolRecord(TpOrderCreateDTO dto, String orderNo) { + List carpoolRecords = Lists.newArrayList(); + dto.getOrderSubjectItem().forEach(e -> { + List date = e.getSubjectItemElements().stream().filter(elements -> StrUtil.equals(SalesUnitElementCodeEnum.DATE.getCode(), elements.getElementCode())).collect(Collectors.toList()); + long timeStamp = getDateTimeStamp(date.get(0).getElementValue() + " " + dto.getRoutes().get(0).getTpOrderRouteShuttle().get(0).getShuttleTime()); + + TpOrderCarpoolRecord tpOrderCarpoolRecord = new TpOrderCarpoolRecord(); + tpOrderCarpoolRecord.setPosNo(dto.getPosNo()); + tpOrderCarpoolRecord.setUserNo(dto.getUserNo()); + tpOrderCarpoolRecord.setSubjectItemNo(e.getItemNo()); + tpOrderCarpoolRecord.setOrderNo(orderNo); + tpOrderCarpoolRecord.setCardNo(dto.getBusCardNo()); + tpOrderCarpoolRecord.setCardBizNo(dto.getSwipeCardNo()); + tpOrderCarpoolRecord.setShuttleCode(CollUtil.isNotEmpty(dto.getRoutes()) && ObjectUtil.isNotNull(dto.getRoutes().get(0).getTpOrderRouteShuttle()) ? dto.getRoutes().get(0).getTpOrderRouteShuttle().get(0).getShuttleNo() : null); + tpOrderCarpoolRecord.setDepartureTime(timeStamp); + tpOrderCarpoolRecord.setTenantId(dto.getTenantId()); + + carpoolRecords.add(tpOrderCarpoolRecord); + }); + + Map uniqueCarpoolRecords = carpoolRecords.stream() + .collect(Collectors.toMap(TpOrderCarpoolRecord::getSubjectItemNo, Function.identity(), (existing, replacement) -> existing)); + return Lists.newArrayList(uniqueCarpoolRecords.values()); + } + + private long getDateTimeStamp(String dateString) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd HH:mm"); + try { + // 将日期时间字符串解析为Date对象 + Date date = dateFormat.parse(dateString); + + // 将Date对象转换为时间戳(毫秒) + return date.getTime(); + } catch (ParseException e) { + LogUtil.error("日期转换异常, 日期字符串:{}, 错误信息:{}", dateString, e.getCause()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.UNKNOWN_EXCEPTION); + } + } + + private void setChargeRecord(TpOrderCreateDTO dto, TpOrder tpOrder, String orderNo) { + List records = Lists.newArrayList(); + TpOrderChargeRecord tpOrderChargeRecord = new TpOrderChargeRecord(); + tpOrderChargeRecord.setOrderNo(orderNo); + tpOrderChargeRecord.setOriginalOrderNo(StrUtil.isNotEmpty(dto.getOriginalOrderNo()) ? dto.getOriginalOrderNo() : orderNo); + tpOrderChargeRecord.setInquireAmount(dto.getPayableAmount()); + tpOrderChargeRecord.setBizType(StrUtil.isNotEmpty(dto.getOriginalOrderNo()) ? TpAuditOrChangePriceBizTypeEnum.CHANGE_ORDER.getBizType() : TpAuditOrChangePriceBizTypeEnum.CONFIRM_ORDER.getBizType()); + tpOrderChargeRecord.setTenantId(dto.getTenantId()); + records.add(tpOrderChargeRecord); + + tpOrder.setOrderChargeRecords(records); + } + + private List buildOrderPriceRecord(TpOrderCreateDTO dto, String orderNo) { + List records = Lists.newArrayList(); + + if (CollUtil.isEmpty(dto.getTpOrderPriceRecords())) { + return records; + } + + dto.getTpOrderPriceRecords().forEach(record -> { + String pricingNo = tpSequenceClient.generatePricingNo(); + TpOrderPriceRecord tpOrderPriceRecord = new TpOrderPriceRecord(); + tpOrderPriceRecord.setPricingNo(pricingNo); + tpOrderPriceRecord.setOrderNo(orderNo); + tpOrderPriceRecord.setPricingOriginalAmount(record.getPricingOriginalAmount()); + tpOrderPriceRecord.setPricingDiscountAmount(record.getPricingDiscountAmount()); + tpOrderPriceRecord.setPricingParams(record.getPricingParams()); + tpOrderPriceRecord.setInternalInquireAmount(record.getInternalInquireAmount()); + tpOrderPriceRecord.setOrderPriceDetailRecordDetails(buildOrderPriceRecordDetail(dto.getTenantId(), pricingNo, orderNo, record.getOrderPriceRecordDetails())); + tpOrderPriceRecord.setTenantId(dto.getTenantId()); + tpOrderPriceRecord.setBizData(record.getBizData()); + records.add(tpOrderPriceRecord); + }); + return records; + } + + private List buildOrderPriceRecordDetail(String tenantId, String pricingNo, String orderNo, List orderPriceRecordDetails) { + if (CollUtil.isEmpty(orderPriceRecordDetails)) { + return null; + } + + List details = Lists.newArrayList(); + + orderPriceRecordDetails.forEach(detail -> { + TpOrderPriceRecordDetail tpOrderPriceRecordDetail = tpOrderPriceRecordDetailConverter.dto2Model(detail); + tpOrderPriceRecordDetail.setPricingNo(pricingNo); + tpOrderPriceRecordDetail.setOrderNo(orderNo); + tpOrderPriceRecordDetail.setTenantId(tenantId); + + details.add(tpOrderPriceRecordDetail); + }); + return details; + } + + private TpOrderRequirementUser buildOrderRequirementUser(TpOrderRequirementUserDTO orderRequirementUser, String orderNo, String tenantId) { + if (ObjectUtil.isNull(orderRequirementUser)) { + return null; + } + + TpOrderRequirementUser tpOrderRequirementUser = new TpOrderRequirementUser(); + tpOrderRequirementUser.setOrderNo(orderNo); + tpOrderRequirementUser.setRequirementName(orderRequirementUser.getRequirementName()); + tpOrderRequirementUser.setRequirementContactName(orderRequirementUser.getRequirementContactName()); + tpOrderRequirementUser.setRequirementContact(orderRequirementUser.getRequirementContact()); + tpOrderRequirementUser.setBizData(orderRequirementUser.getBizData()); + tpOrderRequirementUser.setTenantId(tenantId); + + return tpOrderRequirementUser; + } + + private List buildOrderRoutes(List routes, String orderNo, String tenantId) { + if (CollUtil.isEmpty(routes)) { + return null; + } + List orderRoutes = Lists.newArrayList(); + routes.forEach(routeDTO -> { + // 构建线路信息 + orderRoutes.add(buildOrderRoute(routeDTO, orderNo, tenantId)); + }); + + return orderRoutes; + } + + private TpOrderRoute buildOrderRoute(TpOrderRouteDTO routeDTO, String orderNo, String tenantId) { + TpOrderRoute tpOrderRoute = new TpOrderRoute(); + tpOrderRoute.setOrderNo(orderNo); + tpOrderRoute.setRouteNo(routeDTO.getRouteNo()); + tpOrderRoute.setRouteName(routeDTO.getRouteName()); + tpOrderRoute.setRoundTrip(routeDTO.getRoundTrip()); + tpOrderRoute.setWorkTime(routeDTO.getWorkTime()); + tpOrderRoute.setTimeSchedule(routeDTO.getTimeSchedule()); + tpOrderRoute.setBelongFleet(routeDTO.getBelongFleet()); + tpOrderRoute.setBizData(routeDTO.getBizData()); + tpOrderRoute.setTpOrderRouteShuttle(buildOrderRouteShuttle(routeDTO, orderNo, tenantId)); + tpOrderRoute.setTenantId(tenantId); + + return tpOrderRoute; + } + + private List buildOrderRouteShuttle(TpOrderRouteDTO routeDTO, String orderNo, String tenantId) { + if (ObjectUtil.isEmpty(routeDTO.getTpOrderRouteShuttle())) { + return null; + } + + return routeDTO.getTpOrderRouteShuttle().stream().map(shuttle -> { + TpOrderRouteShuttle tpOrderRouteShuttle = new TpOrderRouteShuttle(); + tpOrderRouteShuttle.setOrderNo(orderNo); + tpOrderRouteShuttle.setRouteNo(routeDTO.getRouteNo()); + tpOrderRouteShuttle.setShuttleNo(shuttle.getShuttleNo()); + tpOrderRouteShuttle.setShuttleName(shuttle.getShuttleName()); + tpOrderRouteShuttle.setShuttleTime(shuttle.getShuttleTime()); + tpOrderRouteShuttle.setTripType(shuttle.getTripType()); + tpOrderRouteShuttle.setBizData(shuttle.getBizData()); + tpOrderRouteShuttle.setTenantId(tenantId); + return tpOrderRouteShuttle; + }).collect(Collectors.toList()); + } + + private TpOrderTargetService buildTargetService(TpOrderTargetServiceDTO targetServiceDTO, String orderNo, String tenantId) { + if (ObjectUtil.isNull(targetServiceDTO)) { + return null; + } + TpOrderTargetService tpOrderTargetService = new TpOrderTargetService(); + tpOrderTargetService.setOrderNo(orderNo); + tpOrderTargetService.setTargetName(targetServiceDTO.getTargetName()); + tpOrderTargetService.setTargetNumber(targetServiceDTO.getTargetNumber()); + tpOrderTargetService.setBizData(targetServiceDTO.getBizData()); + tpOrderTargetService.setTenantId(tenantId); + return tpOrderTargetService; + } + + private void setOrderSubjectItemsAndTravelTrips(TpOrderCreateDTO dto, String orderNo, TpOrder tpOrder) { + List orderSubjectItemDTOs = dto.getOrderSubjectItem(); + + LogUtil.info("构建标的项前标的项参数:{}", JSONObject.toJSONString(orderSubjectItemDTOs)); + if (CollUtil.isNotEmpty(orderSubjectItemDTOs)) { + List orderSubjectItems = Lists.newArrayList(); + List orderTravelTrips = Lists.newArrayList(); + orderSubjectItemDTOs.forEach(subjectItemDTO -> { + // 构建订单标的项 + orderSubjectItems.add(buildOrderSubjectItem(subjectItemDTO, orderNo, dto.getTenantId())); + // 定制公交-构建行程单 + if (ObjectUtil.equal(dto.getType(), TpOrderTypeEnum.CUSTOMIZED_ORDER.getType()) || ObjectUtil.equal(dto.getType(), TpOrderTypeEnum.CUSTOMIZED_RESCHEDULE_ORDER.getType()) || ObjectUtil.equal(dto.getType(), TpOrderTypeEnum.CARPOOL_ORDER.getType())) { + orderTravelTrips.add(buildOrderTravelTrip(subjectItemDTO.getTripType(), dto.getCharterBusStations(), subjectItemDTO.getPassengerNo(), orderNo, dto.getTenantId())); + } + }); + + // 预约包车构建行程单 + if (ObjectUtil.equal(dto.getType(), TpOrderTypeEnum.PACKING_ORDER.getType()) && CollUtil.isNotEmpty(dto.getCharterBusStations())) { + buildOrderTravelTrip(orderTravelTrips, dto.getCharterBusStations(), orderNo, dto.getTenantId(), orderSubjectItemDTOs.get(0)); + } + + LogUtil.info("构建标的项后标的项参数:{}", JSONObject.toJSONString(orderSubjectItems)); + + tpOrder.setOrderSubjectItem(orderSubjectItems); + tpOrder.setOrderTravelTrips(orderTravelTrips); + } + } + + /** + * 预约包车构建行程单 + * + * @param orderTravelTrips 行程单 + * @param stations 站点信息 + * @param orderNo 订单编号 + * @param tenantId 租户ID + */ + private void buildOrderTravelTrip(List orderTravelTrips, List stations, String orderNo, String tenantId, TpOrderSubjectItemDTO orderSubjectItemDTO) { + stations.forEach(station -> { + String tripNo = StrUtil.isNotBlank(station.getTripNo()) ? station.getTripNo() : tpSequenceClient.generateTripNo(); + TpOrderTravelTrip tpOrderTravelTrip = new TpOrderTravelTrip(); + tpOrderTravelTrip.setTripNo(tripNo); + tpOrderTravelTrip.setOrderNo(orderNo); + tpOrderTravelTrip.setPassengerCount(orderSubjectItemDTO.getPassengerCount()); + tpOrderTravelTrip.setPickUpLocationCode(station.getPickUpLocationCode()); + tpOrderTravelTrip.setPickUpLocation(station.getPickUpLocation()); + tpOrderTravelTrip.setDropOffLocationCode(station.getDropOffLocationCode()); + tpOrderTravelTrip.setDropOffLocation(station.getDropOffLocation()); + tpOrderTravelTrip.setStartTime(station.getPickUpTime()); + tpOrderTravelTrip.setEndTime(station.getDropOffTime()); + tpOrderTravelTrip.setMiles(station.getMiles()); + tpOrderTravelTrip.setTripStatus(TpOrderTravelTripStatusEnum.UN_SYNC.getDispatchStatus()); + tpOrderTravelTrip.setBizData(station.getBizData()); + tpOrderTravelTrip.setTripType(station.getTripType()); + tpOrderTravelTrip.setTripPositions(buildTripPositions(station.getPathPoints(), tripNo, orderNo, tenantId)); + tpOrderTravelTrip.setTenantId(tenantId); + + orderTravelTrips.add(tpOrderTravelTrip); + }); + } + + private TpOrderTravelTrip buildOrderTravelTrip(String tripType, List stationDTOs, String passengerNo, String orderNo, String tenantId) { + TpOrderStationDTO stationDTO = stationDTOs.stream().filter(station -> StrUtil.equals(station.getTripType(), tripType)).collect(Collectors.toList()).get(0); + String tripNo = tpSequenceClient.generateTripNo(); + TpOrderTravelTrip tpOrderTravelTrip = new TpOrderTravelTrip(); + tpOrderTravelTrip.setTripNo(tripNo); + tpOrderTravelTrip.setOrderNo(orderNo); + tpOrderTravelTrip.setPassengerNo(passengerNo); + tpOrderTravelTrip.setPickUpLocationCode(stationDTO.getPickUpLocationCode()); + tpOrderTravelTrip.setPickUpLocation(stationDTO.getPickUpLocation()); + tpOrderTravelTrip.setDropOffLocationCode(stationDTO.getDropOffLocationCode()); + tpOrderTravelTrip.setDropOffLocation(stationDTO.getDropOffLocation()); + tpOrderTravelTrip.setStartTime(stationDTO.getPickUpTime()); + tpOrderTravelTrip.setEndTime(stationDTO.getDropOffTime()); + tpOrderTravelTrip.setBizData(stationDTO.getBizData()); + tpOrderTravelTrip.setTripType(tripType); + tpOrderTravelTrip.setTripPositions(buildTripPositions(stationDTO, tripNo, orderNo, tenantId)); + tpOrderTravelTrip.setTenantId(tenantId); + + return tpOrderTravelTrip; + } + + private List buildTripPositions(List pathPoints, String tripNo, String orderNo, String tenantId) { + if (CollUtil.isNotEmpty(pathPoints)) { + return pathPoints.stream().map(pathPoint -> { + TpOrderTripPosition tpOrderTripPosition = new TpOrderTripPosition(); + tpOrderTripPosition.setTripNo(tripNo); + tpOrderTripPosition.setOrderNo(orderNo); + tpOrderTripPosition.setLocationName(pathPoint.getLocationName()); + tpOrderTripPosition.setLng(pathPoint.getLng()); + tpOrderTripPosition.setLat(pathPoint.getLat()); + tpOrderTripPosition.setIndex(pathPoint.getIndex()); + tpOrderTripPosition.setTenantId(tenantId); + + return tpOrderTripPosition; + }).collect(Collectors.toList()); + } + return null; + } + + private List buildTripPositions(TpOrderStationDTO stationDTO, String tripNo, String orderNo, String tenantId) { + List tripPositions = Lists.newArrayList(); + // 构建上车点位置信息 + tripPositions.add(buildPickUpLocation(stationDTO, tripNo, orderNo, tenantId)); + // 构建下车点位置 + tripPositions.add(buildDropOffLocation(stationDTO, tripNo, orderNo, tenantId)); + return tripPositions; + } + + private TpOrderTripPosition buildDropOffLocation(TpOrderStationDTO stationDTO, String tripNo, String orderNo, String tenantId) { + TpOrderTripPosition tpOrderTripPosition = new TpOrderTripPosition(); + tpOrderTripPosition.setTripNo(tripNo); + tpOrderTripPosition.setOrderNo(orderNo); + tpOrderTripPosition.setLocationCode(stationDTO.getDropOffLocationCode()); + tpOrderTripPosition.setLocationName(stationDTO.getDropOffLocation()); + tpOrderTripPosition.setLng(stationDTO.getDropOffLng()); + tpOrderTripPosition.setLat(stationDTO.getDropOffLat()); + tpOrderTripPosition.setBizData(stationDTO.getBizData()); + tpOrderTripPosition.setTenantId(tenantId); + return tpOrderTripPosition; + } + + private TpOrderTripPosition buildPickUpLocation(TpOrderStationDTO stationDTO, String tripNo, String orderNo, String tenantId) { + TpOrderTripPosition tpOrderTripPosition = new TpOrderTripPosition(); + tpOrderTripPosition.setTripNo(tripNo); + tpOrderTripPosition.setOrderNo(orderNo); + tpOrderTripPosition.setLocationCode(stationDTO.getPickUpLocationCode()); + tpOrderTripPosition.setLocationName(stationDTO.getPickUpLocation()); + tpOrderTripPosition.setLng(stationDTO.getPickUpLng()); + tpOrderTripPosition.setLat(stationDTO.getPickUpLat()); + tpOrderTripPosition.setBizData(stationDTO.getBizData()); + tpOrderTripPosition.setTenantId(tenantId); + return tpOrderTripPosition; + } + + private TpOrderSubjectItem buildOrderSubjectItem(TpOrderSubjectItemDTO subjectItemDTO, String orderNo, String tenantId) { + TpOrderSubjectItem tpOrderSubjectItem = new TpOrderSubjectItem(); + tpOrderSubjectItem.setItemNo(subjectItemDTO.getItemNo()); + tpOrderSubjectItem.setOrderNo(orderNo); + tpOrderSubjectItem.setPassengerNo(subjectItemDTO.getPassengerNo()); + tpOrderSubjectItem.setName(subjectItemDTO.getName()); + tpOrderSubjectItem.setType(subjectItemDTO.getType()); + tpOrderSubjectItem.setCount(subjectItemDTO.getCount()); + tpOrderSubjectItem.setBizData(subjectItemDTO.getBizData()); + tpOrderSubjectItem.setPassengerCount(subjectItemDTO.getPassengerCount()); + tpOrderSubjectItem.setDays(subjectItemDTO.getDays()); + tpOrderSubjectItem.setIncludeDriverExpenses(subjectItemDTO.getIncludeDriverExpenses()); + tpOrderSubjectItem.setTripType(subjectItemDTO.getTripType()); + tpOrderSubjectItem.setPassenger(ObjectUtil.isNull(subjectItemDTO.getPassengerInfo()) ? null : buildOrderPassenger(subjectItemDTO.getPassengerInfo(), orderNo, tenantId)); + tpOrderSubjectItem.setOrderItemElements(buildOrderItemElements(subjectItemDTO.getSubjectItemElements(), orderNo, tenantId)); + tpOrderSubjectItem.setTenantId(tenantId); + return tpOrderSubjectItem; + } + + private List buildOrderItemElements(List subjectItemElementDTOs, String orderNo, String tenantId) { + if (CollUtil.isEmpty(subjectItemElementDTOs)) { + return null; + } + + List subjectItemElements = Lists.newArrayList(); + subjectItemElementDTOs.forEach(itemElementDTO -> { + // 构建标的项组成要素 + subjectItemElements.add(buildSubjectItemElement(itemElementDTO, orderNo, tenantId)); + }); + return subjectItemElements; + } + + private TpOrderItemElement buildSubjectItemElement(TpOrderSubjectItemElementDTO itemElementDTO, String orderNo, String tenantId) { + TpOrderItemElement tpOrderItemElement = new TpOrderItemElement(); + tpOrderItemElement.setOrderNo(orderNo); + tpOrderItemElement.setItemNo(itemElementDTO.getItemNo()); + tpOrderItemElement.setElementCode(itemElementDTO.getElementCode()); + tpOrderItemElement.setElementName(itemElementDTO.getElementName()); + tpOrderItemElement.setElementValue(itemElementDTO.getElementValue()); + tpOrderItemElement.setElementUnit(itemElementDTO.getElementUnit()); + tpOrderItemElement.setBizData(itemElementDTO.getBizData()); + tpOrderItemElement.setTenantId(tenantId); + return tpOrderItemElement; + } + + private TpOrderPassenger buildOrderPassenger(TpPassengerDTO passengerInfo, String orderNo, String tenantId) { + TpOrderPassenger tpOrderPassenger = new TpOrderPassenger(); + tpOrderPassenger.setPassengerNo(passengerInfo.getPassengerNo()); + tpOrderPassenger.setOrderNo(orderNo); + tpOrderPassenger.setPassengerType(passengerInfo.getPassengerType()); + tpOrderPassenger.setPassengerName(passengerInfo.getPassengerName()); + tpOrderPassenger.setPassengerContact(passengerInfo.getPassengerContact()); + tpOrderPassenger.setIdentificationType(passengerInfo.getIdentificationType()); + tpOrderPassenger.setIdentificationNumber(passengerInfo.getIdentificationNumber()); + tpOrderPassenger.setTripType(passengerInfo.getTripType()); + tpOrderPassenger.setBizData(passengerInfo.getBizData()); + tpOrderPassenger.setTenantId(tenantId); + return tpOrderPassenger; + } + + private TpOrderPlacer buildOrderPlacer(TpOrderCreateDTO dto, String orderNo) { + TpOrderPlacerVO orderPlacer = dto.getOrderPlacer(); + TpOrderPlacer tpOrderPlacer = new TpOrderPlacer(); + tpOrderPlacer.setOrderNo(orderNo); + tpOrderPlacer.setPlacerNo(orderPlacer.getPlacerNo()); + tpOrderPlacer.setPlacerName(orderPlacer.getPlacerName()); + tpOrderPlacer.setPlacerContact(orderPlacer.getPlacerContact()); + tpOrderPlacer.setOrderPlacerContact(orderPlacer.getOrderPlacerContact()); + tpOrderPlacer.setBackendPlacerNo(orderPlacer.getBackendPlacerNo()); + tpOrderPlacer.setBackendPlacerName(orderPlacer.getBackendPlacerName()); + tpOrderPlacer.setBizData(orderPlacer.getBizData()); + tpOrderPlacer.setTenantId(dto.getTenantId()); + return tpOrderPlacer; + } + + private void checkCreateOrderParams(TpOrderCreateDTO dto) { + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getOutRequestNo(), "outRequestNo is null"); + Assert.hasText(dto.getProductNo(), "productNo is null"); + Assert.hasText(dto.getProductCategoryNo(), "categoryNo is null"); + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getPayAmount(), "payAmount is null"); + Assert.notNull(dto.getIdentityVerificat(), "identityVerificat is null"); + } + + private void releaseInventory(List orders, String tenantId) { + List operationDTOs = Lists.newArrayList(); + orders.forEach(order -> { + List orderSubjectItem = order.getOrderSubjectItem(); + Map orderItemMap; + + // 实名认证 + if (Objects.equals(order.getIdentityVerificat(), TpOrderIdentityStatusEnum.REAL_NAME.getStatus())) { + orderItemMap = orderSubjectItem.stream().collect(Collectors.groupingBy(TpOrderSubjectItem::getItemNo, Collectors.collectingAndThen(Collectors.toList(), List::size))); + } else { + orderItemMap = orderSubjectItem.stream().collect(Collectors.groupingBy(TpOrderSubjectItem::getItemNo, Collectors.summingInt(TpOrderSubjectItem::getCount))); + } + + orderItemMap.forEach((itemNo, count) -> { + TpInventoryOperationDTO operationDTO = new TpInventoryOperationDTO(); + operationDTO.setCarrierCode(itemNo); + operationDTO.setBizType(TpInventoryBizTypeEnum.ORDER.getType()); + operationDTO.setBizNo(order.getOrderNo()); + operationDTO.setOperationInventoryCount(count); + operationDTO.setOperationType(TpInventoryOperationTypeEnum.DEDUCT_TO_ROLLBACK.getType()); + operationDTO.setTransactionNo(order.getOrderNo()); + operationDTO.setTenantId(tenantId); + operationDTOs.add(operationDTO); + }); + }); + + inventoryClient.batchOperateInventory(operationDTOs); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderReceivedFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderReceivedFacadeImpl.java new file mode 100644 index 0000000..a7719dc --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpOrderReceivedFacadeImpl.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.biz.convert.TpOrderReceivedBizConverter; +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedDetailDTO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderReceivedFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderReceivedVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderReceived; +import com.deepinnet.tptradecore.core.service.order.TpOrderReceivedDomainService; +import org.apache.dubbo.config.annotation.DubboService; + +import javax.annotation.Resource; + +@DubboService +public class TpOrderReceivedFacadeImpl implements TpOrderReceivedFacade +{ + @Resource + private TpOrderReceivedBizConverter tpOrderReceivedBizConverter; + @Resource + private TpOrderReceivedDomainService orderReceivedDomainService; + + @Override + public TpResult receiveOrder(TpOrderReceivedCreatedDTO tpOrderReceiveCreatedDTO) { + + Boolean receivedFlag = orderReceivedDomainService.receiveOrder(tpOrderReceiveCreatedDTO); + if(receivedFlag){ + return TpResult.success(receivedFlag.booleanValue()); + } + + return TpResult.fail(TpTradeCoreErrorCode.ORDER_RECEIVED_CREATE_ERROR.getCode(),TpTradeCoreErrorCode.ORDER_RECEIVED_CREATE_ERROR.getDesc()); + } + + @Override + public TpResult getOrderReceivedDetail(TpOrderReceivedDetailDTO orderReceivedDetailDTO) { + String tenantId = orderReceivedDetailDTO.getTenantId(); + String receivedNo = orderReceivedDetailDTO.getReceiveNo(); + String bizObjNo = orderReceivedDetailDTO.getBizObjNo(); + String bizObjType = orderReceivedDetailDTO.getBizObjType(); + TpOrderReceived tpOrderReceived = orderReceivedDomainService.getReceivedOrder(tenantId,receivedNo,bizObjNo,bizObjType); + + return TpResult.success(tpOrderReceivedBizConverter.model2VO(tpOrderReceived)); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserPassengerFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserPassengerFacadeImpl.java new file mode 100644 index 0000000..2561efc --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserPassengerFacadeImpl.java @@ -0,0 +1,133 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dal.convert.order.TpUserPassengerConverter; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerQueryDTO; +import com.deepinnet.tptradecore.common.service.facade.order.TpUserPassengerFacade; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpUserCertificationClient; +import com.deepinnet.tptradecore.common.vo.order.TpUserPassengerVO; +import com.deepinnet.tptradecore.core.model.order.TpUserDelPassengerCondition; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; +import com.deepinnet.tptradecore.core.service.order.TpUserPassengerDomainService; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ + +@DubboService +public class TpUserPassengerFacadeImpl implements TpUserPassengerFacade { + + @Resource + private TpUserPassengerConverter tpUserPassengerConverter; + + @Resource + private TpUserCertificationClient tpUserCertificationClient; + + @Resource + private TpSequenceClient tpSequenceClient; + + @Resource + private TpUserPassengerDomainService tpUserPassengerDomainService; + + @Override + public TpResult saveUserPassenger(TpUserPassengerDTO dto) { + // 参数校验 + checkUserSavePassengerParam(dto); + + // 实名校验 + tpUserCertificationClient.validate(dto); + + // 生成乘客编号 + dto.setPassengerNo(tpSequenceClient.generateUserPassengerNo()); + + // 保存乘客 + tpUserPassengerDomainService.savePassenger(tpUserPassengerConverter.dto2Model(dto)); + + return TpResult.success(dto.getPassengerNo()); + } + + @Override + public TpResult delUserPassenger(TpUserPassengerQueryDTO dto) { + // 校验参数 + checkUserDelPassengerParam(dto); + + // 删除乘客 + tpUserPassengerDomainService.delPassenger(buildTpUserDelPassenger(dto)); + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult modifyPassenger(TpUserPassengerDTO dto) { + // 校验参数 + checkModifyPassengerParam(dto); + + // 实名校验 + tpUserCertificationClient.validate(dto); + + // 修改乘客 + tpUserPassengerDomainService.modifyPassenger(tpUserPassengerConverter.dto2Model(dto)); + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult> queryPassengerList(TpUserPassengerQueryDTO dto) { + // 校验参数 + checkListPassengerParam(dto); + + // 查询用户对应的乘客数据 + List passengerList = tpUserPassengerDomainService.getPassengerList(buildTpUserQueryPassengerDTO(dto)); + + return TpResult.success(tpUserPassengerConverter.modelList2voList(passengerList)); + } + + private TpUserPassengerCondition buildTpUserQueryPassengerDTO(TpUserPassengerQueryDTO dto) { + TpUserPassengerCondition tpUserPassengerCondition = new TpUserPassengerCondition(); + tpUserPassengerCondition.setUserNo(dto.getUserNo()); + tpUserPassengerCondition.setTenantId(dto.getTenantId()); + return tpUserPassengerCondition; + } + + private void checkListPassengerParam(TpUserPassengerQueryDTO dto) { + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + } + + private void checkModifyPassengerParam(TpUserPassengerDTO dto) { + Assert.hasText(dto.getPassengerNo(), "passengerNo is null"); + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + } + + private TpUserDelPassengerCondition buildTpUserDelPassenger(TpUserPassengerQueryDTO dto) { + TpUserDelPassengerCondition tpUserDelPassengerCondition = new TpUserDelPassengerCondition(); + tpUserDelPassengerCondition.setUserNo(dto.getUserNo()); + tpUserDelPassengerCondition.setPassengerNo(dto.getPassengerNo()); + tpUserDelPassengerCondition.setTenantId(dto.getTenantId()); + return tpUserDelPassengerCondition; + } + + private void checkUserDelPassengerParam(TpUserPassengerQueryDTO dto) { + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getPassengerNo(), "passengerNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + } + + private static void checkUserSavePassengerParam(TpUserPassengerDTO dto) { + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getPassengerName(), "passengerName is null"); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserRouteCollectionFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserRouteCollectionFacadeImpl.java new file mode 100644 index 0000000..72ffb7c --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/order/TpUserRouteCollectionFacadeImpl.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.biz.service.impl.order; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dal.convert.order.TpUserRouteCollectionConverter; +import com.deepinnet.tptradecore.common.dto.order.TpUserRouteCollectionDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserRouteCollectionQueryDTO; +import com.deepinnet.tptradecore.common.service.facade.order.TpUserRouteCollectionFacade; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.common.vo.order.TpUserRouteCollectionVO; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.service.order.TpUserRouteCollectionDomainService; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023/8/28 + */ + +@DubboService +public class TpUserRouteCollectionFacadeImpl implements TpUserRouteCollectionFacade { + + @Resource + private TpUserRouteCollectionDomainService tpUserRouteCollectionDomainService; + + @Resource + private TpUserRouteCollectionConverter tpUserRouteCollectionConverter; + + @Resource + private TpSequenceClient tpSequenceClient; + + @Override + public TpResult collectionRoute(TpUserRouteCollectionDTO dto) { + // 校验参数 + checkRouteCollectionParams(dto); + + // 设置线路编号 + dto.setCollectionNo(tpSequenceClient.generateRouteCollectionNo()); + + // 收集线路 + tpUserRouteCollectionDomainService.collectRoute(tpUserRouteCollectionConverter.dto2Model(dto)); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult> queryCollectionRouteByPage(TpUserRouteCollectionQueryDTO dto) { + Assert.hasText(dto.getTenantId(), "tenantId is null"); + + Page page = PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + + List routeList = tpUserRouteCollectionDomainService.getCollectionRouteList(tpUserRouteCollectionConverter.queryDTO2queryCondition(dto)); + + CommonPage result = new CommonPage<>(); + result.setPageNum(page.getPageNum()); + result.setPageSize(page.getPageSize()); + result.setTotal(page.getTotal()); + result.setList(tpUserRouteCollectionConverter.modelList2VOList(routeList)); + + return TpResult.success(result); + } + + private static void checkRouteCollectionParams(TpUserRouteCollectionDTO dto) { + Assert.hasText(dto.getTenantId(), "tenantId is null"); + Assert.hasText(dto.getUserNo(), "userNo is null"); + Assert.hasText(dto.getUpLocation(), "upLocation is null"); + Assert.hasText(dto.getDownLocation(), "downLocation is null"); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/trans/TpPaymentFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/trans/TpPaymentFacadeImpl.java new file mode 100644 index 0000000..31ae186 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/trans/TpPaymentFacadeImpl.java @@ -0,0 +1,658 @@ +package com.deepinnet.tptradecore.biz.service.impl.trans; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.*; +import com.deepinnet.tptradecore.common.dal.convert.trans.TpPayOrderMapStructConvert; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.order.TpOrderModulesEnum; +import com.deepinnet.tptradecore.common.enums.trans.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.facade.trans.TpPaymentFacade; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.common.service.integration.strategy.PayStrategy; +import com.deepinnet.tptradecore.common.vo.trans.*; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.deepinnet.tptradecore.core.service.trans.TpPayOrderDomainService; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.*; + +/** + * 支付服务 + * + * @author amos + * @since 2023-07-27 09:43:20 + */ +@DubboService +public class TpPaymentFacadeImpl implements TpPaymentFacade, InitializingBean { + + @Resource + private TpPayOrderDomainService payOrderDomainService; + + @Resource + private TpPayOrderMapStructConvert payOrderConvert; + + @Resource + private TpSequenceClient sequenceClient; + + @Resource + private ThreadPoolTaskExecutor payRefundThreadPool; + + @Resource + private MessageClient messageClient; + + @Resource + private TpOrderDomainService orderDomainService; + + @Resource + private Map payStrategyMap; + + private final Map payTypeStrategyMap = new ConcurrentHashMap<>(); + + private static final long DEFAULT_PAY_ORDER_SEQUENCE = 0L; + + @Override + public void afterPropertiesSet() { + payStrategyMap + .values() + .parallelStream() + .forEach(payStrategy -> payTypeStrategyMap.put(payStrategy.getPayType(), payStrategy)); + } + + @Override + public TpResult preparePay(TpPreparePayDTO preparePayDTO) { + // 参数校验 + paramCheck(preparePayDTO); + + // 创建支付单 + TpPayOrder payOrder = createPayOrder(preparePayDTO); + + // 向第三方支付平台发起预支付调用 + String prepayResult = platformPrepay(preparePayDTO, payOrder.getPaySequence()); + + // 更新支付单状态为支付中 + if (StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.INIT.getCode())) { + payOrderDomainService.updatePayOrder(TpPayOrderUpdateDTO.builder() + .payOrderNo(payOrder.getPayOrderNo()) + .originalStatus(TpPayOrderStatusEnum.INIT.getCode()) + .targetStatus(TpPayOrderStatusEnum.PAYING.getCode()) + .tenantId(preparePayDTO.getTenantId()) + .build()); + } + + // 发送支付单超时关单的消息 + BaseMessageEntity baseMessageEntity = buildDelayMessageEntity(payOrder.getPayOrderNo(), payOrder.getTenantId()); + messageClient.send(messageClient.getDelayMessageTopic(), MessageConstants.EVENT_PAY_ORDER_DELAY_TAG_SUCCESS, baseMessageEntity, preparePayDTO.getCreateDTO().getPayTimeout()); + + // 返回收银台地址 + return TpResult.success(TpPreparePayVO.builder().prepayResult(prepayResult).build()); + } + + @Override + public TpResult queryPayResult(TpQueryPayResultDTO dto) { + TpPayResultDTO payResultDTO = payOrderDomainService.queryPayResult(dto); + return TpResult.success(BeanUtil.copyProperties(payResultDTO, TpQueryPayResultVO.class)); + } + + @Override + public TpResult refund(TpPayRefundDTO refundDTO) { + String refundBizNo = refundDTO.getRefundBizNo(); + + // 查询正向的支付单,校验是否已经支付 + TpPayOrder paidPayOrder = getPaidPayOrder(refundDTO); + + // 根据退票申请单号控制幂等 + refundDTO.setPayType(paidPayOrder.getPayType()); + refundIdempotentControl(refundDTO); + + List refundingPayOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .bizNo(refundBizNo) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.REFUNDING.getCode())) + .tenantId(refundDTO.getTenantId()) + .build()); + if (CollectionUtils.isNotEmpty(refundingPayOrders)) { + Assert.isTrue(refundingPayOrders.size() == 1, "同一个退票申请单号对应的退款支付单不能存在多个"); + } + + // 手续费可以配置成100%,可能存在退0元的情况 + if (refundDTO.getRefundAmount().compare(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)) == TpMoney.CompareResult.EQUAL) { + TpPayOrder refundPayOrder = CollectionUtils.isNotEmpty(refundingPayOrders) ? refundingPayOrders.get(0) : + createRefundSuccessPayOrder(paidPayOrder, refundBizNo, refundDTO.getRefundBizType(), refundDTO.getRefundAmount(), refundDTO.getChargeAmount(), refundDTO.getOrgCode(), refundDTO.getTenantId()); + + // 发送退款成功消息推进流程 + if (StringUtils.equals(refundDTO.getPayType(), TpPayTypeEnum.ALIPAY.getCode())) { + BaseMessageEntity messageEntity = buildRefundSuccessMessage(refundPayOrder.getOrderNo(), refundPayOrder.getPayOrderNo(), + refundDTO.getRefundBizNo(), refundDTO.getRefundBizType(), refundDTO.getTenantId()); + LogUtil.info("发送支付宝退款成功的消息,消息体为:{}", JSONUtil.toJsonStr(messageEntity)); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_REFUND_SUCCESS, messageEntity); + } + + LogUtil.info("当前订单的退款金额为0元,退款接口入参为:{}", JSONUtil.toJsonStr(refundDTO)); + return TpResult.success(null); + } + + // 正常退款流程 + TpPayOrder refundPayOrder = CollectionUtils.isNotEmpty(refundingPayOrders) ? refundingPayOrders.get(0) : + createRefundPayOrder(paidPayOrder, refundBizNo, refundDTO.getRefundBizType(), refundDTO.getRefundAmount(), refundDTO.getChargeAmount(), refundDTO.getOrgCode(), refundDTO.getTenantId()); + + String outPayFlowId = paidPayOrder.getOutPayFlowId(); + + // 调用第三方平台接口异步退款 + CompletableFuture.runAsync(() -> { + // 改签订单需要传递原始订单的支付金额 + TpMoney payAmount; + if (refundDTO.getIsRescheduleOrder()) { + payAmount = refundDTO.getOriginalPayAmount(); + } else { + payAmount = paidPayOrder.getPayAmount(); + } + + String payeeAppId = paidPayOrder.getPayeeAccount().getAccount(); + TpRefundResultDTO refundResultDTO = payTypeStrategyMap.get(TpPayTypeEnum.getByCode(paidPayOrder.getPayType())).refund(PayPlatformRefundDTO.builder() + .outPayFlowId(outPayFlowId) + .payScene(paidPayOrder.getPayScene()) + .appId(payeeAppId) + .refundOutRequestNo(refundBizNo) + .refundBizType(refundDTO.getRefundBizType()) + .refundAmount(refundPayOrder.getPayAmount()) + .payAmount(payAmount) + .orgCode(refundDTO.getOrgCode()) + .tenantId(refundDTO.getTenantId()) + .build()); + + // 更新单据模型为已退款,并更新退款时间 + if (refundResultDTO.isSuccess()) { + // 退款支付单改为退款成功 + payOrderDomainService.refundSuccess(TpRefundSuccessDTO.builder() + .refundPayOrderNo(refundPayOrder.getPayOrderNo()) + .refundTime(refundResultDTO.getRefundTime()) + .tenantId(refundDTO.getTenantId()).build()); + + if (StringUtils.equals(refundDTO.getPayType(), TpPayTypeEnum.ALIPAY.getCode())) { + // 发送退款成功消息推进流程 + BaseMessageEntity messageEntity = buildRefundSuccessMessage(refundPayOrder.getOrderNo(), refundPayOrder.getPayOrderNo(), + refundDTO.getRefundBizNo(), refundDTO.getRefundBizType(), refundDTO.getTenantId()); + LogUtil.info("发送支付宝退款成功的消息,消息体为:{}", JSONUtil.toJsonStr(messageEntity)); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_REFUND_SUCCESS, messageEntity); + } + } + }, payRefundThreadPool).exceptionally(ex -> { + LogUtil.error("退款失败,入参为:{},异常堆栈信息:{}", JSONUtil.toJsonStr(refundDTO), ex); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR); + }); + + return TpResult.success(null); + } + + @Override + public TpResult queryRefundResult(TpQueryRefundResultDTO dto) { + TpRefundResultDTO refundResultDTO = payOrderDomainService.queryRefundResult(dto); + return TpResult.success(BeanUtil.copyProperties(refundResultDTO, TpQueryRefundResultVO.class)); + } + + @Override + public TpResult> queryPayOrderList(TpPayOrderQueryDTO queryDTO) { + List payOrders = payOrderDomainService.queryPayOrderList(queryDTO); + return TpResult.success(payOrderConvert.convert2DTOList(payOrders)); + } + + @Override + public TpResult closePayOrder(TpPayOrderCloseDTO dto) { + List payOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .payOrderNo(dto.getPayOrderNo()) + .tenantId(dto.getTenantId()) + .build()); + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("不存在支付单,无法进行关单,入参为:{}", JSONUtil.toJsonStr(dto)); + throw new TpTradeCoreException(PAY_ORDER_NOT_FOUND); + } + Assert.isTrue(payOrders.size() == 1, "同一个支付单号对应的支付单不能存在多个"); + + TpPayOrder payOrder = payOrders.get(0); + if (StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.CLOSED.getCode())) { + LogUtil.error("当前支付单已关单,幂等处理,入参为:{}", payOrder.getStatus(), JSONUtil.toJsonStr(dto)); + throw new TpTradeCoreException(IDEMPOTENT_REQUEST_ERROR); + } + + if (StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAYING.getCode())) { + Boolean res = payOrderDomainService.closePayOrder(dto); + return TpResult.success(res); + } + + // 其他状态无法关单, 直接返回成功 + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult paidOffline(TpPaidOfflineDTO paidOfflineDTO) { + // 参数校验 + Assert.notNull(paidOfflineDTO, "入参不能为空"); + Assert.hasText(paidOfflineDTO.getOrderNo(), "订单编号不能为空"); + Assert.hasText(paidOfflineDTO.getBizType(), "业务类型不能为空"); + Assert.hasText(paidOfflineDTO.getOperatorNo(), "操作员编号不能为空"); + Assert.hasText(paidOfflineDTO.getPayAmount(), "支付金额不能为空"); + Assert.hasText(paidOfflineDTO.getTenantId(), "租户id不能为空"); + + // 业务校验 + bizCheck(paidOfflineDTO); + + TpOrder order = orderDomainService.getOrder(paidOfflineDTO.getTenantId(), null, paidOfflineDTO.getOrderNo(), Lists.newArrayList(TpOrderModulesEnum.ORDER_PLACER)); + if (order == null) { + LogUtil.error("线下标记支付成功失败,原因为订单不存在,入参为:{}", JSONUtil.toJsonStr(paidOfflineDTO)); + throw new TpTradeCoreException(ORDER_NOT_FOUND, ORDER_NOT_FOUND.getDesc()); + } + + // 生成新的支付单,线下支付 + paidOfflineDTO.setPlacerNo(order.getOrderPlacer().getPlacerNo()); + paidOfflineDTO.setPlacerName(order.getOrderPlacer().getPlacerName()); + TpPayOrder payOrder = buildOfflinePayOrder(paidOfflineDTO); + + // 持久化 + payOrderDomainService.createPayOrder(payOrder); + return TpResult.success(true); + } + + @Override + public TpResult reschedulePaidSuccess(TpReschedulePaidSuccessDTO reschedulePaidSuccessDTO) { + // 参数校验 + Assert.notNull(reschedulePaidSuccessDTO, "入参不能为空"); + Assert.hasText(reschedulePaidSuccessDTO.getOriginalOrderNo(), "改签订单对应的原始订单号不能为空"); + Assert.hasText(reschedulePaidSuccessDTO.getOrderNo(), "改签订单编号不能为空"); + Assert.hasText(reschedulePaidSuccessDTO.getPayAmount(), "支付金额不能为空"); + Assert.hasText(reschedulePaidSuccessDTO.getTenantId(), "租户id不能为空"); + + // 幂等处理 + List paidOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .tenantId(reschedulePaidSuccessDTO.getTenantId()) + .orderNos(Lists.newArrayList(reschedulePaidSuccessDTO.getOrderNo(), reschedulePaidSuccessDTO.getOriginalOrderNo())) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAID.getCode())) + .build()); + if (CollectionUtils.isEmpty(paidOrders)) { + LogUtil.error("改签订单对应的原始订单未支付,无法进行改签,入参为:{}", JSONUtil.toJsonStr(reschedulePaidSuccessDTO)); + throw new TpTradeCoreException(PAY_ORDER_NOT_FOUND, "改签订单对应的原始订单未支付,无法进行改签"); + } + + boolean existReschedulePayOrder = paidOrders.stream() + .anyMatch(o -> StringUtils.equals(o.getOrderNo(), reschedulePaidSuccessDTO.getOrderNo())); + if (existReschedulePayOrder) { + LogUtil.error("已经生成当前改签订单对应的支付单,幂等处理,入参为:{}", JSONUtil.toJsonStr(reschedulePaidSuccessDTO)); + throw new TpTradeCoreException(IDEMPOTENT_REQUEST_ERROR, IDEMPOTENT_REQUEST_ERROR.getDesc()); + } + + // 改签订单对应的原始订单的已支付的支付单 + TpPayOrder originalOrderPayOrder = paidOrders.get(0); + TpPayOrder reschedulePayOrder = buildReschedulePayOrder(originalOrderPayOrder, reschedulePaidSuccessDTO); + + // 持久化 + payOrderDomainService.createPayOrder(reschedulePayOrder); + return TpResult.success(true); + } + + private void bizCheck(TpPaidOfflineDTO paidOfflineDTO) { + List positivePayOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .tenantId(paidOfflineDTO.getTenantId()) + .bizNo(paidOfflineDTO.getOrderNo() + paidOfflineDTO.getBizType()) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAYING.getCode(), TpPayOrderStatusEnum.PAID.getCode())) + .build()); + if (CollectionUtils.isNotEmpty(positivePayOrders)) { + List paidPayOrders = positivePayOrders.stream() + .filter(p -> StringUtils.equals(p.getStatus(), TpPayOrderStatusEnum.PAID.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(paidPayOrders)) { + List offlinePaidOrder = paidPayOrders.stream() + .filter(p -> StringUtils.equals(p.getPayType(), TpPayTypeEnum.OFFLINE_PAY.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(offlinePaidOrder)) { + LogUtil.error("幂等处理,入参为:{}", JSONUtil.toJsonStr(paidOfflineDTO)); + throw new TpTradeCoreException(IDEMPOTENT_OFFLINE_PAID_REQUEST_ERROR, IDEMPOTENT_OFFLINE_PAID_REQUEST_ERROR.getDesc()); + } + + LogUtil.error("用户的支付单已经在线上进行支付,无法线下确认支付,入参为:{}", JSONUtil.toJsonStr(paidOfflineDTO)); + throw new TpTradeCoreException(FOUND_USER_ONLINE_PAID_PAY_ORDER, FOUND_USER_ONLINE_PAID_PAY_ORDER.getDesc()); + } + + // 关闭所有该bizNo对应的在途的支付单 + List payOrderNos = positivePayOrders.stream().map(TpPayOrder::getPayOrderNo).collect(Collectors.toList()); + payOrderDomainService.batchClosePayOrder(payOrderNos, paidOfflineDTO.getTenantId()); + } + } + + private void paramCheck(TpPreparePayDTO preparePayDTO) { + TpPayTypeEnum payTypeEnum = TpPayTypeEnum.getByCode(preparePayDTO.getCreateDTO().getPayType()); + if (payTypeEnum == null) { + LogUtil.error("支付方式不存在,入参为:{}", JSONUtil.toJsonStr(preparePayDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PAY_TYPE_NOT_EXIST); + } + + TpPaySceneEnum paySceneEnum = TpPaySceneEnum.getByCode(preparePayDTO.getCreateDTO().getPayScene()); + if (paySceneEnum == null) { + LogUtil.error("支付场景不存在,入参为:{}", JSONUtil.toJsonStr(preparePayDTO)); + throw new TpTradeCoreException(PAY_SCENE_NOT_EXIST); + } + + if (paySceneEnum == TpPaySceneEnum.ALI_MINI_PROGRAM || paySceneEnum == TpPaySceneEnum.WECHAT_MINI_PROGRAM + || paySceneEnum == TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT) { + if (StringUtils.isBlank(preparePayDTO.getAppId())) { + LogUtil.error("小程序或JSAPI支付场景,appId不能为空,入参为:{}", JSONUtil.toJsonStr(preparePayDTO)); + throw new TpTradeCoreException(ILLEGAL_PARAMS, ILLEGAL_PARAMS.getDesc()); + } + } + } + + private TpPayOrder createPayOrder(TpPreparePayDTO preparePayDTO) { + // 查询在途的支付单 + List payOrders = queryPayOrderList(preparePayDTO); + + // 业务校验 + bizCheck(payOrders, preparePayDTO.getCreateDTO().getBizNo()); + + // 生成支付单 + TpPayOrder payOrder = buildPayOrder(preparePayDTO); + + if (CollectionUtils.isEmpty(payOrders)) { + payOrder.setPaySequence(DEFAULT_PAY_ORDER_SEQUENCE); + payOrderDomainService.createPayOrder(payOrder); + return payOrder; + } + + // 过滤出在途的支付单 + List inProgressPayOrders = payOrders.stream() + .filter(inProgressPayOrder -> StringUtils.equals(inProgressPayOrder.getStatus(), TpPayOrderStatusEnum.PAYING.getCode())) + .collect(Collectors.toList()); + + // 计算出最新的paySequence + List sortedPaySequenceList = payOrders.stream() + .sorted(Comparator.comparing(TpPayOrder::getPaySequence)) + .map(TpPayOrder::getPaySequence) + .collect(Collectors.toList()); + Long curMaxPaySequence = sortedPaySequenceList.get(sortedPaySequenceList.size() - 1); + Long newPaySequence = curMaxPaySequence + 1; + + // 持久化支付单 + if (CollectionUtils.isEmpty(inProgressPayOrders)) { + payOrder.setPaySequence(newPaySequence); + payOrderDomainService.createPayOrder(payOrder); + return payOrder; + } + + // 用户不是第一次拉起收银台,有未支付完成的支付单 + TpPayOrder unFinishedPayOrder = inProgressPayOrders.get(0); + + // 关闭旧的支付单,重新创建新的支付单 + payOrder.setPaySequence(newPaySequence); + + // 关单前的幂等支付校验 + idempotentPaidCheckBeforeClosePayOrder(preparePayDTO, unFinishedPayOrder); + + recreatePayOrder(unFinishedPayOrder.getPayOrderNo(), unFinishedPayOrder.getTenantId(), payOrder); + return payOrder; + } + + private void idempotentPaidCheckBeforeClosePayOrder(TpPreparePayDTO preparePayDTO, TpPayOrder unFinishedPayOrder) { + try { + String platformOutTradeNo = preparePayDTO.getCreateDTO().getBizNo() + GlobalConstants.HORIZONTAL_LINE + unFinishedPayOrder.getPaySequence(); + TpPayResultDTO payResultDTO = payTypeStrategyMap.get(TpPayTypeEnum.getByCode(unFinishedPayOrder.getPayType())) + .queryPayResult(new PayPlatformQueryResultDTO(platformOutTradeNo, null, null, preparePayDTO.getCreateDTO().getBizType(), unFinishedPayOrder.getPayScene(), + unFinishedPayOrder.getPayeeAccount().getAccount(), preparePayDTO.getCreateDTO().getOrgCode(), preparePayDTO.getTenantId())); + if (payResultDTO.isPaySuccess()) { + payOrderDomainService.paySuccess(TpPaySuccessDTO.builder() + .payOrderNo(unFinishedPayOrder.getPayOrderNo()) + .outPayFlowId(payResultDTO.getOutPayFlowId()) + .payTime(payResultDTO.getPayTime()) + .tenantId(unFinishedPayOrder.getTenantId()) + .build()); + + BaseMessageEntity messageEntity = buildPaySuccessMessage(unFinishedPayOrder.getOrderNo(), unFinishedPayOrder.getPayOrderNo(), unFinishedPayOrder.getBizType(), + payResultDTO.getPayTime(), unFinishedPayOrder.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_PAY_SUCCESS, messageEntity); + LogUtil.info("查询支付结果后发现用户已支付但是当前支付单的状态未变更为已支付,发送支付成功消息成功,支付单号为:{}", unFinishedPayOrder.getPayOrderNo()); + throw new TpTradeCoreException(DUPLICATE_PAY_REQUEST, DUPLICATE_PAY_REQUEST.getDesc()); + } + } catch (Exception e) { + if (e instanceof TpTradeCoreException) { + TpTradeCoreException tradeCoreException = (TpTradeCoreException) e; + if (tradeCoreException.getErrorCode() == DUPLICATE_PAY_REQUEST) { + throw tradeCoreException; + } + } + + LogUtil.error("预支付接口查询支付结果失败,降级处理,入参:{},异常堆栈:{}", JSONUtil.toJsonStr(preparePayDTO), e); + } + } + + private BaseMessageEntity buildDelayMessageEntity(String payOrderNo, String tenantId) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + baseMessageEntity.setKey(payOrderNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + PayOrderDelayMessageEntity delayMessageEntity = new PayOrderDelayMessageEntity(); + delayMessageEntity.setPayOrderNo(payOrderNo); + delayMessageEntity.setTenantId(tenantId); + baseMessageEntity.setBody(JSONUtil.toJsonStr(delayMessageEntity)); + return baseMessageEntity; + } + + private String platformPrepay(TpPreparePayDTO preparePayDTO, Long paySequence) { + TpPayTypeEnum payTypeEnum = TpPayTypeEnum.getByCode(preparePayDTO.getCreateDTO().getPayType()); + PayPlatformPreparePayDTO platformPrepayDTO = PayPlatformPreparePayDTO.builder() + .orderNo(preparePayDTO.getCreateDTO().getOrderNo()) + .bizNo(preparePayDTO.getCreateDTO().getBizNo() + GlobalConstants.HORIZONTAL_LINE + paySequence) + .bizType(preparePayDTO.getCreateDTO().getBizType()) + .orgCode(preparePayDTO.getCreateDTO().getOrgCode()) + .buyerId(preparePayDTO.getBuyerId()) + .appId(preparePayDTO.getAppId()) + .payTitle(preparePayDTO.getCreateDTO().getPayTitle()) + .payScene(preparePayDTO.getCreateDTO().getPayScene()) + .payAmount(preparePayDTO.getCreateDTO().getPaymentAmount()) + .returnUrl(preparePayDTO.getCreateDTO().getReturnUrl()) + .userIp(preparePayDTO.getUserIp()) + .payTimeout(LocalDateTimeUtil.of(preparePayDTO.getCreateDTO().getPayTimeout())) + .tenantId(preparePayDTO.getTenantId()) + .build(); + return payTypeStrategyMap.get(payTypeEnum).preparePay(platformPrepayDTO); + } + + private TpPayOrder getPaidPayOrder(TpPayRefundDTO refundDTO) { + // 查询支付单,校验是否已经支付/进行退款幂等控制 + TpPayOrderQueryDTO payOrderQueryDTO = TpPayOrderQueryDTO.builder() + .bizNos(Lists.newArrayList(refundDTO.getPayBizNo(), refundDTO.getRefundBizNo())) + .targetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAID.getCode(), TpPayOrderStatusEnum.REFUND.getCode())) + .tenantId(refundDTO.getTenantId()) + .build(); + List payOrders = payOrderDomainService.queryPayOrderList(payOrderQueryDTO); + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("不存在已支付的支付单,无法进行退款,入参为:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(NOT_FOUND_PAID_PAY_ORDER); + } + + List paidOrders = payOrders.stream().filter(payOrder -> StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(paidOrders)) { + LogUtil.error("不存在已支付的支付单,无法进行退款,入参为:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(NOT_FOUND_PAID_PAY_ORDER); + } + + if (paidOrders.size() > 1) { + LogUtil.error("同一个业务单号出现了多笔支付成功的支付单,请及时排查,入参为:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(DUPLICATED_PAID_PAY_ORDER, DUPLICATED_PAID_PAY_ORDER.getDesc()); + } + + List refundPayOrders = payOrders.stream().filter(payOrder -> StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.REFUND.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(refundPayOrders)) { + LogUtil.error("当前支付单已退款,无法进行退款,幂等处理,入参为:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(IDEMPOTENT_REQUEST_ERROR); + } + + return paidOrders.get(0); + } + + + private void refundIdempotentControl(TpPayRefundDTO dto) { + TpRefundResultDTO refundResult = payOrderDomainService.queryRefundResult(BeanUtil.copyProperties(dto, TpQueryRefundResultDTO.class)); + if (refundResult.isSuccess()) { + LogUtil.info("用户退款处理,退票申请单号为:{},入参为:{},查询到当前退票申请单已退款,进行幂等处理", dto.getRefundBizNo(), JSONUtil.toJsonStr(dto)); + throw new TpTradeCoreException(IDEMPOTENT_REQUEST_ERROR); + } + } + + private TpPayOrder createRefundPayOrder(TpPayOrder paidPayOrder, String refundBizNo, String refundBizType, + TpMoney refundAmount, TpMoney chargeAmount, String orgCode, String tenantId) { + List refundPayOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder().bizNo(refundBizNo).tenantId(tenantId).build()); + if (CollectionUtils.isNotEmpty(refundPayOrders)) { + Assert.isTrue(refundPayOrders.size() == 1, "同一个退票申请单号对应的退款支付单不能存在多个"); + return refundPayOrders.get(0); + } + + // 创建退款支付单 + String payOrderNo = sequenceClient.generatePayOrderNo(); + String billNo = sequenceClient.generateBillOrderNo(); + String chargeNo = sequenceClient.generateChargeOrderNo(); + + TpPayOrder tpPayOrder = payOrderConvert.buildRefundPayOrder(paidPayOrder, refundAmount, chargeAmount, refundBizNo, refundBizType, payOrderNo, billNo, chargeNo, orgCode); + payOrderDomainService.createPayOrder(tpPayOrder); + + return tpPayOrder; + } + + private TpPayOrder createRefundSuccessPayOrder(TpPayOrder paidPayOrder, String refundBizNo, String refundBizType, + TpMoney refundAmount, TpMoney chargeAmount, String orgCode, String tenantId) { + // 创建退款支付单 + String payOrderNo = sequenceClient.generatePayOrderNo(); + String billNo = sequenceClient.generateBillOrderNo(); + String chargeNo = sequenceClient.generateChargeOrderNo(); + + TpPayOrder tpPayOrder = payOrderConvert.buildRefundSuccessPayOrder(paidPayOrder, refundAmount, chargeAmount, refundBizNo, refundBizType, payOrderNo, billNo, chargeNo, orgCode); + payOrderDomainService.createPayOrder(tpPayOrder); + + return tpPayOrder; + } + + private List queryPayOrderList(TpPreparePayDTO preparePayDTO) { + TpPayOrderQueryDTO queryDTO = TpPayOrderQueryDTO.builder() + .bizNo(preparePayDTO.getCreateDTO().getBizNo()) + .tenantId(preparePayDTO.getTenantId()) + .build(); + + return payOrderDomainService.queryPayOrderList(queryDTO); + } + + private void bizCheck(List payOrders, String bizNo) { + if (CollectionUtils.isNotEmpty(payOrders)) { + boolean existPaidOrder = payOrders + .stream() + .anyMatch(tpPayOrder -> StringUtils.equals(tpPayOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())); + + if (existPaidOrder) { + throw new TpTradeCoreException(DUPLICATE_PAY_REQUEST, DUPLICATE_PAY_REQUEST.getDesc()); + } + } + + List payingPayOrders = payOrders.stream() + .filter(payOrder -> StringUtils.equals(TpPayOrderStatusEnum.PAYING.getCode(), payOrder.getStatus())) + .collect(Collectors.toList()); + + // 同一个订单至多对应一笔支付中(PAYING)状态的支付单据 + if (CollectionUtils.isNotEmpty(payingPayOrders) && payingPayOrders.size() > 1) { + LogUtil.error("业务数据异常,发现多笔支付单,订单号:{}", bizNo); + throw new TpTradeCoreException(DUPLICATED_UNPAID_PAY_ORDER, DUPLICATED_UNPAID_PAY_ORDER.getDesc()); + } + } + + private TpPayOrder buildPayOrder(TpPreparePayDTO preparePayDTO) { + // 用户第一次拉起收银台,还没有对应的支付单,去创建支付单 + String payOrderNo = sequenceClient.generatePayOrderNo(); + String billNo = sequenceClient.generateBillOrderNo(); + String orgCode = preparePayDTO.getCreateDTO().getOrgCode(); + String tenantId = preparePayDTO.getCreateDTO().getTenantId(); + + return payOrderConvert.convertPrepayDTO2Domain(preparePayDTO, payOrderNo, billNo, orgCode, preparePayDTO.getCreateDTO().getPayTimeout(), tenantId); + } + + private TpPayOrder buildOfflinePayOrder(TpPaidOfflineDTO paidOfflineDTO) { + // 用户第一次拉起收银台,还没有对应的支付单,去创建支付单 + String payOrderNo = sequenceClient.generatePayOrderNo(); + String billNo = sequenceClient.generateBillOrderNo(); + String tenantId = paidOfflineDTO.getTenantId(); + + return payOrderConvert.buildOfflinePayOrder(paidOfflineDTO, payOrderNo, billNo, System.currentTimeMillis() + 86400000, tenantId); + } + + private TpPayOrder buildReschedulePayOrder(TpPayOrder originalPayOrder, TpReschedulePaidSuccessDTO reschedulePaidSuccessDTO) { + // 用户第一次拉起收银台,还没有对应的支付单,去创建支付单 + String payOrderNo = sequenceClient.generatePayOrderNo(); + String billNo = sequenceClient.generateBillOrderNo(); + String tenantId = reschedulePaidSuccessDTO.getTenantId(); + + return payOrderConvert.buildReschedulePayOrder(reschedulePaidSuccessDTO, originalPayOrder, payOrderNo, billNo, System.currentTimeMillis() + 86400000, tenantId); + } + + + private void recreatePayOrder(String oldPayOrderNo, String tenantId, TpPayOrder payOrder) { + payOrderDomainService.closePayOrder(TpPayOrderCloseDTO + .builder() + .payOrderNo(oldPayOrderNo) + .tenantId(tenantId) + .build()); + + payOrderDomainService.createPayOrder(payOrder); + } + + private BaseMessageEntity buildRefundSuccessMessage(String orderNo, String refundPayOrderNo, String refundBizNo, String bizType, String tenantId) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + baseMessageEntity.setKey(refundBizNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + RefundSuccessMessageEntity messageEntity = new RefundSuccessMessageEntity(); + messageEntity.setRefundPayOrderNo(refundPayOrderNo); + messageEntity.setOrderNo(orderNo); + messageEntity.setRefundBizNo(refundBizNo); + messageEntity.setBizType(bizType); + messageEntity.setTenantId(tenantId); + + baseMessageEntity.setBody(JSONUtil.toJsonStr(messageEntity)); + return baseMessageEntity; + } + + private BaseMessageEntity buildPaySuccessMessage(String orderNo, String payOrderNo, String bizType, Long payTime, String tenantId) { + BaseMessageEntity messageEntity = new BaseMessageEntity(); + messageEntity.setKey(payOrderNo); + messageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + messageEntity.setSendTime(LocalDateTime.now()); + + PaySuccessMessageEntity payOrderSuccessEntity = new PaySuccessMessageEntity(); + payOrderSuccessEntity.setPayOrderNo(payOrderNo); + payOrderSuccessEntity.setOrderNo(orderNo); + payOrderSuccessEntity.setBizType(bizType); + payOrderSuccessEntity.setPayTime(payTime); + payOrderSuccessEntity.setTenantId(tenantId); + String body = JSONUtil.toJsonStr(payOrderSuccessEntity); + messageEntity.setBody(body); + return messageEntity; + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/voucher/TpVoucherFacadeImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/voucher/TpVoucherFacadeImpl.java new file mode 100644 index 0000000..0b35c6d --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/service/impl/voucher/TpVoucherFacadeImpl.java @@ -0,0 +1,1528 @@ +package com.deepinnet.tptradecore.biz.service.impl.voucher; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.*; +import cn.hutool.core.date.*; +import cn.hutool.core.util.*; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsStudentVerificationNotifyTemplate; +import com.deepinnet.tpproductcore.common.dto.rule.*; +import com.deepinnet.tpproductcore.common.enums.TpRuleExpressionGroupEnum; +import com.deepinnet.tpproductcore.common.qto.serviceobject.student.TpStudentQueryDTO; +import com.deepinnet.tpproductcore.common.vo.TpStudentVO; +import com.deepinnet.tptradecore.biz.util.TpVoucherUtil; +import com.deepinnet.tptradecore.common.dal.condition.voucher.VoucherVerificationQueryCondition; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderTravelTripConverter; +import com.deepinnet.tptradecore.common.dal.convert.voucher.*; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelTripDO; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.common.dal.repository.order.*; +import com.deepinnet.tptradecore.common.dal.repository.voucher.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpBizRuleDTO; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.common.enums.trans.TpVoucherNeedPropertiesEnum; +import com.deepinnet.tptradecore.common.enums.voucher.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.facade.voucher.TpVoucherFacade; +import com.deepinnet.tptradecore.common.service.integration.client.*; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.common.util.constants.BizDataKeyConstants; +import com.deepinnet.tptradecore.common.vo.order.TpOrderTravelTripVO; +import com.deepinnet.tptradecore.common.vo.voucher.*; +import com.deepinnet.tptradecore.core.model.order.*; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import com.deepinnet.tptradecore.core.model.voucher.*; +import com.deepinnet.tptradecore.core.service.contract.TpContractDomainService; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.deepinnet.tptradecore.core.service.voucher.*; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.*; +import org.apache.commons.lang3.*; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.transaction.support.TransactionTemplate; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2023/8/4 14:35 + * @Description 凭证域服务实现 + */ +@DubboService +public class TpVoucherFacadeImpl implements TpVoucherFacade { + + @Resource + private TpVoucherDomainService voucherDomainService; + + @Resource + private MessageClient messageClient; + + @Resource + private TpBizRuleClient bizRuleClient; + + @Resource + private TpContractDomainService contractDomainService; + + @Resource + private TpVoucherVerificationDomainService verificationDomainService; + + @Resource + private TpOrderTravelTripRepository orderTravelTripRepository; + + @Resource + private TpVoucherPassengerRepository voucherPassengerRepository; + + @Resource + private TpRescheduleInvalidVoucherRecordRepository rescheduleInvalidVoucherRecordRepository; + + @Resource + private TpOrderDomainService orderDomainService; + + @Resource + private TpVoucherMapStructConvert voucherMapStructConvert; + + @Resource + private TpOrderTravelTripConverter orderTravelTripConverter; + + @Resource + private TpOrderPlacerRepository orderPlacerRepository; + + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private TpStudentClient studentClient; + + @Resource + private TpProductClient productClient; + + @Resource + private TpSmsClient smsClient; + + @Resource + private TpOrderRouteRepository orderRouteRepository; + + @Resource(name = "smsSendPool") + private ExecutorService smsSendPool; + + private static final Long QR_CODE_EXPIRE_TIME_INTERVAL = 1000 * 60 * 5L; + + private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern(GlobalConstants.TIME_FORMAT); + + @Override + public TpResult createVoucher(TpVoucherCreateDTO createDTO) { + // 参数校验 + paramCheck(createDTO); + + // 业务校验 + createVoucherBizCheck(createDTO); + + // 构建凭证领域模型 + List voucherList = buildTpVoucher(createDTO); + + // 设置业务规则 + List bizRuleListDTOs = createDTO.getBizRuleDTOs(); + List bizRuleList = voucherMapStructConvert.convert2BizRuleList(bizRuleListDTOs); + voucherList.forEach(voucher -> voucher.setBizRuleList(BeanUtil.copyToList(bizRuleList, TpBizRule.class))); + voucherList.forEach(voucher -> { + List ruleList = voucher.getBizRuleList(); + ruleList.forEach(r -> r.setBizNo(voucher.getVoucherNo())); + }); + + // 持久化 + voucherDomainService.createVoucher(voucherList); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult> getOrderDetailVoucherList(TpVoucherQueryDTO queryDTO) { + // 根据条件查询凭证列表 + List voucherList = voucherDomainService.getVoucherListWithNeedProperties(queryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + return TpResult.success(null); + } + List voucherDTOs = voucherMapStructConvert.convert2DTOList(voucherList); + + // 获取凭证编号 + List voucherNos = voucherList.stream() + .map(TpVoucher::getVoucherNo) + .collect(Collectors.toList()); + + // 过滤出当天的凭证 + List finalVoucherDTOs = voucherDTOs; + if (StringUtils.equals(queryDTO.getQueryScope(), TpQueryScopeEnum.TODAY.getCode())) { + if (StringUtils.equals(voucherDTOs.get(0).getType(), TpVoucherTypeEnum.DAY.getCode())) { + finalVoucherDTOs = voucherDTOs.stream().filter(v -> v.getEffectiveStartTime() >= LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.now())) && + v.getEffectiveEndTime() <= LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.now()))).collect(Collectors.toList()); + } else { + // 判断今天是否在凭证的生失效时间之内 + finalVoucherDTOs = voucherDTOs.stream().filter(v -> { + LocalDateTime startTime = LocalDateTimeUtil.of(v.getEffectiveStartTime()); + LocalDateTime endTime = LocalDateTimeUtil.of(v.getEffectiveEndTime()); + long startDateStartTimestamp = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.beginOfDay(startTime)); + long endDateEndTimestamp = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.endOfDay(endTime)); + + // 判断当前时间是否在生失效日期00:00:00的范围内 + return System.currentTimeMillis() >= startDateStartTimestamp && System.currentTimeMillis() <= endDateEndTimestamp; + }).collect(Collectors.toList()); + } + + if (CollectionUtils.isEmpty(finalVoucherDTOs)) { + return TpResult.success(null); + } + + finalVoucherDTOs.removeIf(v -> StringUtils.equals(v.getStatus(), TpVoucherStatusEnum.REFUNDED.getCode())); + if (CollectionUtils.isEmpty(finalVoucherDTOs)) { + return TpResult.success(null); + } + } + + // 校验当前凭证是否能够进行展示 + finalVoucherDTOs.forEach(this::setVoucherAvailableShow); + + // 在凭证code的基础上生成带过期时间的乘车二维码 + generateQrCodeWithExpireTime(voucherDTOs); + + // 获取凭证每个凭证每天的最大乘车次数 + int everyDayTotalAvailableCount = getEveryDayTotalAvailableCount(finalVoucherDTOs); + + // 设置非日票凭证的展示状态,因为它们的状态需要每天刷新 + setVoucherDailyStatus(queryDTO, voucherNos, finalVoucherDTOs, everyDayTotalAvailableCount); + + // 设置实际状态 + setActualStatus(finalVoucherDTOs); + + // 设置每天的可用次数 + for (TpVoucherDTO finalVoucherDTO : finalVoucherDTOs) { + finalVoucherDTO.setBizRuleList(null); + finalVoucherDTO.setEveryDayAvailableCount(everyDayTotalAvailableCount); + + // 判断是否是一次性核销的场景 + Map bizData = finalVoucherDTO.getBizData(); + if (MapUtils.isNotEmpty(bizData)) { + Object isOneTimeVerification = bizData.get(BizDataKeyConstants.ONE_TIME_VERIFICATION_TICKET); + if (ObjectUtils.isNotEmpty(isOneTimeVerification)) { + finalVoucherDTO.setIsOneTimeVerification((Boolean) isOneTimeVerification); + } + } + } + + if (StringUtils.isNotBlank(queryDTO.getTripType())) { + finalVoucherDTOs.removeIf(v -> !StringUtils.equals(v.getTripType(), queryDTO.getTripType())); + } + + return TpResult.success(finalVoucherDTOs); + } + + @Override + public TpResult> getVoucherList(TpVoucherQueryDTO queryDTO) { + // 根据条件查询凭证列表 + List voucherList = voucherDomainService.getVoucherListWithNeedProperties(queryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + return TpResult.success(null); + } + + List voucherDTOs = voucherMapStructConvert.convert2DTOList(voucherList); + return TpResult.success(voucherDTOs); + } + + private void setVoucherAvailableShow(TpVoucherDTO v) { + if (StringUtils.equals(v.getType(), TpVoucherTypeEnum.DAY.getCode())) { + // 到了最早检票时间不需要调用规则域接口进行校验 + if (System.currentTimeMillis() >= v.getEffectiveStartTime()) { + v.setShowable(Boolean.TRUE); + return; + } + } + + // 校验非日票的是否可以展示,上面已经校验过日期,这里只需要校验时间 + LocalTime availableEarliestCheckTime = LocalTime.parse(v.getEarliestCheckTime(), TIME_FORMATTER); + LocalTime availableLatestCheckTime = LocalTime.parse(v.getLatestCheckTime(), TIME_FORMATTER); + long now = System.currentTimeMillis(); + long availableEarliestTimestamp = LocalDateTimeUtil.toEpochMilli(availableEarliestCheckTime); + long availableLatestTimestamp = LocalDateTimeUtil.toEpochMilli(availableLatestCheckTime); + + if (now >= availableEarliestTimestamp && now <= availableLatestTimestamp) { + v.setShowable(Boolean.TRUE); + } else { + v.setShowable(Boolean.FALSE); + // 设置不可见的原因:发车前xx分钟不可见 + List bizRuleDTOs = v.getBizRuleList(); + List targetRules = bizRuleDTOs.stream() + .filter(rule -> StringUtils.equals(TpRuleExpressionGroupEnum.TICKET_CHECK.getCode(), rule.getRuleGroup())) + .collect(Collectors.toList()); + v.setInvisibleReason(targetRules.get(0).getName()); + } + } + + private int getEveryDayTotalAvailableCount(List finalVoucherDTOs) { + TpVoucherDTO voucherDTO = finalVoucherDTOs.get(0); + int everyDayTotalAvailableCount = 0; + if (StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.DAY.getCode())) { + everyDayTotalAvailableCount = voucherDTO.getTotalCount(); + } + if (StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.WEEK.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucherDTO, voucherDTO.getBizRuleList(), TpRuleExpressionGroupEnum.WEEK_TICKET_USE_LIMIT, voucherDTO.getTenantId()); + } else if (StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.MONTH.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucherDTO, voucherDTO.getBizRuleList(), TpRuleExpressionGroupEnum.MONTH_TICKET_USE_LIMIT, voucherDTO.getTenantId()); + } else if (StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.TERM.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucherDTO, voucherDTO.getBizRuleList(), TpRuleExpressionGroupEnum.SEMESTER_TICKET_USE_LIMIT, voucherDTO.getTenantId()); + } else if (StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.DAY_RANGE.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucherDTO, voucherDTO.getBizRuleList(), TpRuleExpressionGroupEnum.DAY_RANGE_TICKET_USE_LIMIT, voucherDTO.getTenantId()); + } + + int totalPassengerCount = voucherDTO.getPassengerCount(); + int perPassengerCount = voucherDTO.getTotalCount() / totalPassengerCount; + Integer refundCount = voucherDTO.getRefundCount(); + return TpVoucherUtil.getEveryDayAvailableCheckCount(everyDayTotalAvailableCount, totalPassengerCount, perPassengerCount, refundCount); + } + + private List getExpressionList(TpVoucherDTO voucherDTO, String ruleGroup) { + List bizRuleDTOs = voucherDTO.getBizRuleList(); + List targetRules = bizRuleDTOs.stream() + .filter(rule -> StringUtils.equals(ruleGroup, rule.getRuleGroup())) + .collect(Collectors.toList()); + + return targetRules.stream() + .map(TpBizRuleDTO::getExpression) + .collect(Collectors.toList()); + } + + private void createVoucherBizCheck(TpVoucherCreateDTO createDTO) { + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + List voucherList = voucherDomainService.getVoucherList(queryDTO.setOrderNo(createDTO.getOrderNo()).setTenantId(createDTO.getTenantId())); + if (CollectionUtils.isNotEmpty(voucherList)) { + LogUtil.error("创建凭证失败,原因:订单已经存在凭证,入参为:{}", JSONUtil.toJsonStr(createDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + } + + private void setActualStatus(List voucherDTOs) { + voucherDTOs.forEach(voucherDTO -> { + // 非日票 + if (!StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.DAY.getCode())) { + // 如果凭证是已退票状态,实际状态则为已退票 + if (StringUtils.equals(voucherDTO.getStatus(), TpVoucherStatusEnum.REFUNDED.getCode())) { + voucherDTO.setActualStatus(TpVoucherStatusEnum.REFUNDED.getCode()); + return; + } + + // 已过期 + if (voucherDTO.getEffectiveEndTime() <= System.currentTimeMillis()) { + voucherDTO.setActualStatus(TpVoucherStatusEnum.EXPIRED.getCode()); + return; + } + + // 过期时间是当天,直接取当天的状态即可 + if (voucherDTO.getEffectiveEndTime() == DateUtil.beginOfDay(new Date()).getTime()) { + voucherDTO.setActualStatus(voucherDTO.getDayStatus()); + } else { + // 非有效期的最后一天,月票的总状态一定是可用的 + voucherDTO.setActualStatus(TpVoucherStatusEnum.CREATED.getCode()); + } + } else { + // 日票的状态是准确的,不需要处理 + voucherDTO.setActualStatus(voucherDTO.getStatus()); + } + }); + } + + private void setVoucherDailyStatus(TpVoucherQueryDTO queryDTO, List voucherNos, List voucherDTOs, Integer totalAvailableCount) { + // 日票的状态是准确的,不需要处理 + TpVoucherDTO voucherDTO = voucherDTOs.get(0); + if (StringUtils.equals(voucherDTO.getType(), TpVoucherTypeEnum.DAY.getCode())) { + voucherDTOs.forEach(v -> v.setDayStatus(v.getStatus())); + return; + } + + // 非日票要展示每天的状态,需要查询今天的核销记录 + List records = verificationDomainService.listVerificationRecord(voucherNos, DateUtil.beginOfDay(new Date()).getTime(), + System.currentTimeMillis(), queryDTO.getTenantId()); + + // 过滤出来核销成功的记录 + List successRecords = records.stream().filter(r -> StringUtils.equals(r.getResult(), TpVoucherVerifiedResultEnum.SUCCESS.getCode())) + .collect(Collectors.toList()); + + // 当天不存在核销记录,状态为:已过期/已创建 + if (CollectionUtils.isEmpty(records) || CollectionUtils.isEmpty(successRecords)) { + voucherDTOs.forEach(v -> { + LocalTime latestTime = LocalTime.parse(v.getLatestCheckTime(), TIME_FORMATTER); + if (latestTime.isBefore(LocalTime.now())) { + v.setDayStatus(TpVoucherStatusEnum.EXPIRED.getCode()); + return; + } + + v.setDayStatus(v.getStatus()); + }); + return; + } + + // 存在核销记录,记录每个凭证今天的核销次数 + Map recordMap = records.stream().collect( + Collectors.groupingBy( + TpVoucherVerificationRecord::getVoucherNo, + Collectors.collectingAndThen(Collectors.toList(), List::size) + ) + ); + + voucherDTOs.forEach(v -> { + Integer curRedemptionCount = recordMap.get(v.getVoucherNo()); + + // 当天的状态已过最晚检票时间,判断当天是否全部核销完毕,如果部分核销则将状态置为已过期 + LocalTime latestTime = LocalTime.parse(v.getLatestCheckTime(), TIME_FORMATTER); + if (latestTime.isBefore(LocalTime.now())) { + if (Objects.equals(curRedemptionCount, totalAvailableCount)) { + v.setDayStatus(TpVoucherStatusEnum.FULLY_VERIFIED.getCode()); + return; + } + + v.setDayStatus(TpVoucherStatusEnum.EXPIRED.getCode()); + return; + } + + if (curRedemptionCount == null) { + v.setDayStatus(TpVoucherStatusEnum.CREATED.getCode()); + return; + } + + if (Objects.equals(curRedemptionCount, totalAvailableCount)) { + v.setDayStatus(TpVoucherStatusEnum.FULLY_VERIFIED.getCode()); + return; + } + + if (curRedemptionCount < totalAvailableCount) { + v.setDayStatus(TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode()); + } + }); + } + + @Override + public TpResult refreshQrCodeExpireTime(TpRefreshQrCodeDTO refreshDTO) { + // 查询凭证 + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + TpVoucher voucher = voucherDomainService.getVoucher(queryDTO.setVoucherNo(refreshDTO.getVoucherNo()).setTenantId(refreshDTO.getTenantId())); + + if (voucher == null) { + LogUtil.error("刷新凭证失败,原因:凭证不存在,入参为:{}", JSONUtil.toJsonStr(refreshDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFRESH_VOUCHER_QR_CODE_ERROR); + } + + if (StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.CREATED.getCode())) { + LogUtil.error("刷新凭证失败,原因:凭证状态非法,不是CREATED状态,入参为:{}", JSONUtil.toJsonStr(refreshDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFRESH_VOUCHER_QR_CODE_ERROR); + } + + TpVoucherDTO voucherDTO = BeanUtil.copyProperties(voucher, TpVoucherDTO.class); + List voucherDTOs = Lists.newArrayList(voucherDTO); + // 生成乘车二维码,刷新过期时间 + generateQrCodeWithExpireTime(voucherDTOs); + + return TpResult.success(voucherDTOs.get(0)); + } + + @Override + public TpResult check(TpVoucherCheckDTO checkDTO) { + TpVoucher tpVoucher = null; + boolean availableContinueCheck; + boolean needOneTimeVerification = false; + int verificationPassengerCount = 1; + + try { + // 查询凭证 + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + tpVoucher = voucherDomainService.getVoucher(queryDTO.setVoucherNo(checkDTO.getVoucherNo()).setTenantId(checkDTO.getTenantId())); + if (tpVoucher == null) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_VOUCHER); + } + + // 基础业务校验 + verificationBaseBizCheck(checkDTO, tpVoucher, checkDTO.getValidationType()); + + // 获取所有的检票记录 + List totalSuccessRecords = getTpVoucherVerificationRecords(tpVoucher); + + // 过滤出今日的乘车成功的次数 + List todaySuccessRecords = totalSuccessRecords.stream() + .filter(successRecord -> successRecord.getVerificationTime() >= DateUtil.beginOfDay(new Date()).getTime() + && successRecord.getVerificationTime() <= System.currentTimeMillis()) + .collect(Collectors.toList()); + + // 非日票需要调用规则域的接口来校验检票时间以及检票次数 + Integer everyDayAvailableCount = ticketBizRuleCheck(checkDTO, tpVoucher, totalSuccessRecords, todaySuccessRecords); + + // 是否一次性全部核销以生成凭证时为准,走的快照 + // 一次性全部核销:开启一次性核销的配置 && 非实名制的日票 + Map bizData = tpVoucher.getBizData(); + if (MapUtils.isNotEmpty(bizData)) { + Object oneTimeVerificationTicket = bizData.get(BizDataKeyConstants.ONE_TIME_VERIFICATION_TICKET); + if (oneTimeVerificationTicket != null) { + needOneTimeVerification = !tpVoucher.getRequiredRealName() && StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.DAY.getCode()); + } + } + + if (needOneTimeVerification) { + verificationPassengerCount = tpVoucher.getTotalCount() - tpVoucher.getRedemptionCount() - tpVoucher.getRefundCount(); + voucherDomainService.groupTicketBatchCheckSuccess(tpVoucher, checkDTO.getVerificationTime(), everyDayAvailableCount, totalSuccessRecords.size(), checkDTO.getValidationType()); + availableContinueCheck = false; + } else { + voucherDomainService.checkSuccess(tpVoucher, checkDTO.getVerificationTime(), everyDayAvailableCount, totalSuccessRecords.size(), checkDTO.getValidationType()); + availableContinueCheck = todaySuccessRecords.size() < everyDayAvailableCount - 1; + } + + // 发送检票成功的消息 + sendVoucherVerifySuccessMsg(checkDTO.getVoucherNo(), checkDTO.getOrderNo(), checkDTO.getVerificationTime(), checkDTO.getTenantId()); + } catch (Exception e) { + if (e instanceof TpTradeCoreException || e instanceof TpException) { + throw e; + } + + LogUtil.error("检票接口处理异常,入参为:{},异常堆栈为:{}", JSONUtil.toJsonStr(checkDTO), e); + // 记录检票失败的记录 + if (tpVoucher != null) { + voucherDomainService.checkFail(tpVoucher, checkDTO.getVerificationTime(), checkDTO.getValidationType()); + } + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_CHECK_ERROR); + } + + //发送学生上车短信 + TpVoucher finalTpVoucher = tpVoucher; + smsSendPool.submit(() -> sendSmsToParent(finalTpVoucher.getUserNo(), finalTpVoucher.getTenantId(), LocalTime.now())); + + return TpResult.success(TpVoucherCheckVO.builder().checkResult(Boolean.TRUE) + .availableContinueCheck(availableContinueCheck) + .isOneTimeVerification(needOneTimeVerification) + .verificationPassengerCount(verificationPassengerCount) + .build()); + } + + @Override + public TpResult villageBatchCheckSuccess(TpVoucherCheckSuccessDTO checkSuccessDTO) { + // 参数校验 + Assert.notNull(checkSuccessDTO, "入参不能为空"); + Assert.hasText(checkSuccessDTO.getUserNo(), "用户编号不能为空"); + Assert.hasText(checkSuccessDTO.getValidationType(), "检票方式不能为空"); + Assert.notNull(checkSuccessDTO.getVerificationTime(), "检票时间不能为空"); + Assert.notNull(checkSuccessDTO.getTenantId(), "租户id不能为空"); + if (StringUtils.isBlank(checkSuccessDTO.getOrderNo()) && CollectionUtils.isEmpty(checkSuccessDTO.getVoucherNos())) { + throw new IllegalArgumentException("订单编号或者凭证编号列表不能为空"); + } + + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + queryDTO.setVoucherNos(checkSuccessDTO.getVoucherNos()); + queryDTO.setOrderNo(checkSuccessDTO.getOrderNo()); + queryDTO.setTenantId(checkSuccessDTO.getTenantId()); + List voucherList = voucherDomainService.getVoucherList(queryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + LogUtil.error("核销成功接口,凭证不存在,入参为:{}", JSONUtil.toJsonStr(checkSuccessDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_NOT_FOUND); + } + + // 更新凭证状态 && 增加核销记录 + voucherDomainService.villageBatchCheckSuccess(voucherList, checkSuccessDTO.getVerificationTime(), checkSuccessDTO.getUserNo(), checkSuccessDTO.getValidationType(), checkSuccessDTO.getTenantId()); + return TpResult.success(true); + } + + private void sendSmsToParent(String userNo, String tenantId, LocalTime time) { + TpStudentQueryDTO studentQuery = new TpStudentQueryDTO(); + studentQuery.setAccountNo(userNo); + studentQuery.setTenantId(tenantId); + TpStudentVO student = studentClient.queryStudentDetail(studentQuery); + if (student == null) { + LogUtil.info("学生发送上车提醒短信,非学生无需发送短信,userNo = {}", userNo); + return; + } + Boolean studentsTicketChecking = student.getSendSmsToParentAfterStudentsTicketChecking(); + if (studentsTicketChecking == null || !studentsTicketChecking) { + LogUtil.info("学生发送上车提醒短信,配置无需发送短信,userNo = {}", userNo); + return; + } + String phone = student.getPhone(); + if (StrUtil.isBlank(phone)) { + LogUtil.warn("学生发送上车提醒短信失败,找不到家长电话号码,userNo = {}", userNo); + return; + } + TpSmsStudentVerificationNotifyTemplate template = new TpSmsStudentVerificationNotifyTemplate(); + template.setUserName(student.getStudentName()); + int hour = time.getHour(); + int minute = time.getMinute(); + template.setTime((hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute)); + try { + smsClient.sendSms(phone, template); + } catch (Exception e) { + LogUtil.error("学生发送上车提醒短信发送失败,调用发送短信接口异常,userNo = {},家长手机号码 = {},", userNo, phone, e); + } + } + + private Integer ticketBizRuleCheck(TpVoucherCheckDTO checkDTO, TpVoucher tpVoucher, List totalSuccessRecords, List todaySuccessRecords) { + List bizRuleList = tpVoucher.getBizRuleList(); + + // 检票时间规则校验 + ticketCheckTimeCheck(checkDTO, tpVoucher); + + // 校验每天乘车次数 + int everyDayAvailableCheckCount = getEveryDayCheckCount(checkDTO, tpVoucher, todaySuccessRecords, bizRuleList); + + int totalPassengerCount = tpVoucher.getPassengerCount(); + int perPassengerCount = tpVoucher.getTotalCount() / totalPassengerCount; + Integer refundCount = tpVoucher.getRefundCount(); + Integer everyAvailableCount = TpVoucherUtil.getEveryDayAvailableCheckCount(everyDayAvailableCheckCount, totalPassengerCount, perPassengerCount, refundCount); + if (todaySuccessRecords.size() > everyAvailableCount - 1) { + LogUtil.error("凭证检票失败,已达今日最大检票次数,入参为:{}", JSONUtil.toJsonStr(checkDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.OVER_TODAY_MAX_AVAILABLE_COUNT); + } + + // 总乘车次数的规则校验,非日票和日票的的总可用乘车次数在生成凭证时已经写入了 + if (totalSuccessRecords.size() > tpVoucher.getTotalCount() - 1) { + LogUtil.error("凭证检票次数限制规则校验失败,入参为:{}", JSONUtil.toJsonStr(checkDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.OVER_TOTAL_MAX_AVAILABLE_COUNT); + } + + return everyAvailableCount; + } + + private int getEveryDayCheckCount(TpVoucherCheckDTO checkDTO, TpVoucher tpVoucher, List successRecords, List bizRuleList) { + int everyDayCheckCount = 0; + + // 每日限制乘车次数的规则,非日票才需要调用产品域的接口进行校验 + if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + everyDayCheckCount = tpVoucher.getTotalCount(); + } else if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.WEEK.getCode())) { + everyDayCheckCount = getEveryDayCheckCount(tpVoucher, bizRuleList, TpRuleExpressionGroupEnum.WEEK_TICKET_USE_LIMIT, checkDTO.getTenantId()); + } else if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.MONTH.getCode())) { + everyDayCheckCount = getEveryDayCheckCount(tpVoucher, bizRuleList, TpRuleExpressionGroupEnum.MONTH_TICKET_USE_LIMIT, checkDTO.getTenantId()); + } else if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.TERM.getCode())) { + everyDayCheckCount = getEveryDayCheckCount(tpVoucher, bizRuleList, TpRuleExpressionGroupEnum.SEMESTER_TICKET_USE_LIMIT, checkDTO.getTenantId()); + } else if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.DAY_RANGE.getCode())) { + everyDayCheckCount = getEveryDayCheckCount(tpVoucher, bizRuleList, TpRuleExpressionGroupEnum.DAY_RANGE_TICKET_USE_LIMIT, checkDTO.getTenantId()); + } + + return everyDayCheckCount; + } + + private int getEveryDayCheckCount(TpVoucher tpVoucher, List bizRuleList, TpRuleExpressionGroupEnum ruleGroup, String tenantId) { + int everyDayCheckCount; + List checkEveryDayCountRules; + checkEveryDayCountRules = bizRuleList.stream() + .filter(rule -> StringUtils.equals(rule.getRuleGroup(), ruleGroup.getCode())) + .collect(Collectors.toList()); + + List expressionList = checkEveryDayCountRules.stream() + .map(TpBizRule::getExpression) + .collect(Collectors.toList()); + + Assert.notEmpty(checkEveryDayCountRules, "每日限制乘车次数校验规则不能为空"); + everyDayCheckCount = ticketCheckCountRule(expressionList, tpVoucher.getPassengerCount(), ruleGroup, tenantId); + return everyDayCheckCount; + } + + private int getEveryDayCheckCount(TpVoucherDTO tpVoucher, List bizRuleList, TpRuleExpressionGroupEnum ruleGroup, String tenantId) { + int everyDayCheckCount; + List checkEveryDayCountRules; + checkEveryDayCountRules = bizRuleList.stream() + .filter(rule -> StringUtils.equals(rule.getRuleGroup(), ruleGroup.getCode())) + .collect(Collectors.toList()); + + Assert.notEmpty(checkEveryDayCountRules, "校验每日可乘坐次数的规则不能为空"); + + List expressionList = checkEveryDayCountRules.stream() + .map(TpBizRuleDTO::getExpression) + .collect(Collectors.toList()); + + Assert.notEmpty(checkEveryDayCountRules, "每日限制乘车次数校验规则不能为空"); + everyDayCheckCount = ticketCheckCountRule(expressionList, tpVoucher.getPassengerCount(), ruleGroup, tenantId); + return everyDayCheckCount; + } + + private void ticketCheckTimeCheck(TpVoucherCheckDTO checkDTO, TpVoucher tpVoucher) { + if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + return; + } + + // 校验非日票的是否可以展示,上面已经校验过日期,这里只需要校验时间 + LocalTime availableEarliestCheckTime = LocalTime.parse(tpVoucher.getEarliestCheckTime(), TIME_FORMATTER); + LocalTime availableLatestCheckTime = LocalTime.parse(tpVoucher.getLatestCheckTime(), TIME_FORMATTER); + long now = System.currentTimeMillis(); + long availableEarliestTimestamp = LocalDateTimeUtil.toEpochMilli(availableEarliestCheckTime); + long availableLatestTimestamp = LocalDateTimeUtil.toEpochMilli(availableLatestCheckTime); + + if (now < availableEarliestTimestamp && now > availableLatestTimestamp) { + LogUtil.error("检票失败,凭证检票时间规则未通过,检票入参为:{}", JSONUtil.toJsonStr(checkDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_CHECK_TIME_RULE_EXECUTE_FILED); + } + } + + private boolean ticketCheckTimeRule(Long verificationTime, List expressionList, String earliestCheckTime, String latestCheckTime) { + Long latestAvailableCheckTime = convertCheckTime2Timestamp(latestCheckTime); + + TpRuleExecuteDTO ruleExecuteDTO = new TpRuleExecuteDTO<>(); + TpTicketCheckParamDTO checkParamDTO = new TpTicketCheckParamDTO(); + checkParamDTO.setDepartureTime(convertCheckTime2Timestamp(earliestCheckTime)); + ruleExecuteDTO.setRuleList(expressionList); + ruleExecuteDTO.setParameter(checkParamDTO); + ruleExecuteDTO.setRuleExpressionGroup(TpRuleExpressionGroupEnum.TICKET_CHECK); + + LogUtil.info("请求规则域执行规则的接口,规则为:验票时间段校验规则,入参为:{}", JSONUtil.toJsonStr(ruleExecuteDTO)); + TpRuleExecuteResultVO executeResult = bizRuleClient.executeRule(ruleExecuteDTO); + Long availableEarliestCheckTime = executeResult.getResult(); + if (verificationTime >= availableEarliestCheckTime && verificationTime <= latestAvailableCheckTime) { + return Boolean.TRUE; + } + + return Boolean.FALSE; + } + + private boolean ticketCheckTimeRule(List expressionList, Long earliestCheckTime, Long latestCheckTime) { + TpRuleExecuteDTO ruleExecuteDTO = new TpRuleExecuteDTO<>(); + TpTicketCheckParamDTO checkParamDTO = new TpTicketCheckParamDTO(); + checkParamDTO.setDepartureTime(earliestCheckTime); + ruleExecuteDTO.setRuleList(expressionList); + ruleExecuteDTO.setParameter(checkParamDTO); + ruleExecuteDTO.setRuleExpressionGroup(TpRuleExpressionGroupEnum.TICKET_CHECK); + + TpRuleExecuteResultVO executeResult = bizRuleClient.executeRule(ruleExecuteDTO); + LogUtil.info("请求规则域执行规则的接口,规则为:验票时间段校验规则,入参为:{}", JSONUtil.toJsonStr(ruleExecuteDTO)); + return executeResult.getResult(); + } + + private int ticketCheckCountRule(List expressionList, Integer passengerCount, TpRuleExpressionGroupEnum ruleGroup, String tenantId) { + TpRuleExecuteDTO ruleExecuteDTO = new TpRuleExecuteDTO<>(); + TpRollShuttleTripsParamDTO checkParamDTO = new TpRollShuttleTripsParamDTO(); + ruleExecuteDTO.setRuleList(expressionList); + ruleExecuteDTO.setParameter(checkParamDTO); + checkParamDTO.setPassengerCount(passengerCount); + ruleExecuteDTO.setRuleExpressionGroup(ruleGroup); + ruleExecuteDTO.setTenantId(tenantId); + TpRuleExecuteResultVO executeResult = bizRuleClient.executeRule(ruleExecuteDTO); + return executeResult.getResult(); + } + + private Long convertCheckTime2Timestamp(String checkTime) { + // 最早检票时间08:00 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(GlobalConstants.TIME_FORMAT); + LocalTime curTime = LocalTime.parse(checkTime, formatter); + + // 非日票,发车时间取当天的时间 + LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), curTime); + return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + } + + private List getTpVoucherVerificationRecords(TpVoucher tpVoucher) { + List records = verificationDomainService.listVerificationRecord(Lists.newArrayList(tpVoucher.getVoucherNo()), null, null, tpVoucher.getTenantId()); + + if (CollectionUtils.isEmpty(records)) { + return Lists.newArrayList(); + } + + return records.stream() + .filter(r -> StringUtils.equals(r.getResult(), TpVoucherVerifiedResultEnum.SUCCESS.getCode())) + .collect(Collectors.toList()); + } + + private void sendVoucherVerifySuccessMsg(String voucherNo, String orderNo, Long verificationTime, String tenantId) { + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + List voucherList = voucherDomainService.getVoucherList(queryDTO.setOrderNo(orderNo).setTenantId(tenantId)); + + boolean existValid = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.CREATED.getCode()) || + StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode())); + + boolean existRefund = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.REFUNDED.getCode()) || + StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.REFUNDING.getCode())); + + boolean existExpired = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.EXPIRED.getCode())); + + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_VOUCHER); + baseMessageEntity.setKey(voucherNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + VoucherVerificationSuccessMessageEntity verificationSuccessMessage = new VoucherVerificationSuccessMessageEntity(); + verificationSuccessMessage.setOrderNo(orderNo); + verificationSuccessMessage.setVoucherNo(voucherNo); + verificationSuccessMessage.setVerificationTime(verificationTime); + verificationSuccessMessage.setTenantId(tenantId); + verificationSuccessMessage.setExistRefund(existRefund); + verificationSuccessMessage.setExistVerification(Boolean.TRUE); + verificationSuccessMessage.setExistValid(existValid); + verificationSuccessMessage.setExistExpire(existExpired); + baseMessageEntity.setBody(JSONUtil.toJsonStr(verificationSuccessMessage)); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_VOUCHER_VERIFICATION_SUCCESS, baseMessageEntity); + } + + @Override + public TpResult invalidVoucher(List voucherUpdateDTOs) { + // 幂等处理,如果当前退票申请单已经有失效凭证的记录就幂等处理 + String refundApplyOrderNo = voucherUpdateDTOs.get(0).getRefundApplyOrderNo(); + String tenantId = voucherUpdateDTOs.get(0).getTenantId(); + Boolean existRefundVoucherRecord = contractDomainService.existRefundVoucherRecord(refundApplyOrderNo, tenantId); + if (existRefundVoucherRecord) { + LogUtil.warn("当前退票申请单已经失效了凭证,进行幂等处理,入参为:{}", JSONUtil.toJsonStr(voucherUpdateDTOs)); + return TpResult.success(Boolean.TRUE); + } + + transactionTemplate.executeWithoutResult(action -> { + voucherDomainService.batchInvalidVouchers(voucherUpdateDTOs); + contractDomainService.saveRefundVoucherRecord(voucherUpdateDTOs); + }); + + return TpResult.success(Boolean.TRUE); + } + + @Override + public TpResult queryBuyLimitNeedVoucherCount(TpBuyLimitQueryVoucherDTO queryDTO) { + // 参数校验 + Assert.notNull(queryDTO, "请求参数为空"); + Assert.hasText(queryDTO.getProductCategoryNo(), "产品类目不能为空"); + Assert.hasText(queryDTO.getUserNo(), "用户编号不能为空"); + Assert.hasText(queryDTO.getTenantId(), "租户id不能为空"); + + // 查询当前用户当前类目下所有的凭证 + TpVoucherQueryDTO voucherQueryDTO = new TpVoucherQueryDTO(); + voucherQueryDTO.setUserNo(queryDTO.getUserNo()); + voucherQueryDTO.setProductCategoryNo(queryDTO.getProductCategoryNo()); + voucherQueryDTO.setTenantId(queryDTO.getTenantId()); + List voucherList = voucherDomainService.getVoucherList(voucherQueryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + return TpResult.success(TpBuyLimitQueryVoucherVO.builder().dayVoucherCount(0).weekVoucherCount(0).monthVoucherCount(0).build()); + } + + // 处理凭证数量 + long dayStartMills = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.beginOfDay(LocalDateTime.now())); + long dayEndMills = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.endOfDay(LocalDateTime.now())); + long weekStartMills = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.of(DateUtil.beginOfWeek(new Date()))); + long weekEndMills = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.of(DateUtil.endOfWeek(new Date()))); + long monthStartMills = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.of(DateUtil.beginOfMonth(new Date()))); + long monthEndMills = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.of(DateUtil.endOfMonth(new Date()))); + + List dailyVoucherList = voucherList.stream() + .filter(voucher -> voucher.getEffectiveStartTime() >= dayStartMills && voucher.getEffectiveStartTime() <= dayEndMills) + .collect(Collectors.toList()); + + List weekVoucherList = voucherList.stream() + .filter(voucher -> voucher.getEffectiveStartTime() >= weekStartMills && voucher.getEffectiveStartTime() <= weekEndMills) + .collect(Collectors.toList()); + + List monthVoucherList = voucherList.stream() + .filter(voucher -> voucher.getEffectiveStartTime() >= monthStartMills && voucher.getEffectiveStartTime() <= monthEndMills) + .collect(Collectors.toList()); + + TpBuyLimitQueryVoucherVO queryVO = TpBuyLimitQueryVoucherVO.builder() + .dayVoucherCount(CollectionUtils.isEmpty(dailyVoucherList) ? 0 : dailyVoucherList.size()) + .weekVoucherCount(CollectionUtils.isEmpty(weekVoucherList) ? 0 : weekVoucherList.size()) + .monthVoucherCount(CollectionUtils.isEmpty(monthVoucherList) ? 0 : monthVoucherList.size()) + .build(); + + return TpResult.success(queryVO); + } + + @Override + public TpResult> getVoucherVerificationRecordList(TpVoucherVerificationRecordQueryDTO queryDTO) { + if (StringUtils.isNotBlank(queryDTO.getOrderNo()) && CollectionUtils.isNotEmpty(queryDTO.getVoucherNos())) { + LogUtil.error("不支持同时按照订单号和凭证编号查询凭证核销记录"); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ILLEGAL_PARAMS, TpTradeCoreErrorCode.ILLEGAL_PARAMS.getDesc()); + } + + List voucherNos = queryDTO.getVoucherNos(); + if (StringUtils.isNotBlank(queryDTO.getOrderNo())) { + TpVoucherQueryDTO voucherQueryDTO = new TpVoucherQueryDTO(); + voucherQueryDTO.setUserNo(queryDTO.getUserNo()); + voucherQueryDTO.setOrderNo(queryDTO.getOrderNo()); + voucherQueryDTO.setTenantId(queryDTO.getTenantId()); + List voucherList = voucherDomainService.getVoucherListWithNeedProperties(voucherQueryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + return null; + } + voucherNos = voucherList.stream().map(TpVoucher::getVoucherNo).collect(Collectors.toList()); + } + + List records = verificationDomainService.listVerificationRecord(voucherNos, null, null, queryDTO.getTenantId()); + if (CollectionUtils.isEmpty(records)) { + return TpResult.success(null); + } + + if (StringUtils.isNotBlank(queryDTO.getUserNo())) { + List finalRecords = records.stream().filter(record -> StringUtils.equals(record.getUserNo(), queryDTO.getUserNo())).collect(Collectors.toList()); + return TpResult.success(BeanUtil.copyToList(finalRecords, TpVoucherVerificationRecordDTO.class)); + } + + return TpResult.success(BeanUtil.copyToList(records, TpVoucherVerificationRecordDTO.class)); + } + + @Override + public TpResult> getVoucherPassengerList(TpVoucherPassengerQueryDTO query) { + List voucherPassengerList = voucherDomainService.getVoucherPassengerList(query.getRouteCode(), query.getShuttleCode(), query.getShuttleDate(), query.getTenantId()); + return TpResult.success(voucherMapStructConvert.passenger2DTOList(voucherPassengerList)); + } + + @Override + public TpResult getTimeRangeExistVerificationRecordDate(TpTimeRangeExistVerificationRecordDateQueryDTO queryDTO) { + // 参数校验 + paramCheck(queryDTO); + + // 根据时间范围查询乘车记录 + List timeRangeVerificationRecords = verificationDomainService.getTimeRangeVerificationRecord(queryDTO.getUserNo(), queryDTO.getStartTime(), queryDTO.getEndTime(), queryDTO.getTenantId()); + if (CollectionUtils.isEmpty(timeRangeVerificationRecords)) { + return TpResult.success(null); + } + + List successRecords = timeRangeVerificationRecords.stream() + .filter(record -> StringUtils.equals(record.getResult(), TpVoucherVerifiedResultEnum.SUCCESS.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(successRecords)) { + return TpResult.success(null); + } + + List resultDateList = Lists.newArrayList(); + successRecords.forEach(r -> { + Long verificationTimestamp = r.getVerificationTime(); + String formatDate = DateUtil.format(LocalDateTimeUtil.of(verificationTimestamp), DatePattern.NORM_DATE_PATTERN); + DateTime time = DateUtil.parse(formatDate, DatePattern.NORM_DATE_PATTERN); + DateTime dateTime = DateUtil.beginOfDay(time); + long dateTimestamp = dateTime.getTime(); + resultDateList.add(dateTimestamp); + }); + + List verificationSucceesDateList = resultDateList.stream().distinct().collect(Collectors.toList()); + return TpResult.success(new TpTimeRangeExistVerificationRecordDateQueryVO(verificationSucceesDateList)); + } + + @Override + public TpResult getTimeRangeUserVerificationRecordDetail(TpTimeRangeUserVerificationRecordDetailQueryDTO queryDTO) { + // 参数校验 + paramCheck(queryDTO); + + // 根据时间范围查询乘车记录 + List userCurrentDayVerificationRecords = verificationDomainService.getTimeRangeVerificationRecord(queryDTO.getUserNo(), queryDTO.getStartTime(), + queryDTO.getEndTime(), queryDTO.getTenantId()); + if (CollectionUtils.isEmpty(userCurrentDayVerificationRecords)) { + return TpResult.success(null); + } + + // 过滤出核销成功的记录 + List successRecords = userCurrentDayVerificationRecords.stream() + .filter(record -> StringUtils.equals(record.getResult(), TpVoucherVerifiedResultEnum.SUCCESS.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(successRecords)) { + return TpResult.success(null); + } + + // 查询凭证 + List voucherNos = successRecords.stream() + .map(TpVoucherVerificationRecord::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + TpVoucherQueryDTO voucherQueryDTO = new TpVoucherQueryDTO(); + voucherQueryDTO.setVoucherNos(voucherNos).setTenantId(queryDTO.getTenantId()); + List needProperties = TpVoucherNeedPropertiesEnum.buildNeedPropertiesList(TpVoucherNeedPropertiesEnum.PASSENGER); + voucherQueryDTO.setNeedProperties(needProperties); + List voucherList = voucherDomainService.getVoucherListWithNeedProperties(voucherQueryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + LogUtil.error("根据凭证编号无法查询到凭证列表,入参为:{}", JSONUtil.toJsonStr(voucherQueryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_NOT_FOUND); + } + + // 查询行程单信息 + List orderNos = voucherList.stream() + .map(TpVoucher::getOrderNo) + .distinct() + .collect(Collectors.toList()); + List trips = orderTravelTripRepository.list(Wrappers.lambdaQuery() + .in(TpOrderTravelTripDO::getOrderNo, orderNos) + .eq(TpOrderTravelTripDO::getTenantId, queryDTO.getTenantId())); + + // 组装数据 + return assembleUserVoucherVerificationRecord(voucherList, successRecords, trips); + } + + @Override + public TpResult> queryMngVerificationRecords(TpMngVerificationRecordQueryDTO queryDTO) { + Assert.notNull(queryDTO, "入参不能为空"); + Assert.hasText(queryDTO.getTenantId(), "租户id不能为空"); + + if (StringUtils.isNotBlank(queryDTO.getPhone())) { + List orderPlacers = orderPlacerRepository.queryPlacerByPhone(queryDTO.getTenantId(), queryDTO.getPhone()); + if (CollectionUtils.isEmpty(orderPlacers)) { + queryDTO.setUserNos(Lists.newArrayList("-1")); + } else { + List userNos = orderPlacers.stream() + .map(TpOrderPlacer::getPlacerNo) + .distinct() + .collect(Collectors.toList()); + queryDTO.setUserNos(userNos); + } + } + + VoucherVerificationQueryCondition queryCondition = convert2QueryCondition(queryDTO); + + CommonPage mngVoucherVerificationRecordQueryResults = verificationDomainService.queryMngVerificationRecords(queryCondition); + if (CollectionUtils.isEmpty(mngVoucherVerificationRecordQueryResults.getList())) { + return TpResult.success(CommonPage.EMPTY_PAGE); + } + + List voucherNos = mngVoucherVerificationRecordQueryResults.getList().stream() + .map(MngVoucherVerificationRecordQueryResult::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + TpVoucherQueryDTO voucherQueryDTO = new TpVoucherQueryDTO(); + voucherQueryDTO.setVoucherNos(voucherNos); + voucherQueryDTO.setTenantId(queryDTO.getTenantId()); + voucherQueryDTO.setNeedProperties(TpVoucherNeedPropertiesEnum.buildNeedPropertiesList(TpVoucherNeedPropertiesEnum.PASSENGER)); + List voucherList = voucherDomainService.getVoucherListWithNeedProperties(voucherQueryDTO); + if (CollectionUtils.isEmpty(voucherList)) { + LogUtil.error("根据凭证编号无法查询到凭证列表,入参为:{}", JSONUtil.toJsonStr(voucherQueryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_NOT_FOUND); + } + + Map voucherMap = voucherList.stream() + .collect(Collectors.toMap(TpVoucher::getVoucherNo, Function.identity())); + + // 查询凭证乘客信息 + Map voucherPassengerMap = null; + List voucherPassengerList = voucherPassengerRepository.getVoucherPassengerList(voucherNos, queryDTO.getTenantId()); + if (CollectionUtils.isNotEmpty(voucherPassengerList)) { + voucherPassengerMap = voucherPassengerList.stream() + .collect(Collectors.toMap(TpVoucherPassenger::getVoucherNo, Function.identity())); + } + + // 查询订单的行程信息:包含上下车点 + List orderNos = mngVoucherVerificationRecordQueryResults.getList().stream() + .map(MngVoucherVerificationRecordQueryResult::getOrderNo) + .distinct() + .collect(Collectors.toList()); + List orderTrips = orderDomainService.queryTripNosByOrderNos(queryCondition.getTenantId(), orderNos); + Map> roundOrderTripMap = orderTrips.stream() + .collect(Collectors.groupingBy(TpOrderTravelTrip::getOrderNo)); + + // 查新下单人 + List orderPlacers = orderPlacerRepository.queryPlacerByOrderNos(queryDTO.getTenantId(), orderNos); + Map orderPlacerMap = orderPlacers.stream() + .collect(Collectors.toMap(TpOrderPlacer::getOrderNo, p -> p, (p1, p2) -> p1)); + + // 查询线路列表 + List orderRoutes = orderRouteRepository.queryRouteByOrderNos(queryDTO.getTenantId(), orderNos); + Map routeMap = orderRoutes.stream().collect(Collectors.toMap(TpOrderRoute::getOrderNo, Function.identity())); + + // 组装参数 + List recordDTOs = Lists.newArrayList(); + for (MngVoucherVerificationRecordQueryResult queryResult : mngVoucherVerificationRecordQueryResults.getList()) { + TpMngVerificationRecordDTO recordDTO = new TpMngVerificationRecordDTO(); + recordDTO.setVerificationTime(queryResult.getVerificationTime()); + recordDTO.setValidationType(queryResult.getValidationType()); + if (MapUtils.isNotEmpty(voucherPassengerMap)) { + TpVoucherPassenger voucherPassenger = voucherPassengerMap.get(queryResult.getVoucherNo()); + TpVoucherPassengerDTO voucherPassengerDTO = TpVoucherPassengerMapStructConvert.INSTANCE.convert2VoucherPassengerDTO(voucherPassenger); + recordDTO.setPassengerDTO(voucherPassengerDTO); + } + + TpVoucher voucher = voucherMap.get(queryResult.getVoucherNo()); + Map bizData = voucher.getBizData(); + if (MapUtils.isNotEmpty(bizData)) { + Object isOneTimeVerification = bizData.get(BizDataKeyConstants.ONE_TIME_VERIFICATION_TICKET); + // 一次性全部核销 + if (isOneTimeVerification != null) { + recordDTO.setVerificationPassengerCount(voucher.getRedemptionCount()); + } + } else { + recordDTO.setVerificationPassengerCount(1); + } + + recordDTO.setProductCategoryNo(queryResult.getProductCategoryNo()); + recordDTO.setProductCategoryName(queryResult.getProductCategoryName()); + recordDTO.setRouteNo(queryResult.getRouteId()); + recordDTO.setRouteName(queryResult.getRouteName()); + recordDTO.setUserNo(queryResult.getUserNo()); + + List curOrderTripList = roundOrderTripMap.get(queryResult.getOrderNo()); + TpOrderTravelTrip orderTravelTrip; + if (StringUtils.isBlank(voucher.getTripType())) { + orderTravelTrip = curOrderTripList.get(0); + } else { + List curTripTypeTrips = curOrderTripList.stream().filter(trip -> StringUtils.equals(trip.getTripType(), voucher.getTripType())) + .collect(Collectors.toList()); + orderTravelTrip = curTripTypeTrips.get(0); + } + + // show departTimeDesc first,then shuttle time + TpOrderRoute orderRoute = routeMap.get(queryResult.getOrderNo()); + Map routeBizData = orderRoute.getBizData(); + if (MapUtils.isNotEmpty(routeBizData)) { + if (routeBizData.containsKey(BizDataKeyConstants.DEPART_TIME_DESC)) { + recordDTO.setShuttleTime((String) routeBizData.get(BizDataKeyConstants.DEPART_TIME_DESC)); + } else { + recordDTO.setShuttleTime(orderTravelTrip.getStartTime()); + } + } else { + recordDTO.setShuttleTime(orderTravelTrip.getStartTime()); + } + + recordDTO.setOrderNo(queryResult.getOrderNo()); + TpOrderPlacer orderPlacer = orderPlacerMap.get(queryResult.getOrderNo()); + recordDTO.setPhone(orderPlacer.getPlacerContact()); + recordDTO.setTpOrderTravelTrip(orderTravelTripConverter.model2VO(orderTravelTrip)); + recordDTO.setVoucherType(queryResult.getType()); + recordDTO.setTripType(voucher.getTripType()); + recordDTOs.add(recordDTO); + } + + + return TpResult.success(CommonPage.copyMetaWithNewData(mngVoucherVerificationRecordQueryResults, recordDTOs)); + } + + @Override + public TpResult rescheduleInvalidVouchers(TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO) { + // 参数校验 + paramCheck(rescheduleInvalidVoucherDTO); + + // 幂等控制 + Map invalidDTOMap = rescheduleInvalidVoucherDTO.getInvalidVoucherDTOs() + .stream() + .collect(Collectors.toMap(TpInvalidVoucherDTO::getVoucherNo, Function.identity())); + List needInvalidVoucherList = rescheduleInvalidVoucherBizCheck(rescheduleInvalidVoucherDTO, invalidDTOMap); + + // 失效凭证 + Pair, List> pair = buildInvalidVoucherDTO(rescheduleInvalidVoucherDTO, needInvalidVoucherList, invalidDTOMap); + transactionTemplate.executeWithoutResult(action -> { + voucherDomainService.rescheduleInvalidVoucher(pair.getLeft()); + rescheduleInvalidVoucherRecordRepository.saveBatch(pair.getRight()); + }); + + // 20240718 与瑞洁对齐:当改签订单的原始订单没有可用的凭证后,订单需要推进到已失效的状态 + // 下面的逻辑判断是否存在有效凭证,如果没有则发送消息推进状态 + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + queryDTO.setOrderNo(rescheduleInvalidVoucherDTO.getOriginalOrderNo()); + queryDTO.setTenantId(rescheduleInvalidVoucherDTO.getTenantId()); + List voucherList = voucherDomainService.getVoucherListWithNeedProperties(queryDTO); + boolean existValid = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.CREATED.getCode()) || StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode())); + boolean existRefund = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.REFUNDED.getCode())); + if (!existValid) { + BaseMessageEntity baseMessageEntity = buildRescheduleVoucherInvalidMsg(rescheduleInvalidVoucherDTO.getOriginalOrderNo(), rescheduleInvalidVoucherDTO.getTenantId(), existRefund); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_RESCHEDULE_VOUCHER_INVALID_SUCCESS, baseMessageEntity); + LogUtil.info("改签失效凭证接口,当前订单已经没有可用的凭证,向订单域发送推进订单失效的消息,本次接口入参:{},消息体为:{}", JSONUtil.toJsonStr(rescheduleInvalidVoucherDTO), JSONUtil.toJsonStr(baseMessageEntity)); + } + + return TpResult.success(true); + } + + private Pair, List> buildInvalidVoucherDTO(TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO, List needInvalidVoucherList, + Map invalidDTOMap) { + List invalidDTOs = Lists.newArrayList(); + List invalidVoucherRecords = Lists.newArrayList(); + needInvalidVoucherList.forEach(v -> { + TpInvalidVoucherDTO curInvalidDTO = invalidDTOMap.get(v.getVoucherNo()); + TpVoucherInvalidDTO invalidDTO = new TpVoucherInvalidDTO(); + invalidDTO.setVoucherNo(v.getVoucherNo()); + Integer invalidPassengerCount = curInvalidDTO.getInvalidPassengerCount(); + Integer totalRefundCount = TpVoucherUtil.calculateNeedInvalidCount(v, invalidPassengerCount); + invalidDTO.setRefundCount(totalRefundCount); + String targetStatus = null; + if (ObjectUtil.equal(totalRefundCount + v.getRedemptionCount(), v.getTotalCount())) { + targetStatus = TpVoucherStatusEnum.REFUNDED.getCode(); + } + invalidDTO.setTargetStatus(targetStatus); + invalidDTOs.add(invalidDTO); + + TpRescheduleInvalidVoucherRecordDO invalidVoucherRecordDO = new TpRescheduleInvalidVoucherRecordDO(); + invalidVoucherRecordDO.setOriginalOrderNo(rescheduleInvalidVoucherDTO.getOriginalOrderNo()); + invalidVoucherRecordDO.setOrderNo(rescheduleInvalidVoucherDTO.getOrderNo()); + invalidVoucherRecordDO.setVoucherNo(v.getVoucherNo()); + invalidVoucherRecordDO.setInvalidTotalCount(totalRefundCount); + invalidVoucherRecordDO.setInvalidPassengerCount(curInvalidDTO.getInvalidPassengerCount()); + if (StringUtils.isNotBlank(targetStatus)) { + invalidVoucherRecordDO.setTargetStatus(targetStatus); + } else { + invalidVoucherRecordDO.setTargetStatus(v.getStatus()); + } + + invalidVoucherRecordDO.setTenantId(rescheduleInvalidVoucherDTO.getTenantId()); + invalidVoucherRecords.add(invalidVoucherRecordDO); + }); + + return Pair.of(invalidDTOs, invalidVoucherRecords); + } + + private List rescheduleInvalidVoucherBizCheck(TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO, Map invalidDTOMap) { + boolean needIdempotent = rescheduleInvalidVoucherRecordRepository.existCurRescheduleOrderInvalidRecord(rescheduleInvalidVoucherDTO.getOrderNo(), rescheduleInvalidVoucherDTO.getTenantId()); + if (needIdempotent) { + LogUtil.warn("当前改签订单已经失效过凭证,幂等处理,入参为:{}", JSONUtil.toJsonStr(rescheduleInvalidVoucherDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + // 凭证状态校验 + List voucherNos = rescheduleInvalidVoucherDTO.getInvalidVoucherDTOs().stream() + .map(TpInvalidVoucherDTO::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + queryDTO.setVoucherNos(voucherNos); + queryDTO.setTenantId(rescheduleInvalidVoucherDTO.getTenantId()); + List voucherList = voucherDomainService.getVoucherList(queryDTO); + boolean existInvalidVoucher = voucherList.stream() + .anyMatch(v -> !StringUtils.equals(v.getStatus(), TpVoucherStatusEnum.CREATED.getCode()) && !StringUtils.equals(v.getStatus(), TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode())); + if (existInvalidVoucher) { + LogUtil.error("改签订单失效凭证,当前订单对应的凭证状态非法,无法进行失效,查询到的凭证列表为:{}, 入参为:{}", JSONUtil.toJsonStr(voucherList), JSONUtil.toJsonStr(rescheduleInvalidVoucherDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.INVALID_VOUCHER_STATUS, TpTradeCoreErrorCode.INVALID_VOUCHER_STATUS.getDesc()); + } + + // 凭证失效次数的校验 + voucherList.forEach(v -> { + Boolean isValid = TpVoucherUtil.checkNeedInvalidCountValid(v, invalidDTOMap.get(v.getVoucherNo()).getInvalidPassengerCount()); + if (!isValid) { + LogUtil.error("改签订单失效凭证数量非法,入参为:{}", JSONUtil.toJsonStr(rescheduleInvalidVoucherDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.INVALID_VOUCHER_REFUND_COUNT, TpTradeCoreErrorCode.INVALID_VOUCHER_REFUND_COUNT.getDesc()); + } + }); + + return voucherList; + } + + private BaseMessageEntity buildRescheduleVoucherInvalidMsg(String orderNo, String tenantId, boolean existRefund) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_VOUCHER); + baseMessageEntity.setKey(orderNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + VoucherRescheduleInvalidMessageEntity rescheduleInvalidMessageEntity = new VoucherRescheduleInvalidMessageEntity(); + rescheduleInvalidMessageEntity.setOrderNo(orderNo); + rescheduleInvalidMessageEntity.setExistRefund(existRefund); + rescheduleInvalidMessageEntity.setTenantId(tenantId); + baseMessageEntity.setBody(JSONUtil.toJsonStr(rescheduleInvalidMessageEntity)); + return baseMessageEntity; + } + + private void paramCheck(TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO) { + if (rescheduleInvalidVoucherDTO == null || StringUtils.isBlank(rescheduleInvalidVoucherDTO.getTenantId()) + || StringUtils.isBlank(rescheduleInvalidVoucherDTO.getOriginalOrderNo()) || StringUtils.isBlank(rescheduleInvalidVoucherDTO.getOrderNo())) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.ILLEGAL_PARAMS); + } + + rescheduleInvalidVoucherDTO.getInvalidVoucherDTOs().forEach(dto -> { + if (dto.getInvalidPassengerCount() == null || StringUtils.isBlank(dto.getVoucherNo())) { + LogUtil.error("参数错误,入参为:{}", JSONUtil.toJsonStr(rescheduleInvalidVoucherDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ILLEGAL_PARAMS); + } + }); + } + + private VoucherVerificationQueryCondition convert2QueryCondition(TpMngVerificationRecordQueryDTO queryDTO) { + VoucherVerificationQueryCondition queryCondition = new VoucherVerificationQueryCondition(); + queryCondition.setStartTime(queryDTO.getStartTime()); + queryCondition.setEndTime(queryDTO.getEndTime()); + queryCondition.setOrderNo(queryDTO.getOrderNo()); + queryCondition.setRouteName(queryDTO.getRouteName()); + queryCondition.setUserNos(queryDTO.getUserNos()); + queryCondition.setShuttleTime(queryDTO.getShuttleTime()); + queryCondition.setProductCategoryNo(queryDTO.getProductCategoryNo()); + queryCondition.setPassengerName(queryDTO.getPassengerName()); + queryCondition.setVoucherType(queryDTO.getVoucherType()); + queryCondition.setTripType(queryDTO.getTripType()); + queryCondition.setTenantId(queryDTO.getTenantId()); + queryCondition.setTargetNumber(queryDTO.getTargetNumber()); + queryCondition.setPageNum(queryDTO.getPageNum()); + queryCondition.setPageSize(queryDTO.getPageSize()); + queryCondition.setRouteCode(queryDTO.getRouteCode()); + return queryCondition; + } + + private TpResult assembleUserVoucherVerificationRecord(List voucherList, List successRecords, + List trips) { + // 当前订单对于的凭证列表 + Map> orderVoucherMap = voucherList.stream() + .collect(Collectors.groupingBy(TpVoucher::getOrderNo)); + + // 凭证 -> 凭证编号 + Map voucherMap = voucherList.stream() + .collect(Collectors.toMap(TpVoucher::getVoucherNo, Function.identity())); + + // 乘车核销记录 + Map> verificationRecordMap = successRecords.stream() + .collect(Collectors.groupingBy(TpVoucherVerificationRecord::getVoucherNo)); + + // 行程单map + Map> tripMap = trips.stream().collect(Collectors.groupingBy(TpOrderTravelTripDO::getOrderNo)); + + List userAllVerificationRecords = Lists.newArrayList(); + + orderVoucherMap.forEach((orderNo, curVoucherList) -> { + List curVoucherNos = curVoucherList.stream().map(TpVoucher::getVoucherNo).collect(Collectors.toList()); + List curOrderVerificationRecords = Lists.newArrayList(); + List travelTripDOs = tripMap.get(orderNo); + // 当前订单对应的行程信息 + TpOrderTravelTripDO curOrderTrip = travelTripDOs.get(0); + TpVoucher voucher = curVoucherList.get(0); + + curVoucherNos.forEach(voucherNo -> { + List records = verificationRecordMap.get(voucherNo); + if (CollectionUtils.isEmpty(records)) { + return; + } + curOrderVerificationRecords.addAll(records); + }); + + if (CollectionUtils.isEmpty(curOrderVerificationRecords)) { + return; + } + + List verificationPassengerDTOs = Lists.newArrayList(); + TpUserVoucherVerificationRecordDTO curOrderVerificationRecord = new TpUserVoucherVerificationRecordDTO(); + curOrderVerificationRecord.setOrderNo(orderNo); + + // 实名制去设置实名制乘客核销记录 + if (voucher.getRequiredRealName()) { + curOrderVerificationRecords.forEach(curVerificationRecord -> { + String voucherNo = curVerificationRecord.getVoucherNo(); + TpVoucher curVoucher = voucherMap.get(voucherNo); + TpVoucherPassenger passenger = curVoucher.getPassenger(); + TpVerificationPassengerDTO passengerDTO = buildVerificationPassengerDTO(passenger); + passengerDTO.setVerificationTime(curVerificationRecord.getVerificationTime()); + verificationPassengerDTOs.add(passengerDTO); + }); + curOrderVerificationRecord.setRealNameVerificationRecordList(verificationPassengerDTOs); + curOrderVerificationRecord.setRequireRealName(true); + } else { + List nonRealNameVerificationRecords = Lists.newArrayList(); + List voucherVerificationRecordDTOs = voucherMapStructConvert.convert2VoucherVerificationRecordDTOList(curOrderVerificationRecords); + nonRealNameVerificationRecords.addAll(voucherVerificationRecordDTOs); + curOrderVerificationRecord.setNonRealNameVerificationRecordList(nonRealNameVerificationRecords); + curOrderVerificationRecord.setRequireRealName(false); + + if (StringUtils.equals(voucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + Map bizData = voucher.getBizData(); + if (MapUtils.isNotEmpty(bizData)) { + Object isOneTimeVerification = bizData.get(BizDataKeyConstants.ONE_TIME_VERIFICATION_TICKET); + // 一次性全部核销 + if (isOneTimeVerification != null) { + nonRealNameVerificationRecords.forEach(r -> r.setVerificationPassengerCount(voucher.getRedemptionCount())); + } + } else { + nonRealNameVerificationRecords.forEach(r -> r.setVerificationPassengerCount(1)); + } + } + } + + TpOrderTravelTripVO travelTripVO = buildTravelTripVO(curOrderTrip); + curOrderVerificationRecord.setTravelTripVO(travelTripVO); + userAllVerificationRecords.add(curOrderVerificationRecord); + }); + + TpTimeRangeUserVerificationRecordDetailQueryVO queryVO = new TpTimeRangeUserVerificationRecordDetailQueryVO(); + + // 每个订单所有的核销记录按照核销时间倒序 + for (TpUserVoucherVerificationRecordDTO curOrderVerificationRecord : userAllVerificationRecords) { + List realNameVerificationRecordList = curOrderVerificationRecord.getRealNameVerificationRecordList(); + if (CollectionUtils.isNotEmpty(realNameVerificationRecordList)) { + realNameVerificationRecordList.sort(Comparator.comparing(TpVerificationPassengerDTO::getVerificationTime).reversed()); + } else { + List nonRealNameVerificationRecordList = curOrderVerificationRecord.getNonRealNameVerificationRecordList(); + nonRealNameVerificationRecordList.sort(Comparator.comparing(TpVoucherVerificationRecordDTO::getVerificationTime).reversed()); + } + } + + queryVO.setRecordDTOList(userAllVerificationRecords); + return TpResult.success(queryVO); + } + + private TpOrderTravelTripVO buildTravelTripVO(TpOrderTravelTripDO curOrderTrip) { + TpOrderTravelTripVO travelTripVO = new TpOrderTravelTripVO(); + travelTripVO.setTripNo(curOrderTrip.getTripNo()); + travelTripVO.setOrderNo(curOrderTrip.getOrderNo()); + travelTripVO.setPassengerCount(curOrderTrip.getPassengerCount()); + travelTripVO.setMiles(curOrderTrip.getMiles()); + travelTripVO.setPickUpLocationCode(curOrderTrip.getPickUpLocationCode()); + travelTripVO.setPickUpLocation(curOrderTrip.getPickUpLocation()); + travelTripVO.setDropOffLocationCode(curOrderTrip.getDropOffLocationCode()); + travelTripVO.setDropOffLocation(curOrderTrip.getDropOffLocation()); + travelTripVO.setStartTime(curOrderTrip.getStartTime()); + travelTripVO.setEndTime(curOrderTrip.getEndTime()); + travelTripVO.setTripType(curOrderTrip.getTripType()); + travelTripVO.setTripStatus(curOrderTrip.getTripStatus()); + return travelTripVO; + } + + private void verificationBaseBizCheck(TpVoucherCheckDTO checkDTO, TpVoucher tpVoucher, String validationType) { + Long verificationTime = checkDTO.getVerificationTime(); + if (!TpVoucherStatusEnum.ENABLE_VERIFIED_STATUS_LIST.contains(tpVoucher.getStatus())) { + voucherDomainService.checkFail(tpVoucher, verificationTime, validationType); + LogUtil.error("凭证状态非法,不允许进行核销,凭证信息为:{}", JSONUtil.toJsonStr(tpVoucher)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_STATUS_NOT_ALLOW_CHECK); + } + + // 校验当前凭证的检票日期 + if (verificationTime < tpVoucher.getEffectiveStartTime() || verificationTime > tpVoucher.getEffectiveEndTime()) { + voucherDomainService.checkFail(tpVoucher, verificationTime, validationType); + LogUtil.error("凭证核销时间非法,不允许进行核销,凭证信息为:{}", JSONUtil.toJsonStr(tpVoucher)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_CHECK_TIME_NOT_ALLOW_CHECK); + } + } + + private void generateQrCodeWithExpireTime(List voucherDTOs) { + // 生成凭证二维码,里面需要内置二维码过期时间 + Long qrCodeExpireTime = System.currentTimeMillis() + QR_CODE_EXPIRE_TIME_INTERVAL; + + // 解密凭证code + voucherDTOs.forEach(voucherDTO -> { + String voucherCode = voucherDTO.getVoucherCode(); + voucherDTO.setQrCodeExpireTime(qrCodeExpireTime); + + // 生成二维码code,二维码code中包含当前二维码过期时间 + String decodeVoucherCode = Base64Decoder.decodeStr(voucherCode); + TpVoucherEncodeDTO voucherEncodeDTO = JSONUtil.toBean(decodeVoucherCode, TpVoucherEncodeDTO.class); + voucherEncodeDTO.setQrExpireTime(qrCodeExpireTime); + String encodeVoucherCode = Base64Encoder.encode(JSONUtil.toJsonStr(voucherEncodeDTO)); + voucherDTO.setQrCode(encodeVoucherCode); + }); + } + + private void paramCheck(TpTimeRangeUserVerificationRecordDetailQueryDTO queryDTO) { + Assert.notNull(queryDTO, "入参不能为空"); + Assert.hasText(queryDTO.getUserNo(), "用户编号不能为空"); + Assert.notNull(queryDTO.getStartTime(), "开始时间不能为空"); + Assert.notNull(queryDTO.getEndTime(), "结束时间不能为空"); + Assert.hasText(queryDTO.getTenantId(), "租户id不能为空"); + } + + private void paramCheck(TpTimeRangeExistVerificationRecordDateQueryDTO queryDTO) { + Assert.notNull(queryDTO, "入参不能为空"); + Assert.hasText(queryDTO.getUserNo(), "用户编号不能为空"); + Assert.notNull(queryDTO.getStartTime(), "开始时间不能为空"); + Assert.notNull(queryDTO.getEndTime(), "结束时间不能为空"); + Assert.hasText(queryDTO.getTenantId(), "租户id不能为空"); + } + + private void paramCheck(TpVoucherCreateDTO createDTO) { + Assert.notNull(createDTO, "入参不能为空"); + Assert.notEmpty(createDTO.getTicketChoiceDTOs(), "用户选择的车票不能为空"); + createDTO.getTicketChoiceDTOs().forEach(choice -> { + // 非实名制 + if (CollectionUtils.isNotEmpty(choice.getNonRealNameDTOs())) { + choice.getNonRealNameDTOs().forEach(nonRealNameDTO -> { + Assert.notNull(nonRealNameDTO.getEffectiveStartTime(), "凭证有效期开始时间不能为空"); + Assert.notNull(nonRealNameDTO.getEffectiveEndTime(), "凭证有效期结束时间不能为空"); + Assert.hasText(nonRealNameDTO.getEarliestCheckTime(), "最早检票时间不能为空"); + Assert.hasText(nonRealNameDTO.getLatestCheckTime(), "最晚检票时间不能为空"); + Assert.notNull(nonRealNameDTO.getPassengerCount(), "乘车人数不能为空"); + }); + } + + // 实名制 + if (CollectionUtils.isNotEmpty(choice.getVoucherPurchaseInfoList())) { + choice.getVoucherPurchaseInfoList().forEach(purchaseInfoDTO -> { + Assert.notNull(purchaseInfoDTO.getEffectiveStartTime(), "凭证有效期开始时间不能为空"); + Assert.notNull(purchaseInfoDTO.getEffectiveEndTime(), "凭证有效期结束时间不能为空"); + Assert.hasText(purchaseInfoDTO.getEarliestCheckTime(), "最早检票时间不能为空"); + Assert.hasText(purchaseInfoDTO.getLatestCheckTime(), "最晚检票时间不能为空"); + Assert.notNull(purchaseInfoDTO, "乘客信息不能为空"); + }); + } + }); + } + + private List buildTpVoucher(TpVoucherCreateDTO createDTO) { + List voucherList = Lists.newArrayList(); + List ticketChoiceDTOs = createDTO.getTicketChoiceDTOs(); + + ticketChoiceDTOs.forEach(choice -> { + // 实名制场景 + List voucherPurchaseInfoList = choice.getVoucherPurchaseInfoList(); + if (CollectionUtils.isNotEmpty(voucherPurchaseInfoList)) { + voucherPurchaseInfoList.forEach(voucherPurchaseInfo -> { + TpVoucherPassenger passenger = BeanUtil.copyProperties(voucherPurchaseInfo.getPassengerInfo(), TpVoucherPassenger.class); + TpVoucher tpVoucher = doBuildTpVoucher(createDTO, choice, voucherPurchaseInfo.getEffectiveStartTime(), voucherPurchaseInfo.getEffectiveEndTime(), + voucherPurchaseInfo.getEarliestCheckTime(), voucherPurchaseInfo.getLatestCheckTime(), GlobalConstants.ONE, voucherPurchaseInfo.getSalesUnitCode()); + tpVoucher.setTotalCount(voucherPurchaseInfo.getTotalAvailableCount()); + + passenger.setVoucherNo(tpVoucher.getVoucherNo()); + passenger.setTenantId(tpVoucher.getTenantId()); + tpVoucher.setPassenger(passenger); + tpVoucher.setTripType(choice.getTripType()); + voucherList.add(tpVoucher); + }); + } else { + // 非实名制场景 + List nonRealNameDTOs = choice.getNonRealNameDTOs(); + nonRealNameDTOs.forEach(nonRealNameDTO -> { + TpVoucher tpVoucher = doBuildTpVoucher(createDTO, choice, nonRealNameDTO.getEffectiveStartTime(), nonRealNameDTO.getEffectiveEndTime(), + nonRealNameDTO.getEarliestCheckTime(), nonRealNameDTO.getLatestCheckTime(), nonRealNameDTO.getPassengerCount(), nonRealNameDTO.getSalesUnitCode()); + + // 非实名制场景 + tpVoucher.setTotalCount(nonRealNameDTO.getTicketCount()); + tpVoucher.setTripType(choice.getTripType()); + voucherList.add(tpVoucher); + }); + } + }); + + return voucherList; + } + + private TpVoucher doBuildTpVoucher(TpVoucherCreateDTO createDTO, TpUserTicketChoiceDTO choiceDTO, Long effectiveStartTime, Long effectiveEndTime, + String earliestCheckTime, String latestCheckTime, Integer passengerCount, String salesUnitCode) { + TpVoucher tpVoucher = new TpVoucher(); + //凭证编号的生成 + String voucherNo = UUID.randomUUID().toString(); + tpVoucher.setVoucherNo(voucherNo); + String voucherCode = generateVoucherCode(createDTO, voucherNo); + tpVoucher.setVoucherCode(voucherCode); + tpVoucher.setSalesUnitCode(salesUnitCode); + tpVoucher.setProductCategoryNo(createDTO.getProductCategoryNo()); + tpVoucher.setProductCategoryName(createDTO.getProductCategoryName()); + tpVoucher.setUserNo(createDTO.getUserNo()); + tpVoucher.setOrderNo(createDTO.getOrderNo()); + tpVoucher.setType(createDTO.getVoucherType()); + tpVoucher.setChannel(createDTO.getChannel()); + tpVoucher.setEffectiveStartTime(effectiveStartTime); + tpVoucher.setEffectiveEndTime(effectiveEndTime); + tpVoucher.setEarliestCheckTime(earliestCheckTime); + tpVoucher.setLatestCheckTime(latestCheckTime); + tpVoucher.setRouteId(createDTO.getRouteId()); + tpVoucher.setRouteName(createDTO.getRouteName()); + tpVoucher.setShuttleId(choiceDTO.getShuttleId()); + tpVoucher.setShuttleName(choiceDTO.getShuttleName()); + tpVoucher.setValidationTypes(createDTO.getValidationTypes()); + tpVoucher.setRedemptionCount(GlobalConstants.ZERO); + tpVoucher.setRefundCount(GlobalConstants.ZERO); + tpVoucher.setPassengerCount(passengerCount); + tpVoucher.setRequiredRealName(createDTO.getRequiredRealName()); + tpVoucher.setStatus(TpVoucherStatusEnum.CREATED.getCode()); + tpVoucher.setTenantId(createDTO.getTenantId()); + tpVoucher.setBizData(createDTO.getBizData()); + return tpVoucher; + } + + private String generateVoucherCode(TpVoucherCreateDTO createDTO, String voucherNo) { + TpVoucherEncodeDTO voucherEncodeDTO = BeanUtil.copyProperties(createDTO, TpVoucherEncodeDTO.class); + voucherEncodeDTO.setVoucherNo(voucherNo); + return Base64Encoder.encode(JSONUtil.toJsonStr(voucherEncodeDTO)); + } + + private TpVerificationPassengerDTO buildVerificationPassengerDTO(TpVoucherPassenger passenger) { + TpVerificationPassengerDTO verificationPassengerDTO = new TpVerificationPassengerDTO(); + verificationPassengerDTO.setPassengerNo(passenger.getPassengerNo()); + verificationPassengerDTO.setName(passenger.getName()); + verificationPassengerDTO.setContactInfo(passenger.getContactInfo()); + verificationPassengerDTO.setCertNo(passenger.getCertNo()); + verificationPassengerDTO.setCertType(passenger.getCertType()); + verificationPassengerDTO.setPassengerType(passenger.getPassengerType()); + return verificationPassengerDTO; + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderPushStatusStrategy.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderPushStatusStrategy.java new file mode 100644 index 0000000..e87a1d8 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderPushStatusStrategy.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.biz.strategy; + +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; + +/** + *

+ * 订单状态推进策略 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ +public interface TpOrderPushStatusStrategy { + + /** + * 当前订单推进策略支持的策略状态 + * @return 策略状态 + */ + TpOrderPushStatusEnum statusStrategy(); + + /** + * 订单推进 + */ + void pushOrderStatus(TpOrderPushStatusStrategyDTO dto); + +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderRescheduleNoRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderRescheduleNoRefundStrategyImpl.java new file mode 100644 index 0000000..b26e9b0 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/TpOrderRescheduleNoRefundStrategyImpl.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.biz.strategy; + +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单已改签,不包含退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderRescheduleNoRefundStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_RESCHEDULE_NO_REFUND; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.RESCHEDULE_NOT_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllExpireStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllExpireStrategyImpl.java new file mode 100644 index 0000000..6ce8e7e --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllExpireStrategyImpl.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 全部过期 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderAllExpireStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ALL_EXPIRE; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 推进到全部过期 + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ALL_EXPIRE); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllRefundStrategyImpl.java new file mode 100644 index 0000000..6d44711 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllRefundStrategyImpl.java @@ -0,0 +1,42 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 全部退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderAllRefundStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ALL_REFUND_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ALL_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + // 推进到全部退款(领域内部实现订单及状态流转校验) + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllVerifiedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllVerifiedStrategyImpl.java new file mode 100644 index 0000000..b438d10 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderAllVerifiedStrategyImpl.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 全部核销,不存在退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderAllVerifiedStrategyImpl implements TpOrderPushStatusStrategy { + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ALL_VERIFIED_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.FINISH_NOT_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + // 推进到全部核销(领域内部实现订单及状态流转校验) + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelAuditedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelAuditedStrategyImpl.java new file mode 100644 index 0000000..143171b --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelAuditedStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单取消审核通过 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelAuditedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelAuditedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCEL_AUDITED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 审核取消订单 [取消订单待审核] 状态下 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CANCEL_AUDITING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCEL_AUDITED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedAuditStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedAuditStrategyImpl.java new file mode 100644 index 0000000..2292385 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedAuditStrategyImpl.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpAuditOrChangePriceBizTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderChargeRecord; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.apache.commons.compress.utils.Lists; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 订单取消待审核 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelNeedAuditStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelNeedAuditStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCEL_AUDITING; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 取消订单只可在行程 [行程中] 状态及之前的状态可取消 + if (order.getStatus().compareTo(TpOrderPushStatusEnum.ORDER_TRIP_STARTED.getStatus()) >= 0) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCEL_AUDITING); + pushStatus.setCurrentStatus(order.getStatus()); + pushStatus.setTenantId(dto.getTenantId()); + + List orderChargeRecords = Lists.newArrayList(); + + transactionTemplate.executeWithoutResult(e -> { + // 取消订单状态推进 + tpOrderDomainService.changeOrderStatus(pushStatus); + }); + + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedPayStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedPayStrategyImpl.java new file mode 100644 index 0000000..fa860c5 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedPayStrategyImpl.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单取消待支付 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelNeedPayStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelNeedPayStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCEL_NEED_PAY; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 取消订单待支付需要在 [取消订单审核通过] && 无需审核时状态需在[行程中]之前 状态下 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CANCEL_AUDITED.getStatus(), order.getStatus()) + && order.getStatus().compareTo(TpOrderPushStatusEnum.ORDER_TRIP_STARTED.getStatus()) >= 0) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCEL_NEED_PAY); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedRefundStrategyImpl.java new file mode 100644 index 0000000..aaa82c1 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelNeedRefundStrategyImpl.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单取消待退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelNeedRefundStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelNeedRefundStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCEL_REFUNDING; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 无需审核时 取消订单待退款只可在行程 [行程中] 状态及之前的状态可取消 + // 需要审核时 取消订单待退款只可在 [订单取消审核通过] 下推进 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CANCEL_AUDITED.getStatus(), order.getStatus()) + && order.getStatus().compareTo(TpOrderPushStatusEnum.ORDER_TRIP_STARTED.getStatus()) >= 0) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCEL_REFUNDING); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelPaidStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelPaidStrategyImpl.java new file mode 100644 index 0000000..a5704c8 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelPaidStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单取消已支付 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelPaidStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelPaidStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCEL_PAID; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 需要在 [取消订单待支付] 状态下 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CANCEL_NEED_PAY.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCEL_PAID); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelRefundedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelRefundedStrategyImpl.java new file mode 100644 index 0000000..d4068c6 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelRefundedStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单取消已退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelRefundedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelRefundedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCEL_REFUNDED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 取消订单已退款只可在 [取消订单待退款] 状态下推进 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CANCEL_REFUNDING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCEL_REFUNDED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelStrategyImpl.java new file mode 100644 index 0000000..d203be9 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderCancelStrategyImpl.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单已取消 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCancelStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCancelStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CANCELED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 需要在 [取消订单审核通过] 状态下 + // 无需审核 [行程中] 及之前状态可推进到订单已取消 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CANCEL_AUDITED.getStatus(), order.getStatus()) + && order.getStatus().compareTo(TpOrderPushStatusEnum.ORDER_TRIP_STARTED.getStatus()) >= 0) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CANCELED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeAuditedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeAuditedStrategyImpl.java new file mode 100644 index 0000000..4d8c5f2 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeAuditedStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单变更审核通过 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderChangeAuditedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderChangeAuditedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CHANGE_AUDITED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 审核变更订单 [变更订单待审核] 状态下 + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CHANGE_AUDITING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CHANGE_AUDITED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeNeedAuditStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeNeedAuditStrategyImpl.java new file mode 100644 index 0000000..bae57be --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderChangeNeedAuditStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单变更待审核 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderChangeNeedAuditStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderChangeNeedAuditStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CHANGE_AUDITING; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态仅为 [已发车] 及之前状态可变更 + if (order.getStatus().compareTo(TpOrderPushStatusEnum.ORDER_TRIP_STARTED.getStatus()) >= 0) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CHANGE_AUDITING); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmRejectStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmRejectStrategyImpl.java new file mode 100644 index 0000000..9ca1fbd --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmRejectStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单已驳回 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderConfirmRejectStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderConfirmRejectStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_REJECTED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [订单待确认] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_NEED_CONFIRM.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_REJECTED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmedStrategyImpl.java new file mode 100644 index 0000000..0c36302 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderConfirmedStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单已确认 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderConfirmedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderConfirmedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_ALREADY_CONFIRM; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [订单待确认] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_NEED_CONFIRM.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CONFIRMED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositNeedPayStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositNeedPayStrategyImpl.java new file mode 100644 index 0000000..50cc89d --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositNeedPayStrategyImpl.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订金待支付 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderDepositNeedPayStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDepositNeedPayStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_DEPOSIT_NEED_PAY; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [初始化] || [订单已确认] + if (ObjectUtil.notEqual(TpOrderStatusEnum.INIT.getStatus(), order.getStatus()) + && ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CONFIRMED.getStatus(), order.getStatus()) + && ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CHANGE_AUDITED.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_DEPOSIT_NEED_PAY); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositPayedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositPayedStrategyImpl.java new file mode 100644 index 0000000..188e77d --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositPayedStrategyImpl.java @@ -0,0 +1,75 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; + +/** + *

+ * 订金已支付 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderDepositPayedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDepositPayedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_DEPOSIT_PAID; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [订金待支付] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_DEPOSIT_NEED_PAY.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_DEPOSIT_PAID); + pushStatus.setPayTime(dto.getPayTime()); + pushStatus.setTenantId(dto.getTenantId()); + + // 同时更新订金订单状态 + transactionTemplate.executeWithoutResult(e -> { + // 订单更改为已支付 + tpOrderDomainService.changeOrderStatus(pushStatus); + + // 订金更改为已支付 + tpOrderDomainService.updateDepositPaidOrderByOriginalOrderNo(order.getOriginalOrderNo(), dto.getTenantId()); + }); + + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositTimeoutStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositTimeoutStrategyImpl.java new file mode 100644 index 0000000..d3b5ca9 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDepositTimeoutStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订金超时未支付 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderDepositTimeoutStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDepositTimeoutStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_DEPOSIT_TIMEOUT; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [订金待支付] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_DEPOSIT_NEED_PAY.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_DEPOSIT_TIMEOUT); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDispatchedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDispatchedStrategyImpl.java new file mode 100644 index 0000000..8be06ac --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderDispatchedStrategyImpl.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 已派车 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderDispatchedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDispatchedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_DISPATCHED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_DISPATCHED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderExpireStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderExpireStrategyImpl.java new file mode 100644 index 0000000..a113ecc --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderExpireStrategyImpl.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单过期,推进订单状态 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderExpireStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderExpireStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_EXPIRE_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TIMEOUT); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进订单过期 + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedConfirmStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedConfirmStrategyImpl.java new file mode 100644 index 0000000..3856d0e --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedConfirmStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单待确认 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderNeedConfirmStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderNeedConfirmStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_NEED_CONFIRM; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [初始化] + if (ObjectUtil.notEqual(TpOrderStatusEnum.INIT.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_NEED_CONFIRM); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedDispatchStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedDispatchStrategyImpl.java new file mode 100644 index 0000000..e61e3e4 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedDispatchStrategyImpl.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 待派车 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderNeedDispatchStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderNeedDispatchStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_NEED_DISPATCH; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_NEED_DISPATCH); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedPayStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedPayStrategyImpl.java new file mode 100644 index 0000000..1f2cf60 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderNeedPayStrategyImpl.java @@ -0,0 +1,59 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 待支付 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderNeedPayStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderNeedPayStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.NEED_PAY_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + if (ObjectUtil.notEqual(order.getStatus(), TpOrderStatusEnum.INIT.getStatus())) { + LogUtil.error(LOGGER, "订单状态流转失败, 订单号: {}, 当前状态为: {}, 无法更改为目标值: {}", dto, order.getStatus(), TpOrderStatusEnum.INIT.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_CHANGE_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.PENDING_PAY); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到待支付 + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPaidStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPaidStrategyImpl.java new file mode 100644 index 0000000..47553a1 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPaidStrategyImpl.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单已支付,状态推进策略实现类 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPaidStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderPaidStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.PAID_ORDER_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushPaidStatusStrategyDTO paidStatusStrategyDTO = (TpOrderPushPaidStatusStrategyDTO) dto; + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(paidStatusStrategyDTO.getTenantId(), null, paidStatusStrategyDTO.getOrderNo(), null); + + // 判断当前状态是否为[待支付] 或 [初始化] + if (ObjectUtil.notEqual(TpOrderStatusEnum.INIT.getStatus(), order.getStatus()) + && ObjectUtil.notEqual(TpOrderStatusEnum.PENDING_PAY.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + // 推进订单支付状态 + tpOrderDomainService.payOrder(paidStatusStrategyDTO.getTenantId(), paidStatusStrategyDTO.getOrderNo(), paidStatusStrategyDTO.getPayTime()); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireHasRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireHasRefundStrategyImpl.java new file mode 100644 index 0000000..e3487a2 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireHasRefundStrategyImpl.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 部分过期,包含退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPartExpireHasRefundStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.PART_EXPIRE_EXIST_REFUND; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.PARTLY_EXPIRE_HAS_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到部分过期,包含退款 + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireStrategyImpl.java new file mode 100644 index 0000000..58c4887 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartExpireStrategyImpl.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 部分过期,不包含退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPartExpireStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.PART_EXPIRE; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.PARTLY_EXPIRE_HAS_NOT_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到部分过期,不包含退款 + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasNotUnverifiedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasNotUnverifiedStrategyImpl.java new file mode 100644 index 0000000..36ed601 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasNotUnverifiedStrategyImpl.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 部分退款,不存在未核销凭证 订单状态推进 策略实现类 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPartRefundHasNotUnverifiedStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.PART_REFUND_ALL_VERIFIED_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.FINISH_HAS_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到已完成(领域内部实现订单及状态流转校验) + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasUnverifiedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasUnverifiedStrategyImpl.java new file mode 100644 index 0000000..b8fd91a --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartRefundHasUnverifiedStrategyImpl.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 部分退款,存在未核销凭证 订单状态推进 策略实现类 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPartRefundHasUnverifiedStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.PART_REFUND_NOT_VERIFIED_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 比对当前订单状态:若订单状态已是部分退款状态,则状态保留 + if (ObjectUtil.equal(order.getStatus(), TpOrderStatusEnum.PARTLY_REFUND)) { + return; + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.PARTLY_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到部分退款 + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartVerifiedHasNotRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartVerifiedHasNotRefundStrategyImpl.java new file mode 100644 index 0000000..bcbad0e --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderPartVerifiedHasNotRefundStrategyImpl.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 部分核销,不存在退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderPartVerifiedHasNotRefundStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.PART_VERIFIED_VOUCHER_EXIST_UNVERIFIED_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 订单已是部分核销状态时无需更改订单状态 + if (ObjectUtil.equal(order.getStatus(), TpOrderStatusEnum.PARTLY_VERIFICATION)) { + return; + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.PARTLY_VERIFICATION); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到部分核销(领域内部实现订单及状态流转校验) + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRefundingStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRefundingStrategyImpl.java new file mode 100644 index 0000000..a6f9201 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRefundingStrategyImpl.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 退款中状态推进 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderRefundingStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderRefundingStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_REFUNDING_PUSH_STATUS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 订单必须为[已支付状态] 或 [部分核销状态] 或 [部分退款成功状态]才可以推进到退款中状态 + if (ObjectUtil.notEqual(order.getStatus(), TpOrderStatusEnum.ALREADY_PAY.getStatus()) + && ObjectUtil.notEqual(order.getStatus(), TpOrderStatusEnum.PARTLY_VERIFICATION.getStatus()) + && ObjectUtil.notEqual(order.getStatus(), TpOrderStatusEnum.PARTLY_REFUND.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_REFUNDING); + pushStatus.setTenantId(dto.getTenantId()); + + // 推进到退款中状态 + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRescheduleHasRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRescheduleHasRefundStrategyImpl.java new file mode 100644 index 0000000..6ea47c9 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderRescheduleHasRefundStrategyImpl.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单已改签,包含退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderRescheduleHasRefundStrategyImpl implements TpOrderPushStatusStrategy { + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_RESCHEDULE_HAS_REFUND; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.RESCHEDULE_HAS_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTimeoutConfirmStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTimeoutConfirmStrategyImpl.java new file mode 100644 index 0000000..76a90e3 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTimeoutConfirmStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 订单超时未确认 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTimeoutConfirmStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTimeoutConfirmStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TIMEOUT_CONFIRM; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [订单待确认] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_NEED_CONFIRM.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TIMEOUT_CONFIRM); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndConfirmingAmountStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndConfirmingAmountStrategyImpl.java new file mode 100644 index 0000000..a8e79ec --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndConfirmingAmountStrategyImpl.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; + +/** + *

+ * 行程结束待确认金额 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripEndConfirmingAmountStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripEndConfirmingAmountStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [已发车] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_TRIP_START.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndNeedPayStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndNeedPayStrategyImpl.java new file mode 100644 index 0000000..fa45453 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndNeedPayStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; + +/** + *

+ * 行程结束,待支付尾款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripEndNeedPayStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripEndNeedPayStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_END_NEED_PAY; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [已发车] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_NEED_PAY); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndPaidStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndPaidStrategyImpl.java new file mode 100644 index 0000000..eecc576 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndPaidStrategyImpl.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; + +/** + *

+ * 行程结束,已支付尾款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripEndPaidStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripEndPaidStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_END_PAID; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [行程结束待支付尾款] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_TRIP_END_NEED_PAY.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_PAID); + pushStatus.setTenantId(dto.getTenantId()); + + transactionTemplate.executeWithoutResult(e -> { + // 更新订单状态 + tpOrderDomainService.changeOrderStatus(pushStatus); + + // 尾款状态更新 + tpOrderDomainService.updateBalancePaidOrderByOrderNo(order.getOrderNo(), dto.getTenantId()); + }); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundedStrategyImpl.java new file mode 100644 index 0000000..7c40a33 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundedStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 行程结束已退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripEndRefundedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripEndRefundedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_END_REFUNDED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [行程结束退款中] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_TRIP_END_REFUNDING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_REFUNDED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundingStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundingStrategyImpl.java new file mode 100644 index 0000000..85b73ba --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndRefundingStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 行程结束退款中 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripEndRefundingStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripEndRefundingStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_END_REFUNDING; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [行程中] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_REFUNDING); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndStrategyImpl.java new file mode 100644 index 0000000..3eddf28 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripEndStrategyImpl.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 行程结束 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripEndStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripEndStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_END; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为 [行程中] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripStartedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripStartedStrategyImpl.java new file mode 100644 index 0000000..8fa4a54 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/TpOrderTripStartedStrategyImpl.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.biz.strategy.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushPaidStatusStrategyDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 行程开始 / 行程已发车 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderTripStartedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderTripStartedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_TRIP_STARTED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + // 判断当前状态是否为[待派车] [已派车] + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_NEED_DISPATCH.getStatus(), order.getStatus()) + && ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_DISPATCHED.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "订单状态异常, 当前订单:{}, 状态: {}", order.getOrderNo(), order.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_START); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundedStrategyImpl.java new file mode 100644 index 0000000..0a7ce5c --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundedStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 取消拼车退款成功 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolCancelRefundedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolCancelRefundedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_CANCEL_REFUNDED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[取消拼车退款成功]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOL_CANCEL_REFUNDING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[取消拼车退款成功]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_CARPOOL_CANCELED_REFUNDED.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOL_CANCELED_REFUNDED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundingStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundingStrategyImpl.java new file mode 100644 index 0000000..640c767 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelRefundingStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 取消拼车退款中 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolCancelRefundingStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolCancelRefundingStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_CANCEL_REFUNDING; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[取消拼车退款中]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOLING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[取消拼车退款中]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_CARPOOL_CANCEL_REFUNDING.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOL_CANCEL_REFUNDING); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelUnRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelUnRefundStrategyImpl.java new file mode 100644 index 0000000..70a526a --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolCancelUnRefundStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 取消拼车无需退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolCancelUnRefundStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolCancelUnRefundStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_CANCELED_UN_REFUND; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[取消拼车无需退款]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOLING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[取消拼车无需退款]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_CARPOOL_CANCELED_UN_REFUND.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOL_CANCELED_UN_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundedStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundedStrategyImpl.java new file mode 100644 index 0000000..8477e66 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundedStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 拼车失败退款成功 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolFailRefundedStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolFailRefundedStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_FAIL_REFUNDED; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[拼车失败退款成功]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOL_CANCEL_REFUNDING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[拼车失败退款成功]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_FAIL_CARPOOL_REFUNDED.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_FAIL_CARPOOL_REFUNDED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundingStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundingStrategyImpl.java new file mode 100644 index 0000000..3dbe6b8 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailRefundingStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 拼车失败退款中 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolFailRefundingStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolFailRefundingStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_FAIL_REFUNDING; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[拼车失败退款中]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOLING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[拼车失败退款中]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_CARPOOL_FAIL_REFUNDING.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOL_FAIL_REFUNDING); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailUnRefundStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailUnRefundStrategyImpl.java new file mode 100644 index 0000000..dec03e8 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFailUnRefundStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 取消失败无需退款 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolFailUnRefundStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolFailUnRefundStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_FAIL_UN_REFUND; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[取消失败无需退款]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOLING.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[取消失败无需退款]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_CARPOOL_FAIL_UN_REFUND.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOL_FAIL_UN_REFUND); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFinishStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFinishStrategyImpl.java new file mode 100644 index 0000000..d5736dd --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolFinishStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 拼车已完成 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolFinishStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolFinishStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_FINISH; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[拼车已完成]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOLED.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[拼车已完成]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatusType(), TpOrderStatusEnum.ORDER_CARPOOLED_FINISH.getStatusType()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOLED_FINISH); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolSuccessStrategyImpl.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolSuccessStrategyImpl.java new file mode 100644 index 0000000..6eb64bb --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/strategy/impl/carpool/TpOrderCarpoolSuccessStrategyImpl.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.biz.strategy.impl.carpool; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.biz.strategy.TpOrderPushStatusStrategy; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPushStatusStrategyDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + *

+ * 拼车成功状态推进 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Component +public class TpOrderCarpoolSuccessStrategyImpl implements TpOrderPushStatusStrategy { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderCarpoolSuccessStrategyImpl.class); + + @Resource + private TpOrderDomainService tpOrderDomainService; + + @Override + public TpOrderPushStatusEnum statusStrategy() { + return TpOrderPushStatusEnum.ORDER_CARPOOL_SUCCESS; + } + + @Override + public void pushOrderStatus(TpOrderPushStatusStrategyDTO dto) { + // 查询订单 + TpOrder order = tpOrderDomainService.getOrder(dto.getTenantId(), null, dto.getOrderNo(), null); + + TpOrderStatusEnum tpOrderStatusEnum = TpOrderStatusEnum.getTpOrderStatusEnumByStatus(order.getStatus(), order.getType()); + if (ObjectUtil.isNull(tpOrderStatusEnum)) { + LogUtil.error(LOGGER, "[拼车成功状态推进]订单状态异常, 无法通过状态转换为枚举类, 订单编号:{}", order.getOrderNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOLING.getStatus(), order.getStatus()) && ObjectUtil.notEqual(TpOrderStatusEnum.ORDER_CARPOOL_INIT.getStatus(), order.getStatus())) { + LogUtil.error(LOGGER, "[拼车成功状态推进]订单状态异常, 当前订单:{}, 状态: {}, 当前推进状态:{}", order.getOrderNo(), tpOrderStatusEnum.getStatus(), TpOrderStatusEnum.ORDER_CARPOOLED.getStatus()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(dto.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_CARPOOLED); + pushStatus.setTenantId(dto.getTenantId()); + + tpOrderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpTimeFormatUtil.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpTimeFormatUtil.java new file mode 100644 index 0000000..c045757 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpTimeFormatUtil.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.biz.util; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author amos wong + * @create 2024/3/18 10:52 + * @Description + */ +public class TpTimeFormatUtil { + + /** + * 输入时间戳,返回MM月dd日 HH:mm 格式的字符串 + * + * @param timestamp + * @return + */ + public static String convertTimestamp2ChineseFormat(Long timestamp) { + Date date = new Date(timestamp); + SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日 HH:mm"); + return formatter.format(date); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpVoucherUtil.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpVoucherUtil.java new file mode 100644 index 0000000..e2d5e6a --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/TpVoucherUtil.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.biz.util; + +import com.deepinnet.tptradecore.core.model.voucher.TpVoucher; + +/** + * @author amos wong + * @create 2024/3/18 10:52 + * @Description + */ +public class TpVoucherUtil { + + public static Integer getEveryDayAvailableCheckCount(Integer everyDayTotalAvailableCount, Integer totalPassengerCount, Integer perPassengerCount, Integer refundCount) { + int refundPassengerCount; + int availablePassengerCount; + if (refundCount != null) { + refundPassengerCount = refundCount / perPassengerCount; + } else { + refundPassengerCount = 0; + } + availablePassengerCount = totalPassengerCount - refundPassengerCount; + return (everyDayTotalAvailableCount / totalPassengerCount) * availablePassengerCount; + } + + /** + * 计算凭证总的refundCount的值 + * + * @return + */ + public static Integer calculateNeedInvalidCount(TpVoucher voucher, Integer needRefundPassengerCount) { + Integer totalCount = voucher.getTotalCount(); + Integer passengerCount = voucher.getPassengerCount(); + Integer perPassengerCount = totalCount / passengerCount; + Integer needRefundCount = needRefundPassengerCount * perPassengerCount; + return voucher.getRefundCount() + needRefundCount; + } + + /** + * 判断失效乘车人数是否合法 + * + * @return + */ + public static Boolean checkNeedInvalidCountValid(TpVoucher voucher, Integer needRefundPassengerCount) { + Integer totalRefundCount = calculateNeedInvalidCount(voucher, needRefundPassengerCount); + return voucher.getTotalCount() >= totalRefundCount + voucher.getRedemptionCount(); + } +} diff --git a/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/XUtil.java b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/XUtil.java new file mode 100644 index 0000000..7183948 --- /dev/null +++ b/tptradecore-biz/tptradecore-biz-service-impl/src/main/java/com/deepinnet/tptradecore/biz/util/XUtil.java @@ -0,0 +1 @@ +package com.deepinnet.tptradecore.biz.util; diff --git a/tptradecore-common/pom.xml b/tptradecore-common/pom.xml new file mode 100644 index 0000000..a011117 --- /dev/null +++ b/tptradecore-common/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + + com.deepinnet + tptradecore + 1.0-SNAPSHOT + + + tptradecore-common + pom + + tptradecore-common-dal + tptradecore-common-service + tptradecore-common-util + + + + diff --git a/tptradecore-common/tptradecore-common-dal/pom.xml b/tptradecore-common/tptradecore-common-dal/pom.xml new file mode 100644 index 0000000..ca62196 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/pom.xml @@ -0,0 +1,94 @@ + + + 4.0.0 + + + com.deepinnet + tptradecore-common + 1.0-SNAPSHOT + + + tptradecore-common-dal + + + + org.mapstruct + mapstruct + + + + org.mapstruct + mapstruct-processor + + + + com.baomidou + mybatis-plus-boot-starter + + + + com.baomidou + mybatis-plus-generator + ${mybatis-plus.version} + + + + org.freemarker + freemarker + + + + com.deepinnet + tptradecore-core-model + + + + com.deepinnet + tptradecore-common-service-facade + + + + com.deepinnet + tptradecore-common-util + + + + org.bouncycastle + bcprov-jdk15on + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + + + org.projectlombok + lombok + 1.18.24 + + + org.mapstruct + mapstruct-processor + ${mapstruct.version} + + + + + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/QueryRefundPassengerCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/QueryRefundPassengerCondition.java new file mode 100644 index 0000000..6ffacc1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/QueryRefundPassengerCondition.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.condition.contract; + +import lombok.*; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/9 14:16 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QueryRefundPassengerCondition { + + private List refundApplyOrderNos; + + private String refundSubjectItemNo; + + private List refundSubjectItemNos; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/UpdateRefundApplyOrderCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/UpdateRefundApplyOrderCondition.java new file mode 100644 index 0000000..d7ec6c0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/contract/UpdateRefundApplyOrderCondition.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dal.condition.contract; + +import lombok.*; + +import java.io.*; + +/** + * @author amos wong + * @create 2023/8/24 20:08 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UpdateRefundApplyOrderCondition implements Serializable { + + private static final long serialVersionUID = -888211336739331026L; + + /** + * 订单号 + */ + private String refundApplyOrderNo; + + /** + * 租户id + */ + private String tenantId; + + /** + * 初始状态 + */ + private String originalStatus; + + /** + * 目标状态 + */ + private String targetStatus; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/task/UpdateTaskCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/task/UpdateTaskCondition.java new file mode 100644 index 0000000..ed46a15 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/task/UpdateTaskCondition.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dal.condition.task; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-24 19:02 + */ +@Data +public class UpdateTaskCondition { + private Long id; + + private String originalStatus; + + private String targetStatus; + + private Long triggerTime; + + private Integer retryCount; + + private Long executeTime; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryBillCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryBillCondition.java new file mode 100644 index 0000000..bcd968d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryBillCondition.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.condition.trans; + +import lombok.*; + +import java.io.*; + +/** + * @author amos wong + * @create 2023/7/31 15:52 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QueryBillCondition implements Serializable { + + private static final long serialVersionUID = -7439930503206386929L; + + private String billNo; + + private String payOrderNo; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryChargeCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryChargeCondition.java new file mode 100644 index 0000000..5e20706 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryChargeCondition.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.condition.trans; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/31 15:52 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QueryChargeCondition implements Serializable { + + private static final long serialVersionUID = -7439930503206386929L; + + private String chargeNo; + + private String payOrderNo; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryPayOrderCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryPayOrderCondition.java new file mode 100644 index 0000000..1aa8dd2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/QueryPayOrderCondition.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.dal.condition.trans; + +import lombok.*; + +import java.util.List; + +/** + * @author amos wong + * @create 2022-11-14 14:08 + *

+ * 查询支付单的条件 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QueryPayOrderCondition { + + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 支付方式 + */ + private String payType; + + /** + * 原始订单号 + */ + private String orderNo; + + /** + * 原始订单编号列表 + */ + private List orderNos; + + /** + * 内部业务单号,订单号/退票申请单号 + */ + private String bizNo; + + /** + * 业务单号列表 + */ + private List bizNos; + + /** + * 要查询的支付单的类型 + */ + private List targetStatusList; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateBillCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateBillCondition.java new file mode 100644 index 0000000..49bd03b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateBillCondition.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.condition.trans; + +import lombok.*; + +/** + * @author amos wong + * @create 2023/7/31 10:56 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UpdateBillCondition { + + private String billNo; + + private String payOrderNo; + + private String originalStatus; + + private String targetStatus; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateChargeCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateChargeCondition.java new file mode 100644 index 0000000..79d829e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdateChargeCondition.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.condition.trans; + +import lombok.*; + +/** + * @author amos wong + * @create 2023/7/31 10:56 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UpdateChargeCondition { + + private String chargeNo; + + private String payOrderNo; + + private String originalStatus; + + private String targetStatus; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdatePayOrderCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdatePayOrderCondition.java new file mode 100644 index 0000000..2e8d86d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/trans/UpdatePayOrderCondition.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.condition.trans; + +import lombok.*; + +/** + * @author amos wong + * @create 2022-11-27 18:59 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UpdatePayOrderCondition { + private String bizNo; + + private String payOrderNo; + + private String outPayFlowId; + + private String originalStatus; + + private String targetStatus; + + private Long payTime; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/QueryCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/QueryCondition.java new file mode 100644 index 0000000..19af195 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/QueryCondition.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.dal.condition.voucher; + +import lombok.*; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/2 18:01 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QueryCondition { + + private String userNo; + + private String orderNo; + + private String voucherNo; + + private String productCategoryNo; + + private List voucherNos; + + private List targetStatusList; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/UpdateCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/UpdateCondition.java new file mode 100644 index 0000000..40578f1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/UpdateCondition.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.dal.condition.voucher; + +import lombok.*; + +/** + * @author amos wong + * @create 2023/8/2 18:00 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UpdateCondition { + + private String voucherNo; + + private String orderNo; + + private String originalStatus; + + private String targetStatus; + + private Integer redemptionCount; + + private Integer refundCount; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/VoucherVerificationQueryCondition.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/VoucherVerificationQueryCondition.java new file mode 100644 index 0000000..93ff873 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/condition/voucher/VoucherVerificationQueryCondition.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.dal.condition.voucher; + +import lombok.Data; + +import java.util.List; + + +/** + * @author amos wong + * @create 2024/3/14 16:13 + * @Description + */ +@Data +public class VoucherVerificationQueryCondition { + + private Long startTime; + + private Long endTime; + + private String orderNo; + + private String routeCode; + + private String routeName; + + private List userNos; + + private String shuttleTime; + + private String targetNumber; + + private String productCategoryNo; + + private String passengerName; + + private List voucherType; + + private String tripType; + + private String tenantId; + + private Integer pageNum; + + private Integer pageSize; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/audit/TpAuditDOConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/audit/TpAuditDOConverter.java new file mode 100644 index 0000000..91fb820 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/audit/TpAuditDOConverter.java @@ -0,0 +1,105 @@ +package com.deepinnet.tptradecore.common.dal.convert.audit; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.audit.TpAuditDO; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditCreatedDTO; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 审核do model转换器 + *

+ * + * @author chenjiaju + * @since 2023/8/10 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpAuditDOConverter { + + /** + * model to do + * @param tpAudit model + * @return do + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + @Mapping(source = "auditTime", target = "auditTime", qualifiedByName = "convertLong2LocalDateTime") + @Mapping(source = "submitTime", target = "submitTime", qualifiedByName = "convertLong2LocalDateTime") + TpAuditDO model2DO(TpAudit tpAudit); + + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + @Mapping(source = "auditTime", target = "auditTime", qualifiedByName = "convertLong2LocalDateTime") + @Mapping(source = "submitTime", target = "submitTime", qualifiedByName = "convertLong2LocalDateTime") + TpAuditDO model2DO(TpAuditCreatedDTO tpAuditCreatedDTO); + + /** + * do to model + * @param tpAuditDO do + * @return model + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + @Mapping(source = "auditTime", target = "auditTime", qualifiedByName = "convertLocalDateTime2Long") + @Mapping(source = "submitTime", target = "submitTime", qualifiedByName = "convertLocalDateTime2Long") + TpAudit do2Model(TpAuditDO tpAuditDO); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + @Named("convertLong2LocalDateTime") + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + @Named("convertLocalDateTime2Long") + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } + + default List do2ModelList(List tpAuditDOs){ + if(CollectionUtil.isEmpty(tpAuditDOs)){ + return Collections.EMPTY_LIST; + } + return tpAuditDOs.stream().map(tpAuditDO ->{ + return do2Model(tpAuditDO); + }).collect(Collectors.toList()); + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplicantConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplicantConvert.java new file mode 100644 index 0000000..9169b70 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplicantConvert.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.*; +import com.deepinnet.tptradecore.common.dto.contract.TpRefundApplicantDTO; +import com.deepinnet.tptradecore.core.model.contract.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/10/18 11:04 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpRefundApplicantConvert { + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundApplicantDO convert2DO(TpRefundApplicant refundApplicant); + + List convert2DOList(List refundApplicantList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundApplicant convert2Domain(TpRefundApplicantDO applicantDO); + + TpRefundApplicant convertDTO2Domain(TpRefundApplicantDTO applicantDTO); + + List convert2DomainList(List applyOrderDOList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplyOrderConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplyOrderConvert.java new file mode 100644 index 0000000..64ba781 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundApplyOrderConvert.java @@ -0,0 +1,175 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplyOrderDO; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.enums.TpBizTypeEnum; +import com.deepinnet.tptradecore.common.enums.contract.TpRefundApplyOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.contract.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpRefundApplyOrderConvert { + + TpRefundApplyOrderConvert INSTANCE = Mappers.getMapper(TpRefundApplyOrderConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + @Mapping(source = "applyAmount", target = "applyAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "refundAmount", target = "refundAmount", qualifiedByName = "convertMoney2String") + TpRefundApplyOrderDO convert2DO(TpRefundApplyOrder refundApplyOrder); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + @Mapping(source = "applyAmount", target = "applyAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "refundAmount", target = "refundAmount", qualifiedByName = "convertMoney2String") + List convert2DOList(List refundApplyOrderList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + @Mapping(source = "applyAmount", target = "applyAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "refundAmount", target = "refundAmount", qualifiedByName = "convertString2Money") + TpRefundApplyOrder convert2Domain(TpRefundApplyOrderDO applyOrderDO); + + List convert2DomainList(List applyOrderDOList); + + @Mapping(source = "applyAmount", target = "applyAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "refundAmount", target = "refundAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "passengers", target = "passengerDTOs") + @Mapping(source = "refundApplicant", target = "refundApplicantDTO") + TpRefundApplyOrderDTO convert2DTO(TpRefundApplyOrder refundApplyOrder); + + List convert2DTOList(List refundApplyOrderList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + @Named("convertMoney2String") + default String convertMoney2String(TpMoney deepinnetMoney) { + return deepinnetMoney == null ? null : deepinnetMoney.toString(); + } + + @Named("convertString2Money") + default TpMoney convertString2Money(String amount) { + if (StringUtils.isBlank(amount)) { + return null; + } + return new TpMoney(amount, TpMoney.ValueUnitEnum.YUAN); + } + + default TpRefundApplyOrder buildRefundApplyOrder(TpRefundApplyDTO refundApplyDTO, List refundSubjectItems, String refundApplyOrderNo) { + // 构建退票申请单模型 + TpRefundApplyOrder refundApplyOrder = new TpRefundApplyOrder(); + refundApplyOrder.setRefundApplyOrderNo(refundApplyOrderNo); + refundApplyOrder.setProductCode(refundApplyDTO.getProductCode()); + refundApplyOrder.setProductName(refundApplyDTO.getProductName()); + refundApplyOrder.setProductCategoryNo(refundApplyDTO.getProductCategoryNo()); + refundApplyOrder.setProductCategoryName(refundApplyDTO.getProductCategoryName()); + refundApplyOrder.setUserNo(refundApplyDTO.getUserNo()); + refundApplyOrder.setOrderNo(refundApplyDTO.getOrderNo()); + refundApplyOrder.setBizType(TpBizTypeEnum.CUSTOM_BUS_REFUND.getCode()); + refundApplyOrder.setReason(refundApplyDTO.getReason()); + refundApplyOrder.setApplyTime(refundApplyDTO.getApplyTime()); + refundApplyOrder.setStatus(TpRefundApplyOrderStatusEnum.REFUNDING.getCode()); + refundApplyOrder.setApplyAmount(new TpMoney(refundApplyDTO.getApplyAmount(), TpMoney.ValueUnitEnum.YUAN)); + refundApplyOrder.setChargeAmount(StringUtils.isBlank(refundApplyDTO.getChargeAmount()) ? null : new TpMoney(refundApplyDTO.getChargeAmount(), TpMoney.ValueUnitEnum.YUAN)); + refundApplyOrder.setRefundAmount(new TpMoney(refundApplyDTO.getRefundAmount(), TpMoney.ValueUnitEnum.YUAN)); + refundApplyOrder.setRefundRoutes(BeanUtil.copyToList(refundApplyDTO.getRefundRouteDTOS(), TpRefundRoute.class)); + refundApplyOrder.setRefundRequirementUser(BeanUtil.copyProperties(refundApplyDTO.getRefundRequirementUser(), TpRefundRequirementUser.class)); + refundApplyOrder.setRefundType(refundApplyDTO.getRefundType()); + refundApplyOrder.setTenantId(refundApplyDTO.getTenantId()); + refundApplyOrder.setBizData(refundApplyDTO.getBizData()); + refundApplyOrder.setSubjectItemList(refundSubjectItems); + refundApplyOrder.setTripType(refundApplyDTO.getTripType()); + + // 构建退票标的项 + assembleRefundSubjectItemList(refundApplyOrderNo, refundApplyOrder, refundApplyDTO.getTenantId()); + + // 退票线路信息 + List refundRoutes = refundApplyOrder.getRefundRoutes(); + refundRoutes.forEach(refundRoute -> { + refundRoute.setRefundApplyOrderNo(refundApplyOrderNo); + refundRoute.setTenantId(refundApplyDTO.getTenantId()); + }); + + return refundApplyOrder; + } + + default TpRefundApplyOrder buildCharteredBusRefundApplyOrder(TpCharteredBusRefundDTO refundDTO, List refundSubjectItems, String refundApplyOrderNo) { + // 构建退票申请单 + TpRefundApplyOrder refundApplyOrder = new TpRefundApplyOrder(); + refundApplyOrder.setRefundApplyOrderNo(refundApplyOrderNo); + refundApplyOrder.setProductCode(refundDTO.getProductCode()); + refundApplyOrder.setProductName(refundDTO.getProductName()); + refundApplyOrder.setProductCategoryNo(refundDTO.getProductCategoryNo()); + refundApplyOrder.setProductCategoryName(refundDTO.getProductCategoryName()); + refundApplyOrder.setUserNo(refundDTO.getRefundApplicantDTO().getUserNo()); + refundApplyOrder.setOrderNo(refundDTO.getMainOrderNo()); + refundApplyOrder.setBizNo(refundDTO.getBizNo()); + refundApplyOrder.setBizType(refundDTO.getBizType()); + refundApplyOrder.setApplyTime(refundDTO.getApplyTime()); + refundApplyOrder.setStatus(TpRefundApplyOrderStatusEnum.REFUNDING.getCode()); + refundApplyOrder.setApplyAmount(refundDTO.getApplyAmount()); + refundApplyOrder.setChargeAmount(refundDTO.getChargeAmount()); + refundApplyOrder.setRefundAmount(refundDTO.getRefundAmount()); + refundApplyOrder.setRefundType(refundDTO.getRefundType()); + refundApplyOrder.setTenantId(refundDTO.getTenantId()); + refundApplyOrder.setBizData(refundDTO.getBizData()); + refundApplyOrder.setSubjectItemList(refundSubjectItems); + + // 构建退票标的项 + assembleRefundSubjectItemList(refundApplyOrderNo, refundApplyOrder, refundDTO.getTenantId()); + return refundApplyOrder; + } + + default void assembleRefundSubjectItemList(String refundApplyOrderNo, TpRefundApplyOrder refundApplyOrder, String tenantId) { + int count = 0; + + for (TpRefundSubjectItem refundSubjectItem : refundApplyOrder.getSubjectItemList()) { + refundSubjectItem.setRefundApplyOrderNo(refundApplyOrderNo); + refundSubjectItem.setTenantId(tenantId); + refundSubjectItem.setSubjectItemNo(refundApplyOrderNo + refundSubjectItem.getSubjectItemId() + count++); + + List subjectItemElements = refundSubjectItem.getSubjectItemElements(); + subjectItemElements.forEach(element -> element.setSubjectItemNo(refundSubjectItem.getSubjectItemNo())); + + TpRefundPassenger passenger = refundSubjectItem.getPassenger(); + if (passenger != null) { + passenger.setRefundApplyOrderNo(refundApplyOrderNo); + passenger.setRefundSubjectItemNo(refundSubjectItem.getSubjectItemNo()); + passenger.setTenantId(tenantId); + } + } + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundPassengerConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundPassengerConvert.java new file mode 100644 index 0000000..66c8f33 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundPassengerConvert.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundPassengerDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundPassenger; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper +public interface TpRefundPassengerConvert { + + + TpRefundPassengerConvert INSTANCE = Mappers.getMapper(TpRefundPassengerConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundPassengerDO convert2DO(TpRefundPassenger refundPassenger); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List refundPassengerList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundPassenger convert2Domain(TpRefundPassengerDO applyOrderDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List applyOrderDOList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRequirementUserConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRequirementUserConvert.java new file mode 100644 index 0000000..65cc1cd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRequirementUserConvert.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.*; +import com.deepinnet.tptradecore.core.model.contract.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper +public interface TpRefundRequirementUserConvert { + + + TpRefundRequirementUserConvert INSTANCE = Mappers.getMapper(TpRefundRequirementUserConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundRequirementUserDO convert2DO(TpRefundRequirementUser refundRequirementUser); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List refundRequirementUserList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundRequirementUser convert2Domain(TpRefundRequirementUserDO refundRequirementUserDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List refundRequirementUserDOList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteConverter.java new file mode 100644 index 0000000..ce047dd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteConverter.java @@ -0,0 +1,73 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRoute; +import org.mapstruct.*; + +import java.util.*; + +/** + *

+ * 线路转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpRefundRouteConverter { + + /** + * model to do + * + * @param refundRoute model + * @return do + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundRouteDO model2DO(TpRefundRoute refundRoute); + + /** + * model to do + */ + List model2DOList(List refundRoutes); + + /** + * do to model + * + * @param tpOrderRouteDO do + * @return model + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundRoute do2Model(TpRefundRouteDO tpOrderRouteDO); + + /** + * do to model + * + * @param tpOrderRouteDOs do + * @return model + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List do2ModelList(List tpOrderRouteDOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteShuttleConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteShuttleConverter.java new file mode 100644 index 0000000..05bdf4e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundRouteShuttleConverter.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteShuttleDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRouteShuttle; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.*; + +/** + *

+ * 班次转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpRefundRouteShuttleConverter { + + /** + * model to do + * + * @param refundRouteSchedule model + * @return do + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundRouteShuttleDO model2DO(TpRefundRouteShuttle refundRouteSchedule); + + /** + * do to model + * + * @param refundRouteScheduleDO do + * @return model + */ + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundRouteShuttle do2Model(TpRefundRouteShuttleDO refundRouteScheduleDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List do2Models(List refundRouteScheduleDOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemConvert.java new file mode 100644 index 0000000..635384a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemConvert.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundSubjectItemDO; +import com.deepinnet.tptradecore.common.dto.contract.TpRefundSubjectItemDTO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundSubjectItem; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpRefundSubjectItemConvert { + + TpRefundSubjectItemConvert INSTANCE = Mappers.getMapper(TpRefundSubjectItemConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundSubjectItemDO convert2DO(TpRefundSubjectItem refundSubjectItem); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List refundSubjectItemList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundSubjectItem convert2Domain(TpRefundSubjectItemDO refundSubjectItemDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List refundSubjectItemDOList); + + TpRefundSubjectItem convertDTO2Domain(TpRefundSubjectItemDTO refundSubjectItemDTO); + + List convertDTOs2DomainList(List refundSubjectItemDTOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemElementConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemElementConvert.java new file mode 100644 index 0000000..8bd3387 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundSubjectItemElementConvert.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.*; +import com.deepinnet.tptradecore.core.model.contract.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper +public interface TpRefundSubjectItemElementConvert { + + + TpRefundSubjectItemElementConvert INSTANCE = Mappers.getMapper(TpRefundSubjectItemElementConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundSubjectItemElementDO convert2DO(TpRefundSubjectItemElement subjectItemElement); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List subjectItemElementList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundSubjectItemElement convert2Domain(TpRefundSubjectItemElementDO subjectItemElementDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List subjectItemElementDOList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundVoucherRecordConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundVoucherRecordConvert.java new file mode 100644 index 0000000..25bc2cd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/contract/TpRefundVoucherRecordConvert.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.dal.convert.contract; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundVoucherRecordDO; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherUpdateDTO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundVoucherRecord; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpRefundVoucherRecordConvert { + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpRefundVoucherRecordDO convert2DO(TpRefundVoucherRecord refundVoucherRecord); + + List convert2DOList(List refundVoucherRecords); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpRefundVoucherRecord convert2Domain(TpRefundVoucherRecordDO refundVoucherRecordDO); + + List convert2DomainList(List refundVoucherRecordDOs); + + default TpRefundVoucherRecord convertDTO2Domain(List updateDTOs) { + TpVoucherUpdateDTO voucherUpdateDTO = updateDTOs.get(0); + TpRefundVoucherRecord refundVoucherRecord = new TpRefundVoucherRecord(); + refundVoucherRecord.setRefundApplyOrderNo(voucherUpdateDTO.getRefundApplyOrderNo()); + refundVoucherRecord.setInvalidVoucherParam(JSONUtil.toJsonStr(updateDTOs)); + refundVoucherRecord.setTenantId(voucherUpdateDTO.getTenantId()); + return refundVoucherRecord; + } + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderBalanceConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderBalanceConverter.java new file mode 100644 index 0000000..eb723cd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderBalanceConverter.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderBalanceDO; +import com.deepinnet.tptradecore.core.model.order.TpBalanceOrder; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.Map; + +/** + *

+ * 订单订金转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderBalanceConverter { + + /** + * model 2 do + * @param tpBalanceOrder model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpBalanceOrder.getBizData()))") + TpOrderBalanceDO model2DO(TpBalanceOrder tpBalanceOrder); + + /** + * do 2 model + * @param tpOrderBalanceDO do + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderBalanceDO.getBizData()))") + TpBalanceOrder do2Model(TpOrderBalanceDO tpOrderBalanceDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderCarpoolRecordConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderCarpoolRecordConverter.java new file mode 100644 index 0000000..4726525 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderCarpoolRecordConverter.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderCarpoolRecordDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderCarpoolRecord; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.List; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/5/20 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderCarpoolRecordConverter { + + List modelList2DoList(List carpoolRecord); + + List doList2ModelList(List carpoolRecordDO); + + /** + * model 2 do + * @param carpoolRecord model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(carpoolRecord.getBizData()))") + TpOrderCarpoolRecordDO model2DO(TpOrderCarpoolRecord carpoolRecord); + + /** + * do 2 model + * @param carpoolRecordDO do + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(carpoolRecordDO.getBizData()))") + TpOrderCarpoolRecord do2Model(TpOrderCarpoolRecordDO carpoolRecordDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeApplyConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeApplyConverter.java new file mode 100644 index 0000000..1c839fb --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeApplyConverter.java @@ -0,0 +1,111 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderCancelApplyCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderChangeApplyCreatedDTO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单变更转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderChangeItemFactorConverter.class, + TpOrderChangeItemConverter.class +}) +public interface TpOrderChangeApplyConverter { + + + /** + * TpOrderChangeApplyCreatedDTO to TpOrderChangeApplyDO + * @param tpOrderChangeApplyCreatedDTO model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderChangeApplyCreatedDTO.getBizData()))") + @Mapping(target = "applyTime",expression = "java(convertLong2LocalDateTime(tpOrderChangeApplyCreatedDTO.getApplyTime()))") + @Mapping(source = "orderChangeApplicant.applicantNo",target = "applicantNo") + @Mapping(source = "orderChangeApplicant.applicantName",target = "applicantName") + @Mapping(source = "orderChangeApplicant.applicantPhone",target = "applicantPhone") + TpOrderChangeApplyDO dto2DO(TpOrderChangeApplyCreatedDTO tpOrderChangeApplyCreatedDTO); + + /** + * TpOrderCancelApplyCreatedDTO to TpOrderChangeApplyDO + * @param orderCancelApplyDTO model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(orderCancelApplyDTO.getBizData()))") + @Mapping( target = "applyTime", expression = "java(convertLong2LocalDateTime(orderCancelApplyDTO.getApplyTime()))") + @Mapping(source = "orderChangeApplicant.applicantNo",target = "applicantNo") + @Mapping(source = "orderChangeApplicant.applicantName",target = "applicantName") + @Mapping(source = "orderChangeApplicant.applicantPhone",target = "applicantPhone") + TpOrderChangeApplyDO dto2DO(TpOrderCancelApplyCreatedDTO orderCancelApplyDTO); + + /** + * TpOrderChangeApplyDO to TpOrderChangeApply + * @param tpOrderChangeApplyDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderChangeApplyDO.getBizData()))") + @Mapping(target = "applyTime", expression = "java(convertLocalDateTime2Long(tpOrderChangeApplyDO.getApplyTime()))") + @Mapping(target = "approvedTime", expression = "java(convertLocalDateTime2Long(tpOrderChangeApplyDO.getApprovedTime()))") + @Mapping(target = "rscApplyTime", expression = "java(convertLocalDateTime2Long(tpOrderChangeApplyDO.getRscApplyTime()))") + @Mapping(source = "applicantNo",target = "orderChangeApplicant.applicantNo") + @Mapping(source = "applicantName",target = "orderChangeApplicant.applicantName") + @Mapping(source = "applicantPhone",target = "orderChangeApplicant.applicantPhone") + TpOrderChangeApply do2Model(TpOrderChangeApplyDO tpOrderChangeApplyDO); + + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + @Named("convertLong2LocalDateTime") + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + @Named("convertLocalDateTime2Long") + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } + + + List do2ModelList(List tpOrderChangeApplyDOs); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemConverter.java new file mode 100644 index 0000000..e1e862c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemConverter.java @@ -0,0 +1,86 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderChangeItemCreatedDTO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItem; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单变更项转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderChangeItemFactorConverter.class +}) +public interface TpOrderChangeItemConverter { + + /** + * TpOrderChangeItemCreatedDTO to TpOrderChangeItemDO + * @param tpOrderChangeApplyCreatedDTO model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderChangeApplyCreatedDTO.getBizData()))") + TpOrderChangeItemDO dto2DO(TpOrderChangeItemCreatedDTO tpOrderChangeApplyCreatedDTO); + + /** + * TpOrderChangeItemDO to TpOrderChangeItem + * @param tpOrderChangeItemDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderChangeItemDO.getBizData()))") + TpOrderChangeItem do2Model(TpOrderChangeItemDO tpOrderChangeItemDO); + + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + @Named("convertLong2LocalDateTime") + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + @Named("convertLocalDateTime2Long") + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } + + List dto2DOList(List orderChangeItems); + + List do2ModelList(List tpOrderChangeItemDOS); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemFactorConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemFactorConverter.java new file mode 100644 index 0000000..0987fa7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangeItemFactorConverter.java @@ -0,0 +1,84 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemFactorDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderChangeItemFactorCreatedDTO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItemFactor; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单变更转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderChangeItemFactorConverter { + + /** + * TpOrderChangeItemFactorCreatedDTO to TpOrderChangeItemFactorDO + * @param tpOrderChangeItemFactorCreatedDTO model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderChangeItemFactorCreatedDTO.getBizData()))") + TpOrderChangeItemFactorDO dto2DO(TpOrderChangeItemFactorCreatedDTO tpOrderChangeItemFactorCreatedDTO); + + /** + * TpOrderChangeItemFactorDO to TpOrderChangeItemFactor + * @param tpOrderChangeItemFactorDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderChangeItemFactorDO.getBizData()))") + TpOrderChangeItemFactor do2Model(TpOrderChangeItemFactorDO tpOrderChangeItemFactorDO); + + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + @Named("convertLong2LocalDateTime") + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + @Named("convertLocalDateTime2Long") + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } + + List do2ModelList(List factorDOS); + + List dto2DOList(List itemFactors); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangePriceRecordConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangePriceRecordConverter.java new file mode 100644 index 0000000..55920fa --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChangePriceRecordConverter.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangePriceRecordDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChargeRecordDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangePriceRecord; +import com.deepinnet.tptradecore.core.model.order.TpOrderChargeRecord; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单改价记录转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderChangePriceRecordConverter { + + /** + * modelList 2 doList + * @param tpOrderChangePriceRecords model + * @return do + */ + List modelList2DOList(List tpOrderChangePriceRecords); + + /** + * model 2 do + * @param tpOrderChangePriceRecord model + * @return do + */ +// @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderChangePriceRecord.getBizData()))") + TpOrderChangePriceRecordDO model2DO(TpOrderChangePriceRecord tpOrderChangePriceRecord); + + List doList2ModelList(List tpOrderChargeRecordDOs); + + /** + * do 2 model + * @param tpOrderChangePriceRecordDO do + * @return do + */ +// @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderChangePriceRecordDO.getBizData()))") + TpOrderChangePriceRecord do2Model(TpOrderChangePriceRecordDO tpOrderChangePriceRecordDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + default Long convertLocalDateTime2Long(LocalDateTime localDateTime) { + if (ObjectUtil.isNotNull(localDateTime)) { + return LocalDateTimeUtil.toEpochMilli(localDateTime); + } + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChargeRecordConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChargeRecordConverter.java new file mode 100644 index 0000000..a25d646 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderChargeRecordConverter.java @@ -0,0 +1,97 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChargeRecordDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDepositDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChargeRecordVO; +import com.deepinnet.tptradecore.core.model.order.TpDepositOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderChargeRecord; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单费用转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderChargeRecordConverter { + + /** + * modelList 2 voList + * @param tpOrderChargeRecords modelList + * @return voList + */ + List modelList2VOList(List tpOrderChargeRecords); + + + /** + * model 2 vo + * @param tpOrderChargeRecord model + * @return vo + */ + TpOrderChargeRecordVO model2VO(TpOrderChargeRecord tpOrderChargeRecord); + + /** + * modelList 2 doList + * @param tpOrderChargeRecords model + * @return do + */ + List modelList2DOList(List tpOrderChargeRecords); + + /** + * model 2 do + * @param tpOrderChargeRecord model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderChargeRecord.getBizData()))") + TpOrderChargeRecordDO model2DO(TpOrderChargeRecord tpOrderChargeRecord); + + List doList2ModelList(List tpOrderChargeRecordDOs); + + /** + * do 2 model + * @param tpOrderChargeRecordDO do + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderChargeRecordDO.getBizData()))") + @Mapping(target = "operateTime", expression = "java(convertLocalDateTime2Long(tpOrderChargeRecordDO.getGmtCreated()))") + TpOrderChargeRecord do2Model(TpOrderChargeRecordDO tpOrderChargeRecordDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + default Long convertLocalDateTime2Long(LocalDateTime localDateTime) { + if (ObjectUtil.isNotNull(localDateTime)) { + return LocalDateTimeUtil.toEpochMilli(localDateTime); + } + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderConverter.java new file mode 100644 index 0000000..b0a9c46 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderConverter.java @@ -0,0 +1,116 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDO; +import com.deepinnet.tptradecore.common.vo.order.*; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import org.mapstruct.*; + +import java.util.*; + +/** + *

+ * 订单转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderSubjectItemConverter.class, + TpOrderRouteConverter.class, + TpOrderTravelTripConverter.class, + TpOrderElementConverter.class, + TpOrderPriceRecordConverter.class, + TpOrderPlacerConverter.class, + TpOrderRequirementUserConverter.class, + TpOrderServiceTargetConverter.class, + TpOrderPriceRecordConverter.class, + TpOrderChargeRecordConverter.class, + TpOrderTripDispatchRecordConverter.class, + TpOrderInvoiceConverter.class +}) +public interface TpOrderConverter { + + /** + * model 2 detailVo + * @param tpOrder model + * @return detailVo + */ + @Mapping(source = "tpOrder.orderElements", target = "orderElements") + @Mapping(source = "tpOrder.orderPriceRecord", target = "orderPriceRecord") + @Mapping(source = "tpOrder.orderPlacer", target = "orderPlacer") + @Mapping(source = "tpOrder.orderRequirementUser", target = "orderRequirementUser") + @Mapping(source = "tpOrder.orderSubjectItem", target = "orderSubjectItem") + @Mapping(source = "tpOrder.tpOrderTargetService", target = "tpOrderTargetService") + @Mapping(source = "tpOrder.tpOrderRoutes", target = "tpOrderRoutes") + @Mapping(source = "tpOrder.orderTravelTrips", target = "tpOrderTravelTrips") + @Mapping(source = "tpOrder.orderChargeRecords", target = "orderChargeRecords") + @Mapping(source = "tpOrder.dispatchRecords", target = "tpOrderTravelDispatchRecords") + @Mapping(source = "tpOrder.tpOrderInvoice", target = "tpOrderInvoice") + @Mapping(source = "tpOrder.rescheduleRecords", target = "tpOrderRescheduleRecords") + TpOrderDetailVO model2DetailVO(TpOrder tpOrder); + + /** + * modelList 2 voList + * @param orderList modelList + * @return voList + */ + List modelList2VOList(List orderList); + + /** + * model 2 vo + * @param tpOrder model + * @return vo + */ + @Mapping(source = "tpOrder.orderSubjectItem", target = "orderSubjectItem") + @Mapping(source = "tpOrder.tpOrderRoutes", target = "routesInfo") + @Mapping(source = "tpOrder.orderTravelTrips", target = "tpOrderTravelTrips") + @Mapping(source = "tpOrder.tpOrderTargetService", target = "tpOrderTargetService") + @Mapping(source = "tpOrder.orderPlacer", target = "orderPlacer") + @Mapping(source = "tpOrder.orderRequirementUser", target = "requirementUser") + @Mapping(source = "tpOrder.tpOrderInvoice", target = "tpOrderInvoice") + @Mapping(source = "tpOrder.orderChargeRecords", target = "orderChargeRecords") + TpOrderListVO model2VO(TpOrder tpOrder); + + /** + * TpOrder to TpOrderDO + * @param tpOrder model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrder.getBizData()))") + TpOrderDO model2DO(TpOrder tpOrder); + + /** + * TpOrderDO to TpOrder + * @param tpOrderDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderDO.getBizData()))") + TpOrder do2Model(TpOrderDO tpOrderDO); + + /** + * doList to modelList + * @param tpOrderDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDepositConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDepositConverter.java new file mode 100644 index 0000000..a69a4b8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDepositConverter.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDepositDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPlacerDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderPlacerVO; +import com.deepinnet.tptradecore.core.model.order.TpDepositOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPlacer; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.Map; + +/** + *

+ * 订单订金转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderDepositConverter { + + /** + * model 2 do + * @param tpDepositOrder model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpDepositOrder.getBizData()))") + TpOrderDepositDO model2DO(TpDepositOrder tpDepositOrder); + + /** + * do 2 model + * @param tpDepositOrderDO do + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpDepositOrderDO.getBizData()))") + TpDepositOrder do2Model(TpOrderDepositDO tpDepositOrderDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDiscountConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDiscountConverter.java new file mode 100644 index 0000000..48e25d4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDiscountConverter.java @@ -0,0 +1,96 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDiscountDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDiscountDTO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDiscountVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderDiscount; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单优惠信息转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderDiscountConverter { + + /** + * dtoList 2 modelList + * @param dtos dtoList + * @return modelList + */ + List dtoList2ModelList(List dtos); + + /** + * dto 2 model + * @param dto dto + * @return model + */ + TpOrderDiscount dto2Model(TpOrderDiscountDTO dto); + + /** + * model 2 vo + * @param tpOrderDiscount model + * @return vo + */ + TpOrderDiscountVO model2VO(TpOrderDiscount tpOrderDiscount); + + /** + * model to do + * @param tpOrderDiscount model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderDiscount.getBizData()))") + TpOrderDiscountDO model2DO(TpOrderDiscount tpOrderDiscount); + + /** + * modelList to doList + * @param tpOrderDiscounts model + * @return doList + */ + List modelList2DOList(List tpOrderDiscounts); + + /** + * do to model + * @param tpOrderDiscountDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderDiscountDO.getBizData()))") + TpOrderDiscount do2Model(TpOrderDiscountDO tpOrderDiscountDO); + + /** + * doList to modelList + * @param tpOrderDiscountDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderDiscountDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDispatchConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDispatchConverter.java new file mode 100644 index 0000000..4e45c9a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderDispatchConverter.java @@ -0,0 +1,154 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchFleetDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchJoinFleetDO; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatchFleet; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatchJoinFleet; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单变更转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderDispatchConverter { + + + /** + * tpOrderDispatchCreatedDTO to TpOrderDispatchDO + * @param tpOrderDispatchCreatedDTO model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderDispatchCreatedDTO.getBizData()))") + @Mapping(source = "dispatchTime", target = "dispatchTime", qualifiedByName = "convertLong2LocalDateTime") + @Mapping(source = "isGiveBack", target = "isGiveBack", qualifiedByName = "convertBoolean2Integer") + @Mapping(source = "isCallBack", target = "isCallBack", qualifiedByName = "convertBoolean2Integer") + @Mapping(source = "isReDispatch", target = "isReDispatch", qualifiedByName = "convertBoolean2Integer") + TpOrderDispatchDO dto2DO(TpOrderDispatchCreatedDTO tpOrderDispatchCreatedDTO); + + @Mapping(source = "callBackTime", target = "callBackTime", qualifiedByName = "convertLong2LocalDateTime") + TpOrderDispatchDO dto2DO(TpOrderDispatchCallBackDTO callBackDTO); + @Mapping(source = "giveBackTime", target = "giveBackTime", qualifiedByName = "convertLong2LocalDateTime") + TpOrderDispatchDO dto2DO(TpOrderDispatchGiveBackDTO giveBackDTO); + + + /** + * tpOrderDispatchDO to TpOrderDispatch + * @param tpOrderDispatchDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderDispatchDO.getBizData()))") + @Mapping(source = "dispatchTime", target = "dispatchTime", qualifiedByName = "convertLocalDateTime2Long") + @Mapping(source = "giveBackTime", target = "giveBackTime", qualifiedByName = "convertLocalDateTime2Long") + @Mapping(source = "callBackTime", target = "callBackTime", qualifiedByName = "convertLocalDateTime2Long") + @Mapping(source = "isGiveBack", target = "isGiveBack", qualifiedByName = "convertInteger2Boolean") + @Mapping(source = "isCallBack", target = "isCallBack", qualifiedByName = "convertInteger2Boolean") + @Mapping(source = "isReDispatch", target = "isReDispatch", qualifiedByName = "convertInteger2Boolean") + TpOrderDispatch do2Model(TpOrderDispatchDO tpOrderDispatchDO); + + + @Mapping(target = "bizData", expression = "java(convertBizData2String(fleetCreatedDTO.getBizData()))") + @Mapping(source = "dispatchTime", target = "dispatchTime", qualifiedByName = "convertLong2LocalDateTime") + TpOrderDispatchFleetDO dto2DO(TpOrderDispatchFleetCreatedDTO fleetCreatedDTO); + + + + + @Mapping(target = "bizData", expression = "java(convertString2BizData(fleetDO.getBizData()))") + @Mapping(source = "dispatchTime", target = "dispatchTime", qualifiedByName = "convertLocalDateTime2Long") + TpOrderDispatchFleet do2Model(TpOrderDispatchFleetDO fleetDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + @Named("convertBoolean2Integer") + default Integer convertBoolean2Integer(Boolean b) { + if (ObjectUtil.isNull(b)) { + return 0; + } + if (b.booleanValue()) { + return 1; + } + + return 0; + } + + @Named("convertInteger2Boolean") + default Boolean convertInteger2Boolean(Integer integer) { + if (ObjectUtil.isNull(integer)) { + return Boolean.FALSE; + } + if (integer == 1) { + return Boolean.TRUE; + } + + return Boolean.FALSE; + } + @Named("convertLong2LocalDateTime") + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + @Named("convertLocalDateTime2Long") + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } + + + List do2ModelList(List tpOrderDispatchDOS); + + + List do2FleetModelList(List tpOrderDispatchFleetDOList); + + + List dto2DOList(List joinFleets); + + @Mapping(target = "bizData", expression = "java(convertBizData2String(joinFleetDTO.getBizData()))") + TpOrderDispatchJoinFleetDO dto2DO(TpOrderDispatchJoinFleetDTO joinFleetDTO); + + List do2JoinFleetModelList(List joinFleetDOList); + + @Mapping(target = "bizData", expression = "java(convertString2BizData(joinFleetDO.getBizData()))") + TpOrderDispatchJoinFleet do2JoinFleetModel(TpOrderDispatchJoinFleetDO joinFleetDO); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderElementConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderElementConverter.java new file mode 100644 index 0000000..8cdba11 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderElementConverter.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderElementDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderElementVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderElement; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +import java.util.List; + +/** + *

+ * 订单元素转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderElementConverter { + + /** + * model 2 vo + * @param tpOrderElement model + * @return vo + */ + TpOrderElementVO model2VO(TpOrderElement tpOrderElement); + + /** + * model to do + * @param tpOrderElement model + * @return do + */ + TpOrderElementDO model2DO(TpOrderElement tpOrderElement); + + /** + * modelList to doList + * @param tpOrderElements modelList + * @return doList + */ + List modelList2DOList(List tpOrderElements); + + /** + * do to model + * @param tpOrderElementDO do + * @return model + */ + TpOrderElement do2Model(TpOrderElementDO tpOrderElementDO); + + /** + * doList to modelList + * @param tpOrderElementDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderElementDOs); + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderInvoiceConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderInvoiceConverter.java new file mode 100644 index 0000000..4db4a1d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderInvoiceConverter.java @@ -0,0 +1,74 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderInvoiceDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderInvoiceDTO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderInvoiceVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderInvoice; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 发票模型转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderInvoiceConverter { + + List doList2ModelList(List list); + + List dtoList2ModelList(List dto); + + List modelList2DOList(List tpOrderInvoices); + + /** + * dto to model + * @param dto dto + * @return model + */ + TpOrderInvoice dto2Model(TpOrderInvoiceDTO dto); + + TpOrderInvoiceVO model2vo(TpOrderInvoice tpOrderInvoice); + + /** + * model to do + * @param tpOrderInvoice model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderInvoice.getBizData()))") + TpOrderInvoiceDO model2DO(TpOrderInvoice tpOrderInvoice); + + /** + * do to model + * @param tpOrderInvoiceDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderInvoiceDO.getBizData()))") + TpOrderInvoice do2Model(TpOrderInvoiceDO tpOrderInvoiceDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderItemElementConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderItemElementConverter.java new file mode 100644 index 0000000..14e1d4b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderItemElementConverter.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderItemElementDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderSubjectItemElementVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderItemElement; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单元素转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderItemElementConverter { + + /** + * modelList 2 voList + * @param tpOrderItemElements modelList + * @return voList + */ + List modelList2VOList(List tpOrderItemElements); + + /** + * model 2 vo + * @param tpOrderItemElement model + * @return vo + */ + TpOrderSubjectItemElementVO model2VO(TpOrderItemElement tpOrderItemElement); + + /** + * model to do + * @param tpOrderItemElement model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderItemElement.getBizData()))") + TpOrderItemElementDO model2DO(TpOrderItemElement tpOrderItemElement); + + /** + * modelList to doList + * @param tpOrderItemElements modelList + * @return doList + */ + List modelList2DOList(List tpOrderItemElements); + + /** + * do to model + * @param tpOrderItemElementDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderItemElementDO.getBizData()))") + TpOrderItemElement do2Model(TpOrderItemElementDO tpOrderItemElementDO); + + /** + * doList to modelList + * @param tpOrderPassengerDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderPassengerDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPassengerConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPassengerConverter.java new file mode 100644 index 0000000..e807c1d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPassengerConverter.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderPassengerVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPassenger; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单元素转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderPassengerConverter { + + /** + * model 2 vo + * @param tpOrderPassenger model + * @return vo + */ + TpOrderPassengerVO model2VO(TpOrderPassenger tpOrderPassenger); + + /** + * modelList 2 voList + * @param tpOrderPassengers modelList + * @return voList + */ + List modelList2VOList(List tpOrderPassengers); + + /** + * model to do + * @param tpOrderPassenger model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderPassenger.getBizData()))") + TpOrderPassengerDO model2DO(TpOrderPassenger tpOrderPassenger); + + /** + * modelList to doList + * @param tpOrderPassengers modelList + * @return doList + */ + List modelList2DOList(List tpOrderPassengers); + + /** + * do to model + * @param tpOrderPassengerDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderPassengerDO.getBizData()))") + TpOrderPassenger do2Model(TpOrderPassengerDO tpOrderPassengerDO); + + /** + * doList to modelList + * @param tpOrderPassengerDOS doList + * @return modelList + */ + List doList2ModelList(List tpOrderPassengerDOS); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPlacerConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPlacerConverter.java new file mode 100644 index 0000000..f676fc0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPlacerConverter.java @@ -0,0 +1,68 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPlacerDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderPlacerVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPlacer; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.*; + +/** + *

+ * 订单下单人转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderPlacerConverter { + + /** + * model 2 vo + * @param tpOrderPlacer model + * @return vo + */ + TpOrderPlacerVO model2VO(TpOrderPlacer tpOrderPlacer); + + /** + * model to do + * @param tpOrderPlacer model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderPlacer.getBizData()))") + TpOrderPlacerDO model2DO(TpOrderPlacer tpOrderPlacer); + + /** + * do to model + * @param tpOrderPlacerDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderPlacerDO.getBizData()))") + TpOrderPlacer do2Model(TpOrderPlacerDO tpOrderPlacerDO); + + List do2ModelList(List tpOrderPlacerDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordConverter.java new file mode 100644 index 0000000..3389381 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordConverter.java @@ -0,0 +1,102 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPriceRecordDTO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderPriceRecordVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecord; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单价格记录转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderDiscountConverter.class, + TpOrderPriceRecordDetailConverter.class +}) +public interface TpOrderPriceRecordConverter { + + /** + * dtoList 2 modelList + * @param dtos dtoList + * @return modelList + */ + List dtoList2ModelList(List dtos); + + /** + * dto 2 model + * @param dto dto + * @return model + */ + @Mapping(source = "dto.orderDiscount", target = "orderDiscounts") + @Mapping(source = "dto.orderPriceRecordDetails", target = "orderPriceDetailRecordDetails") + TpOrderPriceRecord dto2Model(TpOrderPriceRecordDTO dto); + + /** + * model 2 vo + * @param tpOrderPriceRecord model + * @return vo + */ + @Mapping(source = "tpOrderPriceRecord.orderDiscounts", target = "orderDiscount") + @Mapping(source = "tpOrderPriceRecord.orderPriceDetailRecordDetails", target = "orderPriceRecordDetails") + TpOrderPriceRecordVO model2VO(TpOrderPriceRecord tpOrderPriceRecord); + + /** + * model to do + * @param tpOrderPriceRecord model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderPriceRecord.getBizData()))") + TpOrderPriceRecordDO model2DO(TpOrderPriceRecord tpOrderPriceRecord); + + /** + * modelList to doList + * @param tpOrderPriceRecords modelList + * @return doList + */ + List modelList2DOList(List tpOrderPriceRecords); + + /** + * do to model + * @param tpOrderPriceRecordDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderPriceRecordDO.getBizData()))") + TpOrderPriceRecord do2Model(TpOrderPriceRecordDO tpOrderPriceRecordDO); + + /** + * doList to modelList + * @param tpOrderPriceRecordDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderPriceRecordDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordDetailConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordDetailConverter.java new file mode 100644 index 0000000..fb6c245 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderPriceRecordDetailConverter.java @@ -0,0 +1,87 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDetailDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderPriceRecordDetailDTO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecord; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecordDetail; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 计价记录详情转换器 + *

+ * + * @author chenjiaju + * @since 2023/9/9 + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderPriceRecordDetailConverter { + + /** + * dtoList 2 modelList + * @param dtos dtoList + * @return modelList + */ + List dtoList2ModelList(List dtos); + + /** + * dto 2 model + * @param dto dto + * @return model + */ + TpOrderPriceRecordDetail dto2Model(TpOrderPriceRecordDetailDTO dto); + + /** + * model 2 DO + * @param model model + * @return DO + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(model.getBizData()))") + TpOrderPriceRecordDetailDO model2DO(TpOrderPriceRecordDetail model); + + /** + * modelList 2 DOList + * @param models modelList + * @return DOList + */ + List modelList2DOList(List models); + + /** + * do 2 model + * @param detailDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(detailDO.getBizData()))") + TpOrderPriceRecordDetail do2Model(TpOrderPriceRecordDetailDO detailDO); + + /** + * doList 2 modelList + * @param detailDOs doList + * @return modelList + */ + List doList2ModelList(List detailDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderReceivedConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderReceivedConverter.java new file mode 100644 index 0000000..f45c557 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderReceivedConverter.java @@ -0,0 +1,86 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderReceivedDO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedCreatedDTO; +import com.deepinnet.tptradecore.core.model.order.TpOrderReceived; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单变更转换器 + *

+ * + * @author xiehuaqiao + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderReceivedConverter { + + + /** + * TpOrderReceivedCreatedDTO to TpOrderReceiveDO + * @param tpOrderReceivedCreatedDTO model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderReceivedCreatedDTO.getBizData()))") + @Mapping(source = "receivedTime", target = "receivedTime", qualifiedByName = "convertLong2LocalDateTime") + TpOrderReceivedDO dto2DO(TpOrderReceivedCreatedDTO tpOrderReceivedCreatedDTO); + + /** + * TpOrderReceiveDO to TpOrderReceived + * @param tpOrderReceivedDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderReceivedDO.getBizData()))") + @Mapping(source = "receivedTime", target = "receivedTime", qualifiedByName = "convertLocalDateTime2Long") + TpOrderReceived do2Model(TpOrderReceivedDO tpOrderReceivedDO); + + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + @Named("convertLong2LocalDateTime") + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + @Named("convertLocalDateTime2Long") + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } + + + List do2ModelList(List tpOrderDispatchDOS); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRequirementUserConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRequirementUserConverter.java new file mode 100644 index 0000000..5379132 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRequirementUserConverter.java @@ -0,0 +1,74 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRequirementUserDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderRequirementUserVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRequirementUser; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单用车需求方转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderRequirementUserConverter { + + /** + * modelList 2 voList + * @param orderRequirementUsers modelList + * @return voList + */ + List modelList2VOList(List orderRequirementUsers); + + /** + * model 2 vo + * @param tpOrderRequirementUser model + * @return vo + */ + TpOrderRequirementUserVO model2VO(TpOrderRequirementUser tpOrderRequirementUser); + + /** + * model to do + * @param tpOrderRequirementUser model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderRequirementUser.getBizData()))") + TpOrderRequirementUserDO model2DO(TpOrderRequirementUser tpOrderRequirementUser); + + /** + * do to model + * @param tpOrderRequirementUserDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderRequirementUserDO.getBizData()))") + TpOrderRequirementUser do2Model(TpOrderRequirementUserDO tpOrderRequirementUserDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteConverter.java new file mode 100644 index 0000000..d3a349b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteConverter.java @@ -0,0 +1,89 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderRouteVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRoute; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 线路转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderRouteShuttleConverter.class +}) +public interface TpOrderRouteConverter { + + /** + * modelLst 2 voList + * @param tpOrderRoutes modelList + * @return voList + */ + List modelList2VOList(List tpOrderRoutes); + + /** + * model 2 vo + * @param tpOrderRoute model + * @return vo + */ + @Mapping(source = "tpOrderRoute.tpOrderRouteShuttle", target = "tpOrderRouteShuttle") + TpOrderRouteVO model2VO(TpOrderRoute tpOrderRoute); + + /** + * model to do + * @param tpOrderRoute model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderRoute.getBizData()))") + TpOrderRouteDO model2DO(TpOrderRoute tpOrderRoute); + + /** + * modelList to doList + * @param tpOrderRoutes modelList + * @return doList + */ + List modelList2DOList(List tpOrderRoutes); + + /** + * do to model + * @param tpOrderRouteDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderRouteDO.getBizData()))") + TpOrderRoute do2Model(TpOrderRouteDO tpOrderRouteDO); + + /** + * doList to modelList + * @param tpOrderRouteDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderRouteDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteShuttleConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteShuttleConverter.java new file mode 100644 index 0000000..6a575cc --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderRouteShuttleConverter.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteShuttleDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderRouteShuttleVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRouteShuttle; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + *

+ * 班次转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderRouteShuttleConverter { + + /** + * doList 2 modelList + * @param tpOrderRouteShuttleDO doList + * @return modelList + */ + List doList2ModelList(List tpOrderRouteShuttleDO); + + /** + * modelLst 2 voList + * @param tpOrderRouteShuttle modelList + * @return voList + */ + List modelList2VOList(List tpOrderRouteShuttle); + + /** + * model 2 vo + * @param tpOrderRouteShuttle model + * @return vo + */ + TpOrderRouteShuttleVO model2VO(TpOrderRouteShuttle tpOrderRouteShuttle); + + List modelList2DOList(List shuttles); + + /** + * model to do + * @param tpOrderRouteShuttle model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderRouteShuttle.getBizData()))") + TpOrderRouteShuttleDO model2DO(TpOrderRouteShuttle tpOrderRouteShuttle); + + /** + * do to model + * @param tpOrderRouteShuttleDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderRouteShuttleDO.getBizData()))") + TpOrderRouteShuttle do2Model(TpOrderRouteShuttleDO tpOrderRouteShuttleDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderServiceTargetConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderServiceTargetConverter.java new file mode 100644 index 0000000..1c919f9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderServiceTargetConverter.java @@ -0,0 +1,66 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderServiceTargetDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderTargetServiceVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderTargetService; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.Map; + +/** + *

+ * 服务对象DO model转换器 + *

+ * + * @author chenjiaju + * @since 2023/8/1 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderServiceTargetConverter { + + /** + * model 2 vo + * @param tpOrderTargetService model + * @return vo + */ + TpOrderTargetServiceVO model2VO(TpOrderTargetService tpOrderTargetService); + + /** + * model 2 do + * @param tpOrderTargetService model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderTargetService.getBizData()))") + TpOrderServiceTargetDO model2DO(TpOrderTargetService tpOrderTargetService); + + /** + * do 2 model + * @param tpOrderServiceTargetDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderServiceTargetDO.getBizData()))") + TpOrderTargetService do2Model(TpOrderServiceTargetDO tpOrderServiceTargetDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderSubjectItemConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderSubjectItemConverter.java new file mode 100644 index 0000000..eea94c9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderSubjectItemConverter.java @@ -0,0 +1,90 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderSubjectItemDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderSubjectItemElementVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderSubjectItemVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderItemElement; +import com.deepinnet.tptradecore.core.model.order.TpOrderSubjectItem; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单下单人转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderItemElementConverter.class, + TpOrderPassengerConverter.class +}) +public interface TpOrderSubjectItemConverter { + + /** + * modelList 2 voList + * @param tpOrderSubjectItems modelList + * @return voList + */ + List modelList2VOList(List tpOrderSubjectItems); + + /** + * model 2 vo + * @param tpOrderSubjectItem model + * @return vo + */ + @Mapping(source = "tpOrderSubjectItem.passenger", target = "passenger") + @Mapping(source = "tpOrderSubjectItem.orderItemElements", target = "orderItemElements") + TpOrderSubjectItemVO model2VO(TpOrderSubjectItem tpOrderSubjectItem); + + List modelList2DOList(List orderSubjectItems); + + /** + * model to do + * @param tpOrderSubjectItem model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderSubjectItem.getBizData()))") + TpOrderSubjectItemDO model2DO(TpOrderSubjectItem tpOrderSubjectItem); + + /** + * do to model + * @param tpOrderSubjectItemDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderSubjectItemDO.getBizData()))") + TpOrderSubjectItem do2Model(TpOrderSubjectItemDO tpOrderSubjectItemDO); + + /** + * doList to modelList + * @param tpOrderSubjectItemDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderSubjectItemDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTravelTripConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTravelTripConverter.java new file mode 100644 index 0000000..c9a2ea4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTravelTripConverter.java @@ -0,0 +1,104 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelTripDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderTravelTripVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderTravelTrip; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单用车需求方转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, uses = { + TpOrderTripPositionConverter.class +}) +public interface TpOrderTravelTripConverter { + + /** + * model 2 vo + * @param tpOrderTravelTrip model + * @return vo + */ + @Mapping(source = "tpOrderTravelTrip.tripPositions", target = "tripPositions") + TpOrderTravelTripVO model2VO(TpOrderTravelTrip tpOrderTravelTrip); + + /** + * modelList 2 voList + * @param tpOrderTravelTrip modelList + * @return voList + */ + List modelList2VOList(List tpOrderTravelTrip); + + /** + * model to do + * @param tpOrderTravelTrip model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderTravelTrip.getBizData()))") + TpOrderTravelTripDO model2DO(TpOrderTravelTrip tpOrderTravelTrip); + + List modelList2DOList(List orderTravelTrips); + + /** + * do to model + * @param tpOrderTravelTripDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderTravelTripDO.getBizData()))") + TpOrderTravelTrip do2Model(TpOrderTravelTripDO tpOrderTravelTripDO); + + /** + * doList to modelList + * @param tpOrderTravelTripDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderTravelTripDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + default LocalDateTime convertLong2LocalDateTime(Long time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.of(time); + } + + return null; + } + + default Long convertLocalDateTime2Long(LocalDateTime time) { + if (ObjectUtil.isNotNull(time)) { + return LocalDateTimeUtil.toEpochMilli(time); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripDispatchRecordConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripDispatchRecordConverter.java new file mode 100644 index 0000000..3ec260d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripDispatchRecordConverter.java @@ -0,0 +1,86 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelDispatchRecordDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderTravelDispatchRecordVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderTravelDispatchRecord; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 行程单派单记录转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderTripDispatchRecordConverter { + + /** + * modelList 2 voList + * @param tpOrderTravelDispatchRecords modelList + * @return voList + */ + List modelList2VOList(List tpOrderTravelDispatchRecords); + + /** + * model 2 vo + * @param tpOrderTravelDispatchRecord model + * @return vo + */ + TpOrderTravelDispatchRecordVO model2VO(TpOrderTravelDispatchRecord tpOrderTravelDispatchRecord); + + /** + * modelList 2 doList + * @param tpOrderTravelDispatchRecords modelList + * @return doList + */ + List modelList2DoList(List tpOrderTravelDispatchRecords); + + /** + * doList 2 modelList + * @param tpOrderTravelDispatchRecordDOs do list + * @return model list + */ + List doList2ModelList(List tpOrderTravelDispatchRecordDOs); + + /** + * model to do + * @param tpOrderTravelDispatchRecord model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderTravelDispatchRecord.getBizData()))") + TpOrderTravelDispatchRecordDO model2DO(TpOrderTravelDispatchRecord tpOrderTravelDispatchRecord); + + /** + * do to model + * @param tpOrderTravelDispatchRecordDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderTravelDispatchRecordDO.getBizData()))") + TpOrderTravelDispatchRecord do2Model(TpOrderTravelDispatchRecordDO tpOrderTravelDispatchRecordDO); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripPositionConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripPositionConverter.java new file mode 100644 index 0000000..88b4345 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpOrderTripPositionConverter.java @@ -0,0 +1,90 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTripPositionDO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderTripPositionVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPassenger; +import com.deepinnet.tptradecore.core.model.order.TpOrderTripPosition; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单元素转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpOrderTripPositionConverter { + + /** + * model 2 vo + * @param tpOrderTripPosition model + * @return vo + */ + TpOrderTripPositionVO model2VO(TpOrderTripPosition tpOrderTripPosition); + + /** + * modelList 2 voList + * @param tpOrderTripPositions modelList + * @return voList + */ + List modelList2VOList(List tpOrderTripPositions); + + /** + * model to do + * @param tpOrderTripPosition model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpOrderTripPosition.getBizData()))") + TpOrderTripPositionDO model2DO(TpOrderTripPosition tpOrderTripPosition); + + /** + * modelList to doList + * @param tpOrderTripPositions modelList + * @return doList + */ + List modelList2DOList(List tpOrderTripPositions); + + /** + * do to model + * @param tpOrderTripPositionDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpOrderTripPositionDO.getBizData()))") + TpOrderTripPosition do2Model(TpOrderTripPositionDO tpOrderTripPositionDO); + + /** + * doList to modelList + * @param tpOrderTripPositionDOs doList + * @return modelList + */ + List doList2ModelList(List tpOrderTripPositionDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserPassengerConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserPassengerConverter.java new file mode 100644 index 0000000..ee77b6a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserPassengerConverter.java @@ -0,0 +1,114 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserPassengerDO; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerDTO; +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerIdentityTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerTypeEnum; +import com.deepinnet.tptradecore.common.vo.order.TpUserPassengerVO; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import org.mapstruct.*; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 线路收集模型转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpUserPassengerConverter { + + /** + * dto to model + * @param tpUserPassengerDTO dto + * @return model + */ + @Mapping(source = "passengerName", target = "name") + TpUserPassenger dto2Model(TpUserPassengerDTO tpUserPassengerDTO); + + @Mapping(source = "name", target = "passengerName") + TpUserPassengerVO model2vo(TpUserPassenger passenger); + + /** + * modelList to voList + * @param passengerList modelList + * @return voList + */ + List modelList2voList(List passengerList); + + /** + * model to do + * @param tpUserPassenger model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpUserPassenger.getBizData()))") + TpUserPassengerDO model2DO(TpUserPassenger tpUserPassenger); + + /** + * modelList to doList + * @param tpUserPassengers model + * @return doList + */ + List modelList2DOList(List tpUserPassengers); + + /** + * do to model + * @param tpUserPassengerDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpUserPassengerDO.getBizData()))") + TpUserPassenger do2Model(TpUserPassengerDO tpUserPassengerDO); + + /** + * doList to modelList + * @param tpUserPassengerDOs doList + * @return modelList + */ + List doList2ModelList(List tpUserPassengerDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + default String convertPassengerIdentityTypeToString(TpUserPassengerIdentityTypeEnum typeEnum) { + if (ObjectUtil.isNull(typeEnum)) { + return null; + } + + return typeEnum.getIdentityCode(); + } + + default TpUserPassengerIdentityTypeEnum convertPassengerIdentityTypeToEnum(String identityCode) { + if (StrUtil.isEmpty(identityCode)) { + return null; + } + + TpUserPassengerIdentityTypeEnum identityTypeEnumByIdentityCode = TpUserPassengerIdentityTypeEnum.getIdentityTypeEnumByIdentityCode(identityCode); + + if (ObjectUtil.isNull(identityTypeEnumByIdentityCode)) { + return null; + } + + return identityTypeEnumByIdentityCode; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserRouteCollectionConverter.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserRouteCollectionConverter.java new file mode 100644 index 0000000..190cf78 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/order/TpUserRouteCollectionConverter.java @@ -0,0 +1,106 @@ +package com.deepinnet.tptradecore.common.dal.convert.order; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDiscountDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserRouteCollectionDO; +import com.deepinnet.tptradecore.common.dto.order.TpUserRouteCollectionDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserRouteCollectionQueryDTO; +import com.deepinnet.tptradecore.common.vo.order.TpUserRouteCollectionVO; +import com.deepinnet.tptradecore.core.model.order.TpOrderDiscount; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollectionCondition; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 线路收集模型转换器 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpUserRouteCollectionConverter { + + /** + * queryDTO 2 queryCondition + * @param dto queryDTO + * @return queryCondition + */ + TpUserRouteCollectionCondition queryDTO2queryCondition(TpUserRouteCollectionQueryDTO dto); + + /** + * modelList 2 voList + * @param routeList modelList + * @return voList + */ + List modelList2VOList(List routeList); + + /** + * model 2 vo + * @param model model + * @return vo + */ + TpUserRouteCollectionVO model2VO(TpUserRouteCollection model); + + /** + * dto 2 model + * @param dto dto + * @return model + */ + TpUserRouteCollection dto2Model(TpUserRouteCollectionDTO dto); + + /** + * model to do + * @param tpUserRouteCollection model + * @return do + */ + @Mapping(target = "bizData", expression = "java(convertBizData2String(tpUserRouteCollection.getBizData()))") + TpUserRouteCollectionDO model2DO(TpUserRouteCollection tpUserRouteCollection); + + /** + * modelList to doList + * @param tpUserRouteCollections model + * @return doList + */ + List modelList2DOList(List tpUserRouteCollections); + + /** + * do to model + * @param tpUserRouteCollectionDO do + * @return model + */ + @Mapping(target = "bizData", expression = "java(convertString2BizData(tpUserRouteCollectionDO.getBizData()))") + TpUserRouteCollection do2Model(TpUserRouteCollectionDO tpUserRouteCollectionDO); + + /** + * doList to modelList + * @param tpUserRouteCollectionDOs doList + * @return modelList + */ + List doList2ModelList(List tpUserRouteCollectionDOs); + + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + default Map convertString2BizData(String bizData) { + if (StrUtil.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/rule/TpBizRuleMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/rule/TpBizRuleMapStructConvert.java new file mode 100644 index 0000000..382211b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/rule/TpBizRuleMapStructConvert.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.dal.convert.rule; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.rule.TpBizRuleDO; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpBizRuleMapStructConvert { + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpBizRuleDO convert2DO(TpBizRule bizRule); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List bizRuleList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpBizRule convert2Domain(TpBizRuleDO bizRuleDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List bizRuleDOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/task/TpScheduleTaskMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/task/TpScheduleTaskMapStructConvert.java new file mode 100644 index 0000000..34eb3f1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/task/TpScheduleTaskMapStructConvert.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.dal.convert.task; + +import com.deepinnet.tptradecore.common.dal.dataobject.task.TpScheduleTaskDO; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import org.mapstruct.*; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpScheduleTaskMapStructConvert { + TpScheduleTaskDO convert2DO(TpScheduleTask scheduleTask); + + List convert2DOList(List bizRuleList); + + TpScheduleTask convert2Domain(TpScheduleTaskDO scheduleTaskDO); + + List convert2DomainList(List scheduleTaskDOs); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpBillMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpBillMapStructConvert.java new file mode 100644 index 0000000..36faf85 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpBillMapStructConvert.java @@ -0,0 +1,85 @@ +package com.deepinnet.tptradecore.common.dal.convert.trans; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpBillDO; +import com.deepinnet.tptradecore.common.dto.trans.TpPreparePayDTO; +import com.deepinnet.tptradecore.common.enums.TpBizTypeEnum; +import com.deepinnet.tptradecore.common.enums.trans.TpBillStatusEnum; +import com.deepinnet.tptradecore.core.model.trans.TpBill; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:10 + * @Description + */ +@Mapper +public interface TpBillMapStructConvert { + + TpBillMapStructConvert INSTANCE = Mappers.getMapper(TpBillMapStructConvert.class); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertMoney2String") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpBillDO convert2DO(TpBill tpBill); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertMoney2String") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List tpBills); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertString2Money") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpBill convert2Domain(TpBillDO billDO); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertString2Money") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List billDOs); + + default TpBill convertDTO2Domain(TpPreparePayDTO preparePayDTO, String billNo, String payOrderNo, String billType) { + return TpBill.builder() + .billNo(billNo) + .amount(preparePayDTO.getCreateDTO().getPaymentAmount()) + .orderNo(preparePayDTO.getCreateDTO().getBizNo()) + .payOrderNo(payOrderNo) + .status(TpBillStatusEnum.INIT.getCode()) + .bizType(TpBizTypeEnum.CUSTOM_BUS_PAY.getCode()) + .billType(billType) + .build(); + } + + @Named("convertMoney2String") + default String convertMoney2String(TpMoney deepinnetMoney) { + return deepinnetMoney == null ? null : deepinnetMoney.toString(); + } + + @Named("convertString2Money") + default TpMoney convertString2Money(String amount) { + if (StringUtils.isBlank(amount)) { + return null; + } + return new TpMoney(amount, TpMoney.ValueUnitEnum.YUAN); + } + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpChargeMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpChargeMapStructConvert.java new file mode 100644 index 0000000..6105361 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpChargeMapStructConvert.java @@ -0,0 +1,70 @@ +package com.deepinnet.tptradecore.common.dal.convert.trans; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpChargeDO; +import com.deepinnet.tptradecore.core.model.trans.TpCharge; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:10 + * @Description + */ +@Mapper +public interface TpChargeMapStructConvert { + + TpChargeMapStructConvert INSTANCE = Mappers.getMapper(TpChargeMapStructConvert.class); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertMoney2String") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpChargeDO convert2DO(TpCharge tpCharge); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertMoney2String") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List tpChargeList); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertString2Money") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpCharge convert2Domain(TpChargeDO tpChargeDO); + + @Mapping(source = "amount", target = "amount", qualifiedByName = "convertString2Money") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List tpChargeDOList); + + @Named("convertMoney2String") + default String convertMoney2String(TpMoney deepinnetMoney) { + return deepinnetMoney == null ? null : deepinnetMoney.toString(); + } + + @Named("convertString2Money") + default TpMoney convertString2Money(String amount) { + if (StringUtils.isBlank(amount)) { + return null; + } + return new TpMoney(amount, TpMoney.ValueUnitEnum.YUAN); + } + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpFinancialAccountMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpFinancialAccountMapStructConvert.java new file mode 100644 index 0000000..f9792f2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpFinancialAccountMapStructConvert.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dal.convert.trans; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.*; +import com.deepinnet.tptradecore.core.model.trans.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:10 + * @Description + */ +@Mapper +public interface TpFinancialAccountMapStructConvert { + + TpFinancialAccountMapStructConvert INSTANCE = Mappers.getMapper(TpFinancialAccountMapStructConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpFinancialAccountDO convert2DO(TpFinancialAccount financialAccount); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List financialAccountList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpFinancialAccount convert2Domain(TpFinancialAccountDO financialAccount); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List financialAccountDOList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpPayOrderMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpPayOrderMapStructConvert.java new file mode 100644 index 0000000..dfc721e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/trans/TpPayOrderMapStructConvert.java @@ -0,0 +1,433 @@ +package com.deepinnet.tptradecore.common.dal.convert.trans; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpPayOrderDO; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.TpBizTypeEnum; +import com.deepinnet.tptradecore.common.enums.trans.*; +import com.deepinnet.tptradecore.core.model.trans.TpBill; +import com.deepinnet.tptradecore.core.model.trans.TpCharge; +import com.deepinnet.tptradecore.core.model.trans.TpFinancialAccount; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 11:10 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpPayOrderMapStructConvert { + + @Mapping(source = "discountAmount", target = "discountAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "payAmount", target = "payAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpPayOrderDO convert2DO(TpPayOrder payOrder); + + @Mapping(source = "discountAmount", target = "discountAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "payAmount", target = "payAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List payOrders); + + @Mapping(source = "discountAmount", target = "discountAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "payAmount", target = "payAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpPayOrder convert2Domain(TpPayOrderDO payOrderDO); + + @Mapping(source = "discountAmount", target = "discountAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertString2Money") + @Mapping(source = "payAmount", target = "payAmount", qualifiedByName = "convertString2Money") + List convert2DomainList(List payOrderDOs); + + @Mapping(source = "discountAmount", target = "discountAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "chargeAmount", target = "chargeAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "payAmount", target = "payAmount", qualifiedByName = "convertMoney2String") + @Mapping(source = "payOrder.tpBill.amount", target = "tpBill.amount", qualifiedByName = "convertMoney2String") + TpPayOrderDTO convert2DTO(TpPayOrder payOrder); + + List convert2DTOList(List payOrders); + + default TpPayOrder convertPrepayDTO2Domain(TpPreparePayDTO preparePayDTO, String payOrderNo, + String billNo, String orgCode, Long payTimeout, String tenantId) { + String bizType = preparePayDTO.getCreateDTO().getBizType(); + String orderNo = preparePayDTO.getCreateDTO().getOrderNo(); + + TpPayOrderCreateDTO createDTO = preparePayDTO.getCreateDTO(); + TpPayOrder payOrder = TpPayOrder.builder() + .payOrderNo(payOrderNo) + .bizNo(createDTO.getBizNo()) + .orderNo(orderNo) + .bizType(bizType) + .chargeAmount(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)) + .chargeRequired(false) + .discountAmount(createDTO.getDiscountAmount()) + .payAmount(createDTO.getPaymentAmount()) + .payType(createDTO.getPayType()) + .payScene(createDTO.getPayScene()) + .payTitle(createDTO.getPayTitle()) + .status(TpPayOrderStatusEnum.INIT.getCode()) + .payTimeout(payTimeout) + .tenantId(tenantId) + .build(); + + TpBill tpBill = TpBill.builder() + .billNo(billNo) + .amount(createDTO.getPaymentAmount()) + .orderNo(orderNo) + .payOrderNo(payOrderNo) + .status(TpBillStatusEnum.INIT.getCode()) + .bizType(bizType) + .billType(TpBillTypeEnum.PAY.getCode()) + .tenantId(tenantId) + .build(); + + // 支出账号,记录用户编号和用户名称 + TpFinancialAccount payerAccount = new TpFinancialAccount(); + payerAccount.setBizNo(payOrderNo); + payerAccount.setBizType(bizType); + payerAccount.setAccountType(TpFinancialAccountTypeEnum.PAYER.getCode()); + payerAccount.setChannel(preparePayDTO.getCreateDTO().getPayType()); + payerAccount.setTenantId(preparePayDTO.getTenantId()); + + // 收入账号 + TpFinancialAccount payeeAccount = TpFinancialAccount.builder() + .bizNo(payOrderNo) + .bizType(bizType) + .accountType(TpFinancialAccountTypeEnum.PAYEE.getCode()) + .tenantId(tenantId) + .build(); + if (StringUtils.equals(preparePayDTO.getCreateDTO().getPayScene(), TpPaySceneEnum.ALI_MINI_PROGRAM.getCode()) + || StringUtils.equals(preparePayDTO.getCreateDTO().getPayScene(), TpPaySceneEnum.WECHAT_MINI_PROGRAM.getCode()) + || StringUtils.equals(preparePayDTO.getCreateDTO().getPayScene(), TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT.getCode())) { + payeeAccount.setAccount(preparePayDTO.getAppId()); + payerAccount.setAccount(preparePayDTO.getBuyerId()); + payerAccount.setAccountName(preparePayDTO.getBuyerId()); + } else { + payeeAccount.setAccount(preparePayDTO.getCreateDTO().getOrgCode()); + payerAccount.setAccount(preparePayDTO.getCreateDTO().getUserInfoDTO().getUserNo()); + payerAccount.setAccountName(preparePayDTO.getCreateDTO().getUserInfoDTO().getUserName()); + } + + payeeAccount.setAccountName(tenantId); + + TpPayTypeEnum payTypeEnum = TpPayTypeEnum.getByCode(preparePayDTO.getCreateDTO().getPayType()); + if (payTypeEnum == TpPayTypeEnum.WECHAT_PAY) { + payerAccount.setChannel(TpChannelEnum.WECHAT.getCode()); + payeeAccount.setChannel(TpChannelEnum.WECHAT.getCode()); + } else if (payTypeEnum == TpPayTypeEnum.ALIPAY) { + payerAccount.setChannel(TpChannelEnum.ALIPAY.getCode()); + payeeAccount.setChannel(TpChannelEnum.ALIPAY.getCode()); + } else if (payTypeEnum == TpPayTypeEnum.UNION_PAY) { + payerAccount.setChannel(TpChannelEnum.BANK.getCode()); + payeeAccount.setChannel(TpChannelEnum.BANK.getCode()); + } else { + payerAccount.setChannel(TpChannelEnum.OTHER.getCode()); + } + + payOrder.setTpBill(tpBill); + payOrder.setPayerAccount(payerAccount); + payOrder.setPayeeAccount(payeeAccount); + return payOrder; + } + + default TpPayOrder buildOfflinePayOrder(TpPaidOfflineDTO paidOfflineDTO, String payOrderNo, + String billNo, Long payTimeout, String tenantId) { + String bizType = paidOfflineDTO.getBizType(); + String orderNo = paidOfflineDTO.getOrderNo(); + TpMoney payAmount = new TpMoney(paidOfflineDTO.getPayAmount(), TpMoney.ValueUnitEnum.YUAN); + TpPayOrder payOrder = TpPayOrder.builder() + .payOrderNo(payOrderNo) + .bizNo(paidOfflineDTO.getOrderNo() + paidOfflineDTO.getBizType()) + .orderNo(orderNo) + .bizType(bizType) + .chargeAmount(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)) + .chargeRequired(false) + .discountAmount(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)) + .payAmount(payAmount) + .payType(TpPayTypeEnum.OFFLINE_PAY.getCode()) + .payScene(TpPaySceneEnum.OFFLINE.getCode()) + .payTitle("业务员操作线下完成支付") + .status(TpPayOrderStatusEnum.PAID.getCode()) + .payTime(System.currentTimeMillis()) + .paySequence(0L) + .payTimeout(payTimeout) + .tenantId(tenantId) + .build(); + + TpBill tpBill = TpBill.builder() + .billNo(billNo) + .amount(payAmount) + .orderNo(orderNo) + .payOrderNo(payOrderNo) + .status(TpBillStatusEnum.PAID.getCode()) + .bizType(bizType) + .billType(TpBillTypeEnum.PAY.getCode()) + .tenantId(tenantId) + .build(); + + // 支出账号,记录用户编号和用户名称 + TpFinancialAccount payerAccount = new TpFinancialAccount(); + payerAccount.setBizNo(payOrderNo); + payerAccount.setBizType(bizType); + payerAccount.setAccountType(TpFinancialAccountTypeEnum.PAYER.getCode()); + payerAccount.setChannel(TpChannelEnum.OFFLINE.getCode()); + payerAccount.setTenantId(paidOfflineDTO.getTenantId()); + payerAccount.setAccount(paidOfflineDTO.getPlacerNo()); + payerAccount.setAccountName(paidOfflineDTO.getPlacerName()); + payerAccount.setChannel(TpChannelEnum.OFFLINE.getCode()); + + // 收入账号 + TpFinancialAccount payeeAccount = TpFinancialAccount.builder() + .bizNo(payOrderNo) + .bizType(bizType) + .accountType(TpFinancialAccountTypeEnum.PAYEE.getCode()) + .tenantId(tenantId) + .account(paidOfflineDTO.getOperatorNo()) + .accountName(StringUtils.isBlank(paidOfflineDTO.getOperatorName()) ? paidOfflineDTO.getOperatorNo() : paidOfflineDTO.getOperatorName()) + .channel(TpChannelEnum.OFFLINE.getCode()) + .build(); + + payOrder.setTpBill(tpBill); + payOrder.setPayerAccount(payerAccount); + payOrder.setPayeeAccount(payeeAccount); + return payOrder; + } + + default TpPayOrder buildRefundPayOrder(TpPayOrder paidPayOrder, TpMoney refundAmount, TpMoney chargeAmount, + String refundBizNo, String refundBizType, String payOrderNo, + String billNo, String chargeNo, String orgCode) { + TpMoney zeroMoney = new TpMoney("0", TpMoney.ValueUnitEnum.YUAN); + boolean chargeRequired = TpMoney.CompareResult.LESS_THAN == zeroMoney.compare(chargeAmount); + + TpPayOrder refundPayOrder = TpPayOrder.builder() + .payOrderNo(payOrderNo) + .bizNo(refundBizNo) + .orderNo(paidPayOrder.getOrderNo()) + .bizType(refundBizType) + .discountAmount(zeroMoney) + .chargeAmount(chargeAmount) + .payAmount(refundAmount) + .payType(paidPayOrder.getPayType()) + .payScene(paidPayOrder.getPayScene()) + .status(TpPayOrderStatusEnum.REFUNDING.getCode()) + .chargeRequired(chargeRequired) + .tenantId(paidPayOrder.getTenantId()) + .paySequence(0L) + .build(); + + TpBill tpBill = TpBill.builder() + .billNo(billNo) + .amount(refundAmount) + .orderNo(paidPayOrder.getOrderNo()) + .payOrderNo(payOrderNo) + .status(TpBillStatusEnum.INIT.getCode()) + .bizType(refundBizType) + .billType(TpBillTypeEnum.REFUND.getCode()) + .tenantId(paidPayOrder.getTenantId()) + .build(); + refundPayOrder.setTpBill(tpBill); + + if (chargeRequired) { + TpCharge tpCharge = new TpCharge(); + tpCharge.setChargeNo(chargeNo); + tpCharge.setPayOrderNo(payOrderNo); + tpCharge.setBizType(refundBizType); + tpCharge.setChargeType(TpChargeTypeEnum.COMMISSION.getCode()); + tpCharge.setAmount(chargeAmount); + long chargeAmountCent = chargeAmount.getCent(); + long payAmountCent = paidPayOrder.getPayAmount().getCent(); + BigDecimal ratio = new BigDecimal(chargeAmountCent) + .divide(new BigDecimal(payAmountCent), 2, RoundingMode.DOWN); + tpCharge.setRatio(ratio.toPlainString()); + tpCharge.setChargingEntityId(orgCode); + tpCharge.setChargingEntityType(TpChargingEntityTypeEnum.TRANSPORT_COMPANY.getCode()); + tpCharge.setStatus(TpChargeStatusEnum.INIT.getCode()); + tpCharge.setTenantId(paidPayOrder.getTenantId()); + refundPayOrder.setTpCharge(tpCharge); + } + + // 收款人 + TpFinancialAccount refundPayeeAccount = BeanUtil.copyProperties(paidPayOrder.getPayerAccount(), TpFinancialAccount.class); + refundPayeeAccount.setBizNo(payOrderNo); + refundPayeeAccount.setBizType(refundBizType); + refundPayeeAccount.setAccountType(TpFinancialAccountTypeEnum.PAYEE.getCode()); + + // 付款人 + TpFinancialAccount refundPayerAccount = BeanUtil.copyProperties(paidPayOrder.getPayeeAccount(), TpFinancialAccount.class); + refundPayerAccount.setBizNo(payOrderNo); + refundPayerAccount.setBizType(refundBizType); + refundPayerAccount.setAccountType(TpFinancialAccountTypeEnum.PAYER.getCode()); + + refundPayOrder.setPayeeAccount(refundPayeeAccount); + refundPayOrder.setPayerAccount(refundPayerAccount); + return refundPayOrder; + } + + default TpPayOrder buildReschedulePayOrder(TpReschedulePaidSuccessDTO paidSuccessDTO, TpPayOrder originalPayOrder, + String payOrderNo, String billNo, Long payTimeout, String tenantId) { + String bizType = TpBizTypeEnum.RESCHEDULE_PAY.getCode(); + String orderNo = paidSuccessDTO.getOrderNo(); + TpMoney payAmount = new TpMoney(paidSuccessDTO.getPayAmount(), TpMoney.ValueUnitEnum.YUAN); + TpPayOrder payOrder = TpPayOrder.builder() + .payOrderNo(payOrderNo) + .bizNo(orderNo + TpBizTypeEnum.CUSTOM_BUS_PAY.getCode()) + .orderNo(orderNo) + .bizType(bizType) + .chargeAmount(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)) + .chargeRequired(false) + .discountAmount(new TpMoney("0", TpMoney.ValueUnitEnum.YUAN)) + .payAmount(payAmount) + .payType(originalPayOrder.getPayType()) + .payScene(originalPayOrder.getPayScene()) + .payTitle("改签单无需付款") + .status(TpPayOrderStatusEnum.PAID.getCode()) + .payTime(System.currentTimeMillis()) + .paySequence(0L) + .payTimeout(payTimeout) + .outPayFlowId(originalPayOrder.getOutPayFlowId()) + .tenantId(tenantId) + .build(); + + TpBill tpBill = TpBill.builder() + .billNo(billNo) + .amount(payAmount) + .orderNo(orderNo) + .payOrderNo(payOrderNo) + .status(TpBillStatusEnum.PAID.getCode()) + .bizType(bizType) + .billType(TpBillTypeEnum.PAY.getCode()) + .tenantId(tenantId) + .build(); + + // 支出账号,记录用户编号和用户名称 + TpFinancialAccount payerAccount = originalPayOrder.getPayerAccount(); + payerAccount.setBizNo(payOrderNo); + payerAccount.setBizType(bizType); + + // 收入账号 + TpFinancialAccount payeeAccount = originalPayOrder.getPayeeAccount(); + payeeAccount.setBizNo(payOrderNo); + payeeAccount.setBizType(bizType); + + payOrder.setTpBill(tpBill); + payOrder.setPayerAccount(payerAccount); + payOrder.setPayeeAccount(payeeAccount); + return payOrder; + } + + default TpPayOrder buildRefundSuccessPayOrder(TpPayOrder paidPayOrder, TpMoney refundAmount, TpMoney chargeAmount, + String refundBizNo, String refundBizType, String payOrderNo, + String billNo, String chargeNo, String orgCode) { + TpMoney zeroMoney = new TpMoney("0", TpMoney.ValueUnitEnum.YUAN); + boolean chargeRequired = TpMoney.CompareResult.LESS_THAN == zeroMoney.compare(chargeAmount); + + TpPayOrder refundPayOrder = TpPayOrder.builder() + .payOrderNo(payOrderNo) + .bizNo(refundBizNo) + .orderNo(paidPayOrder.getOrderNo()) + .bizType(refundBizType) + .discountAmount(zeroMoney) + .chargeAmount(chargeAmount) + .payAmount(refundAmount) + .payType(paidPayOrder.getPayType()) + .payScene(paidPayOrder.getPayScene()) + .status(TpPayOrderStatusEnum.REFUND.getCode()) + .payTime(System.currentTimeMillis()) + .chargeRequired(chargeRequired) + .tenantId(paidPayOrder.getTenantId()) + .paySequence(0L) + .build(); + + TpBill tpBill = TpBill.builder() + .billNo(billNo) + .amount(refundAmount) + .orderNo(paidPayOrder.getOrderNo()) + .payOrderNo(payOrderNo) + .status(TpBillStatusEnum.REFUND.getCode()) + .bizType(refundBizType) + .billType(TpBillTypeEnum.REFUND.getCode()) + .tenantId(paidPayOrder.getTenantId()) + .build(); + refundPayOrder.setTpBill(tpBill); + + if (chargeRequired) { + TpCharge tpCharge = new TpCharge(); + tpCharge.setChargeNo(chargeNo); + tpCharge.setPayOrderNo(payOrderNo); + tpCharge.setBizType(refundBizType); + tpCharge.setChargeType(TpChargeTypeEnum.COMMISSION.getCode()); + tpCharge.setAmount(chargeAmount); + long chargeAmountCent = chargeAmount.getCent(); + long payAmountCent = paidPayOrder.getPayAmount().getCent(); + BigDecimal ratio = new BigDecimal(chargeAmountCent) + .divide(new BigDecimal(payAmountCent), 2, RoundingMode.DOWN); + tpCharge.setRatio(ratio.toPlainString()); + tpCharge.setChargingEntityId(orgCode); + tpCharge.setChargingEntityType(TpChargingEntityTypeEnum.TRANSPORT_COMPANY.getCode()); + tpCharge.setStatus(TpChargeStatusEnum.REFUND.getCode()); + tpCharge.setTenantId(paidPayOrder.getTenantId()); + refundPayOrder.setTpCharge(tpCharge); + } + + // 收款人 + TpFinancialAccount refundPayeeAccount = BeanUtil.copyProperties(paidPayOrder.getPayerAccount(), TpFinancialAccount.class); + refundPayeeAccount.setBizNo(payOrderNo); + refundPayeeAccount.setBizType(refundBizType); + refundPayeeAccount.setAccountType(TpFinancialAccountTypeEnum.PAYEE.getCode()); + + // 付款人 + TpFinancialAccount refundPayerAccount = BeanUtil.copyProperties(paidPayOrder.getPayeeAccount(), TpFinancialAccount.class); + refundPayerAccount.setBizNo(payOrderNo); + refundPayerAccount.setBizType(refundBizType); + refundPayerAccount.setAccountType(TpFinancialAccountTypeEnum.PAYER.getCode()); + + refundPayOrder.setPayeeAccount(refundPayeeAccount); + refundPayOrder.setPayerAccount(refundPayerAccount); + return refundPayOrder; + } + + @Named("convertMoney2String") + default String convertMoney2String(TpMoney deepinnetMoney) { + return deepinnetMoney == null ? null : deepinnetMoney.toString(); + } + + @Named("convertString2Money") + default TpMoney convertString2Money(String amount) { + if (StringUtils.isBlank(amount)) { + return null; + } + return new TpMoney(amount, TpMoney.ValueUnitEnum.YUAN); + } + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherInspectionRecordMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherInspectionRecordMapStructConvert.java new file mode 100644 index 0000000..c79856c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherInspectionRecordMapStructConvert.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dal.convert.voucher; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.core.model.voucher.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper +public interface TpVoucherInspectionRecordMapStructConvert { + + TpVoucherInspectionRecordMapStructConvert INSTANCE = Mappers.getMapper(TpVoucherInspectionRecordMapStructConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpVoucherInspectionRecordDO convert2DO(TpVoucherInspectionRecord inspectionRecord); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List inspectionRecordList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpVoucherInspectionRecord convert2Domain(TpVoucherInspectionRecordDO inspectionRecordDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List inspectionRecordDOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherMapStructConvert.java new file mode 100644 index 0000000..40d03cd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherMapStructConvert.java @@ -0,0 +1,84 @@ +package com.deepinnet.tptradecore.common.dal.convert.voucher; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherDO; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import com.deepinnet.tptradecore.core.model.voucher.*; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.Named; + +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface TpVoucherMapStructConvert { + Integer ZERO = 0; + + Integer ONE = 1; + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + @Mapping(source = "validationTypes", target = "validationType", qualifiedByName = "convertList2ValidationType") + TpVoucherDO convert2DO(TpVoucher tpVoucher); + + List convert2DOList(List voucherList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + @Mapping(source = "validationType", target = "validationTypes", qualifiedByName = "convertValidationType2List") + TpVoucher convert2Domain(TpVoucherDO voucherDO); + + List convert2DomainList(List voucherDOs); + + TpVoucherDTO convert2DTO(TpVoucher voucher); + + List convert2DTOList(List vouchers); + + TpBizRule convert2BizRule(TpBizRuleDTO bizRuleDTO); + + List convert2BizRuleList(List bizRuleDTOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + @Named("convertValidationType2List") + default List convertValidationType2List(String validationType) { + List validationTypes = JSONUtil.toList(validationType, String.class); + return validationTypes; + } + + @Named("convertList2ValidationType") + default String convertList2ValidationType(List validationTypes) { + return JSONUtil.toJsonStr(validationTypes); + } + + TpVouchPassengerListDTO passenger2DTO(TpPassengerList tpPassengerList); + + List passenger2DTOList(List voucherPassengerList); + + TpVoucherVerificationRecordDTO convert2VoucherVerificationRecordDTO(TpVoucherVerificationRecord record); + + List convert2VoucherVerificationRecordDTOList(List records); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherPassengerMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherPassengerMapStructConvert.java new file mode 100644 index 0000000..23ca8f5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherPassengerMapStructConvert.java @@ -0,0 +1,67 @@ +package com.deepinnet.tptradecore.common.dal.convert.voucher; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpPassengerListDO; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherPassengerDO; +import com.deepinnet.tptradecore.common.dto.contract.TpRefundPassengerDTO; +import com.deepinnet.tptradecore.common.dto.order.TpPassengerDTO; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherPassengerDTO; +import com.deepinnet.tptradecore.core.model.voucher.TpPassengerList; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherPassenger; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper +public interface TpVoucherPassengerMapStructConvert { + + TpVoucherPassengerMapStructConvert INSTANCE = Mappers.getMapper(TpVoucherPassengerMapStructConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpVoucherPassengerDO convert2DO(TpVoucherPassenger passenger); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List passengerList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpVoucherPassenger convert2Domain(TpVoucherPassengerDO passengerDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List passengerDOList); + + TpRefundPassengerDTO convert2RefundPassengerDTO(TpVoucherPassengerDTO passengerDTO); + + TpVoucherPassengerDTO convert2VoucherPassengerDTO(TpVoucherPassenger passenger); + + List convert2RefundPassengerDTOs(List passengerDTOs); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + List do2modelList(List tpPassengerListDOS); + + TpPassengerList do2model(TpPassengerListDO tpPassengerListDO); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherVerificationMapStructConvert.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherVerificationMapStructConvert.java new file mode 100644 index 0000000..b2d855b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/convert/voucher/TpVoucherVerificationMapStructConvert.java @@ -0,0 +1,83 @@ +package com.deepinnet.tptradecore.common.dal.convert.voucher; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherVerificationRecordDO; +import com.deepinnet.tptradecore.core.model.voucher.*; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.mapstruct.*; +import org.mapstruct.factory.Mappers; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 11:03 + * @Description + */ +@Mapper +public interface TpVoucherVerificationMapStructConvert { + + TpVoucherVerificationMapStructConvert INSTANCE = Mappers.getMapper(TpVoucherVerificationMapStructConvert.class); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + TpVoucherVerificationRecordDO convert2DO(TpVoucherVerificationRecord verificationRecord); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertBizData2String") + List convert2DOList(List verificationRecordList); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + TpVoucherVerificationRecord convert2Domain(TpVoucherVerificationRecordDO verificationRecordDO); + + @Mapping(source = "bizData", target = "bizData", qualifiedByName = "convertString2BizData") + List convert2DomainList(List verificationRecordDOList); + + @Named("convertBizData2String") + default String convertBizData2String(Map bizData) { + if (MapUtil.isNotEmpty(bizData)) { + return JSONUtil.toJsonStr(bizData); + } + return null; + } + + @Named("convertString2BizData") + default Map convertString2BizData(String bizData) { + if (StringUtils.isNotEmpty(bizData)) { + return JSONUtil.toBean(bizData, Map.class); + } + + return null; + } + + default TpVoucherVerificationRecord buildVerificationRecord(TpVoucher tpVoucher, Long verificationTime, String result, String validationType, Integer redemptionCount) { + TpVoucherVerificationRecord verificationRecord = new TpVoucherVerificationRecord(); + verificationRecord.setVoucherNo(tpVoucher.getVoucherNo()); + verificationRecord.setUserNo(tpVoucher.getUserNo()); + verificationRecord.setVerificationTime(verificationTime); + verificationRecord.setResult(result); + verificationRecord.setReason(null); + verificationRecord.setValidationType(validationType); + verificationRecord.setTenantId(tpVoucher.getTenantId()); + verificationRecord.setRedemptionCount(redemptionCount); + return verificationRecord; + } + + default List batchBuildVerificationRecord(List voucherNos, String userNo, String tenantId, Long verificationTime, String result, String validationType, Integer redemptionCount) { + List verificationRecordList = Lists.newArrayList(); + voucherNos.forEach(voucherNo -> { + TpVoucherVerificationRecordDO verificationRecord = new TpVoucherVerificationRecordDO(); + verificationRecord.setVoucherNo(voucherNo); + verificationRecord.setUserNo(userNo); + verificationRecord.setVerificationTime(verificationTime); + verificationRecord.setResult(result); + verificationRecord.setReason(null); + verificationRecord.setValidationType(validationType); + verificationRecord.setTenantId(tenantId); + verificationRecord.setRedemptionCount(redemptionCount); + verificationRecordList.add(verificationRecord); + }); + + return verificationRecordList; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/audit/TpAuditDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/audit/TpAuditDao.java new file mode 100644 index 0000000..33d90a1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/audit/TpAuditDao.java @@ -0,0 +1,30 @@ +package com.deepinnet.tptradecore.common.dal.dao.audit; + +import com.deepinnet.tptradecore.common.dal.dataobject.audit.TpAuditDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDO; +import com.deepinnet.tptradecore.common.dto.audit.TpOrderAuditListQueryDTO; +import com.deepinnet.tptradecore.core.model.order.TpOrderQueryList; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 审核单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpAuditDao extends BaseMapper { + + /** + * 查询审核单表 + * @param tpOrderAuditListQueryDTO 查询条件 + * @return 订单数据 + */ + List listOrderAudit(@Param("queryCondition") TpOrderAuditListQueryDTO tpOrderAuditListQueryDTO); + + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplicantDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplicantDao.java new file mode 100644 index 0000000..6f061ff --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplicantDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplicantDO; + +/** + *

+ * 退票申请单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundApplicantDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplyOrderDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplyOrderDao.java new file mode 100644 index 0000000..0365540 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundApplyOrderDao.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplyOrderDO; +import com.deepinnet.tptradecore.common.dto.contract.TpPageQueryRefundApplyOrderDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 退票申请单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundApplyOrderDao extends BaseMapper { + + /** + * 查询退票申请单列表 + * + * @param queryCondition 查询条件 + * @return 退票申请单数据 + */ + List searchApplyOrders(@Param("queryCondition") TpPageQueryRefundApplyOrderDTO queryCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundPassengerDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundPassengerDao.java new file mode 100644 index 0000000..05c0a7c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundPassengerDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundPassengerDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 退款申请单关联的乘客信息 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundPassengerDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRequirementUserDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRequirementUserDao.java new file mode 100644 index 0000000..550e8c6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRequirementUserDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRequirementUserDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 退款申请单关联的交通需求方(用车方) Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +public interface TpRefundRequirementUserDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteDao.java new file mode 100644 index 0000000..6facb4e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteDO; + +/** + *

+ * 线路 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundRouteDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteScheduleDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteScheduleDao.java new file mode 100644 index 0000000..dbed696 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundRouteScheduleDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteShuttleDO; + +/** + *

+ * 班次 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundRouteScheduleDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemDao.java new file mode 100644 index 0000000..76a2ab8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundSubjectItemDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 退票标的项 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundSubjectItemDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemElementDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemElementDao.java new file mode 100644 index 0000000..ad32441 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundSubjectItemElementDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundSubjectItemElementDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 退票标的项要素 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundSubjectItemElementDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundVoucherRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundVoucherRecordDao.java new file mode 100644 index 0000000..1939483 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/contract/TpRefundVoucherRecordDao.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.dal.dao.contract; + +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundVoucherRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author amos + * @description 针对表【tp_refund_voucher_record(退票失效凭证记录)】的数据库操作Mapper + * @createDate 2023-10-20 10:36:54 + */ +public interface TpRefundVoucherRecordDao extends BaseMapper { + +} + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderAuditDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderAuditDao.java new file mode 100644 index 0000000..396983f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderAuditDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderAuditDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderAuditDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderBalanceDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderBalanceDao.java new file mode 100644 index 0000000..2472868 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderBalanceDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderBalanceDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderBalanceDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderCarpoolRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderCarpoolRecordDao.java new file mode 100644 index 0000000..ab3a956 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderCarpoolRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderCarpoolRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author juju + * @since 2024-05-20 + */ +public interface TpOrderCarpoolRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeApplyDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeApplyDao.java new file mode 100644 index 0000000..0980f12 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeApplyDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangeApplyDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemDao.java new file mode 100644 index 0000000..12ea89c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangeItemDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemFactorDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemFactorDao.java new file mode 100644 index 0000000..a703c84 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangeItemFactorDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemFactorDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangeItemFactorDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangePriceRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangePriceRecordDao.java new file mode 100644 index 0000000..24b80bf --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChangePriceRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangePriceRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangePriceRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChargeRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChargeRecordDao.java new file mode 100644 index 0000000..7a67f23 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderChargeRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChargeRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 费用信息 Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-17 + */ +public interface TpOrderChargeRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDao.java new file mode 100644 index 0000000..d30b88d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDao.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.core.model.order.TpOrderQueryList; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 订单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpOrderDao extends BaseMapper { + + /** + * 查询订单列表 + * @param tpOrderQueryList 查询条件 + * @return 订单数据 + */ + List queryOrderList(@Param("queryCondition") TpOrderQueryList tpOrderQueryList); + + /** + * 根据线路编号查询未核销的订单数量 + * @param routeNo 线路编号 + * @param tenantId 租户ID + * @return 未核销订单数量 + */ + int queryUnverifiedOrderByRouteNo(@Param("routeNo") String routeNo, @Param("tenantId") String tenantId); + + /** + * 根据线路班次编号查询未核销的订单数量 + * @param routeNo 线路编号 + * @param shuttleNo 班次编号 + * @param tenantId 租户ID + * @return 未核销订单数量 + */ + int queryUnverifiedOrderByRouteNoAndShuttleNo(@Param("routeNo") String routeNo, @Param("shuttleNo") String shuttleNo, @Param("tenantId") String tenantId); + + /** + * C端预约包车列表 + * @param tpOrderQueryList 列表查询入参 + * @return 列表数据 + */ + List queryCharterBusOrderListToC(@Param("queryCondition") TpOrderQueryList tpOrderQueryList); + + /** + * B端预约包车列表 + * @param tpOrderQueryList 列表查询入参 + * @return 列表数据 + */ + List queryCharterBusOrderListToB(@Param("queryCondition") TpOrderQueryList tpOrderQueryList); + + /** + * 批量查询订单列表 + * @param originalOrderNos 原始订单编号 + * @param tenantId 租户ID + * @return 订单列表 + */ + List batchQueryOrderList(@Param("originalOrderNos") List originalOrderNos, @Param("tenantId") String tenantId); + + List batchQuery(@Param("startCount") long startCount, @Param("batch") int batch); + + /** + * 查询订单数量 + * @param tpOrderQueryList 查询条件 + * @return 数量 + */ + Long queryCustomBusOrderCount(@Param("queryCondition") TpOrderQueryList tpOrderQueryList); + + List queryPadCarpoolOrderList(@Param("queryCondition") TpOrderQueryList tpOrderQueryList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDepositDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDepositDao.java new file mode 100644 index 0000000..7b34764 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDepositDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDepositDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderDepositDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDiscountDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDiscountDao.java new file mode 100644 index 0000000..fde4675 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDiscountDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDiscountDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 优惠信息 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderDiscountDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchDao.java new file mode 100644 index 0000000..4230071 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderDispatchDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchFleetDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchFleetDao.java new file mode 100644 index 0000000..bff5402 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchFleetDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchFleetDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 订单分配单车队 Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-23 + */ +public interface TpOrderDispatchFleetDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchJoinFleetDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchJoinFleetDao.java new file mode 100644 index 0000000..013f313 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDispatchJoinFleetDao.java @@ -0,0 +1,12 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchJoinFleetDO; + +/** + * Description: + * Date: 2024/6/3 + * Author: lijunheng + */ +public interface TpOrderDispatchJoinFleetDao extends BaseMapper { +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDriverInfoDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDriverInfoDao.java new file mode 100644 index 0000000..1d7c5a8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderDriverInfoDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDriverInfoDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 司机信息 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderDriverInfoDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderElementDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderElementDao.java new file mode 100644 index 0000000..031b879 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderElementDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderElementDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderElementDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderInvoiceDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderInvoiceDao.java new file mode 100644 index 0000000..8039202 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderInvoiceDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderInvoiceDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-29 + */ +public interface TpOrderInvoiceDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderItemElementDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderItemElementDao.java new file mode 100644 index 0000000..38d0fed --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderItemElementDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderItemElementDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderItemElementDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerDao.java new file mode 100644 index 0000000..5ede046 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 乘客 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPassengerDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerTripRelationDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerTripRelationDao.java new file mode 100644 index 0000000..877e813 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPassengerTripRelationDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerTripRelationDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPassengerTripRelationDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPlacerDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPlacerDao.java new file mode 100644 index 0000000..41fbbd6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPlacerDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPlacerDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 下单人 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPlacerDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDao.java new file mode 100644 index 0000000..8791e51 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 计价记录 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPriceRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDetailDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDetailDao.java new file mode 100644 index 0000000..239e727 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderPriceRecordDetailDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDetailDO; + +/** + *

+ * 计价记录详情 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPriceRecordDetailDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderReceiveDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderReceiveDao.java new file mode 100644 index 0000000..364e8f6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderReceiveDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderReceivedDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderReceiveDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRequirementUserDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRequirementUserDao.java new file mode 100644 index 0000000..2317aea --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRequirementUserDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRequirementUserDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 需求方 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderRequirementUserDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRescheduleRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRescheduleRecordDao.java new file mode 100644 index 0000000..7602567 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRescheduleRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRescheduleRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2024-07-15 + */ +public interface TpOrderRescheduleRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteDao.java new file mode 100644 index 0000000..1652aa5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteDO; + +/** + *

+ * 线路 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderRouteDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteShuttleDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteShuttleDao.java new file mode 100644 index 0000000..6c3235d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderRouteShuttleDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteShuttleDO; + +/** + *

+ * 班次 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderRouteShuttleDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderServiceTargetDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderServiceTargetDao.java new file mode 100644 index 0000000..92ee17f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderServiceTargetDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderServiceTargetDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 服务对象 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderServiceTargetDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderSubjectItemDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderSubjectItemDao.java new file mode 100644 index 0000000..554cb97 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderSubjectItemDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderSubjectItemDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderSubjectItemDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTransportationDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTransportationDao.java new file mode 100644 index 0000000..ed9f44e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTransportationDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTransportationDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderTransportationDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelDispatchRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelDispatchRecordDao.java new file mode 100644 index 0000000..6d92c75 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelDispatchRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelDispatchRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author abel + * @since 2023-11-23 + */ +public interface TpOrderTravelDispatchRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelTripDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelTripDao.java new file mode 100644 index 0000000..bfdb0ad --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTravelTripDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelTripDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 行程单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderTravelTripDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTripPositionDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTripPositionDao.java new file mode 100644 index 0000000..52feb56 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderTripPositionDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTripPositionDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderTripPositionDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderVehicleInfoDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderVehicleInfoDao.java new file mode 100644 index 0000000..1c5f3d8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpOrderVehicleInfoDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderVehicleInfoDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderVehicleInfoDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserPassengerDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserPassengerDao.java new file mode 100644 index 0000000..c9de8b9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserPassengerDao.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserPassengerDO; + +/** + *

+ * 用户乘客Mapper接口 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ +public interface TpUserPassengerDao extends BaseMapper { +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserRouteCollectionDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserRouteCollectionDao.java new file mode 100644 index 0000000..25859ab --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/order/TpUserRouteCollectionDao.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.dal.dao.order; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserRouteCollectionDO; + +/** + *

+ * 用户乘客Mapper接口 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ +public interface TpUserRouteCollectionDao extends BaseMapper { +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/rule/TpBizRuleDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/rule/TpBizRuleDao.java new file mode 100644 index 0000000..e367a54 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/rule/TpBizRuleDao.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.common.dal.dao.rule; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.rule.TpBizRuleDO; + +/** + * @author amos wong + * @create 2023/8/16 13:53 + * @Description + */ +public interface TpBizRuleDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/task/TpScheduleTaskDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/task/TpScheduleTaskDao.java new file mode 100644 index 0000000..4522e5c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/task/TpScheduleTaskDao.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.common.dal.dao.task; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.task.TpScheduleTaskDO; + +/** + * @author amos wong + * @create 2023/8/16 13:53 + * @Description + */ +public interface TpScheduleTaskDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpBillDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpBillDao.java new file mode 100644 index 0000000..dcab576 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpBillDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.trans; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpBillDO; + +/** + *

+ * 账单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpBillDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpChargeDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpChargeDao.java new file mode 100644 index 0000000..03bd4e5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpChargeDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.trans; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpChargeDO; + +/** + *

+ * 计费单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpChargeDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpFinancialAccountDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpFinancialAccountDao.java new file mode 100644 index 0000000..fcc291a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpFinancialAccountDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.trans; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpFinancialAccountDO; + +/** + *

+ * 资金账号 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpFinancialAccountDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpPayOrderDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpPayOrderDao.java new file mode 100644 index 0000000..0f4206d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/trans/TpPayOrderDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.trans; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpPayOrderDO; + +/** + *

+ * 支付单 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpPayOrderDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpRescheduleInvalidVoucherRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpRescheduleInvalidVoucherRecordDao.java new file mode 100644 index 0000000..6f537e8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpRescheduleInvalidVoucherRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.voucher; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpRescheduleInvalidVoucherRecordDO; + +/** + * @author amos + * @createDate 2024-07-08 14:21:03 + */ +public interface TpRescheduleInvalidVoucherRecordDao extends BaseMapper { + +} + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherDao.java new file mode 100644 index 0000000..4d4b0dd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherDao.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.dao.voucher; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherInvalidDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.*; + +/** + *

+ * 出行凭证 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +public interface TpVoucherDao extends BaseMapper { + + List batchQuery(@Param("startCount") long startCount, @Param("batch") int batch); + + List getVoucherPassengerList(@Param("routeCode") String routeCode, @Param("shuttleCode") String shuttleCode, @Param("beginOfDay") long beginOfDay, @Param("endOfDay") long endOfDay, @Param("tenantId") String tenantId); + + List getRefundPassengerNos(@Param("orderNos") Collection orderNos, @Param("tenantId") String tenantId); + + Integer batchInvalidVouchers(@Param("invalidDTOs") List invalidDTOs); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherInspectionRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherInspectionRecordDao.java new file mode 100644 index 0000000..7507d54 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherInspectionRecordDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.voucher; + +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherInspectionRecordDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 第三方送检记录 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +public interface TpVoucherInspectionRecordDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherPassengerDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherPassengerDao.java new file mode 100644 index 0000000..9273c45 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherPassengerDao.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.dao.voucher; + +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherPassengerDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 凭证干系人 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +public interface TpVoucherPassengerDao extends BaseMapper { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherVerificationRecordDao.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherVerificationRecordDao.java new file mode 100644 index 0000000..484f713 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dao/voucher/TpVoucherVerificationRecordDao.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dal.dao.voucher; + +import com.deepinnet.tptradecore.common.dal.condition.voucher.VoucherVerificationQueryCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 凭证干系人 Mapper 接口 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +public interface TpVoucherVerificationRecordDao extends BaseMapper { + + List mngQueryVerificationRecords(@Param("queryCondition") VoucherVerificationQueryCondition queryCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/audit/TpAuditDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/audit/TpAuditDO.java new file mode 100644 index 0000000..941f610 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/audit/TpAuditDO.java @@ -0,0 +1,139 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.audit; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; + +import com.deepinnet.tptradecore.common.enums.audit.TpAuditTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 审核单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Getter +@Setter +@TableName("tp_audit") +public class TpAuditDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 审核单号 + */ + @TableField("audit_no") + private String auditNo; + + /** + * 业务单号 + */ + @TableField("biz_obj_no") + private String bizObjectNo; + + /** + * 业务单据类型 + */ + @TableField("biz_obj_type") + private String bizObjType; + + /** + * 审核单类型 + */ + @TableField("`type`") + private Integer type; + + /** + * 提交时间 + */ + @TableField("submit_time") + private LocalDateTime submitTime; + + /** + * 审核单提交人编号 + */ + @TableField("submitter_no") + private String submitterNo; + + /** + * 审核单提交人名称 + */ + @TableField("submitter_name") + private String submitterName; + + /** + * 提交申请原因 + */ + @TableField("apply_reason") + private String applyReason; + + /** + * 审核时间 + */ + @TableField("audit_time") + private LocalDateTime auditTime; + + /** + * 审核单据状态 + */ + @TableField("status") + private String status; + + /** + * 审核建议备注 + */ + @TableField("remark") + private String remark; + + /** + * 审核员编号 + */ + @TableField("auditor_no") + private String auditorNo; + + /** + * 审核员姓名 + */ + @TableField("auditor_name") + private String auditorName; + + /** + * 业务拓展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplicantDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplicantDO.java new file mode 100644 index 0000000..257c0ba --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplicantDO.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2023/10/18 10:57 + * @Description + */ +@Getter +@Setter +@TableName("tp_refund_applicant") +public class TpRefundApplicantDO { + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + @TableField("user_no") + private String userNo; + + @TableField("user_name") + private String userName; + + @TableField("phone") + private String phone; + + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplyOrderDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplyOrderDO.java new file mode 100644 index 0000000..da771f9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundApplyOrderDO.java @@ -0,0 +1,160 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.deepinnet.tptradecore.common.enums.contract.TpRefundTypeEnum; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 退票申请单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_refund_apply_order") +public class TpRefundApplyOrderDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 退票申请单号 + */ + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + /** + * 产品编码 + */ + @TableField("product_code") + private String productCode; + + /** + * 产品名称 + */ + @TableField("product_name") + private String productName; + + /** + * 产品类目编号 + */ + @TableField("product_category_no") + private String productCategoryNo; + + /** + * 产品类目名称 + */ + @TableField("product_category_name") + private String productCategoryName; + + /** + * 用户编号 + */ + @TableField("user_no") + private String userNo; + + /** + * 原订单号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 业务单号 + */ + @TableField("biz_no") + private String bizNo; + + /** + * 业务类型 + */ + @TableField("biz_type") + private String bizType; + + /** + * 退票原因 + */ + @TableField("reason") + private String reason; + + /** + * 申请时间 + */ + @TableField("apply_time") + private Long applyTime; + + /** + * 状态 + */ + @TableField("status") + private String status; + + /** + * 申请退款金额 + */ + @TableField("apply_amount") + private String applyAmount; + + /** + * 退款计费金额 + */ + @TableField("charge_amount") + private String chargeAmount; + + /** + * 实退金额 + */ + @TableField("refund_amount") + private String refundAmount; + + /** + * 退款方式:原路退回或线下退款 + * + * @see TpRefundTypeEnum + */ + private String refundType; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + @TableField("is_deleted") + @TableLogic + private Boolean isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundPassengerDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundPassengerDO.java new file mode 100644 index 0000000..7286fe6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundPassengerDO.java @@ -0,0 +1,100 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 退款申请单关联的乘客信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_refund_passenger") +public class TpRefundPassengerDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 退票申请单编号 + */ + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + /** + * 退票标的项id + */ + @TableField("refund_subject_item_No") + private String refundSubjectItemNo; + + /** + * 乘客编号 + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 姓名 + */ + @TableField("name") + private String name; + + /** + * 联系方式 + */ + @TableField("contact_info") + private String contactInfo; + + /** + * 证件号 + */ + @TableField("cert_no") + private String certNo; + + /** + * 证件类型 + */ + @TableField("cert_type") + private String certType; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 乘客类型 + */ + @TableField("passenger_type") + private String passengerType; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRequirementUserDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRequirementUserDO.java new file mode 100644 index 0000000..d6ada00 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRequirementUserDO.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 退款申请单关联的交通需求方(用车方) + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Getter +@Setter +@TableName("tp_refund_requirement_user") +public class TpRefundRequirementUserDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 退票申请单编号 + */ + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + /** + * 退票标的项id + */ + @TableField("refund_subject_item_Id") + private String refundSubjectItemId; + + /** + * 交通需求方编号 + */ + @TableField("requirement_no") + private String requirementNo; + + /** + * 交通需求方名称 + */ + @TableField("requirement_name") + private String requirementName; + + /** + * 联系方式 + */ + @TableField("contact_info") + private String contactInfo; + + /** + * 联系人姓名 + */ + @TableField("contact_name") + private String contactName; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteDO.java new file mode 100644 index 0000000..5b8d47e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteDO.java @@ -0,0 +1,93 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_refund_route") +public class TpRefundRouteDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + /** + * 线路编号 + */ + @TableField("route_no") + private String routeNo; + + /** + * 线路名称 + */ + @TableField("route_name") + private String routeName; + + /** + * 去程/返程 + */ + @TableField("round_trip") + private String roundTrip; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteShuttleDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteShuttleDO.java new file mode 100644 index 0000000..695636d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundRouteShuttleDO.java @@ -0,0 +1,99 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_refund_route_shuttle") +public class TpRefundRouteShuttleDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + /** + * 线路编号 + */ + @TableField("route_no") + private String routeNo; + + /** + * 班次编号 + */ + @TableField("shuttle_no") + private String shuttleNo; + + /** + * 班次名称 + */ + @TableField("shuttle_name") + private String shuttleName; + + /** + * 班次发车时间 + */ + @TableField("shuttle_time") + private String shuttleTime; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemDO.java new file mode 100644 index 0000000..815905e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemDO.java @@ -0,0 +1,85 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 退票标的项 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_refund_subject_item") +public class TpRefundSubjectItemDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 退票申请单号 + */ + @TableField("refund_apply_order_no") + private String refundApplyOrderNo; + + /** + * 标的项id + */ + @TableField("subject_item_id") + private String subjectItemId; + + /** + * 标的项编号 + */ + @TableField("subject_item_no") + private String subjectItemNo; + + /** + * 标的项类型 + */ + @TableField("subject_item_type") + private String subjectItemType; + + /** + * 数量 + */ + @TableField("quantity") + private Integer quantity; + + @TableField("trip_type") + private String tripType; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemElementDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemElementDO.java new file mode 100644 index 0000000..25e5cc9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundSubjectItemElementDO.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 退票标的项要素 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_refund_subject_item_element") +public class TpRefundSubjectItemElementDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 标的项id + */ + @TableField("subject_item_no") + private String subjectItemNo; + + /** + * 要素名称 + */ + @TableField("name") + private String name; + + /** + * 要素编码 + */ + @TableField("code") + private String code; + + /** + * 要素值 + */ + @TableField("value") + private String value; + + /** + * 单位编码 + */ + @TableField("unit_code") + private String unitCode; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundVoucherRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundVoucherRecordDO.java new file mode 100644 index 0000000..97973d5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/contract/TpRefundVoucherRecordDO.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 退票失效凭证记录 + * + * @TableName tp_refund_voucher_record + */ +@TableName(value = "tp_refund_voucher_record") +@Data +public class TpRefundVoucherRecordDO implements Serializable { + + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 失效凭证参数 + */ + private String invalidVoucherParam; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private String bizData; + + /** + * 创建时间 + */ + private LocalDateTime gmtCreate; + + /** + * 失效时间 + */ + private LocalDateTime gmtModified; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderAuditDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderAuditDO.java new file mode 100644 index 0000000..fac7c45 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderAuditDO.java @@ -0,0 +1,110 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_audit") +public class TpOrderAuditDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 审核编号 + */ + @TableField("audit_no") + private String auditNo; + + /** + * 审核用户编号 + */ + @TableField("audit_user_no") + private String auditUserNo; + + /** + * 审核用户名称 + */ + @TableField("audit_user_name") + private String auditUserName; + + /** + * 审核时间 + */ + @TableField("audit_time") + private Long auditTime; + + /** + * 审核结果 + */ + @TableField("audit_result") + private String auditResult; + + /** + * 审核类型 + */ + @TableField("audit_type") + private String auditType; + + /** + * 审核备注 + */ + @TableField("audit_desc") + private String auditDesc; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderBalanceDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderBalanceDO.java new file mode 100644 index 0000000..f14c123 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderBalanceDO.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_balance") +public class TpOrderBalanceDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 主订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 尾款订单编号 + */ + @TableField("balance_order_no") + private String balanceOrderNo; + + /** + * 尾款类型 + */ + @TableField("balance_type") + private String balanceType; + + /** + * 尾款金额 + */ + @TableField("balance_amount") + private String balanceAmount; + + /** + * 支付时间 + */ + @TableField("pay_time") + private Long payTime; + + /** + * 尾款状态(状态默认和主订单状态的支付 / 待支付保持一致) + */ + @TableField("`status`") + private Integer status; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderCarpoolRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderCarpoolRecordDO.java new file mode 100644 index 0000000..dc6e3f6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderCarpoolRecordDO.java @@ -0,0 +1,110 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author juju + * @since 2024-05-20 + */ +@Getter +@Setter +@TableName("tp_order_carpool_record") +public class TpOrderCarpoolRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户编号(下单人编号) + */ + @TableField("user_no") + private String userNo; + + /** + * 发车时间 + */ + @TableField("shuttle_code") + private String shuttleCode; + + /** + * 发车时间 + */ + @TableField("departure_time") + private Long departureTime; + + /** + * pos机编码 + */ + @TableField("pos_no") + private String posNo; + + /** + * 售卖单元编码 + */ + @TableField("subject_item_no") + private String subjectItemNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 刷卡卡号 + */ + @TableField("card_no") + private String cardNo; + + /** + * 卡流水号 + */ + @TableField("card_biz_no") + private String cardBizNo; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeApplyDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeApplyDO.java new file mode 100644 index 0000000..ee9bdc8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeApplyDO.java @@ -0,0 +1,160 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_change_apply") +public class TpOrderChangeApplyDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 申请单号 + */ + @TableField("apply_no") + private String applyNo; + + /** + * 原订单编号 + */ + @TableField("original_order_no") + private String originalOrderNo; + /** + * 当前订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 申请类型(变更订单 / 取消订单) + */ + @TableField("apply_type") + private String applyType; + + /** + * 申请单状态 + * + */ + @TableField("apply_status") + private String applyStatus; + + /** + * 申请时间 + */ + @TableField("apply_time") + private LocalDateTime applyTime; + + /** + * 变更申请原因 + */ + @TableField("apply_reason") + private String applyReason; + + /** + * 审核完成时间 + */ + @TableField("approved_time") + private LocalDateTime approvedTime; + + /** + * 审批结果描述 + */ + @TableField("approved_remark") + private String approvedRemark; + + /** + * 服务费减免申请原因 + */ + @TableField("rsc_apply_reason") + private String rscApplyReason; + + + /** + * 服务费减免类型 + */ + @TableField("rsc_apply_type") + private String rscApplyType; + + /** + * 服务费减免申请时间 + */ + @TableField("rsc_apply_time") + private LocalDateTime rscApplyTime; + + /** + * 变更发起人 + */ + @TableField("applicant_no") + private String applicantNo; + + + /** + * 申请人名称 + */ + @TableField("applicant_name") + private String applicantName; + + /** + * 申请人手机号 + */ + @TableField("applicant_phone") + private String applicantPhone; + + /** + * 下单场景 + */ + @TableField("order_scene") + private String orderScene; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemDO.java new file mode 100644 index 0000000..e575e3b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemDO.java @@ -0,0 +1,95 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_change_item") +public class TpOrderChangeItemDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 变更项编号 + * + */ + @TableField("item_no") + private String itemNo; + + /** + * 变更类型(行程变更(包车天数变更 /出发时间变更 / 起点 / 终点变更 / 往返程变更);车辆变更) + */ + @TableField("item_type") + private String itemType; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 源订单号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 变更申请单号 + */ + @TableField("apply_no") + private String applyNo; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemFactorDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemFactorDO.java new file mode 100644 index 0000000..6813e26 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangeItemFactorDO.java @@ -0,0 +1,123 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_change_item_factor") +public class TpOrderChangeItemFactorDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 变更因子编码 + */ + @TableField("factor_code") + private String factorCode; + /** + * 类型 + */ + @TableField("factor_type") + private String factorType; + + /** + * 变更因子名称 + */ + @TableField("factor_name") + private String factorName; + + /** + * 变更之前值 + */ + @TableField("before_value") + private String beforeValue; + + /** + * 变更之后值 + */ + @TableField("after_value") + private String afterValue; + + /** + * 变更项编号 + */ + @TableField("change_item_no") + private String changeItemNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + + /** + * 源订单号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 申请变更单号 + */ + @TableField("apply_no") + private String applyNo; + + /** + * 因子排序 + */ + @TableField("`sort_index`") + private Integer sortIndex; + + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangePriceRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangePriceRecordDO.java new file mode 100644 index 0000000..16aba9e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChangePriceRecordDO.java @@ -0,0 +1,92 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_change_price_record") +public class TpOrderChangePriceRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 询价价格 / 改价前价格 + */ + @TableField("inquire_price") + private String inquirePrice; + + /** + * 改价后价格 + */ + @TableField("change_price") + private String changePrice; + + /** + * 改价操作员编号 + */ + @TableField("operator_user") + private String operatorUser; + + /** + * 改价操作员名称 + */ + @TableField("operator_name") + private String operatorName; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChargeRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChargeRecordDO.java new file mode 100644 index 0000000..515d21b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderChargeRecordDO.java @@ -0,0 +1,116 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 费用信息 + *

+ * + * @author abel + * @since 2023-11-17 + */ +@Getter +@Setter +@TableName("tp_order_charge_record") +public class TpOrderChargeRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 原始订单编号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 询价金额 + */ + @TableField("inquire_amount") + private String inquireAmount; + + /** + * 业务员更改价格 + */ + @TableField("change_amount") + private String changeAmount; + + /** + * 实付金额 + */ + @TableField("pay_amount") + private String payAmount; + + /** + * 手续费 + */ + @TableField("service_charge") + private String serviceCharge; + + /** + * 手续费比例 + */ + @TableField("service_percentage") + private String servicePercentage; + + /** + * 是否免手续费 + */ + @TableField("free_service_charge") + private Integer freeServiceCharge; + + /** + * 业务类型(下单 / 变更订单 / 取消订单) + */ + @TableField("biz_type") + private String bizType; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDO.java new file mode 100644 index 0000000..934ffa1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDO.java @@ -0,0 +1,260 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 订单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Getter +@Setter +@TableName("tp_order") +public class TpOrderDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 产品编码 + */ + @TableField("product_no") + private String productNo; + + /** + * 产品名称 + */ + @TableField("product_name") + private String productName; + + /** + * 产品类目编码 + */ + @TableField("product_category_no") + private String productCategoryNo; + + /** + * 产品类目中文 + */ + @TableField("product_category") + private String productCategory; + + /** + * 外部业务单号 + */ + @TableField("out_request_no") + private String outRequestNo; + + /** + * 用户编码 + */ + @TableField("user_no") + private String userNo; + + /** + * 订单编码 + */ + @TableField("order_no") + private String orderNo; + + /** + * 父订单编号 + */ + @TableField("parent_order_no") + private String parentOrderNo; + + /** + * 原订单号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 是否主订单(0-否;1-是) + */ + @TableField("main") + private Integer main; + + /** + * 订单状态 + */ + @TableField("status") + private Integer status; + + /** + * 确认结束状态 + */ + @TableField("end_confirm_status") + private Integer endConfirmStatus; + + /** + * 确认结束时间 + */ + @TableField("end_confirm_time") + private Long endConfirmTime; + + /** + * 审核前状态 + */ + @TableField("before_approve_status") + private Integer beforeApproveStatus; + + /** + * 订单类型(普通订单 / 包车订单 / 包车改签订单) + */ + @TableField("type") + private Integer type; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + /** + * 付款模式 + */ + @TableField("pay_mode") + private String payMode; + + /** + * 实付金额 + */ + @TableField("pay_amount") + private String payAmount; + + /** + * 应付金额 + */ + @TableField("payable_amount") + private String payableAmount; + + /** + * 折扣金额 + */ + @TableField("discount_amount") + private String discountAmount; + + /** + * 订单优惠前原金额 + */ + @TableField("original_amount") + private String originalAmount; + + /** + * 手续费 + */ + @TableField("service_charge") + private String serviceCharge; + + /** + * 订单来源(APP / 微信小程序 / 支付宝小程序 / H5) + */ + @TableField("source") + private String source; + + /** + * 支付方式 + */ + @TableField("pay_type") + private String payType; + + /** + * 是否实名认证(0-否;1-是) + */ + @TableField("identity_verificat") + private Integer identityVerificat; + + /** + * 车票类型 + */ + @TableField("ticket_type") + private String ticketType; + + /** + * 下单时间 + */ + @TableField("order_time") + private Long orderTime; + + /** + * 支付时间 + */ + @TableField("pay_time") + private Long payTime; + + /** + * 订单关闭时间 + */ + @TableField("close_time") + private Long closeTime; + + /** + * 订单过期时间 + */ + @TableField("expire_time") + private Long expireTime; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("invoice_status") + private Integer invoiceStatus; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_visible") + private Integer visible; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDepositDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDepositDO.java new file mode 100644 index 0000000..012517d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDepositDO.java @@ -0,0 +1,99 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_deposit") +public class TpOrderDepositDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 主订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 订金订单号 + */ + @TableField("deposit_order_no") + private String depositOrderNo; + + /** + * 订金支付金额 + */ + @TableField("pay_amount") + private String payAmount; + + /** + * 订金支付比例 + */ + @TableField("pay_percentage") + private BigDecimal payPercentage; + + /** + * 支付时间 + */ + @TableField("pay_time") + private Long payTime; + + /** + * 订金状态(支付状态 / 待支付状态和主订单保持一致) + */ + @TableField("`status`") + private Integer status; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 修改时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDiscountDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDiscountDO.java new file mode 100644 index 0000000..568cb4d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDiscountDO.java @@ -0,0 +1,95 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 优惠信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_discount") +public class TpOrderDiscountDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId("id") + private Long id; + + /** + * 计价记录编号 + */ + @TableField("pricing_no") + private String pricingNo; + + /** + * 订单编码 + */ + @TableField("order_no") + private String orderNo; + + /** + * 优惠类型 + */ + @TableField("type") + private Integer type; + + /** + * 优惠金额 + */ + @TableField("discount_amount") + private String discountAmount; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * CURRENT_TIMESTAMP + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchDO.java new file mode 100644 index 0000000..8a95d17 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchDO.java @@ -0,0 +1,190 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; + +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_dispatch") +public class TpOrderDispatchDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单分配单号 + */ + @TableField("dispatch_no") + private String dispatchNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 源订单号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 派单类型 + **/ + @TableField("dispatch_scene") + private String dispatchScene; + + /** + * 分配人编号:操作人,如果是系统自动派单,此字段为空或者是默认账号admin + */ + @TableField("operator_no") + private String operatorNo; + + /** + * 分配人名称:操作人,如果是系统自动派单,此字段为空或者是默认账号admin + */ + @TableField("operator_name") + private String operatorName; + + /** + * 分配目标组织编码 + */ + @TableField("target_org_no") + private String targetOrgNo; + + + /** + * 分配目标组织编码 + */ + @TableField("target_org_name") + private String targetOrgName; + + /** + * 分派组织类型 + */ + @TableField("target_org_type") + private String targetOrgType; + + /** + * 下单来源承运组织编码 + */ + @TableField("origin_org_no") + private String originOrgNo; + + /** + * 下单来源承运组织名称 + */ + @TableField("origin_org_name") + private String originOrgName; + + /** + * 下单来源承运组织类型 + */ + @TableField("origin_org_type") + private String originOrgType; + + /** + * 分配时间 + */ + @TableField("dispatch_time") + private LocalDateTime dispatchTime; + + /** + * 分配状态 + */ + @TableField("dispatch_status") + private Integer dispatchStatus; + + /** + * 是否可以转分配:分公司不可以,总公司可以 + */ + @TableField("is_redispatch") + private Integer isReDispatch; + + /** + * 目标分配组织是否可以退回原处 + */ + @TableField("is_give_back") + private Integer isGiveBack ; + + /** + * 退单原因 + */ + @TableField("give_back_reason") + private String giveBackReason; + + /** + * 退单时间 + */ + @TableField("give_back_time") + private LocalDateTime giveBackTime; + + /** + * 分配组织是否可以召回 + */ + @TableField("is_call_back") + private Integer isCallBack ; + + /** + * 召回时间 + */ + @TableField("call_back_time") + private LocalDateTime callBackTime; + + /** + * 召回原因 + */ + @TableField("call_back_reason") + private String callBackReason; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchFleetDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchFleetDO.java new file mode 100644 index 0000000..c2f22c9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchFleetDO.java @@ -0,0 +1,116 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 订单分配单车队 + *

+ * + * @author abel + * @since 2023-11-23 + */ +@Getter +@Setter +@TableName("tp_order_dispatch_fleet") +public class TpOrderDispatchFleetDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 主营车队派单编码 + */ + @TableField("code") + private String code; + + /** + * 派单编码 + */ + @TableField("dispatch_no") + private String dispatchNo; + + /** + * 订单编码 + */ + @TableField("order_no") + private String orderNo; + + /** + * 源订单号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 分配员编码 + */ + @TableField("operator_no") + private String operatorNo; + + /** + * 分配员名称 + */ + @TableField("operator_name") + private String operatorName; + + /** + * 分配目标车队编码 + */ + @TableField("target_fleet_no") + private String targetFleetNo; + + /** + * 分配目标车队名称 + */ + @TableField("target_fleet_name") + private String targetFleetName; + + /** + * 分配车队时间 + */ + @TableField("dispatch_time") + private LocalDateTime dispatchTime; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + @TableField("gmt_created") + private LocalDateTime gmtCreated; + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchJoinFleetDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchJoinFleetDO.java new file mode 100644 index 0000000..260c72f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDispatchJoinFleetDO.java @@ -0,0 +1,109 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + * Description: + * Date: 2024/6/3 + * Author: lijunheng + */ +/** + * 订单分配的合营车队,一个车型对应一个车队 + */ +@Getter +@Setter +@TableName(value = "tp_order_dispatch_join_fleet") +public class TpOrderDispatchJoinFleetDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 派单主营车队记录编码 + */ + @TableField(value = "order_dispatch_fleet_code") + private String orderDispatchFleetCode; + + /** + * 行程类型(go; back) + */ + @TableField(value = "trip_type") + private String tripType; + + /** + * 车型编码 + */ + @TableField(value = "spec_code") + private String specCode; + + /** + * 车型名称 + */ + @TableField(value = "spec_name") + private String specName; + + /** + * 分公司编码 + */ + @TableField(value = "org_code") + private String orgCode; + + /** + * 分公司名称 + */ + @TableField(value = "org_name") + private String orgName; + + /** + * 车队编码 + */ + @TableField(value = "fleet_code") + private String fleetCode; + + /** + * 车队名称 + */ + @TableField(value = "fleet_name") + private String fleetName; + + /** + * 扩展字段 + */ + @TableField(value = "biz_data") + private String bizData; + + @TableField(value = "gmt_created") + private Date gmtCreated; + + @TableField(value = "gmt_modified") + private Date gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Byte isDeleted; + + /** + * 租户ID + */ + @TableField(value = "tenant_id") + private String tenantId; + + @Override + public Serializable pkVal() { + return this.id; + } +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDriverInfoDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDriverInfoDO.java new file mode 100644 index 0000000..6ee89dc --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderDriverInfoDO.java @@ -0,0 +1,83 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 司机信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_driver_info") +public class TpOrderDriverInfoDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId("id") + private Long id; + + /** + * 承运交通工具编码 + */ + @TableField("transportation_no") + private String transportationNo; + + /** + * 司机 + */ + @TableField("name") + private String name; + + /** + * 司机联系方式 + */ + @TableField("contact") + private String contact; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderElementDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderElementDO.java new file mode 100644 index 0000000..c20d93b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderElementDO.java @@ -0,0 +1,93 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_element") +public class TpOrderElementDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 要素类型(下单 / 退款 / 改签) + */ + @TableField("element_type") + private Integer elementType; + + /** + * 要素code + */ + @TableField("element_code") + private String elementCode; + + /** + * 要素名称 + */ + @TableField("element_name") + private String elementName; + + /** + * 要素Key + */ + @TableField("element_key") + private String elementKey; + + /** + * 要素值 + */ + @TableField("element_value") + private String elementValue; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderInvoiceDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderInvoiceDO.java new file mode 100644 index 0000000..c176111 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderInvoiceDO.java @@ -0,0 +1,80 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-29 + */ +@Getter +@Setter +@TableName("tp_order_invoice") +public class TpOrderInvoiceDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 发票号码 + */ + @TableField("invoice_no") + private String invoiceNo; + + /** + * 发票地址 + */ + @TableField("invoice_address") + private String invoiceAddress; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderItemElementDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderItemElementDO.java new file mode 100644 index 0000000..f6b05ab --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderItemElementDO.java @@ -0,0 +1,102 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_item_element") +public class TpOrderItemElementDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField(value = "order_no") + private String orderNo; + + /** + * 标的项编码 + */ + @TableField("item_no") + private String itemNo; + + /** + * 要素code + */ + @TableField("element_code") + private String elementCode; + + /** + * 要素名称 + */ + @TableField("element_name") + private String elementName; + + /** + * 要素值 + */ + @TableField("element_value") + private String elementValue; + + /** + * 要素单位 + */ + @TableField("element_unit") + private String elementUnit; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerDO.java new file mode 100644 index 0000000..b4bb1f8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerDO.java @@ -0,0 +1,120 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 乘客 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_passenger") +public class TpOrderPassengerDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 乘客编号 + */ + @TableField(value = "passenger_no") + private String passengerNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 乘客类型 + */ + @TableField("passenger_type") + private String passengerType; + + /** + * 乘客姓名 + */ + @TableField("passenger_name") + private String passengerName; + + /** + * 联系方式 + */ + @TableField("passenger_contact") + private String passengerContact; + + /** + * 乘客证件类型 + */ + @TableField("identification_type") + private String identificationType; + + /** + * 乘客证件编号 + */ + @TableField("identification_number") + private String identificationNumber; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerTripRelationDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerTripRelationDO.java new file mode 100644 index 0000000..f6ed24c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPassengerTripRelationDO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_passenger_trip_relation") +public class TpOrderPassengerTripRelationDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 干系人编号 + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 行程单编号 + */ + @TableField("trip_no") + private String tripNo; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPlacerDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPlacerDO.java new file mode 100644 index 0000000..83644c6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPlacerDO.java @@ -0,0 +1,116 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 下单人 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_placer") +public class TpOrderPlacerDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 下单人编号 + */ + @TableField("placer_no") + private String placerNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 下单人姓名 + */ + @TableField("placer_name") + private String placerName; + + /** + * 联系方式 + */ + @TableField("placer_contact") + private String placerContact; + + /** + * 下单人联系方式 + */ + @TableField("order_placer_contact") + private String orderPlacerContact; + + /** + * 后台录单人编号 + */ + @TableField("backend_placer_no") + private String backendPlacerNo; + + /** + * 后台录单人员名称 + */ + @TableField("backend_placer_name") + private String backendPlacerName; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDO.java new file mode 100644 index 0000000..d86f967 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDO.java @@ -0,0 +1,108 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 计价记录 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_price_record") +public class TpOrderPriceRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 计价记录编号 + */ + @TableField("pricing_no") + private String pricingNo; + + /** + * 订单编码 + */ + @TableField("order_no") + private String orderNo; + + /** + * 计价原始金额 + */ + @TableField("pricing_original_amount") + private String pricingOriginalAmount; + + /** + * 计价优惠金额 + */ + @TableField("pricing_discount_amount") + private String pricingDiscountAmount; + + /** + * 内部询价金额 + */ + @TableField("internal_inquire_amount") + private String internalInquireAmount; + + /** + * 计价类型 + */ + @TableField("pricing_type") + private Integer pricingType; + + /** + * 计价参数 + */ + @TableField("pricing_params") + private String pricingParams; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDetailDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDetailDO.java new file mode 100644 index 0000000..529c7b2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderPriceRecordDetailDO.java @@ -0,0 +1,117 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 计价记录详情 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_price_record_detail") +public class TpOrderPriceRecordDetailDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 计价记录编号 + */ + @TableField("pricing_no") + private String pricingNo; + + /** + * 订单编码 + */ + @TableField("order_no") + private String orderNo; + + /** + * 标的项编码(售卖单元编码) + */ + @TableField("item_no") + private String itemNo; + + /** + * 乘客类型 + */ + @TableField("passenger_type") + private String passengerType; + + /** + * 乘客数量 + */ + @TableField("passenger_count") + private Integer passengerCount; + + /** + * 单价原始金额 + */ + @TableField("single_original_amount") + private String singleOriginalAmount; + + /** + * 单价优惠金额 + */ + @TableField("single_discount_amount") + private String singleDiscountAmount; + + /** + * 总原始金额 + */ + @TableField("total_original_amount") + private String totalOriginalAmount; + + /** + * 总优惠金额 + */ + @TableField("total_discount_amount") + private String totalDiscountAmount; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderReceivedDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderReceivedDO.java new file mode 100644 index 0000000..92534f7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderReceivedDO.java @@ -0,0 +1,116 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("tp_order_receive") +public class TpOrderReceivedDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单接单编号 + */ + @TableField("receive_no") + private String receivedNo; + + /** + * 业务单据编号 + */ + @TableField("biz_obj_no") + private String bizObjNo; + + /** + * 业务单据类型 + */ + @TableField("biz_obj_type") + private String bizObjType; + + /** + * 接单组织编号 + */ + @TableField("org_no") + private String orgNo; + + /** + * 接单组织名称 + */ + @TableField("org_name") + private String orgName; + + /** + * 接单人编号 + */ + @TableField("receiver_no") + private String receiverNo; + + /** + * 接单人名称 + */ + @TableField("receiver_name") + private String receiverName; + + /** + * 接单时间 + */ + @TableField("received_time") + private LocalDateTime receivedTime; + + /** + * 接单状态 + */ + @TableField("receive_status") + private Integer receivedStatus; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户编号 + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRequirementUserDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRequirementUserDO.java new file mode 100644 index 0000000..f16f8ed --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRequirementUserDO.java @@ -0,0 +1,93 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 需求方 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_requirement_user") +public class TpOrderRequirementUserDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 用车人名称 + */ + @TableField("requirement_name") + private String requirementName; + + @TableField("requirement_contact_name") + private String requirementContactName; + + /** + * 联系方式 + */ + @TableField("requirement_contact") + private String requirementContact; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRescheduleRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRescheduleRecordDO.java new file mode 100644 index 0000000..9839971 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRescheduleRecordDO.java @@ -0,0 +1,168 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Getter +@Setter +@TableName("tp_order_reschedule_record") +public class TpOrderRescheduleRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 递增主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 改签编号 + */ + @TableField("reschedule_no") + private String rescheduleNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 改签前订单编号 + */ + @TableField("original_order_no") + private String originalOrderNo; + + /** + * 改签前售卖单元编号 + */ + @TableField("subject_item_no") + private String subjectItemNo; + + /** + * 改签前班次编号 + */ + @TableField("shuttle_no") + private String shuttleNo; + + /** + * 改签前班次日期 + */ + @TableField("shuttle_date") + private String shuttleDate; + + /** + * 改签前班次时间 + */ + @TableField("shuttle_time") + private String shuttleTime; + + + + /** + * 改签后售卖单元编号 + */ + @TableField("reschedule_subject_item_no") + private String rescheduleSubjectItemNo; + + /** + * 改签后班次编号 + */ + @TableField("reschedule_shuttle_no") + private String rescheduleShuttleNo; + + /** + * 改签后班次日期 + */ + @TableField("reschedule_shuttle_date") + private String rescheduleShuttleDate; + + /** + * 改签后班次时间 + */ + @TableField("reschedule_shuttle_time") + private String rescheduleShuttleTime; + + /** + * 乘客编号 + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 乘客名称 + */ + @TableField("passenger_name") + private String passengerName; + + /** + * 乘客数量 + */ + @TableField("passenger_count") + private Integer passengerCount; + + /** + * 改签时间 + */ + @TableField("reschedule_time") + private Long rescheduleTime; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 当前时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 修改时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除 + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteDO.java new file mode 100644 index 0000000..2a97614 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteDO.java @@ -0,0 +1,111 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_route") +public class TpOrderRouteDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 线路编号 + */ + @TableField("route_no") + private String routeNo; + + /** + * 线路名称 + */ + @TableField("route_name") + private String routeName; + + /** + * 去程 / 返程 + */ + @TableField("round_trip") + private String roundTrip; + + /** + * 营运日期 + */ + @TableField("work_time") + private String workTime; + + /** + * 时刻表 + */ + @TableField("time_schedule") + private String timeSchedule; + + /** + * 所属车队 / 公司 + */ + @TableField("belong_fleet") + private String belongFleet; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteShuttleDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteShuttleDO.java new file mode 100644 index 0000000..203d8e6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderRouteShuttleDO.java @@ -0,0 +1,105 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_route_shuttle") +public class TpOrderRouteShuttleDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 线路编号 + */ + @TableField("route_no") + private String routeNo; + + /** + * 班次编号 + */ + @TableField("shuttle_no") + private String shuttleNo; + + /** + * 班次名称 + */ + @TableField("shuttle_name") + private String shuttleName; + + /** + * 班次发车时间 + */ + @TableField("shuttle_time") + private String shuttleTime; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderServiceTargetDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderServiceTargetDO.java new file mode 100644 index 0000000..6f8e347 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderServiceTargetDO.java @@ -0,0 +1,84 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 服务对象 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_service_target") +public class TpOrderServiceTargetDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 服务主体名称 + */ + @TableField("target_name") + private String targetName; + + /** + * 服务对象唯一编码 + */ + @TableField("target_number") + private String targetNumber; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderSubjectItemDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderSubjectItemDO.java new file mode 100644 index 0000000..58fd18c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderSubjectItemDO.java @@ -0,0 +1,126 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_subject_item") +public class TpOrderSubjectItemDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 标的编码 + */ + @TableField("item_no") + private String itemNo; + + /** + * 订单编码 + */ + @TableField("order_no") + private String orderNo; + + /** + * 乘客编码(干系人) + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 乘客人数 + */ + @TableField("passenger_count") + private Integer passengerCount; + + /** + * 用车天数 + */ + @TableField("days") + private Integer days; + + /** + * 是否包含司机食宿 + */ + @TableField("include_driver_expenses") + private String includeDriverExpenses; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + /** + * 标的名称 + */ + @TableField("name") + private String name; + + /** + * 标的类型 + */ + @TableField("type") + private String type; + + /** + * 购买标的项数量 + */ + @TableField("count") + private Integer count; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTransportationDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTransportationDO.java new file mode 100644 index 0000000..f82223d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTransportationDO.java @@ -0,0 +1,102 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_transportation") +public class TpOrderTransportationDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 派单编码 + */ + @TableField("dispatch_no") + private String dispatchNo; + + /** + * 承运交通工具编码 + */ + @TableField("transportation_no") + private String transportationNo; + + /** + * 司机 + */ + @TableField("driver") + private String driver; + + /** + * 状态 + */ + @TableField("status") + private Integer status; + + /** + * 位置 + */ + @TableField("position") + private String position; + + /** + * 类型 + */ + @TableField("type") + private Integer type; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelDispatchRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelDispatchRecordDO.java new file mode 100644 index 0000000..3f0516d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelDispatchRecordDO.java @@ -0,0 +1,140 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-23 + */ +@Getter +@Setter +@TableName("tp_order_travel_dispatch_record") +public class TpOrderTravelDispatchRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 行程单号 + */ + @TableField("trip_no") + private String tripNo; + + /** + * 行程类型(go;back) + */ + @TableField("trip_type") + private String tripType; + + /** + * 车队ID + */ + @TableField("fleetId") + private String fleetId; + + /** + * 车队组织 + */ + @TableField("fleet_name") + private String fleetName; + + /** + * 出发时间 + */ + @TableField("departure_time") + private Long departureTime; + + /** + * 到达时间 + */ + @TableField("arrive_time") + private Long arriveTime; + + /** + * 车辆规格 + */ + @TableField("bus_specification_code") + private String busSpecificationCode; + + /** + * 车辆名称 + */ + @TableField("bus_name") + private String busName; + + /** + * 车牌号 + */ + @TableField("bus_plate") + private String busPlate; + + /** + * 司机名称 + */ + @TableField("driver_name") + private String driverName; + + /** + * 司机手机号 + */ + @TableField("driver_phone") + private String driverPhone; + + /** + * 天包车表示第几天 + */ + @TableField("day_index") + private Integer dayIndex; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @Override + public Serializable pkVal() { + return this.id; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelTripDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelTripDO.java new file mode 100644 index 0000000..49d4777 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTravelTripDO.java @@ -0,0 +1,151 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 行程单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_travel_trip") +public class TpOrderTravelTripDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 行程单编号 + */ + @TableField("trip_no") + private String tripNo; + + /** + * 乘客编号 + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 乘客人数 + */ + @TableField("passenger_count") + private Integer passengerCount; + + /** + * 公里数 + */ + @TableField("miles") + private String miles; + + /** + * 上车点code + */ + @TableField("pick_up_location_code") + private String pickUpLocationCode; + + /** + * 上车点名称 + */ + @TableField("pick_up_location") + private String pickUpLocation; + + /** + * 下车点code + */ + @TableField("drop_off_location_code") + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + @TableField("drop_off_location") + private String dropOffLocation; + + /** + * 出发时间 + */ + @TableField("start_time") + private String startTime; + + /** + * 到达时间 + */ + @TableField("end_time") + private String endTime; + + /** + * 行程单 行程类型 + */ + @TableField("trip_type") + private String tripType; + + /** + * 行程单状态 + */ + @TableField("trip_status") + private String tripStatus; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTripPositionDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTripPositionDO.java new file mode 100644 index 0000000..96b8138 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderTripPositionDO.java @@ -0,0 +1,114 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_trip_position") +public class TpOrderTripPositionDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 行程单编号 + */ + @TableField("trip_no") + private String tripNo; + + /** + * 订单编号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 位置编码 + */ + @TableField("location_code") + private String locationCode; + + /** + * 位置编码 + */ + @TableField("location_name") + private String locationName; + + /* + * 经度 + */ + @TableField("lng") + private String lng; + + /** + * 维度 + */ + @TableField("lat") + private String lat; + + /** + * 序号 + */ + @TableField("`index`") + private String index; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 创建时间 + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * 更新时间 + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderVehicleInfoDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderVehicleInfoDO.java new file mode 100644 index 0000000..805f76a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpOrderVehicleInfoDO.java @@ -0,0 +1,78 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_order_vehicle_info") +public class TpOrderVehicleInfoDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 交通工具编号 + */ + @TableField("transportation_no") + private String transportationNo; + + /** + * 车牌号 + */ + @TableField("vehicle_number") + private String vehicleNumber; + + /** + * 扩展字段 + */ + @TableField("biz_data") + private String bizData; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除(0-否;1-是) + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserPassengerDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserPassengerDO.java new file mode 100644 index 0000000..7a4fc64 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserPassengerDO.java @@ -0,0 +1,90 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + *

+ * 用户乘客信息 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Getter +@Setter +@TableName("tp_user_passenger") +public class TpUserPassengerDO extends Model { + + /** + * 自增主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户编号 + */ + @TableField("user_no") + private String userNo; + + /** + * 乘客编号 + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 乘客类型 + */ + @TableField("passenger_type") + private String passengerType; + + /** + * 乘客姓名 + */ + @TableField("name") + private String name; + + /** + * 乘客证件类型 + */ + @TableField("identity_type") + private String identityType; + + /** + * 乘客证件号 + */ + @TableField("identity_number") + private String identityNumber; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * biz_data + */ + @TableField("biz_data") + private String bizData; + + /** + * gmtCreated + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * gmtModified + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserRouteCollectionDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserRouteCollectionDO.java new file mode 100644 index 0000000..7ed2028 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/order/TpUserRouteCollectionDO.java @@ -0,0 +1,139 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + *

+ * 用户线路收集 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Getter +@Setter +@TableName("tp_user_route_collection") +public class TpUserRouteCollectionDO extends Model { + + /** + * 自增主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 收集编号 + */ + @TableField("collection_no") + private String collectionNo; + + /** + * 手机号 + */ + @TableField("phone_number") + private String phoneNumber; + + /** + * 用户编号 + */ + @TableField("user_no") + private String userNo; + + /** + * 上车点名称 + */ + @TableField("up_location") + private String upLocation; + + /** + * 上车点经度 + */ + @TableField("up_location_lng") + private String upLocationLng; + + /** + * 上车点维度 + */ + @TableField("up_location_lat") + private String upLocationLat; + + /** + * 下车点名称 + */ + @TableField("down_location") + private String downLocation; + + /** + * 下车点经度 + */ + @TableField("down_location_lng") + private String downLocationLng; + + /** + * 下车点维度 + */ + @TableField("down_location_lat") + private String downLocationLat; + + /** + * 期望到达时间 + */ + @TableField("expect_arrive_time") + private String expectArriveTime; + + /** + * 期望返程时间 + */ + @TableField("expect_back_time") + private String expectBackTime; + + /** + * 出行目的 + */ + @TableField("travel_purpose") + private String travelPurpose; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + /** + * biz_data + */ + @TableField("biz_data") + private String bizData; + + /** + * gmtCreated + */ + @TableField("gmt_created") + private LocalDateTime gmtCreated; + + /** + * gmtModified + */ + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 是否删除 + */ + @TableField("is_deleted") + @TableLogic + private Integer isDeleted; + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/rule/TpBizRuleDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/rule/TpBizRuleDO.java new file mode 100644 index 0000000..3fe15dd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/rule/TpBizRuleDO.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.rule; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-28 10:09:47 + */ +@Getter +@Setter +@TableName("tp_biz_rule") +public class TpBizRuleDO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 关联的业务单号 + */ + @TableField("biz_no") + private String bizNo; + + /** + * 业务规则代码 + */ + @TableField("code") + private String code; + + /** + * 业务规则名称 + */ + @TableField("name") + private String name; + + /** + * 业务类型 + */ + @TableField("biz_type") + private String bizType; + + /** + * 规则表达式 + */ + @TableField("expression") + private String expression; + + /** + * 目标对象类型 + */ + @TableField("target_obj_type") + private String targetObjType; + + /** + * 目标对象ID + */ + @TableField("target_obj_id") + private String targetObjId; + + /** + * 规则分组 + */ + @TableField("rule_group") + private String ruleGroup; + + /** + * 规则枚举 + */ + @TableField("rule_enum") + private String ruleEnum; + + /** + * 租户ID + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 拓展字段 + */ + @TableField("biz_data") + private String bizData; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/task/TpScheduleTaskDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/task/TpScheduleTaskDO.java new file mode 100644 index 0000000..87e0e31 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/task/TpScheduleTaskDO.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.task; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("tp_schedule_task") +public class TpScheduleTaskDO { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField(value = "gmt_create") + private LocalDateTime gmtCreate; + + @TableField(value = "gmt_modified") + private LocalDateTime gmtModified; + + @TableField(value = "biz_no") + private String bizNo; + + @TableField(value = "task_type") + private String taskType; + + @TableField(value = "status") + private String status; + + @TableField(value = "source") + private String source; + + @TableField(value = "env") + private String env; + + @TableField(value = "trigger_time") + private Long triggerTime; + + @TableField(value = "execute_time") + private Long executeTime; + + @TableField(value = "retry_count") + private Integer retryCount; + + @TableField(value = "tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpBillDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpBillDO.java new file mode 100644 index 0000000..3313e14 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpBillDO.java @@ -0,0 +1,108 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.trans; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 账单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Getter +@Setter +@TableName("tp_bill") +public class TpBillDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 账单编号 + */ + @TableField("bill_no") + private String billNo; + + /** + * 账单金额 + */ + @TableField("amount") + private String amount; + + /** + * 订单号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 支付单号 + */ + @TableField("pay_order_no") + private String payOrderNo; + + /** + * 账单状态 + */ + @TableField("status") + private String status; + + /** + * 业务类型 + */ + @TableField("biz_type") + private String bizType; + + /** + * 账单类型 + */ + @TableField("bill_type") + private String billType; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + @TableField("is_deleted") + @TableLogic + private Boolean isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpChargeDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpChargeDO.java new file mode 100644 index 0000000..99fa371 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpChargeDO.java @@ -0,0 +1,115 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.trans; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 计费单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Getter +@Setter +@TableName("tp_charge") +public class TpChargeDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 计费单号 + */ + @TableField("charge_no") + private String chargeNo; + + /** + * 支付单号 + */ + @TableField("pay_order_no") + private String payOrderNo; + + /** + * 业务类型 + */ + @TableField("biz_type") + private String bizType; + + /** + * 计费标题 + */ + @TableField("title") + private String title; + + /** + * 计费类型 + */ + @TableField("charge_type") + private String chargeType; + + /** + * 收退费金额 + */ + @TableField("amount") + private String amount; + + /** + * 计费比例 + */ + @TableField("ratio") + private String ratio; + + /** + * 收费主体id + */ + @TableField("charging_entity_id") + private String chargingEntityId; + + /** + * 收费主体类型 + */ + @TableField("charging_entity_type") + private String chargingEntityType; + + /** + * 状态 + */ + @TableField("status") + private String status; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + @TableField("biz_data") + private String bizData; + + @TableField("is_deleted") + @TableLogic + private Boolean isDeleted; + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpFinancialAccountDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpFinancialAccountDO.java new file mode 100644 index 0000000..43fbeac --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpFinancialAccountDO.java @@ -0,0 +1,109 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.trans; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 资金账号 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Getter +@Setter +@TableName("tp_financial_account") +public class TpFinancialAccountDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 关联的业务单号 + */ + @TableField("biz_no") + private String bizNo; + + /** + * 业务类型 + */ + @TableField("biz_type") + private String bizType; + + /** + * 账号类型:收款方或者付款方 + */ + @TableField("account_type") + private String accountType; + + /** + * 账号 + */ + @TableField("account") + private String account; + + /** + * 账号名称 + */ + @TableField("account_name") + private String accountName; + + /** + * 支付宝、微信、银行 + */ + @TableField("channel") + private String channel; + + /** + * 卡机构id + */ + @TableField("card_issuer_id") + private String cardIssuerId; + + /** + * 开户行名称 + */ + @TableField("bank_name") + private String bankName; + + /** + * 银行账号 + */ + @TableField("bank_account") + private String bankAccount; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpPayOrderDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpPayOrderDO.java new file mode 100644 index 0000000..4ef315e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/trans/TpPayOrderDO.java @@ -0,0 +1,152 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.trans; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 支付单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Getter +@Setter +@TableName("tp_pay_order") +public class TpPayOrderDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 支付单号 + */ + @TableField("pay_order_no") + private String payOrderNo; + + /** + * 订单号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 业务单号 + */ + @TableField("biz_no") + private String bizNo; + + /** + * 业务类型 + */ + @TableField("biz_type") + private String bizType; + + /** + * 优惠金额 + */ + @TableField("discount_amount") + private String discountAmount; + + /** + * 计费金额 + */ + @TableField("charge_amount") + private String chargeAmount; + + /** + * 实付金额 + */ + @TableField("pay_amount") + private String payAmount; + + /** + * 支付方式 + */ + @TableField("pay_type") + private String payType; + + /** + * 支付场景 + */ + @TableField("pay_scene") + private String payScene; + + /** + * 支付标题 + */ + @TableField("pay_title") + private String payTitle; + + /** + * 支付单状态 + */ + @TableField("status") + private String status; + + /** + * 支付时间 + */ + @TableField("pay_time") + private Long payTime; + + /** + * 支付超时时间 + */ + @TableField("pay_timeout") + private Long payTimeout; + + /** + * 当前支付的序列号 + */ + @TableField("pay_sequence") + private Long paySequence; + + /** + * 三方支付流水号 + */ + @TableField("out_pay_flow_id") + private String outPayFlowId; + + /** + * 是否需要计收费 + */ + @TableField("charge_required") + private Boolean chargeRequired; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("biz_data") + private String bizData; + + @TableField("is_deleted") + @TableLogic + private Boolean isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/MngVoucherVerificationRecordQueryResult.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/MngVoucherVerificationRecordQueryResult.java new file mode 100644 index 0000000..93baca1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/MngVoucherVerificationRecordQueryResult.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import lombok.Data; + + +/** + * @author amos wong + * @create 2024/3/14 16:14 + * @Description + */ +@Data +public class MngVoucherVerificationRecordQueryResult { + + private Long verificationTime; + + private String voucherNo; + + private String userNo; + + private String validationType; + + private String routeId; + + private String routeName; + + private String type; + + private String productCategoryNo; + + private String productCategoryName; + + private String orderNo; +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/RefundPassengerDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/RefundPassengerDO.java new file mode 100644 index 0000000..8ff84e7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/RefundPassengerDO.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import lombok.Data; + +/** + *         ┏┓   ┏┓+ + + *        ┏┛┻━━━┛┻┓ + + + *        ┃       ┃ + *        ┃   ━   ┃ ++ + + + + *        ████━████ ┃+ + *        ┃       ┃ + + *        ┃   ┻   ┃ + *        ┃       ┃ + + + *        ┗━┓    ┏━┛ + *          ┃   ┃ + *          ┃   ┃ + + + + + *          ┃   ┃    Code is far away from bug with the animal protecting + *          ┃   ┃ +     神兽保佑,代码无bug + *          ┃   ┃ + *          ┃   ┃  + + *          ┃    ┗━━━┓ + + + *          ┃        ┣┓ + *          ┃        ┏┛ + *          ┗┓┓┏━┳┓┏┛ + + + + + *           ┃┫┫ ┃┫┫ + *           ┗┻┛ ┗┻┛+ + + + + * + * @author 唐国翔 + * @since 2024-04-28 星期日 + **/ +@Data +public class RefundPassengerDO { + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 乘客编码 + */ + private String passengerNo; + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpPassengerListDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpPassengerListDO.java new file mode 100644 index 0000000..4990271 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpPassengerListDO.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import lombok.Data; + +/** + * @author 唐国翔 + * @since 2024/1/10 11:35 + **/ +@Data +public class TpPassengerListDO { + + /** + * 凭证编号 + */ + private String voucherNo; + + + /** + * 乘客人数 + */ + private Integer passengerCount; + + /** + * 退票張數 + */ + private Integer refundCount = 0; + + /** + * 已核销次数 + */ + private Integer redemptionCount = 0; + + /** + * 是否实名制 + */ + private Integer requiredRealName; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 乘客姓名 + */ + private String placerName; + /** + * 乘客联系电话 + */ + private String placerContact; + + private String orderPlacerContact; + + /** + * 上车点code + */ + private String pickUpLocationCode; + /** + * 上车点名称 + */ + private String pickUpLocation; + + /** + * 下车点code + */ + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + private String dropOffLocation; + + /** + * 乘客编码 + */ + private String passengerNo; + /** + * 凭证核验结果 + */ + private String result; + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpRescheduleInvalidVoucherRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpRescheduleInvalidVoucherRecordDO.java new file mode 100644 index 0000000..5972dd6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpRescheduleInvalidVoucherRecordDO.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 改签失效凭证记录 + */ +@TableName(value = "tp_reschedule_invalid_voucher_record") +@Data +public class TpRescheduleInvalidVoucherRecordDO implements Serializable { + private Long id; + + private String originalOrderNo; + + private String orderNo; + + private String voucherNo; + + private Integer invalidTotalCount; + + private Integer invalidPassengerCount; + + private String targetStatus; + + private String tenantId; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherDO.java new file mode 100644 index 0000000..043dfa9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherDO.java @@ -0,0 +1,208 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 出行凭证 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Getter +@Setter +@TableName("tp_voucher") +public class TpVoucherDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 凭证编号 + */ + @TableField("voucher_no") + private String voucherNo; + + /** + * 凭证关联的售卖单元code + */ + @TableField("sales_unit_code") + private String salesUnitCode; + + /** + * 用户编号 + */ + @TableField("user_no") + private String userNo; + + /** + * 产品类目编号 + */ + @TableField("product_category_no") + private String productCategoryNo; + + /** + * 产品类目名称 + */ + @TableField("product_category_name") + private String productCategoryName; + + /** + * 订单号 + */ + @TableField("order_no") + private String orderNo; + + /** + * 凭证编码 + */ + @TableField("voucher_code") + private String voucherCode; + + /** + * 凭证类型 + */ + @TableField("type") + private String type; + + /** + * 有效期开始时间 + */ + @TableField("effective_start_time") + private Long effectiveStartTime; + + /** + * 有效期结束时间 + */ + @TableField("effective_end_time") + private Long effectiveEndTime; + + /** + * 最早检票时间 + */ + @TableField("earliest_check_time") + private String earliestCheckTime; + + /** + * 最晚检票时间 + */ + @TableField("latest_check_time") + private String latestCheckTime; + + /** + * 线路id + */ + @TableField("route_id") + private String routeId; + + /** + * 线路名称 + */ + @TableField("route_name") + private String routeName; + + /** + * 班次id + */ + @TableField("shuttle_id") + private String shuttleId; + + /** + * 班次名称 + */ + @TableField("shuttle_name") + private String shuttleName; + + /** + * 验票方式 + */ + @TableField("validation_type") + private String validationType; + + /** + * 总可用次数 + */ + @TableField("total_count") + private Integer totalCount; + + /** + * 已核销次数 + */ + @TableField("redemption_count") + private Integer redemptionCount; + + /** + * 已退次数 + */ + @TableField("refund_count") + private Integer refundCount; + + /** + * 乘车人数 + */ + @TableField("passenger_count") + private Integer passengerCount; + + /** + * 是否需要实名,0表示非实名,1表示实名 + */ + @TableField("required_real_name") + private Boolean requiredRealName; + + /** + * 凭证归属渠道 + * + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherChannelEnum + */ + @TableField("channel") + private String channel; + + /** + * 凭证状态 + */ + @TableField("status") + private String status; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + /** + * 行程类型 + */ + @TableField("trip_type") + private String tripType; + + @TableField("biz_data") + private String bizData; + + @TableField("is_deleted") + @TableLogic + private Boolean isDeleted; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherInspectionRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherInspectionRecordDO.java new file mode 100644 index 0000000..7e220e8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherInspectionRecordDO.java @@ -0,0 +1,100 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 第三方送检记录 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Getter +@Setter +@TableName("tp_voucher_inspection_record") +public class TpVoucherInspectionRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 凭证id + */ + @TableField("voucher_no") + private String voucherNo; + + /** + * 用户编号 + */ + @TableField("user_no") + private String userNo; + + /** + * 送检参数 + */ + @TableField("param") + private String param; + + /** + * 返回结果 + */ + @TableField("result") + private String result; + + /** + * 送检api + */ + @TableField("api") + private String api; + + /** + * 送检时间 + */ + @TableField("inspection_time") + private LocalDateTime inspectionTime; + + /** + * 三方机构名称 + */ + @TableField("inst_name") + private String instName; + + /** + * 三方机构编码 + */ + @TableField("inst_code") + private String instCode; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherPassengerDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherPassengerDO.java new file mode 100644 index 0000000..b98c92e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherPassengerDO.java @@ -0,0 +1,94 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 凭证干系人 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Getter +@Setter +@TableName("tp_voucher_passenger") +public class TpVoucherPassengerDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 凭证id + */ + @TableField("voucher_no") + private String voucherNo; + + /** + * 乘客编号 + */ + @TableField("passenger_no") + private String passengerNo; + + /** + * 姓名 + */ + @TableField("name") + private String name; + + /** + * 联系方式 + */ + @TableField("contact_info") + private String contactInfo; + + /** + * 证件号 + */ + @TableField("cert_no") + private String certNo; + + /** + * 证件类型 + */ + @TableField("cert_type") + private String certType; + + /** + * 乘客类型 + */ + @TableField("passenger_type") + private String passengerType; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherVerificationRecordDO.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherVerificationRecordDO.java new file mode 100644 index 0000000..a77b77c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/dataobject/voucher/TpVoucherVerificationRecordDO.java @@ -0,0 +1,94 @@ +package com.deepinnet.tptradecore.common.dal.dataobject.voucher; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 检票记录 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Getter +@Setter +@TableName("tp_voucher_verification_record") +public class TpVoucherVerificationRecordDO extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 凭证id + */ + @TableField("voucher_no") + private String voucherNo; + + /** + * 用户编号 + */ + @TableField("user_no") + private String userNo; + + /** + * 验票时间 + */ + @TableField("verification_time") + private Long verificationTime; + + /** + * 核销次数 + */ + @TableField("redemption_count") + private Integer redemptionCount; + + /** + * 检票结果 + */ + @TableField("result") + private String result; + + /** + * 失败原因 + */ + @TableField("reason") + private String reason; + + /** + * 检票类型 + */ + @TableField("validation_type") + private String validationType; + + @TableField("gmt_create") + private LocalDateTime gmtCreate; + + @TableField("gmt_modified") + private LocalDateTime gmtModified; + + /** + * 租户id + */ + @TableField("tenant_id") + private String tenantId; + + @TableField("biz_data") + private String bizData; + + + @Override + public Serializable pkVal() { + return this.id; + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/TpAuditRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/TpAuditRepository.java new file mode 100644 index 0000000..cd8054e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/TpAuditRepository.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.dal.repository.audit; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.audit.TpAuditDO; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditApprovedSubmitDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditListQueryDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpOrderAuditListQueryDTO; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.audit.TpAuditOrderList; + +import java.util.List; + +/** + *

+ * 审核单 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpAuditRepository extends IService { + + /** + * 根据bizNo / bizType / status查询审核记录 + * @param bizObjNo 业务单据号 + * @param bizObjType 业务单据类型 + * @param status 审核状态 + * @return 审核记录 + */ + TpAudit queryAuditByBizObjAndStatus(String bizObjNo, String bizObjType, String status, String tenantId); + + /** + * 根据审核单号查询审核记录 + * @param auditNo 审核单号 + * @param tenantId 租户ID + * @return 舍河记录 + */ + TpAudit queryAuditByAuditNo(String auditNo, String tenantId); + + /** + * 更新审核记录 + * @param tpAuditApprovedSubmitDTO 审核参数 + */ + void updateAudit(TpAuditApprovedSubmitDTO tpAuditApprovedSubmitDTO); + + /** + * 查询审核单列表 + * @param tpAuditListQueryDTO + * @return + */ + List listAudits(TpAuditListQueryDTO tpAuditListQueryDTO); + + /** + * 查询符合条件的最近一次有效的审核单 + * + * @param auditNo 审核单号 + * @param bizObjectNo 业务单据号 + * @param bizObjType 业务单据类型 + * @param auditorNo 审核人 + * @param type 审核单状态 + * @param auditStatuses 审核状态 + * @param auditorNo 审核人编号 + * @param tenantId 租户 + * @return TpAudit + */ + TpAudit queryLatestAuditByBizObj(String auditNo, String bizObjectNo, String bizObjType,String auditorNo,Integer type, + List auditStatuses,String tenantId); + + /** + * 查询审核及订单列表 + * @param dto + * @return + */ + List listOrderAudit(TpOrderAuditListQueryDTO dto); + + void pushAuditStatus(String tenantId, String auditNo, String type); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/impl/TpAuditRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/impl/TpAuditRepositoryImpl.java new file mode 100644 index 0000000..157c314 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/audit/impl/TpAuditRepositoryImpl.java @@ -0,0 +1,118 @@ +package com.deepinnet.tptradecore.common.dal.repository.audit.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.audit.TpAuditDOConverter; +import com.deepinnet.tptradecore.common.dal.dao.audit.TpAuditDao; +import com.deepinnet.tptradecore.common.dal.dataobject.audit.TpAuditDO; +import com.deepinnet.tptradecore.common.dal.repository.audit.TpAuditRepository; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditApprovedSubmitDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpAuditListQueryDTO; +import com.deepinnet.tptradecore.common.dto.audit.TpOrderAuditListQueryDTO; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.audit.TpAuditOrderList; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 审核单 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpAuditRepositoryImpl extends ServiceImpl implements TpAuditRepository { + + @Resource + private TpAuditDOConverter tpAuditDOConverter; + @Resource + private TpAuditDao tpAuditDao; + + @Override + public TpAudit queryLatestAuditByBizObj(String auditNo, String bizObjectNo, String bizObjType,String auditorNo,Integer type, + List auditStatuses,String tenantId) { + TpAuditDO tpAuditDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(StrUtil.isNotEmpty(bizObjectNo),TpAuditDO::getBizObjectNo, bizObjectNo) + .eq(StrUtil.isNotEmpty( bizObjType),TpAuditDO::getBizObjType, bizObjType) + .eq(StrUtil.isNotEmpty( auditNo),TpAuditDO::getAuditNo,auditNo) + .eq(StrUtil.isNotEmpty( auditorNo),TpAuditDO::getAuditorNo, auditorNo) + .eq(type != null,TpAuditDO::getType, type) + .in(CollUtil.isNotEmpty(auditStatuses),TpAuditDO::getStatus, auditStatuses) + .eq(StrUtil.isNotEmpty(tenantId),TpAuditDO::getTenantId, tenantId) + .orderByDesc(TpAuditDO::getAuditTime).last("limit 1")); + + return tpAuditDOConverter.do2Model(tpAuditDO); + } + + @Override + public List listOrderAudit(TpOrderAuditListQueryDTO dto) { + List tpAuditDOList = baseMapper.listOrderAudit(dto); + + return tpAuditDOConverter.do2ModelList(tpAuditDOList); + + } + + @Override + public void pushAuditStatus(String tenantId, String auditNo, String status) { + TpAuditDO tpAuditDO = new TpAuditDO(); + tpAuditDO.setStatus(status); + tpAuditDO.setAuditTime(LocalDateTimeUtil.of(DateUtil.current())); + baseMapper.update(tpAuditDO, Wrappers.lambdaUpdate() + .eq(TpAuditDO::getAuditNo, auditNo) + .eq(TpAuditDO::getTenantId, tenantId)); + } + + @Override + public TpAudit queryAuditByBizObjAndStatus(String bizObjNo, String bizObjType, String status, String tenantId) { + TpAuditDO tpAuditDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpAuditDO::getBizObjectNo, bizObjNo) + .eq(TpAuditDO::getBizObjType, bizObjType) + .eq(TpAuditDO::getStatus, status) + .eq(TpAuditDO::getTenantId, tenantId)); + return tpAuditDOConverter.do2Model(tpAuditDO); + } + + @Override + public TpAudit queryAuditByAuditNo(String auditNo, String tenantId) { + TpAuditDO tpAuditDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpAuditDO::getAuditNo, auditNo) + .eq(TpAuditDO::getTenantId, tenantId)); + return tpAuditDOConverter.do2Model(tpAuditDO); + } + + @Override + public void updateAudit(TpAuditApprovedSubmitDTO auditConfirmDTO) { + TpAuditDO tpAuditDO = new TpAuditDO(); + tpAuditDO.setStatus(auditConfirmDTO.getStatus()); + tpAuditDO.setAuditorNo(auditConfirmDTO.getAuditNo()); + tpAuditDO.setAuditorName(auditConfirmDTO.getAuditorName()); + tpAuditDO.setRemark(auditConfirmDTO.getRemark()); + tpAuditDO.setAuditTime(auditConfirmDTO.getAuditTime()==null?LocalDateTime.now(): LocalDateTimeUtil.of(auditConfirmDTO.getAuditTime())); + baseMapper.update(tpAuditDO, Wrappers.lambdaUpdate() + .eq(TpAuditDO::getAuditNo, auditConfirmDTO.getAuditNo()) + .eq(TpAuditDO::getTenantId, auditConfirmDTO.getTenantId())); + } + + @Override + public List listAudits(TpAuditListQueryDTO tpAuditListQueryDTO) { + + List tpAuditDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(StrUtil.isNotEmpty( tpAuditListQueryDTO.getBizObjectNo()),TpAuditDO::getBizObjectNo, tpAuditListQueryDTO.getBizObjectNo()) + .eq(StrUtil.isNotEmpty( tpAuditListQueryDTO.getBizObjType()),TpAuditDO::getBizObjType, tpAuditListQueryDTO.getBizObjType()) + .eq(StrUtil.isNotEmpty( tpAuditListQueryDTO.getAuditNo()),TpAuditDO::getAuditNo, tpAuditListQueryDTO.getAuditNo()) + .eq(StrUtil.isNotEmpty( tpAuditListQueryDTO.getTenantId()),TpAuditDO::getTenantId, tpAuditListQueryDTO.getTenantId()) + .eq(StrUtil.isNotEmpty( tpAuditListQueryDTO.getAuditorNo()),TpAuditDO::getAuditorNo,tpAuditListQueryDTO.getAuditorNo())); + + return tpAuditDOConverter.do2ModelList(tpAuditDOs); + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplicantRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplicantRepository.java new file mode 100644 index 0000000..9b41490 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplicantRepository.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.*; +import com.deepinnet.tptradecore.core.model.contract.TpRefundApplicant; + +import java.util.List; + +/** + * 退票申请单仓储层 + */ +public interface TpRefundApplicantRepository extends IService { + + List getRefundApplicantByRefundOrderNos(List refundApplyOrderNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRepository.java new file mode 100644 index 0000000..d86cee6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRepository.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.condition.contract.UpdateRefundApplyOrderCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplyOrderDO; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.core.model.contract.*; + +import java.util.List; + +/** + * 退票申请单仓储层 + */ +public interface TpRefundApplyOrderRepository extends IService { + + List searchApplyOrders(TpPageQueryRefundApplyOrderDTO queryDTO); + + List getRefundApplyOrderList(TpQueryRefundApplyOrderDTO queryDTO); + + boolean save(TpRefundApplyOrder refundApplyOrder); + + boolean updateByCondition(UpdateRefundApplyOrderCondition updateCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRouteRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRouteRepository.java new file mode 100644 index 0000000..0fdb859 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundApplyOrderRouteRepository.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRoute; + +/** + *

+ * 线路 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundApplyOrderRouteRepository extends IService { + + /** + * 根据订单编号查询线路信息 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 线路模型 + */ + TpOrderRoute queryRouteByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundPassengerRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundPassengerRepository.java new file mode 100644 index 0000000..b01b128 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundPassengerRepository.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.condition.contract.QueryRefundPassengerCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundPassengerDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundPassenger; + +import java.util.List; + +/** + * 退票申请单关联乘客信息 + * + * @author amos + */ +public interface TpRefundPassengerRepository extends IService { + + List getPassengerList(QueryRefundPassengerCondition queryCondition); + + boolean batchSave(List refundPassengerList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRequirementUserRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRequirementUserRepository.java new file mode 100644 index 0000000..77819bf --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRequirementUserRepository.java @@ -0,0 +1,18 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.condition.contract.QueryRefundPassengerCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRequirementUserDO; +import com.deepinnet.tptradecore.core.model.contract.*; + +import java.util.List; + +/** + * 退票交通需求方信息 + */ +public interface TpRefundRequirementUserRepository extends IService { + + List getRequirementUserList(QueryRefundPassengerCondition queryCondition); + + boolean batchSave(List refundRequirementUserList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteRepository.java new file mode 100644 index 0000000..38c2cab --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteRepository.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRoute; + +import java.util.List; + +/** + *

+ * 线路 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundRouteRepository extends IService { + + /** + * 根据订单编号查询线路信息 + * + * @param tenantId 租户ID + * @param refundApplyOrderNos 退票申请单号 + * @return 线路模型 + */ + List listRouteByRefundApplyOrderNos(List refundApplyOrderNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteShuttleRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteShuttleRepository.java new file mode 100644 index 0000000..5130786 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundRouteShuttleRepository.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteShuttleDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRouteShuttle; + +import java.util.List; + +/** + *

+ * 班次 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpRefundRouteShuttleRepository extends IService { + + /** + * 根据订单编号与线路编号查询班次信息 + * + * @param tenantId 租户ID + * @param refundApplyOrderNos 订单编号 + * @param routeNos 线路编号 + * @return 线路模型 + */ + List queryRouteShuttle(List refundApplyOrderNos, List routeNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemElementRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemElementRepository.java new file mode 100644 index 0000000..529ac04 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemElementRepository.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundSubjectItemElementDO; +import com.deepinnet.tptradecore.core.model.contract.*; + +import java.util.List; + +/** + * 退票标的项要素 + */ +public interface TpRefundSubjectItemElementRepository extends IService { + + List getRefundSubjectItemElementList(List subjectItemIds, String tenantId); + + boolean batchSave(List refundSubjectItemElements); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemRepository.java new file mode 100644 index 0000000..73ca7fe --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundSubjectItemRepository.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundSubjectItemDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundSubjectItem; + +import java.util.List; + +/** + * 退票标的项 + */ +public interface TpRefundSubjectItemRepository extends IService { + + List getRefundSubjectItemList(List refundApplyOrderNos, String tenantId); + + boolean batchSave(List refundSubjectItemList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundVoucherRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundVoucherRecordRepository.java new file mode 100644 index 0000000..9cb79c9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/TpRefundVoucherRecordRepository.java @@ -0,0 +1,22 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundVoucherRecordDO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundVoucherRecord; + +import java.util.List; + +/** + * @author amos + * @createDate 2023-10-20 10:36:54 + */ +public interface TpRefundVoucherRecordRepository extends IService { + + Boolean save(TpRefundVoucherRecord refundVoucherRecord); + + TpRefundVoucherRecord getRefundVoucherRecord(String refundApplyOrderNo, String tenantId); + + List listRefundVoucherRecords(List refundApplyOrderNos, String tenantId); + + Boolean existRefundVoucherRecord(String refundApplyOrderNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplicantRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplicantRepositoryImpl.java new file mode 100644 index 0000000..c31521c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplicantRepositoryImpl.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundApplicantConvert; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundApplicantDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplicantDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundApplicantRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundApplicant; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 退票申请单 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:31 + */ +@Repository +public class TpRefundApplicantRepositoryImpl extends ServiceImpl implements TpRefundApplicantRepository { + + @Resource + private TpRefundApplicantConvert refundApplicantConvert; + + public List getRefundApplicantByRefundOrderNos(List refundApplyOrderNos, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpRefundApplicantDO::getRefundApplyOrderNo, refundApplyOrderNos) + .eq(TpRefundApplicantDO::getTenantId, tenantId); + List refundApplicantDOs = super.list(queryWrapper); + return CollectionUtils.isEmpty(refundApplicantDOs) ? null : refundApplicantConvert.convert2DomainList(refundApplicantDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplyOrderRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplyOrderRepositoryImpl.java new file mode 100644 index 0000000..b8b37b3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundApplyOrderRepositoryImpl.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.condition.contract.UpdateRefundApplyOrderCondition; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundApplyOrderConvert; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundApplyOrderDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplyOrderDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundApplyOrderRepository; +import com.deepinnet.tptradecore.common.dto.contract.TpPageQueryRefundApplyOrderDTO; +import com.deepinnet.tptradecore.common.dto.contract.TpQueryRefundApplyOrderDTO; +import com.deepinnet.tptradecore.core.model.contract.TpRefundApplyOrder; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 退票申请单 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:31 + */ +@Repository +public class TpRefundApplyOrderRepositoryImpl extends ServiceImpl implements TpRefundApplyOrderRepository { + + @Resource + private TpRefundApplyOrderDao refundApplyOrderDao; + + @Resource + private TpRefundApplyOrderConvert refundApplyOrderConvert; + + @Override + public List searchApplyOrders(TpPageQueryRefundApplyOrderDTO queryCondition) { + List refundApplyOrderDOs = refundApplyOrderDao.searchApplyOrders(queryCondition); + if (CollectionUtils.isEmpty(refundApplyOrderDOs)) { + return null; + } + + return refundApplyOrderConvert.convert2DomainList(refundApplyOrderDOs); + } + + public List getRefundApplyOrderList(TpQueryRefundApplyOrderDTO queryDTO) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(StringUtils.isNotBlank(queryDTO.getUserNo()), TpRefundApplyOrderDO::getUserNo, queryDTO.getUserNo()) + .eq(StringUtils.isNotBlank(queryDTO.getOrderNo()), TpRefundApplyOrderDO::getOrderNo, queryDTO.getOrderNo()) + .eq(StringUtils.isNotBlank(queryDTO.getRefundApplyOrderNo()), TpRefundApplyOrderDO::getRefundApplyOrderNo, queryDTO.getRefundApplyOrderNo()) + .in(CollectionUtils.isNotEmpty(queryDTO.getTargetStatusList()), TpRefundApplyOrderDO::getStatus, queryDTO.getTargetStatusList()) + .eq(TpRefundApplyOrderDO::getTenantId, queryDTO.getTenantId()); + + List refundApplyOrderDOs = super.list(queryWrapper); + return CollectionUtils.isEmpty(refundApplyOrderDOs) ? null : refundApplyOrderConvert.convert2DomainList(refundApplyOrderDOs); + } + + @Override + public boolean save(TpRefundApplyOrder refundApplyOrder) { + if (refundApplyOrder == null) { + return false; + } + return super.save(TpRefundApplyOrderConvert.INSTANCE.convert2DO(refundApplyOrder)); + } + + @Override + public boolean updateByCondition(UpdateRefundApplyOrderCondition updateCondition) { + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(TpRefundApplyOrderDO.class) + .set(TpRefundApplyOrderDO::getStatus, updateCondition.getTargetStatus()) + .eq(TpRefundApplyOrderDO::getRefundApplyOrderNo, updateCondition.getRefundApplyOrderNo()) + .eq(TpRefundApplyOrderDO::getStatus, updateCondition.getOriginalStatus()) + .eq(TpRefundApplyOrderDO::getTenantId, updateCondition.getTenantId()); + return super.update(wrapper); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundPassengerRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundPassengerRepositoryImpl.java new file mode 100644 index 0000000..7689beb --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundPassengerRepositoryImpl.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.condition.contract.QueryRefundPassengerCondition; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundPassengerConvert; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundPassengerDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundPassengerDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundPassengerRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundPassenger; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 退款申请单关联的乘客信息 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:31 + */ +@Repository +public class TpRefundPassengerRepositoryImpl extends ServiceImpl implements TpRefundPassengerRepository { + + @Override + public List getPassengerList(QueryRefundPassengerCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(CollectionUtils.isNotEmpty(queryCondition.getRefundApplyOrderNos()), TpRefundPassengerDO::getRefundApplyOrderNo, queryCondition.getRefundApplyOrderNos()) + .eq(StringUtils.isNotEmpty(queryCondition.getRefundSubjectItemNo()), TpRefundPassengerDO::getRefundSubjectItemNo, queryCondition.getRefundSubjectItemNo()) + .in(CollectionUtils.isNotEmpty(queryCondition.getRefundSubjectItemNos()), TpRefundPassengerDO::getRefundSubjectItemNo, queryCondition.getRefundSubjectItemNos()) + .eq(TpRefundPassengerDO::getTenantId, queryCondition.getTenantId()); + List passengerDOs = super.list(queryWrapper); + if (CollectionUtils.isEmpty(passengerDOs)) { + return null; + } + + return TpRefundPassengerConvert.INSTANCE.convert2DomainList(passengerDOs); + } + + @Override + public boolean batchSave(List refundPassengerList) { + if (CollectionUtils.isEmpty(refundPassengerList)) { + return true; + } + + return super.saveBatch(TpRefundPassengerConvert.INSTANCE.convert2DOList(refundPassengerList)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRequirementUserRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRequirementUserRepositoryImpl.java new file mode 100644 index 0000000..ca6661d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRequirementUserRepositoryImpl.java @@ -0,0 +1,49 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.condition.contract.QueryRefundPassengerCondition; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundRequirementUserConvert; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundRequirementUserDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRequirementUserDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundRequirementUserRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRequirementUser; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 退款申请单关联的交通需求方(用车方) 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:34 + */ +@Repository +public class TpRefundRequirementUserRepositoryImpl extends ServiceImpl implements TpRefundRequirementUserRepository { + + @Override + public List getRequirementUserList(QueryRefundPassengerCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(CollectionUtils.isNotEmpty(queryCondition.getRefundApplyOrderNos()), TpRefundRequirementUserDO::getRefundApplyOrderNo, queryCondition.getRefundApplyOrderNos()) + .eq(StringUtils.isNotEmpty(queryCondition.getRefundSubjectItemNo()), TpRefundRequirementUserDO::getRefundSubjectItemId, queryCondition.getRefundSubjectItemNo()) + .eq(TpRefundRequirementUserDO::getTenantId, queryCondition.getTenantId()); + + List requirementUserDOS = super.list(queryWrapper); + if (CollectionUtils.isEmpty(requirementUserDOS)) { + return null; + } + + return TpRefundRequirementUserConvert.INSTANCE.convert2DomainList(requirementUserDOS); + } + + @Override + public boolean batchSave(List refundRequirementUserList) { + if (CollectionUtils.isEmpty(refundRequirementUserList)) { + return true; + } + return super.saveBatch(TpRefundRequirementUserConvert.INSTANCE.convert2DOList(refundRequirementUserList)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteRepositoryImpl.java new file mode 100644 index 0000000..4b437fc --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteRepositoryImpl.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundRouteConverter; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundRouteDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundRouteRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRoute; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 线路 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpRefundRouteRepositoryImpl extends ServiceImpl implements TpRefundRouteRepository { + + @Resource + private TpRefundRouteConverter refundRouteConverter; + + @Override + public List listRouteByRefundApplyOrderNos(List refundApplyOrderNos, String tenantId) { + List routeDOs = super.list(Wrappers.lambdaQuery() + .in(TpRefundRouteDO::getRefundApplyOrderNo, refundApplyOrderNos) + .eq(TpRefundRouteDO::getTenantId, tenantId)); + if (CollectionUtils.isEmpty(routeDOs)) { + return null; + } + return refundRouteConverter.do2ModelList(routeDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteShuttleRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteShuttleRepositoryImpl.java new file mode 100644 index 0000000..4718a9e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundRouteShuttleRepositoryImpl.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.toolkit.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundRouteShuttleConverter; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundRouteScheduleDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundRouteShuttleDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundRouteShuttleRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundRouteShuttle; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 班次 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpRefundRouteShuttleRepositoryImpl extends ServiceImpl implements TpRefundRouteShuttleRepository { + + @Resource + private TpRefundRouteShuttleConverter refundRouteShuttleConverter; + + @Override + public List queryRouteShuttle(List refundApplyOrderNos, List routeNos, String tenantId) { + List refundRouteScheduleDOs = super.list(Wrappers.lambdaQuery() + .in(TpRefundRouteShuttleDO::getRefundApplyOrderNo, refundApplyOrderNos) + .in(TpRefundRouteShuttleDO::getRouteNo, routeNos) + .eq(TpRefundRouteShuttleDO::getTenantId, tenantId)); + if (CollectionUtils.isEmpty(refundRouteScheduleDOs)) { + return null; + } + return refundRouteShuttleConverter.do2Models(refundRouteScheduleDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemElementRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemElementRepositoryImpl.java new file mode 100644 index 0000000..d976ef9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemElementRepositoryImpl.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundSubjectItemElementConvert; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundSubjectItemElementDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundSubjectItemElementDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundSubjectItemElementRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundSubjectItemElement; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 退票标的项要素 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:31 + */ +@Repository +public class TpRefundSubjectItemElementRepositoryImpl extends ServiceImpl implements TpRefundSubjectItemElementRepository { + + @Override + public List getRefundSubjectItemElementList(List subjectItemIds, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpRefundSubjectItemElementDO::getSubjectItemNo, subjectItemIds) + .eq(TpRefundSubjectItemElementDO::getTenantId, tenantId); + + List subjectItemElementDOS = super.list(queryWrapper); + if (CollectionUtils.isEmpty(subjectItemElementDOS)) { + return null; + } + + return TpRefundSubjectItemElementConvert.INSTANCE.convert2DomainList(subjectItemElementDOS); + } + + @Override + public boolean batchSave(List refundSubjectItemElements) { + if (CollectionUtils.isEmpty(refundSubjectItemElements)) { + return false; + } + + return super.saveBatch(TpRefundSubjectItemElementConvert.INSTANCE.convert2DOList(refundSubjectItemElements)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemRepositoryImpl.java new file mode 100644 index 0000000..984de99 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundSubjectItemRepositoryImpl.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.contract.*; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundSubjectItemDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.*; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundSubjectItemRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundSubjectItem; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.*; + +import java.util.List; + +/** + * 退票标的项 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:31 + */ +@Repository +public class TpRefundSubjectItemRepositoryImpl extends ServiceImpl implements TpRefundSubjectItemRepository { + + @Override + public List getRefundSubjectItemList(List refundApplyOrderNos, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpRefundSubjectItemDO::getRefundApplyOrderNo, refundApplyOrderNos) + .eq(TpRefundSubjectItemDO::getTenantId, tenantId); + + List subjectItemDOS = super.list(queryWrapper); + if (CollectionUtils.isEmpty(subjectItemDOS)) { + return null; + } + + return TpRefundSubjectItemConvert.INSTANCE.convert2DomainList(subjectItemDOS); + } + + @Override + public boolean batchSave(List refundSubjectItemList) { + if (CollectionUtils.isEmpty(refundSubjectItemList)) { + return false; + } + + return super.saveBatch(TpRefundSubjectItemConvert.INSTANCE.convert2DOList(refundSubjectItemList)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundVoucherRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundVoucherRecordRepositoryImpl.java new file mode 100644 index 0000000..431bb0e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/contract/impl/TpRefundVoucherRecordRepositoryImpl.java @@ -0,0 +1,68 @@ +package com.deepinnet.tptradecore.common.dal.repository.contract.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.contract.TpRefundVoucherRecordConvert; +import com.deepinnet.tptradecore.common.dal.dao.contract.TpRefundVoucherRecordDao; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundVoucherRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundVoucherRecordRepository; +import com.deepinnet.tptradecore.core.model.contract.TpRefundVoucherRecord; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author amos + * @createDate 2023-10-20 10:36:54 + */ +@Service +public class TpRefundVoucherRecordRepositoryImpl extends ServiceImpl implements TpRefundVoucherRecordRepository { + + @Resource + private TpRefundVoucherRecordConvert refundVoucherRecordConvert; + + @Override + public Boolean save(TpRefundVoucherRecord refundVoucherRecord) { + if (refundVoucherRecord == null) { + return Boolean.TRUE; + } + + return super.save(refundVoucherRecordConvert.convert2DO(refundVoucherRecord)); + } + + @Override + public TpRefundVoucherRecord getRefundVoucherRecord(String refundApplyOrderNo, String tenantId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(TpRefundVoucherRecordDO::getRefundApplyOrderNo, refundApplyOrderNo) + .eq(TpRefundVoucherRecordDO::getTenantId, tenantId); + + TpRefundVoucherRecordDO refundVoucherRecordDO = super.getOne(wrapper); + return refundVoucherRecordDO == null ? null : refundVoucherRecordConvert.convert2Domain(refundVoucherRecordDO); + } + + @Override + public List listRefundVoucherRecords(List refundApplyOrderNos, String tenantId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .in(TpRefundVoucherRecordDO::getRefundApplyOrderNo, refundApplyOrderNos) + .eq(TpRefundVoucherRecordDO::getTenantId, tenantId); + + List refundVoucherRecordDOs = super.list(wrapper); + return CollectionUtils.isEmpty(refundVoucherRecordDOs) ? null : refundVoucherRecordConvert.convert2DomainList(refundVoucherRecordDOs); + } + + @Override + public Boolean existRefundVoucherRecord(String refundApplyOrderNo, String tenantId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(TpRefundVoucherRecordDO::getRefundApplyOrderNo, refundApplyOrderNo) + .eq(TpRefundVoucherRecordDO::getTenantId, tenantId); + + return super.count(wrapper) > 0; + } +} + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderBalanceRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderBalanceRepository.java new file mode 100644 index 0000000..ef6aa64 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderBalanceRepository.java @@ -0,0 +1,22 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderBalanceDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderBalanceRepository extends IService { + + /** + * 更新尾款支付状态 + * @param originalOrderNo 原始订单编号 + * @param tenantId 租户ID + */ + void updateBalancePaidStatusByOrderNo(String originalOrderNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderCarpoolRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderCarpoolRecordRepository.java new file mode 100644 index 0000000..ee4ba67 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderCarpoolRecordRepository.java @@ -0,0 +1,22 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderCarpoolRecordDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.core.model.order.TpOrderCarpoolRecord; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author juju + * @since 2024-05-20 + */ +public interface TpOrderCarpoolRecordRepository extends IService { + + TpOrderCarpoolRecord getCarpoolRecordByCardBizNo(String cardBizNo); + + List listCarpoolRecordBySubjectItemNos(List subjectItemNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeApplyRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeApplyRepository.java new file mode 100644 index 0000000..0458114 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeApplyRepository.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangeApplyRepository extends IService { + + + TpOrderChangeApplyDO getOrderChangedApplyDetail(String tenantId, String applyNo, String orderNo,String originalOrderNo, String applyType, List applyStatus); + + boolean submitApprovedResult(String applyNo, String originalApplyStatus, String targetApplyStatus, String orderNo, String originalOrderNo, LocalDateTime approvedTime, String tenantId, String approvedRemark); + + List listByApplyNos(String tenantId, List applyNoList); + + TpOrderChangeApplyDO getLatestOrderChangedApplyDetail(String tenantId, String orderNo,String originalOrderNo, List applyTypes, List applyStatuses); + + List listOrderChangeApply(String tenantId, String orderNo,String originalOrderNo, List applyTypes, List applyStatuses); + + List batchQueryOrderChangeApplyByOrderNos(String tenantId, List orderNos, List originalOrderNos, List applyTypes, List applyStatuses); + + boolean submitReduceFscApply(String applyNo, String originalApplyStatus, String targetApplyStatus, String orderNo, String originalOrderNo, LocalDateTime finalRfscApplyTime, String tenantId, String rfscApplyReason); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemFactorRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemFactorRepository.java new file mode 100644 index 0000000..27bb837 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemFactorRepository.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemFactorDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangeItemFactorRepository extends IService { + + List listFactorsByItemNoAndOrderNo(String tenantId, String itemNo, String originalOrderNo); + + List listFactorsByItemNos(String tenantId, List itemNoList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemRepository.java new file mode 100644 index 0000000..1e737be --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangeItemRepository.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangeItemRepository extends IService { + + List listItemsByApplyNoAndOrderNo(String tenantId, String applyNo, String originalOrderNo); + + List listItemsByApplyNos(String tenantId, List applyNoList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangePriceRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangePriceRecordRepository.java new file mode 100644 index 0000000..43acce1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChangePriceRecordRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangePriceRecordDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderChangePriceRecordRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChargeRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChargeRecordRepository.java new file mode 100644 index 0000000..877b4b6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderChargeRecordRepository.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChargeRecordDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.core.model.order.TpOrderChargeRecord; + +import java.util.List; + +/** + *

+ * 费用信息 服务类 + *

+ * + * @author abel + * @since 2023-11-17 + */ +public interface TpOrderChargeRecordRepository extends IService { + + List getChargeRecordsByOrderNo(String orderNo, String originalNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDepositRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDepositRepository.java new file mode 100644 index 0000000..8b9bb90 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDepositRepository.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDepositDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderDepositRepository extends IService { + + void updateDepositPaidStatusByOrderNo(String originalOrderNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDiscountRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDiscountRepository.java new file mode 100644 index 0000000..63e05d8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDiscountRepository.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDiscountDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderDiscount; + +import java.util.List; + +/** + *

+ * 优惠信息 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderDiscountRepository extends IService { + + /** + * 根据订单编号 / 计价记录编号查询优惠信息 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param pricingNo 计价记录编号 + * @return 优惠信息模型列表 + */ + List queryOrderDiscountsByOrderNoAndPriceNo(String tenantId, String orderNo, String pricingNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchFleetRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchFleetRepository.java new file mode 100644 index 0000000..9805853 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchFleetRepository.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchFleetDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 订单分配单车队 服务类 + *

+ * + * @author abel + * @since 2023-11-23 + */ +public interface TpOrderDispatchFleetRepository extends IService { + + /** + * 查询最新的车队分配 + * + * @param tenantId + * @param orderDispatchNo + * @return + */ + TpOrderDispatchFleetDO selectFleet(String tenantId, String orderDispatchNo); + + void deleteByCode(List codeList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchJoinFleetRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchJoinFleetRepository.java new file mode 100644 index 0000000..c184e93 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchJoinFleetRepository.java @@ -0,0 +1,19 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchJoinFleetDO; + +import java.util.List; + + +/** + * Description: 订单分配的合营车队 + * Date: 2024/6/3 + * Author: lijunheng + */ +public interface TpOrderDispatchJoinFleetRepository extends IService { + + void deleteByDispatchFleetCode(String orderDispatchFleetCode); + + List selectJoinFleets(String orderDispatchFleetCode); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchRepository.java new file mode 100644 index 0000000..585f8a6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDispatchRepository.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderDispatchRepository extends IService { + + TpOrderDispatchDO getDispatchOrder(String tenantId, String orderDispatchNo, String originalOrderNo,List statuses); + + List listDispatchOrderByOrderNo(String tenantId, String originalOrderNo); + + void updateDispatchStatus(String tenantId, String orderDispatchNo, String originalOrderNo, TpOrderDispatchStatusEnum tpOrderDispatchStatusEnum); + + List listOrderDispatchDetail(String tenantId, List originalOrderNoList, List statuses); + + TpOrderDispatchDO getDispatchOrder(String tenantId, String originalOrderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDriverInfoRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDriverInfoRepository.java new file mode 100644 index 0000000..0c28ad9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderDriverInfoRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDriverInfoDO; + +/** + *

+ * 司机信息 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderDriverInfoRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderElementRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderElementRepository.java new file mode 100644 index 0000000..09e53c8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderElementRepository.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderElementDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderElement; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderElementRepository extends IService { + + /** + * 根据订单编号查询下单要素 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 下单要素模型列表 + */ + List queryOrderElementsByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderInvoiceRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderInvoiceRepository.java new file mode 100644 index 0000000..6fc00c5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderInvoiceRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderInvoiceDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-29 + */ +public interface TpOrderInvoiceRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderItemElementRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderItemElementRepository.java new file mode 100644 index 0000000..ba1e18d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderItemElementRepository.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderItemElementDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderItemElement; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderItemElementRepository extends IService { + + /** + * 根据订单编号 / 标的项编号查询标的项要素模型列表 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param itemNo 标的项编号 + * @return 标的项要素模型列表 + */ + List queryOrderItemElementsByOrderNoAndItemNo(String tenantId, String orderNo, String itemNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerRepository.java new file mode 100644 index 0000000..88dccfa --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerRepository.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPassenger; + +/** + *

+ * 乘客 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPassengerRepository extends IService { + + /** + * 根据订单编号 / 乘客编号查询乘客信息 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param passengerNo 乘客编号 + * @return 乘客模型信息列表 + */ + TpOrderPassenger queryOrderPassengersByOrderNoAndPassengerNo(String tenantId, String orderNo, String passengerNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerTripRelationRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerTripRelationRepository.java new file mode 100644 index 0000000..2f93d8d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPassengerTripRelationRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerTripRelationDO; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPassengerTripRelationRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPlacerRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPlacerRepository.java new file mode 100644 index 0000000..b0cee82 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPlacerRepository.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPlacerDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPlacer; + +import java.util.List; + +/** + *

+ * 下单人 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPlacerRepository extends IService { + + /** + * 根据订单编号查询下单人 + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 下单人模型 + */ + TpOrderPlacer queryPlacerByOrderNo(String tenantId, String orderNo); + + List queryPlacerByOrderNos(String tenantId, List orderNos); + + List queryPlacerByPhone(String tenantId, String phone); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordDetailRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordDetailRepository.java new file mode 100644 index 0000000..a1f1e53 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordDetailRepository.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDetailDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecord; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecordDetail; + +import java.util.List; + +/** + *

+ * 计价记录详情 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPriceRecordDetailRepository extends IService { + + /** + * 根据订单编号 / 计价记录编号查询计价记录详情 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 计价记录模型列表 + */ + List queryPriceRecordDetailsByOrderNoAndPricingNo(String tenantId, String orderNo, String pricingNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordRepository.java new file mode 100644 index 0000000..12f24c0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderPriceRecordRepository.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecord; + +import java.util.List; + +/** + *

+ * 计价记录 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderPriceRecordRepository extends IService { + + /** + * 根据订单编号查询计价记录 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 计价记录模型列表 + */ + List queryPriceRecordsByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderReceivedRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderReceivedRepository.java new file mode 100644 index 0000000..735447a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderReceivedRepository.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderReceivedDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.enums.order.TpOrderReceivedStatusEnum; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +public interface TpOrderReceivedRepository extends IService { + + TpOrderReceivedDO getOrderReceived(String tenantId, String receivedNo, String bizObjNo,String bizObjType); + + List listOrderReceivedByOrderNo(String tenantId, String bizObjNo,String bizObjType); + + void updateReceivedStatus(String tenantId, String orderReceiveNo, String bizObjNo,String bizObjType, TpOrderReceivedStatusEnum tpOrderReceivedStatusEnum); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRepository.java new file mode 100644 index 0000000..9f6a4cd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRepository.java @@ -0,0 +1,130 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDO; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpBatchQueryOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.model.order.TpOrderQueryList; + +import java.util.List; + +/** + *

+ * 订单 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpOrderRepository extends IService { + + /** + * 查询订单列表 + * @param tpOrderQueryList 查询条件 + * @return 列表 + */ + CommonPage queryOrderList(TpOrderQueryList tpOrderQueryList); + + /** + * 根据订单编号查询订单详情 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param userNo 用户编号 + * @return 订单领域模型 + */ + TpOrder queryByTenantIdAndOrderNo(String tenantId, String orderNo, String userNo); + + /** + * 根据订单编号更新订单状态 + * @param pushStatus 推进状态 + */ + void updateStatusByOrderNo(TpOrderPushStatus pushStatus); + + /** + * 查询子订单数据 + * @param tenantId 租户ID + * @param parentOrderNo 父订单编号 + * @return 子订单模型列表 + */ + List queryOrderListByParentNo(String tenantId, String parentOrderNo); + + /** + * 更改订单审核状态 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param status 需要更改的审核状态 + */ + void changeApprovalOrder(String tenantId, String orderNo, Integer status); + + /** + * 根据线路编号查询未核销的订单数量 + * @param routeNo 线路编号 + * @param tenantId 租户ID + * @return 未核销订单数量 + */ + int queryUnverifiedOrderByRouteNo(String routeNo, String tenantId); + + /** + * 根据线路班次编号查询未核销的订单数量 + * @param routeNo 线路编号 + * @param shuttleNo 班次编号 + * @param tenantId 租户ID + * @return 未核销订单数量 + */ + int queryUnverifiedOrderByRouteNoAndShuttleNo(String routeNo, String shuttleNo, String tenantId); + + /** + * 根据原始订单查询订单详情 + * @param tenantId 租户ID + * @param originalOrderNo 原始订单编号 + * @param userNo 用户编号 + * @return 订单详情 + */ + TpOrder getOrderByOriginalOrderNo(String tenantId, String originalOrderNo, String userNo); + + /** + * 查询C端包车订单列表 + * @param tpOrderQueryList 查询入参 + * @return 返回列表 + */ + List queryCharterBusOrderListToC(TpOrderQueryList tpOrderQueryList); + + /** + * 预约包车B端订单列表 + * @param tpOrderQueryList 查询入参 + * @return 订单列表 + */ + List queryCharterBusOrderListToB(TpOrderQueryList tpOrderQueryList); + + /** + * 批量查询订单列表 + * @param batchQueryOrder 查询入参 + * @return 订单列表 + */ + List batchQueryOrderList(TpBatchQueryOrder batchQueryOrder); + + /** + * 批量查询订单列表 + * @param startCount 其实索引 + * @param batch 批量值 + * @return 订单列表 + */ + List queryOrderBatchList(long startCount, int batch); + + /** + * 查询订单数量 + * @param tpOrderQueryList 查询条件 + * @return 订单数量 + */ + Long queryCustomBusOrderCount(TpOrderQueryList tpOrderQueryList); + + /** + * pad端预约列表 + * @param tpOrderQueryList 查询参数 + * @return 订单拼车预约数据 + */ + List queryPadCarpoolOrderList(TpOrderQueryList tpOrderQueryList); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRequirementUserRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRequirementUserRepository.java new file mode 100644 index 0000000..3928621 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRequirementUserRepository.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRequirementUserDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRequirementUser; + +/** + *

+ * 需求方 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderRequirementUserRepository extends IService { + + /** + * 根据订单编号查询用车需求方 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 用车需求方模型 + */ + TpOrderRequirementUser queryRequirementUserByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRescheduleRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRescheduleRecordRepository.java new file mode 100644 index 0000000..4bc3792 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRescheduleRecordRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRescheduleRecordDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2024-07-15 + */ +public interface TpOrderRescheduleRecordRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteRepository.java new file mode 100644 index 0000000..d597834 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteRepository.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRoute; + +import java.util.List; + +/** + *

+ * 线路 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderRouteRepository extends IService { + + /** + * 根据订单编号查询线路信息 + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 线路模型 + */ + List queryRouteByOrderNo(String tenantId, String orderNo); + + /** + * 根据订单编号列表查询线路信息 + * + * @param tenantId 租户ID + * @param orderNos 订单编号列表 + * @return 线路模型 + */ + List queryRouteByOrderNos(String tenantId, List orderNos); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteShuttleRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteShuttleRepository.java new file mode 100644 index 0000000..81945d5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderRouteShuttleRepository.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteShuttleDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderRouteShuttle; + +/** + *

+ * 班次 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderRouteShuttleRepository extends IService { + + /** + * 根据订单编号与线路编号查询班次信息 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param routeNo 线路编号 + * @return 线路模型 + */ + TpOrderRouteShuttle queryRouteScheduleByOrderNoAndRouteNo(String tenantId, String orderNo, String routeNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderServiceTargetRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderServiceTargetRepository.java new file mode 100644 index 0000000..4893599 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderServiceTargetRepository.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderServiceTargetDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderTargetService; + +/** + *

+ * 服务对象 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderServiceTargetRepository extends IService { + + /** + * 根据订单编号查询服务对象 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 服务对象 + */ + TpOrderTargetService queryServiceTargetByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderSubjectItemRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderSubjectItemRepository.java new file mode 100644 index 0000000..fdf4eed --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderSubjectItemRepository.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderSubjectItemDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderSubjectItem; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderSubjectItemRepository extends IService { + + /** + * 根据订单编号查询标的项列表 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 标的项模型列表 + */ + List queryOrderSubjectItemsByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTransportationRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTransportationRepository.java new file mode 100644 index 0000000..348609a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTransportationRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTransportationDO; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderTransportationRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelDispatchRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelDispatchRecordRepository.java new file mode 100644 index 0000000..eee1775 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelDispatchRecordRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelDispatchRecordDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author abel + * @since 2023-11-23 + */ +public interface TpOrderTravelDispatchRecordRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelTripRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelTripRepository.java new file mode 100644 index 0000000..90d9d60 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTravelTripRepository.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelTripDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderTravelTrip; + +import java.util.List; + +/** + *

+ * 行程单 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderTravelTripRepository extends IService { + + /** + * 根据订单编号查询行程单 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 行程单模型列表 + */ + List queryOrderTravelTripsByOrderNo(String tenantId, String orderNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTripPositionRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTripPositionRepository.java new file mode 100644 index 0000000..8e39bb7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderTripPositionRepository.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTripPositionDO; +import com.deepinnet.tptradecore.core.model.order.TpOrderTripPosition; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderTripPositionRepository extends IService { + + /** + * 根据行程单查询位置信息 + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @return 位置信息列表 + */ + List queryPositionsByOrderNoAndTripNo(String tenantId, String orderNo, String tripNo); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderVehicleInfoRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderVehicleInfoRepository.java new file mode 100644 index 0000000..1527e14 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpOrderVehicleInfoRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderVehicleInfoDO; + +/** + *

+ * 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +public interface TpOrderVehicleInfoRepository extends IService { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserPassengerRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserPassengerRepository.java new file mode 100644 index 0000000..04c3be5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserPassengerRepository.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserPassengerDO; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; + +import java.util.List; + +/** + *

+ * 用户乘客 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpUserPassengerRepository extends IService { + + /** + * 根据用户编号与乘客证件类型与证件号查询乘客信息 + * @param tenantId 租户ID + * @param userNo 用户编号 + * @param identityType 证件类型 + * @param identityNumber 证件编号 + * @return 乘客信息 + */ + TpUserPassenger queryPassengerByUserNoAndPassengerIdentity(String tenantId, String userNo, String identityType, String identityNumber); + + /** + * 根据乘客编号查询乘客信息 + * @param tenantId 租户ID + * @param passengerNo 乘客编号 + * @param userNo 用户编号 + * @return 乘客信息 + */ + TpUserPassenger queryPassengerByUserNoAndPassengerNo(String tenantId, String passengerNo, String userNo); + + /** + * 更新乘客信息 + * @param tpUserPassenger 乘客信息 + */ + void updateByPassengerNo(TpUserPassenger tpUserPassenger); + + /** + * 查询乘客列表 + * @param tpUserPassengerCondition 查询参数 + * @return 乘客列表 + */ + List queryPassengerListByUserNo(TpUserPassengerCondition tpUserPassengerCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserRouteCollectionRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserRouteCollectionRepository.java new file mode 100644 index 0000000..6db4bc3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/TpUserRouteCollectionRepository.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dal.repository.order; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserRouteCollectionDO; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollectionCondition; + +import java.util.List; + +/** + *

+ * 用户线路收集 服务类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +public interface TpUserRouteCollectionRepository extends IService { + + /** + * 分页查询收集线路 + * @param tpUserRouteCollectionCondition 查询条件 + * @return 收集线路列表 + */ + List queryRouteCollectionList(TpUserRouteCollectionCondition tpUserRouteCollectionCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderBalanceRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderBalanceRepositoryImpl.java new file mode 100644 index 0000000..140d8cf --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderBalanceRepositoryImpl.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderBalanceDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderBalanceDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderBalanceRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDepositStatusEnum; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderBalanceRepositoryImpl extends ServiceImpl implements TpOrderBalanceRepository { + + @Override + public void updateBalancePaidStatusByOrderNo(String originalOrderNo, String tenantId) { + TpOrderBalanceDO tpOrderBalanceDO = new TpOrderBalanceDO(); + tpOrderBalanceDO.setStatus(TpOrderDepositStatusEnum.PAID.getStatus()); + tpOrderBalanceDO.setPayTime(DateUtil.current()); + baseMapper.update(tpOrderBalanceDO, Wrappers.lambdaQuery() + .eq(TpOrderBalanceDO::getOrderNo, originalOrderNo) + .eq(TpOrderBalanceDO::getTenantId, tenantId)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderCarpoolRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderCarpoolRecordRepositoryImpl.java new file mode 100644 index 0000000..fbeda76 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderCarpoolRecordRepositoryImpl.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderCarpoolRecordConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderCarpoolRecordDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderCarpoolRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderCarpoolRecordRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderCarpoolRecord; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author juju + * @since 2024-05-20 + */ +@Service +public class TpOrderCarpoolRecordRepositoryImpl extends ServiceImpl implements TpOrderCarpoolRecordRepository { + + @Resource + private TpOrderCarpoolRecordConverter carpoolRecordConverter; + + @Override + public TpOrderCarpoolRecord getCarpoolRecordByCardBizNo(String cardBizNo) { + LambdaQueryWrapper wrappers = Wrappers.lambdaQuery() + .eq(TpOrderCarpoolRecordDO::getCardBizNo, cardBizNo); + return carpoolRecordConverter.do2Model(super.getOne(wrappers)); + } + + @Override + public List listCarpoolRecordBySubjectItemNos(List subjectItemNos, String tenantId) { + LambdaQueryWrapper wrappers = Wrappers.lambdaQuery() + .in(TpOrderCarpoolRecordDO::getSubjectItemNo, subjectItemNos) + .eq(TpOrderCarpoolRecordDO::getTenantId, tenantId); + return carpoolRecordConverter.doList2ModelList(super.list(wrappers)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeApplyRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeApplyRepositoryImpl.java new file mode 100644 index 0000000..4e4c5a3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeApplyRepositoryImpl.java @@ -0,0 +1,111 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderChangeApplyDao; +import com.deepinnet.tptradecore.common.dal.dataobject.audit.TpAuditDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeApplyRepository; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderChangeApplyRepositoryImpl extends ServiceImpl implements TpOrderChangeApplyRepository { + + @Override + public TpOrderChangeApplyDO getOrderChangedApplyDetail(String tenantId, String applyNo, String orderNo,String originalOrderNo, String applyType, List applyStatusList) { + return baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(StrUtil.isNotEmpty(applyNo),TpOrderChangeApplyDO::getApplyNo, applyNo) + .eq(StrUtil.isNotEmpty(originalOrderNo),TpOrderChangeApplyDO::getOriginalOrderNo, originalOrderNo) +// .eq(StrUtil.isNotEmpty(orderNo),TpOrderChangeApplyDO::getOrderNo, orderNo) + .eq(StrUtil.isNotEmpty(applyType),TpOrderChangeApplyDO::getApplyType, applyType) + .in(CollUtil.isNotEmpty(applyStatusList),TpOrderChangeApplyDO::getApplyStatus, applyStatusList) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId) + .orderByDesc(TpOrderChangeApplyDO::getApplyTime).last("limit 1")); + } + + @Override + public boolean submitApprovedResult(String applyNo, String originalApplyStatus, String targetApplyStatus, String orderNo, String originalOrderNo, LocalDateTime approvedTime, String tenantId, String approvedRemark) { + TpOrderChangeApplyDO orderChangeApplyDO = new TpOrderChangeApplyDO(); + orderChangeApplyDO.setApplyNo(applyNo); + orderChangeApplyDO.setApplyStatus(targetApplyStatus); + orderChangeApplyDO.setApprovedTime(approvedTime); + orderChangeApplyDO.setApprovedRemark(approvedRemark); + int updateCount = baseMapper.update(orderChangeApplyDO, Wrappers.lambdaUpdate() + .eq(TpOrderChangeApplyDO::getApplyNo, applyNo) +// .eq(StrUtil.isNotEmpty(orderNo),TpOrderChangeApplyDO::getOrderNo, orderNo) + .eq(StrUtil.isNotEmpty(originalOrderNo),TpOrderChangeApplyDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderChangeApplyDO::getApplyStatus, originalApplyStatus) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId)); + return updateCount>0; + } + + @Override + public List listByApplyNos(String tenantId, List applyNoList) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .in(CollUtil.isNotEmpty(applyNoList),TpOrderChangeApplyDO::getApplyNo, applyNoList) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId) + .orderByDesc(TpOrderChangeApplyDO::getApplyTime)); + } + + @Override + public TpOrderChangeApplyDO getLatestOrderChangedApplyDetail(String tenantId, String orderNo,String originalOrderNo, List applyTypes, List applyStatuses) { + return baseMapper.selectOne(Wrappers.lambdaQuery() +// .eq(StrUtil.isNotEmpty(orderNo),TpOrderChangeApplyDO::getOrderNo, orderNo) + .eq(StrUtil.isNotEmpty(originalOrderNo),TpOrderChangeApplyDO::getOriginalOrderNo, originalOrderNo) + .in(CollUtil.isNotEmpty(applyTypes),TpOrderChangeApplyDO::getApplyType, applyTypes) + .in(CollUtil.isNotEmpty(applyStatuses),TpOrderChangeApplyDO::getApplyStatus, applyStatuses) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId) + .orderByDesc(TpOrderChangeApplyDO::getApplyTime).last("limit 1")); + } + + @Override + public List listOrderChangeApply(String tenantId, String orderNo,String originalOrderNo, List applyTypes, List applyStatuses) { + return baseMapper.selectList(Wrappers.lambdaQuery() +// .eq(StrUtil.isNotEmpty(orderNo),TpOrderChangeApplyDO::getOrderNo, orderNo) + .eq(StrUtil.isNotEmpty(originalOrderNo),TpOrderChangeApplyDO::getOriginalOrderNo, originalOrderNo) + .in(CollUtil.isNotEmpty(applyTypes),TpOrderChangeApplyDO::getApplyType, applyTypes) + .in(CollUtil.isNotEmpty(applyStatuses),TpOrderChangeApplyDO::getApplyStatus, applyStatuses) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId) + .orderByDesc(TpOrderChangeApplyDO::getApplyTime)); + } + + @Override + public List batchQueryOrderChangeApplyByOrderNos(String tenantId, List orderNos, List originalOrderNos, List applyTypes, List applyStatuses) { + return baseMapper.selectList(Wrappers.lambdaQuery() +// .in(CollUtil.isNotEmpty(orderNos),TpOrderChangeApplyDO::getOrderNo, orderNos) + .in(CollUtil.isNotEmpty(originalOrderNos),TpOrderChangeApplyDO::getOriginalOrderNo, originalOrderNos) + .in(CollUtil.isNotEmpty(applyTypes),TpOrderChangeApplyDO::getApplyType, applyTypes) + .in(CollUtil.isNotEmpty(applyStatuses),TpOrderChangeApplyDO::getApplyStatus, applyStatuses) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId) + .orderByDesc(TpOrderChangeApplyDO::getApplyTime)); + } + + @Override + public boolean submitReduceFscApply(String applyNo, String originalApplyStatus, String targetApplyStatus, String orderNo, String originalOrderNo, LocalDateTime finalRscApplyTime, String tenantId, String rscApplyReason) { + TpOrderChangeApplyDO orderChangeApplyDO = new TpOrderChangeApplyDO(); + orderChangeApplyDO.setApplyNo(applyNo); + orderChangeApplyDO.setApplyStatus(targetApplyStatus); + orderChangeApplyDO.setRscApplyTime(finalRscApplyTime); + orderChangeApplyDO.setRscApplyReason(rscApplyReason); + int updateCount = baseMapper.update(orderChangeApplyDO, Wrappers.lambdaUpdate() + .eq(TpOrderChangeApplyDO::getApplyNo, applyNo) + .eq(StrUtil.isNotEmpty(orderNo),TpOrderChangeApplyDO::getOrderNo, orderNo) + .eq(StrUtil.isNotEmpty(originalOrderNo),TpOrderChangeApplyDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderChangeApplyDO::getApplyStatus, originalApplyStatus) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId)); + return updateCount>0; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemFactorRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemFactorRepositoryImpl.java new file mode 100644 index 0000000..1eea903 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemFactorRepositoryImpl.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemFactorDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderChangeItemFactorDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeItemFactorRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderChangeItemFactorRepositoryImpl extends ServiceImpl implements TpOrderChangeItemFactorRepository { + + @Override + public List listFactorsByItemNoAndOrderNo(String tenantId, String itemNo, String originalOrderNo) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderChangeItemFactorDO::getChangeItemNo, itemNo) + .eq(TpOrderChangeItemFactorDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderChangeItemFactorDO::getTenantId, tenantId)); + } + + @Override + public List listFactorsByItemNos(String tenantId, List itemNoList) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .in(TpOrderChangeItemFactorDO::getChangeItemNo, itemNoList) + .eq(TpOrderChangeItemFactorDO::getTenantId, tenantId)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemRepositoryImpl.java new file mode 100644 index 0000000..3f86da4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangeItemRepositoryImpl.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderChangeItemDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeItemRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderChangeItemRepositoryImpl extends ServiceImpl implements TpOrderChangeItemRepository { + + @Override + public List listItemsByApplyNoAndOrderNo(String tenantId, String applyNo, String originalOrderNo) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderChangeItemDO::getApplyNo, applyNo) + .eq(TpOrderChangeItemDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderChangeItemDO::getTenantId, tenantId)); + } + + @Override + public List listItemsByApplyNos(String tenantId, List applyNoList) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .in(TpOrderChangeItemDO::getApplyNo, applyNoList) + .eq(TpOrderChangeItemDO::getTenantId, tenantId)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangePriceRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangePriceRecordRepositoryImpl.java new file mode 100644 index 0000000..04caa4f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChangePriceRecordRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangePriceRecordDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderChangePriceRecordDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangePriceRecordRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderChangePriceRecordRepositoryImpl extends ServiceImpl implements TpOrderChangePriceRecordRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChargeRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChargeRecordRepositoryImpl.java new file mode 100644 index 0000000..a2a0ee4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderChargeRecordRepositoryImpl.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderChargeRecordConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChargeRecordDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderChargeRecordDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChargeRecordRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.core.model.order.TpOrderChargeRecord; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 费用信息 服务实现类 + *

+ * + * @author abel + * @since 2023-11-17 + */ +@Service +public class TpOrderChargeRecordRepositoryImpl extends ServiceImpl implements TpOrderChargeRecordRepository { + + @Resource + private TpOrderChargeRecordConverter tpOrderChargeRecordConverter; + + @Override + public List getChargeRecordsByOrderNo(String orderNo, String originalNo, String tenantId) { + List tpOrderChargeRecordDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(StrUtil.isNotEmpty(orderNo), TpOrderChargeRecordDO::getOrderNo, orderNo) + .eq(TpOrderChargeRecordDO::getOriginalOrderNo, originalNo) + .eq(TpOrderChargeRecordDO::getTenantId, tenantId)); + return tpOrderChargeRecordConverter.doList2ModelList(tpOrderChargeRecordDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDepositRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDepositRepositoryImpl.java new file mode 100644 index 0000000..3cfc782 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDepositRepositoryImpl.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDepositDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDepositDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDepositRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDepositStatusEnum; +import org.springframework.stereotype.Service; + +import java.sql.Wrapper; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderDepositRepositoryImpl extends ServiceImpl implements TpOrderDepositRepository { + + @Override + public void updateDepositPaidStatusByOrderNo(String originalOrderNo, String tenantId) { + TpOrderDepositDO tpOrderDepositDO = new TpOrderDepositDO(); + tpOrderDepositDO.setStatus(TpOrderDepositStatusEnum.PAID.getStatus()); + tpOrderDepositDO.setPayTime(DateUtil.current()); + baseMapper.update(tpOrderDepositDO, Wrappers.lambdaQuery() + .eq(TpOrderDepositDO::getOrderNo, originalOrderNo) + .eq(TpOrderDepositDO::getTenantId, tenantId)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDiscountRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDiscountRepositoryImpl.java new file mode 100644 index 0000000..d5771a9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDiscountRepositoryImpl.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderDiscountConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDiscountDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDiscountDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDiscountRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderDiscount; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 优惠信息 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderDiscountRepositoryImpl extends ServiceImpl implements TpOrderDiscountRepository { + + @Resource + private TpOrderDiscountConverter tpOrderDiscountConverter; + + @Override + public List queryOrderDiscountsByOrderNoAndPriceNo(String tenantId, String orderNo, String pricingNo) { + List tpOrderDiscountDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderDiscountDO::getTenantId, tenantId) + .eq(TpOrderDiscountDO::getOrderNo, orderNo) + .eq(TpOrderDiscountDO::getPricingNo, pricingNo)); + return tpOrderDiscountConverter.doList2ModelList(tpOrderDiscountDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchFleetRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchFleetRepositoryImpl.java new file mode 100644 index 0000000..446950b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchFleetRepositoryImpl.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchFleetDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDispatchFleetDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDispatchFleetRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 订单分配单车队 服务实现类 + *

+ * + * @author abel + * @since 2023-11-23 + */ +@Service +public class TpOrderDispatchFleetRepositoryImpl extends ServiceImpl implements TpOrderDispatchFleetRepository { + + @Override + public TpOrderDispatchFleetDO selectFleet(String tenantId, String orderDispatchNo) { + return baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderDispatchFleetDO::getDispatchNo,orderDispatchNo) + .eq(TpOrderDispatchFleetDO::getTenantId, tenantId) + ); + } + + @Override + public void deleteByCode(List codeList) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(TpOrderDispatchFleetDO.class) + .in(TpOrderDispatchFleetDO::getCode, codeList); + baseMapper.delete(wrapper); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchJoinFleetRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchJoinFleetRepositoryImpl.java new file mode 100644 index 0000000..26d0d99 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchJoinFleetRepositoryImpl.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDispatchJoinFleetDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchJoinFleetDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDispatchJoinFleetRepository; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Description: + * Date: 2024/6/3 + * Author: lijunheng + */ +@Service +public class TpOrderDispatchJoinFleetRepositoryImpl extends ServiceImpl implements TpOrderDispatchJoinFleetRepository { + + @Override + public void deleteByDispatchFleetCode(String orderDispatchFleetCode) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(TpOrderDispatchJoinFleetDO.class) + .eq(TpOrderDispatchJoinFleetDO::getOrderDispatchFleetCode, orderDispatchFleetCode); + baseMapper.delete(wrapper); + } + + @Override + public List selectJoinFleets(String orderDispatchFleetCode) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(TpOrderDispatchJoinFleetDO.class) + .eq(TpOrderDispatchJoinFleetDO::getOrderDispatchFleetCode, orderDispatchFleetCode); + return baseMapper.selectList(wrapper); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchRepositoryImpl.java new file mode 100644 index 0000000..3fa3c19 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDispatchRepositoryImpl.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDispatchDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDispatchRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderDispatchRepositoryImpl extends ServiceImpl implements TpOrderDispatchRepository { + + @Override + public TpOrderDispatchDO getDispatchOrder(String tenantId, String orderDispatchNo, String originalOrderNo,List statuses) { + TpOrderDispatchDO tpOrderDispatchDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(StrUtil.isNotEmpty(orderDispatchNo),TpOrderDispatchDO::getDispatchNo, orderDispatchNo) + .eq(StrUtil.isNotEmpty(originalOrderNo),TpOrderDispatchDO::getOriginalOrderNo, originalOrderNo) + .in(CollUtil.isNotEmpty(statuses),TpOrderDispatchDO::getDispatchStatus, statuses) + .eq(TpOrderDispatchDO::getTenantId, tenantId) + .orderByDesc(TpOrderDispatchDO::getDispatchTime).last("limit 1") + ); + return tpOrderDispatchDO; + } + + @Override + public List listDispatchOrderByOrderNo(String tenantId, String originalOrderNo) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderDispatchDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderDispatchDO::getTenantId, tenantId)); + } + + @Override + public void updateDispatchStatus(String tenantId, String orderDispatchNo, String originalOrderNo, TpOrderDispatchStatusEnum tpOrderDispatchStatusEnum) { + TpOrderDispatchDO tpOrderDispatchDO = new TpOrderDispatchDO(); + tpOrderDispatchDO.setDispatchStatus(tpOrderDispatchStatusEnum.getStatus()); + baseMapper.update(tpOrderDispatchDO,Wrappers.lambdaUpdate() + .eq(TpOrderDispatchDO::getDispatchNo, orderDispatchNo) + .eq(TpOrderDispatchDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderDispatchDO::getTenantId,tenantId)); + } + + @Override + public List listOrderDispatchDetail(String tenantId, List originalOrderNoList, List statuses) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .in(TpOrderDispatchDO::getOriginalOrderNo, originalOrderNoList) + .in(CollUtil.isNotEmpty(statuses),TpOrderDispatchDO::getDispatchStatus, statuses) + .eq(TpOrderDispatchDO::getTenantId, tenantId)); + } + + @Override + public TpOrderDispatchDO getDispatchOrder(String tenantId, String originalOrderNo) { + TpOrderDispatchDO tpOrderDispatchDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderDispatchDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderDispatchDO::getTenantId, tenantId) + ); + return tpOrderDispatchDO; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDriverInfoRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDriverInfoRepositoryImpl.java new file mode 100644 index 0000000..610ea35 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderDriverInfoRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDriverInfoDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDriverInfoDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDriverInfoRepository; +import org.springframework.stereotype.Service; + +/** + *

+ * 司机信息 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderDriverInfoRepositoryImpl extends ServiceImpl implements TpOrderDriverInfoRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderElementRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderElementRepositoryImpl.java new file mode 100644 index 0000000..3688144 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderElementRepositoryImpl.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderElementConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderElementDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderElementDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderElementRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderElement; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderElementRepositoryImpl extends ServiceImpl implements TpOrderElementRepository { + + @Resource + private TpOrderElementConverter tpOrderElementConverter; + + @Override + public List queryOrderElementsByOrderNo(String tenantId, String orderNo) { + List tpOrderElementDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderElementDO::getTenantId, tenantId) + .eq(TpOrderElementDO::getOrderNo, orderNo)); + return tpOrderElementConverter.doList2ModelList(tpOrderElementDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderInvoiceRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderInvoiceRepositoryImpl.java new file mode 100644 index 0000000..3f24ec1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderInvoiceRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderInvoiceDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderInvoiceDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderInvoiceRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-29 + */ +@Service +public class TpOrderInvoiceRepositoryImpl extends ServiceImpl implements TpOrderInvoiceRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderItemElementRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderItemElementRepositoryImpl.java new file mode 100644 index 0000000..199a8dd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderItemElementRepositoryImpl.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderItemElementConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderItemElementDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderItemElementDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderItemElementRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderItemElement; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderItemElementRepositoryImpl extends ServiceImpl implements TpOrderItemElementRepository { + + @Resource + private TpOrderItemElementConverter tpOrderItemElementConverter; + + @Override + public List queryOrderItemElementsByOrderNoAndItemNo(String tenantId, String orderNo, String itemNo) { + List tpOrderItemElementDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderItemElementDO::getTenantId, tenantId) + .eq(TpOrderItemElementDO::getOrderNo, orderNo) + .eq(TpOrderItemElementDO::getItemNo, itemNo)); + return tpOrderItemElementConverter.doList2ModelList(tpOrderItemElementDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerRepositoryImpl.java new file mode 100644 index 0000000..0d57724 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerRepositoryImpl.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderPassengerConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderPassengerDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderPassengerRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderPassenger; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 乘客 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderPassengerRepositoryImpl extends ServiceImpl implements TpOrderPassengerRepository { + + @Resource + private TpOrderPassengerConverter tpOrderPassengerConverter; + + @Override + public TpOrderPassenger queryOrderPassengersByOrderNoAndPassengerNo(String tenantId, String orderNo, String passengerNo) { + TpOrderPassengerDO tpOrderPassengerDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderPassengerDO::getTenantId, tenantId) + .eq(TpOrderPassengerDO::getOrderNo, orderNo) + .eq(TpOrderPassengerDO::getPassengerNo, passengerNo)); + return tpOrderPassengerConverter.do2Model(tpOrderPassengerDO); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerTripRelationRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerTripRelationRepositoryImpl.java new file mode 100644 index 0000000..7d7a77d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPassengerTripRelationRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderPassengerTripRelationDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPassengerTripRelationDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderPassengerTripRelationRepository; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderPassengerTripRelationRepositoryImpl extends ServiceImpl implements TpOrderPassengerTripRelationRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPlacerRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPlacerRepositoryImpl.java new file mode 100644 index 0000000..324090e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPlacerRepositoryImpl.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderPlacerConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderPlacerDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPlacerDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderPlacerRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderPlacer; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 下单人 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderPlacerRepositoryImpl extends ServiceImpl implements TpOrderPlacerRepository { + + @Resource + private TpOrderPlacerConverter tpOrderPlacerConverter; + + @Override + public TpOrderPlacer queryPlacerByOrderNo(String tenantId, String orderNo) { + TpOrderPlacerDO tpOrderPlacerDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderPlacerDO::getTenantId, tenantId) + .eq(TpOrderPlacerDO::getOrderNo, orderNo)); + return tpOrderPlacerConverter.do2Model(tpOrderPlacerDO); + } + + @Override + public List queryPlacerByOrderNos(String tenantId, List orderNos) { + List tpOrderPlacerDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderPlacerDO::getTenantId, tenantId) + .in(TpOrderPlacerDO::getOrderNo, orderNos)); + return tpOrderPlacerConverter.do2ModelList(tpOrderPlacerDOs); + } + + @Override + public List queryPlacerByPhone(String tenantId, String phone) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("DISTINCT placer_no"); + queryWrapper.eq("placer_contact", phone); + List placerDOs = baseMapper.selectList(queryWrapper); + return CollectionUtils.isEmpty(placerDOs)? null : tpOrderPlacerConverter.do2ModelList(placerDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordDetailRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordDetailRepositoryImpl.java new file mode 100644 index 0000000..c445de0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordDetailRepositoryImpl.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderPriceRecordDetailConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderPriceRecordDetailDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDetailDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderPriceRecordDetailRepository; +import com.deepinnet.tptradecore.core.model.order.BaseModel; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecord; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecordDetail; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 计价记录 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderPriceRecordDetailRepositoryImpl extends ServiceImpl implements TpOrderPriceRecordDetailRepository { + + @Resource + private TpOrderPriceRecordDetailConverter tpOrderPriceRecordDetailConverter; + + @Override + public List queryPriceRecordDetailsByOrderNoAndPricingNo(String tenantId, String orderNo, String pricingNo) { + List tpOrderPriceRecordDetailDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderPriceRecordDetailDO::getTenantId, tenantId) + .eq(TpOrderPriceRecordDetailDO::getOrderNo, orderNo) + .eq(TpOrderPriceRecordDetailDO::getPricingNo, pricingNo)); + return tpOrderPriceRecordDetailConverter.doList2ModelList(tpOrderPriceRecordDetailDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordRepositoryImpl.java new file mode 100644 index 0000000..9459938 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderPriceRecordRepositoryImpl.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderPriceRecordConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderPriceRecordDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPriceRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderPriceRecordRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderPriceRecord; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 计价记录 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderPriceRecordRepositoryImpl extends ServiceImpl implements TpOrderPriceRecordRepository { + + @Resource + private TpOrderPriceRecordConverter tpOrderPriceRecordConverter; + + @Override + public List queryPriceRecordsByOrderNo(String tenantId, String orderNo) { + List tpOrderPriceRecordDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderPriceRecordDO::getTenantId, tenantId) + .eq(TpOrderPriceRecordDO::getOrderNo, orderNo)); + return tpOrderPriceRecordConverter.doList2ModelList(tpOrderPriceRecordDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderReceivedRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderReceivedRepositoryImpl.java new file mode 100644 index 0000000..4966266 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderReceivedRepositoryImpl.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderReceivedDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderReceiveDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderReceivedRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.enums.order.TpOrderReceivedStatusEnum; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Service +public class TpOrderReceivedRepositoryImpl extends ServiceImpl implements TpOrderReceivedRepository { + + @Override + public TpOrderReceivedDO getOrderReceived(String tenantId, String receivedNo, String bizObjNo,String bizObjType) { + TpOrderReceivedDO tpOrderReceivedDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderReceivedDO::getReceivedNo, receivedNo) + .eq(TpOrderReceivedDO::getBizObjNo, bizObjNo) + .eq(TpOrderReceivedDO::getBizObjType, bizObjType) + .eq(TpOrderReceivedDO::getTenantId, tenantId)); + return tpOrderReceivedDO; + } + + @Override + public List listOrderReceivedByOrderNo(String tenantId, String bizObjNo,String bizObjType) { + return baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderReceivedDO::getBizObjNo, bizObjNo) + .eq(TpOrderReceivedDO::getBizObjType, bizObjType) + .eq(TpOrderReceivedDO::getTenantId, tenantId)); + } + + @Override + public void updateReceivedStatus(String tenantId, String receivedNo, String bizObjNo,String bizObjType, TpOrderReceivedStatusEnum tpOrderReceivedStatusEnum) { + TpOrderReceivedDO tpOrderDispatchDO = new TpOrderReceivedDO(); + tpOrderDispatchDO.setReceivedStatus(tpOrderReceivedStatusEnum.getStatus()); + baseMapper.update(tpOrderDispatchDO,Wrappers.lambdaUpdate() + .eq(TpOrderReceivedDO::getReceivedNo, receivedNo) + .eq(TpOrderReceivedDO::getBizObjNo, bizObjNo) + .eq(TpOrderReceivedDO::getBizObjType, bizObjType) + .eq(TpOrderReceivedDO::getTenantId,tenantId)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRepositoryImpl.java new file mode 100644 index 0000000..3f611b0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRepositoryImpl.java @@ -0,0 +1,150 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderRepository; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderTypeEnum; +import com.deepinnet.tptradecore.core.model.order.TpBatchQueryOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.model.order.TpOrderQueryList; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 订单 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpOrderRepositoryImpl extends ServiceImpl implements TpOrderRepository { + + @Resource + private TpOrderConverter tpOrderConverter; + + @Override + public CommonPage queryOrderList(TpOrderQueryList tpOrderQueryList) { + Page page = PageHelper.startPage(tpOrderQueryList.getPageNum(), tpOrderQueryList.getPageSize()); + List orders = tpOrderConverter.doList2ModelList(baseMapper.queryOrderList(tpOrderQueryList)); + return buildOrderPage(page, orders); + } + + private CommonPage buildOrderPage(Page page, List orders) { + CommonPage result = new CommonPage<>(); + result.setPageNum(page.getPageNum()); + result.setPageSize(page.getPageSize()); + result.setTotal(page.getTotal()); + result.setList(orders); + return result; + } + + @Override + public TpOrder queryByTenantIdAndOrderNo(String tenantId, String orderNo, String userNo) { + TpOrderDO tpOrderDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderDO::getTenantId, tenantId) + .eq(TpOrderDO::getOrderNo, orderNo) + .eq(StrUtil.isNotBlank(userNo), TpOrderDO::getUserNo, userNo)); + return tpOrderConverter.do2Model(tpOrderDO); + } + + @Override + public void updateStatusByOrderNo(TpOrderPushStatus pushStatus) { + TpOrderDO tpOrderDO = new TpOrderDO(); + tpOrderDO.setStatus(ObjectUtil.isNull(pushStatus.getStatusEnum()) ? null : pushStatus.getStatusEnum().getStatus()); + tpOrderDO.setBeforeApproveStatus(pushStatus.getCurrentStatus()); + tpOrderDO.setPayTime(pushStatus.getPayTime()); + tpOrderDO.setEndConfirmStatus(pushStatus.getEndConfirmStatus()); + tpOrderDO.setEndConfirmTime(ObjectUtil.isNotNull(pushStatus.getEndConfirmStatus()) ? DateUtil.current() : null); + + // 关单时间判断 + tpOrderDO.setCloseTime(ObjectUtil.isNotNull(pushStatus.getStatusEnum()) && ObjectUtil.equal(pushStatus.getStatusEnum().getStatus(), TpOrderStatusEnum.ORDER_TIMEOUT.getStatus()) ? DateUtil.current() : null); + baseMapper.update(tpOrderDO, Wrappers.lambdaQuery() + .eq(TpOrderDO::getTenantId, pushStatus.getTenantId()) + .and(Wrapper -> Wrapper.eq(TpOrderDO::getOrderNo, pushStatus.getOrderNo()))); + } + + @Override + public List queryOrderListByParentNo(String tenantId, String parentOrderNo) { + List tpOrderDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderDO::getTenantId, tenantId) + .eq(TpOrderDO::getParentOrderNo, parentOrderNo)); + return tpOrderConverter.doList2ModelList(tpOrderDOs); + } + + @Override + public void changeApprovalOrder(String tenantId, String orderNo, Integer status) { +// TpOrderDO tpOrderDO = new TpOrderDO(); +// tpOrderDO.setApproveStatus(status); +// baseMapper.update(tpOrderDO, Wrappers.lambdaQuery() +// .eq(TpOrderDO::getTenantId, tenantId) +// .eq(TpOrderDO::getOrderNo, orderNo)); + } + + @Override + public int queryUnverifiedOrderByRouteNo(String routeNo, String tenantId) { + return baseMapper.queryUnverifiedOrderByRouteNo(routeNo, tenantId); + } + + @Override + public int queryUnverifiedOrderByRouteNoAndShuttleNo(String routeNo, String shuttleNo, String tenantId) { + return baseMapper.queryUnverifiedOrderByRouteNoAndShuttleNo(routeNo, shuttleNo, tenantId); + } + + @Override + public TpOrder getOrderByOriginalOrderNo(String tenantId, String originalOrderNo, String userNo) { + TpOrderDO tpOrderDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderDO::getTenantId, tenantId) + .eq(TpOrderDO::getOriginalOrderNo, originalOrderNo) + .eq(StrUtil.isNotEmpty(userNo), TpOrderDO::getUserNo, userNo) + .ne(TpOrderDO::getStatus, TpOrderStatusEnum.INIT.getStatus()) + .eq(TpOrderDO::getVisible, 1) + .orderByDesc(TpOrderDO::getGmtCreated) + .last("limit 1")); + return tpOrderConverter.do2Model(tpOrderDO); + } + + @Override + public List queryCharterBusOrderListToC(TpOrderQueryList tpOrderQueryList) { + return tpOrderConverter.doList2ModelList(baseMapper.queryCharterBusOrderListToC(tpOrderQueryList)); + } + + @Override + public List queryCharterBusOrderListToB(TpOrderQueryList tpOrderQueryList) { + return tpOrderConverter.doList2ModelList(baseMapper.queryCharterBusOrderListToB(tpOrderQueryList)); + } + + @Override + public List batchQueryOrderList(TpBatchQueryOrder batchQueryOrder) { + return tpOrderConverter.doList2ModelList(baseMapper.batchQueryOrderList(batchQueryOrder.getOriginalOrderNos(), batchQueryOrder.getTenantId())); + } + + @Override + public List queryOrderBatchList(long startCount, int batch) { + return tpOrderConverter.doList2ModelList(baseMapper.batchQuery(startCount, batch)); + } + + @Override + public Long queryCustomBusOrderCount(TpOrderQueryList tpOrderQueryList) { + return baseMapper.queryCustomBusOrderCount(tpOrderQueryList); + } + + @Override + public List queryPadCarpoolOrderList(TpOrderQueryList tpOrderQueryList) { + return tpOrderConverter.doList2ModelList(baseMapper.queryPadCarpoolOrderList(tpOrderQueryList)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRequirementUserRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRequirementUserRepositoryImpl.java new file mode 100644 index 0000000..d5b66a9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRequirementUserRepositoryImpl.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderRequirementUserConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderRequirementUserDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRequirementUserDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderRequirementUserRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderRequirementUser; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + *

+ * 需求方 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderRequirementUserRepositoryImpl extends ServiceImpl implements TpOrderRequirementUserRepository { + + @Resource + private TpOrderRequirementUserConverter tpOrderRequirementUserConverter; + + @Override + public TpOrderRequirementUser queryRequirementUserByOrderNo(String tenantId, String orderNo) { + TpOrderRequirementUserDO tpOrderRequirementUserDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderRequirementUserDO::getTenantId, tenantId) + .eq(TpOrderRequirementUserDO::getOrderNo, orderNo)); + return tpOrderRequirementUserConverter.do2Model(tpOrderRequirementUserDO); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRescheduleRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRescheduleRecordRepositoryImpl.java new file mode 100644 index 0000000..7986328 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRescheduleRecordRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRescheduleRecordDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderRescheduleRecordDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderRescheduleRecordRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Service +public class TpOrderRescheduleRecordRepositoryImpl extends ServiceImpl implements TpOrderRescheduleRecordRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteRepositoryImpl.java new file mode 100644 index 0000000..adc4851 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteRepositoryImpl.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderRouteConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderRouteDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderRouteRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderRoute; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 线路 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderRouteRepositoryImpl extends ServiceImpl implements TpOrderRouteRepository { + + @Resource + private TpOrderRouteConverter tpOrderRouteConverter; + + @Override + public List queryRouteByOrderNo(String tenantId, String orderNo) { + List routeDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderRouteDO::getTenantId, tenantId) + .eq(TpOrderRouteDO::getOrderNo, orderNo)); + return tpOrderRouteConverter.doList2ModelList(routeDOs); + } + + @Override + public List queryRouteByOrderNos(String tenantId, List orderNos) { + List routeDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderRouteDO::getTenantId, tenantId) + .in(TpOrderRouteDO::getOrderNo, orderNos)); + return tpOrderRouteConverter.doList2ModelList(routeDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteShuttleRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteShuttleRepositoryImpl.java new file mode 100644 index 0000000..47719b0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderRouteShuttleRepositoryImpl.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderRouteShuttleConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderRouteShuttleDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderRouteShuttleDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderRouteShuttleRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderRouteShuttle; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + *

+ * 班次 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderRouteShuttleRepositoryImpl extends ServiceImpl implements TpOrderRouteShuttleRepository { + + @Resource + private TpOrderRouteShuttleConverter tpOrderRouteShuttleConverter; + + @Override + public TpOrderRouteShuttle queryRouteScheduleByOrderNoAndRouteNo(String tenantId, String orderNo, String routeNo) { + TpOrderRouteShuttleDO tpOrderRouteShuttleDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderRouteShuttleDO::getTenantId, tenantId) + .eq(TpOrderRouteShuttleDO::getOrderNo, orderNo) + .eq(TpOrderRouteShuttleDO::getRouteNo, routeNo)); + return tpOrderRouteShuttleConverter.do2Model(tpOrderRouteShuttleDO); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderServiceTargetRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderServiceTargetRepositoryImpl.java new file mode 100644 index 0000000..84cbbf6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderServiceTargetRepositoryImpl.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderServiceTargetConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderServiceTargetDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderServiceTargetDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderServiceTargetRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderTargetService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + *

+ * 服务对象 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderServiceTargetRepositoryImpl extends ServiceImpl implements TpOrderServiceTargetRepository { + + @Resource + private TpOrderServiceTargetConverter tpOrderServiceTargetConverter; + + @Override + public TpOrderTargetService queryServiceTargetByOrderNo(String tenantId, String orderNo) { + TpOrderServiceTargetDO serviceTargetDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpOrderServiceTargetDO::getTenantId, tenantId) + .eq(TpOrderServiceTargetDO::getOrderNo, orderNo)); + return tpOrderServiceTargetConverter.do2Model(serviceTargetDO); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderSubjectItemRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderSubjectItemRepositoryImpl.java new file mode 100644 index 0000000..b528cd5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderSubjectItemRepositoryImpl.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderSubjectItemConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderSubjectItemDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderSubjectItemDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderSubjectItemRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderSubjectItem; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderSubjectItemRepositoryImpl extends ServiceImpl implements TpOrderSubjectItemRepository { + + @Resource + private TpOrderSubjectItemConverter tpOrderSubjectItemConverter; + + @Override + public List queryOrderSubjectItemsByOrderNo(String tenantId, String orderNo) { + List tpOrderSubjectItemDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderSubjectItemDO::getTenantId, tenantId) + .eq(TpOrderSubjectItemDO::getOrderNo, orderNo)); + return tpOrderSubjectItemConverter.doList2ModelList(tpOrderSubjectItemDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTransportationRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTransportationRepositoryImpl.java new file mode 100644 index 0000000..87a4468 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTransportationRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderTransportationDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTransportationDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderTransportationRepository; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderTransportationRepositoryImpl extends ServiceImpl implements TpOrderTransportationRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelDispatchRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelDispatchRecordRepositoryImpl.java new file mode 100644 index 0000000..79197fd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelDispatchRecordRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelDispatchRecordDO; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderTravelDispatchRecordDao; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderTravelDispatchRecordRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author abel + * @since 2023-11-23 + */ +@Service +public class TpOrderTravelDispatchRecordRepositoryImpl extends ServiceImpl implements TpOrderTravelDispatchRecordRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelTripRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelTripRepositoryImpl.java new file mode 100644 index 0000000..80268ca --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTravelTripRepositoryImpl.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderTravelTripConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderTravelTripDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTravelTripDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderTravelTripRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderTravelTrip; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 行程单 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderTravelTripRepositoryImpl extends ServiceImpl implements TpOrderTravelTripRepository { + + @Resource + private TpOrderTravelTripConverter tpOrderTravelTripConverter; + + @Override + public List queryOrderTravelTripsByOrderNo(String tenantId, String orderNo) { + List tpOrderTravelTripDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderTravelTripDO::getTenantId, tenantId) + .eq(TpOrderTravelTripDO::getOrderNo, orderNo)); + return tpOrderTravelTripConverter.doList2ModelList(tpOrderTravelTripDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTripPositionRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTripPositionRepositoryImpl.java new file mode 100644 index 0000000..46a4c11 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderTripPositionRepositoryImpl.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderTripPositionConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderTripPositionDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderTripPositionDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderTripPositionRepository; +import com.deepinnet.tptradecore.core.model.order.TpOrderTripPosition; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderTripPositionRepositoryImpl extends ServiceImpl implements TpOrderTripPositionRepository { + + @Resource + private TpOrderTripPositionConverter tpOrderTripPositionConverter; + + @Override + public List queryPositionsByOrderNoAndTripNo(String tenantId, String orderNo, String tripNo) { + List tpOrderTripPositionDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpOrderTripPositionDO::getTenantId, tenantId) + .eq(TpOrderTripPositionDO::getTripNo, tripNo) + .eq(TpOrderTripPositionDO::getOrderNo, orderNo)); + return tpOrderTripPositionConverter.doList2ModelList(tpOrderTripPositionDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderVehicleInfoRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderVehicleInfoRepositoryImpl.java new file mode 100644 index 0000000..3d60cf1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpOrderVehicleInfoRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dao.order.TpOrderVehicleInfoDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderVehicleInfoDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderVehicleInfoRepository; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpOrderVehicleInfoRepositoryImpl extends ServiceImpl implements TpOrderVehicleInfoRepository { + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserPassengerRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserPassengerRepositoryImpl.java new file mode 100644 index 0000000..de3365b --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserPassengerRepositoryImpl.java @@ -0,0 +1,80 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpUserPassengerConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpUserPassengerDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserPassengerDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpUserPassengerRepository; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 用户乘客信息 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpUserPassengerRepositoryImpl extends ServiceImpl implements TpUserPassengerRepository { + + @Resource + private TpUserPassengerConverter tpUserPassengerConverter; + + @Override + public TpUserPassenger queryPassengerByUserNoAndPassengerIdentity(String tenantId, String userNo, String identityType, String identityNumber) { + TpUserPassengerDO tpUserPassengerDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpUserPassengerDO::getTenantId, tenantId) + .eq(TpUserPassengerDO::getUserNo, userNo) + .eq(TpUserPassengerDO::getIdentityType, identityType) + .eq(TpUserPassengerDO::getIdentityNumber, identityNumber)); + return tpUserPassengerConverter.do2Model(tpUserPassengerDO); + } + + @Override + public TpUserPassenger queryPassengerByUserNoAndPassengerNo(String tenantId, String passengerNo, String userNo) { + TpUserPassengerDO tpUserPassengerDO = baseMapper.selectOne(Wrappers.lambdaQuery() + .eq(TpUserPassengerDO::getTenantId, tenantId) + .eq(TpUserPassengerDO::getPassengerNo, passengerNo) + .eq(TpUserPassengerDO::getUserNo, userNo)); + return tpUserPassengerConverter.do2Model(tpUserPassengerDO); + } + + @Override + public void updateByPassengerNo(TpUserPassenger tpUserPassenger) { + TpUserPassengerDO tpUserPassengerDO = buildModifyTpUserPassengerDO(tpUserPassenger); + + baseMapper.update(tpUserPassengerDO, Wrappers.lambdaUpdate() + .eq(TpUserPassengerDO::getTenantId, tpUserPassenger.getTenantId()) + .eq(TpUserPassengerDO::getPassengerNo, tpUserPassenger.getPassengerNo())); + } + + @Override + public List queryPassengerListByUserNo(TpUserPassengerCondition tpUserPassengerCondition) { + List tpUserPassengerDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(TpUserPassengerDO::getTenantId, tpUserPassengerCondition.getTenantId()) + .eq(StrUtil.isNotBlank(tpUserPassengerCondition.getUserNo()), TpUserPassengerDO::getUserNo, tpUserPassengerCondition.getUserNo()) + .eq(StrUtil.isNotBlank(tpUserPassengerCondition.getPassengerNo()), TpUserPassengerDO::getPassengerNo, tpUserPassengerCondition.getPassengerNo())); + return tpUserPassengerConverter.doList2ModelList(tpUserPassengerDOs); + } + + @NotNull + private static TpUserPassengerDO buildModifyTpUserPassengerDO(TpUserPassenger tpUserPassenger) { + TpUserPassengerDO tpUserPassengerDO = new TpUserPassengerDO(); + tpUserPassengerDO.setPassengerType(tpUserPassenger.getPassengerType()); + tpUserPassengerDO.setName(tpUserPassenger.getName()); + tpUserPassengerDO.setIdentityType(tpUserPassenger.getIdentityType()); + tpUserPassengerDO.setIdentityNumber(tpUserPassenger.getIdentityNumber()); + tpUserPassengerDO.setBizData(JSONUtil.toJsonStr(tpUserPassenger.getBizData())); + return tpUserPassengerDO; + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserRouteCollectionRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserRouteCollectionRepositoryImpl.java new file mode 100644 index 0000000..a494d4e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/order/impl/TpUserRouteCollectionRepositoryImpl.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.dal.repository.order.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.order.TpUserRouteCollectionConverter; +import com.deepinnet.tptradecore.common.dal.dao.order.TpUserRouteCollectionDao; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserRouteCollectionDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpUserRouteCollectionRepository; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollectionCondition; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 用户乘客信息 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpUserRouteCollectionRepositoryImpl extends ServiceImpl implements TpUserRouteCollectionRepository { + + @Resource + private TpUserRouteCollectionConverter tpUserRouteCollectionConverter; + + @Override + public List queryRouteCollectionList(TpUserRouteCollectionCondition tpUserRouteCollectionCondition) { + List tpUserRouteCollectionDOs = baseMapper.selectList(Wrappers.lambdaQuery() + .in(StrUtil.isNotBlank(tpUserRouteCollectionCondition.getUserNo()), TpUserRouteCollectionDO::getUserNo, tpUserRouteCollectionCondition.getUserNo()) + .eq(StrUtil.isNotBlank(tpUserRouteCollectionCondition.getPhone()), TpUserRouteCollectionDO::getPhoneNumber, tpUserRouteCollectionCondition.getPhone()) + .eq(TpUserRouteCollectionDO::getTenantId, tpUserRouteCollectionCondition.getTenantId()) + .orderByDesc(TpUserRouteCollectionDO::getGmtCreated)); + return tpUserRouteCollectionConverter.doList2ModelList(tpUserRouteCollectionDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/TpBizRuleRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/TpBizRuleRepository.java new file mode 100644 index 0000000..6bf92e7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/TpBizRuleRepository.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.dal.repository.rule; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.rule.TpBizRuleDO; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; + +import java.util.List; + +/** + * 业务规则仓储 + */ +public interface TpBizRuleRepository extends IService { + + boolean batchSave(List bizRules); + + List getBizRuleList(List bizNos, List ruleGroups, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/impl/TpBizRuleRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/impl/TpBizRuleRepositoryImpl.java new file mode 100644 index 0000000..fc9fce3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/rule/impl/TpBizRuleRepositoryImpl.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.dal.repository.rule.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.rule.TpBizRuleMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.rule.TpBizRuleDao; +import com.deepinnet.tptradecore.common.dal.dataobject.rule.TpBizRuleDO; +import com.deepinnet.tptradecore.common.dal.repository.rule.TpBizRuleRepository; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 业务规则仓储层实现类 + * + * @author amos + * @since 2023-07-25 15:46:31 + */ +@Service +public class TpBizRuleRepositoryImpl extends ServiceImpl implements TpBizRuleRepository { + + @Resource + private TpBizRuleMapStructConvert bizRuleMapStructConvert; + + @Override + public boolean batchSave(List bizRules) { + if (CollectionUtils.isEmpty(bizRules)) { + return false; + } + + return super.saveBatch(bizRuleMapStructConvert.convert2DOList(bizRules)); + } + + @Override + public List getBizRuleList(List bizNos, List ruleGroups, String tenantId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(TpBizRuleDO.class) + .in(TpBizRuleDO::getBizNo, bizNos) + .in(CollectionUtils.isNotEmpty(ruleGroups), TpBizRuleDO::getRuleGroup, ruleGroups) + .eq(TpBizRuleDO::getTenantId, tenantId); + List bizRuleDOs = super.list(wrapper); + return CollectionUtils.isEmpty(bizRuleDOs) ? null : bizRuleMapStructConvert.convert2DomainList(bizRuleDOs); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/TpScheduleTaskRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/TpScheduleTaskRepository.java new file mode 100644 index 0000000..d5f7bcd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/TpScheduleTaskRepository.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dal.repository.task; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.condition.task.UpdateTaskCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.task.TpScheduleTaskDO; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/9/5 09:54 + * @Description + */ +public interface TpScheduleTaskRepository extends IService { + boolean batchSave(List scheduleTasks); + + List getAllByTypeAndStatusAndTriggerTime(List types, List statusList, Long triggerTime, Integer limitCount); + + boolean updateTaskByCondition(UpdateTaskCondition updateTaskCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/impl/TpScheduleTaskRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/impl/TpScheduleTaskRepositoryImpl.java new file mode 100644 index 0000000..5c8c257 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/task/impl/TpScheduleTaskRepositoryImpl.java @@ -0,0 +1,67 @@ +package com.deepinnet.tptradecore.common.dal.repository.task.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.condition.task.UpdateTaskCondition; +import com.deepinnet.tptradecore.common.dal.convert.task.TpScheduleTaskMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.task.TpScheduleTaskDao; +import com.deepinnet.tptradecore.common.dal.dataobject.task.TpScheduleTaskDO; +import com.deepinnet.tptradecore.common.dal.repository.task.TpScheduleTaskRepository; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author amos wong + * @create 2023/9/5 09:54 + * @Description + */ +@Repository +public class TpScheduleTaskRepositoryImpl extends ServiceImpl implements TpScheduleTaskRepository { + + @Resource + private TpScheduleTaskMapStructConvert taskConvert; + + private static final String LIMIT_SQL = " LIMIT "; + + @Override + public boolean batchSave(List scheduleTasks) { + if (CollectionUtils.isEmpty(scheduleTasks)) { + return false; + } + + return super.saveBatch(taskConvert.convert2DOList(scheduleTasks)); + } + + @Override + public List getAllByTypeAndStatusAndTriggerTime(List types, List statusList, Long triggerTime, Integer limitCount) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(TpScheduleTaskDO.class) + .in(TpScheduleTaskDO::getTaskType, types) + .lt(TpScheduleTaskDO::getTriggerTime, triggerTime) + .in(TpScheduleTaskDO::getStatus, statusList) + .orderByAsc(TpScheduleTaskDO::getTriggerTime) + .last(LIMIT_SQL + limitCount); + List taskDOs = super.list(wrapper); + return CollectionUtils.isEmpty(taskDOs) ? null : taskConvert.convert2DomainList(taskDOs); + } + + @Override + public boolean updateTaskByCondition(UpdateTaskCondition updateTaskCondition) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(TpScheduleTaskDO.class) + .set(updateTaskCondition.getExecuteTime() != null, TpScheduleTaskDO::getExecuteTime, updateTaskCondition.getExecuteTime()) + .set(StringUtils.isNotEmpty(updateTaskCondition.getTargetStatus()), TpScheduleTaskDO::getStatus, updateTaskCondition.getTargetStatus()) + .set(updateTaskCondition.getRetryCount() != null, TpScheduleTaskDO::getRetryCount, updateTaskCondition.getRetryCount()) + .set(updateTaskCondition.getTriggerTime() != null, TpScheduleTaskDO::getTriggerTime, updateTaskCondition.getTriggerTime()) + .eq(TpScheduleTaskDO::getId, updateTaskCondition.getId()) + .eq(TpScheduleTaskDO::getStatus, updateTaskCondition.getOriginalStatus()) + .eq(TpScheduleTaskDO::getTenantId, updateTaskCondition.getTenantId()); + + return super.update(updateWrapper); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpBillRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpBillRepository.java new file mode 100644 index 0000000..56b33fe --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpBillRepository.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpBillDO; +import com.deepinnet.tptradecore.common.dal.condition.trans.*; +import com.deepinnet.tptradecore.core.model.trans.TpBill; + +import java.util.List; + +/** + * 账单 + */ +public interface TpBillRepository extends IService { + boolean save(TpBill tpBill); + + boolean updateByCondition(UpdateBillCondition updateCondition); + + TpBill queryByCondition(QueryBillCondition queryCondition); + + List listByPayOrderNos(List payOrderNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpChargeRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpChargeRepository.java new file mode 100644 index 0000000..353d74a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpChargeRepository.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpChargeDO; +import com.deepinnet.tptradecore.common.dal.condition.trans.*; +import com.deepinnet.tptradecore.core.model.trans.*; + +import java.util.List; + +/** + * 计费单 + */ +public interface TpChargeRepository extends IService { + boolean save(TpCharge tpCharge); + + boolean updateByCondition(UpdateChargeCondition updateCondition); + + TpCharge queryByCondition(QueryChargeCondition queryCondition); + + List listByPayOrderNos(List payOrderNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpFinancialAccountRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpFinancialAccountRepository.java new file mode 100644 index 0000000..03d42b1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpFinancialAccountRepository.java @@ -0,0 +1,18 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpFinancialAccountDO; +import com.deepinnet.tptradecore.core.model.trans.TpFinancialAccount; + +import java.util.List; + +/** + * 资金账户 + */ +public interface TpFinancialAccountRepository extends IService { + boolean save(TpFinancialAccount financialAccount); + + boolean batchSave(List financialAccountList); + + List listByPayOrderNos(List payOrderNos, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpPayOrderRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpPayOrderRepository.java new file mode 100644 index 0000000..57f1175 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/TpPayOrderRepository.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpPayOrderDO; +import com.deepinnet.tptradecore.common.dal.condition.trans.QueryPayOrderCondition; +import com.deepinnet.tptradecore.common.dal.condition.trans.UpdatePayOrderCondition; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; + +import java.util.List; + +/** + * 支付单 + */ +public interface TpPayOrderRepository extends IService { + + TpPayOrder getByCondition(QueryPayOrderCondition queryCondition); + + List listPayOrderByCondition(QueryPayOrderCondition queryCondition); + + boolean save(TpPayOrder tpPayOrder); + + boolean updatePayOrderByCondition(UpdatePayOrderCondition updatePayOrderCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpBillRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpBillRepositoryImpl.java new file mode 100644 index 0000000..2b88d94 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpBillRepositoryImpl.java @@ -0,0 +1,67 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.trans.TpBillMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.trans.TpBillDao; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpBillDO; +import com.deepinnet.tptradecore.common.dal.condition.trans.*; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpBillRepository; +import com.deepinnet.tptradecore.core.model.trans.TpBill; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 账单 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpBillRepositoryImpl extends ServiceImpl implements TpBillRepository { + + @Override + public boolean save(TpBill tpBill) { + if (tpBill == null) { + return false; + } + + return super.save(TpBillMapStructConvert.INSTANCE.convert2DO(tpBill)); + } + + @Override + public boolean updateByCondition(UpdateBillCondition updateCondition) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .set(StringUtils.isNotEmpty(updateCondition.getTargetStatus()), TpBillDO::getStatus, updateCondition.getTargetStatus()) + .eq(StringUtils.isNotEmpty(updateCondition.getBillNo()), TpBillDO::getBillNo, updateCondition.getBillNo()) + .eq(StringUtils.isNotEmpty(updateCondition.getPayOrderNo()), TpBillDO::getPayOrderNo, updateCondition.getPayOrderNo()) + .eq(StringUtils.isNotEmpty(updateCondition.getOriginalStatus()), TpBillDO::getStatus, updateCondition.getOriginalStatus()) + .eq(TpBillDO::getTenantId, updateCondition.getTenantId()); + return super.update(updateWrapper); + } + + @Override + public TpBill queryByCondition(QueryBillCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(StringUtils.isNotEmpty(queryCondition.getBillNo()), TpBillDO::getBillNo, queryCondition.getBillNo()) + .eq(StringUtils.isNotEmpty(queryCondition.getPayOrderNo()), TpBillDO::getPayOrderNo, queryCondition.getPayOrderNo()) + .eq(TpBillDO::getTenantId, queryCondition.getTenantId()); + return TpBillMapStructConvert.INSTANCE.convert2Domain(super.getOne(queryWrapper)); + } + + @Override + public List listByPayOrderNos(List payOrderNos, String tenantId) { + if (CollectionUtils.isEmpty(payOrderNos)) { + return null; + } + + return TpBillMapStructConvert.INSTANCE.convert2DomainList(super.list(Wrappers.lambdaQuery() + .in(TpBillDO::getPayOrderNo, payOrderNos) + .eq(TpBillDO::getTenantId, tenantId))); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpChargeRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpChargeRepositoryImpl.java new file mode 100644 index 0000000..6a504c3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpChargeRepositoryImpl.java @@ -0,0 +1,67 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.trans.TpChargeMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.trans.TpChargeDao; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpChargeDO; +import com.deepinnet.tptradecore.common.dal.condition.trans.*; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpChargeRepository; +import com.deepinnet.tptradecore.core.model.trans.TpCharge; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 计费单 服务实现类 + * + * @author amos + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpChargeRepositoryImpl extends ServiceImpl implements TpChargeRepository { + + @Override + public boolean save(TpCharge tpCharge) { + if (tpCharge == null) { + return false; + } + + return super.save(TpChargeMapStructConvert.INSTANCE.convert2DO(tpCharge)); + } + + @Override + public boolean updateByCondition(UpdateChargeCondition updateCondition) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .set(StringUtils.isNotEmpty(updateCondition.getTargetStatus()), TpChargeDO::getStatus, updateCondition.getTargetStatus()) + .eq(StringUtils.isNotEmpty(updateCondition.getChargeNo()), TpChargeDO::getChargeNo, updateCondition.getChargeNo()) + .eq(StringUtils.isNotEmpty(updateCondition.getPayOrderNo()), TpChargeDO::getPayOrderNo, updateCondition.getPayOrderNo()) + .eq(StringUtils.isNotEmpty(updateCondition.getOriginalStatus()), TpChargeDO::getStatus, updateCondition.getOriginalStatus()) + .eq(TpChargeDO::getTenantId, updateCondition.getTenantId()); + return super.update(updateWrapper); + } + + @Override + public TpCharge queryByCondition(QueryChargeCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(StringUtils.isNotEmpty(queryCondition.getChargeNo()), TpChargeDO::getChargeNo, queryCondition.getChargeNo()) + .eq(StringUtils.isNotEmpty(queryCondition.getPayOrderNo()), TpChargeDO::getPayOrderNo, queryCondition.getPayOrderNo()) + .eq(TpChargeDO::getTenantId, queryCondition.getTenantId()); + return TpChargeMapStructConvert.INSTANCE.convert2Domain(super.getOne(queryWrapper)); + } + + @Override + public List listByPayOrderNos(List payOrderNos, String tenantId) { + if (CollectionUtils.isEmpty(payOrderNos)) { + return Lists.newArrayList(); + } + + return TpChargeMapStructConvert.INSTANCE.convert2DomainList(super.list(Wrappers.lambdaQuery() + .in(TpChargeDO::getPayOrderNo, payOrderNos) + .eq(TpChargeDO::getTenantId, tenantId))); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpFinancialAccountRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpFinancialAccountRepositoryImpl.java new file mode 100644 index 0000000..2ee6dac --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpFinancialAccountRepositoryImpl.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tptradecore.common.dal.convert.trans.*; +import com.deepinnet.tptradecore.common.dal.dao.trans.TpFinancialAccountDao; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.*; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpFinancialAccountRepository; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.core.model.trans.*; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

+ * 资金账号 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:14 + */ +@Service +public class TpFinancialAccountRepositoryImpl extends ServiceImpl implements TpFinancialAccountRepository { + + @Override + public boolean save(TpFinancialAccount financialAccount) { + if (financialAccount == null) { + return false; + } + + TpFinancialAccountDO financialAccountDO = TpFinancialAccountMapStructConvert.INSTANCE.convert2DO(financialAccount); + return super.save(financialAccountDO); + } + + @Override + public boolean batchSave(List financialAccountList) { + if (CollectionUtils.isEmpty(financialAccountList)) { + return false; + } + + return super.saveBatch(TpFinancialAccountMapStructConvert.INSTANCE.convert2DOList(financialAccountList)); + } + + public List listByPayOrderNos(List payOrderNos, String tenantId) { + if (CollectionUtils.isEmpty(payOrderNos)) { + return null; + } + + return TpFinancialAccountMapStructConvert.INSTANCE.convert2DomainList(super.list(Wrappers.lambdaQuery() + .in(TpFinancialAccountDO::getBizNo, payOrderNos) + .eq(TpFinancialAccountDO::getTenantId, tenantId))); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpPayOrderRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpPayOrderRepositoryImpl.java new file mode 100644 index 0000000..38851d6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/trans/impl/TpPayOrderRepositoryImpl.java @@ -0,0 +1,90 @@ +package com.deepinnet.tptradecore.common.dal.repository.trans.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.trans.TpPayOrderMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.trans.TpPayOrderDao; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpPayOrderDO; +import com.deepinnet.tptradecore.common.dal.condition.trans.QueryPayOrderCondition; +import com.deepinnet.tptradecore.common.dal.condition.trans.UpdatePayOrderCondition; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpPayOrderRepository; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.*; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 支付单仓储层服务 + * + * @author amos + * @since 2023-07-26 + */ +@Repository +public class TpPayOrderRepositoryImpl extends ServiceImpl implements TpPayOrderRepository { + + @Resource + private TpPayOrderMapStructConvert payOrderConvert; + + @Override + public TpPayOrder getByCondition(QueryPayOrderCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(TpPayOrderDO::getPayOrderNo, queryCondition.getPayOrderNo()) + .eq(TpPayOrderDO::getTenantId, queryCondition.getTenantId()); + + TpPayOrderDO payOrderDO = super.getOne(queryWrapper); + if (ObjectUtils.isEmpty(payOrderDO)) { + return null; + } + + return payOrderConvert.convert2Domain(payOrderDO); + } + + @Override + public List listPayOrderByCondition(QueryPayOrderCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(StringUtils.isNotEmpty(queryCondition.getPayOrderNo()), TpPayOrderDO::getPayOrderNo, queryCondition.getPayOrderNo()) + .eq(StringUtils.isNotEmpty(queryCondition.getBizNo()), TpPayOrderDO::getBizNo, queryCondition.getBizNo()) + .eq(StringUtils.isNotEmpty(queryCondition.getOrderNo()), TpPayOrderDO::getOrderNo, queryCondition.getOrderNo()) + .in(CollectionUtils.isNotEmpty(queryCondition.getOrderNos()), TpPayOrderDO::getOrderNo, queryCondition.getOrderNos()) + .in(CollectionUtils.isNotEmpty(queryCondition.getBizNos()), TpPayOrderDO::getBizNo, queryCondition.getBizNos()) + .eq(StringUtils.isNotEmpty(queryCondition.getPayType()), TpPayOrderDO::getPayType, queryCondition.getPayType()) + .in(CollectionUtils.isNotEmpty(queryCondition.getTargetStatusList()), TpPayOrderDO::getStatus, queryCondition.getTargetStatusList()) + .eq(StringUtils.isNotBlank(queryCondition.getTenantId()), TpPayOrderDO::getTenantId, queryCondition.getTenantId()); + + List payOrderDOs = super.list(queryWrapper); + if (CollectionUtils.isEmpty(payOrderDOs)) { + return null; + } + + return payOrderConvert.convert2DomainList(payOrderDOs); + } + + @Override + public boolean save(TpPayOrder tpPayOrder) { + if (tpPayOrder == null) { + return false; + } + + TpPayOrderDO payOrderDO = payOrderConvert.convert2DO(tpPayOrder); + return super.save(payOrderDO); + } + + @Override + public boolean updatePayOrderByCondition(UpdatePayOrderCondition updatePayOrderCondition) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .set(StringUtils.isNotEmpty(updatePayOrderCondition.getOutPayFlowId()), TpPayOrderDO::getOutPayFlowId, updatePayOrderCondition.getOutPayFlowId()) + .set(StringUtils.isNotEmpty(updatePayOrderCondition.getTargetStatus()), TpPayOrderDO::getStatus, updatePayOrderCondition.getTargetStatus()) + .set(updatePayOrderCondition.getPayTime() != null, TpPayOrderDO::getPayTime, updatePayOrderCondition.getPayTime()) + .eq(StringUtils.isNotEmpty(updatePayOrderCondition.getPayOrderNo()), TpPayOrderDO::getPayOrderNo, updatePayOrderCondition.getPayOrderNo()) + .eq(StringUtils.isNotEmpty(updatePayOrderCondition.getBizNo()), TpPayOrderDO::getBizNo, updatePayOrderCondition.getBizNo()) + .eq(StringUtils.isNotEmpty(updatePayOrderCondition.getOriginalStatus()), TpPayOrderDO::getStatus, updatePayOrderCondition.getOriginalStatus()) + .eq(TpPayOrderDO::getTenantId, updatePayOrderCondition.getTenantId()); + + return super.update(updateWrapper); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpRescheduleInvalidVoucherRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpRescheduleInvalidVoucherRecordRepository.java new file mode 100644 index 0000000..be1cb3e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpRescheduleInvalidVoucherRecordRepository.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher; + +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpRescheduleInvalidVoucherRecordDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @author amos + * @createDate 2024-07-08 14:21:03 + */ +public interface TpRescheduleInvalidVoucherRecordRepository extends IService { + + boolean existCurRescheduleOrderInvalidRecord(String orderNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherInspectionRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherInspectionRecordRepository.java new file mode 100644 index 0000000..e1d7bab --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherInspectionRecordRepository.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherInspectionRecordDO; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherInspectionRecord; + +import java.util.List; + +/** + * 第三方送检记录 + */ +public interface TpVoucherInspectionRecordRepository extends IService { + + List getInspectionRecordList(List voucherNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherPassengerRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherPassengerRepository.java new file mode 100644 index 0000000..b972b60 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherPassengerRepository.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherPassengerDO; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherPassenger; + +import java.util.List; + +/** + * 凭证关联乘客信息 + */ +public interface TpVoucherPassengerRepository extends IService { + List getVoucherPassengerList(List voucherNos, String tenantId); + + TpVoucherPassenger getVoucherPassenger(String voucherNo, String tenantId); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherRepository.java new file mode 100644 index 0000000..7c78edb --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherRepository.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.condition.voucher.*; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucher; + +import java.util.Date; +import java.util.List; + +/** + * 出行凭证 + */ +public interface TpVoucherRepository extends IService { + + /** + * 查询凭证列表 + * + * @param startCount 开始索引 + * @param batch 批量值 + * @return 凭证列表 + */ + List querVoucherBatchList(long startCount, int batch); + + List getVoucherList(List orderNos); + + boolean save(TpVoucher tpVoucher); + + boolean batchSave(List tpVouchers); + + boolean updateByCondition(UpdateCondition updateCondition); + + boolean batchUpdate(List updateDTOs); + + TpVoucher getByVoucherNo(String voucherNo, String tenantId); + + List getVoucherList(QueryCondition queryCondition); + + List getVoucherListForUpdate(String orderNo, String tenantId); + + List getVoucherPassengerList(String routeCode, String shuttleCode, Date shuttleDate, String tenantId); + + Boolean updateInvalidVouchers(List invalidDTOs); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherVerificationRecordRepository.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherVerificationRecordRepository.java new file mode 100644 index 0000000..d1eee9c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/TpVoucherVerificationRecordRepository.java @@ -0,0 +1,22 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.deepinnet.tptradecore.common.dal.condition.voucher.VoucherVerificationQueryCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherVerificationRecord; + +import java.util.List; + +/** + * 凭证检票记录 + */ +public interface TpVoucherVerificationRecordRepository extends IService { + + boolean save(TpVoucherVerificationRecord verificationRecord); + + List getVerificationRecordList(List voucherNos, Long startTime, Long endTime, String tenantId); + + List getTimeRangeVerificationRecord(String userNo, Long startTime, Long endTime, String tenantId); + + List queryMngVerificationRecords(VoucherVerificationQueryCondition queryCondition); +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpRescheduleInvalidVoucherRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpRescheduleInvalidVoucherRecordRepositoryImpl.java new file mode 100644 index 0000000..46d7ac8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpRescheduleInvalidVoucherRecordRepositoryImpl.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher.impl; + +import com.baomidou.mybatisplus.core.conditions.query.*; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpRescheduleInvalidVoucherRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpRescheduleInvalidVoucherRecordRepository; +import com.deepinnet.tptradecore.common.dal.dao.voucher.TpRescheduleInvalidVoucherRecordDao; +import org.springframework.stereotype.Service; + +/** + * @author amos + * @createDate 2024-07-08 14:21:03 + */ +@Service +public class TpRescheduleInvalidVoucherRecordRepositoryImpl extends ServiceImpl + implements TpRescheduleInvalidVoucherRecordRepository { + + @Override + public boolean existCurRescheduleOrderInvalidRecord(String orderNo, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(TpRescheduleInvalidVoucherRecordDO.class) + .eq(TpRescheduleInvalidVoucherRecordDO::getOrderNo, orderNo) + .eq(TpRescheduleInvalidVoucherRecordDO::getTenantId, tenantId); + long count = super.count(queryWrapper); + return count >= 1; + } +} + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherInspectionRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherInspectionRecordRepositoryImpl.java new file mode 100644 index 0000000..8099081 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherInspectionRecordRepositoryImpl.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.voucher.TpVoucherInspectionRecordMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.voucher.TpVoucherInspectionRecordDao; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherInspectionRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherInspectionRecordRepository; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherInspectionRecord; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 第三方送检记录 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Repository +public class TpVoucherInspectionRecordRepositoryImpl extends ServiceImpl implements TpVoucherInspectionRecordRepository { + + @Override + public List getInspectionRecordList(List voucherNos, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpVoucherInspectionRecordDO::getVoucherNo, voucherNos) + .eq(TpVoucherInspectionRecordDO::getTenantId, tenantId); + return TpVoucherInspectionRecordMapStructConvert.INSTANCE.convert2DomainList(super.list(queryWrapper)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherPassengerRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherPassengerRepositoryImpl.java new file mode 100644 index 0000000..818c190 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherPassengerRepositoryImpl.java @@ -0,0 +1,42 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.convert.voucher.*; +import com.deepinnet.tptradecore.common.dal.dao.voucher.TpVoucherPassengerDao; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherPassengerRepository; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherPassenger; +import org.springframework.stereotype.*; + +import java.util.List; + +/** + *

+ * 凭证干系人 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Repository +public class TpVoucherPassengerRepositoryImpl extends ServiceImpl implements TpVoucherPassengerRepository { + @Override + public List getVoucherPassengerList(List voucherNos, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpVoucherPassengerDO::getVoucherNo, voucherNos) + .eq(TpVoucherPassengerDO::getTenantId, tenantId); + + return TpVoucherPassengerMapStructConvert.INSTANCE.convert2DomainList(super.list(queryWrapper)); + } + + @Override + public TpVoucherPassenger getVoucherPassenger(String voucherNo, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(TpVoucherPassengerDO::getVoucherNo, voucherNo) + .eq(TpVoucherPassengerDO::getTenantId, tenantId); + + return TpVoucherPassengerMapStructConvert.INSTANCE.convert2Domain(super.getOne(queryWrapper)); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherRepositoryImpl.java new file mode 100644 index 0000000..bf16c6e --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherRepositoryImpl.java @@ -0,0 +1,206 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.condition.voucher.QueryCondition; +import com.deepinnet.tptradecore.common.dal.condition.voucher.UpdateCondition; +import com.deepinnet.tptradecore.common.dal.convert.voucher.TpVoucherMapStructConvert; +import com.deepinnet.tptradecore.common.dal.dao.voucher.TpVoucherDao; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.RefundPassengerDO; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpPassengerListDO; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherDO; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherRepository; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucher; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +/** + *

+ * 出行凭证 服务实现类 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Repository +public class TpVoucherRepositoryImpl extends ServiceImpl implements TpVoucherRepository { + + @Resource + private TpVoucherMapStructConvert voucherConvert; + + @Resource + private TpVoucherDao voucherDao; + + private static final String FOR_UPDATE_SQL = " for update"; + + @Override + public List querVoucherBatchList(long startCount, int batch) { + return voucherDao.batchQuery(startCount, batch); + } + + @Override + public List getVoucherList(List orderNos) { + if (CollectionUtils.isEmpty(orderNos)) { + return null; + } + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpVoucherDO::getOrderNo, orderNos); + return super.list(queryWrapper); + } + + @Override + public boolean save(TpVoucher tpVoucher) { + if (tpVoucher == null) { + return true; + } + + return super.save(voucherConvert.convert2DO(tpVoucher)); + } + + @Override + public boolean batchSave(List tpVouchers) { + if (CollectionUtils.isEmpty(tpVouchers)) { + return true; + } + + return super.saveBatch(voucherConvert.convert2DOList(tpVouchers)); + } + + @Override + public boolean updateByCondition(UpdateCondition updateCondition) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .set(StringUtils.isNotBlank(updateCondition.getTargetStatus()), TpVoucherDO::getStatus, updateCondition.getTargetStatus()) + .set(updateCondition.getRedemptionCount() != null, TpVoucherDO::getRedemptionCount, updateCondition.getRedemptionCount()) + .eq(StringUtils.isNotEmpty(updateCondition.getOrderNo()), TpVoucherDO::getOrderNo, updateCondition.getOrderNo()) + .eq(StringUtils.isNotEmpty(updateCondition.getVoucherNo()), TpVoucherDO::getVoucherNo, updateCondition.getVoucherNo()) + .eq(StringUtils.isNotEmpty(updateCondition.getOriginalStatus()), TpVoucherDO::getStatus, updateCondition.getOriginalStatus()) + .eq(TpVoucherDO::getTenantId, updateCondition.getTenantId()); + + return super.update(updateWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean batchUpdate(List updateDTOs) { + updateDTOs.forEach(updateDTO -> { + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(TpVoucherDO.class) + .set(StringUtils.isNotEmpty(updateDTO.getTargetStatus()), TpVoucherDO::getStatus, updateDTO.getTargetStatus()) + .set(TpVoucherDO::getRefundCount, updateDTO.getRefundCount()) + .eq(TpVoucherDO::getVoucherNo, updateDTO.getVoucherNo()) + .eq(TpVoucherDO::getStatus, updateDTO.getOriginalStatus()) + .eq(TpVoucherDO::getTenantId, updateDTO.getTenantId()); + super.update(wrapper); + }); + + return Boolean.TRUE; + } + + @Override + public TpVoucher getByVoucherNo(String voucherNo, String tenantId) { + if (StringUtils.isBlank(voucherNo)) { + return null; + } + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(TpVoucherDO::getVoucherNo, voucherNo) + .eq(TpVoucherDO::getTenantId, tenantId); + + return voucherConvert.convert2Domain(super.getOne(queryWrapper)); + } + + @Override + public List getVoucherList(QueryCondition queryCondition) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(StringUtils.isNotEmpty(queryCondition.getVoucherNo()), TpVoucherDO::getVoucherNo, queryCondition.getVoucherNo()) + .in(CollectionUtils.isNotEmpty(queryCondition.getVoucherNos()), TpVoucherDO::getVoucherNo, queryCondition.getVoucherNos()) + .eq(StringUtils.isNotEmpty(queryCondition.getUserNo()), TpVoucherDO::getUserNo, queryCondition.getUserNo()) + .eq(StringUtils.isNotEmpty(queryCondition.getProductCategoryNo()), TpVoucherDO::getProductCategoryNo, queryCondition.getProductCategoryNo()) + .eq(StringUtils.isNotEmpty(queryCondition.getOrderNo()), TpVoucherDO::getOrderNo, queryCondition.getOrderNo()) + .in(CollectionUtils.isNotEmpty(queryCondition.getTargetStatusList()), TpVoucherDO::getStatus, queryCondition.getTargetStatusList()) + .eq(TpVoucherDO::getTenantId, queryCondition.getTenantId()); + return voucherConvert.convert2DomainList(super.list(queryWrapper)); + } + + @Override + public List getVoucherListForUpdate(String orderNo, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(TpVoucherDO::getOrderNo, orderNo) + .eq(TpVoucherDO::getTenantId, tenantId) + .last(FOR_UPDATE_SQL); + List voucherDOs = super.list(queryWrapper); + return CollectionUtils.isEmpty(voucherDOs) ? null : voucherConvert.convert2DomainList(voucherDOs); + } + + @Override + public List getVoucherPassengerList(String routeCode, String shuttleCode, Date shuttleDate, String tenantId) { + long beginOfDay = DateUtil.beginOfDay(shuttleDate).getTime(); + long endOfDay = DateUtil.endOfDay(shuttleDate).getTime(); + List voucherPassengerList = voucherDao.getVoucherPassengerList(routeCode, shuttleCode, beginOfDay, endOfDay, tenantId); + if (CollectionUtils.isEmpty(voucherPassengerList)) { + return Collections.emptyList(); + } + AtomicReference> result = new AtomicReference<>(Lists.newArrayList()); + + Map> passengerMap = CollStreamUtil.groupByKey(voucherPassengerList, TpPassengerListDO::getRequiredRealName); + AtomicInteger count = new AtomicInteger(1); + Set orderNos = Sets.newHashSet(); + passengerMap.forEach((key, value) -> { + if (key == 0) { + //非实名 + for (TpPassengerListDO passenger : value) { + int realPassengerCount = passenger.getPassengerCount() - passenger.getRefundCount(); + //核销人数 + Integer redemptionCount = passenger.getRedemptionCount(); + //未核销人数 + int unRedemptionCount = realPassengerCount - redemptionCount; + for (int i = 0; i < realPassengerCount; i++) { + TpPassengerListDO tpPassengerListDO = BeanUtil.copyProperties(passenger, TpPassengerListDO.class); + tpPassengerListDO.setPlacerName("乘客" + count.getAndIncrement()); + tpPassengerListDO.setResult("success"); + if (unRedemptionCount > 0 && i >= realPassengerCount - unRedemptionCount) { + tpPassengerListDO.setResult(null); + } + result.get().add(tpPassengerListDO); + } + } + } else if (key == 1) { + //实名 + for (TpPassengerListDO passenger : value) { + TpPassengerListDO tpPassengerListDO = BeanUtil.copyProperties(passenger, TpPassengerListDO.class); + result.get().add(tpPassengerListDO); + } + orderNos.addAll(value.stream().map(TpPassengerListDO::getOrderNo).collect(Collectors.toSet())); + //查询一下退票的 + List refundPassengers = voucherDao.getRefundPassengerNos(orderNos, tenantId); + if (CollectionUtil.isNotEmpty(refundPassengers)) { + result.set((List) CollectionUtil.filterNew(result.get(), tpPassengerListDO -> !CollectionUtil.contains(refundPassengers, t -> t.getOrderNo().equals(tpPassengerListDO.getOrderNo()) && StrUtil.isNotEmpty(t.getPassengerNo()) && t.getPassengerNo().equals(tpPassengerListDO.getPassengerNo())))); + } + } + }); + return result.get(); + } + + @Override + public Boolean updateInvalidVouchers(List invalidDTOs) { + return voucherDao.batchInvalidVouchers(invalidDTOs) == invalidDTOs.size(); + } +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherVerificationRecordRepositoryImpl.java b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherVerificationRecordRepositoryImpl.java new file mode 100644 index 0000000..d0002e0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/java/com/deepinnet/tptradecore/common/dal/repository/voucher/impl/TpVoucherVerificationRecordRepositoryImpl.java @@ -0,0 +1,69 @@ +package com.deepinnet.tptradecore.common.dal.repository.voucher.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepinnet.tptradecore.common.dal.condition.voucher.VoucherVerificationQueryCondition; +import com.deepinnet.tptradecore.common.dal.convert.voucher.*; +import com.deepinnet.tptradecore.common.dal.dao.voucher.TpVoucherVerificationRecordDao; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.*; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherVerificationRecordRepository; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherVerificationRecord; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.*; + +import javax.annotation.Resource; +import java.util.*; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:34 + */ +@Repository +public class TpVoucherVerificationRecordRepositoryImpl extends ServiceImpl implements TpVoucherVerificationRecordRepository { + + @Resource + private TpVoucherVerificationRecordDao voucherVerificationRecordDao; + + @Override + public boolean save(TpVoucherVerificationRecord verificationRecord) { + if (verificationRecord == null) { + return true; + } + + return super.save(TpVoucherVerificationMapStructConvert.INSTANCE.convert2DO(verificationRecord)); + } + + @Override + public List getVerificationRecordList(List voucherNos, Long startTime, Long endTime, String tenantId) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .in(TpVoucherVerificationRecordDO::getVoucherNo, voucherNos) + .ge(Objects.nonNull(startTime), TpVoucherVerificationRecordDO::getVerificationTime, startTime) + .le(Objects.nonNull(endTime), TpVoucherVerificationRecordDO::getVerificationTime, endTime) + .eq(TpVoucherVerificationRecordDO::getTenantId, tenantId); + + return TpVoucherVerificationMapStructConvert.INSTANCE.convert2DomainList(CollectionUtils.isEmpty(super.list(queryWrapper)) ? Lists.newArrayList() : super.list(queryWrapper)); + } + + @Override + public List getTimeRangeVerificationRecord(String userNo, Long startTime, Long endTime, String tenantId) { + List verificationRecordDOS = super.list(Wrappers.lambdaQuery() + .eq(TpVoucherVerificationRecordDO::getUserNo, userNo) + .eq(TpVoucherVerificationRecordDO::getTenantId, tenantId) + .ge(TpVoucherVerificationRecordDO::getVerificationTime, startTime) + .le(TpVoucherVerificationRecordDO::getVerificationTime, endTime)); + + return TpVoucherVerificationMapStructConvert.INSTANCE.convert2DomainList(verificationRecordDOS); + } + + @Override + public List queryMngVerificationRecords(VoucherVerificationQueryCondition queryCondition) { + return voucherVerificationRecordDao.mngQueryVerificationRecords(queryCondition); + } + +} diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/audit/TpAuditMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/audit/TpAuditMapper.xml new file mode 100644 index 0000000..f117aba --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/audit/TpAuditMapper.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, audit_no,`type`, biz_obj_no, biz_obj_type, audit_time, remark, submit_time,submitter_no,submitter_name,apply_reason,`status` , auditor_no, auditor_name ,biz_data, tenant_id, gmt_create, gmt_modified + + + + tpa.id, tpa.audit_no,tpa.`type`, tpa.biz_obj_no, tpa.biz_obj_type, tpa.audit_time, tpa.remark, tpa.submit_time,tpa.submitter_no,tpa.submitter_name,tpa.apply_reason,tpa.`status` , tpa.auditor_no, tpa.auditor_name ,tpa.biz_data, tpa.tenant_id, tpa.gmt_create, tpa.gmt_modified + + + + + + select + + from + tp_audit tpa + inner join tp_order_change_apply tpcy on tpa.biz_obj_no = tpcy.apply_no + inner join tp_order_dispatch tpd on tpd.original_order_no = tpcy.original_order_no + inner join tp_order tpo on tpo.original_order_no = tpcy.original_order_no + where + tpa.tenant_id = #{queryCondition.tenantId} + + AND tpa.`type` in + + #{item} + + + + AND tpa.`status` in + + #{item} + + + AND tpd.tenant_id = #{queryCondition.tenantId} + + AND tpd.target_org_no = #{queryCondition.orgCode} + + + AND tpd.target_org_no in + + #{item} + + + + AND tpo.original_order_no = #{queryCondition.originalOrderNo} + + AND tpo.tenant_id = #{queryCondition.tenantId} + AND tpo.is_deleted = 0 + AND tpo.main = 1 + AND tpo.status != 0 + AND tpo.is_visible = 1 + + AND tpo.product_category_no = #{queryCondition.charterBusType} + + order by tpa.submit_time DESC + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplicantMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplicantMapper.xml new file mode 100644 index 0000000..311dfe7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplicantMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplyOrderMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplyOrderMapper.xml new file mode 100644 index 0000000..5868ff8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundApplyOrderMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + , refund_apply_order_no, product_code, product_name, product_category_no, product_category_name, refund_type, user_no, order_no,biz_no, biz_type, reason, apply_time, + status, apply_amount, charge_amount, refund_amount, tenant_id, gmt_create, gmt_modified, biz_data, is_deleted + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundPassengerMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundPassengerMapper.xml new file mode 100644 index 0000000..a6d8649 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundPassengerMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + id + , refund_apply_order_no, passenger_no, passenger_type,refund_subject_item_no, name, contact_info, cert_no, cert_type, tenant_id, gmt_create, gmt_modified, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRequirementUserDao.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRequirementUserDao.xml new file mode 100644 index 0000000..7d4f8bd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRequirementUserDao.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + id + , refund_apply_order_no,refund_subject_item_id, requirement_no, requirement_name, contact_info, contact_name, tenant_id, gmt_create, gmt_modified, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteMapper.xml new file mode 100644 index 0000000..f7bf568 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, refund_apply_order_no, route_no, route_name,round_trip, tenant_id, biz_data, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteShuttleMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteShuttleMapper.xml new file mode 100644 index 0000000..c27ee7d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundRouteShuttleMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, refund_apply_order_no, route_no, shuttle_no, shuttle_name, shuttle_time, tenant_id, biz_data, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemElementMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemElementMapper.xml new file mode 100644 index 0000000..790aaa0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemElementMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + id + , subject_item_no, name, code, value, unit_code, tenant_id, gmt_create, gmt_modified, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemMapper.xml new file mode 100644 index 0000000..7bfa806 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundSubjectItemMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, refund_apply_order_no, subject_item_id,subject_item_no, subject_item_type, quantity, tenant_id, gmt_create, gmt_modified, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundVoucherRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundVoucherRecordMapper.xml new file mode 100644 index 0000000..c386994 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/contract/TpRefundVoucherRecordMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + id + ,refund_apply_order_no,invalid_voucher_param, + tenant_id,biz_data,gmt_create, + gmt_modified + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderBalanceMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderBalanceMapper.xml new file mode 100644 index 0000000..4ecd665 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderBalanceMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, order_no, balance_order_no, balance_type, balance_amount, pay_time, `status`, biz_data, tenant_id, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderCarpoolRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderCarpoolRecordMapper.xml new file mode 100644 index 0000000..c26398d --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderCarpoolRecordMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, user_no, pos_no, subject_item_no, shuttle_code, departure_time, order_no, card_no, card_biz_no, biz_data, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeApplyMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeApplyMapper.xml new file mode 100644 index 0000000..116c654 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeApplyMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, order_no, original_order_no, applicant_no, apply_type, apply_status, biz_data, tenant_id, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemFactorMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemFactorMapper.xml new file mode 100644 index 0000000..9d40086 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemFactorMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, order_no, apply_change_order_no, change_item_no, change_factor_code, change_factor_name, change_before_factor_value, change_after_factor_value, `index`, factor_type, biz_data, tenant_id, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemMapper.xml new file mode 100644 index 0000000..b4f45ce --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangeItemMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, order_no, apply_change_order_no, change_item_no, change_type_no, change_type, biz_data, tenant_id, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangePriceRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangePriceRecordMapper.xml new file mode 100644 index 0000000..5a17b3f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChangePriceRecordMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, order_no, inquire_price, change_price, operator_user, operator_name, tenant_id, biz_data, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChargeRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChargeRecordMapper.xml new file mode 100644 index 0000000..e18dc3c --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderChargeRecordMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, order_no, original_order_no, inquire_amount, change_amount, pay_amount, service_charge, service_percentage, free_service_charge, biz_type, biz_data, tenant_id, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDepositMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDepositMapper.xml new file mode 100644 index 0000000..0eadedb --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDepositMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, order_no, deposit_order_no, pay_amount, pay_percentage, pay_time, `status`, tenant_id, biz_data, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDiscountMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDiscountMapper.xml new file mode 100644 index 0000000..85c40cd --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDiscountMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, pricing_no, order_no, type, discount_amount, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchFleetMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchFleetMapper.xml new file mode 100644 index 0000000..e03bdf9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchFleetMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, code, dispatch_no, order_no, operator_no, operator_name, target_fleet_no, target_fleet_name, dispatch_time, biz_data, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchJoinFleetDao.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchJoinFleetDao.xml new file mode 100644 index 0000000..f06d5ba --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDispatchJoinFleetDao.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, order_dispatch_fleet_code, spec_code, spec_name, fleet_code, fleet_name, biz_data, + gmt_created, gmt_modified, is_deleted, tenant_id + + \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDriverInfoMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDriverInfoMapper.xml new file mode 100644 index 0000000..69be8a9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderDriverInfoMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, transportation_no, name, contact, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderElementMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderElementMapper.xml new file mode 100644 index 0000000..ff6960f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderElementMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, order_no, element_type, element_code, element_name, element_key, element_value, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderInvoiceMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderInvoiceMapper.xml new file mode 100644 index 0000000..981d285 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderInvoiceMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + id, order_no, invoice_no, invoice_address, tenant_id, biz_data, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderItemElementMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderItemElementMapper.xml new file mode 100644 index 0000000..222ecc9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderItemElementMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, order_no, item_no, element_code, element_name, element_value, element_unit, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderMapper.xml new file mode 100644 index 0000000..5be0e76 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderMapper.xml @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, product_no, product_name, product_category_no, product_category, out_request_no, user_no, order_no, parent_order_no, original_order_no, main, status, end_confirm_status, end_confirm_time, before_approve_status, type, trip_type, pay_mode, pay_amount, payable_amount, original_amount, discount_amount, service_charge, source, pay_type, identity_verificat, ticket_type, order_time, pay_time, close_time, expire_time, invoice_status, is_visible, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + + tpo.id, tpo.product_no, tpo.product_name, tpo.product_category_no, tpo.product_category, tpo.out_request_no, tpo.user_no, tpo.order_no, tpo.parent_order_no, tpo.original_order_no, tpo.main, tpo.status, tpo.end_confirm_status, tpo.end_confirm_time, tpo.before_approve_status, tpo.type, tpo.trip_type, tpo.pay_mode, tpo.pay_amount, tpo.payable_amount, tpo.original_amount, tpo.discount_amount, tpo.service_charge, tpo.source, tpo.pay_type, tpo.identity_verificat, tpo.ticket_type, tpo.order_time, tpo.pay_time, tpo.close_time, tpo.expire_time, tpo.invoice_status, tpo.is_visible, tpo.biz_data, tpo.tenant_id, tpo.gmt_created, tpo.gmt_modified, tpo.is_deleted + + + + + + + + + + + + + + + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPassengerTripRelationMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPassengerTripRelationMapper.xml new file mode 100644 index 0000000..271a715 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPassengerTripRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, passenger_no, trip_no + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPlacerMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPlacerMapper.xml new file mode 100644 index 0000000..64d0d0f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPlacerMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, placer_no, order_no, placer_name, placer_contact, order_placer_contact, backend_placer_no, backend_placer_name, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordDetailMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordDetailMapper.xml new file mode 100644 index 0000000..9c71aa3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordDetailMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id, pricing_no, order_no, item_no, passenger_type, passenger_count, single_original_amount, single_discount_amount, total_original_amount, total_discount_amount, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordMapper.xml new file mode 100644 index 0000000..f5c4341 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderPriceRecordMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, pricing_no, order_no, pricing_original_amount, pricing_discount_amount, pricing_type, internal_inquire_amount, pricing_params, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRequirementUserMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRequirementUserMapper.xml new file mode 100644 index 0000000..a866c80 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRequirementUserMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + id, order_no, requirement_name, requirement_contact_name, requirement_contact, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRescheduleRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRescheduleRecordMapper.xml new file mode 100644 index 0000000..e71fec4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRescheduleRecordMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, reschedule_no, order_no, original_order_no, subject_item_no, shuttle_no, shuttle_date, shuttle_time, reschedule_subject_item_no, reschedule_shuttle_no, reschedule_shuttle_time, reschedule_shuttle_date, passenger_no, passenger_name, passenger_count, reschedule_time, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteMapper.xml new file mode 100644 index 0000000..7c545bb --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, order_no, route_no, route_name, round_trip, work_time, time_schedule, belong_fleet, tenant_id, biz_data, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteShuttleDao.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteShuttleDao.xml new file mode 100644 index 0000000..50a8eea --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderRouteShuttleDao.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, order_no, route_no, shuttle_no, shuttle_name, shuttle_time, trip_type, tenant_id, biz_data, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderServiceTargetMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderServiceTargetMapper.xml new file mode 100644 index 0000000..457ddba --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderServiceTargetMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, order_no, target_name, target_number, tenant_id, biz_data, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderSubjectItemMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderSubjectItemMapper.xml new file mode 100644 index 0000000..17a7099 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderSubjectItemMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, item_no, order_no, passenger_no, passenger_count, days, include_driver_expenses, trip_type, name, type, count, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTransportationMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTransportationMapper.xml new file mode 100644 index 0000000..b346e6f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTransportationMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, dispatch_no, transportation_no, driver, status, position, type, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelDispatchRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelDispatchRecordMapper.xml new file mode 100644 index 0000000..95ce250 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelDispatchRecordMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, order_no, trip_no, trip_type, fleetId, fleet_name, departure_time, arrive_time, bus_specification_code, bus_name, bus_plate, driver_name, driver_phone, day_index, tenant_id, biz_data, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelTripMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelTripMapper.xml new file mode 100644 index 0000000..8931c92 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTravelTripMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, trip_no, passenger_no, order_no, passenger_count, miles, pick_up_location_code, pick_up_location, drop_off_location_code, drop_off_location, start_time, end_time, trip_type, trip_status, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTripPositionMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTripPositionMapper.xml new file mode 100644 index 0000000..16c707a --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderTripPositionMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, trip_no, order_no, location_code, location_name, lng, lat, `index`, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderVehicleInfoMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderVehicleInfoMapper.xml new file mode 100644 index 0000000..49552c7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpOrderVehicleInfoMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, transportation_no, vehicle_number, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpRefundRouteScheduleRepository.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpRefundRouteScheduleRepository.xml new file mode 100644 index 0000000..4324c8f --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpRefundRouteScheduleRepository.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, passenger_no, order_no, passenger_type, passenger_name, passenger_contact, identification_type, identification_number, trip_type, biz_data, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserPassengerMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserPassengerMapper.xml new file mode 100644 index 0000000..c768867 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserPassengerMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, user_no, passenger_no, passenger_type, name, identity_type, identity_number, biz_data, tenant_id, gmt_created, gmt_modified + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserRouteCollectionMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserRouteCollectionMapper.xml new file mode 100644 index 0000000..4e3eaec --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/order/TpUserRouteCollectionMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, collection_no, user_no, phone_number, up_location, up_location_lng, up_location_lat, down_location, down_location_lng, down_location_lat, expect_arrive_time, expect_back_time, travel_purpose, remark, tenant_id, gmt_created, gmt_modified, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpBillMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpBillMapper.xml new file mode 100644 index 0000000..9653125 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpBillMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, bill_no, amount, order_no, pay_order_no, status, biz_type, bill_type, remark, tenant_id, gmt_create, gmt_modified, biz_data, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpChargeMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpChargeMapper.xml new file mode 100644 index 0000000..d088a17 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpChargeMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id + , charge_no, pay_order_no, biz_type, title, charge_type, amount, ratio, charging_entity_id, charging_entity_type,status, tenant_id, gmt_create, gmt_modified, biz_data, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpFinancialAccountMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpFinancialAccountMapper.xml new file mode 100644 index 0000000..c6e4cbb --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpFinancialAccountMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, biz_no, biz_type, account_type, account, account_name, channel, card_issuer_id, bank_name, bank_account, gmt_create, gmt_modified, tenant_id, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpPayOrderMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpPayOrderMapper.xml new file mode 100644 index 0000000..e934039 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/trans/TpPayOrderMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + , pay_order_no, biz_no,order_no, biz_type, discount_amount, charge_amount, pay_amount, pay_type, pay_scene, pay_title, status, pay_time, pay_timeout, out_pay_flow_id, charge_required, gmt_create, gmt_modified, tenant_id, biz_data, is_deleted + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpRescheduleInvalidVoucherRecordDao.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpRescheduleInvalidVoucherRecordDao.xml new file mode 100644 index 0000000..a7de698 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpRescheduleInvalidVoucherRecordDao.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + id,original_order_no,order_no, + voucher_no,invalid_total_count,invalid_passenger_count, + target_status,tenant_id + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherInspectionRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherInspectionRecordMapper.xml new file mode 100644 index 0000000..5585b05 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherInspectionRecordMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, voucher_no, user_no, param, result, api, inspection_time, inst_name, inst_code, gmt_create, gmt_modified, tenant_id, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherMapper.xml new file mode 100644 index 0000000..3c340a9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherMapper.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + , voucher_no, user_no, sales_unit_code, order_no, voucher_code, type, effective_start_time, effective_end_time,earliest_check_time,latest_check_time, route_id, route_name, shuttle_id, shuttle_name, validation_type, total_count, refund_count, redemption_count, passenger_count, required_real_name, status, gmt_create, gmt_modified, tenant_id, biz_data, is_deleted + + + + + update tp_voucher + + refund_count = #{item.refundCount}, + + status = #{item.targetStatus} + + + where voucher_no = #{item.voucherNo} + and status = #{item.originalStatus} + + + + + + + + + + + UPDATE tp_voucher + + + `status` = #{item.targetStatus}, + + refund_count = #{item.refundCount} + + WHERE voucher_no = #{item.voucherNo} + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherPassengerMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherPassengerMapper.xml new file mode 100644 index 0000000..b8601a7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherPassengerMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, voucher_no, name, contact_info, cert_no, cert_type,passenger_type, gmt_create, gmt_modified, tenant_id, biz_data + + + diff --git a/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherVerificationRecordMapper.xml b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherVerificationRecordMapper.xml new file mode 100644 index 0000000..f5f6d16 --- /dev/null +++ b/tptradecore-common/tptradecore-common-dal/src/main/resources/mybatis/mapper/voucher/TpVoucherVerificationRecordMapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + id + , voucher_no, user_no, verification_time, result, reason, gmt_create, gmt_modified, tenant_id, biz_data + + + + + + diff --git a/tptradecore-common/tptradecore-common-service/pom.xml b/tptradecore-common/tptradecore-common-service/pom.xml new file mode 100644 index 0000000..bf62c5c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + com.deepinnet + tptradecore-common + 1.0-SNAPSHOT + + + tptradecore-common-service + pom + + tptradecore-common-service-facade + tptradecore-common-service-integration + + + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/pom.xml b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/pom.xml new file mode 100644 index 0000000..a06226d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/pom.xml @@ -0,0 +1,117 @@ + + + 4.0.0 + + com.deepinnet + tptradecore-common-service-facade + 1.0.0.20241014.1-SNAPSHOT + + + 3.5.2 + 11 + 11 + UTF-8 + + + + + + org.projectlombok + lombok + 1.18.24 + compile + + + + cn.hutool + hutool-all + 5.8.9 + compile + + + + io.swagger + swagger-annotations + 1.5.19 + compile + + + + org.springframework.boot + spring-boot-starter-validation + 2.6.11 + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + com.deepinnet + tp-common-lang + 1.0.0.20231110.2-SNAPSHOT + + + com.github.pagehelper + pagehelper + 5.3.3 + compile + + + + com.google.guava + guava + 32.1.1-jre + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + UTF-8 + + + + + maven-source-plugin + 3.0.1 + + true + + + + compile + + jar + + + + + + + + + + + rdc-releases + aliyun mvn release Repository + https://packages.aliyun.com/maven/repository/2283499-release-fXoFPE/ + + + rdc-snapshots + aliyun mvn snapshot Repository + https://packages.aliyun.com/maven/repository/2283499-snapshot-U7MepR/ + + + + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/constants/TpBizDataKeyConstants.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/constants/TpBizDataKeyConstants.java new file mode 100644 index 0000000..b3fc6ed --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/constants/TpBizDataKeyConstants.java @@ -0,0 +1,14 @@ +package com.deepinnet.tptradecore.common.constants; + +/** + * @author amos wong + * @create 2023/12/27 14:44 + * @Description + */ +public interface TpBizDataKeyConstants { + + /** + * 下单立即展示 + */ + String IMMEDIATELY_SHOW_AFTER_ORDER = "immediately_show_after_order"; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditApprovedSubmitDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditApprovedSubmitDTO.java new file mode 100644 index 0000000..aeaa012 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditApprovedSubmitDTO.java @@ -0,0 +1,68 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/11/23 15:12 + * @Description 提交审核结果 + */ +@Data +public class TpAuditApprovedSubmitDTO implements Serializable { + private static final long serialVersionUID = 6995017509898880006L; + + /** + * 审核单编号 + * + */ + @NotBlank(message = "审核单编号不能为空") + private String auditNo; + + + /** + * 审核员编号 + */ + @ApiModelProperty(value = "审核员编号") + @NotBlank(message = "审核员编号不能为空") + private String auditorNo; + + /** + * 审核员名字 + */ + @ApiModelProperty(value = "审核员编名字") + @NotBlank(message = "审核员名字不能为空") + private String auditorName; + + /** + * 审核结果状态 + */ + @ApiModelProperty(value = "审核结果状态") + @NotBlank(message = "审核结果状态不能为空") + private String status; + + /** + * 审核结果建议 + */ + @ApiModelProperty(value = "审核结果建议") + private String remark; + + + @ApiModelProperty(value = "审核时间") + @NotNull(message = "审核时间不能为空") + private Long auditTime; + + /** + * 业务扩展字段 + */ + private Map bizData; + + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditCreatedDTO.java new file mode 100644 index 0000000..a3bf2c2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditCreatedDTO.java @@ -0,0 +1,103 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import com.deepinnet.tptradecore.common.enums.audit.TpAuditBizObjectTypeEnum; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单创建 + */ +@Data +@Builder +public class TpAuditCreatedDTO implements Serializable { + private static final long serialVersionUID = 6995017509898880006L; + + + /** + * 审核单业务单据类型 + * @see TpAuditBizObjectTypeEnum + */ + @ApiModelProperty(value = "审核单业务单据类型") + @NotBlank(message = "审核单业务单据类型不能为空") + private String bizObjType; + + /** + * 审核单业务单据编号 + */ + @ApiModelProperty(value = "审核单业务单据编号") + @NotBlank(message = "审核单业务单据编号不能为空") + private String bizObjectNo; + + + /** + * 提交时间 + */ + @ApiModelProperty(value = "提交时间") + private Long submitTime; + + /** + * 审核单提交人编号 + */ + @ApiModelProperty(value = "审核单提交人编号") + private String submitterNo; + + /** + * 审核单提交人名称 + */ + @ApiModelProperty(value = "审核单提交人名称") + private String submitterName; + + /** + * 提交申请原因 + */ + @ApiModelProperty(value = "提交申请原因") + private String applyReason; + + /** + * 审核单类型 + * @see TpAuditTypeEnum + */ + @ApiModelProperty(value = "审核单类型") + private Integer type; + + /** + * 审核员编号 + */ + @ApiModelProperty(value = "审核员编号") + private String auditorNo; + + /** + * 审核员名字 + */ + @ApiModelProperty(value = "审核员编名字") + private String auditorName; + + /** + * 审核结果状态 + */ + @ApiModelProperty(value = "审核结果状态") + private String status; + + + @ApiModelProperty(value = "审核时间") + private Long auditTime; + + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditLatestDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditLatestDetailDTO.java new file mode 100644 index 0000000..05a15c9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditLatestDetailDTO.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import com.deepinnet.tptradecore.common.enums.audit.TpAuditBizObjectTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单创建 + */ +@Data +@Builder +public class TpAuditLatestDetailDTO implements Serializable { + private static final long serialVersionUID = 6995017509898880006L; + + + /** + * 审核单业务单据类型 + * @see TpAuditBizObjectTypeEnum + */ + @ApiModelProperty(value = "审核单业务单据类型") + @NotBlank(message = "审核单业务单据类型不能为空") + private String bizObjType; + + /** + * 审核单业务单据编号 + */ + @ApiModelProperty(value = "审核单业务单据编号") + @NotBlank(message = "审核单业务单据编号不能为空") + private String bizObjectNo; + + + /** + * 订单审核单号:建议页面请求直接带 + */ + @ApiModelProperty(value = "审核单号") + private String auditNo; + + /** + * 审核业务员编号 + */ + @ApiModelProperty(value = "审核业务员编号") + private String auditorNo; + + /** + * 审核单类型 + */ + @ApiModelProperty(value = "审核单类型") + private Integer type; + /** + * 审核单状态列表 + */ + @ApiModelProperty(value = "审核单状态列表") + private List auditStatuses; + + + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditListQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditListQueryDTO.java new file mode 100644 index 0000000..afbf1d2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditListQueryDTO.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import com.deepinnet.tptradecore.common.enums.audit.TpAuditBizObjectTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单创建 + */ +@Data +public class TpAuditListQueryDTO implements Serializable { + private static final long serialVersionUID = 6995017509898880006L; + + /** + * 审核单业务单据类型 + * @see TpAuditBizObjectTypeEnum + */ + @ApiModelProperty(value = "审核单业务单据类型") + private String bizObjType; + + /** + * 审核单业务单据编号 + */ + @ApiModelProperty(value = "审核单业务单据编号") + private String bizObjectNo; + + /** + * 审核人编号 + */ + @ApiModelProperty(value = "审核人编号") + private String auditorNo; + + /** + * 审核单编号 + * + */ + @ApiModelProperty(value = "审核单编号") + private String auditNo; + + + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditQueryDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditQueryDetailDTO.java new file mode 100644 index 0000000..95e9655 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpAuditQueryDetailDTO.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单创建 + */ +@Data +public class TpAuditQueryDetailDTO implements Serializable { + private static final long serialVersionUID = 6995017509898880006L; + + /** + * 审核单编号 + * + */ + @NotBlank(message = "审核单编号不能为空") + private String auditNo; + + + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditListQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditListQueryDTO.java new file mode 100644 index 0000000..608b565 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditListQueryDTO.java @@ -0,0 +1,81 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import com.deepinnet.tp.common.lang.dto.BasePageQueryDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 订单全额退款审批单查询列表 + *

+ * + * @author xiehuaqiao + * @since 2023/12/16 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TpOrderAuditListQueryDTO implements Serializable { + + /** + * 子订单号 + */ + @ApiModelProperty(value = "子订单号") + @Deprecated + private String orderNo; + /** + * 源订单号 + */ + @ApiModelProperty(value = "源订单号") + private String originalOrderNo; + + /** + * 包车类型 + */ + @ApiModelProperty(value = "包车类型") + private String charterBusType; + + /** + * 所属审核单类型 + * 4, "定制包车订单创建审核" + * 5, "定制包车订单变更审核" + * 6, "定制包车订单取消审核 + * 7, "定制包车订单取消全额退款审核" + */ + @ApiModelProperty(value = "所属审核单类型") + private List auditTypes; + + /** + * 所属审核单状态 + * "waiting_approved", "待审核" + * "approved_success", "审核通过" + * "approved_reject", "审核未通过" + * "approved_timeout", "审批超时" + */ + @ApiModelProperty(value = "所属审核单状态") + private List auditStatus; + + /** + * 所属组织代码 + */ + @ApiModelProperty(value = "所属组织代码") + @Deprecated + private String orgCode; + + /** + * 所属组织代码列表 + */ + @ApiModelProperty(value = "所属组织代码") + private List orgCodes; + /** + * 租户ID + */ + @NotNull(message = "租户ID不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditPagedQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditPagedQueryDTO.java new file mode 100644 index 0000000..225e20f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/audit/TpOrderAuditPagedQueryDTO.java @@ -0,0 +1,83 @@ +package com.deepinnet.tptradecore.common.dto.audit; + +import com.deepinnet.tp.common.lang.dto.BasePageQueryDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 订单全额退款审批单查询列表 + *

+ * + * @author xiehuaqiao + * @since 2023/12/16 + */ +@Data +@Builder +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +public class TpOrderAuditPagedQueryDTO extends BasePageQueryDTO implements Serializable { + + + /** + * 子订单号 + */ + @ApiModelProperty(value = "子订单号") + @Deprecated + private String orderNo; + /** + * 源订单号 + */ + @ApiModelProperty(value = "源订单号") + private String originalOrderNo; + /** + * 组织编码 + */ + @ApiModelProperty(value = "组织编码") + @Deprecated + private String orgNo; + + /** + * 所属组织代码列表 + */ + @ApiModelProperty(value = "所属组织代码") + private List orgCodes; + + /** + * 包车类型 + */ + @ApiModelProperty(value = "包车类型") + private String charterBusType; + + /** + * 所属审核单类型 + * 4, "定制包车订单创建审核" + * 5, "定制包车订单变更审核" + * 6, "定制包车订单取消审核 + * 7, "定制包车订单取消全额退款审核" + */ + @ApiModelProperty(value = "所属审核单类型") + private List auditTypes; + + /** + * 所属审核单状态 + * "waiting_approved", "待审核" + * "approved_success", "审核通过" + * "approved_reject", "审核未通过" + * "approved_timeout", "审批超时" + */ + @ApiModelProperty(value = "所属审核单状态") + private List auditStatus; + + /** + * 租户ID + */ + @NotNull(message = "租户ID不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCalculateRefundAmountDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCalculateRefundAmountDTO.java new file mode 100644 index 0000000..f488e90 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCalculateRefundAmountDTO.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/22 14:30 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpCalculateRefundAmountDTO implements Serializable { + + private static final long serialVersionUID = -2306662557857859648L; + + /** + * 订单编号 + */ + @NotBlank(message = "订单编号不能为空") + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 用户编号 + */ + @NotBlank(message = "用户编号不能为空") + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 退票人数-非实名场景 + */ + @ApiModelProperty(value = "退票人数-非实名场景") + private Integer passengerCount; + + /** + * 选择的退票的乘客 + */ + @ApiModelProperty(value = "选择的退票的乘客") + private List passengerDTOs; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCharteredBusRefundDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCharteredBusRefundDTO.java new file mode 100644 index 0000000..695c162 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpCharteredBusRefundDTO.java @@ -0,0 +1,95 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.Data; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.*; + +/** + * @author amos wong + * @create 2023/11/6 17:40 + * @Description + */ +@Data +public class TpCharteredBusRefundDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotBlank(message = "主订单号不能为空") + private String mainOrderNo; + + + @NotBlank(message = "产品编码不能为空") + private String productCode; + + @NotBlank(message = "产品名称不能为空") + private String productName; + + /** + * 产品类目编号 + */ + @NotBlank(message = "产品类目编号不能为空") + private String productCategoryNo; + + /** + * 产品类目名称 + */ + @NotBlank(message = "产品类目名称不能为空") + private String productCategoryName; + + /** + * 业务单号: + * 先付后享:定金订单退款,传定金订单号 + */ + @NotBlank(message = "业务单号不能为空") + private String bizNo; + + /** + * 申请退款金额=实退+手续费金额 + */ + @NotNull(message = "申请退款金额不能为空") + private TpMoney applyAmount; + + /** + * 实退金额 + */ + @NotNull(message = "实退金额不能为空") + private TpMoney refundAmount; + + /** + * 手续费金额 + */ + @NotNull(message = "手续费金额不能为空") + private TpMoney chargeAmount; + + /** + * @see com.deepinnet.tptradecore.common.enums.TpBizTypeEnum + */ + @NotBlank(message = "业务类型不能为空") + private String bizType; + + @NotEmpty(message = "退款标的项不能为空") + private List refundSubjectItemDTOs; + + @NotNull(message = "申请时间不能为空") + private Long applyTime; + + /** + * @see com.deepinnet.tptradecore.common.enums.contract.TpRefundTypeEnum + */ + @NotBlank(message = "退款类型不能为空") + private String refundType; + + /** + * 退票申请人 + */ + @NotNull(message = "退款申请人不能为空") + private TpRefundApplicantDTO refundApplicantDTO; + + @NotBlank(message = "租户id不能为空") + private String tenantId; + + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNamePassengerAvailableRefundDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNamePassengerAvailableRefundDTO.java new file mode 100644 index 0000000..2e716ac --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNamePassengerAvailableRefundDTO.java @@ -0,0 +1,19 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TpNonRealNamePassengerAvailableRefundDTO implements Serializable { + + /** + * 凭证的乘车日期,开始时间戳_结束时间戳,如:1632297600000_1632384000000 + */ + private String voucherTravelDate; + + /** + * 当前乘车日期对应的最大乘车人数 + */ + private Integer passengerCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNameTicketRefundChoiceDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNameTicketRefundChoiceDTO.java new file mode 100644 index 0000000..531e155 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpNonRealNameTicketRefundChoiceDTO.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 实名制退票选择的内容 + */ +@Data +public class TpNonRealNameTicketRefundChoiceDTO implements Serializable { + + /** + * 非实名制选择的退票乘客人数 + */ + @ApiModelProperty(value = "非实名制选择的退票乘客人数") + private Integer refundPassengerCount; + + @ApiModelProperty(value = "行程类型") + private String tripType; + + /** + * 选择的退票的乘车日期 + */ + @ApiModelProperty(value = "退订的凭证的乘车日期,开始时间戳_结束时间戳,如:1632297600000_1632384000000") + private String voucherTravelDate; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpPageQueryRefundApplyOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpPageQueryRefundApplyOrderDTO.java new file mode 100644 index 0000000..23f1a3c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpPageQueryRefundApplyOrderDTO.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPageQueryRefundApplyOrderDTO implements Serializable { + + private static final long serialVersionUID = -1825259558889954822L; + + /** + * 类目名称 + */ + @ApiModelProperty(value = "类目名称") + private String productCategoryName; + + /** + * 类目编号 + */ + @ApiModelProperty(value = "类目编号") + private String productCategoryNo; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderNo; + + /** + * 线路名称 + */ + @ApiModelProperty(value = "线路名称") + private String routeName; + + /** + * 线路code + */ + @ApiModelProperty(value = "线路code") + private String routeCode; + + /** + * 查询哪些状态的退票申请单据 + */ + @ApiModelProperty(value = "目标状态") + private List targetStatusList; + + /** + * 退款申请单号 + */ + @ApiModelProperty(value = "退款申请单号") + private String refundApplyOrderNo; + + /** + * 用户手机号 + */ + @ApiModelProperty(value = "用户手机号") + private String phone; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + @ApiModelProperty(value = "页码", required = true) + private Integer pageNum = 1; + + @ApiModelProperty(value = "页大小", required = true) + private Integer pageSize = 10; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryAvailableRefundVoucherDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryAvailableRefundVoucherDTO.java new file mode 100644 index 0000000..9ae59e8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryAvailableRefundVoucherDTO.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryAvailableRefundVoucherDTO implements Serializable { + + private static final long serialVersionUID = 635061896960139213L; + + /** + * 订单编号 + */ + @NotBlank(message = "订单编号不能为空") + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 可申请退票的凭证状态 + */ + @NotEmpty(message = "可申请退票的凭证状态不能为空") + private List availableStatusList; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + @ApiModelProperty(value = "租户id") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundApplyOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundApplyOrderDTO.java new file mode 100644 index 0000000..1054f69 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundApplyOrderDTO.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; +import org.apache.commons.compress.utils.Lists; + +import javax.validation.constraints.NotBlank; +import java.io.*; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/25 11:03 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryRefundApplyOrderDTO implements Serializable { + + private static final long serialVersionUID = 4479367133110443650L; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderNo; + + /** + * 退票申请单号 + */ + @ApiModelProperty(value = "退票申请单号") + private String refundApplyOrderNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 目标状态列表 + */ + private List targetStatusList; + + /** + * 需要的属性列表 + * TpRefundApplyOrderModulesEnum + */ + private List needProperties = Lists.newArrayList(); + + /** + * 租户ID + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundDetailDTO.java new file mode 100644 index 0000000..b2c5ba3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpQueryRefundDetailDTO.java @@ -0,0 +1,30 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.*; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryRefundDetailDTO implements Serializable { + + private static final long serialVersionUID = -5991090850249313378L; + + /** + * 退票申请单号 + */ + @NotBlank(message = "退票申请单号不能为空") + @ApiModelProperty(value = "退票申请单号") + private String refundApplyOrderNo; + + /** + * 租户id + */ + @ApiModelProperty(value = "租户id") + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNamePassengerAvailableRefundDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNamePassengerAvailableRefundDTO.java new file mode 100644 index 0000000..9f6b8ca --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNamePassengerAvailableRefundDTO.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherPassengerDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class TpRealNamePassengerAvailableRefundDTO implements Serializable { + + /** + * 乘客信息 + */ + private TpVoucherPassengerDTO passengerDTO; + + /** + * 凭证的乘车日期,开始时间戳_结束时间戳,如:1632297600000_1632384000000 + */ + private List voucherTravelDateList; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNameTicketRefundChoiceDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNameTicketRefundChoiceDTO.java new file mode 100644 index 0000000..caad8b6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRealNameTicketRefundChoiceDTO.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 实名制退票选择的内容 + */ +@Data +public class TpRealNameTicketRefundChoiceDTO implements Serializable { + + /** + * 实名制选择的退票乘客信息 + */ + @ApiModelProperty(value = "实名制选择的退票乘客信息") + private TpRefundPassengerDTO refundPassengerDTO; + + @ApiModelProperty(value = "行程类型") + private String tripType; + + /** + * 选择退票的乘车日期 + */ + @ApiModelProperty(value = "退订的凭证的乘车日期,开始时间戳_结束时间戳,如:1632297600000_1632384000000") + private List voucherTravelDateList; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplicantDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplicantDTO.java new file mode 100644 index 0000000..7b80961 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplicantDTO.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/18 11:42 + * @Description + */ +@Data +public class TpRefundApplicantDTO implements Serializable { + + private static final long serialVersionUID = 1743782482018159106L; + + /** + * 申请人用户编号 + */ + @ApiModelProperty(value = "申请人用户编号") + private String userNo; + + /** + * 申请人用户名称 + */ + @ApiModelProperty(value = "申请人用户名称") + private String userName; + + /** + * 申请人用户手机号 + */ + @ApiModelProperty(value = "申请人用户手机号") + private String phone; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyDTO.java new file mode 100644 index 0000000..ba89306 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyDTO.java @@ -0,0 +1,133 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.*; +import lombok.Data; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.*; + +@Data +@ApiModel("申请退票入参") +public class TpRefundApplyDTO implements Serializable { + + private static final long serialVersionUID = -3171143451351749948L; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + @NotBlank(message = "订单号不能为空") + private String orderNo; + + /** + * 申请退票用户编号 + */ + @NotBlank(message = "申请退票用户编号不能为空") + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 退票原因 + */ + @ApiModelProperty(value = "退票原因") + private String reason; + + @ApiModelProperty(value = "产品编码") + @NotBlank(message = "产品编码不能为空") + private String productCode; + + @ApiModelProperty(value = "产品名称") + @NotBlank(message = "产品名称不能为空") + private String productName; + + /** + * 产品类目编号 + */ + @ApiModelProperty(value = "产品类目编号") + @NotBlank(message = "产品类目编号不能为空") + private String productCategoryNo; + + /** + * 产品类目名称 + */ + @ApiModelProperty(value = "产品类目名称") + @NotBlank(message = "产品类目名称不能为空") + private String productCategoryName; + + /** + * 路程和班次信息 + */ + @ApiModelProperty(value = "路程和班次信息") + private List refundRouteDTOS; + + /** + * 用车需求方 + */ + @ApiModelProperty(value = "用车需求方") + private TpRefundRequirementUserDTO refundRequirementUser; + + /** + * 退票申请人 + */ + @ApiModelProperty(value = "退票申请人") + private TpRefundApplicantDTO refundApplicantDTO; + + /** + * 申请时间 + */ + @ApiModelProperty(value = "申请时间") + @NotNull(message = "申请时间不能为空") + private Long applyTime; + + /** + * 申请退款金额 + */ + @ApiModelProperty(value = "申请退款金额") + @NotBlank(message = "申请退款金额不能为空") + private String applyAmount; + + /** + * 退款计费金额 + */ + @ApiModelProperty(value = "退款计费金额") + @NotBlank(message = "退款计费金额不能为空") + private String chargeAmount; + + /** + * 实退金额 + */ + @ApiModelProperty(value = "实退金额") + @NotBlank(message = "实退金额不能为空") + private String refundAmount; + + @NotBlank(message = "组织code不能为空") + private String orgCode; + + /** + * 行程类型 + */ + private String tripType; + + @NotBlank(message = "退票标的项不能为空") + private List refundSubjectItems; + + /** + * 租户id + */ + @ApiModelProperty(value = "租户id") + @NotBlank(message = "租户id不能为空") + private String tenantId; + + /** + * 退款方式 + */ + @ApiModelProperty(value = "退款方式") + @NotBlank(message = "退款方式不能为空") + private String refundType; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyOrderDTO.java new file mode 100644 index 0000000..c6eed5a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundApplyOrderDTO.java @@ -0,0 +1,171 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import com.deepinnet.tptradecore.common.dto.trans.TpPayOrderDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 10:01 + * @Description 退票申请单领域模型 + */ + +@Data +@Accessors(chain = true) +public class TpRefundApplyOrderDTO implements Serializable { + + private static final long serialVersionUID = 1; + + /** + * 退票申请单号 + */ + @ApiModelProperty(value = "退票申请单号") + private String refundApplyOrderNo; + + @ApiModelProperty(value = "产品编码") + private String productCode; + + @ApiModelProperty(value = "产品名称") + private String productName; + + /** + * 产品类目编号 + */ + @ApiModelProperty(value = "产品类目编号") + private String productCategoryNo; + + /** + * 产品类目名称 + */ + @ApiModelProperty(value = "产品类目名称") + private String productCategoryName; + + /** + * 申请退票用户编号 + */ + @ApiModelProperty(value = "申请退票用户编号") + private String userNo; + + /** + * 原订单号 + */ + @ApiModelProperty(value = "原订单号") + private String orderNo; + + /** + * 业务单号 + */ + private String bizNo; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String bizType; + + /** + * 退票原因 + */ + @ApiModelProperty(value = "退票原因") + private String reason; + + /** + * 申请时间 + */ + @ApiModelProperty(value = "申请时间") + private Long applyTime; + + /** + * 状态 + */ + @ApiModelProperty(value = "退票状态,枚举:pending_approval-待审核,approved-审核通过,rejected-审核驳回,refunding-退票中,refunded_success-退票成功") + private String status; + + /** + * 申请退款金额 + */ + @ApiModelProperty(value = "申请退款金额") + private String applyAmount; + + /** + * 退款计费金额 + */ + @ApiModelProperty(value = "手续费金额,单位元") + private String chargeAmount; + + /** + * 实退金额 + */ + @ApiModelProperty(value = "实退金额,单位元") + private String refundAmount; + + /** + * 退款方式:原路退回或线下退款 + * + * @see com.deepinnet.tptradecore.common.util.enums.TpRefundTypeEnum + */ + @ApiModelProperty(value = "退款方式") + private String refundType; + + /** + * 线路 / 班次 + */ + @ApiModelProperty(value = "线路和班次信息") + private List refundRoutes; + + /** + * 退款支付单列表 + */ + @ApiModelProperty(value = "退款支付单列表") + private List refundPayOrderDTOs; + + /** + * 正向支付单 + */ + @ApiModelProperty(value = "正向支付单") + private TpPayOrderDTO paidOrder; + + /** + * 退票标的项 + */ + @ApiModelProperty(value = "退票标的项") + private List subjectItemList; + + /** + * 退票乘客信息-实名制 + */ + @ApiModelProperty(value = "退票乘客信息-实名制") + private List passengerDTOs; + + /** + * 退票人数 + */ + @ApiModelProperty(value = "退票人数") + private Integer refundPassengerCount; + + /** + * 退票凭证列表 + */ + private List refundVoucherList; + + /** + * 退票申请人信息 + */ + @ApiModelProperty(value = "退票申请人信息") + private TpRefundApplicantDTO refundApplicantDTO; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型,go去程、back返程、round往返程") + private String tripType; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundAuditDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundAuditDTO.java new file mode 100644 index 0000000..6df12a0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundAuditDTO.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/21 16:41 + * @Description + */ +@Data +public class TpRefundAuditDTO implements Serializable { + + private static final long serialVersionUID = -7969400252795192706L; + + /** + * 发起人编号 + */ + private String initiatorNo; + + /** + * 发起人名称 + */ + private String initiatorName; + + /** + * 审批人编号 + */ + private String approvalNo; + + /** + * 审批人名称 + */ + private String approvalName; + + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 原因 + */ + private String reason; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundListQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundListQueryDTO.java new file mode 100644 index 0000000..0c5de8d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundListQueryDTO.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author taobinxian + * @version 2023-08-02 + */ +@Data +public class TpRefundListQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 租户Id + */ + private String tenantId; + + /** + * 退款申请状态 + */ + private String status; + + /** + * 前台类目列表【根据前台类目查询退款订单】 + */ + private List frontCategories; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundPassengerDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundPassengerDTO.java new file mode 100644 index 0000000..0462bbe --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundPassengerDTO.java @@ -0,0 +1,59 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.*; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/8/9 15:52 + * @Description + */ +@Data +public class TpRefundPassengerDTO implements Serializable { + + private static final long serialVersionUID = -696527533121154078L; + + /** + * 乘客编号 + */ + @ApiModelProperty(value = "乘客编号") + private String passengerNo; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String name; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String contactInfo; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + private String certNo; + + /** + * 证件类型 + */ + @ApiModelProperty(value = "证件类型") + private String certType; + + /** + * 乘客类型 + */ + @ApiModelProperty(value = "乘客类型") + private String passengerType; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRequirementUserDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRequirementUserDTO.java new file mode 100644 index 0000000..8710cb9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRequirementUserDTO.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.*; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/8/9 15:53 + * @Description + */ +@Data +public class TpRefundRequirementUserDTO implements Serializable { + + private static final long serialVersionUID = -4744549089886942238L; + + /** + * 交通需求方编号 + */ + @ApiModelProperty(value = "交通需求方编号") + private String requirementNo; + + /** + * 交通需求方名称 + */ + @ApiModelProperty(value = "交通需求方名称") + private String requirementName; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String contactInfo; + + /** + * 联系人姓名 + */ + @ApiModelProperty(value = "联系人姓名") + private String contactName; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteDTO.java new file mode 100644 index 0000000..76b46d7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteDTO.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpRefundRouteDTO implements Serializable { + + private static final long serialVersionUID = 8674247615259892951L; + + /** + * 线路编号 + */ + @NotBlank(message = "线路编号不能为空") + @ApiModelProperty(value = "线路编号") + private String routeNo; + + /** + * 线路名称 + */ + @NotBlank(message = "线路名称不能为空") + @ApiModelProperty(value = "线路名称") + private String routeName; + + /** + * 班次 + */ + @ApiModelProperty(value = "班次") + private TpRefundRouteShuttleDTO routesShuttle; + + /** + * 去程/返程 + */ + @ApiModelProperty(value = "去程/返程") + @NotBlank(message = "去程/返程不能为空") + private String roundTrip; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteShuttleDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteShuttleDTO.java new file mode 100644 index 0000000..c458e99 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundRouteShuttleDTO.java @@ -0,0 +1,56 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.*; +import java.util.Map; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpRefundRouteShuttleDTO implements Serializable { + + private static final long serialVersionUID = -6031835357255625600L; + + /** + * 线路编号 + */ + @ApiModelProperty(value = "线路编号") + private String routeNo; + + /** + * 班次编号 + */ + @ApiModelProperty(value = "班次编号") + private String shuttleNo; + + /** + * 班次名称 + */ + @ApiModelProperty(value = "班次名称") + private String shuttleName; + + /** + * 班次发车时间 + */ + @ApiModelProperty(value = "班次发车时间") + private String shuttleTime; + + /** + * 租户id + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemDTO.java new file mode 100644 index 0000000..3324324 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemDTO.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.*; +import java.io.*; +import java.util.*; + +/** + * @author amos wong + * @create 2023/8/9 15:52 + * @Description + */ +@Data +public class TpRefundSubjectItemDTO implements Serializable { + private static final long serialVersionUID = -5266154469037643160L; + + /** + * 退票标的项id-售卖单元id + */ + @ApiModelProperty(value = "退票标的项id") + @NotBlank(message = "退票标的项id-售卖单元id不能为空") + private String subjectItemId; + + /** + * 标的项编号 + */ + @NotBlank(message = "标的项编号不能为空") + private String subjectItemNo; + + /** + * 标的项类型 + */ + @ApiModelProperty(value = "标的项类型") + @NotBlank(message = "标的项类型不能为空") + private String subjectItemType; + + /** + * 数量 + */ + @ApiModelProperty(value = "数量") + @NotNull(message = "数量不能为空") + private Integer quantity; + + private String tripType; + + /** + * 退票标的项关联的乘客信息 + */ + @ApiModelProperty(value = "退票标的项关联的乘客信息") + private TpRefundPassengerDTO passenger; + + /** + * 退票标的项关联的交通需求方(用车方) + */ + @ApiModelProperty(value = "退票标的项关联的交通需求方(用车方)") + private TpRefundRequirementUserDTO requirementUser; + + /** + * 退票标的项组成要素 + */ + @Valid + @NotNull(message = "退票标的项组成要素不能为空") + @ApiModelProperty(value = "退票标的项组成要素") + private List subjectItemElements; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemElementDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemElementDTO.java new file mode 100644 index 0000000..d10ad01 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundSubjectItemElementDTO.java @@ -0,0 +1,59 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:02 + * @Description 退票标的项组成要素 + */ +@Data +public class TpRefundSubjectItemElementDTO implements Serializable { + + private static final long serialVersionUID = 1; + + /** + * 要素名称 + */ + @NotBlank(message = "要素名称不能为空") + @ApiModelProperty(value = "要素名称") + private String name; + + /** + * 要素编码 + */ + @NotBlank(message = "要素编码不能为空") + @ApiModelProperty(value = "要素编码") + private String code; + + /** + * 要素值 + */ + @NotBlank(message = "要素值不能为空") + @ApiModelProperty(value = "要素值") + private String value; + + /** + * 单位编码 + */ + @NotBlank(message = "要素单位编码不能为空") + @ApiModelProperty(value = "单位编码") + private String unitCode; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + @ApiModelProperty(value = "租户id") + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundTicketSuccessDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundTicketSuccessDTO.java new file mode 100644 index 0000000..a089fea --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundTicketSuccessDTO.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/16 11:37 + * @Description + */ +@Data +public class TpRefundTicketSuccessDTO implements Serializable { + private static final long serialVersionUID = 8984999575380246704L; + + /** + * 退票申请单号 + */ + @NotBlank(message = "退票申请单号不能为空") + private String refundApplyOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundVoucherDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundVoucherDTO.java new file mode 100644 index 0000000..f28257e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/contract/TpRefundVoucherDTO.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.dto.contract; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TpRefundVoucherDTO implements Serializable { + + private String refundApplyOrderNo; + + private String voucherNo; + + private Integer refundCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBalanceOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBalanceOrderDTO.java new file mode 100644 index 0000000..e20ad06 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBalanceOrderDTO.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +/** + *

+ * 订金入参 + *

+ * + * @author chenjiaju + * @since 2023/11/16 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpBalanceOrderDTO implements Serializable { + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 需要支付尾款金额 + */ + private String payAmount; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBatchQueryOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBatchQueryOrderDTO.java new file mode 100644 index 0000000..891cd82 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpBatchQueryOrderDTO.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author chenjiaju + * @version 2023-11-23 + */ +@Data +@Builder +public class TpBatchQueryOrderDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 原始订单编号 + */ + private List originalOrderNos; + + /** + * 租户id(必传) + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCancelCarpoolDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCancelCarpoolDTO.java new file mode 100644 index 0000000..fd58c94 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCancelCarpoolDTO.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpCarpoolOrderOperateEnum; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/5/24 11:21 + * @Description + */ +@Data +public class TpCancelCarpoolDTO implements Serializable { + + /** + * 操作类型 + * @see TpCarpoolOrderOperateEnum + */ + private String operateType; + + /** + * 订单编号(选填) + */ + private String orderNo; + + /** + * 售卖单元编号列表 + */ + private List saleUnitCodeList; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolEndScheduleDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolEndScheduleDTO.java new file mode 100644 index 0000000..ea369b9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolEndScheduleDTO.java @@ -0,0 +1,30 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author cky + * @create 2024/5/21 14:29 + * @Description + */ +@Data +public class TpCarPoolEndScheduleDTO implements Serializable { + + /** + * 售卖单元编号 + */ + private String salesUnitCode; + + /** + * 任务时间 + */ + private Long triggerTime; + + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolListQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolListQueryDTO.java new file mode 100644 index 0000000..0ba0d90 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCarPoolListQueryDTO.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * 拼车列表查询 + * + * @author cjj + * @version 2024-05-24 + */ +@Data +public class TpCarPoolListQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 线路code + */ + @ApiModelProperty(value = "线路code") + private String routeCode; + + /** + * 售卖单元编号列表 + */ + @ApiModelProperty(value = "售卖单元编号列表") + private List salesUnitCodeList; + + /** + * 租户ID + */ + @NotBlank + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCheckSuccessCallbackDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCheckSuccessCallbackDTO.java new file mode 100644 index 0000000..cfb8e3b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpCheckSuccessCallbackDTO.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/5/21 14:29 + * @Description + */ +@Data +public class TpCheckSuccessCallbackDTO implements Serializable { + + /** + * 卡号 + */ + private String cardNo; + + /** + * 金额 + */ + private String amount; + + /** + * 外部交易号 + */ + private String outTradeNo; + + /** + * 核销时间 + */ + private Long checkInTime; + + /** + * 核销类型 + */ + private Integer checkInType; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpDepositOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpDepositOrderDTO.java new file mode 100644 index 0000000..59f232c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpDepositOrderDTO.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +/** + *

+ * 订金入参 + *

+ * + * @author chenjiaju + * @since 2023/11/16 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpDepositOrderDTO implements Serializable { + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 需要支付订金金额 + */ + private String payAmount; + + /** + * 支付比例 + */ + private BigDecimal payPercentage; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpHistoryPassengerQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpHistoryPassengerQueryDTO.java new file mode 100644 index 0000000..ad1b93a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpHistoryPassengerQueryDTO.java @@ -0,0 +1,19 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpHistoryPassengerQueryDTO implements Serializable { + + /** + * 下单人 + */ + private TpOrderPlacerDTO orderPlacerDTO; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCancelApplyCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCancelApplyCreatedDTO.java new file mode 100644 index 0000000..79ea86b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCancelApplyCreatedDTO.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeApplyStatusEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 13:52 + * @Description 订单取消申请DTO + */ +@Data +public class TpOrderCancelApplyCreatedDTO implements Serializable { + + private static final long serialVersionUID = 1628408844929311385L; + + /** + * 申请变更的订单号 + */ + @NotBlank(message = "订单号不能为空") + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 申请单状态 + * + * @see TpOrderChangeApplyStatusEnum + */ + private String applyStatus; + + /** + * 申请时间 + */ + @NotNull(message = "申请时间不能为空") + private Long applyTime; + + /** + * 申请变更的业务类型 + * + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderChangeTypeEnum + */ + @NotBlank(message = "申请变更的业务类型不能为空") + private String applyType = TpOrderChangeTypeEnum.ORDER_CANCEL.getType(); + + /** + * 申请人信息 + */ + @NotNull(message = "申请人信息不能为空") + private TpOrderChangeApplicantCreatedDTO orderChangeApplicant; + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolPushStatusDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolPushStatusDTO.java new file mode 100644 index 0000000..5b08e58 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolPushStatusDTO.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/5/21 + */ + +@Data +public class TpOrderCarpoolPushStatusDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + private String subjectItemNo; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolSearchDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolSearchDTO.java new file mode 100644 index 0000000..aafb7cf --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCarpoolSearchDTO.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/5/21 + */ + +@Data +public class TpOrderCarpoolSearchDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + private List subjectItemNos; + + private String tenantId; + + private String shuttleCode; + + private Long departureTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplicantCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplicantCreatedDTO.java new file mode 100644 index 0000000..b47a565 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplicantCreatedDTO.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/30 15:00 + * @Description + */ +@Data +public class TpOrderChangeApplicantCreatedDTO implements Serializable { + private static final long serialVersionUID = 1810768307525635810L; + + /** + * 申请人编号 + */ + @NotBlank(message = "申请人编号不能为空") + private String applicantNo; + + /** + * 申请人名称 + */ + private String applicantName; + + /** + * 申请人手机号 + */ + private String applicantPhone; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyApprovedSubmitDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyApprovedSubmitDTO.java new file mode 100644 index 0000000..5e76a8c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyApprovedSubmitDTO.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/11/21 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyApprovedSubmitDTO implements Serializable { + + + /** + * 申请单编号 + */ + @ApiModelProperty(value = "申请单编号") + @NotNull(message = "申请单编号不能为空") + private String applyNo; + + + /** + * 申请单目标变更状态 + */ + @ApiModelProperty(value = "申请单目标变更状态") + @NotNull(message = "申请单目标变更状态不能为空") + private String targetApplyStatus; + + /** + * 申请单原始状态 + */ + @ApiModelProperty(value = "申请单原始状态") + @NotNull(message = "申请单原始状态不能为空") + private String originalApplyStatus; + + /** + * 申请单审批结果描述 + */ + @ApiModelProperty(value = "申请单审批结果描述") + private String approvedRemark; + + /** + * 审核时间 + */ + @ApiModelProperty(value = "审核时间") + @NotNull(message = "审核时间不能为空") + private Long approvedTime; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyBatchListDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyBatchListDTO.java new file mode 100644 index 0000000..c0d4c96 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyBatchListDTO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyBatchListDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + + /** + * 订单编号列表 + */ + @ApiModelProperty(value = "订单编号列表") + private List orderNos; + + /** + * 原订单编号列表 + */ + @ApiModelProperty(value = "原订单编号列表") + private List originalOrderNos; + + /** + * 订单变更申请单类型 + */ + @ApiModelProperty(value = "订单变更申请单类型") + private List applyTypes; + + /** + * 订单变更申请单状态 + */ + @ApiModelProperty(value = "订单变更申请单状态") + private List applyStatuses; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyCreatedDTO.java new file mode 100644 index 0000000..26f8ac5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyCreatedDTO.java @@ -0,0 +1,91 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeApplyStatusEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.lang.Nullable; + +import javax.validation.Valid; +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.*; + +/** + * @author amos wong + * @create 2023/10/30 13:53 + * @Description + */ +@Data +public class TpOrderChangeApplyCreatedDTO implements Serializable { + private static final long serialVersionUID = 6824617899547194529L; + + + /** + * 申请变更的订单号 + */ + @NotBlank(message = "订单号不能为空") + private String orderNo; + + /** + * 原订单编号 + */ + @NotBlank(message = "原订单编号不能为空") + private String originalOrderNo; + + /** + * 申请单状态 + * + * @see TpOrderChangeApplyStatusEnum + */ + private String applyStatus; + + /** + * 申请时间 + */ + @NotNull(message = "申请时间不能为空") + private Long applyTime; + + /** + * 申请变更的业务类型 + * + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderChangeTypeEnum + */ + @NotBlank(message = "申请变更的业务类型不能为空") + private String applyType; + + /** + * 申请原因 + */ + private String applyReason; + + /** + * 订单变更项:仅订单变更修改才有 + */ + @Nullable + @Valid + private List orderChangeItems; + + /** + * 申请人信息 + */ + @NotNull(message = "申请人信息不能为空") + private TpOrderChangeApplicantCreatedDTO orderChangeApplicant; + + /** + * 下单场景 + */ + @ApiModelProperty(value = "下单场景") + private String orderScene; + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyDetailDTO.java new file mode 100644 index 0000000..9759819 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyDetailDTO.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.*; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyDetailDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + /** + * 申请单编号 + */ + @ApiModelProperty(value = "申请单编号") +// @NotNull(message = "申请单编号不能为空") + private String applyNo; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 订单变更申请单类型 + */ + @ApiModelProperty(value = "订单变更申请单类型") + private String applyType; + + /** + * 订单变更申请单状态 + */ + @ApiModelProperty(value = "订单变更申请单状态") + private List applyStatus; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyLatestDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyLatestDetailDTO.java new file mode 100644 index 0000000..37eca6f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyLatestDetailDTO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyLatestDetailDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 订单变更申请单类型 + */ + @ApiModelProperty(value = "订单变更申请单类型") + private List applyTypes; + + /** + * 订单变更申请单状态 + */ + @ApiModelProperty(value = "订单变更申请单状态") + private List applyStatuses; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyListDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyListDTO.java new file mode 100644 index 0000000..bddb55c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyListDTO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyListDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 订单变更申请单类型 + */ + @ApiModelProperty(value = "订单变更申请单类型") + private List applyTypes; + + /** + * 订单变更申请单状态 + */ + @ApiModelProperty(value = "订单变更申请单状态") + private List applyStatuses; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyRscApplyDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyRscApplyDTO.java new file mode 100644 index 0000000..c5e6779 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyRscApplyDTO.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderReductionServiceChargeTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/11/21 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyRscApplyDTO implements Serializable { + + + /** + * 申请单编号 + */ + @ApiModelProperty(value = "申请单编号") + @NotNull(message = "申请单编号不能为空") + private String applyNo; + + + /** + * 申请单目标变更状态 + */ + @ApiModelProperty(value = "申请单目标变更状态") + @NotNull(message = "申请单目标变更状态不能为空") + private String targetApplyStatus; + + /** + * 申请单原始状态 + */ + @ApiModelProperty(value = "申请单原始状态") + @NotNull(message = "申请单原始状态不能为空") + private String originalApplyStatus; + + /** + * 服务费减免申请原因 + */ + @ApiModelProperty(value = "服务费减免申请原因") + private String rscApplyReason; + + /** + * 服务费减免申请时间 + */ + @ApiModelProperty(value = "服务费减免申请时间") + private Long rscApplyTime; + + /** + * 服务费减免类型 + * @see TpOrderReductionServiceChargeTypeEnum + */ + @ApiModelProperty(value = "服务费减免类型") + private String rscApplyType; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyStatusUpdateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyStatusUpdateDTO.java new file mode 100644 index 0000000..c0318d4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeApplyStatusUpdateDTO.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/11/21 14:57 + * @Description + */ +@Data +public class TpOrderChangeApplyStatusUpdateDTO implements Serializable { + + + /** + * 申请单编号 + */ + @ApiModelProperty(value = "申请单编号") + @NotNull(message = "申请单编号不能为空") + private String applyNo; + + + /** + * 申请单目标变更状态 + */ + @ApiModelProperty(value = "申请单目标变更状态") + @NotNull(message = "申请单目标变更状态不能为空") + private String targetApplyStatus; + + /** + * 申请单原始状态 + */ + @ApiModelProperty(value = "申请单原始状态") + @NotNull(message = "申请单原始状态不能为空") + private String originalApplyStatus; + + /** + * 申请单审批结果描述 + */ + @ApiModelProperty(value = "申请单审批结果描述") + private String approvedRemark; + + /** + * 审核时间 + */ + @ApiModelProperty(value = "审核时间") + @NotNull(message = "审核时间不能为空") + private Long approvedTime; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemCreatedDTO.java new file mode 100644 index 0000000..617fcd3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemCreatedDTO.java @@ -0,0 +1,73 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 14:03 + * @Description + */ +@Data +public class TpOrderChangeItemCreatedDTO implements Serializable { + private static final long serialVersionUID = 2806370286802680227L; + + + /** + * 变更申请单号 + */ + @NotBlank(message = "变更申请单号不能为空") + @ApiModelProperty(value = "变更申请单号") + private String applyNo; + /** + * 变更订单号 + */ + @NotBlank(message = "订单号不能为空") + @ApiModelProperty(value = "变更订单号") + private String orderNo; + + /** + * 源订单号 + */ + @ApiModelProperty(value = "源订单号") + private String originalOrderNo; + + /** + * 变更项编号 + * + */ + private String itemNo; + + /** + * 变更项类型 + * + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderChangeItemTypeEnum + */ + @NotBlank(message = "变更项类型不能为空") + @ApiModelProperty(value = "变更项类型") + private String itemType; + + /** + * 变更项因子 + * + */ + @ApiModelProperty(value = "变更项因子列表") + private List itemFactors; + + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemFactorCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemFactorCreatedDTO.java new file mode 100644 index 0000000..34680f7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemFactorCreatedDTO.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeItemFactorEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 14:03 + * @Description + */ +@Data +public class TpOrderChangeItemFactorCreatedDTO implements Serializable { + private static final long serialVersionUID = 2806370286802680227L; + + + /** + * 变更因子编码 + * @see TpOrderChangeItemFactorEnum + */ + @NotBlank(message = "变更因子编码不能为空") + @ApiModelProperty(value = "变更因子编码") + private String factorCode; + + /** + * 变更因子名称 + */ + @NotBlank(message = "变更因子名称不能为空") + @ApiModelProperty(value = "变更因子名称") + private String factorName; + + /** + * 变更因子类型 + */ + @ApiModelProperty(value = "变更因子类型") + private String factorType; + + + /** + * 变更前的值 + */ + @NotBlank(message = "变更前的值不能为空") + @ApiModelProperty(value = "变更前的值") + private String beforeValue; + + /** + * 变更后的值 + */ + @NotBlank(message = "变更后的值不能为空") + @ApiModelProperty(value = "变更后的值") + private String afterValue; + + /** + * 因子排序 + */ + @ApiModelProperty(value = "因子展示排序值") + private Integer sortIndex; + + /** + * 变更订单号 + */ + @ApiModelProperty(value = "变更订单号") + private String orderNo; + + /** + * 源订单号 + */ + @ApiModelProperty(value = "源订单号") + private String originalOrderNo; + + /** + * 变更申请单号 + */ + @ApiModelProperty(value = "申请单号") + private String applyNo; + + /** + * 变更项编号 + */ + @ApiModelProperty(value = "变更项编号") + private String changeItemNo; + + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemListDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemListDTO.java new file mode 100644 index 0000000..657217e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangeItemListDTO.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderChangeItemListDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + /** + * 申请单编号 + */ + @ApiModelProperty(value = "申请单编号") + @NotNull(message = "申请单编号不能为空") + private String applyNo; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + @NotNull(message = "订单编号不能为空") + private String orderNo; + + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + @NotNull(message = "原订单编号不能为空") + private String originalOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangePriceDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangePriceDTO.java new file mode 100644 index 0000000..fc153e1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChangePriceDTO.java @@ -0,0 +1,97 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tptradecore.common.enums.order.TpServiceChargeOperationTypeEnum; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单改价 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@Data +public class TpOrderChangePriceDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 原始订单编码 + */ + private String originalOrderNo; + + /** + * 审核状态 + */ + private Boolean auditStatus = Boolean.TRUE; + + /** + * 支付模式 + */ + private String payMode; + + /** + * 支付金额 + */ + private String payAmount; + + /** + * 更改前价格 + */ + private String pricingAmount; + + /** + * 更改后价格 + */ + private String changeAmount; + + /** + * 手续费操作类型 + * @see TpServiceChargeOperationTypeEnum + */ + private String serviceChargeOperationType = TpServiceChargeOperationTypeEnum.RULE_CAL_SERVICE_CHARGE.getBizType(); + + /** + * 手续费 + */ + private String serviceCharge; + + /** + * 当前单次操作产生的手续费; + */ + private String currentOperatorServiceCharge; + + /** + * 手续费比例 + */ + private String servicePercentage; + + /** + * 改价操作员 + */ + private String operatorUser; + + /** + * 改价操作员名称 + */ + private String operatorName; + + /** + * 业务类型 + * @see com.deepinnet.tptradecore.common.enums.order.TpAuditOrChangePriceBizTypeEnum + */ + private String bizType; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChargeRecordDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChargeRecordDTO.java new file mode 100644 index 0000000..9bcaca2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderChargeRecordDTO.java @@ -0,0 +1,66 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 订单费用 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderChargeRecordDTO implements Serializable { + + private static final long serialVersionUID = -1934894255107914110L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 原始订单编号 + */ + private String originalOrderNo; + + /** + * 询价价格 + */ + private String inquireAmount; + + /** + * 业务员更改价格 + */ + private String changeAmount; + + /** + * 实付金额 + */ + private String payAmount; + + /** + * 手续费 + */ + private String serviceCharge; + + /** + * 手续费费率 + */ + private String serviceChargeRate; + + /** + * 业务类型(下单 / 变更订单 / 取消订单) + */ + private String bizType; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCountQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCountQueryDTO.java new file mode 100644 index 0000000..7fd2d6b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCountQueryDTO.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + *

+ * 未核验订单查询DTO + *

+ * + * @author chenjiaju + * @since 2023/8/18 + */ + +@Data +public class TpOrderCountQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 原始订单号 + */ + @NotBlank + private String originalOrderNo; + + + /** + * tenantId + */ + @NotBlank + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCreateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCreateDTO.java new file mode 100644 index 0000000..85cde4d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderCreateDTO.java @@ -0,0 +1,277 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.vo.order.TpOrderPlacerVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + + +/** + * 下单请求对象 + * + * @author taobinxian + * @version 2023-08-07 + */ +@Data +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class TpOrderCreateDTO implements Serializable { + /** + * userIP + */ + @ApiModelProperty(value = "用户IP", example = "192.168.3.200") + private String userIp; + + /** + * POS机编号 + */ + @ApiModelProperty(value = "POS机编号") + private String posNo; + + /** + * 拼车刷卡流水号 + */ + @ApiModelProperty(value = "刷卡流水号") + private String swipeCardNo; + + /** + * 拼车公交卡卡号 + */ + @ApiModelProperty(value = "公交卡号") + private String busCardNo; + + /** + * 组织编码 + */ + @ApiModelProperty(value = "组织编码") + private String orgCode; + + /** + * 产品编码 + */ + @ApiModelProperty(value = "产品编码") + private String productNo; + + /** + * 产品名称 + */ + @ApiModelProperty(value = "产品名称") + private String productName; + + /** + * 产品类目编码 + */ + @ApiModelProperty(value = "产品类目编码") + private String productCategoryNo; + + /** + * 产品类目中文 + */ + @ApiModelProperty(value = "产品类目中文") + private String productCategory; + + /** + * 外部业务单号 + */ + @ApiModelProperty(value = "外部业务单号", required = true) + private String outRequestNo; + + /** + * 用户编码 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 订单编码 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 父订单编号 + */ + @ApiModelProperty(value = "父订单号") + private String parentOrderNo; + + /** + * 原订单号 + */ + @ApiModelProperty(value = "原订单号") + private String originalOrderNo; + + /** + * 是否主订单(0-否;1-是) + */ + @ApiModelProperty(value = "是否主订单(0-否;1-是)") + private Integer main; + + /** + * 订单类型(定制公交 / 预约包车 / 改签订单) + */ + @ApiModelProperty(value = "订单类型(1-定制公交;2-预约包车)") + private Integer type; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型(go; back; round)") + private String tripType; + + /** + * 付款模式 + */ + @ApiModelProperty(value = "付款模式(pay_later-先享后付;pay_now_deposit-先付后享付订金; pay_now-先付后享付全款)") + private String payMode; + + /** + * 实付金额 + */ + @ApiModelProperty(value = "实付金额") + private String payAmount; + + /** + * 应付金额 + */ + @ApiModelProperty(value = "应付金额") + private String payableAmount; + + /** + * 订单优惠前原金额 + */ + @ApiModelProperty(value = "优惠前金额") + private String originalAmount; + + /** + * 优惠金额 + */ + @ApiModelProperty(value = "优惠金额") + private String discountAmount; + + /** + * 服务费 + */ + @ApiModelProperty(value = "服务费") + private String serviceCharge; + + /** + * 订单来源(APP / 微信小程序 / 支付宝小程序 / H5) + */ + @ApiModelProperty(value = "订单来源(1-app;2-微信小程序;3-支付宝小程序;4-H5页面)") + private String source; + + /** + * 支付方式 + */ + @ApiModelProperty(value = "支付方式") + private String payType; + + /** + * 是否实名认证(0-否;1-是) + */ + @ApiModelProperty(value = "是否实名认证(0-否;1-是)") + private Integer identityVerificat; + + /** + * 车票类型 + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherTypeEnum + */ + @ApiModelProperty(value = "车票类型") + private String ticketType; + + /** + * 下单时间 + */ + @ApiModelProperty(value = "下单时间") + private Long orderTime; + + /** + * 支付时间 + */ + @ApiModelProperty(value = "支付时间") + private Long payTime; + + /** + * 订单关闭时间 + */ + @ApiModelProperty(value = "订单关闭时间") + private Long closeTime; + + /** + * 订单过期时间 + */ + @ApiModelProperty(value = "订单过期时间") + private Long expireTime; + + /** + * 审核前状态 + */ + @ApiModelProperty(value = "审核前状态") + private Integer beforeApproveStatus; + + /** + * 定制公交站点信息 + */ + @ApiModelProperty(value = "站点信息(上车点 / 下车点)") + private TpOrderStationDTO stationDTO; + + /** + * 定制公交站点信息 区分去返程 + */ + @ApiModelProperty(value = "定制公交站点信息 区分去返程") + private List charterBusStations; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 询价记录 + */ + @ApiModelProperty(value = "询价记录及明细 / 优惠信息") + private List tpOrderPriceRecords; + + /** + * 下单人 + */ + @ApiModelProperty(value = "下单人") + private TpOrderPlacerVO orderPlacer; + + /** + * 用车需求方 + */ + @ApiModelProperty(value = "用车需求方") + private TpOrderRequirementUserDTO orderRequirementUser; + + /** + * 标的项 + */ + @ApiModelProperty(value = "标的项") + private List orderSubjectItem; + + /** + * 线路 + */ + @ApiModelProperty(value = "线路") + private List routes; + + /** + * 服务对象 + */ + @ApiModelProperty(value = "服务对象") + private TpOrderTargetServiceDTO targetServiceDTO; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDetailQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDetailQueryDTO.java new file mode 100644 index 0000000..1f86f9c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDetailQueryDTO.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-02 + */ +@Data +public class TpOrderDetailQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 租户Id + */ + private String tenantId; + /** + * 订单号 + */ + private String orderNo; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDiscountDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDiscountDTO.java new file mode 100644 index 0000000..0db24b4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDiscountDTO.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 优惠信息 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderDiscountDTO implements Serializable { + + private static final long serialVersionUID = -1414448888888888239L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 优惠类型 + */ + private Integer type; + + /** + * 优惠金额 + */ + private String discountAmount; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 租户ID + */ + private String tenantId; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCallBackDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCallBackDTO.java new file mode 100644 index 0000000..0af6a38 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCallBackDTO.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/30 17:36 + * @Description 分配订单 + */ +@Data +public class TpOrderDispatchCallBackDTO implements Serializable { + private static final long serialVersionUID = -6835649297585208663L; + + + @ApiModelProperty(value = "订单派单编号") + private String dispatchNo; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + @NotBlank(message = "原订单编号不能为空") + private String originalOrderNo; + + + @ApiModelProperty(value = "操作员编号") + @NotBlank(message = "操作员编号不能为空") + private String operatorNo; + + + @ApiModelProperty(value = "操作员名称") + private String operatorName; + + + @ApiModelProperty(value = "召回时间") + private Long callBackTime; + + /** + * 召回原因 + */ + @ApiModelProperty(value = "召回原因") + private String callBackReason; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCreatedDTO.java new file mode 100644 index 0000000..25effbc --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchCreatedDTO.java @@ -0,0 +1,122 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchSceneTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 17:36 + * @Description 分配订单 + */ +@Data +public class TpOrderDispatchCreatedDTO implements Serializable { + private static final long serialVersionUID = -6835649297585208663L; + + @ApiModelProperty(value = "订单编号") + @Deprecated + private String orderNo; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + + @ApiModelProperty(value = "操作员编号") + @NotBlank(message = "操作员编号不能为空") + private String operatorNo; + + + @ApiModelProperty(value = "操作员名称") + private String operatorName; + + /** + * 派单来源场景 + * @see TpOrderDispatchSceneTypeEnum + */ + @ApiModelProperty(value = "派单来源场景") + @NotBlank(message = "派单来源场景不能为空") + private String dispatchScene; + + @ApiModelProperty(value = "分派组织代码") + @NotBlank(message = "分派组织代码不能为空") + private String targetOrgNo; + + + @ApiModelProperty(value = "分派组织名称") + @NotBlank(message = "分派组织名称不能为空") + private String targetOrgName; + + @ApiModelProperty(value = "分派组织类型:总公司/分公司") + @NotBlank(message = "分派组织类型不能为空") + private String targetOrgType; + + @ApiModelProperty(value = "是否可以转分配:分公司不可以,总公司可以") + @NotBlank(message = "是否可以转分配不能为空") + @Deprecated + private Boolean isReDispatch = Boolean.FALSE; + + /** + * 目标承运组织是否可以退回重新派单 + */ + @ApiModelProperty(value = "目标分配组织是否可以退回原处") + private Boolean isGiveBack = Boolean.TRUE; + + /** + * 分配组织是否可以召回 + */ + @ApiModelProperty(value = "分配组织是否可以召回") + private Boolean isCallBack = Boolean.TRUE; + + /** + * 下单来源承运组织编码 + */ + @ApiModelProperty(value = "下单来源承运组织编码") + private String originOrgNo; + + /** + * 下单来源承运组织名称 + */ + @ApiModelProperty(value = "下单来源承运组织名称") + private String originOrgName; + + /** + * 下单来源承运组织类型 + */ + @ApiModelProperty(value = "下单来源承运组织类型") + private String originOrgType; + + /** + * 分配时间 + */ + @ApiModelProperty(value = "分配时间") + @NotBlank(message = "分配时间不能为空") + private Long dispatchTime; + + /** + * @see TpOrderDispatchStatusEnum + */ + @ApiModelProperty(value = "分配状态:已创建/已接单/已转分配") + @NotBlank(message = "分配状态不能为空") + private Integer dispatchStatus; + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchDetailDTO.java new file mode 100644 index 0000000..aeba1fc --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchDetailDTO.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderDispatchDetailDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + /** + * 派单编号 + */ + @ApiModelProperty(value = "派单编号") + private String dispatchNo; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + @Deprecated + private String orderNo; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + /** + * 派单状态 + */ + @ApiModelProperty(value = "派单状态") + private List statuses; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchFleetCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchFleetCreatedDTO.java new file mode 100644 index 0000000..89610a8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchFleetCreatedDTO.java @@ -0,0 +1,86 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 17:36 + * @Description 分配订单 + */ +@Data +public class TpOrderDispatchFleetCreatedDTO implements Serializable { + private static final long serialVersionUID = -6835649297585208663L; + + + @ApiModelProperty(value = "订单派单编号") + @NotBlank(message = "订单派单编号不能为空") + private String dispatchNo; + + @ApiModelProperty(value = "订单编号") + @Deprecated + private String orderNo; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + + @ApiModelProperty(value = "操作员编号") + @NotBlank(message = "操作员编号不能为空") + private String operatorNo; + + + @ApiModelProperty(value = "操作员名称") + private String operatorName; + + + @ApiModelProperty(value = "分配时间") + @NotBlank(message = "分配时间不能为空") + private Long dispatchTime; + + /** + * 承运车队编码 + */ + @ApiModelProperty(value = "承运车队编码") + @NotBlank(message = "承运车队编码不能为空") + private String targetFleetNo; + + /** + * 承运车队名称 + */ + @ApiModelProperty(value = "承运车队名称") + private String targetFleetName; + + /** + * 去程-合营车队车型关系 + */ + @ApiModelProperty(value = "去程-合营车队车型关系") + private List goJoinFleets; + + /** + * 返程-合营车队车型关系 + */ + @ApiModelProperty(value = "返程-合营车队车型关系") + private List backJoinFleets; + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchGiveBackDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchGiveBackDTO.java new file mode 100644 index 0000000..af6540b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchGiveBackDTO.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/30 17:36 + * @Description 分配订单 + */ +@Data +public class TpOrderDispatchGiveBackDTO implements Serializable { + private static final long serialVersionUID = -6835649297585208663L; + + + @ApiModelProperty(value = "订单派单编号") + private String dispatchNo; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + @NotBlank(message = "原订单编号不能为空") + private String originalOrderNo; + + + @ApiModelProperty(value = "操作员编号") + @NotBlank(message = "操作员编号不能为空") + private String operatorNo; + + + @ApiModelProperty(value = "操作员名称") + private String operatorName; + + + @ApiModelProperty(value = "退回时间") + @NotBlank(message = "退回时间不能为空") + private Long giveBackTime; + + /** + * 退回原因 + */ + @ApiModelProperty(value = "退回原因") + private String giveBackReason; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchJoinFleetDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchJoinFleetDTO.java new file mode 100644 index 0000000..04719ff --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchJoinFleetDTO.java @@ -0,0 +1,80 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * Description: + * Date: 2024/6/3 + * Author: lijunheng + */ + +/** + * 订单分配的合营车队,一个车型对应一个车队 + */ +@Data +public class TpOrderDispatchJoinFleetDTO implements Serializable { + + /** + * 派单主营车队记录编码 + */ + @ApiModelProperty(value = "派单主营车队记录编码") + private String orderDispatchFleetCode; + + /** + * 行程类型(go; back) + */ + @ApiModelProperty(value = "行程类型(go; back)") + private String tripType; + + /** + * 车型编码 + */ + @ApiModelProperty(value = "车型编码") + private String specCode; + + /** + * 车型名称 + */ + @ApiModelProperty(value = "车型名称") + private String specName; + + /** + * 分公司编码 + */ + @ApiModelProperty(value = "分公司编码") + private String orgCode; + + /** + * 分公司名称 + */ + @ApiModelProperty(value = "分公司名称") + private String orgName; + + /** + * 车队编码 + */ + @ApiModelProperty(value = "车队编码") + private String fleetCode; + + /** + * 车队名称 + */ + @ApiModelProperty(value = "车队名称") + private String fleetName; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展属性") + private Map bizData; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchListDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchListDTO.java new file mode 100644 index 0000000..cc65957 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchListDTO.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderDispatchListDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + /** + * 订单编号列表 + */ + @ApiModelProperty(value = "订单编号") + @Deprecated + private List orderNoList; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private List originalOrderNoList; + + /** + * 订单派单状态 + */ + @ApiModelProperty(value = "派单状态列表") + private List statuses; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchStatusUpdateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchStatusUpdateDTO.java new file mode 100644 index 0000000..07fd6c7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderDispatchStatusUpdateDTO.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/11/21 14:57 + * @Description + */ +@Data +public class TpOrderDispatchStatusUpdateDTO implements Serializable { + + + /** + * 派单编号 + */ + @ApiModelProperty(value = "派单编号") + @NotNull(message = "派单编号不能为空") + private String dispatchNo; + + + /** + * 目标变更状态 + */ + @ApiModelProperty(value = "目标变更状态") + @NotNull(message = "目标变更状态不能为空") + private String targetStatus; + + /** + * 原始状态 + */ + @ApiModelProperty(value = "原始状态") + @NotNull(message = "原始状态不能为空") + private String originalStatus; + + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + @Deprecated + private String orderNo; + /** + * 原订单编号 + */ + @ApiModelProperty(value = "原订单编号") + private String originalOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderElementDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderElementDTO.java new file mode 100644 index 0000000..5711bf0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderElementDTO.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.dto.order; + + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 下单要素 + *

+ * + * @author taobinxian + * @since 2023/8/8 + */ +@Data +public class TpOrderElementDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 要素类型(下单 / 退款 / 改签) + */ + private Integer elementType; + + /** + * 要素code + */ + private String elementCode; + + /** + * 要素名称 + */ + private String elementName; + + /** + * 要素Key + */ + private String elementKey; + + /** + * 要素值 + */ + private String elementValue; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndPriceConfirmDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndPriceConfirmDTO.java new file mode 100644 index 0000000..d1ac7e6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndPriceConfirmDTO.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 行程结束改价实体 + *

+ * + * @author chenjiaju + * @since 2024/6/3 + */ +@Data +public class TpOrderEndPriceConfirmDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 使用原始订单号 + */ + private String orderNo; + + /** + * 行程结束确认的总价 + */ + private BigDecimal confirmPrice; + + /** + * 改价操作员编号 + */ + private String operatorNo; + + /** + * 改价操作员名称 + */ + private String operatorName; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndorseDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndorseDTO.java new file mode 100644 index 0000000..db7dc9f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderEndorseDTO.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpOrderEndorseDTO extends TpOrderCreateDTO { + /** + * 改签的订单号 + */ + private String orderNo; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderInvoiceDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderInvoiceDTO.java new file mode 100644 index 0000000..ed4785c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderInvoiceDTO.java @@ -0,0 +1,56 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 发票 + *

+ * + * @author chenjiaju + * @since 2023/11/29 + */ + +@Data +@ApiModel(value = "发票") +public class TpOrderInvoiceDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private List orderNos; + + /** + * 发票号码 + */ + @ApiModelProperty(value = "发票号码") + private String invoiceNo; + + /** + * 发票地址 + */ + @ApiModelProperty(value = "发票上传地址") + private String invoiceAddress; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展属性") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderListQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderListQueryDTO.java new file mode 100644 index 0000000..5f7d985 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderListQueryDTO.java @@ -0,0 +1,207 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tp.common.lang.dto.BasePageQueryDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderSourceEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @author taobinxian + * @version 2023-08-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpOrderListQueryDTO extends BasePageQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 下单用户编号 + */ + @ApiModelProperty(value = "下单用户编号") + private String placerNo; + + /** + * pos机刷卡卡号 + */ + @ApiModelProperty(value = "pos机刷卡卡号") + private String posCardNo; + + /** + * 后台录单用户编号 + */ + @ApiModelProperty(value = "后台录单用户编号") + private String backendPlacerNo; + + /** + * 下单用户手机号 + */ + @ApiModelProperty(value = "下单用户手机号") + private String placerPhone; + + /** + * 联系手机号 + */ + @ApiModelProperty(value = "联系手机号") + private String contactPhone; + + /** + * 联系人名称 + */ + @ApiModelProperty(value = "联系人名称") + private String contactName; + + /** + * 产品编码 + */ + @ApiModelProperty(value = "产品编码") + private String productCode; + + /** + * 组织编号 + */ + @ApiModelProperty(value = "组织编号") + private List orgNos; + + /** + * 产品名称 + */ + @ApiModelProperty(value = "产品名称") + private String productName; + + /** + * 线路名称 + */ + @ApiModelProperty(value = "线路名称") + private String routeName; + + /** + * 线路编号 + */ + @ApiModelProperty(value = "线路编号") + private String routeCode; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "原始订单编号") + private String originalOrderNo; + + /** + * 产品类目no + */ + @ApiModelProperty(value = "产品类目编号") + private String productCategoryNo; + + /** + * 发车时间 + */ + @ApiModelProperty(value = "发车时间") + private String departureTime; + + /** + * 订单类型 + */ + @ApiModelProperty(value = "订单类型(1-定制公交;2-预约包车;3-预约拼车)") + private Integer orderType; + + /** + * 订单来源 + * @see TpOrderSourceEnum + */ + @ApiModelProperty(value = "订单来源") + private String source; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型(go-去程;back-返程)") + private String tripType; + + /** + * 发票状态 + */ + @ApiModelProperty(value = "发票状态(0-未上传;1-已上传)") + private Integer invoiceStatus; + + /** + * 发票号码 + */ + @ApiModelProperty(value = "发票号码") + private String invoiceNo; + + /** + * 票类型 + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherTypeEnum + */ + @ApiModelProperty(value = "票类型") + private List ticketType; + + /** + * 全款审批 + */ + @ApiModelProperty(value = "全额退款审批") + private Integer allRefundAuditStatus; + + /** + * 订单状态 (0-订单初始化;5-订单待支付;10-订单超时;15-订单已支付;20-部分核销;25-退款中;30-部分退款;35-已经改签;40-全部退款;45-退款失败;50-已完成(存在部分退款);55-已完成(不存在退款)) + */ + @ApiModelProperty(value = "订单状态(1-待支付;2-待核销;3-退款成功;)") + private Integer tpOrderStatusEnum; + + /** + * 包车状态 + */ + @ApiModelProperty(value = "后台批量订单状态") + private List statusArr; + + /** + * 服务对象名称 + */ + @ApiModelProperty(value = "服务对象名称") + private String serviceTargetName; + + /** + * 乘车日期-开始时间 + */ + @ApiModelProperty(value = "乘车日期开始时间") + private Long pickUpStartTime; + + /** + * 乘车日期-结束时间 + */ + @ApiModelProperty(value = "乘车日期截止时间") + private Long pickUpEndTime; + + /** + * 下单开始时间 + */ + @ApiModelProperty(value = "下单开始时间") + private Long orderStartTime; + + /** + * 下单结束时间 + */ + @ApiModelProperty(value = "下单结束时间") + private Long orderEndTime; + + /** + * 租户ID + */ + @NotNull(message = "租户ID不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderOfflinePaidDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderOfflinePaidDTO.java new file mode 100644 index 0000000..7f325e3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderOfflinePaidDTO.java @@ -0,0 +1,78 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + *         ┏┓   ┏┓+ + + *        ┏┛┻━━━┛┻┓ + + + *        ┃       ┃ + *        ┃   ━   ┃ ++ + + + + *        ████━████ ┃+ + *        ┃       ┃ + + *        ┃   ┻   ┃ + *        ┃       ┃ + + + *        ┗━┓    ┏━┛ + *          ┃   ┃ + *          ┃   ┃ + + + + + *          ┃   ┃    Code is far away from bug with the animal protecting + *          ┃   ┃ +     神兽保佑,代码无bug + *          ┃   ┃ + *          ┃   ┃  + + *          ┃    ┗━━━┓ + + + *          ┃        ┣┓ + *          ┃        ┏┛ + *          ┗┓┓┏━┳┓┏┛ + + + + + *           ┃┫┫ ┃┫┫ + *           ┗┻┛ ┗┻┛+ + + + + * + * @author 唐国翔 + * @since 2024-05-30 星期四 + **/ +@Data +public class TpOrderOfflinePaidDTO implements Serializable { + + private static final long serialVersionUID = -5788640661360079177L; + + /** + * 订单编码 + */ + @ApiModelProperty("订单编码") + @NotBlank + private String originalOrderNo; + + /** + * 支付金额 + */ + @ApiModelProperty("支付金额") + @NotBlank + private String paidAmount; + + /** + * 操作员用户编号 + */ + @ApiModelProperty("操作员用户编号") + private String operatorNo; + + /** + * 操作员用户名称 + */ + @ApiModelProperty("操作员用户名称") + private String operatorName; + + /** + * 扩展字段 + */ + @ApiModelProperty("扩展字段") + private Map bizData; + + /** + * 租户ID + */ + @ApiModelProperty("租户ID") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPaidDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPaidDTO.java new file mode 100644 index 0000000..a6b8b16 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPaidDTO.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 已支付订单DTO + *

+ * + * @author chenjiaju + * @since 2023/8/31 + */ + +@Data +@Builder +public class TpOrderPaidDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 订单支付时间 + */ + @ApiModelProperty(value = "订单支付时间") + private Long payTime; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPayDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPayDTO.java new file mode 100644 index 0000000..2398f4b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPayDTO.java @@ -0,0 +1,116 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.dto.trans.TpUserInfoDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Map; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TpOrderPayDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 待支付的订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "业务类型") + private String bizType; + + /** + * 支付金额 + */ + @ApiModelProperty(value = "支付金额") + private String payAmount; + + /** + * 优惠金额 + */ + @ApiModelProperty(value = "优惠金额") + private String discountMoney; + + /** + * 支付成功后跳转的url + */ + @ApiModelProperty(value = "支付成功后跳转的url") + private String returnUrl; + + /** + * 支付方式 + */ + @ApiModelProperty(value = "支付方式") + private String payType; + + /** + * 来源-->对应创建支付单重的payScene + */ + @ApiModelProperty(value = "支付来源") + private String source; + + /** + * 支付标题 + */ + @ApiModelProperty(value = "支付标题") + private String payTitle; + + /** + * 用户IP地址 + */ + @ApiModelProperty(value = "用户IP地址") + private String userIp; + + /** + * 微信小程序、支付宝小程序支付时需要传入,代表openid + */ + @ApiModelProperty(value = "微信小程序、支付宝小程序支付时需要传入,代表openid") + private String buyerId; + + @ApiModelProperty(value = "支付宝小程序appId,当支付宝小程序支付时必传") + private String appId; + + /** + * 组织编号 + */ + @ApiModelProperty(value = "组织编号") + private String orgCode; + + /** + * 支付超时时间 + */ + @NotNull(message = "支付超时时间不能为空") + @ApiModelProperty(value = "支付超时时间") + private Long payTimeout; + + @NotNull(message = "用户信息不能为空") + private TpUserInfoDTO userInfoDTO; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 租户id(必传) + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPlacerDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPlacerDTO.java new file mode 100644 index 0000000..f00dea2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPlacerDTO.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.dto.order; + + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 下单人 + *

+ * + * @author taobinxian + * @since 2023/8/8 + */ +@Data +public class TpOrderPlacerDTO implements Serializable { + + private static final long serialVersionUID = -8148089739381314981L; + + /** + * 下单人用户Id + */ + private String userId; + + /** + * 下单人姓名 + */ + private String placerName; + + /** + * 联系方式 + */ + private String placerContact; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDTO.java new file mode 100644 index 0000000..4b6e567 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDTO.java @@ -0,0 +1,78 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 计价记录 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@Data +public class TpOrderPriceRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 计价原始金额 + */ + private String pricingOriginalAmount; + + /** + * 计价优惠金额 + */ + private String pricingDiscountAmount; + + /** + * 计价类型 + */ + private Integer pricingType; + + /** + * 内部询价价格 + */ + private String internalInquireAmount; + + /** + * 计价参数 + */ + private String pricingParams; + + /** + * 优惠信息 + */ + private List orderDiscount; + + /** + * 询价记录详情 + */ + private List orderPriceRecordDetails; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDetailDTO.java new file mode 100644 index 0000000..b8f9aeb --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPriceRecordDetailDTO.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 计价记录详情 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@Data +public class TpOrderPriceRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 询价记录详情 + */ + private String itemNo; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 乘客数量 + */ + private String passengerCount; + + /** + * 单原始金额 + */ + private String singleOriginalAmount; + + /** + * 单优惠金额 + */ + private String singleDiscountAmount; + + /** + * 总原始金额 + */ + private String totalOriginalAmount; + + /** + * 总优惠金额 + */ + private String totalDiscountAmount; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushPaidStatusStrategyDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushPaidStatusStrategyDTO.java new file mode 100644 index 0000000..8edf4b6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushPaidStatusStrategyDTO.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 订单支付推进策略入参 + *

+ * + * @author chenjiaju + * @since 2023/9/4 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpOrderPushPaidStatusStrategyDTO extends TpOrderPushStatusStrategyDTO { + + /** + * 订单支付时间 + */ + private Long payTime; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusDTO.java new file mode 100644 index 0000000..c098978 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusDTO.java @@ -0,0 +1,49 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderPushStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 订单状态推进入参 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ + +@Data +@Builder +public class TpOrderPushStatusDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 支付时间 + */ + @ApiModelProperty(value = "支付时间") + private Long payTime; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 当前订单状态需推进的枚举 + */ + @ApiModelProperty(value = "当前订单状态需推进的枚举") + private TpOrderPushStatusEnum tpOrderPushStatusEnum; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusStrategyDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusStrategyDTO.java new file mode 100644 index 0000000..6a06ba4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderPushStatusStrategyDTO.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +/** + *

+ * 订单推进策略入参 + *

+ * + * @author chenjiaju + * @since 2023/9/4 + */ + +@Data +public class TpOrderPushStatusStrategyDTO { + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryDTO.java new file mode 100644 index 0000000..9e91d58 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryDTO.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 订单查询DTO + *

+ * + * @author chenjiaju + * @since 2023/8/24 + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpOrderQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @NotNull(message = "订单编号不能为空") + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 原始订单编号 + */ + @ApiModelProperty(value = "原始订单编号") + private String originalOrderNo; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 需要的模块 + * @see com.deepinnet.tptradecore.core.model.enums.order.TpOrderModulesEnum + */ + @ApiModelProperty(value = "需要的模块") + private List needModules; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryRefundDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryRefundDetailDTO.java new file mode 100644 index 0000000..a800314 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderQueryRefundDetailDTO.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/8/31 10:23 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpOrderQueryRefundDetailDTO implements Serializable { + + private static final long serialVersionUID = -1216366860646634367L; + + @NotBlank(message = "订单号不能为空") + private String orderNo; + + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedCreatedDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedCreatedDTO.java new file mode 100644 index 0000000..b6f3f26 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedCreatedDTO.java @@ -0,0 +1,89 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 订单接单 + *

+ * + * @author xiehuqaiao + * @since 2023-11-10 + */ +@AllArgsConstructor +@NoArgsConstructor +@Data +public class TpOrderReceivedCreatedDTO implements Serializable { + + private static final long serialVersionUID = -6835649297585208663L; + /** + * 业务单据编号 + */ + @ApiModelProperty(value = "业务单据编号") + private String bizObjNo; + + /** + * 业务单据类型 + */ + @ApiModelProperty(value = "业务单据类型") + private String bizObjType; + + /** + * 接单组织编号 + */ + @ApiModelProperty(value = "接单组织编号") + @NotBlank(message = "接单组织编号不能为空") + private String orgNo; + + /** + * 接单组织名称 + */ + @ApiModelProperty(value = "接单组织名称") + @NotBlank(message = "接单组织名称不能为空") + private String orgName; + + /** + * 接单人编号 + */ + @ApiModelProperty(value = "接单人编号") + private String receiverNo; + + /** + * 接单人名称 + */ + @ApiModelProperty(value = "接单人名称") + private String receiverName; + + /** + * 接单时间 + */ + @ApiModelProperty(value = "接单时间") + @NotBlank(message = "接单时间不能为空") + private Long receivedTime; + + /** + * 接单状态 + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderReceivedStatusEnum + */ + @ApiModelProperty(value = "接单状态") + @NotBlank(message = "接单状态不能为空") + private Integer receivedStatus; + + /** + * 业务扩展字段 + */ + @ApiModelProperty(value = "业务扩展字段") + private Map bizData; + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedDetailDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedDetailDTO.java new file mode 100644 index 0000000..66c85a6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderReceivedDetailDTO.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/30 14:57 + * @Description + */ +@Data +public class TpOrderReceivedDetailDTO implements Serializable { + + private static final long serialVersionUID = 4262844007335163602L; + + /** + * 接单编号 + */ + @ApiModelProperty(value = "接单编号") + @NotNull(message = "接单编号不能为空") + private String receiveNo; + + /** + * 业务单据编号 + * + */ + @ApiModelProperty(value = "业务单据编号") + @NotNull(message = "业务单据编号不能为空") + private String bizObjNo; + + /** + * 业务单据类型 + */ + @ApiModelProperty(value = "业务单据类型") + @NotNull(message = "业务单据类型不能为空") + private String bizObjType; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRefundDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRefundDTO.java new file mode 100644 index 0000000..bf35399 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRefundDTO.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 退票请求对象 + * + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpOrderRefundDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 要退的订单号 + */ + private String orderNo; + + /** + * 退票原因 + */ + private String refundReason; + + /** + * 退票标的项 + */ + private List tpOrderSubjectItemList; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRequirementUserDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRequirementUserDTO.java new file mode 100644 index 0000000..f76d345 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRequirementUserDTO.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.common.dto.order; + + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 用车方 + *

+ * + * @author taobinxian + * @since 2023/8/8 + */ + +@Data +public class TpOrderRequirementUserDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用车人名称 + */ + private String requirementName; + + /** + * 用车需求方联系人名称 + */ + private String requirementContactName; + + /** + * 联系方式 + */ + private String requirementContact; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleDTO.java new file mode 100644 index 0000000..b76cff8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleDTO.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.dto.voucher.TpInvalidVoucherDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/7/18 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("改签对象") +public class TpOrderRescheduleDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签订单编号 + */ + private String originalOrderNo; + + /** + * 改签list + */ + @ApiModelProperty("改签信息") + private List rescheduleRecords; + + /** + * 失效凭证列表 + */ + private List invalidVoucherDTOs; + + /** + * 改签后下单参数 + */ + @ApiModelProperty("改签后重下单参数") + private TpOrderCreateDTO createOrderDto; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleInfoDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleInfoDTO.java new file mode 100644 index 0000000..e2c3717 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleInfoDTO.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Getter +@Setter +public class TpOrderRescheduleInfoDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签前售卖单元编号 + */ + private String subjectItemNo; + + /** + * 改签后售卖单元编号 + */ + private String rescheduleSubjectItemNo; + + /** + * 改签前班次编号 + */ + private String shuttleNo; + + /** + * 改签后班次编号 + */ + private String rescheduleShuttleNo; + + /** + * 班次日期 + */ + private String shuttleDate; + + /** + * 班次时间 + */ + private String shuttleTime; + + /** + * 改签后班次日期 + */ + private String rescheduleShuttleDate; + + /** + * 改签后班次时间 + */ + private String rescheduleShuttleTime; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 乘客姓名 + */ + private String passengerName; + + /** + * 乘客数量 + */ + private Integer passengerCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleRecordDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleRecordDTO.java new file mode 100644 index 0000000..e02b092 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRescheduleRecordDTO.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Data +public class TpOrderRescheduleRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签前订单编号 + */ + private String originalOrderNo; + + /** + * 改签信息 + */ + private List orderRescheduleInfos; + + /** + * 行程类型 + */ + private String tripType; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteDTO.java new file mode 100644 index 0000000..2edcb07 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteDTO.java @@ -0,0 +1,67 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderRouteDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 线路编号 + */ + private String routeNo; + + /** + * 线路名称 + */ + private String routeName; + + /** + * 去程 / 返程 + */ + private String roundTrip; + + /** + * 营运日期 + */ + private String workTime; + + /** + * 时刻表 + */ + private String timeSchedule; + + /** + * 所属车队 + */ + private String belongFleet; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 班次 + */ + private List tpOrderRouteShuttle; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteShuttleDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteShuttleDTO.java new file mode 100644 index 0000000..79a397a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderRouteShuttleDTO.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderRouteShuttleDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 线路编号 + */ + private String routeNo; + + /** + * 班次编号 + */ + private String shuttleNo; + + /** + * 班次名称 + */ + private String shuttleName; + + /** + * 班次发车时间 + */ + private String shuttleTime; + + /** + * 班次行程类型 + */ + private String tripType; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttleQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttleQueryDTO.java new file mode 100644 index 0000000..6dcd028 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttleQueryDTO.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * 班次信息查询(司机) + *

+ * + * @author chenjiaju + * @since 2023/9/18 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpOrderShuttleQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 班次编号 + */ + private String shuttleNo; + + /** + * 上车点code + */ + private String pickUpLocationCode; + + /** + * 下车点code + */ + private String dropDownLocationCode; + + /** + * tenantId + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttlesQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttlesQueryDTO.java new file mode 100644 index 0000000..27ca170 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderShuttlesQueryDTO.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 班次信息查询(司机) + *

+ * + * @author chenjiaju + * @since 2023/9/18 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpOrderShuttlesQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 班次编号 + */ + private List shuttleCodes; + + /** + * tenantId + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderStationDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderStationDTO.java new file mode 100644 index 0000000..ba6af0d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderStationDTO.java @@ -0,0 +1,115 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + *

+ * 站点信息(上车点,下车点) + *

+ * + * @author chenjiaju + * @since 2023/8/31 + */ + +@Data +public class TpOrderStationDTO implements Serializable { + + private static final long serialVersionUID = -1L; + + /** + * 行程单编号 + */ + @ApiModelProperty(value = "行程单编号") + private String tripNo; + + /** + * 上车点code + */ + @ApiModelProperty(value = "上车点code") + private String pickUpLocationCode; + + /** + * 上车点名称 + */ + @ApiModelProperty(value = "上车点名称") + private String pickUpLocation; + + /** + * 上车点经度 + */ + @ApiModelProperty(value = "上车点经度") + private String pickUpLng; + + /** + * 上车点纬度 + */ + @ApiModelProperty(value = "上车点纬度") + private String pickUpLat; + + /** + * 上车点时间 + */ + @ApiModelProperty(value = "上车点时间") + private String pickUpTime; + + /** + * 下车点code + */ + @ApiModelProperty(value = "下车点code") + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + @ApiModelProperty(value = "下车点名称") + private String dropOffLocation; + + /** + * 下车点纬度 + */ + @ApiModelProperty(value = "下车点经度") + private String dropOffLng; + + /** + * 下车点经度 + */ + @ApiModelProperty(value = "下车点纬度") + private String dropOffLat; + + /** + * 上车点时间 + */ + @ApiModelProperty(value = "下车点时间") + private String dropOffTime; + + /** + * 途径点 + */ + @ApiModelProperty(value = "途径点") + private List pathPoints; + + /** + * 公里数 + */ + @ApiModelProperty(value = "公里数") + private String miles; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型(go;back,这里仅有去程或返程)") + private String tripType; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemDTO.java new file mode 100644 index 0000000..13cdbce --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemDTO.java @@ -0,0 +1,94 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 标的项 + *

+ * + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpOrderSubjectItemDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标的编码 + */ + @ApiModelProperty(value = "标的项编码") + private String itemNo; + + /** + * 乘客编码 + */ + @ApiModelProperty(value = "乘客编码") + private String passengerNo; + + /** + * 乘客数量 + */ + @ApiModelProperty(value = "乘客数量") + private Integer passengerCount; + + /** + * 用车天数 + */ + @ApiModelProperty(value = "用车天数") + private Integer days; + + /** + * 是否包含食宿 + */ + @ApiModelProperty(value = "是否包含食宿(include / exclude)") + private String includeDriverExpenses; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型") + private String tripType; + + /** + * 标的名称 + */ + @ApiModelProperty(value = "标的名称") + private String name; + + /** + * 标的类型 + */ + @ApiModelProperty(value = "标的类型") + private String type; + + /** + * 购买标的项数量 + */ + @ApiModelProperty(value = "标的项数量") + private Integer count; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 乘客信息 + */ + @ApiModelProperty(value = "乘客信息") + private TpPassengerDTO passengerInfo; + + /** + * 标的项要素 + */ + @ApiModelProperty(value = "标的项要素") + private List subjectItemElements; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemElementDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemElementDTO.java new file mode 100644 index 0000000..23a0ee8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSubjectItemElementDTO.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 标的项要素 + *

+ * + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpOrderSubjectItemElementDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标的项编码 + */ + private String itemNo; + + /** + * 要素code + */ + private String elementCode; + + /** + * 要素名称 + */ + private String elementName; + + /** + * 要素值 + */ + private String elementValue; + + /** + * 要素单位 + */ + private String elementUnit; + + /** + * 扩展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSwipeQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSwipeQueryDTO.java new file mode 100644 index 0000000..84a6227 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderSwipeQueryDTO.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/6/3 + */ + +@Data +public class TpOrderSwipeQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + private String swipeCardNo; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTargetServiceDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTargetServiceDTO.java new file mode 100644 index 0000000..7f928a5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTargetServiceDTO.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 服务对象DTO + *

+ * + * @author chenjiaju + * @since 2023/8/1 + */ + +@Data +public class TpOrderTargetServiceDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务方名称 + */ + @ApiModelProperty(value = "服务方名称") + private String targetName; + + /** + * 服务方唯一编码 + */ + @ApiModelProperty(value = "服务方唯一编码") + private String targetNumber; + + /** + * bizData + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTravelDispatchDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTravelDispatchDTO.java new file mode 100644 index 0000000..cc12287 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderTravelDispatchDTO.java @@ -0,0 +1,42 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderTravelTripStatusEnum; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 派单记录入参 + *

+ * + * @author chenjiaju + * @since 2023/11/23 + */ + +@Data +public class TpOrderTravelDispatchDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 行程单编号 + */ + private String tripNo; + + /** + * 行程单状态, 主数据回调写死已派车即可 + * @see TpOrderTravelTripStatusEnum + */ + private String tripStatus; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUnverifiedQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUnverifiedQueryDTO.java new file mode 100644 index 0000000..006af0c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUnverifiedQueryDTO.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 未核验订单查询DTO + *

+ * + * @author chenjiaju + * @since 2023/8/18 + */ + +@Data +public class TpOrderUnverifiedQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 线路编号 + */ + @NotNull + private String routeNo; + + /** + * 班次编号 + */ + private String shuttleNo; + + /** + * tenantId + */ + @NotNull + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUpdateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUpdateDTO.java new file mode 100644 index 0000000..7e54653 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpOrderUpdateDTO.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * DTO + *

+ * + * @author chenjiaju + * @since 2023/8/24 + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpOrderUpdateDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @NotNull(message = "订单编号不能为空") + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerDTO.java new file mode 100644 index 0000000..5ca6ab7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerDTO.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 乘客信息 + *

+ * + * @author taobinxian + * @version 2023-08-07 + */ + +@Data +public class TpPassengerDTO implements Serializable { + + private static final long serialVersionUID = -7157914478824441426L; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 乘客姓名 + */ + private String passengerName; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 联系方式 + */ + private String passengerContact; + + /** + * 乘客证件类型 + */ + private String identificationType; + + /** + * 乘客证件编号 + */ + private String identificationNumber; + + /** + * 乘客对应的行程类型 + */ + private String tripType; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerSaveDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerSaveDTO.java new file mode 100644 index 0000000..46a2257 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpPassengerSaveDTO.java @@ -0,0 +1,8 @@ +package com.deepinnet.tptradecore.common.dto.order; + +/** + * @author taobinxian + * @version 2023-08-09 + */ +public class TpPassengerSaveDTO { +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookDTO.java new file mode 100644 index 0000000..0db6630 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookDTO.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpRouteBookDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 起始站点code + */ + private String departureStationCode; + + /** + * 目的站点Code + */ + private String destinationStationCode; + + /** + * 起始站点名称 + */ + private String departureStationName; + + /** + * 目的站点名称 + */ + private String destinationStationName; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingDetailQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingDetailQueryDTO.java new file mode 100644 index 0000000..b2fce59 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingDetailQueryDTO.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-04 + */ +@Data +public class TpRouteBookingDetailQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 租户Id + */ + private String tenantId; + + /** + * 线路预约编号 + */ + private String routeBookingNo; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingQueryDTO.java new file mode 100644 index 0000000..0200da9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpRouteBookingQueryDTO.java @@ -0,0 +1,21 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-04 + */ +@Data +public class TpRouteBookingQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 租户Id + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpTravelTripPathPointDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpTravelTripPathPointDTO.java new file mode 100644 index 0000000..30e562a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpTravelTripPathPointDTO.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * 途径点信息 + *

+ * + * @author chenjiaju + * @since 2023/11/9 + */ + +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "途径点信息") +public class TpTravelTripPathPointDTO implements Serializable { + + private static final long serialVersionUID = -1L; + + /** + * 序号,如当前序号为0则为起点,序号最大则为终点,中间为途径点 + */ + @ApiModelProperty(value = "序号,如当前序号为0则为起点,序号最大则为终点,中间为途径点") + private Integer index; + + /** + * 地点名称 + */ + @ApiModelProperty(value = "地点名称") + private String locationName; + + /** + * 地点经度 + */ + @ApiModelProperty(value = "地点经度") + private String lng; + + /** + * 地点纬度 + */ + @ApiModelProperty(value = "地点纬度") + private String lat; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerDTO.java new file mode 100644 index 0000000..4c9bb04 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerDTO.java @@ -0,0 +1,80 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerIdentityTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 乘客信息 + *

+ * + * @author taobinxian + * @version 2023-08-07 + */ + +@Data +public class TpUserPassengerDTO implements Serializable { + + private static final long serialVersionUID = -7157914478824441426L; + + /** + * 用户编号 + */ + @ApiModelProperty("用户编号") + private String userNo; + + /** + * 乘客编号 + */ + @ApiModelProperty("乘客编号") + private String passengerNo; + + /** + * 乘客类型 + * @see TpUserPassengerTypeEnum + */ + @NotNull + @ApiModelProperty(value = "乘客类型(成人-ADULT;儿童-CHILD;残疾人-DEFORMED_MAN;老年人-OLD_PEOPLE;军人-MILITARY)", required = true) + private String passengerType; + + /** + * 乘客姓名 + */ + @NotNull + @ApiModelProperty(value = "乘客名称", required = true) + private String passengerName; + + /** + * 乘客证件类型 + * @see TpUserPassengerIdentityTypeEnum + */ + @NotNull + @ApiModelProperty(value = "乘客证件类型(001-身份证)", required = true) + private String identityType; + + /** + * 乘客证件编号 + */ + @NotNull + @ApiModelProperty(value = "证件号码", required = true) + private String identityNumber; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerQueryDTO.java new file mode 100644 index 0000000..3bdf7ed --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserPassengerQueryDTO.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 乘客查询 + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ +@Data +public class TpUserPassengerQueryDTO implements Serializable { + + private static final long serialVersionUID = -7157914478824441426L; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 乘客编号 + */ + @ApiModelProperty(value = "乘客编号") + private String passengerNo; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionDTO.java new file mode 100644 index 0000000..6c5ff3a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionDTO.java @@ -0,0 +1,113 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 用户线路收集 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +public class TpUserRouteCollectionDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 收集编号 + */ + @ApiModelProperty(value = "收集编号") + private String collectionNo; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 上车点名称 + */ + @ApiModelProperty(value = "上车点名称") + private String upLocation; + + /** + * 上车点经度 + */ + @ApiModelProperty(value = "上车点经度") + private String upLocationLng; + + /** + * 上车点维度 + */ + @ApiModelProperty(value = "上车点纬度") + private String upLocationLat; + + /** + * 下车点名称 + */ + @ApiModelProperty(value = "下车点名称") + private String downLocation; + + /** + * 下车点经度 + */ + @ApiModelProperty(value = "下车点经度") + private String downLocationLng; + + /** + * 下车点维度 + */ + @ApiModelProperty(value = "下车点纬度") + private String downLocationLat; + + /** + * 期望上车时间 + */ + @ApiModelProperty(value = "期望到达时间") + private String expectArriveTime; + + /** + * 期望返程时间 + */ + @ApiModelProperty(value = "期望返程时间") + private String expectBackTime; + + /** + * 出行目的 + */ + @ApiModelProperty(value = "出行目的") + private String travelPurpose; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + /** + * 手机号 + */ + @ApiModelProperty(value = "手机号") + private String phoneNumber; + + /** + * biz_data + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionQueryDTO.java new file mode 100644 index 0000000..534d569 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserRouteCollectionQueryDTO.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import com.deepinnet.tp.common.lang.dto.BasePageQueryDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 线路收集查询条件 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpUserRouteCollectionQueryDTO extends BasePageQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 用户手机号 + */ + @ApiModelProperty(value = "用户手机号") + private String phone; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserTicketsQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserTicketsQueryDTO.java new file mode 100644 index 0000000..21fab70 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/order/TpUserTicketsQueryDTO.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.dto.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 用户票数 + *

+ * + * @author chenjiaju + * @since 2023/9/19 + */ + +@Data +public class TpUserTicketsQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 下单开始时间 + */ + private Long orderStartTime; + + /** + * 下单结束时间 + */ + private Long orderEndTime; + + /** + * 所属前台类目 + */ + private String categoryNo; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpBillDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpBillDTO.java new file mode 100644 index 0000000..4772a08 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpBillDTO.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:12 + * @Description 账单 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TpBillDTO implements Serializable { + + private static final long serialVersionUID = 1000423962142912248L; + + /** + * 账单编号 + */ + @ApiModelProperty(value = "账单编号") + private String billNo; + + /** + * 账单金额 + */ + @ApiModelProperty(value = "账单金额") + private String amount; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderNo; + + /** + * 支付单号 + */ + @ApiModelProperty(value = "支付单号") + private String payOrderNo; + + /** + * 账单状态 + */ + @ApiModelProperty(value = "账单状态") + private String status; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String bizType; + + /** + * 账单类型 + */ + @ApiModelProperty(value = "账单类型") + private String billType; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpChargeDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpChargeDTO.java new file mode 100644 index 0000000..f77cefe --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpChargeDTO.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:14 + * @Description 计费单 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpChargeDTO implements Serializable { + + private static final long serialVersionUID = 6712342411054684634L; + + /** + * 计费单号 + */ + @ApiModelProperty(value = "计费单号") + private String chargeNo; + + /** + * 支付单号 + */ + @ApiModelProperty(value = "支付单号") + private String payOrderNo; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String bizType; + + /** + * 计费标题 + */ + @ApiModelProperty(value = "计费标题") + private String title; + + /** + * 计费类型 + */ + @ApiModelProperty(value = "计费类型") + private String chargeType; + + /** + * 收退费金额 + */ + @ApiModelProperty(value = "收退费金额") + private String amount; + + /** + * 计费比例 + */ + @ApiModelProperty(value = "计费比例") + private String ratio; + + /** + * 收费主体id + */ + @ApiModelProperty(value = "收费主体id") + private String chargingEntityId; + + /** + * 收费主体类型 + */ + @ApiModelProperty(value = "收费主体类型") + private String chargingEntityType; + + /** + * 状态 + */ + @ApiModelProperty(value = "状态") + private String status; + + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountCreateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountCreateDTO.java new file mode 100644 index 0000000..d926541 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountCreateDTO.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/6 15:42 + * @Description 资金账号 + */ +@Data +public class TpFinancialAccountCreateDTO implements Serializable { + + private static final long serialVersionUID = -6721121682802959053L; + + /** + * 账号-支出账户是指userNo + */ + @NotBlank(message = "账号不能为空") + @ApiModelProperty(value = "账号-支出账户是指userNo") + private String account; + + /** + * 账户名-支出账户是指用户名 + */ + @NotBlank(message = "账户名不能为空") + @ApiModelProperty(value = "账户名-支出账户是指用户名") + private String accountName; + + /** + * 卡机构Id,账号类型是银行卡时必填 + */ + @ApiModelProperty(value = "卡机构Id,账号类型是银行卡时必填") + private String cardIssuerId; + + /** + * 开户行名称 + */ + @ApiModelProperty(value = "开户行名称") + private String bankName; + + /** + * 银行账号 + */ + @ApiModelProperty(value = "银行账号") + private String bankAccount; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountDTO.java new file mode 100644 index 0000000..de2fb22 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpFinancialAccountDTO.java @@ -0,0 +1,83 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.*; +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:15 + * @Description 资金账号 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpFinancialAccountDTO implements Serializable { + + private static final long serialVersionUID = 1; + + /** + * 关联的业务单号 + */ + @ApiModelProperty(value = "关联的业务单号") + private String bizNo; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String bizType; + + /** + * 账号类型:收款方或者付款方 + */ + @ApiModelProperty(value = "账号类型:收款方或者付款方") + private String accountType; + + /** + * 账号 + */ + @ApiModelProperty(value = "账号") + private String account; + + /** + * 账号名称 + */ + @ApiModelProperty(value = "账号名称") + private String accountName; + + /** + * 支付宝、微信、银行 + */ + @ApiModelProperty(value = "渠道:支付宝、微信、银行等") + private String channel; + + /** + * 卡机构id + */ + @ApiModelProperty(value = "卡机构id") + private String cardIssuerId; + + /** + * 开户行名称 + */ + @ApiModelProperty(value = "开户行名称") + private String bankName; + + /** + * 银行账号 + */ + @ApiModelProperty(value = "银行账号") + private String bankAccount; + + @ApiModelProperty(value = "租户id") + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaidOfflineDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaidOfflineDTO.java new file mode 100644 index 0000000..e7c31e9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaidOfflineDTO.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/5/23 17:32 + * @Description + */ +@Data +public class TpPaidOfflineDTO implements Serializable { + + private String orderNo; + + /** + * @see com.deepinnet.tptradecore.common.enums.TpBizTypeEnum + */ + private String bizType; + + /** + * 操作员用户编号 + */ + private String operatorNo; + + /** + * 操作员用户名称 + */ + private String operatorName; + + /** + * 下单人用户编号 + */ + private String placerNo; + + /** + * 下单人用户名称 + */ + private String placerName; + + /** + * 付款金额 + */ + private String payAmount; + + /** + * 租户id + */ + private String tenantId; +} + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCloseDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCloseDTO.java new file mode 100644 index 0000000..acea682 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCloseDTO.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2022-11-15 15:11 + *

+ * 支付单关闭请求对象 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPayOrderCloseDTO implements Serializable { + + private static final long serialVersionUID = 2408251660790258237L; + + /** + * 支付单号 + **/ + @NotBlank(message = "支付单号不能为空") + private String payOrderNo; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCreateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCreateDTO.java new file mode 100644 index 0000000..b3c94bf --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderCreateDTO.java @@ -0,0 +1,118 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2022-11-15 14:55 + *

+ * 支付单创建入参 + */ +@Data +public class TpPayOrderCreateDTO implements Serializable { + + private static final long serialVersionUID = 3954150007429372756L; + + @NotBlank(message = "原订单号不能为空") + @ApiModelProperty(value = "原始订单号") + private String orderNo; + + /** + * 业务单号 + */ + @NotBlank(message = "业务单号不能为空") + @ApiModelProperty(value = "业务单号=原始订单号+业务类型拼接") + private String bizNo; + + /** + * 业务类型 + * + * @see com.deepinnet.tptradecore.common.enums.TpBizTypeEnum + */ + @NotBlank(message = "业务类型不能为空") + private String bizType; + + /** + * 优惠金额 + */ + @ApiModelProperty(value = "优惠金额") + private TpMoney discountAmount; + + /** + * 支付金额 + */ + @NotNull(message = "计费金额不能为空") + @ApiModelProperty(value = "支付金额") + private TpMoney paymentAmount; + + /** + * 支付方式 + * + * @see com.deepinnet.tptradecore.common.enums.trans.TpPayTypeEnum + */ + @NotBlank(message = "支付方式不能为空") + @ApiModelProperty(value = "支付方式") + private String payType; + + /** + * 支付场景 + * + * @see com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum + */ + @NotBlank(message = "支付场景不能为空") + @ApiModelProperty(value = "支付场景") + private String payScene; + + /** + * 支付标题 + */ + @NotBlank(message = "支付标题不能为空") + @ApiModelProperty(value = "支付标题") + private String payTitle; + + /** + * 支付成功后跳转的url + */ + @NotBlank(message = "支付成功后跳转的url不能为空") + @ApiModelProperty(value = "支付成功后跳转的url不能为空") + private String returnUrl; + + /** + * 用户信息 + */ + @NotNull(message = "用户信息不能为空") + @ApiModelProperty(value = "用户信息") + @Valid + private TpUserInfoDTO userInfoDTO; + + /** + * 组织编号 + */ + @ApiModelProperty(value = "组织编号") + private String orgCode; + + /** + * 支付超时时间 + */ + @NotNull(message = "支付超时时间不能为空") + @ApiModelProperty(value = "支付超时时间") + private Long payTimeout; + + /** + * 业务数据 + */ + private Map bizData; + + /** + * 租户id(必传) + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderDTO.java new file mode 100644 index 0000000..ea8d6a4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderDTO.java @@ -0,0 +1,139 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/8/14 17:16 + * @Description + */ +@Data +public class TpPayOrderDTO implements Serializable { + + private static final long serialVersionUID = -739379435242703266L; + + /** + * 支付单号 + */ + @ApiModelProperty(value = "支付单号") + private String payOrderNo; + + @ApiModelProperty(value = "订单编号,包车业务中为主订单号") + private String orderNo; + + /** + * 业务单号 + */ + @ApiModelProperty(value = "业务单号") + private String bizNo; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String bizType; + + /** + * 优惠金额 + */ + @ApiModelProperty(value = "优惠金额") + private String discountAmount; + + /** + * 计费金额 + */ + @ApiModelProperty(value = "计费金额") + private String chargeAmount; + + /** + * 实付金额 + */ + @ApiModelProperty(value = "正向支付单代表实付金额,逆向退款单代表实退金额") + private String payAmount; + + /** + * 支付方式 + */ + @ApiModelProperty(value = "支付方式") + private String payType; + + /** + * 支付场景 + */ + @ApiModelProperty(value = "支付场景") + private String payScene; + + /** + * 支付标题 + */ + @ApiModelProperty(value = "支付标题") + private String payTitle; + + /** + * 支付单状态 + */ + @ApiModelProperty(value = "支付单状态,正向支付单的状态:paying-支付中,paid-已支付, 逆向退款单的状态:refunding-退款中,refund-已退款。closed-已关闭") + private String status; + + /** + * 支付时间 + */ + @ApiModelProperty(value = "正向支付单代表:支付时间;逆向退款单:代表退款成功时间") + private Long payTime; + + /** + * 支付过期时间 + */ + @ApiModelProperty(value = "支付过期时间") + private Long payTimeout; + + /** + * 三方支付流水号 + */ + @ApiModelProperty(value = "正向支付单:三方支付流水号。逆向退款单无此字段") + private String outPayFlowId; + + /** + * 是否需要计收费 + */ + @ApiModelProperty(value = "是否需要计收费") + private Boolean chargeRequired; + + /** + * 账单 + */ + @ApiModelProperty(value = "账单") + private TpBillDTO tpBill; + + /** + * 计费单 + */ + @ApiModelProperty(value = "计费单") + private TpChargeDTO tpChargeDTO; + + /** + * 收入账号 + */ + @ApiModelProperty(value = "收入账号") + private TpFinancialAccountDTO payeeAccount; + + /** + * 支出账号 + */ + @ApiModelProperty(value = "支出账号") + private TpFinancialAccountDTO payerAccount; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderQueryDTO.java new file mode 100644 index 0000000..c628764 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderQueryDTO.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2022-11-15 15:06 + *

+ * 支付单查询请求对象 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPayOrderQueryDTO implements Serializable { + + private static final long serialVersionUID = -2394002753181657370L; + + /** + * 支付单号 + **/ + private String payOrderNo; + + /** + * 业务单号 + */ + private String bizNo; + + /** + * 原始订单号 + */ + private String orderNo; + + /** + * 订单编号列表 + */ + private List orderNos; + + /** + * 业务单号列表 + */ + private List bizNos; + + /** + * 支付方式 + */ + private String payType; + + /** + * 需要查询的状态 + */ + private List targetStatusList; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderUpdateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderUpdateDTO.java new file mode 100644 index 0000000..8fd10f8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayOrderUpdateDTO.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.*; + +import java.io.*; +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2023/7/27 14:54 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPayOrderUpdateDTO implements Serializable { + + private static final long serialVersionUID = -1475208696585753694L; + + private String bizNo; + + private String payOrderNo; + + private String outPayFlowId; + + private String originalStatus; + + private String targetStatus; + + private LocalDateTime payTime; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayRefundDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayRefundDTO.java new file mode 100644 index 0000000..2399ac2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPayRefundDTO.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2022-11-13 09:36 + *

+ * 请求第三方支付平台退款的入参 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPayRefundDTO implements Serializable { + + private static final long serialVersionUID = 8099499981187265638L; + + /** + * 正向业务单号 + */ + @NotBlank(message = "正向业务单号不能为空") + private String payBizNo; + + /** + * 逆向业务单号 + */ + @NotBlank(message = "逆向业务单号不能为空") + private String refundBizNo; + + /** + * 退款业务类型 + */ + @NotBlank(message = "退款业务类型不能为空") + private String refundBizType; + + /** + * 实退金额 + */ + @NotNull(message = "实退金额不能为空") + private TpMoney refundAmount; + + /** + * 手续费 + */ + @NotNull(message = "手续费不能为空") + private TpMoney chargeAmount; + + /** + * 组织编号 + */ + @NotBlank(message = "组织编号不能为空") + private String orgCode; + + /** + * 支付类型 + */ + private String payType; + + /** + * 是否为改签单 + */ + private Boolean isRescheduleOrder; + + /** + * 改签单对应的原始订单的支付金额 + */ + private TpMoney originalPayAmount; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaySuccessDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaySuccessDTO.java new file mode 100644 index 0000000..38a7351 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPaySuccessDTO.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/31 15:48 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPaySuccessDTO implements Serializable { + private static final long serialVersionUID = -6763241136503374085L; + + private String payOrderNo; + + /** + * 第三方支付流水号 + */ + private String outPayFlowId; + + /** + * 支付时间 + */ + private Long payTime; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPreparePayDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPreparePayDTO.java new file mode 100644 index 0000000..31fdcfe --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpPreparePayDTO.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.*; +import lombok.Data; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2022-10-31 11:26 + * 第三方平台预支付入参 + */ +@Data +@ApiModel(value = "预支付入参") +public class TpPreparePayDTO implements Serializable { + + private static final long serialVersionUID = -6900476728126895700L; + + /** + * 支付单创建参数 + */ + @NotNull + @ApiModelProperty(value = "支付单创建参数") + private TpPayOrderCreateDTO createDTO; + + /** + * 支付用户的ip地址(必传) + */ + @NotBlank(message = "用户ip不能为空") + @ApiModelProperty(value = "支付用户的ip地址") + private String userIp; + + /** + * 微信小程序、支付宝小程序支付时需要传入,代表openid + */ + @ApiModelProperty(value = "微信小程序、支付宝小程序支付时需要传入,代表openid") + private String buyerId; + + /** + * 支付宝小程序appId,当支付宝小程序支付时必传 + */ + @ApiModelProperty(value = "支付宝小程序appId,当支付宝小程序支付时必传") + private String appId; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + @ApiModelProperty(value = "租户id") + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryPayResultDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryPayResultDTO.java new file mode 100644 index 0000000..fbebacf --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryPayResultDTO.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2022-11-08 11:37 + *

+ * 向第三方支付平台查询支付结果的请求 + */ +@Data +public class TpQueryPayResultDTO implements Serializable { + + private static final long serialVersionUID = 8033537303328773700L; + + /** + * 系统内部业务单号,根据业务场景区分,目前这里是订单号 + */ + @NotBlank(message = "订单号不能为空") + @ApiModelProperty(value = "业务单号:原始订单号+业务类型") + private String bizNo; + + @NotBlank(message = "业务类型不能为空") + @ApiModelProperty(value = "业务类型:deposit_pay-定金订单支付,deposit_refund-定金订单退款,balance_pay-尾款订单支付,trip_end_refund-行程结束退款,custom_bus_pay-定制公交付款,custom_bus_refund-定制公交退票") + private String bizType; + + @NotBlank(message = "组织编号不能为空") + @ApiModelProperty(value = "组织编号") + private String orgCode; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + @ApiModelProperty(value = "租户id") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryRefundResultDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryRefundResultDTO.java new file mode 100644 index 0000000..dbad5d6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpQueryRefundResultDTO.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/6 16:31 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryRefundResultDTO implements Serializable { + + private static final long serialVersionUID = 1149795992673907716L; + + /** + * 退款业务单号 + */ + @NotBlank(message = "退款业务单号不能为空") + private String refundBizNo; + + /** + * 支付业务单号 + */ + @NotBlank(message = "支付业务单号不能为空") + private String payBizNo; + + @NotBlank(message = "组织编码不能为空") + private String orgCode; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpRefundSuccessDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpRefundSuccessDTO.java new file mode 100644 index 0000000..dea71fd --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpRefundSuccessDTO.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/31 15:48 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpRefundSuccessDTO implements Serializable { + + private static final long serialVersionUID = -3867230549176394689L; + + /** + * 退款支付单号 + */ + private String refundPayOrderNo; + + /** + * 退款时间 + */ + private Long refundTime; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpReschedulePaidSuccessDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpReschedulePaidSuccessDTO.java new file mode 100644 index 0000000..c60b5c0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpReschedulePaidSuccessDTO.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/7/5 16:02 + * @Description + */ +@Data +public class TpReschedulePaidSuccessDTO implements Serializable { + + /** + * 改签原始订单编号 + */ + private String originalOrderNo; + + /** + * 当前改签订单的编号 + */ + private String orderNo; + + /** + * 付款金额 + */ + private String payAmount; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpUserInfoDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpUserInfoDTO.java new file mode 100644 index 0000000..f1a1b82 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/trans/TpUserInfoDTO.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dto.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import javax.validation.constraints.NotBlank; +import java.io.*; + +/** + * @author amos wong + * @create 2023/8/28 14:24 + * @Description + */ +@Data +public class TpUserInfoDTO implements Serializable { + + private static final long serialVersionUID = -8392396052647528266L; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + @NotBlank(message = "用户编号不能为空") + private String userNo; + + /** + * 用户名称 + */ + @ApiModelProperty(value = "用户名称") + @NotBlank(message = "用户名称不能为空") + private String userName; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBizRuleDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBizRuleDTO.java new file mode 100644 index 0000000..9e22788 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBizRuleDTO.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-28 10:09:47 + */ +@Getter +@Setter +public class TpBizRuleDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 关联的业务单号 + */ + private String bizNo; + + /** + * 业务规则代码 + */ + private String code; + + /** + * 业务规则名称 + */ + private String name; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 规则表达式 + */ + private String expression; + + /** + * 目标对象类型 + */ + private String targetObjType; + + /** + * 目标对象ID + */ + private String targetObjId; + + /** + * 规则分组 + */ + private String ruleGroup; + + /** + * 规则枚举 + */ + private String ruleEnum; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBuyLimitQueryVoucherDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBuyLimitQueryVoucherDTO.java new file mode 100644 index 0000000..e92c22a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpBuyLimitQueryVoucherDTO.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/12/21 15:50 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TpBuyLimitQueryVoucherDTO implements Serializable { + + /** + * 产品类目编号 + */ + private String productCategoryNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpInvalidVoucherDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpInvalidVoucherDTO.java new file mode 100644 index 0000000..07acfa5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpInvalidVoucherDTO.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/7/8 11:26 + * @Description + */ +@Data +public class TpInvalidVoucherDTO implements Serializable { + /** + * 需要失效的凭证编号 + */ + private String voucherNo; + + /** + * 需要失效的乘车人数 + */ + private Integer invalidPassengerCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpMngVerificationRecordQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpMngVerificationRecordQueryDTO.java new file mode 100644 index 0000000..040b469 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpMngVerificationRecordQueryDTO.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import com.deepinnet.tp.common.lang.dto.BasePageQueryDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/3/12 11:40 + * @Description + */ +@Data +public class TpMngVerificationRecordQueryDTO extends BasePageQueryDTO implements Serializable { + @ApiModelProperty(value = "乘车时间-开始时间") + private Long startTime; + + @ApiModelProperty(value = "乘车时间-结束时间") + private Long endTime; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "线路名称") + private String routeName; + + @ApiModelProperty(value = "线路code") + private String routeCode; + + @ApiModelProperty(value = "用户手机号") + private String phone; + + @ApiModelProperty(value = "服务对象编号") + private String targetNumber; + + @ApiModelProperty(value = "用户编号") + private List userNos; + + @ApiModelProperty(value = "班次时间") + private String shuttleTime; + + @ApiModelProperty(value = "产品类目编号") + private String productCategoryNo; + + @ApiModelProperty(value = "乘客姓名") + private String passengerName; + + @ApiModelProperty(value = "凭证类型") + private List voucherType; + + @ApiModelProperty(value = "往返类型") + private String tripType; + + @ApiModelProperty(value = "租户id") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRefreshQrCodeDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRefreshQrCodeDTO.java new file mode 100644 index 0000000..aa769e6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRefreshQrCodeDTO.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.*; + +/** + * @author amos wong + * @create 2023/8/18 15:34 + * @Description + */ +@Data +public class TpRefreshQrCodeDTO implements Serializable { + + private static final long serialVersionUID = -7856941782939456958L; + + @NotBlank(message = "凭证编号不能为空") + private String voucherNo; + + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRescheduleInvalidVoucherDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRescheduleInvalidVoucherDTO.java new file mode 100644 index 0000000..177e50d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpRescheduleInvalidVoucherDTO.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/7/8 11:17 + * @Description + */ +@Data +public class TpRescheduleInvalidVoucherDTO implements Serializable { + + /** + * 改签原始订单编号 + */ + private String originalOrderNo; + + /** + * 改签订单编号 + */ + private String orderNo; + + /** + * 失效凭证列表 + */ + private List invalidVoucherDTOs; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpStudentInfoDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpStudentInfoDTO.java new file mode 100644 index 0000000..ceb25d5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpStudentInfoDTO.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.*; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/13 16:24 + * @Description 学生信息DTO + */ +@Data +public class TpStudentInfoDTO implements Serializable { + + private static final long serialVersionUID = 53832586064300425L; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String name; + + /** + * 学号 + */ + @ApiModelProperty(value = "学号") + private String studentId; + + /** + * 学校编号 + */ + @ApiModelProperty(value = "学校编号") + private String schoolCode; + + /** + * 学校名称 + */ + @ApiModelProperty(value = "学校名称") + private String schoolName; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeExistVerificationRecordDateQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeExistVerificationRecordDateQueryDTO.java new file mode 100644 index 0000000..4bf148f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeExistVerificationRecordDateQueryDTO.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/1/11 11:33 + * @Description + */ +@Data +public class TpTimeRangeExistVerificationRecordDateQueryDTO implements Serializable { + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 查询凭证核销记录的开始时间 + */ + @ApiModelProperty(value = "开始时间,月初第一天的00:00:00") + private Long startTime; + + /** + * 查询凭证核销记录的结束时间 + */ + @ApiModelProperty(value = "结束时间,月末最后一天的23:59:59") + private Long endTime; + + /** + * 租户id + */ + @ApiModelProperty(value = "租户id") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeUserVerificationRecordDetailQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeUserVerificationRecordDetailQueryDTO.java new file mode 100644 index 0000000..2310e13 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpTimeRangeUserVerificationRecordDetailQueryDTO.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/1/11 14:09 + * @Description + */ +@Data +public class TpTimeRangeUserVerificationRecordDetailQueryDTO implements Serializable { + @ApiModelProperty(value = "用户编号") + private String userNo; + + @ApiModelProperty(value = "租户id") + private String tenantId; + + @ApiModelProperty(value = "当天的开始时间,00:00:00") + private Long startTime; + + @ApiModelProperty(value = "当天的结束时间,23:59:59") + private Long endTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserTicketChoiceDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserTicketChoiceDTO.java new file mode 100644 index 0000000..9f25760 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserTicketChoiceDTO.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/7/9 16:43 + * @Description + */ +@Data +public class TpUserTicketChoiceDTO implements Serializable { + /** + * 班次id,滚动发车没有班次 + */ + private String shuttleId; + + /** + * 班次名称,滚动发车没有班次 + */ + private String shuttleName; + + /** + * 非实名购票的场景 + */ + private List nonRealNameDTOs; + + /** + * 实名制场景:每个乘客购买的凭证信息 + */ + private List voucherPurchaseInfoList; + + /** + * 行程类型 + */ + private String tripType; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserVoucherVerificationRecordDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserVoucherVerificationRecordDTO.java new file mode 100644 index 0000000..adca10c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpUserVoucherVerificationRecordDTO.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import com.deepinnet.tptradecore.common.vo.order.TpOrderTravelTripVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/1/11 14:24 + * @Description + */ +@Data +public class TpUserVoucherVerificationRecordDTO implements Serializable { + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "是否是实名制乘车") + private boolean requireRealName; + + @ApiModelProperty(value = "非实名制乘车记录") + private List nonRealNameVerificationRecordList; + + @ApiModelProperty(value = "实名制乘车核销信息") + private List realNameVerificationRecordList; + + @ApiModelProperty(value = "行程信息") + private TpOrderTravelTripVO travelTripVO; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVerificationPassengerDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVerificationPassengerDTO.java new file mode 100644 index 0000000..0b5da5a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVerificationPassengerDTO.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TpVerificationPassengerDTO implements Serializable { + + /** + * 核销时间 + */ + @ApiModelProperty(value = "核销时间") + private Long verificationTime; + + /** + * 乘客编号 + */ + @ApiModelProperty(value = "乘客编号") + private String passengerNo; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String name; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String contactInfo; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + private String certNo; + + /** + * 证件类型 + */ + @ApiModelProperty(value = "证件类型") + private String certType; + + /** + * 乘客类型 + */ + @ApiModelProperty(value = "乘客类型") + private String passengerType; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVouchPassengerListDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVouchPassengerListDTO.java new file mode 100644 index 0000000..eea3086 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVouchPassengerListDTO.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author 唐国翔 + * @since 2024/1/10 11:35 + **/ +@Data +public class TpVouchPassengerListDTO implements Serializable { + + private static final long serialVersionUID = 5855879933862847161L; + + /** + * 乘客姓名 + */ + private String placerName; + + /** + * 乘客联系电话 + */ + private String placerContact; + + /** + * 上车点code + */ + private String pickUpLocationCode; + + /** + * 下车点code + */ + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + private String dropOffLocation; + + /** + * 上车点名称 + */ + private String pickUpLocation; + /** + * 凭证核验结果 + */ + private String result; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckDTO.java new file mode 100644 index 0000000..35e0241 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckDTO.java @@ -0,0 +1,95 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/7 15:20 + * @Description 凭证核销接口 + */ +@Data +public class TpVoucherCheckDTO implements Serializable { + + private static final long serialVersionUID = 173696721635551542L; + + /** + * 需要核销的凭证编号 + */ + @NotBlank(message = "凭证编号不能为空") + @ApiModelProperty(value = "需要核销的凭证编号") + private String voucherNo; + + /** + * 用户编号 + */ + @NotBlank(message = "用户编号不能为空") + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 订单编号 + */ + @NotBlank(message = "订单编号不能为空") + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 学生信息 + */ + @ApiModelProperty(value = "学生信息") + private TpStudentInfoDTO studentInfoDTO; + + /** + * 线路编号 + */ + @ApiModelProperty(value = "线路编号") + private String routeId; + + /** + * 线路名称 + */ + @ApiModelProperty(value = "线路名称") + private String routeName; + + /** + * 班次id + */ + @ApiModelProperty(value = "班次id") + private String shuttleId; + + /** + * 班次名称 + */ + @ApiModelProperty(value = "班次名称") + private String shuttleName; + + /** + * 检票方式 + */ + @ApiModelProperty(value = "检票方式:qr_code_check-二维码检票,manual_check-人工检票,third_party-第三方检票") + private String validationType; + + /** + * 核销时间 + */ + @NotNull(message = "核销时间不能为空") + @ApiModelProperty(value = "核销时间") + private Long verificationTime; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + @ApiModelProperty(value = "租户id") + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckSuccessDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckSuccessDTO.java new file mode 100644 index 0000000..0714d3b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCheckSuccessDTO.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/7 15:20 + * @Description 凭证核销接口 + */ +@Data +public class TpVoucherCheckSuccessDTO implements Serializable { + + private static final long serialVersionUID = 173696721635551542L; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 订单编号,传入订单编号,核销订单下的所有凭证。和下面的凭证编号二选一 + */ + private String orderNo; + + /** + * 凭证编号,核销指定的凭证。和上面的订单编号二选一 + */ + private List voucherNos; + + /** + * 核销时间 + */ + private Long verificationTime; + + /** + * 检票方式 + * + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherValidationTypeEnum + */ + private String validationType; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCreateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCreateDTO.java new file mode 100644 index 0000000..f5311b2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherCreateDTO.java @@ -0,0 +1,102 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/7 11:36 + * @Description + */ +@Data +public class TpVoucherCreateDTO implements Serializable { + + private static final long serialVersionUID = 7891034483468047936L; + + /** + * 用户编号 + */ + @NotBlank(message = "用户编号不能为空") + private String userNo; + + /** + * 订单号 + */ + @NotBlank(message = "订单编号不能为空") + private String orderNo; + + /** + * 线路id + */ + @NotBlank(message = "线路id不能为空") + private String routeId; + + /** + * 线路名称 + */ + @NotBlank(message = "线路名称不能为空") + private String routeName; + + /** + * 产品类目编号 + */ + private String productCategoryNo; + + /** + * 产品类目名称 + */ + private String productCategoryName; + + /** + * 用户选择的车票列表 + */ + private List ticketChoiceDTOs; + + /** + * 凭证类型 + * + * @see com.deepinnet.tptradecore.common.util.enums.TpVoucherTypeEnum + */ + @NotBlank(message = "凭证类型不能为空") + private String voucherType; + + /** + * 检票方式 + * + * @see com.deepinnet.tptradecore.common.util.enums.TpVoucherValidationTypeEnum + */ + private List validationTypes; + + /** + * 凭证业务规则:核销规则以及展示规则 + */ + @NotEmpty(message = "凭证业务规则不能为空") + private List bizRuleDTOs; + + /** + * 是否需要实名 + */ + @NotNull(message = "是否需要实名不能为空") + private Boolean requiredRealName; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; + + /** + * 凭证渠道 + * + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherChannelEnum + */ + private String channel; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherDTO.java new file mode 100644 index 0000000..9157a9f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherDTO.java @@ -0,0 +1,223 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 10:26 + * @Description 出行凭证 + */ +@Data +public class TpVoucherDTO implements Serializable { + + private static final long serialVersionUID = -2188093318989987674L; + + /** + * 凭证编号 + */ + @ApiModelProperty(value = "凭证编号") + private String voucherNo; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderNo; + + /** + * 产品类目编号 + */ + @ApiModelProperty(value = "产品类目编号") + private String productCategoryNo; + + /** + * 产品类目名称 + */ + @ApiModelProperty(value = "产品类目名称") + private String productCategoryName; + + /** + * 凭证编码 + */ + @ApiModelProperty(value = "凭证编码") + private String voucherCode; + + /** + * 订单详情页展示的二维码,里面会包含二维码过期时间 + */ + @ApiModelProperty(value = "订单详情页展示的二维码") + private String qrCode; + + /** + * 凭证二维码过期时间 + */ + @ApiModelProperty(value = "凭证二维码过期时间") + private Long qrCodeExpireTime; + + /** + * 凭证类型 + */ + @ApiModelProperty(value = "凭证类型:day-日票,week-周票,term-学期票,month-月票,year-年票") + private String type; + + /** + * 有效期开始时间 + */ + @ApiModelProperty(value = "有效期开始时间") + private Long effectiveStartTime; + + /** + * 有效期结束时间 + */ + @ApiModelProperty(value = "有效期结束时间") + private Long effectiveEndTime; + + /** + * 最早检票时间 + */ + @ApiModelProperty(value = "最早检票时间") + private String earliestCheckTime; + + /** + * 最晚检票时间 + */ + @ApiModelProperty(value = "最晚检票时间") + private String latestCheckTime; + + /** + * 线路id + */ + @ApiModelProperty(value = "线路id") + private String routeId; + + /** + * 线路名称 + */ + @ApiModelProperty(value = "线路名称") + private String routeName; + + /** + * 班次id + */ + @ApiModelProperty(value = "班次id") + private String shuttleId; + + /** + * 班次名称 + */ + @ApiModelProperty(value = "班次名称") + private String shuttleName; + + /** + * 验票方式 + */ + @ApiModelProperty(value = "验票方式,qr_code_check-二维码检票,manual_check-人工检票,third_party-第三方检票") + private List validationTypes; + + /** + * 总可用次数 + */ + @ApiModelProperty(value = "总可用次数") + private Integer totalCount; + + /** + * 已核销次数 + */ + @ApiModelProperty(value = "已核销次数") + private Integer redemptionCount; + + /** + * 已退次数 + */ + @ApiModelProperty(value = "已退次数") + private Integer refundCount; + + /** + * 每日可用次数 + */ + @ApiModelProperty(value = "每天可用次数") + private Integer everyDayAvailableCount; + + /** + * 乘客数量 + */ + @ApiModelProperty(value = "乘客数量") + private Integer passengerCount; + + /** + * 是否需要实名,0表示非实名,1表示实名 + */ + @ApiModelProperty(value = "是否需要实名") + private Boolean requiredRealName; + + /** + * 凭证当天的状态 + */ + @ApiModelProperty(value = "凭证状态:created-已创建,invalid-已失效,expire-已过期,refunding-退票中,refunded-已退票,partial_verified-部分核销,fully_verified-全部核销") + private String dayStatus; + + /** + * 凭证实际的状态 + */ + @ApiModelProperty(value = "凭证状态:created-已创建,invalid-已失效,expire-已过期,refunding-退票中,refunded-已退票,partial_verified-部分核销,fully_verified-全部核销") + private String actualStatus; + + /** + * 凭证状态 + */ + @ApiModelProperty(value = "凭证状态:created-已创建,invalid-已失效,expire-已过期,refunding-退票中,refunded-已退票,partial_verified-部分核销,fully_verified-全部核销") + private String status; + + /** + * 乘客信息 + */ + @ApiModelProperty(value = "乘客信息") + private TpVoucherPassengerDTO passenger; + + private String salesUnitCode; + + /** + * 租户id + */ + @ApiModelProperty(value = "租户id") + private String tenantId; + + /** + * 当前凭证是否可展示 + */ + @ApiModelProperty(value = "当前凭证是否可展示") + private Boolean showable; + + /** + * 是否一次性核销 + */ + private Boolean isOneTimeVerification; + + /** + * 凭证不可展示的原因 + */ + @ApiModelProperty(value = "凭证不可展示的原因") + private String invisibleReason; + + /** + * 行程类型 + */ + private String tripType; + + private List bizRuleList; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherEncodeDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherEncodeDTO.java new file mode 100644 index 0000000..24288c1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherEncodeDTO.java @@ -0,0 +1,83 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/8/8 19:49 + * @Description + */ +@Data +public class TpVoucherEncodeDTO implements Serializable { + + private static final long serialVersionUID = -410600274045998786L; + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 订单号 + */ + private String orderNo; + + /** + * 线路id + */ + private String routeId; + + /** + * 二维码过期时间 + */ + private Long qrExpireTime; + + /** + * 线路名称 + */ + private String routeName; + + /** + * 班次id + */ + private String shuttleId; + + /** + * 班次名称 + */ + private String shuttleName; + + /** + * 凭证类型 + * + * @see com.deepinnet.tptradecore.common.util.enums.TpVoucherTypeEnum + */ + private String voucherType; + + /** + * 凭证有效期开始时间 + */ + private Long effectiveStartTime; + + /** + * 凭证有效期结束时间 + */ + private Long effectiveEndTime; + + /** + * 最早检票时间 8:30 + */ + private String earliestCheckTime; + + /** + * 最晚检票时间 10:00 + */ + private String latestCheckTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherInvalidDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherInvalidDTO.java new file mode 100644 index 0000000..30f0e40 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherInvalidDTO.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/7/8 14:48 + * @Description + */ +@Data +public class TpVoucherInvalidDTO implements Serializable { + + private String voucherNo; + + private String targetStatus; + + private Integer refundCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherNonRealNameDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherNonRealNameDTO.java new file mode 100644 index 0000000..2d0ac19 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherNonRealNameDTO.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/8/21 15:26 + * @Description 非实名制购票DTO + */ +@Data +public class TpVoucherNonRealNameDTO implements Serializable { + + private static final long serialVersionUID = 6982530523960978012L; + + /** + * 凭证关联的售卖单元code + */ + private String salesUnitCode; + + /** + * 凭证有效期开始时间 + */ + private Long effectiveStartTime; + + /** + * 凭证有效期结束时间 + */ + private Long effectiveEndTime; + + /** + * 最早检票时间 8:30 + */ + private String earliestCheckTime; + + /** + * 最晚检票时间 10:00 + */ + private String latestCheckTime; + + /** + * 非实名场景:当前日期购买的总可用次数 = 乘车人数 * 每张票的可用次数 + */ + private Integer ticketCount; + + /** + * 乘车人数,非实名场景传入用户填写的人数 + * 实名制场景传入1 + */ + private Integer passengerCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerDTO.java new file mode 100644 index 0000000..f4ffa43 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerDTO.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.*; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:28 + * @Description 出行凭证关联乘客 + */ +@Data +public class TpVoucherPassengerDTO implements Serializable { + + private static final long serialVersionUID = -752707293264231779L; + + /** + * 凭证编号 + */ + @ApiModelProperty(value = "凭证编号") + private String voucherNo; + + /** + * 乘客编号 + */ + @ApiModelProperty(value = "乘客编号") + private String passengerNo; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String name; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String contactInfo; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + private String certNo; + + /** + * 证件类型 + */ + @ApiModelProperty(value = "证件类型") + private String certType; + + /** + * 乘客类型 + */ + @ApiModelProperty(value = "乘客类型") + private String passengerType; + + /** + * 租户id + */ + @ApiModelProperty(value = "租户id") + private String tenantId; + + /** + * 业务数据 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerQueryDTO.java new file mode 100644 index 0000000..5a7ae1e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPassengerQueryDTO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-28 10:09:47 + */ +@Data +public class TpVoucherPassengerQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 班次代码 + */ + @NotBlank + private String shuttleCode; + + /** + * 所属线路ID + */ + @NotBlank + private String routeCode; + + @ApiModelProperty("班次日期,年月日") + @NotNull + private Date shuttleDate = new Date(); + + /** + * 租户ID + */ + @NotBlank + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPurchaseInfoDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPurchaseInfoDTO.java new file mode 100644 index 0000000..b58a8b4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherPurchaseInfoDTO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/7/7 14:37 + * @Description 实名制购买凭证的信息 + */ +@Data +public class TpVoucherPurchaseInfoDTO implements Serializable { + + private static final long serialVersionUID = 5885868238761944013L; + + /** + * 凭证关联的售卖单元code + */ + private String salesUnitCode; + + /** + * 凭证有效期开始时间 + */ + private Long effectiveStartTime; + + /** + * 凭证有效期结束时间 + */ + private Long effectiveEndTime; + + /** + * 最早检票时间 8:30 + */ + private String earliestCheckTime; + + /** + * 最晚检票时间 10:00 + */ + private String latestCheckTime; + + /** + * 当前凭证总可用次数 + */ + private Integer totalAvailableCount; + + /** + * 乘客信息 + */ + private TpVoucherPassengerDTO passengerInfo; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherQueryDTO.java new file mode 100644 index 0000000..7887c7e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherQueryDTO.java @@ -0,0 +1,75 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/7 15:17 + * @Description + */ +@Data +@Accessors(chain = true) +public class TpVoucherQueryDTO implements Serializable { + + private static final long serialVersionUID = -7986365548401766749L; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 凭证列表 + */ + private List voucherNos; + + /** + * 产品类目编号 + */ + private String productCategoryNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 查询范围 + * + * @see com.deepinnet.tptradecore.common.enums.voucher.TpQueryScopeEnum + */ + private String queryScope; + + /** + * 需要的属性列表 + * + * @see com.deepinnet.tptradecore.common.enums.trans.TpVoucherNeedPropertiesEnum + */ + private List needProperties; + + /** + * 行程类型:去程或者返程 + */ + private String tripType; + + /** + * 目标凭证状态列表 + */ + private List targetStatusList; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherUpdateDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherUpdateDTO.java new file mode 100644 index 0000000..6c72f48 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherUpdateDTO.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.*; + +import java.io.*; + +/** + * @author amos wong + * @create 2023/8/17 14:59 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpVoucherUpdateDTO implements Serializable { + + private static final long serialVersionUID = -4811716992058588534L; + + private String refundApplyOrderNo; + + private String voucherNo; + + private String originalStatus; + + private String targetStatus; + + private Integer refundCount; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordDTO.java new file mode 100644 index 0000000..0339fcc --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordDTO.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import io.swagger.annotations.*; +import lombok.Data; + +import java.io.*; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:33 + * @Description 检票记录 + */ +@Data +public class TpVoucherVerificationRecordDTO implements Serializable { + + private static final long serialVersionUID = -4509678463785746163L; + /** + * 凭证编号 + */ + @ApiModelProperty(value = "凭证编号") + private String voucherNo; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 验票时间 + */ + @ApiModelProperty(value = "验票时间") + private Long verificationTime; + + /** + * 核销乘客数量 + */ + @ApiModelProperty(value = "核销乘客数量") + private Integer verificationPassengerCount; + + /** + * 检票结果 + */ + @ApiModelProperty(value = "检票结果") + private String result; + + /** + * 失败原因 + */ + @ApiModelProperty(value = "失败原因") + private String reason; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordQueryDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordQueryDTO.java new file mode 100644 index 0000000..1e96eaa --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/dto/voucher/TpVoucherVerificationRecordQueryDTO.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.common.dto.voucher; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/1/19 16:58 + * @Description + */ +@Data +public class TpVoucherVerificationRecordQueryDTO implements Serializable { + /** + * 订单编号 + */ + private String orderNo; + + /** + * 凭证编号列表 + */ + private List voucherNos; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/TpBizTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/TpBizTypeEnum.java new file mode 100644 index 0000000..58084e9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/TpBizTypeEnum.java @@ -0,0 +1,84 @@ +package com.deepinnet.tptradecore.common.enums; + +import com.google.common.collect.Lists; +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/5/15 10:50 + * @Description + */ + +@AllArgsConstructor +@Getter +public enum TpBizTypeEnum { + + // ===================== 包车业务====================== + /** + * 定金订单支付:按定金比例支付/全额支付都属于定金订单支付 + */ + DEPOSIT_PAY("DP", "定金订单支付"), + + /** + * 取消订单退款 + */ + CANCEL_ORDER_REFUND("COR", "取消订单退款"), + + /** + * 定金订单退款 + */ + DEPOSIT_REFUND("DR", "定金订单退款"), + + /** + * 尾款订单支付 + */ + BALANCE_PAY("BP", "尾款订单支付"), + + /** + * 行程结束退款 + */ + TRIP_END_REFUND("TER", "行程结束退款"), + + + //===================== 定制公交业务====================== + /** + * 定制公交付款 + */ + CUSTOM_BUS_PAY("CBP", "定制公交付款"), + + /** + * 定制公交退票 + */ + CUSTOM_BUS_REFUND("CBR", "定制公交退票"), + + /** + * 改签订单已支付 + */ + RESCHEDULE_PAY("reschedule_pay", "改签订单已支付"); + + /** + * 编码 + */ + private final String code; + + /** + * 名字 + */ + private final String desc; + + public static TpBizTypeEnum getByCode(String code) { + for (TpBizTypeEnum bizTypeEnum : TpBizTypeEnum.values()) { + if (StringUtils.equals(bizTypeEnum.getCode(), code)) { + return bizTypeEnum; + } + } + + return null; + } + + public static List CUSTOM_BUS_BIZ_TYPE = Lists.newArrayList(CUSTOM_BUS_PAY.getCode(), CUSTOM_BUS_REFUND.getCode()); + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditBizObjectTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditBizObjectTypeEnum.java new file mode 100644 index 0000000..b3f385d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditBizObjectTypeEnum.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.enums.audit; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 审核单归属的业务对象类型 + *

+ * + * @author xiehuaqiao + * @since 2023/11/21 + */ +@Getter +@AllArgsConstructor +public enum TpAuditBizObjectTypeEnum { + + /** + * 订单变更申请单 + */ + ORDER_CHANGE_APPLY("order_change_apply", "订单变更申请单"), + ; + + private final String type; + + private final String desc; + + public static TpAuditBizObjectTypeEnum getBizObjectByType(String type) { + if (StrUtil.isEmpty(type)) { + return null; + } + for (TpAuditBizObjectTypeEnum typeEnum : TpAuditBizObjectTypeEnum.values()) { + if (StrUtil.equalsIgnoreCase(typeEnum.getType(), type)) { + return typeEnum; + } + } + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditStatusEnum.java new file mode 100644 index 0000000..af19875 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditStatusEnum.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.common.enums.audit; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 审核状态枚举 + *

+ * + * @author chenjiaju + * @since 2023/8/10 + */ +@AllArgsConstructor +@Getter +public enum TpAuditStatusEnum { + + + /** + * 审批超时 + */ + APPROVED_TIMEOUT("approved_timeout", "审批超时"), + + + /** + * 待审核 + */ + WAITING_APPROVED("waiting_approved", "待审核"), + + /** + * 审核通过 + */ + APPROVED_SUCCESS("approved_success", "审核通过"), + + /** + * 审核未通过 + */ + APPROVED_REJECT("approved_reject", "审核未通过") + + ; + + /** + * 审核状态 + */ + private final String type; + + /** + * 状态描述 + */ + private final String desc; + + public static TpAuditStatusEnum getAuditStatusByType(String type) { + if(StrUtil.isEmpty(type)){ + return null; + } + for(TpAuditStatusEnum typeEnum:TpAuditStatusEnum.values()){ + if(StrUtil.equalsIgnoreCase(typeEnum.getType(),type)){ + return typeEnum; + } + } + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditTypeEnum.java new file mode 100644 index 0000000..f0b052a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/audit/TpAuditTypeEnum.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.common.enums.audit; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Objects; + +/** + *

+ * 审核业务类型枚举 + *

+ * + * @author chenjiaju + * @since 2023/8/15 + */ +@Getter +@AllArgsConstructor +public enum TpAuditTypeEnum { + + /** + * 定制包车审核 + */ + @Deprecated + CHARTER_BUS_APPROVAL(1, "定制包车审核"), + + /** + * 退款审核 + */ + @Deprecated + REFUND_APPROVAL(2, "退款审核"), + + /** + * 改签审核 + */ + @Deprecated + CHANGE_ORDER_APPROVAL(3, "改签审核"), + + /** + * 定制包车订单创建审核 + */ + CHARTER_BUS_ORDER_CREATE_APPROVAL(4, "定制包车订单创建审核"), + + + /** + * 定制包车订单变更审核 + */ + CHARTER_BUS_ORDER_CHANGE_APPROVAL(5, "定制包车订单变更审核"), + /** + * 定制包车订单取消审核 + */ + CHARTER_BUS_ORDER_CANCEL_APPROVAL(6, "定制包车订单取消审核"), + + /** + * 定制包车订单减免服务费审核 + */ + CHARTER_BUS_ORDER_CANCEL_RSC_APPROVAL(7, "定制包车订单减免服务费审核"), + + + /** + * 定制包车订单变更减免服务费审核 + */ + CHARTER_BUS_ORDER_CHANGE_RSC_APPROVAL(8, "定制包车订单变更减免服务费审核"), + + /** + * 定制包车订单结束确认费用审核 + */ + CHARTER_BUS_ORDER_END_CHARGE_CONFIRM_APPROVAL(9, "定制包车订单结束确认费用审核") + + ; + + private final Integer bizType; + + private final String desc; + + public static TpAuditTypeEnum getByType(Integer type) { + if (type == null) { + return null; + } + for (TpAuditTypeEnum typeEnum : TpAuditTypeEnum.values()) { + if (Objects.equals(typeEnum.getBizType(), type)) { + return typeEnum; + } + } + return null; + } + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderModulesEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderModulesEnum.java new file mode 100644 index 0000000..e50575e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderModulesEnum.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.enums.contract; + +import lombok.*; + +/** + *

+ * 订单模块枚举 + *

+ * + * @author chenjiaju + * @since 2023/7/27 + */ +@AllArgsConstructor +@Getter +public enum TpRefundApplyOrderModulesEnum { + + /** + * 退票标的项 + */ + REFUND_SUBJECT_ITEM("REFUND_SUBJECT_ITEM"), + + /** + * 线路和班次信息 + */ + REFUND_ROUTE("REFUND_ROUTE"), + + /** + * 退票乘客 + */ + REFUND_PASSENGER("REFUND_PASSENGER"), + + /** + * 退票用车需求方 + */ + REFUND_REQUIREMENT_USER("REFUND_REQUIREMENT_USER"), + + /** + * 退票支付单 + */ + REFUND_PAY_ORDER("REFUND_PAY_ORDER"), + + /** + * 退票申请人 + */ + REFUND_APPLICANT("REFUND_APPLICANT"), + + /** + * 退票失效凭证 + */ + REFUND_VOUCHER("REFUND_VOUCHER"); + + private String module; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderStatusEnum.java new file mode 100644 index 0000000..f99dd42 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundApplyOrderStatusEnum.java @@ -0,0 +1,66 @@ +package com.deepinnet.tptradecore.common.enums.contract; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/5/15 10:50 + * @Description + */ + +@AllArgsConstructor +@Getter +public enum TpRefundApplyOrderStatusEnum { + + /** + * 待审核 + */ + PENDING_APPROVAL("pending_approval", "待审核"), + + /** + * 已审核 + */ + APPROVED("approved", "审核通过"), + + /** + * 审核驳回 + */ + REJECTED("rejected", "审核驳回"), + + /** + * 退票中 + */ + REFUNDING("refunding", "退票中"), + + /** + * 退票成功 + */ + REFUNDED_SUCCESS("refunded_success", "退票成功"), + + /** + * 退票失败 + */ + REFUNDED_FAIL("refunded_fail", "退票失败"), + ; + + /** + * 编码 + */ + private String code; + + /** + * 描述信息 + */ + private String desc; + + public static TpRefundApplyOrderStatusEnum getByCode(String code) { + for (TpRefundApplyOrderStatusEnum statusEnum : TpRefundApplyOrderStatusEnum.values()) { + if (StringUtils.equals(statusEnum.getCode(), code)) { + return statusEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundTypeEnum.java new file mode 100644 index 0000000..3f5ab63 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/contract/TpRefundTypeEnum.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.enums.contract; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/8/9 20:05 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpRefundTypeEnum { + + /** + * 原路退回 + */ + ORIGINAL_REFUND("original_refund", "原路退回"), + + /** + * 线下退款 + */ + OFFLINE_REFUND("offline_refund", "线下退款"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpRefundTypeEnum getByCode(String code) { + for (TpRefundTypeEnum refundTypeEnum : TpRefundTypeEnum.values()) { + if (StringUtils.equals(code, refundTypeEnum.getCode())) { + return refundTypeEnum; + } + } + + return null; + } + } diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpAuditOrChangePriceBizTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpAuditOrChangePriceBizTypeEnum.java new file mode 100644 index 0000000..6e06bb0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpAuditOrChangePriceBizTypeEnum.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 改价 / 审核业务类型 + *

+ * + * @author chenjiaju + * @since 2023/9/2 + */ +public enum TpAuditOrChangePriceBizTypeEnum { + + /** + * 确认订单 + */ + CONFIRM_ORDER("CONFIRM_ORDER", "确认订单"), + + /** + * 变更订单 + */ + CHANGE_ORDER("CHANGE_ORDER", "变更订单"), + + /** + * 取消订单 + */ + CANCEL_ORDER("CANCEL_ORDER", "取消订单"), + + /** + * 行程结束价格确认 + */ + ORDER_END_PRICE_CONFIRM_ORDER("ORDER_END_PRICE_CONFIRM_ORDER", "行程结束价格确认"), + + /** + * 订单结束 + */ + END_ORDER("END_ORDER", "订单结束") + ; + + private String bizType; + + private String desc; + + TpAuditOrChangePriceBizTypeEnum(String bizType, String desc) { + this.bizType = bizType; + this.desc = desc; + } + + public String getBizType() { + return bizType; + } + + public void setBizType(String bizType) { + this.bizType = bizType; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpCarpoolOrderOperateEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpCarpoolOrderOperateEnum.java new file mode 100644 index 0000000..3ce14cc --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpCarpoolOrderOperateEnum.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.Getter; + +/** + *

+ * 拼车订单操作类型 + *

+ * + * @author chenjiaju + * @since 2024/5/24 + */ + +@Getter +public enum TpCarpoolOrderOperateEnum { + + /** + * 取消拼车 + */ + CANCEL("cancel"), + + /** + * 拼车失败 + */ + FINISH("fail"); + + private String operateType; + + TpCarpoolOrderOperateEnum(String operateType) { + this.operateType = operateType; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderApproveStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderApproveStatusEnum.java new file mode 100644 index 0000000..e57ba2a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderApproveStatusEnum.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 订单审核枚举 + *

+ * + * @author chenjiaju + * @since 2023/9/2 + */ +public enum TpOrderApproveStatusEnum { + + /** + * 待审核 + */ + WAITING_APPROVE(0, "待审核"), + + /** + * 审核通过 + */ + APPROVED(1, "审核通过"), + + /** + * 审核未通过 + */ + NOT_APPROVED(2, "审核未通过") + ; + + private Integer approveStatus; + + private String desc; + + TpOrderApproveStatusEnum(Integer approveStatus, String desc) { + this.approveStatus = approveStatus; + this.desc = desc; + } + + public Integer getApproveStatus() { + return approveStatus; + } + + public void setApproveStatus(Integer approveStatus) { + this.approveStatus = approveStatus; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeApplyStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeApplyStatusEnum.java new file mode 100644 index 0000000..0a0ed6c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeApplyStatusEnum.java @@ -0,0 +1,74 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author amos wong + * @create 2023/10/30 13:57 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpOrderChangeApplyStatusEnum { + + /** + * 申请单初始化-新创建 + */ + APPLY_CREATE("create", "申请单初始化-新创建"), + /** + * 待审核 + */ + WAITING_APPROVED("waiting_approved", "待审核"), + + /** + * 减免单次手续费待审批 + */ + @Deprecated + SINGLE_RSC_WAITING_APPROVED("single_rsc_waiting_approved", "减免单次手续费待审批"), + + /** + * 全额减免手续费待审批 + */ + @Deprecated + FULL_RSC_WAITING_APPROVED("full_rsc_waiting_approved", "全额减免手续费待审批"), + + /** + * 减免手续费待审批:减免单次还是减免全部 + */ + RSC_WAITING_APPROVED("rsc_waiting_approved", "减免手续费待审批"), + + + /** + * 审核通过 + */ + APPROVED_SUCCESS("approved_success", "审核通过"), + + /** + * 审核未通过 + */ + APPROVED_REJECT("approved_reject", "审核未通过"), + /** + * 审批超时 + */ + APPROVED_TIMEOUT("approved_timeout", "审批超时"), + + ; + private String type; + + private String desc; + + public static TpOrderChangeApplyStatusEnum getApplyStatusByType(String type) { + if(StrUtil.isEmpty(type)){ + return null; + } + for(TpOrderChangeApplyStatusEnum typeEnum:TpOrderChangeApplyStatusEnum.values()){ + if(StrUtil.equalsIgnoreCase(typeEnum.getType(),type)){ + return typeEnum; + } + } + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemFactorEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemFactorEnum.java new file mode 100644 index 0000000..7d67517 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemFactorEnum.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.*; + +/** + * @author amos wong + * @create 2023/10/30 14:05 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpOrderChangeItemFactorEnum { + + START_TIME("start_time", "出发时间"), + + RETURN_TIME("return_time", "返回时间"), + + GO_ON_POINT("go_on_point", "上车点"), + + DROP_OFF_POINT("drop_off_point", "下车点"), + + WAY_POINT("way_point", "途径点"), + + TRIP_TYPE("trip_type", "包车类型"), + + RENTAL_DAYS("rental_days", "用车天数"), + + PASSENGER_COUNT("passenger_count", "乘车人数"), + + CAR_INFO("car_info", "车辆信息"), + + CAR_NUM("car_num", "车辆数量"), + + DRIVER_FEE("driver_fee", "司机费用"), + + MILES("miles", "里程"), + + DURATION("duration", "耗时"), + + ORDER_PRICE("order_price", "订单金额(直接修改的订单金额)"), + + ; + + private final String type; + + private final String desc; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemTypeEnum.java new file mode 100644 index 0000000..b80c921 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeItemTypeEnum.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author xiehuaqiao + * @create 2023/11/15 14:05 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpOrderChangeItemTypeEnum { + + GO_TRIP_CHANGED("go_trip_changed","去行程变更"), + BACK_TRIP_CHANGED("back_trip_changed","返行程变更"), + + TRIP_ROUND_CHANGED("trip_round_changed", "行程往返程变更"), + + ORDER_PRICE_CHANGED("order_price_changed", "订单金额变更"), + ; + private final String type; + + private final String desc; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeTypeEnum.java new file mode 100644 index 0000000..bfef3aa --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChangeTypeEnum.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum; +import lombok.*; + +/** + * @author amos wong + * @create 2023/10/30 13:57 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpOrderChangeTypeEnum { + + ORDER_CANCEL("order_cancel", "用户取消订单申请单"), + + ORDER_CHANGE("order_change", "用户订单变更申请单"), + + ORDER_CREATE("order_create", "用户创建订单申请单"), + + ORDER_END_CHARGE_CONFIRM("order_end_charge_confirm", "订单结束确认费用申请单") + ; + private String type; + + private String desc; + + public static TpOrderChangeTypeEnum getOrderChangeTypeByType(String type) { + if(StrUtil.isEmpty(type)){ + return null; + } + for(TpOrderChangeTypeEnum typeEnum:TpOrderChangeTypeEnum.values()){ + if(StrUtil.equalsIgnoreCase(typeEnum.getType(),type)){ + return typeEnum; + } + } + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChargeRecordTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChargeRecordTypeEnum.java new file mode 100644 index 0000000..48413eb --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderChargeRecordTypeEnum.java @@ -0,0 +1,19 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum TpOrderChargeRecordTypeEnum { + + PLACE_ORDER("place_order", "用户下单"), + + CHANGE_ORDER("change_order", "变更订单"), + + CANCEL_ORDER("cancel_order", "取消订单"), + ; + private String type; + + private String desc; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDepositStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDepositStatusEnum.java new file mode 100644 index 0000000..0c6e979 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDepositStatusEnum.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum TpOrderDepositStatusEnum { + + UN_PAY(0, "未支付"), + + PAID(1, "已支付"), + ; + private Integer status; + + private String desc; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchSceneTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchSceneTypeEnum.java new file mode 100644 index 0000000..d1d484c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchSceneTypeEnum.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 分配订单类型 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ +@AllArgsConstructor +@Getter +public enum TpOrderDispatchSceneTypeEnum { + + /** + * 分配订单自动创建场景 + */ + USER_CREATE_ORDER_SCENE("user_create_order", "用户下单自动分配场景", 5), + + /** + * 业务员手动分配场景 + */ + OPERATOR_MANUAL_DISPATCH_SCENE("user_manual_dispatch", "业务员手动分配场景", 10), + ; + + private String sceneName; + + private String sceneDesc; + + private Integer sceneCode; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchStatusEnum.java new file mode 100644 index 0000000..e87ab9d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderDispatchStatusEnum.java @@ -0,0 +1,73 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 分配订单状态推进枚举 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ +@AllArgsConstructor +@Getter +public enum TpOrderDispatchStatusEnum { + + /** + * 分配订单创建:待处理 + */ + ORDER_DISPATCH_UNASSIGNED_STATUS("un-assigned", "已创建", 5), + + /** + * 分配订单已分配公司 + */ + ORDER_DISPATCH_ASSIGNED_ORG_STATUS("assigned-org", "已分配公司", 10), + + + /** + * 分配订单已召回 + */ + ORDER_DISPATCH_CALLBACK_STATUS("call-back", "已召回", 11), + + /** + * 分配订单已退回 + */ + ORDER_DISPATCH_GIVEBACK_STATUS("give-back", "分配订单已退回", 12), + + /** + * 分配订单已分配车队 + */ + ORDER_DISPATCH_ASSIGNED_FLEET_STATUS("assigned-fleet", "已分配车队", 15), + + /** + * 分配订单已接单 + */ + ORDER_DISPATCH_RECEIVED_STATUS("received", "已接单", 20), + + /** + * 分配订单已重分配 + */ + ORDER_DISPATCH_REASSIGNED_STATUS("re-assigned", "已转分配", 21), + ; + + private String type; + + private String desc; + + private Integer status; + + public static TpOrderDispatchStatusEnum getOrderDispatchStatusByType(String type) { + if(StrUtil.isEmpty(type)){ + return null; + } + for(TpOrderDispatchStatusEnum typeEnum:TpOrderDispatchStatusEnum.values()){ + if(StrUtil.equalsIgnoreCase(typeEnum.getType(),type)){ + return typeEnum; + } + } + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderIdentityStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderIdentityStatusEnum.java new file mode 100644 index 0000000..fb840e7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderIdentityStatusEnum.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 订单实名认证枚举 + *

+ * + * @author chenjiaju + * @since 2023/9/2 + */ +public enum TpOrderIdentityStatusEnum { + + /** + * 实名认证 + */ + REAL_NAME(1, "实名认证"), + + /** + * 非实名认证 + */ + NOT_REAL_NAME(0, "非实名认证"), + ; + + private Integer status; + + private String desc; + + TpOrderIdentityStatusEnum(Integer status, String desc) { + this.status = status; + this.desc = desc; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderModulesEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderModulesEnum.java new file mode 100644 index 0000000..552f14f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderModulesEnum.java @@ -0,0 +1,104 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; + +/** + *

+ * 订单模块枚举 + *

+ * + * @author chenjiaju + * @since 2023/7/27 + */ +public enum TpOrderModulesEnum { + + /** + * 订单计价记录 + */ + ORDER_PRICE_RECORD("PRICE_RECORD"), + + /** + * 订单要素信息 + */ + ORDER_ELEMENT_INFO("ORDER_ELEMENT_INFO"), + + /** + * 下单人 + */ + ORDER_PLACER("ORDER_PLACER"), + + /** + * 用车需求方 + */ + ORDER_REQUIREMENT_USER("ORDER_REQUIREMENT_USER"), + + /** + * 订单标的项 + */ + ORDER_SUBJECT_ITEM("ORDER_SUBJECT_ITEM"), + + /** + * 行程单 + */ + ORDER_TRAVEL_TRIP("ORDER_TRAVEL_TRIP"), + + /** + * 订单派单记录 + */ + ORDER_DISPATCH_RECORD("ORDER_DISPATCH_RECORD"), + + /** + * 服务对象 + */ + ORDER_SERVICE_TARGET("ORDER_SERVICE_TARGET"), + + /** + * 线路信息 + */ + ORDER_ROUTE_INFO("ORDER_ROUTE_INFO"), + + /** + * 费用记录 + */ + CHARGE_RECORD("CHARGE_RECORD"), + + /** + * 行程派车记录 + */ + TRAVEL_DISPATCH_RECORD("TRAVEL_DISPATCH_RECORD"), + + /** + * 发票 + */ + ORDER_INVOICE("ORDER_INVOICE"), + + /** + * 改签记录 + */ + RESCHEDULE_RECORD("RESCHEDULE_RECORD"), + + ; + + private String module; + + TpOrderModulesEnum(String module) { + this.module = module; + } + + public static TpOrderModulesEnum getEnumByModuleName(String module) { + for (TpOrderModulesEnum e : TpOrderModulesEnum.values()) { + if (StrUtil.equals(module, e.getModule())) { + return e; + } + } + return null; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderNeedApproveEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderNeedApproveEnum.java new file mode 100644 index 0000000..4aabb8c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderNeedApproveEnum.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 订单是否需要审核枚举 + *

+ * + * @author chenjiaju + * @since 2023/9/2 + */ +public enum TpOrderNeedApproveEnum { + + /** + * 无需审核 + */ + NOT_NEED_APPROVE(0, "无需审核"), + + /** + * 需要审核 + */ + NEED_APPROVE(1, "需要审核"), + ; + + private Integer needApprove; + + private String desc; + + TpOrderNeedApproveEnum(Integer needApprove, String desc) { + this.needApprove = needApprove; + this.desc = desc; + } + + public Integer getNeedApprove() { + return needApprove; + } + + public void setNeedApprove(Integer needApprove) { + this.needApprove = needApprove; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPayModeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPayModeEnum.java new file mode 100644 index 0000000..421dfc1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPayModeEnum.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 订单支付模式枚举 + *

+ * + * @author chenjiaju + * @since 2023/11/13 + */ +public enum TpOrderPayModeEnum { + + /** + * 先享后付 + */ + PAY_AFTER("pay_after", "先享后付"), + + /** + * 先付后享 + */ + PAY_BEFORE("pay_before", "先付后享"), + + /** + * 先付后享-付全款 + */ + PAY_BEFORE_ALL("pay_before_all", "先付后享-付全款"), + + ; + + private String payMode; + + private String payModeDesc; + + TpOrderPayModeEnum(String payMode, String payModeDesc) { + this.payMode = payMode; + this.payModeDesc = payModeDesc; + } + + public String getPayMode() { + return payMode; + } + + public void setPayMode(String payMode) { + this.payMode = payMode; + } + + public String getPayModeDesc() { + return payModeDesc; + } + + public void setPayModeDesc(String payModeDesc) { + this.payModeDesc = payModeDesc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPushStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPushStatusEnum.java new file mode 100644 index 0000000..c5fdd72 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderPushStatusEnum.java @@ -0,0 +1,306 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; + +/** + *

+ * 订单状态推进枚举 + *

+ * + * @author chenjiaju + * @since 2023/9/1 + */ +public enum TpOrderPushStatusEnum { + + /** + * 订单过期 定制公交 / 预约包车 + */ + ORDER_EXPIRE_PUSH_STATUS("ORDER_EXPIRE_PUSH_STATUS", "订单过期", 10), + + /** + * 订单待支付 + */ + NEED_PAY_PUSH_STATUS("NEED_PAY_PUSH_STATUS", "待支付", 5), + + /** + * 订单已支付 + */ + PAID_ORDER_PUSH_STATUS("PAID_ORDER_PUSH_STATUS", "已支付,推进订单状态为:已支付", 15), + + /** + * 退款中 + */ + ORDER_REFUNDING_PUSH_STATUS("ORDER_REFUNDING_PUSH_STATUS", "退款中", 25), + + /** + * 部分退款,存在未核销凭证 订单状态推进 + */ + PART_REFUND_NOT_VERIFIED_PUSH_STATUS("PART_REFUND_NOT_VERIFIED_PUSH_STATUS", "部分退款, 存在未核销凭证, 订单状态推进为:部分退款", 30), + + /** + * 部分退款,不存在未核销凭证 订单状态推进 + */ + PART_REFUND_ALL_VERIFIED_PUSH_STATUS("PART_REFUND_ALL_VERIFIED_PUSH_STATUS", "部分退款, 不存在未核销凭证, 订单状态推进为:已完成(存在退款)", 50), + + /** + * 部分核销,存在未核销凭证,未产生退款,订单状态推进 + */ + PART_VERIFIED_VOUCHER_EXIST_UNVERIFIED_PUSH_STATUS("PART_VERIFIED_VOUCHER_EXIST_UNVERIFIED_PUSH_STATUS", " 部分核销, 存在未核销凭证, 未产生退款, 订单状态推进为:部分核销", 20), + + /** + * 全部核销,订单状态推进 + */ + ALL_VERIFIED_PUSH_STATUS("ALL_VERIFIED_PUSH_STATUS", "全部核销, 订单状态推进为:已完成(不存在退款)", 55), + + /** + * 全部退款 + */ + ALL_REFUND_PUSH_STATUS("ALL_REFUND_PUSH_STATUS", "全部退款,推进订单状态为:全部退款", 40), + + /** + * 订单凭证部分过期,不存在退款 + */ + PART_EXPIRE("PART_EXPIRE", "剩余凭证过期(不存在退款)", 65), + + /** + * 订单部分过期,存在退款 + */ + PART_EXPIRE_EXIST_REFUND("PART_EXPIRE_EXIST_REFUND", "剩余凭证过期(存在退款)", 60), + + /** + * 订单全部过期 + */ + ALL_EXPIRE("ALL_EXPIRE", "全部过期", 70), + + /** + * 订单已改签,包含退款 + */ + ORDER_RESCHEDULE_HAS_REFUND("ORDER_RESCHEDULE_HAS_REFUND", "订单已改签,包含退款", 75), + + /** + * 订单已改签, 不包含退款 + */ + ORDER_RESCHEDULE_NO_REFUND("ORDER_RESCHEDULE_NO_REFUND", "订单已改签,不包含退款", 80), + + + // ============================================ 预约包车 专用状态 ============================================ + + /** + * 订单待确认 + */ + ORDER_NEED_CONFIRM("ORDER_NEED_CONFIRM", "订单待确认", 5), + + /** + * 超时未确认 + */ + ORDER_TIMEOUT_CONFIRM("ORDER_TIMEOUT_CONFIRM", "超时未确认", 10), + + /** + * 订单已确认 + */ + ORDER_ALREADY_CONFIRM("ORDER_ALREADY_CONFIRM", "订单已确认", 15), + + /** + * 订单已驳回 + */ + ORDER_REJECTED("ORDER_REJECT", "订单已驳回", 20), + + /** + * 订金待支付 + */ + ORDER_DEPOSIT_NEED_PAY("ORDER_DEPOSIT_NEED_PAY", "订金待支付", 25), + + /** + * 订金超时未支付 + */ + ORDER_DEPOSIT_TIMEOUT("ORDER_DEPOSIT_TIMEOUT", "订金超时未支付", 30), + + /** + * 订金已支付 + */ + ORDER_DEPOSIT_PAID("ORDER_DEPOSIT_PAID", "订金已支付",35), + + /** + * 订单待派车 + */ + ORDER_NEED_DISPATCH("ORDER_NEED_DISPATCH", "订单待派车", 40), + + /** + * 订单已派车 / 待发车 + */ + ORDER_DISPATCHED("ORDER_DISPATCHED", "订单已派车", 45), + + /** + * 行程已发车 + */ + ORDER_TRIP_STARTED("ORDER_TRIP_STARTED", "订单已发车", 50), + + /** + * 行程结束待确认订单金额 + */ + ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT("ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT", "行程结束待确认订单金额", 52), + + /** + * 行程结束,待支付尾款 + */ + ORDER_TRIP_END_NEED_PAY("ORDER_TRIP_END_NEED_PAY", "行程结束,待支付尾款", 55), + + /** + * 行程结束,已支付尾款 + */ + ORDER_TRIP_END_PAID("ORDER_TRIP_END_PAID", "行程结束,已支付尾款", 60), + + /** + * 行程结束,退款中 + */ + ORDER_TRIP_END_REFUNDING("ORDER_TRIP_END_REFUNDING", "行程结束,退款中", 65), + + /** + * 行程结束,已退款 + */ + ORDER_TRIP_END_REFUNDED("ORDER_TRIP_END_REFUNDED", "行程结束,已退款", 70), + + /** + * 行程结束 (无退款 / 无尾款) + */ + ORDER_TRIP_END("ORDER_TRIP_END", "行程结束", 75), + + /** + * 取消订单审核中 + */ + ORDER_CANCEL_AUDITING("ORDER_CANCEL_AUDITING", "取消订单审核中", 80), + + /** + * 取消订单审核通过 + */ + ORDER_CANCEL_AUDITED("ORDER_CANCEL_AUDITED", "取消订单审核失败", 85), + + // 订单取消需要支付手续费 + + /** + * 订单取消待支付 + */ + ORDER_CANCEL_NEED_PAY("ORDER_CANCEL_NEED_PAY", "订单取消待支付", 90), + + /** + * 终态:订单取消已支付 + */ + ORDER_CANCEL_PAID("ORDER_CANCEL_PAID", "订单取消已支付", 95), + + // 订单取消需退款 + + /** + * 订单取消退款中 + */ + ORDER_CANCEL_REFUNDING("ORDER_CANCEL_REFUNDING", "订单取消退款中", 100), + + /** + * 订单取消退款成功 + */ + ORDER_CANCEL_REFUNDED("ORDER_CANCEL_REFUNDED", "订单取消退款成功", 105), + + // 订单取消无需支付手续费 / 无需退款 + + /** + * 订单已取消 + */ + ORDER_CANCELED("ORDER_CANCELED", "订单已取消", 110), + + /** + * 变更订单-审核中 + */ + ORDER_CHANGE_AUDITING("ORDER_CHANGE_AUDITING", "变更订单审核中", 115), + + /** + * 变更订单审核通过 + */ + ORDER_CHANGE_AUDITED("ORDER_CHANGE_AUDITED", "变更订单审核通过", 120), + + // ============================================ 拼车 专用状态 ============================================ + + /** + * 拼车成功 + */ + ORDER_CARPOOL_SUCCESS("ORDER_CARPOOL_SUCCESS", "拼车成功", 20), + + /** + * 已完成 + */ + ORDER_CARPOOL_FINISH("ORDER_CARPOOL_FINISH", "已完成", 25), + + /** + * 取消拼车成功(无退款) + */ + ORDER_CARPOOL_CANCELED_UN_REFUND("ORDER_CARPOOL_CANCELED_UN_REFUND", "取消拼车成功无退款", 30), + + /** + * 取消拼车退款中 + */ + ORDER_CARPOOL_CANCEL_REFUNDING("ORDER_CARPOOL_CANCEL_REFUNDING", "取消拼车退款中", 35), + + /** + * 取消拼车退款成功 + */ + ORDER_CARPOOL_CANCEL_REFUNDED("ORDER_CARPOOL_CANCEL_REFUNDED", "取消拼车退款成功", 40), + + /** + * 拼车失败无需退款 + */ + ORDER_CARPOOL_FAIL_UN_REFUND("ORDER_CARPOOL_FAIL_UN_REFUND", "拼车失败无需退款", 45), + + /** + * 拼车失败退款中 + */ + ORDER_CARPOOL_FAIL_REFUNDING("ORDER_CARPOOL_FAIL_REFUNDING", "拼车失败退款中", 50), + + /** + * 拼车失败退款成功 + */ + ORDER_CARPOOL_FAIL_REFUNDED("ORDER_CARPOOL_FAIL_REFUNDED", "拼车失败退款成功", 55), + ; + + private String strategyType; + + private String strategyDesc; + + private Integer status; + + TpOrderPushStatusEnum (String strategyType, String strategyDesc, Integer status) { + this.strategyType = strategyType; + this.strategyDesc = strategyDesc; + this.status = status; + } + + public static TpOrderPushStatusEnum getPushStatusByType(String type) { + for (TpOrderPushStatusEnum statusEnum : TpOrderPushStatusEnum.values()) { + if (StrUtil.equals(statusEnum.getStrategyType(), type)) { + return statusEnum; + } + } + return null; + } + + public String getStrategyType() { + return strategyType; + } + + public void setStrategyType(String strategyType) { + this.strategyType = strategyType; + } + + public String getStrategyDesc() { + return strategyDesc; + } + + public void setStrategyDesc(String strategyDesc) { + this.strategyDesc = strategyDesc; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedBizObjTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedBizObjTypeEnum.java new file mode 100644 index 0000000..77ea17d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedBizObjTypeEnum.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 订单接单归属的业务对象类型 + *

+ * + * @author xiehuaqiao + * @since 2023/11/21 + */ +@AllArgsConstructor +@Getter +public enum TpOrderReceivedBizObjTypeEnum { + + /** + * 订单 + */ + ORDER("order", "订单"), + ; + + private String type; + + private String desc; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedStatusEnum.java new file mode 100644 index 0000000..331aaa9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReceivedStatusEnum.java @@ -0,0 +1,39 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 订单接单状态推进枚举 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ +@AllArgsConstructor +@Getter +public enum TpOrderReceivedStatusEnum { + + /** + * 待接单 + */ + ORDER_RECEIVING_STATUS("ORDER_RECEIVING_STATUS", "待接单", 5), + + /** + * 接单审核中 + */ + ORDER_RECEIVED_APPROVING_STATUS("ORDER_RECEIVED_APPROVING_STATUS", "接单审核中", 10), + + /** + * 已接单 + */ + ORDER_RECEIVED_STATUS("ORDER_RECEIVED_STATUS", "已接单", 15), + ; + + private String strategyType; + + private String strategyDesc; + + private Integer status; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReductionServiceChargeTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReductionServiceChargeTypeEnum.java new file mode 100644 index 0000000..eed09e1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderReductionServiceChargeTypeEnum.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + *

+ * 订单退单或者变更时减免手续费类型 + *

+ * + * @author xiehuaqiao + * @since 2023/9/2 + */ +@AllArgsConstructor +@Getter +public enum TpOrderReductionServiceChargeTypeEnum { + + /** + * 减免单次 + */ + SINGLE_REDUCTION ("single_reduction", "减免单次"), + + /** + * 全额减免 + */ + FULL_REDUCTION ("full_reduction", "全额减免"), + + /** + * 不减免,按照规则扣减 + */ + NON_REDUCTION("non_reduction", "不减免,按照规则扣减") + ; + + private String bizType; + + private String desc; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderSourceEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderSourceEnum.java new file mode 100644 index 0000000..852807f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderSourceEnum.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import lombok.Getter; + +/** + *

+ * 订单下单来源枚举 + *

+ * + * @author chenjiaju + * @since 2024/3/12 + */ +@Getter +public enum TpOrderSourceEnum { + + /** + * APP + */ + APP("app", "app客户端"), + + /** + * H5 + */ + H5("h5", "H5"), + + /** + * POS机预约 + */ + POS("pos", "POS机预约"), + + /** + * 微信小程序 + */ + WX_APPLET("wx_applet", "微信小程序"), + + /** + * 支付宝小程序 + */ + ALIPAY_APPLET("alipay_applet", "支付宝小程序"), + + /** + * 后台录单 + */ + BACKEND("backend", "后台录单"), + + ; + + private String type; + + private String desc; + + TpOrderSourceEnum(String type, String desc) { + this.type = type; + this.desc = desc; + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTravelTripStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTravelTripStatusEnum.java new file mode 100644 index 0000000..6e53a4a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTravelTripStatusEnum.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 行程单状态枚举 + *

+ * + * @author chenjiaju + * @since 2023/11/13 + */ +public enum TpOrderTravelTripStatusEnum { + + /** + * 未同步 + */ + UN_SYNC("un_sync", "未同步"), + + /** + * 已同步 + */ + ALREADY_SYNC("already_sync", "已同步"), + + /** + * 未派车 + */ + NOT_DISPATCH("not_dispatch", "未派车"), + + /** + * 已派车 + */ + ALREADY_DISPATCH("already_dispatch", "已派车"), + + /** + * 取消已同步 + */ + CANCEL_SYNC("cancel_sync", "取消已同步") + + ; + + private String dispatchStatus; + + private String dispatchDesc; + + TpOrderTravelTripStatusEnum(String dispatchStatus, String dispatchDesc) { + this.dispatchStatus = dispatchStatus; + this.dispatchDesc = dispatchDesc; + } + + public String getDispatchStatus() { + return dispatchStatus; + } + + public void setDispatchStatus(String dispatchStatus) { + this.dispatchStatus = dispatchStatus; + } + + public String getDispatchDesc() { + return dispatchDesc; + } + + public void setDispatchDesc(String dispatchDesc) { + this.dispatchDesc = dispatchDesc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTripTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTripTypeEnum.java new file mode 100644 index 0000000..48059c3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpOrderTripTypeEnum.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 行程类型枚举 + *

+ * + * @author chenjiaju + * @since 2023/11/13 + */ +public enum TpOrderTripTypeEnum { + + /** + * 去程 + */ + GO("go", "去程"), + + /** + * 返程 + */ + BACK("back", "返程"), + + /** + * 往返 + */ + ROUND("round", "往返"), + + ; + + private String code; + + private String desc; + + TpOrderTripTypeEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpServiceChargeOperationTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpServiceChargeOperationTypeEnum.java new file mode 100644 index 0000000..8f45708 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpServiceChargeOperationTypeEnum.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.enums.order; + +/** + *

+ * 手续费类型 + *

+ * + * @author chenjiaju + * @since 2023/9/2 + */ +public enum TpServiceChargeOperationTypeEnum { + + /** + * 单笔减免 + */ + SINGLE_FREE_SERVICE_CHARGE("SINGLE_FREE_SERVICE_CHARGE", "单次减免手续费"), + + /** + * 全部减免手续费 + */ + FREE_SERVICE_CHARGE("FREE_SERVICE_CHARGE", "全部减免手续费"), + + /** + * 按规则计算手续费(默认) + */ + RULE_CAL_SERVICE_CHARGE("RULE_CAL_SERVICE_CHARGE", "RULE_CAL_SERVICE_CHARGE"), + ; + + private String bizType; + + private String desc; + + TpServiceChargeOperationTypeEnum(String bizType, String desc) { + this.bizType = bizType; + this.desc = desc; + } + + public String getBizType() { + return bizType; + } + + public void setBizType(String bizType) { + this.bizType = bizType; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerIdentityTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerIdentityTypeEnum.java new file mode 100644 index 0000000..90e8f68 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerIdentityTypeEnum.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; + +/** + *

+ * 乘客证件类型枚举 + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ +public enum TpUserPassengerIdentityTypeEnum { + + /** + * 身份证 + */ + ID_CARD("001", "身份证"), + + ; + + private String identityCode; + + private String identityDesc; + + TpUserPassengerIdentityTypeEnum(String identityCode, String identityDesc) { + this.identityCode = identityCode; + this.identityDesc = identityDesc; + } + + public static TpUserPassengerIdentityTypeEnum getIdentityTypeEnumByIdentityCode(String identityCode) { + for (TpUserPassengerIdentityTypeEnum e : TpUserPassengerIdentityTypeEnum.values()) { + if (StrUtil.equals(identityCode, e.getIdentityCode())) { + return e; + } + } + return null; + } + + public String getIdentityCode() { + return identityCode; + } + + public void setIdentityCode(String identityCode) { + this.identityCode = identityCode; + } + + public String getIdentityDesc() { + return identityDesc; + } + + public void setIdentityDesc(String identityDesc) { + this.identityDesc = identityDesc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerTypeEnum.java new file mode 100644 index 0000000..7024dee --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/order/TpUserPassengerTypeEnum.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.enums.order; + +import cn.hutool.core.util.StrUtil; + +/** + *

+ * 乘客类型枚举 + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ +public enum TpUserPassengerTypeEnum { + + //乘客类型(成人-ADULT;儿童-CHILD;残疾人-DEFORMED_MAN;老年人-OLD_PEOPLE;军人-MILITARY) + /** + * 成人 + */ + ADULT("ADULT", "成人"), + + /** + * 小孩 + */ + CHILD("CHILD", "小孩"), + + /** + * 残疾人 + */ + DEFORMED_MAN("DEFORMED_MAN", "残疾人"), + + /** + * 老年人 + */ + OLD_PEOPLE("OLD_PEOPLE", "老年人"), + + /** + * 军人 + */ + MILITARY("MILITARY", "军人"), + + ; + + private String type; + + private String desc; + + + TpUserPassengerTypeEnum(String type, String desc) { + this.type = type; + this.desc = desc; + } + + public static TpUserPassengerTypeEnum getPassengerTypeEnumByType(String type) { + for (TpUserPassengerTypeEnum e : TpUserPassengerTypeEnum.values()) { + if (StrUtil.equals(e.getType(), type)) { + return e; + } + } + return null; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskStatusEnum.java new file mode 100644 index 0000000..0c12d38 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskStatusEnum.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.common.enums.task; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +@AllArgsConstructor +@Getter +public enum TpScheduleTaskStatusEnum { + + WAIT_EXECUTE("wait_execute", "待执行"), + + EXECUTING("executing", "执行中"), + + SUCCESS("success", "执行成功"), + + FAIL("fail", "执行失败"), + + TERMINATED("terminated", "已终止"), + + CANCELED("canceled", "已取消"); + + /** + * 类型 + */ + private String status; + + /** + * 说明 + */ + private String desc; + + public static TpScheduleTaskStatusEnum getByStatus(String status) { + if (status == null) { + return null; + } + for (TpScheduleTaskStatusEnum an : TpScheduleTaskStatusEnum.values()) { + if (StringUtils.equals(an.getStatus(), status)) + return an; + } + return null; + } + +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskTypeEnum.java new file mode 100644 index 0000000..c879864 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/task/TpScheduleTaskTypeEnum.java @@ -0,0 +1,67 @@ +package com.deepinnet.tptradecore.common.enums.task; + +import com.google.common.collect.Lists; +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +@AllArgsConstructor +@Getter +public enum TpScheduleTaskTypeEnum { + + CLOSE_PAY_ORDER("close_pay_order", "关闭超时支付单任务"), + + CLOSE_ORDER("close_order", "关闭超时订单任务"), + + VOUCHER_EXPIRE("expire_voucher", "凭证过期定时任务"), + + CHARTER_BUS_TRIP_END("charter_bus_trip_end", "定制包车行程结束任务"), + + ORDER_PAY_BEFORE_PAY_TIMEOUT("order_pay_before_pay_timeout", "订单先享后付模式,定金超时未支付"), + + ORDER_TRIP_START("order_trip_start", "订单已派车改为行程中"), + + AUDIT_TIME_OUT("audit_time_out", "审核超时未处理"), + + TRIP_START_BEFORE_TWO_HOURS("trip_start_before_two_hours", "行程开始前两小时"), + + TRIP_START_BEFORE_HALF_HOURS("trip_start_before_half_hours", "行程开始前半小时"), + + TRIP_END_AFTER_THREE_DAYS("trip_end_after_three_days", "行程结束后三天"), + + CLOSE_ORDER_BEFORE_TWO_HOURS("close_order_before_two_hours", "关单前两小时"), + + CLOSE_ORDER_BEFORE_HALF_HOURS("close_order_before_half_hours", "关单前半小时"), + + CAR_POOL_END("car_pool_end", "拼车结束任务"), + + ; + + /** + * 类型 + */ + private final String type; + + /** + * 描述信息 + */ + private final String desc; + + public static TpScheduleTaskTypeEnum getByType(String type) { + if (type == null) { + return null; + } + for (TpScheduleTaskTypeEnum an : TpScheduleTaskTypeEnum.values()) { + if (StringUtils.equals(an.getType(), type)) { + return an; + } + } + + return null; + } + + + public static final List TRADECORE_SUPPORT_TASK_TYPE_LIST = Lists.newArrayList(CLOSE_PAY_ORDER.getType(), CLOSE_ORDER.getType(), + VOUCHER_EXPIRE.getType(), CHARTER_BUS_TRIP_END.getType(), ORDER_TRIP_START.getType(), ORDER_PAY_BEFORE_PAY_TIMEOUT.getType(), CAR_POOL_END.getType()); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillStatusEnum.java new file mode 100644 index 0000000..95a34d3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillStatusEnum.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:19 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpBillStatusEnum { + + /** + * 初始化 + */ + INIT("init", "初始化"), + + /** + * 已支付 + */ + PAID("paid", "已支付"), + + /** + * 已退款 + */ + REFUND("refund", "已退款"), + + /** + * 已关闭 + */ + CLOSED("closed", "已关闭"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpBillStatusEnum getByCode(String code) { + for (TpBillStatusEnum billStatusEnum : TpBillStatusEnum.values()) { + if (StringUtils.equals(code, billStatusEnum.getCode())) { + return billStatusEnum; + } + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillTypeEnum.java new file mode 100644 index 0000000..f2bb107 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpBillTypeEnum.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:15 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpBillTypeEnum { + + /** + * 支付 + */ + PAY("pay", "支付"), + + /** + * 退款 + */ + REFUND("refund", "退款"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpBillTypeEnum getByCode(String code) { + for (TpBillTypeEnum billTypeEnum : TpBillTypeEnum.values()) { + if (StringUtils.equals(code, billTypeEnum.getCode())) { + return billTypeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChannelEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChannelEnum.java new file mode 100644 index 0000000..c22a02d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChannelEnum.java @@ -0,0 +1,59 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/8/1 11:12 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpChannelEnum { + + /** + * 微信 + */ + WECHAT("wechat", "微信"), + + /** + * 支付宝 + */ + ALIPAY("alipay", "支付宝"), + + /** + * 银行 + */ + BANK("bank", "银行"), + + /** + * 线下 + */ + OFFLINE("offline", "线下"), + + /** + * 其他 + */ + OTHER("other", "其他"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpChannelEnum getByCode(String code) { + for (TpChannelEnum channelEnum : TpChannelEnum.values()) { + if (StringUtils.equals(code, channelEnum.getCode())) { + return channelEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeStatusEnum.java new file mode 100644 index 0000000..6ba6e5c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeStatusEnum.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:19 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpChargeStatusEnum { + + /** + * 初始化 + */ + INIT("init", "初始化"), + + /** + * 已支付 + */ + PAID("paid", "已支付"), + + /** + * 已退款 + */ + REFUND("refund", "已退款"), + + /** + * 已关闭 + */ + CLOSED("closed", "已关闭"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpChargeStatusEnum getByCode(String code) { + for (TpChargeStatusEnum chargeStatusEnum : TpChargeStatusEnum.values()) { + if (StringUtils.equals(code, chargeStatusEnum.getCode())) { + return chargeStatusEnum; + } + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeTypeEnum.java new file mode 100644 index 0000000..331f221 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargeTypeEnum.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:20 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpChargeTypeEnum { + + /** + * 手续费 + */ + COMMISSION("commission", "手续费"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpChargeTypeEnum getByCode(String code) { + for (TpChargeTypeEnum chargeTypeEnum : TpChargeTypeEnum.values()) { + if (StringUtils.equals(code, chargeTypeEnum.getCode())) { + return chargeTypeEnum; + } + } + + return null; + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargingEntityTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargingEntityTypeEnum.java new file mode 100644 index 0000000..3652667 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpChargingEntityTypeEnum.java @@ -0,0 +1,40 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/11/30 17:02 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpChargingEntityTypeEnum { + + /** + * 公交公司 + */ + TRANSPORT_COMPANY("transport_company", "公交公司"); + + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpChargingEntityTypeEnum getByCode(String code) { + for (TpChargingEntityTypeEnum entityTypeEnum : TpChargingEntityTypeEnum.values()) { + if (StringUtils.equals(code, entityTypeEnum.getCode())) { + return entityTypeEnum; + } + } + + return null; + } + } diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpFinancialAccountTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpFinancialAccountTypeEnum.java new file mode 100644 index 0000000..942dd71 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpFinancialAccountTypeEnum.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 13:54 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpFinancialAccountTypeEnum { + + + /** + * 收款方 + */ + PAYEE("payee", "收款方"), + + /** + * 退款 + */ + PAYER("payer", "付款方"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpFinancialAccountTypeEnum getByCode(String code) { + for (TpFinancialAccountTypeEnum accountTypeEnum : TpFinancialAccountTypeEnum.values()) { + if (StringUtils.equals(code, accountTypeEnum.getCode())) { + return accountTypeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayOrderStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayOrderStatusEnum.java new file mode 100644 index 0000000..dad558a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayOrderStatusEnum.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:08 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpPayOrderStatusEnum { + + /** + * 下单 + */ + INIT("init", "初始化"), + + /** + * 支付中 + */ + PAYING("paying", "支付中"), + + /** + * 已支付 + */ + PAID("paid", "已支付"), + + /** + * 已退款 + */ + REFUND("refund", "已退款"), + + /** + * 退款中 + */ + REFUNDING("refunding", "退款中"), + + /** + * 已关闭 + */ + CLOSED("closed", "已关闭"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpPayOrderStatusEnum getByCode(String code) { + for (TpPayOrderStatusEnum orderStatusEnum : TpPayOrderStatusEnum.values()) { + if (StringUtils.equals(orderStatusEnum.getCode(), code)) { + return orderStatusEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPaySceneEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPaySceneEnum.java new file mode 100644 index 0000000..8169060 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPaySceneEnum.java @@ -0,0 +1,70 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import com.google.common.collect.Lists; +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/27 10:24 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpPaySceneEnum { + /** + * H5 + */ + H5("h5", "h5"), + + /** + * APP + */ + APP("app", "app"), + + /** + * 微信小程序 + */ + WECHAT_MINI_PROGRAM("wechat_mini_program", "微信小程序"), + + /** + * 支付宝小程序 + */ + ALI_MINI_PROGRAM("ali_mini_program", "支付宝小程序"), + + /** + * 微信公众号支付 + */ + WECHAT_OFFICIAL_ACCOUNT("wechat_official_account", "微信公众号"), + + /** + * 线下支付 + */ + OFFLINE("offline", "线下支付"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpPaySceneEnum getByCode(String code) { + for (TpPaySceneEnum paySceneEnum : TpPaySceneEnum.values()) { + if (StringUtils.equals(code, paySceneEnum.getCode())) { + return paySceneEnum; + } + } + + return null; + } + + public static final List WECHAT_SUPPORT_PAY_SCENE = Lists.newArrayList(H5, APP, WECHAT_MINI_PROGRAM, WECHAT_OFFICIAL_ACCOUNT); + + public static final List ALIPAY_SUPPORT_PAY_SCENE = Lists.newArrayList(H5, APP, ALI_MINI_PROGRAM); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayTypeEnum.java new file mode 100644 index 0000000..e3590ac --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpPayTypeEnum.java @@ -0,0 +1,56 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:24 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpPayTypeEnum { + /** + * 支付宝 + */ + ALIPAY("alipay", "支付宝"), + + /** + * 微信 + */ + WECHAT_PAY("wechat_pay", "微信"), + + /** + * 银联 + */ + UNION_PAY("union_pay", "银联"), + + /** + * 标记付款 + */ + MARK_PAY("mark_pay", "标记付款"), + + + OFFLINE_PAY("offline_pay", "线下付款"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpPayTypeEnum getByCode(String code) { + for (TpPayTypeEnum payTypeEnum : TpPayTypeEnum.values()) { + if (StringUtils.equals(code, payTypeEnum.getCode())) { + return payTypeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpVoucherNeedPropertiesEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpVoucherNeedPropertiesEnum.java new file mode 100644 index 0000000..6f9f3a7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/trans/TpVoucherNeedPropertiesEnum.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.enums.trans; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * @author amos wong + * @create 2024/1/19 10:27 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherNeedPropertiesEnum { + + PASSENGER("passenger", "乘客信息"), + + BIZ_RULE("biz_rule", "凭证规则"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + + public static TpVoucherNeedPropertiesEnum getByCode(String code) { + for (TpVoucherNeedPropertiesEnum needPropertiesEnum : TpVoucherNeedPropertiesEnum.values()) { + if (StringUtils.equals(code, needPropertiesEnum.getCode())) { + return needPropertiesEnum; + } + } + + return null; + } + + public static List buildNeedPropertiesList(TpVoucherNeedPropertiesEnum... needPropertiesEnums) { + if (needPropertiesEnums == null || needPropertiesEnums.length == 0) { + return null; + } + List codeList = new ArrayList<>(); + for (TpVoucherNeedPropertiesEnum needPropertiesEnum : needPropertiesEnums) { + codeList.add(needPropertiesEnum.getCode()); + } + return codeList; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpQueryScopeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpQueryScopeEnum.java new file mode 100644 index 0000000..5f742e9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpQueryScopeEnum.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/10/11 21:10 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpQueryScopeEnum { + + /** + * 查询全部 + */ + ALL("all", "查询全部"), + + /** + * 查询当天 + */ + TODAY("today", "查询当天"); + + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpQueryScopeEnum getByCode(String code) { + for (TpQueryScopeEnum scopeEnum : TpQueryScopeEnum.values()) { + if (StringUtils.equals(code, scopeEnum.getCode())) { + return scopeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherChannelEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherChannelEnum.java new file mode 100644 index 0000000..82eb558 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherChannelEnum.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:15 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherChannelEnum { + + /** + * 线上 + */ + ONLINE("online", "线上"), + + /** + * 线下村村通 + */ + OFFLINE_VILLAGE("offline_village", "线下村村通"), + ; + + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpVoucherChannelEnum getByCode(String code) { + for (TpVoucherChannelEnum channelEnum : TpVoucherChannelEnum.values()) { + if (StringUtils.equals(code, channelEnum.getCode())) { + return channelEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherCheckTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherCheckTypeEnum.java new file mode 100644 index 0000000..9486662 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherCheckTypeEnum.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/8/3 11:28 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherCheckTypeEnum { + + /** + * POS机检票 + */ + POS("pos", "pos机检票"), + + /** + * 手动检票 + */ + MANUAL_CHECK("manual_check", "用户手动检票"), + + /** + * 司机端检票 + */ + DRIVER_CHECK("driver_check", "司机端检票"), + ; + + /** + * 编码 + */ + private String code; + + /** + * 描述 + */ + private String desc; + + public static TpVoucherCheckTypeEnum getByCode(String code) { + for (TpVoucherCheckTypeEnum validationTypeEnum : TpVoucherCheckTypeEnum.values()) { + if (StringUtils.equals(code, validationTypeEnum.getCode())) { + return validationTypeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherStatusEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherStatusEnum.java new file mode 100644 index 0000000..1ccc148 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherStatusEnum.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import com.google.common.collect.Lists; +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/27 10:15 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherStatusEnum { + + /** + * 已创建 + */ + CREATED("created", "已创建"), + + /** + * 部分核销 + */ + PARTIAL_VERIFIED("partial_verified", "部分核销"), + + /** + * 全部核销 + */ + FULLY_VERIFIED("fully_verified", "全部核销"), + + /** + * 过期 + */ + EXPIRED("expired", "过期"), + + /** + * 退票中 + */ + REFUNDING("refunding", "退票中"), + + /** + * 已退票 + */ + REFUNDED("refunded", "已退票"); + + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpVoucherStatusEnum getByCode(String code) { + for (TpVoucherStatusEnum statusEnum : TpVoucherStatusEnum.values()) { + if (StringUtils.equals(code, statusEnum.getCode())) { + return statusEnum; + } + } + + return null; + } + + public static List ENABLE_VERIFIED_STATUS_LIST = Lists.newArrayList(CREATED.getCode(), PARTIAL_VERIFIED.getCode()); + + public static List ENABLE_EXPIRE_STATUS_LIST = Lists.newArrayList(CREATED.getCode(), PARTIAL_VERIFIED.getCode()); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherTypeEnum.java new file mode 100644 index 0000000..eae114d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherTypeEnum.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:15 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherTypeEnum { + + /** + * 日票 + */ + DAY("day", "日票"), + + /** + * 周票 + */ + WEEK("week", "周票"), + + /** + * 学期票 + */ + TERM("term", "学期票"), + + /** + * 月票 + */ + MONTH("month", "月票"), + + /** + * 周期票 + */ + DAY_RANGE("day_range", "周期票"), + + /** + * 年票 + */ + YEAR("year", "年票"); + + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpVoucherTypeEnum getByCode(String code) { + for (TpVoucherTypeEnum voucherTypeEnum : TpVoucherTypeEnum.values()) { + if (StringUtils.equals(code, voucherTypeEnum.getCode())) { + return voucherTypeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherValidationTypeEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherValidationTypeEnum.java new file mode 100644 index 0000000..5994657 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherValidationTypeEnum.java @@ -0,0 +1,69 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/8/3 11:28 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherValidationTypeEnum { + + /** + * 司机端检票 + */ + DRIVER_CHECK("driver_check", "司机端检票"), + + /** + * 人工检票 + */ + MANUAL_CHECK("manual", "人工检票"), + + /** + * POS机检票 + */ + POS("pos", "pos机检票"), + + /** + * 人脸识别 + */ + FACE_RECOGNITION("face_recognition", "人脸识别"), + + /** + * 校园卡 + */ + SCHOOL_CARD("school_card", "校园卡"), + + /** + * 身份证 + */ + ID_CARD("id_card", "身份证"), + + /** + * 村村通线下预约检票 + */ + VILLAGE_POS("village_pos", "村村通检票"); + + /** + * 编码 + */ + private String code; + + /** + * 描述 + */ + private String desc; + + public static TpVoucherValidationTypeEnum getByCode(String code) { + for (TpVoucherValidationTypeEnum validationTypeEnum : TpVoucherValidationTypeEnum.values()) { + if (StringUtils.equals(code, validationTypeEnum.getCode())) { + return validationTypeEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherVerifiedResultEnum.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherVerifiedResultEnum.java new file mode 100644 index 0000000..aa7720f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/enums/voucher/TpVoucherVerifiedResultEnum.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.enums.voucher; + +import lombok.*; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2023/7/27 10:15 + * @Description + */ +@AllArgsConstructor +@Getter +public enum TpVoucherVerifiedResultEnum { + + /** + * 成功 + */ + SUCCESS("success", "检票成功"), + + /** + * 检票失败 + */ + FAIL("fail", "检票失败"); + + /** + * 编码 + */ + private String code; + + /** + * 名字 + */ + private String desc; + + public static TpVoucherVerifiedResultEnum getByCode(String code) { + for (TpVoucherVerifiedResultEnum resultEnum : TpVoucherVerifiedResultEnum.values()) { + if (StringUtils.equals(code, resultEnum.getCode())) { + return resultEnum; + } + } + + return null; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorLevel.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorLevel.java new file mode 100644 index 0000000..454db92 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorLevel.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.common.error; + +/** + * @author taobinxian + * @version 2022-11-08 + * + * 异常的等级 + */ +public enum ErrorLevel { + WARN, + + ERROR +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorType.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorType.java new file mode 100644 index 0000000..1f0f307 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/ErrorType.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.error; + +/** + * @author taobinxian + * @version 2022-11-08 + * + * 异常的类型 + */ +public enum ErrorType { + BIZ, + + THIRD_PARTY, + + SYSTEM +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/TpTradeCoreErrorCode.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/TpTradeCoreErrorCode.java new file mode 100644 index 0000000..e33639d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/error/TpTradeCoreErrorCode.java @@ -0,0 +1,554 @@ +package com.deepinnet.tptradecore.common.error; + +/** + * @author taobinxian + * @version 2022-11-08 + *

+ * 资金平台通用异常码 + */ +public enum TpTradeCoreErrorCode { + + /*------------------------------------------------------------------------*/ + /* 通用事件[0000开头] */ + /*------------------------------------------------------------------------*/ + + /** + * 未知异常 + */ + UNKNOWN_EXCEPTION(ErrorLevel.ERROR, ErrorType.SYSTEM, "000", "未知异常"), + + /** + * 请求参数非法 + */ + ILLEGAL_PARAMS(ErrorLevel.ERROR, ErrorType.BIZ, "001", "参数错误"), + + + /** + * 并发操作 + */ + OPERATION_CONCURRENT_EXCP(ErrorLevel.ERROR, ErrorType.BIZ, "003", "并发处理异常"), + + /** + * 系统暂时不支持 + */ + SYSTEM_NOT_SUPPORT(ErrorLevel.ERROR, ErrorType.SYSTEM, "004", "系统暂时不支持"), + + /** + * 机构服务器异常 + */ + MERCHANT_SERVER_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "801", "机构服务器错误"), + + /** + * 产品服务器异常 + */ + PROD_FACTORY_SERVER_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "802", "产品服务器错误"), + + /** + * 机构网关服务器异常 + */ + GATEWAY_SERVER_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "804", "机构网关服务器错误"), + + /** + * 业务幂等 + **/ + IDEMPOTENT_REQUEST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "995", "业务幂等"), + + /** + * 非法请求 + **/ + ILLEGAL_REQUEST(ErrorLevel.ERROR, ErrorType.BIZ, "996", "非法请求"), + + /** + * 服务熔断不可用 + */ + SERVICE_FUSING_NOT_AVAILABLE(ErrorLevel.WARN, ErrorType.SYSTEM, "997", "服务熔断不可用"), + + /** + * 系统限流 + */ + SLA_LIMIT_ERROR(ErrorLevel.WARN, ErrorType.SYSTEM, "998", "SLA限流异常"), + + /** + * 系统内部错误 + */ + INTERNAL_SERVER_ERROR(ErrorLevel.ERROR, ErrorType.SYSTEM, "999", "系统开小差了"), + + /*------------------------------------------------------------------------*/ + /* 对接第三方支付平台[1000开头] */ + /*------------------------------------------------------------------------*/ + /** + * 支付单不存在 + */ + PAY_ORDER_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "1001", "支付单不存在"), + + /** + * 支付单状态非法 + */ + INVALID_PAY_ORDER_STATUS(ErrorLevel.ERROR, ErrorType.BIZ, "1002", "支付单状态非法"), + + /** + * 更新支付单状态失败 + **/ + UPDATE_PAY_ORDER_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "1003", "更新支付单失败"), + + /** + * 预支付异常 + **/ + PREPARE_PAY_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1004", "拉起收银台失败"), + + /** + * 支付单已经超时 + */ + PAY_ORDER_TIMEOUT(ErrorLevel.ERROR, ErrorType.BIZ, "1005", "支付单超时"), + + /** + * 出现多笔未支付的支付单 + */ + DUPLICATED_UNPAID_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1006", "出现多笔未支付的支付单"), + + /** + * 查询支付结果错误 + */ + QUERY_PAY_RESULT_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1007", "查询支付结果错误"), + + /** + * 退款失败 + */ + REFUND_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1008", "退款失败"), + + /** + * 关闭支付平台的订单失败 + */ + CLOSE_PAYMENT_PLATFORM_ORDER_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1009", "关闭支付平台的订单失败"), + + /** + * 异步回调验签失败 + */ + SIGN_VERIFIED_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1010", "异步回调验签失败"), + + /** + * 处理支付回调失败 + */ + PROCESS_PLATFORM_CALLBACK_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1011", "处理支付成功回调失败"), + + /** + * 处理退款回调失败 + */ + PROCESS_PLATFORM_REFUND_CALLBACK_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1011", "处理退款成功回调失败"), + + FOUND_DUPLICATED_PAID(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1012", "发现重复支付"), + + FOUND_INVALID_PAID_ORDER(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1013", "发现当前阶段不应该出现的支付单"), + + /** + * 生成全局唯一的业务号失败 + */ + GENERATE_GLOBAL_SEQUENCE_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1014", "生成全局唯一的业务号失败"), + + BUILD_WECHAT_REQUEST_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1015", "构建微信请求参数失败"), + + WECHAT_PREPARE_PAY_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1016", "拉起微信收银台失败"), + + VERIFY_SIGNATURE_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1017", "验证签名失败,签名不合法"), + + NOT_FOUND_IN_PROCESS_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1018", "不存在支付中状态的支付单"), + + NOT_SUPPORT_PAY_SCENE(ErrorLevel.ERROR, ErrorType.BIZ, "1019", "不支持的支付场景"), + + REFUND_AMOUNT_GREATER_THAN_PAY_AMOUNT(ErrorLevel.ERROR, ErrorType.BIZ, "1020", "退款金额大于支付金额"), + + REFUND_AMOUNT_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "1021", "支付平台实际退款金额错误,与传入的退款金额不相等"), + + QUERY_REFUND_RESULT_ERROR(ErrorLevel.ERROR, ErrorType.THIRD_PARTY, "1022", "查询退款结果失败"), + + DUPLICATED_PAID_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1023", "同一笔订单出现两笔已支付的支付单"), + + DUPLICATED_REFUND_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1024", "同一笔订单出现两笔已退款的支付单"), + + NOT_FOUND_IN_PROCESS_REFUND_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1025", "不存在退款中中状态的支付单"), + + DUPLICATED_REFUNDING_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1026", "出现多笔退款中的支付单"), + + NOT_FOUND_REFUND_APPLY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1027", "退票申请单不存在"), + + NOT_FOUND_PAID_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1028", "已支付的支付单不存在,无法进行退款"), + + PAY_TYPE_NOT_EXIST(ErrorLevel.ERROR, ErrorType.BIZ, "1029", "支付方式不存在"), + + PAY_SCENE_NOT_EXIST(ErrorLevel.ERROR, ErrorType.BIZ, "1030", "支付场景不存在"), + + ORG_NOT_FOUND_PAY_CONFIG(ErrorLevel.ERROR, ErrorType.BIZ, "1031", "当前线路对应的组织未配置收款账户"), + + NOT_FOUND_ALIPAY_CLIENT(ErrorLevel.ERROR, ErrorType.BIZ, "1032", "支付宝收款账户不存在"), + + NOT_FOUND_WECHAT_CLIENT(ErrorLevel.ERROR, ErrorType.BIZ, "1033", "微信收款账户不存在"), + + DUPLICATED_REFUND_APPLY_ORDER_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1034", "同一个退票申请单号对应多笔退票申请单"), + + INVALID_REFUND_APPLY_ORDER_STATUS_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "1035", "退票申请单状态非法"), + + WECHAT_PAY_SUCCESS_PASS_BACK_EMPTY(ErrorLevel.ERROR, ErrorType.BIZ, "1036", "微信支付成功回调回传参数为空"), + + DUPLICATE_PAY_REQUEST(ErrorLevel.ERROR, ErrorType.BIZ, "1037", "当前订单已经支付,请勿重复支付"), + + ORG_DETAIL_QUERY_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "1038", "暂未查询到对应的组织信息"), + + ALIPAY_MINI_PROGRAM_CONFIG_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "1039", "支付宝小程序支付配置不存在"), + + WECHAT_MINI_PROGRAM_CONFIG_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "1040", "微信小程序支付配置不存在"), + + + /*------------------------------------------------------------------------*/ + /* 支付单[2000开头] */ + /*------------------------------------------------------------------------*/ + /** + * 保存支付单错误 + */ + SAVE_PAY_ORDER_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2001", "保存支付单错误"), + + SCHEDULED_TASKS_PROCESS_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2003", "定时任务执行失败"), + + SCHEDULED_TASKS_CLOSE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2004", "批量关闭定时任务失败"), + + TASK_NOT_SUPPORT_PAY_ORDER_STATUS(ErrorLevel.ERROR, ErrorType.BIZ, "2006", "定时任务不支持的支付单的状态"), + + INSERT_TASK_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2005", "插入定时任务表失败"), + + UPDATE_TASK_STATUS_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2007", "更新定时任务状态失败"), + + ILLEGAL_SCHEDULE_TASK_TYPE(ErrorLevel.ERROR, ErrorType.BIZ, "2008", "非法的定时任务类型"), + + NOT_AVAILABLE_EXPIRE_VOUCHER_STATUS(ErrorLevel.ERROR, ErrorType.BIZ, "2009", "凭证状态非法,当前状态不能设置为过期"), + + CLOSE_PAY_ORDER_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2010", "关闭支付单失败"), + + FOUND_DUPLICATE_REFUNDING_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "2011", "发现多笔退款中的支付单"), + + ERROR_REFUND_AMOUNT(ErrorLevel.ERROR, ErrorType.BIZ, "2012", "支付平台退款金额错误"), + + BIZ_TYPE_IS_EMPTY(ErrorLevel.ERROR, ErrorType.BIZ, "2013", "业务类型不存在"), + + UPDATE_BILL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2014", "更新账单为已支付失败"), + + FOUND_USER_ONLINE_PAID_PAY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "2015", "用户支付单已经在线上支付,无法继续操作"), + + IDEMPOTENT_OFFLINE_PAID_REQUEST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "2016", "当前订单已经确认线下支付,请勿重复确认"), + + /*------------------------------------------------------------------------*/ + /* 订单[3000开头] */ + /*------------------------------------------------------------------------*/ + ORDER_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "3001", "订单不存在"), + + ORDER_STATUS_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3002", "订单状态异常"), + + SUB_ORDER_CAN_NOT_MODIFY(ErrorLevel.ERROR, ErrorType.BIZ, "3003", "子订单不可修改"), + + ORDER_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3004", "订单创建失败"), + + ORDER_MODIFY_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3004", "订单修改失败"), + + ORDER_CHANGE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3004", "订单改签失败"), + + ORDER_STATUS_CHANGE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3005", "订单状态修改失败"), + + ORDER_CLOSE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3006", "订单关闭失败"), + + ORDER_CANCEL_CHARTER_BUS_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3006", "订单关闭失败"), + + ORDER_PAY_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3007", "订单支付失败"), + + + ORDER_SUBMIT_REPEAT_APPROVAL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3008", "审核提交失败,当前存在审核中的订单"), + + ORDER_SUBMIT_APPROVAL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3009", "审核提交失败,当前存在审核中的订单"), + + ORDER_APPROVAL_ORDER_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3010", "当前审核单不存在"), + + ORDER_APPROVAL_ORDER_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3010", "当前审核单不存在"), + ORDER_APPROVAL_ORDER_STATUS_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3010", "当前审核单状态已改变"), + + ROUTE_COLLECTION_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3011", "线路收集异常"), + + PASSENGER_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3012", "乘客信息已存在"), + + PASSENGER_SAVE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3013", "乘客信息创建失败"), + + PASSENGER_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3014", "乘客信息不存在"), + + PASSENGER_MODIFY_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3015", "乘客信息修改失败"), + + PASSENGER_DELETE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3016", "乘客信息修改失败"), + + PASSENGER_VALID_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3017", "乘客实名认证失败"), + + CHARGE_RECORD_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3018", "费用信息不存在"), + + TRAVEL_TRIP_NO_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3019", "订单对应的行程单信息不存在"), + + ORDER_SAVE_INVOICE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3020", "上传发票失败"), + + INVOICE_EXIST(ErrorLevel.ERROR, ErrorType.BIZ, "3021", "您选择上传发票的订单中存在发票,请检查订单并重新选择"), + + INVOICE_NO_EXIST(ErrorLevel.ERROR, ErrorType.BIZ, "3022", "此发票号码已上传,请确认发票号"), + + ORDER_NOT_END_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3023", "订单未结束,无法进行此操作"), + + ORDER_CANCELED_CAN_NOT_OPERATION_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3024", "订单已取消,无法进行此操作"), + + ORDER_DEPOSIT_ORDER_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3025", "订金订单创建失败"), + + ORDER_TYPE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "3026", "订单类型异常"), + + + /*------------------------------------------------------------------------*/ + /* 凭证[4000开头] */ + /*------------------------------------------------------------------------*/ + NOT_FOUND_VOUCHER(ErrorLevel.ERROR, ErrorType.BIZ, "4001", "凭证不存在"), + + VOUCHER_STATUS_NOT_ALLOW_CHECK(ErrorLevel.ERROR, ErrorType.BIZ, "4002", "验票失败,该乘客的乘车次数已经用完,无法上车"), + + VOUCHER_REDEMPTION_COUNT_NOT_MATCH(ErrorLevel.ERROR, ErrorType.BIZ, "4003", "检票记录核销成功次数与凭证已核销次数不匹配"), + + VOUCHER_CHECK_TIME_NOT_ALLOW_CHECK(ErrorLevel.ERROR, ErrorType.BIZ, "4004", "不在核销时间范围内,该乘客不符合上车条件"), + + DUPLICATED_REFUNDING_APPLY_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "4005", "存在在途的退票申请单,不能继续申请"), + + REFUND_TICKET_COUNT_INVALID(ErrorLevel.ERROR, ErrorType.BIZ, "4006", "退票数量非法"), + + BATCH_UPDATE_VOUCHER_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "4007", "批量更新凭证失败"), + + REFRESH_VOUCHER_QR_CODE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "4008", "刷新凭证二维码失败"), + + VOUCHER_CHECK_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "4009", "凭证检票失败"), + + VOUCHER_RULE_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "4010", "凭证规则不存在"), + + NOT_FOUND_REFUND_AVAILABLE_VOUCHER(ErrorLevel.ERROR, ErrorType.BIZ, "4011", "不存在可退的凭证"), + + REACH_MAX_CHECK_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "4012", "已经达到当日最大检票次数,不可继续检票"), + + VOUCHER_CHECK_TIME_RULE_EXECUTE_FILED(ErrorLevel.ERROR, ErrorType.BIZ, "4013", "不在核销时间范围内,该乘客不符合上车条件"), + + VOUCHER_CHECK_COUNT_RULE_EXECUTE_FILED(ErrorLevel.ERROR, ErrorType.BIZ, "4014", "凭证检票次数限制规则校验不通过"), + + OVER_TODAY_MAX_AVAILABLE_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "4015", "已达今日最大乘车次数,无法上车"), + + OVER_TOTAL_MAX_AVAILABLE_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "4016", "已达最大乘车次数,无法继续乘车"), + + EXIST_CHECK_RECORD_NOT_ALLOW_REFUND(ErrorLevel.ERROR, ErrorType.BIZ, "4017", "您已有乘车记录,无法申请退票"), + + VOUCHER_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "4018", "乘车凭证不存在"), + + CREATE_VOUCHER_IDEMPOTENT(ErrorLevel.ERROR, ErrorType.BIZ, "4019", "重复创建凭证幂等"), + + INVALID_VOUCHER_STATUS(ErrorLevel.ERROR, ErrorType.BIZ, "4020", "改签订单凭证状态非法,不支持失效"), + + INVALID_VOUCHER_REFUND_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "4021", "改签订单凭证数量非法"), + + /*------------------------------------------------------------------------*/ + /* 退票[5000开头] */ + /*------------------------------------------------------------------------*/ + CALCULATE_REFUND_AMOUNT_NOT_FOUND_PAID_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "5001", "不存在已支付的支付单,无法进行退票"), + + CALCULATE_REFUND_AMOUNT_DUPLICATE_PAID_ORDER(ErrorLevel.ERROR, ErrorType.BIZ, "5002", "存在重复支付的支付单,数据错误,无法进行退票"), + + CALCULATE_REFUND_AMOUNT_NOT_FOUND_VOUCHER(ErrorLevel.ERROR, ErrorType.BIZ, "5003", "不存在可退的凭证"), + + OVER_MAX_REFUND_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "5004", "该用户在当月/当天内已超过最高退款次数,不可退款"), + + EXIST_VERIFY_RECORD(ErrorLevel.ERROR, ErrorType.BIZ, "5005", "该订单已有乘车记录,不可退票"), + + INVALID_REFUND_TIME(ErrorLevel.ERROR, ErrorType.BIZ, "5006", "当前时间不支持退票"), + + INVALID_ORDER_STATUS(ErrorLevel.ERROR, ErrorType.BIZ, "5007", "该订单状态不支持退款"), + + INVALID_APPLY_REFUND_AMOUNT(ErrorLevel.ERROR, ErrorType.BIZ, "5008", "退款金额不能大于订单实付金额"), + + INVALID_REFUND_AMOUNT_ZERO(ErrorLevel.ERROR, ErrorType.BIZ, "5009", "申请退款金额不能是0"), + + REFUND_TICKET_HAS_VERIFICATION_RECORD(ErrorLevel.ERROR, ErrorType.BIZ, "5010", "该订单已有乘车记录,无法进行退票"), + + UPDATE_REFUND_APPLY_ORDER_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "5011", "更新退票申请单失败"), + + NOT_FOUND_VALID_VOUCHER(ErrorLevel.ERROR, ErrorType.BIZ, "5012", "当前订单所有凭证都已失效,无法退票"), + + NOT_CORRECT_REFUND_AMOUNT(ErrorLevel.ERROR, ErrorType.BIZ, "5013", "传入的退款金额不正确"), + + ORDER_NOT_BELONG_TO_CUR_USER(ErrorLevel.ERROR, ErrorType.BIZ, "5014", "该订单不属于该登录用户"), + + REFUND_PASSENGER_COUNT_INVALID(ErrorLevel.ERROR, ErrorType.BIZ, "5015", "退款人数不能超过下单购买的人数"), + + OVER_REFUND_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "5016", "该订单已超过最高退款次数,不可退款"), + + REFUND_AMOUNT_INVALID(ErrorLevel.ERROR, ErrorType.BIZ, "5017", "退款金额非法"), + + NOT_SUPPORT_GO_BACK_TICK(ErrorLevel.ERROR, ErrorType.SYSTEM, "5018", "不支持购买往返票"), + + OVER_MAX_REFUND_PASSENGER_COUNT(ErrorLevel.ERROR, ErrorType.BIZ, "5019", "超过最大的退票人数"), + + /*------------------------------------------------------------------------*/ + /* 线路[6000开头] */ + /*------------------------------------------------------------------------*/ + ROUTE_SHUTTLE_QUERY_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "6001", "未查询到具体班次信息"), + + + /*------------------------------------------------------------------------*/ + /* 产品[7000开头] */ + /*------------------------------------------------------------------------*/ + PRODUCT_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "7001", "产品不存在"), + + PRODUCT_BIZ_RULE_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "7002", "产品规则不存在"), + + REFUND_CHARGE_AMOUNT_INVALID(ErrorLevel.ERROR, ErrorType.BIZ, "7003", "退票手续费金额非法"), + + NOT_FOUND_BACK_CATEGORY(ErrorLevel.ERROR, ErrorType.BIZ, "7004", "后台类目不存在"), + + EXTEND_ATTRIBUTES_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "7005", "产品继承属性不存在"), + + /*------------------------------------------------------------------------*/ + /* 业务后台配置中心[8000开头] */ + /*------------------------------------------------------------------------*/ + INVALID_CONFIG_TYPE(ErrorLevel.ERROR, ErrorType.BIZ, "80001", "不支持的配置类型"), + + CONFIG_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "80002", "配置不存在"), + + /*------------------------------------------------------------------------*/ + /* 短信服务[9000开头] */ + /*------------------------------------------------------------------------*/ + SMS_SEND_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "90001", "短信发送失败"), + + + /*------------------------------------------------------------------------*/ + /* 审核单[10000开头] */ + /*------------------------------------------------------------------------*/ + + SUBMIT_REPEAT_APPROVAL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "100001", "审核提交失败,当前存在审核中的订单"), + + SUBMIT_APPROVAL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "100002", "审核提交失败,当前存在审核中的订单"), + + + APPROVAL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "100003", "当前审核单不存在"), + + APPROVAL_BIZ_NOT_EXIST_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "100004", "当前审核单不存在"), + + /*------------------------------------------------------------------------*/ + /* 订单变更申请单[11000开头] */ + /*------------------------------------------------------------------------*/ + + ORDER_CHANGE_APPLY_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "110001", "订单变更申请单创建失败"), + + ORDER_CHANGE_APPLY_APPROVED_UPDATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "110001", "订单变更申请单审核提交失败"), + + ORDER_CANCEL_APPLY_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "110002", "订单取消申请单创建失败"), + ORDER_CHANGE_APPLY_STATUS_PUSH_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "110003", "订单变更申请状态推进失败"), + + AUDIT_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "110004", "审核单创建失败"), + + + + /*------------------------------------------------------------------------*/ + /* 订单派单申请单[12000开头] */ + /*------------------------------------------------------------------------*/ + + ORDER_DISPATCH_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "120001", "订单派单创建失败"), + ORDER_DISPATCH_DETAIL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "120002", "订单派单详情查询失败"), + + ORDER_DISPATCH_STATUS_UPDATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "120003", "订单派单状态更新失败"), + + ORDER_DISPATCH_FLEET_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "120004", "订单指派车队创建失败"), + + + ORDER_DISPATCH_CALLBACK_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "120005", "订单派单召回失败"), + + + ORDER_DISPATCH_GIVEBACK_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "120006", "订单派单退回失败"), + + + /*------------------------------------------------------------------------*/ + /* 订单接单申请单[13000开头] */ + /*------------------------------------------------------------------------*/ + + ORDER_RECEIVED_CREATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "130001", "订单接单创建失败"), + + ORDER_RECEIVED_DETAIL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "130002", "订单接单详情查询失败"), + ORDER_RECEIVED_STATUS_UPDATE_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "130003", "订单接单状态更新失败"), + + /*------------------------------------------------------------------------*/ + /* 行程单派单[14000开头] */ + /*------------------------------------------------------------------------*/ + ORDER_TRAVEL_TRIP_CREATE_DISPATCH_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "140001", "行程单派单存储失败"), + + + /*------------------------------------------------------------------------*/ + /* 拼车业务[15000开头] */ + /*------------------------------------------------------------------------*/ + + CARPOOL_RECORD_NOT_FOUND(ErrorLevel.ERROR, ErrorType.BIZ, "150001", "拼车记录不存在"), + + CARPOOL_CHECK_CALLBACK_PROCESS_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "150002", "拼车核销回调处理失败"), + + CARPOOL_SALE_UNIT_QUERY_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "150003", "开线信息查询异常"), + CANCEL_CAR_POOL_FINISH_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "150004", "拼车结束状态流转失败"), + SUCCESS_CAR_POOL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "150006", "拼车成功状态流转失败"), + NOT_EXIST_CAR_POOL_ERROR(ErrorLevel.ERROR, ErrorType.BIZ, "150006", "拼车开线记录不存在"), + + + CAR_POOL_END_TIME_CHANGED(ErrorLevel.ERROR, ErrorType.BIZ, "150005", "拼车结束时间被修改"), + PUSH_GUO_LANG_FAIL(ErrorLevel.ERROR, ErrorType.BIZ, "150007", "推送国朗消息失败"), + ; + /** + * 系统编码 + */ + public static final String TP_TRADE_CORE_CODE = "001"; + + /** + * 错误级别 + */ + private ErrorLevel errorLevel; + + /** + * 错误类型 + */ + private ErrorType errorType; + + /** + * 错误编码 + */ + private String code; + + /** + * 错误描述 + */ + private String desc; + + /** + * 构造方法 + * + * @param errorLevel + * @param errorType + * @param code + * @param desc + */ + TpTradeCoreErrorCode(ErrorLevel errorLevel, ErrorType errorType, String code, String desc) { + this.errorLevel = errorLevel; + this.errorType = errorType; + this.code = code; + this.desc = desc; + } + + public ErrorLevel getErrorLevel() { + return errorLevel; + } + + public ErrorType getErrorType() { + return errorType; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/exception/TpTradeCoreException.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/exception/TpTradeCoreException.java new file mode 100644 index 0000000..4ce9df4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/exception/TpTradeCoreException.java @@ -0,0 +1,137 @@ +/* + * Alipay.com Inc. + * Copyright (c) 2004-2005 All Rights Reserved. + */ +package com.deepinnet.tptradecore.common.exception; + + +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * 投保核心异常基类。 + * + * @author taobinxian + * @version 2022-11-08 + */ +@Data +public class TpTradeCoreException extends RuntimeException { + + /** + * 错误码 + */ + protected TpTradeCoreErrorCode errorCode; + + /** + * 错误时相关参数 + */ + protected Map parameters; + + /** + * 异常信息 + */ + protected String message; + + /** + * 异常构造函数。 + * + * @param errorCode 内部错误码 + */ + public TpTradeCoreException(TpTradeCoreErrorCode errorCode) { + this(errorCode, null, null, null); + } + + /** + * 异常构造函数。 + * + * @param errorCode 内部错误码 + * @param cause 错误原因 + */ + public TpTradeCoreException(TpTradeCoreErrorCode errorCode, Throwable cause) { + this(errorCode, null, null, cause); + } + + /** + * 异常构造函数。 + * + *

内部异常时使用 + * + * @param errorCode 内部错误码 + * @param message 异常信息 + */ + public TpTradeCoreException(TpTradeCoreErrorCode errorCode, String message) { + this(errorCode, message, null, null); + } + + + /** + * 异常构造函数。 + * + *

内部异常时使用 + * + * @param errorCode 内部错误码 + * @param message 异常信息 + * @param parameters 错误时相关参数 + */ + public TpTradeCoreException(TpTradeCoreErrorCode errorCode, String message, Map parameters) { + this(errorCode, message, parameters, null); + } + + /** + * 异常构造函数。 + * + * @param errorCode 内部错误码 + * @param message 异常信息 + * @param cause + */ + public TpTradeCoreException(TpTradeCoreErrorCode errorCode, String message, Throwable cause) { + this(errorCode, message, null, cause); + } + + /** + * 异常构造函数。 + * + *

内部异常时使用 + * + * @param errorCode + * @param message + * @param parameters + * @param cause + */ + public TpTradeCoreException(TpTradeCoreErrorCode errorCode, String message, Map parameters, Throwable cause) { + super(message, cause); + this.errorCode = errorCode; + this.message = message; + this.parameters = parameters; + } + + /** + * @see Throwable#getMessage() + */ + @Override + public String getMessage() { + if (StringUtils.isNotBlank(message)) { + return message; + } + return errorCode.getDesc(); + } + + /** + * 增加扩展信息 + * + * @param key + * @param value + * @return 自身 + */ + public TpTradeCoreException addExtInfo(String key, String value) { + if (parameters == null) { + parameters = new HashMap(); + } + parameters.put(key, value); + + return this; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/audit/TpAuditFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/audit/TpAuditFacade.java new file mode 100644 index 0000000..1eb0d71 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/audit/TpAuditFacade.java @@ -0,0 +1,70 @@ +package com.deepinnet.tptradecore.common.service.facade.audit; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.audit.*; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditOrderListVO; +import com.deepinnet.tptradecore.common.vo.audit.TpAuditVO; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author xiehuaqiao + * @create 2023/11/15 14:32 + * @Description 审核请求接口 + */ +public interface TpAuditFacade { + + + /** + * 查询审核单详情 + * + * @return + */ + TpResult getAuditDetail(@NotNull(message = "入参不能为空") TpAuditQueryDetailDTO tpAuditQueryDetailDTO); + + + /** + * 获取指定业务单据的最近一个审核单详情信息 + * + * @return + */ + TpResult getLatestAuditDetail(@NotNull(message = "入参不能为空") TpAuditLatestDetailDTO auditLatestDetailDTO); + + + /** + * 查询审核单详情 + * + * @return + */ + TpResult> listAudits(@NotNull(message = "入参不能为空") TpAuditListQueryDTO tpAuditListQueryDTO); + + + + /** + * 创建审核单 + * + * @return + */ + TpResult createAudit(@NotNull(message = "入参不能为空") TpAuditCreatedDTO tpAuditCreatedDTO); + + + /** + * 审核单-审核确认接口 + * + * @param confirmAuditDTO + * @return + */ + TpResult confirmAudit(@NotNull(message = "入参不能为空") TpAuditApprovedSubmitDTO confirmAuditDTO); + + /** + * 审核单列表查询 + * @param dto 查询参数 + * @return 列表数据 + */ + TpResult> pageOrderAuditList(TpOrderAuditPagedQueryDTO dto); + + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/contract/TpContractFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/contract/TpContractFacade.java new file mode 100644 index 0000000..1d18413 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/contract/TpContractFacade.java @@ -0,0 +1,66 @@ +package com.deepinnet.tptradecore.common.service.facade.contract; + + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import com.deepinnet.tptradecore.common.vo.contract.*; + +import javax.validation.constraints.*; +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/7 14:33 履约域服务 + */ +public interface TpContractFacade { + + /** + * 查询可退的凭证列表 + * + * @param availableVoucherDTO + * @return + */ + TpResult> queryAvailableRefundVoucherList(@NotNull(message = "入参不能为空") TpQueryAvailableRefundVoucherDTO availableVoucherDTO); + + + /** + * 申请退票 + * + * @param refundApplyDTO 入参 + * @return 是否成功 + */ + TpResult refundTicket(@NotNull(message = "请求参数不能为空") TpRefundApplyDTO refundApplyDTO); + + /** + * 退票成功接口 + * + * @param refundTicketSuccessDTO + * @return + */ + TpResult refundTicketSuccess(@NotNull(message = "请求参数不能为空") TpRefundTicketSuccessDTO refundTicketSuccessDTO); + + /** + * 分页查询退票申请单列表(搜索) + * + * @return 退票申请单 + */ + TpResult> pageQueryApplyRefundOrders(@NotNull(message = "请求参数不能为空") TpPageQueryRefundApplyOrderDTO queryDTO); + + + /** + * 查询退票申请单列表 + * + * @return 退票申请单 + */ + TpResult> getRefundApplyOrderList(@NotBlank(message = "请求参数不能为空") TpQueryRefundApplyOrderDTO queryDTO); + + /** + * 查询退票详情 + * + * @param queryDTO 查询条件 + * @return + */ + TpResult getRefundDetail(@NotNull(message = "请求参数不能为空") TpQueryRefundDetailDTO queryDTO); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedApplyFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedApplyFacade.java new file mode 100644 index 0000000..d926dd7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedApplyFacade.java @@ -0,0 +1,99 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeApplyVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeItemVO; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * + * @author xiehuaqiao + * @create 2023/11/15 17:34 + * @Description + * + */ +public interface TpOrderChangedApplyFacade { + + /** + * 查询指定订单变更申请单详情 + * + * @param orderChangeApplyQueryDTO + * @return + */ + TpResult getOrderChangedApplyDetail(@NotNull(message = "入参不能为空") TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO); + + + /** + * 查询指定订单的所有记录 + * + * @param tpOrderChangeApplyListDTO + * @return + */ + TpResult> listOrderChangeApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyListDTO tpOrderChangeApplyListDTO); + + + + /** + * 查询指定订单的所有记录 + * + * @param tpOrderChangeApplyListDTO + * @return + */ + TpResult> batchQueryOrderChangeApplyByOrderNos(@NotNull(message = "入参不能为空") TpOrderChangeApplyBatchListDTO tpOrderChangeApplyListDTO); + + /** + * 查询指定订单的最近一条申请单详情 + * + * @param tpOrderChangeApplyLatestDetailDTO + * @return + */ + TpResult getLatestOrderChangedApplyDetail(@NotNull(message = "入参不能为空") TpOrderChangeApplyLatestDetailDTO tpOrderChangeApplyLatestDetailDTO); + + + /** + * 查询指定申请单对应的变更项信息 + * + * @param orderChangeApplyQueryDTO + * @return + */ + TpResult> listOrderChangedItems(@NotNull(message = "入参不能为空") TpOrderChangeItemListDTO orderChangeApplyQueryDTO); + + + /** + * 创建订单变更申请单:申请订单变更 + * + * @param orderChangeApplyCreatedDTO + * @return + */ + TpResult createOrderChangeApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO); + + /** + * 推进订单变更申请单状态变化 + * + * @param statusUpdateDTO + * @return + */ + TpResult pushOrderChangedApplyStatus(@NotNull(message = "入参不能为空") TpOrderChangeApplyStatusUpdateDTO statusUpdateDTO); + + + + /** + * 提交申请单审核结果 + * @param approvedSubmitDTO + * @return + */ + TpResult submitApprovedApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyApprovedSubmitDTO approvedSubmitDTO); + + + /** + * 提交服务费减免申请 + * @param rfscApplyDTO + * @return + */ + TpResult submitReduceFscApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyRscApplyDTO rfscApplyDTO); + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedFacade.java new file mode 100644 index 0000000..22ff085 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderChangedFacade.java @@ -0,0 +1,81 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeApplyVO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderChangeItemVO; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 已废弃:可以更换新服务 TpOrderChangedApplyFacade + * @author xiehuaqiao + * @create 2023/11/15 17:34 + * @Description + */ +@Deprecated +public interface TpOrderChangedFacade { + + /** + * 查询指定订单变更申请单详情 + * + * @param orderChangeApplyQueryDTO + * @return + */ + TpResult getOrderChangedApplyDetail(@NotNull(message = "入参不能为空") TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO); + + + /** + * 查询指定订单的所有记录 + * + * @param tpOrderChangeApplyListDTO + * @return + */ + TpResult> listOrderChangeApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyListDTO tpOrderChangeApplyListDTO); + + + + /** + * 查询指定订单的所有记录 + * + * @param tpOrderChangeApplyListDTO + * @return + */ + TpResult> batchQueryOrderChangeApplyByOrderNos(@NotNull(message = "入参不能为空") TpOrderChangeApplyBatchListDTO tpOrderChangeApplyListDTO); + + /** + * 查询指定订单的最近一条申请单详情 + * + * @param tpOrderChangeApplyLatestDetailDTO + * @return + */ + TpResult getLatestOrderChangedApplyDetail(@NotNull(message = "入参不能为空") TpOrderChangeApplyLatestDetailDTO tpOrderChangeApplyLatestDetailDTO); + + + /** + * 查询指定申请单对应的变更项信息 + * + * @param orderChangeApplyQueryDTO + * @return + */ + TpResult> listOrderChangedItems(@NotNull(message = "入参不能为空") TpOrderChangeItemListDTO orderChangeApplyQueryDTO); + + + /** + * 创建订单变更申请单:申请订单变更 + * + * @param orderChangeApplyCreatedDTO + * @return + */ + TpResult createOrderChangeApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO); + + /** + * 推进订单变更申请单状态变化 + * + * @param statusUpdateDTO + * @return + */ + TpResult pushOrderChangedApplyStatus(@NotNull(message = "入参不能为空") TpOrderChangeApplyStatusUpdateDTO statusUpdateDTO); + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderDispatchFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderDispatchFacade.java new file mode 100644 index 0000000..a46ecf4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderDispatchFacade.java @@ -0,0 +1,78 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author xiehuaqiao + * @create 2023/11/15 17:34 + * @Description + */ +public interface TpOrderDispatchFacade { + + /** + * 订单派单-分配承运公司 + * + * @param dispatchCreatedDTO + * @return + */ + TpResult dispatchOrder(TpOrderDispatchCreatedDTO dispatchCreatedDTO); + + + /** + * 派单召回 + * + * @param callBackDTO 派单召回实体 + * @return 召回结果 + */ + TpResult callBackOrder(TpOrderDispatchCallBackDTO callBackDTO); + + /** + * 派单退回 + * + * @param giveBackDTO 派单退回实体 + * @return 退回结果 + */ + TpResult giveBackOrder(TpOrderDispatchGiveBackDTO giveBackDTO); + + + /** + * 查询指定订单派单详情 + * + * @param orderDispatchDetailDTO + * @return + */ + TpResult getOrderDispatchDetail(@NotNull(message = "入参不能为空") TpOrderDispatchDetailDTO orderDispatchDetailDTO); + + + /** + * 查询派单列表详情 + * + * @param dto 查询参数 + * @return 订单列表 + */ + TpResult> listOrderDispatchDetail(@NotNull(message = "入参不能为空") TpOrderDispatchListDTO dto); + + + /** + * 分配车队 + * @param convert2DTO + * @return + */ + TpResult dispatchFleet(TpOrderDispatchFleetCreatedDTO convert2DTO); + + + /** + * 推进派单状态变化 + * + * @param statusUpdateDTO + * @return + */ + TpResult pushDispatchStatus(@NotNull(message = "入参不能为空") TpOrderDispatchStatusUpdateDTO statusUpdateDTO); + +} + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderFacade.java new file mode 100644 index 0000000..596d373 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderFacade.java @@ -0,0 +1,286 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.vo.order.*; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 订单facade + *

+ * + * @author chenjiaju + * @since 2023/8/18 + */ + +@Validated +public interface TpOrderFacade { + + /** + * 查询线路或班次下是否存在未核销订单 + * + * @param dto 查询参数 + * @return 存在未核销订单 true | 不存在未核销订单 false + */ + TpResult queryHasUnverifiedOrder(@NotNull(message = "请求对象不能为空") TpOrderUnverifiedQueryDTO dto); + + /** + * 分页查询订单列表 + * + * @param dto 查询条件 + * @return 列表数据 + */ + TpResult> orderList(TpOrderListQueryDTO dto); + + /** + * 订单详情查询 + * + * @param dto 查询参数 + * @return 订单详情 + */ + TpResult getOrderDetail(TpOrderQueryDTO dto); + + /** + * 创建订单 + * + * @param dto 下单参数 + * @return 创建订单结果VO + */ + TpResult createOrder(TpOrderCreateDTO dto); + + /** + * 定制公交改签 & 改签记录 + * @param dto 订单参数 + * @return 创建订单结果VO + */ + TpResult rescheduleOrder(TpOrderRescheduleDTO dto); + + /** + * 改签订单 + * + * @param dto 改签订单参数 + * @return 订单改签结果VO + */ + TpResult endorseOrder(TpOrderCreateDTO dto); + + /** + * 预支付 + * + * @param dto 预支付参数 + * @return 收银台相关参数 + */ + TpResult payOrder(TpOrderPayDTO dto); + + /** + * 申请退票页面元素获取 + * + * @param queryRefundDetailDTO + * @return + */ + TpResult queryRefundDetailVO(TpOrderQueryRefundDetailDTO queryRefundDetailDTO); + + /** + * 已支付推进订单状态 + * + * @param dto 订单参数 + * @return 订单推进支付状态返回参数 + */ + TpResult paid(TpOrderPaidDTO dto); + + /** + * 推进订单状态 + * + * @param dto 入参 + * @return 是否推进完成 + */ + TpResult pushOrderStatus(TpOrderPushStatusDTO dto); + + /** + * 查询某个时间段的某个人购买了多少张票 + * + * @param dto 入参 + * @return 购买车票张数 + */ + TpResult queryUserTickets(TpUserTicketsQueryDTO dto); + + /** + * 创建订金单 + * + * @param dto 入参 + * @return 是否创建成功 + */ + TpResult createDepositOrder(TpDepositOrderDTO dto); + + /** + * 创建尾款单 + * + * @param dto 入参 + * @return 是否创建成功 + */ + TpResult createBalanceOrder(TpBalanceOrderDTO dto); + + /** + * 更新价格记录 + * + * @param dto 入参 + * @return 是否更新成功 + */ + TpResult updateChargeRecord(TpOrderChargeRecordDTO dto); + + /** + * 存储价格记录 + * + * @param dto 入参 + * @return 是否更新成功 + */ + TpResult saveChargeRecord(TpOrderChargeRecordDTO dto); + + /** + * 改价接口 + * + * @param dto 入参 + */ + TpResult changePriceAndPayMode(TpOrderChangePriceDTO dto); + + /** + * 删除订单手续费 + * + * @param dto 入参 + * @return 是否更新成功 + */ + TpResult removeChargeRecord(TpOrderChargeRecordDTO dto); + + /** + * 更新当前订单为不可见 + */ + TpResult updateOrderNotVisible(TpOrderUpdateDTO dto); + + /** + * C端分页查询包车订单列表 + * + * @param dto 查询条件 + * @return 列表数据 + */ + TpResult> charterBusOrderListToC(TpOrderListQueryDTO dto); + + /** + * B端分页查询包车订单列表 + * + * @param dto 查询条件 + * @return 列表数据 + */ + TpResult> charterBusOrderListToB(TpOrderListQueryDTO dto); + + /** + * 更新行程单状态 + * + * @param dto 行程单 + * @return 是否更改成功 + */ + TpResult syncTravelDispatchStatus(TpOrderTravelDispatchDTO dto); + + /** + * 保存发票 + * + * @param dto 发票参数 + * @return 是否保存成功 + */ + TpResult saveInvoice(TpOrderInvoiceDTO dto); + + + /** + * 查询订单数量 + * + * @param query 查询参数 + * @return 返回原始订单号的订单数量 + */ + TpResult queryOrderCount(@NotNull(message = "请求对象不能为空") TpOrderCountQueryDTO query); + + /** + * 根据原始订单编号批量查询订单列表 + * @param dto 查询参数 + * @return 返回订单列表 + */ + TpResult> batchQueryListByOriginalOrderNo(TpBatchQueryOrderDTO dto); + + /** + * 审核员手动结束订单 + */ + TpResult endOrderByAuditor(TpOrderQueryDTO dto); + + /** + * 查询源订单对应的未同步行程单的订单号 + * @param dto 查询参数 + * @return 行程单号 + */ + TpResult> querySyncedTripNos(TpOrderQueryDTO dto); + + /** + * 根据条件查询定制公交订单数量 + * @param dto 查询条件 + * @return 订单数量 + */ + TpResult queryCustomBusOrderCount(TpOrderListQueryDTO dto); + + /** + * POS机PAD端约车记录 + * @param dto 查询参数 + * @return 订单数据 + */ + TpResult> padCarpoolOrderList(TpOrderListQueryDTO dto); + + /** + * 批量更新约车成功订单 + * @param dto 更新参数 + * @return 是否批量修改成功 + */ + TpResult bathUpdateCarpoolSuccessOrder(TpOrderCarpoolPushStatusDTO dto); + + /** + * 检票成功回调 + * @param checkSuccessCallbackDTO + * @return + */ + TpResult checkSuccessCallback(TpCheckSuccessCallbackDTO checkSuccessCallbackDTO); + + + /** + * 取消 & 拼车失败 推进订单 + * @param cancelCarpoolDTO + * @return + */ + TpResult cancelOrCarpoolFailOrder(TpCancelCarpoolDTO cancelCarpoolDTO); + + + /** + * 批量保存拼车结束的定时任务 + * @param carPoolEndSchedules + * @return + */ + TpResult batchSaveCarPoolScheduleTask(List carPoolEndSchedules); + + /** + * 查询是刷卡流水号是否存在 + * @param dto 查询参数 + * @return true-存在 | false-不存在 + */ + TpResult querySwipeCardNoExist(TpOrderSwipeQueryDTO dto); + + + /** + * 线下支付 + */ + TpResult offlinePaid(TpOrderOfflinePaidDTO dto); + + /** + * 行程结束价格确认 + * @param dto 行程结束价格确认参数 + * @return 是否确认成功 + */ + TpResult endTripPriceConfirm(TpOrderEndPriceConfirmDTO dto); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderReceivedFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderReceivedFacade.java new file mode 100644 index 0000000..133918d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpOrderReceivedFacade.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedDetailDTO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderReceivedVO; + +import javax.validation.constraints.NotNull; + +/** + * @author xiehuaqiao + * @create 2023/11/13 17:34 + * @Description + */ +public interface TpOrderReceivedFacade { + + /** + * 业务接单接口 + * + * @param tpOrderReceiveCreatedDTO + * @return + */ + TpResult receiveOrder(TpOrderReceivedCreatedDTO tpOrderReceiveCreatedDTO); + + + /** + * 查询指定订单派单详情 + * + * @param orderReceivedDetailDTO + * @return + */ + TpResult getOrderReceivedDetail(@NotNull(message = "入参不能为空") TpOrderReceivedDetailDTO orderReceivedDetailDTO); + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserPassengerFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserPassengerFacade.java new file mode 100644 index 0000000..b3e3310 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserPassengerFacade.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerQueryDTO; +import com.deepinnet.tptradecore.common.vo.order.TpUserPassengerVO; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 用户乘客facade + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ + +@Validated +public interface TpUserPassengerFacade { + + /** + * 保存乘客接口 + * @param dto 乘客信息 + * @return 是否保存成功 + */ + TpResult saveUserPassenger(@NotNull(message = "乘客信息不能为空") TpUserPassengerDTO dto); + + /** + * 删除用户对应的乘客 + * @param dto 查询条件 + * @return 是否删除成功 + */ + TpResult delUserPassenger(@NotNull(message = "查询信息不能为空") TpUserPassengerQueryDTO dto); + + /** + * 修改乘客信息 + * @param dto 乘客信息 + * @return 是否修改成功 + */ + TpResult modifyPassenger(@NotNull(message = "乘客信息不能为空") TpUserPassengerDTO dto); + + /** + * 查询乘客信息列表 + * @param dto 查询条件 + * @return 用户对应的乘客信息列表 + */ + TpResult> queryPassengerList(@NotNull(message = "查询信息不能为空") TpUserPassengerQueryDTO dto); + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserRouteCollectionFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserRouteCollectionFacade.java new file mode 100644 index 0000000..6191e41 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/order/TpUserRouteCollectionFacade.java @@ -0,0 +1,42 @@ +package com.deepinnet.tptradecore.common.service.facade.order; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerQueryDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserRouteCollectionDTO; +import com.deepinnet.tptradecore.common.dto.order.TpUserRouteCollectionQueryDTO; +import com.deepinnet.tptradecore.common.vo.order.TpUserPassengerVO; +import com.deepinnet.tptradecore.common.vo.order.TpUserRouteCollectionVO; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 线路收集 + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ + +@Validated +public interface TpUserRouteCollectionFacade { + + /** + * 线路收集 + * @param dto 参数 + * @return 是否收集成功 + */ + TpResult collectionRoute(TpUserRouteCollectionDTO dto); + + /** + * 线路收集列表查询 + * @param dto 查询参数 + * @return 列表 + */ + TpResult> queryCollectionRouteByPage(TpUserRouteCollectionQueryDTO dto); + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/trans/TpPaymentFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/trans/TpPaymentFacade.java new file mode 100644 index 0000000..4d1e3bc --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/trans/TpPaymentFacade.java @@ -0,0 +1,81 @@ +package com.deepinnet.tptradecore.common.service.facade.trans; + + +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.vo.trans.*; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/6 14:33 + * @Description 第三方支付平台服务,提供预支付、退款、查询支付结果等能力 + */ +@Validated +public interface TpPaymentFacade { + + /** + * 调用第三方支付工具的接口进行预支付,拉起收银台 + * + * @param dto + * @return 收银台地址 + */ + TpResult preparePay(@NotNull(message = "请求参数不能为空") TpPreparePayDTO dto); + + /*** + * 主动查询支付结果的接口 + * @param dto + * @return 支付结果 + */ + TpResult queryPayResult(@NotNull(message = "请求参数不能为空") TpQueryPayResultDTO dto); + + /** + * 第三方支付平台退款的接口 + * + * @return + */ + TpResult refund(@NotNull(message = "请求参数不能为空") TpPayRefundDTO dto); + + /** + * 第三方支付平台查询退款结果的接口 + * + * @param dto + * @return + */ + TpResult queryRefundResult(@NotNull(message = "请求参数不能为空") TpQueryRefundResultDTO dto); + + + /** + * 查询支付单列表 + * + * @param queryDTO + * @return + */ + TpResult> queryPayOrderList(@NotNull(message = "请求参数不能为空") TpPayOrderQueryDTO queryDTO); + + /** + * 关闭支付单的接口 + * + * @param dto + * @return + */ + TpResult closePayOrder(TpPayOrderCloseDTO dto); + + + /** + * 线下支付 + * + * @return + */ + TpResult paidOffline(TpPaidOfflineDTO paidOfflineDTO); + + /** + * 改签订单支付成功接口 + * + * @return + */ + TpResult reschedulePaidSuccess(TpReschedulePaidSuccessDTO reschedulePaidSuccessDTO); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/voucher/TpVoucherFacade.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/voucher/TpVoucherFacade.java new file mode 100644 index 0000000..c8bfd95 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/service/facade/voucher/TpVoucherFacade.java @@ -0,0 +1,118 @@ +package com.deepinnet.tptradecore.common.service.facade.voucher; + + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.common.vo.voucher.*; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.*; +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/7 11:36 + * @Description 凭证域服务 + */ +@Validated +public interface TpVoucherFacade { + + /** + * 生成凭证的接口 + * + * @param createDTO + * @return + */ + TpResult createVoucher(@NotNull(message = "请求参数不能为空") TpVoucherCreateDTO createDTO); + + /** + * 查询订单详情的凭证列表 + */ + TpResult> getOrderDetailVoucherList(@NotNull(message = "请求参数不能为空") TpVoucherQueryDTO queryDTO); + + /** + * 查询凭证列表 + */ + TpResult> getVoucherList(@NotNull(message = "请求参数不能为空") TpVoucherQueryDTO queryDTO); + + /** + * 刷新乘车二维码过期时间 + */ + TpResult refreshQrCodeExpireTime(@NotNull(message = "请求参数不能为空") TpRefreshQrCodeDTO refreshDTO); + + /** + * 检票 + * + * @return 核销结果 + */ + TpResult check(@NotNull(message = "请求参数不能为空") TpVoucherCheckDTO checkDTO); + + /** + * 核销成功 + * + * @param checkSuccessDTO + * @return + */ + TpResult villageBatchCheckSuccess(@NotNull(message = "请求参数不能为空") TpVoucherCheckSuccessDTO checkSuccessDTO); + + /** + * 出行凭证失效,应用于退票的场景 + * + * @return 核销结果 + */ + TpResult invalidVoucher(@NotNull(message = "入参不能为空") List voucherUpdateDTOs); + + /** + * 查询限购规则需要的凭证数量等信息 + * + * @param queryDTO + * @return + */ + TpResult queryBuyLimitNeedVoucherCount(TpBuyLimitQueryVoucherDTO queryDTO); + + + /** + * 查询凭证核销记录 + * + * @return + */ + TpResult> getVoucherVerificationRecordList(TpVoucherVerificationRecordQueryDTO queryDTO); + + TpResult> getVoucherPassengerList(@NotNull TpVoucherPassengerQueryDTO query); + + + /** + * 获取一定时间范围内存在核销记录的日期 + * + * @param queryDTO + * @return + */ + TpResult getTimeRangeExistVerificationRecordDate(TpTimeRangeExistVerificationRecordDateQueryDTO queryDTO); + + + /** + * 查询用户的某个时间段内的乘车记录详情 + * + * @param queryDTO + * @return + */ + TpResult getTimeRangeUserVerificationRecordDetail(TpTimeRangeUserVerificationRecordDetailQueryDTO queryDTO); + + + /** + * 查询业主后台的核销记录 + * + * @param queryDTO + * @return + */ + TpResult> queryMngVerificationRecords(TpMngVerificationRecordQueryDTO queryDTO); + + /** + * 改签失效掉选中凭证接口 + * + * @param rescheduleInvalidVoucherDTO + * @return + */ + TpResult rescheduleInvalidVouchers(TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderListVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderListVO.java new file mode 100644 index 0000000..4cce2f9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderListVO.java @@ -0,0 +1,106 @@ +package com.deepinnet.tptradecore.common.vo.audit; + +import com.deepinnet.tptradecore.common.enums.audit.TpAuditTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单 + */ +@Data +public class TpAuditOrderListVO implements Serializable { + + /** + * 审核单编号 + */ + @ApiModelProperty(value = "审核单编号") + private String auditNo; + + /** + * 审核单类型 + * @see TpAuditTypeEnum + */ + private Integer type; + + /** + * 提交时间 + */ + @ApiModelProperty(value = "提交时间") + private Long submitTime; + + /** + * 提交人编号 + */ + @ApiModelProperty(value = "提交人编号") + private String submitterNo; + + /** + * 提交人名称 + */ + @ApiModelProperty(value = "提交人名称") + private String submitterName; + + /** + * 提交申请原因 + */ + @ApiModelProperty(value = "提交申请原因") + private String applyReason; + + /** + * 审核员编号 + */ + @ApiModelProperty(value = "审核员编号") + private String auditorNo; + + /** + * 审核员名字 + */ + @ApiModelProperty(value = "审核员名字") + private String auditorName; + + /** + * 审核状态 + *

+ * approved_success: 审核通过 + * approved_reject:审核未通过 + * waiting_approved:待审核 + * approved_timeout:审核超时 + *

+ */ + @ApiModelProperty(value = "审核状态(approved_success: 审核通过/approved_reject:审核未通过/waiting_approved:待审核/approved_timeout:审核超时)") + private String status; + + /** + * 审核建议 + */ + @ApiModelProperty(value = "审核建议") + private String remark; + + /** + * 审核时间 + */ + @ApiModelProperty(value = "审核时间") + private Long auditTime; + + /** + * 审核单关联业务单号 + */ + @ApiModelProperty(value = "审核关联业务单号") + private String bizObjectNo; + /** + * 审核单关联业务单号类型 + */ + @ApiModelProperty(value = "审核单关联业务单号类型") + private String bizObjType; + + /** + * 审核单关联的订单详情 + */ + @ApiModelProperty(value = "审核单关联的订单详情") + private TpAuditOrderVO auditOrder; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderVO.java new file mode 100644 index 0000000..239d197 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditOrderVO.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.common.vo.audit; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单 + */ +@Data +public class TpAuditOrderVO implements Serializable { + + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String originalOrderNo; + + /** + * 子订单号 + */ + private String orderNo; + + /** + * 包车类型 + */ + @ApiModelProperty(value = "包车类型") + private String charterBusType; + + /** + * 包车类型名称 + */ + @ApiModelProperty(value = "包车类型名称") + private String charterBusTypeName; + + /** + * 订单金额(应付金额) + */ + @ApiModelProperty(value = "订单金额(应付金额)") + private String payableAmount; + + /** + * 退款手续费 + */ + @ApiModelProperty(value = "退款手续费") + private String serviceCharge; + + /** + * 全额退款金额 + */ + @ApiModelProperty(value = "全额退款金额") + private String fullRefundAmount; + + /** + * 扣手续费后退款金额 + */ + @ApiModelProperty(value = "扣手续费后退款金额") + private String rscRefundAmount; + + /** + * 实际退款金额 + */ + @ApiModelProperty(value = "实际退款金额") + private String actualRefundAmount; + + /** + * 所属组织编码 + */ + @ApiModelProperty(value = "所属组织编码") + private String orgNo; + + /** + * 所属组织名称 + */ + @ApiModelProperty(value = "所属组织名称") + private String orgName; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditVO.java new file mode 100644 index 0000000..610b95b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/audit/TpAuditVO.java @@ -0,0 +1,103 @@ +package com.deepinnet.tptradecore.common.vo.audit; + +import com.deepinnet.tptradecore.common.enums.audit.TpAuditBizObjectTypeEnum; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单 + */ +@Data +public class TpAuditVO implements Serializable { + + private static final long serialVersionUID = 6995017509898880006L; + + /** + * 审核单编号 + */ + private String auditNo; + + + /** + * 审核状态 + * @see com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum + */ + private String status; + + + /** + * 审核建议 + */ + private String remark; + + /** + * 审核单类型 + * @see TpAuditTypeEnum + */ + private Integer type; + + /** + * 提交时间 + */ + private Long submitTime; + + /** + * 审核单提交人编号 + */ + private String submitterNo; + + /** + * 审核单提交人名称 + */ + private String submitterName; + + /** + * 提交申请原因 + */ + private String applyReason; + + /** + * 审核处理时间 + */ + private Long auditTime; + + /** + * 审核单关联业务单号 + */ + private String bizObjectNo; + /** + * 审核单关联业务单号类型 + * @see TpAuditBizObjectTypeEnum + */ + private String bizObjType; + + + /** + * 审核员编号 + */ + private String auditorNo; + + + /** + * 审核员名字 + */ + private String auditorName; + + /** + * 业务扩展字段 + */ + private Map bizData; + /** + * 租户ID + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpCalculateRefundAmountVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpCalculateRefundAmountVO.java new file mode 100644 index 0000000..06eff6d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpCalculateRefundAmountVO.java @@ -0,0 +1,38 @@ +package com.deepinnet.tptradecore.common.vo.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/8/22 14:30 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpCalculateRefundAmountVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 实退金额 + */ + @ApiModelProperty(value = "实退金额") + private String refundAmount; + + /** + * 实付金额 + */ + @ApiModelProperty(value = "实付金额") + private String payAmount; + + /** + * 计费金额-手续费 + */ + @ApiModelProperty(value = "计费金额-手续费") + private String chargeAmount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryAvailableRefundVoucherVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryAvailableRefundVoucherVO.java new file mode 100644 index 0000000..c3f5833 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryAvailableRefundVoucherVO.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.common.vo.contract; + +import com.deepinnet.tptradecore.common.dto.contract.TpNonRealNamePassengerAvailableRefundDTO; +import com.deepinnet.tptradecore.common.dto.contract.TpRealNamePassengerAvailableRefundDTO; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import io.swagger.annotations.*; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class TpQueryAvailableRefundVoucherVO implements Serializable { + + private static final long serialVersionUID = 635061896960139213L; + + /** + * 凭证列表 + */ + @ApiModelProperty(value = "凭证列表") + private List voucherDTOs; + + /** + * 非实名制乘客退票详情 + */ + private List nonRealNamePassengerAvailableRefundDTOs; + + /** + * 实名制乘客退票详情 + */ + private List realNamePassengerAvailableRefundDTOs; + + /** + * 退票方式:com.deepinnet.tptradecore.common.enums.contract.TpRefundTypeEnum + */ + @ApiModelProperty(value = "退票方式:original_refund-原路退回") + private List refundTypes; + + /** + * 车票类型 + */ + private String voucherType; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryRefundDetailVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryRefundDetailVO.java new file mode 100644 index 0000000..665a96c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpQueryRefundDetailVO.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.vo.contract; + +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.trans.TpPayOrderDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/9 15:50 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryRefundDetailVO implements Serializable { + + private static final long serialVersionUID = 635061896960139213L; + + /** + * 退票申请单 + */ + @ApiModelProperty(value = "退票申请单") + private TpRefundApplyOrderDTO refundApplyOrderDTO; + + /** + * 正向支付单 + */ + @ApiModelProperty(value = "正向支付单") + private TpPayOrderDTO paidOrderDTO; + + @ApiModelProperty(value = "凭证类型:day-日票,week-周票,term-学期票,month-月票,year-年票") + private String voucherType; + + @ApiModelProperty(value = "是否是实名制退票") + private Boolean realNameRefund; + + @ApiModelProperty(value = "非实名制退票内容") + private List nonRealNameTicketRefundChoiceDTOs; + + @ApiModelProperty(value = "实名制退票内容") + private List realNameTicketRefundChoiceDTOs; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpRefundDateVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpRefundDateVO.java new file mode 100644 index 0000000..49309ec --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/contract/TpRefundDateVO.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.vo.contract; + +import lombok.Data; + +import java.io.*; + +/** + * @author amos wong + * @create 2023/10/8 15:46 + * @Description + */ +@Data +public class TpRefundDateVO implements Serializable { + + private static final long serialVersionUID = -5287473535057938032L; + + private Long startTime; + + private Long endTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/DriverInfoVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/DriverInfoVO.java new file mode 100644 index 0000000..9a643ce --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/DriverInfoVO.java @@ -0,0 +1,41 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 司机和车牌信息 + *

+ * + * @author chenjiaju + * @since 2023/8/30 + */ + +@Data +public class DriverInfoVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 司机编号 + */ + private String driverNo; + + /** + * 司机名称 + */ + private String driverName; + + /** + * 车牌 + */ + private String vehicleNumber; + + /** + * 行程类型 + */ + private String tripType; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplicantVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplicantVO.java new file mode 100644 index 0000000..3f0cf9b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplicantVO.java @@ -0,0 +1,30 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/30 15:00 + * @Description + */ +@Data +public class TpOrderChangeApplicantVO implements Serializable { + private static final long serialVersionUID = 1810768307525635810L; + /** + * 申请人编号 + */ + private String applicantNo; + + /** + * 申请人名称 + */ + private String applicantName; + + /** + * 申请人手机号 + */ + private String applicantPhone; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplyVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplyVO.java new file mode 100644 index 0000000..a5ba3c8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeApplyVO.java @@ -0,0 +1,109 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeApplyStatusEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderReductionServiceChargeTypeEnum; +import lombok.Data; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 13:53 + * @Description + */ +@Data +public class TpOrderChangeApplyVO implements Serializable { + private static final long serialVersionUID = 6824617899547194529L; + + + /** + * 申请单号 + */ + private String applyNo; + + /** + * 子订单号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 申请单状态 + * + * @see TpOrderChangeApplyStatusEnum + */ + private String applyStatus; + + /** + * 申请时间 + */ + private Long applyTime; + + + /** + * 申请原因 + */ + private String applyReason; + + /** + * 申请变更的业务类型 + * + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderChangeTypeEnum + */ + private String applyType; + + /** + * 审批时间 + */ + private Long approvedTime; + + /** + * 审批结果描述:如果是审批拒绝或者审批超时,需要将原因同步到申请单这 + */ + private String approvedRemark; + + /** + * 服务费减免申请原因 + */ + private String rscApplyReason; + + /** + * 服务费减免申请时间 + */ + private Long rscApplyTime; + + /** + * 服务费减免类型 + * @see TpOrderReductionServiceChargeTypeEnum + */ + private String rscApplyType; + + /** + * 订单变更项 + */ + private List orderChangeItems; + + /** + * 申请人信息 + */ + private TpOrderChangeApplicantVO orderChangeApplicant; + + /** + * 下单场景 + */ + private String orderScene; + + /** + * 业务扩展字段 + */ + private Map bizData; + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemFactorVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemFactorVO.java new file mode 100644 index 0000000..509a3d4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemFactorVO.java @@ -0,0 +1,92 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderChangeItemFactorEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 14:03 + * @Description + */ +@Data +public class TpOrderChangeItemFactorVO implements Serializable { + private static final long serialVersionUID = 2806370286802680227L; + + + /** + * 变更因子编码 + * @see TpOrderChangeItemFactorEnum + */ + @ApiModelProperty(value = "变更因子编码") + private String factorCode; + + /** + * 变更因子名称 + */ + @ApiModelProperty(value = "变更因子名称") + private String factorName; + + /** + * 变更因子类型 + */ + @ApiModelProperty(value = "变更因子类型") + private String factorType; + + /** + * 变更订单号 + */ + @ApiModelProperty(value = "变更订单号") + private String orderNo; + + /** + * 源订单号 + */ + @ApiModelProperty(value = "源订单号") + private String originalOrderNo; + + /** + * 变更申请单号 + */ + @ApiModelProperty(value = "申请单号") + private String applyNo; + + /** + * 变更项编号 + */ + @ApiModelProperty(value = "变更项编号") + private String changeItemNo; + + /** + * 变更前的值 + */ + @ApiModelProperty(value = "变更前的值") + private String beforeValue; + + /** + * 变更后的值 + */ + @ApiModelProperty(value = "变更后的值") + private String afterValue; + + /** + * 因子排序 + */ + @ApiModelProperty(value = "因子展示排序值") + private Integer sortIndex; + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemVO.java new file mode 100644 index 0000000..cf526a8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChangeItemVO.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 14:03 + * @Description + */ +@Data +public class TpOrderChangeItemVO implements Serializable { + private static final long serialVersionUID = 2806370286802680227L; + + + /** + * 变更项ID + * + */ + @ApiModelProperty(value = "变更项ID") + private String itemNo; + + /** + * 变更订单号 + */ + @ApiModelProperty(value = "变更订单号") + private String orderNo; + + /** + * 源订单号 + */ + @ApiModelProperty(value = "源订单号") + private String originalOrderNo; + + /** + * 变更申请单号 + */ + @ApiModelProperty(value = "变更申请单号") + private String applyNo; + + /** + * 变更项类型 + * + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderChangeItemTypeEnum + */ + @ApiModelProperty(value = "变更项类型") + private String itemType; + + /** + * 变更项因子 + * + */ + @ApiModelProperty(value = "变更项因子列表") + private List itemFactors; + + + /** + * 业务扩展字段 + */ + private Map bizData; + /** + * 租户id + */ + @NotBlank(message = "租户id不能为空") + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChargeRecordVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChargeRecordVO.java new file mode 100644 index 0000000..0f9792c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderChargeRecordVO.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 订单费用 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderChargeRecordVO implements Serializable { + + private static final long serialVersionUID = -1934894255107914110L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 原始订单编号 + */ + private String originalOrderNo; + + /** + * 询价金额 + */ + private String inquireAmount; + + /** + * 业务员更改价格 + */ + private String changeAmount; + + /** + * 实付金额 + */ + private String payAmount; + + /** + * 手续费 + */ + private String serviceCharge; + + /** + * 手续费比例 + */ + private String servicePercentage; + + /** + * 是否免手续费 + */ + private Integer freeServiceCharge; + + /** + * 业务类型(下单 / 变更订单 / 取消订单) + */ + private String bizType; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 创建时间 + */ + private Long operateTime; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderCreateVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderCreateVO.java new file mode 100644 index 0000000..1fde81d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderCreateVO.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 下单出参 + *

+ * + * @author chenjiaju + * @since 2023/8/28 + */ + +@Data +public class TpOrderCreateVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号", example = "20230828000011110") + private String orderNo; + + /** + * 原始订单编号 + */ + @ApiModelProperty(value = "原始订单编号", example = "20230828000011110") + private String originalOrderNo; + + /** + * 支付收银台地址 + */ + @ApiModelProperty(value = "收银台地址", example = "https://www.laobinggun.site") + private String payCashierUrl; + + /** + * 订单创建时间 + */ + @ApiModelProperty(value = "订单创建时间") + private Long createTime; + + /** + * 待支付金额 + */ + @ApiModelProperty(value = "待支付金额") + private String fee; + + /** + * 应付金额 + */ + @ApiModelProperty(value = "应付金额") + private String payableAmount; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDetailVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDetailVO.java new file mode 100644 index 0000000..352a688 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDetailVO.java @@ -0,0 +1,422 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.order.TpOrderChargeRecordDTO; +import com.deepinnet.tptradecore.common.dto.trans.TpPayOrderDTO; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import com.google.common.collect.Lists; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.*; + +/** + * @author taobinxian + * @version 2023-08-07 + */ + +/** + * 出行订单 + */ +@Data +public class TpOrderDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 产品编码 + */ + @ApiModelProperty(value = "产品编码") + private String productNo; + + /** + * 产品名称 + */ + @ApiModelProperty(value = "产品名称") + private String productName; + + /** + * 产品类目编码 + */ + @ApiModelProperty(value = "产品类目编码") + private String productCategoryNo; + + /** + * 产品类目中文 + */ + @ApiModelProperty(value = "产品类目中文") + private String productCategory; + + /** + * 外部业务单号 + */ + @ApiModelProperty(value = "外部业务单号", required = true) + private String outRequestNo; + + /** + * 用户编码 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 订单编码 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 父订单编号 + */ + @ApiModelProperty(value = "父订单号") + private String parentOrderNo; + + /** + * 原订单号 + */ + @ApiModelProperty(value = "原订单号") + private String originalOrderNo; + + /** + * 是否主订单(0-否;1-是) + */ + @ApiModelProperty(value = "是否主订单(0-否;1-是)") + private Integer main; + + /** + * 订单状态 + */ + @ApiModelProperty(value = "订单状态(0-订单初始化;5-订单待支付;10-订单超时;15-订单已支付;20-部分核销;25-退款中;30-部分退款成功;35-已改签;40-全部退款;45-退款失败;50-已完成(部分退款后凭证用完);55-已经完(未发生退款);60-订单未超时未乘坐(部分退款); 65-订单未超时未乘坐(未发生退款,部分或全部未核销)))") + private Integer status; + + /** + * 确认订单结束状态 + */ + @ApiModelProperty(value = "0-未确认;1-已确认") + private Integer endConfirmStatus; + + /** + * 确认订单结束时间 + */ + @ApiModelProperty(value = "确认订单结束时间") + private Long endConfirmTime; + + /** + * 审核前状态 + */ + @ApiModelProperty(value = "审核前状态") + private Integer beforeApproveStatus; + + /** + * 订单类型(定制公交 / 预约包车 / 包车改签) + */ + @ApiModelProperty(value = "订单类型(1-定制公交; 2-预约包车; 3-包车改签)") + private Integer type; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型(go; back; round)") + private String tripType; + + /** + * 付款模式 + */ + @ApiModelProperty(value = "付款模式(pay_after-先享后付;pay_before-先付后享付订金; pay_before_all-先付后享付全款)") + private String payMode; + + /** + * 实付金额 + */ + @ApiModelProperty(value = "实付金额") + private String payAmount; + + /** + * 应付金额 + */ + @ApiModelProperty(value = "应付金额") + private String payableAmount; + + /** + * 订单优惠前原金额 + */ + @ApiModelProperty(value = "优惠前金额") + private String originalAmount; + + /** + * 优惠金额 + */ + @ApiModelProperty(value = "优惠金额") + private String discountAmount; + + /** + * 服务费 + */ + @ApiModelProperty(value = "服务费") + private String serviceCharge; + + /** + * 订单来源(APP / 微信小程序 / 支付宝小程序 / H5) + */ + @ApiModelProperty(value = "订单来源(1-app;2-微信小程序;3-支付宝小程序;4-H5页面)") + private String source; + + /** + * 支付方式 + */ + @ApiModelProperty(value = "支付方式") + private String payType; + + /** + * 是否实名认证(0-否;1-是) + */ + @ApiModelProperty(value = "是否实名认证(0-否;1-是)") + private Integer identityVerificat; + + /** + * 车票类型 + * + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherTypeEnum + */ + @ApiModelProperty(value = "车票类型") + private String ticketType; + + /** + * 乘客人数 + */ + @ApiModelProperty(value = "乘客人数") + private Integer passengerNumber; + + /** + * 乘客人名 + */ + @ApiModelProperty(value = "乘客人名") + private List passengerNames; + + /** + * 下单时间 + */ + @ApiModelProperty(value = "下单时间") + private Long orderTime; + + /** + * 支付时间 + */ + @ApiModelProperty(value = "支付时间") + private Long payTime; + + /** + * 订单关闭时间 + */ + @ApiModelProperty(value = "订单关闭时间") + private Long closeTime; + + /** + * 订单过期时间 + */ + @ApiModelProperty(value = "订单过期时间") + private Long expireTime; + + /** + * 发票状态 + */ + @ApiModelProperty(value = "发票上传状态") + private Integer invoiceStatus; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 司机和车牌(实时查询) + */ + @ApiModelProperty(value = "司机对应的车牌") + private List driverInfos; + + /** + * 所属车队(需实时查询) + */ + @ApiModelProperty(value = "所属车队") + private String belongFleet; + + /** + * 要素信息 + */ + @ApiModelProperty(value = "要素信息") + private List orderElements; + + /** + * 报价记录 + */ + @ApiModelProperty(value = "报价记录") + private List orderPriceRecord; + + /** + * 下单人 + */ + @ApiModelProperty(value = "下单人") + private TpOrderPlacerVO orderPlacer; + + /** + * 用车需求方 + */ + @ApiModelProperty(value = "用车需求方") + private TpOrderRequirementUserVO orderRequirementUser; + + /** + * 标的项 + */ + @ApiModelProperty(value = "标的项") + private List orderSubjectItem; + + + /** + * 服务对象 + */ + @ApiModelProperty(value = "服务对象") + private TpOrderTargetServiceVO tpOrderTargetService; + + /** + * 行程单信息 + */ + @ApiModelProperty(value = "行程单信息") + private List tpOrderTravelTrips; + + /** + * 线路 / 班次 + */ + @ApiModelProperty(value = "线路信息") + private List tpOrderRoutes; + + /** + * 子订单 + */ + @ApiModelProperty(value = "子订单") + private List subOrders; + + /** + * 订单关联的支付单 + */ + @ApiModelProperty(value = "支付单") + private List payOrders; + + /** + * 订单关联的退款支付单 + */ + @ApiModelProperty(value = "订单关联的退款支付单") + private List refundPayOrders; + + /** + * 凭证列表 + */ + @ApiModelProperty(value = "凭证列表") + private List voucherDTOs; + + /** + * 退款单 + */ + @ApiModelProperty(value = "退款单") + List refundOrders; + + /** + * 是否允许退票 + */ + @ApiModelProperty(value = "是否允许退票") + private Boolean availableRefund; + + /** + * 费用记录 + */ + @ApiModelProperty(value = "费用记录") + private List orderChargeRecords; + + /** + * 行程派单记录 + */ + @ApiModelProperty(value = "行程派单记录") + private List tpOrderTravelDispatchRecords; + + @ApiModelProperty(value = "改签记录") + private List tpOrderRescheduleRecords; + + /** + * 发票 + */ + @ApiModelProperty(value = "发票") + private TpOrderInvoiceVO tpOrderInvoice; + + + /** + * 当前 应退 金额 + */ + @ApiModelProperty(value = "当前应退") + private String currentNeedRefundAmount = "0.00"; + + /** + * 当前 已退 金额 + */ + @ApiModelProperty(value = "已退金额") + private String refundedAmount = "0.00"; + + /** + * 实付金额 + */ + @ApiModelProperty(value = "实付金额") + private String actualPayAmount = "0.00"; + + /** + * 已付金额 + */ + @ApiModelProperty(value = "已付金额") + private String paidAmount = "0.00"; + + /** + * 当前需支付金额 + */ + @ApiModelProperty(value = "当前需支付金额") + private String currentNeedPayAmount = "0.00"; + + /** + * 计算公式 + */ + @ApiModelProperty(value = "计算公式") + private String calcFormula; + + /** + * 预售结束时间 + */ + @ApiModelProperty(value = "预售结束时间") + private Long preSaleEndTime; + + /** + * 取消拼车结束时间 + */ + @ApiModelProperty(value = "取消拼车结束时间") + private Long carpoolEndTime; + + /** + * 最低拼车人数 + */ + @ApiModelProperty(value = "最低拼车人数") + private Integer carPoolLimitNum; + /** + * 期初总库存数 + */ + @ApiModelProperty(value = "预期库存总数") + private Integer beginQuantity; + /** + * 已拼车人数 + */ + @ApiModelProperty(value = "已拼车人数") + private Integer soldQuantity; + + /** + * 拼车状态 + */ + @ApiModelProperty(value = "拼车状态") + private String carPoolStatus; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDiscountVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDiscountVO.java new file mode 100644 index 0000000..4f70ff3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDiscountVO.java @@ -0,0 +1,49 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + *

+ * 优惠信息 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderDiscountVO implements Serializable { + + private static final long serialVersionUID = -1414448888888888239L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 优惠类型 + */ + private Integer type; + + /** + * 优惠金额 + */ + private String discountAmount; + + /** + * 扩展字段 + */ + private Map bizData; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchFleetVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchFleetVO.java new file mode 100644 index 0000000..0e0df71 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchFleetVO.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单派车领域实体 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@Data +public class TpOrderDispatchFleetVO implements Serializable { + + /** + * 派单编号 + */ + private String dispatchNo; + /** + * 订单编号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 分配员编码 + */ + private String operatorNo; + + /** + * 分配员名称 + */ + private String operatorName; + + /** + * 分配目标车队编码 + */ + private String targetFleetNo; + + /** + * 分配目标车队名称 + */ + private String targetFleetName; + + /** + * 分配车队时间 + */ + private Long dispatchTime; + + /** + * 去程合营车队 + */ + private List goJoinFleets; + + /** + * 返程合营车队 + */ + private List backJoinFleets; + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchJoinFleetVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchJoinFleetVO.java new file mode 100644 index 0000000..1b61ce3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchJoinFleetVO.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * Description: + * Date: 2024/6/3 + * Author: lijunheng + */ + +/** + * 订单分配的合营车队,一个车型对应一个车队 + */ +@Data +public class TpOrderDispatchJoinFleetVO implements Serializable { + + /** + * 派单主营车队记录编码 + */ + private String orderDispatchFleetCode; + + /** + * 行程类型(go; back) + */ + private String tripType; + + /** + * 车型编码 + */ + private String specCode; + + /** + * 车型名称 + */ + private String specName; + + /** + * 分公司编码 + */ + private String orgCode; + + /** + * 分公司名称 + */ + private String orgName; + + /** + * 车队编码 + */ + private String fleetCode; + + /** + * 车队名称 + */ + private String fleetName; + + /** + * 扩展字段 + */ + private Map bizData; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchVO.java new file mode 100644 index 0000000..15f239f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDispatchVO.java @@ -0,0 +1,139 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchSceneTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/10/30 17:36 + * @Description 分配订单 + */ +@Data +public class TpOrderDispatchVO implements Serializable { + private static final long serialVersionUID = -6835649297585208663L; + + /** + * 派单编号 + */ + private String dispatchNo; + /** + * 订单编号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 派单操作员编号 + */ + private String operatorNo; + + /** + * 派单操作员名称 + */ + private String operatorName; + + /** + * 派单类型 + * @see TpOrderDispatchSceneTypeEnum + */ + private String dispatchScene; + + /** + * 分派组织代码 + */ + private String targetOrgNo; + + /** + * 分派组织名称 + */ + private String targetOrgName; + + /** + * 分派组织类型 + */ + private String targetOrgType; + + /** + * 目标分配组织是否可以退回原处 + */ + private Boolean isGiveBack = Boolean.TRUE; + + /** + * 退单原因 + */ + private String giveBackReason; + + /** + * 退单时间 + */ + private Long giveBackTime; + + /** + * 分配组织是否可以召回 + */ + private Boolean isCallBack = Boolean.TRUE; + + /** + * 召回时间 + */ + private Long callBackTime; + + /** + * 召回原因 + */ + private String callBackReason; + + /** + * 分配时间 + */ + private Long dispatchTime; + + /** + * 分配单状态 + * @see TpOrderDispatchStatusEnum + */ + private Integer dispatchStatus; + + /** + * 下单来源承运组织编码 + */ + private String originOrgNo; + + /** + * 下单来源承运组织名称 + */ + private String originOrgName; + + /** + * 下单来源承运组织类型 + */ + private String originOrgType; + + /** + * 分派车队 + */ + private TpOrderDispatchFleetVO fleet; + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; + + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDriverInfoVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDriverInfoVO.java new file mode 100644 index 0000000..34ff111 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderDriverInfoVO.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.vo.order; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 司机信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderDriverInfoVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 承运交通工具编码 + */ + @ApiModelProperty(value = "交通工具编码") + private String transportationNo; + + /** + * 司机 + */ + @ApiModelProperty(value = "司机") + private String name; + + /** + * 司机联系方式 + */ + @ApiModelProperty(value = "司机联系方式") + private String contact; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderElementVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderElementVO.java new file mode 100644 index 0000000..608ffcb --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderElementVO.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.vo.order; + + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 订单要素信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderElementVO implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 要素类型(下单 / 退款 / 改签) + */ + private Integer elementType; + + /** + * 要素code + */ + private String elementCode; + + /** + * 要素名称 + */ + private String elementName; + + /** + * 要素Key + */ + private String elementKey; + + /** + * 要素值 + */ + private String elementValue; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderEndorseVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderEndorseVO.java new file mode 100644 index 0000000..3a71cc2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderEndorseVO.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 改签订单出参 + *

+ * + * @author chenjiaju + * @since 2023/8/28 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpOrderEndorseVO extends TpOrderCreateVO{ + + /** + * 原订单 + */ + @ApiModelProperty(value = "原订单") + private String originalOrderNo; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderInvoiceVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderInvoiceVO.java new file mode 100644 index 0000000..d288c0b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderInvoiceVO.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 发票 + *

+ * + * @author chenjiaju + * @since 2023/11/29 + */ + +@Data +public class TpOrderInvoiceVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 发票号码 + */ + private String invoiceNo; + + /** + * 发票地址 + */ + private String invoiceAddress; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderListVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderListVO.java new file mode 100644 index 0000000..1a80236 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderListVO.java @@ -0,0 +1,278 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.dto.trans.TpPayOrderDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author taobinxian + * @version 2023-08-02 + */ +@Data +public class TpOrderListVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 产品编码 + */ + @ApiModelProperty(value = "产品编码") + private String productNo; + + /** + * 产品名称 + */ + @ApiModelProperty(value = "产品名称") + private String productName; + + /** + * 产品类目编码 + */ + @ApiModelProperty(value = "产品类目编码") + private String productCategoryNo; + + /** + * 产品类目 + */ + @ApiModelProperty(value = "产品类目") + private String productCategory; + + /** + * 订单编码 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 父订单编号 + */ + @ApiModelProperty(value = "父订单号") + private String parentOrderNo; + + /** + * 原订单号 + */ + @ApiModelProperty(value = "原订单号") + private String originalOrderNo; + + /** + * 是否主订单(0-否;1-是) + */ + @ApiModelProperty(value = "是否主订单(0-否;1-是)") + private Integer main; + + /** + * 订单状态 + */ + @ApiModelProperty(value = "订单状态(0-订单初始化;5-订单待支付;10-订单超时;15-订单已支付;20-部分核销;25-退款中;30-部分退款成功;35-已改签;40-全部退款;45-退款失败;50-已完成(部分退款后凭证用完);55-已经完(未发生退款))") + private Integer status; + + /** + * 确认订单结束状态 + */ + @ApiModelProperty(value = "0-未确认;1-已确认") + private Integer endConfirmStatus; + + /** + * 确认订单结束时间 + */ + @ApiModelProperty(value = "确认订单结束时间") + private Long endConfirmTime; + + /** + * 车票类型 + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherTypeEnum + */ + @ApiModelProperty(value = "车票类型") + private String ticketType; + + /** + * 审核前状态 + */ + @ApiModelProperty(value = "审核前状态") + private Integer beforeApproveStatus; + + /** + * 订单类型(定制公交 / 预约包车) + */ + @ApiModelProperty(value = "订单类型(1-定制公交; 2-预约包车)") + private Integer type; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型(go; back; round)") + private String tripType; + + /** + * 付款模式 + */ + @ApiModelProperty(value = "付款模式(pay_after-先享后付;pay_before-先付后享付订金; pay_before_all-先付后享付全款)") + private String payMode; + + /** + * 乘客人数 + */ + @ApiModelProperty(value = "乘客人数") + private Integer passengerNumber; + + /** + * 乘客人名 + */ + @ApiModelProperty(value = "乘客人名") + private List passengerNames; + + /** + * 实付金额 + */ + @ApiModelProperty(value = "实付金额") + private String payAmount; + + /** + * 应付金额 + */ + @ApiModelProperty(value = "应付金额") + private String payableAmount; + + /** + * 订单优惠前原金额 + */ + @ApiModelProperty(value = "优惠前金额") + private String originalAmount; + + /** + * 优惠金额 + */ + @ApiModelProperty(value = "优惠金额") + private String discountAmount; + + /** + * 服务费 + */ + @ApiModelProperty(value = "服务费") + private String serviceCharge; + + /** + * 下单时间 + */ + @ApiModelProperty(value = "下单时间") + private Long orderTime; + + /** + * 支付时间 + */ + @ApiModelProperty(value = "支付时间") + private Long payTime; + + /** + * 订单关闭时间 + */ + @ApiModelProperty(value = "订单关闭时间") + private Long closeTime; + + /** + * 订单过期时间 + */ + @ApiModelProperty(value = "订单过期时间") + private Long expireTime; + + /** + * 订单来源 + */ + @ApiModelProperty(value = "订单来源") + private String source; + + /** + * 发票状态 + */ + @ApiModelProperty(value = "发票上传状态") + private Integer invoiceStatus; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 下单人 + */ + @ApiModelProperty(value = "下单人") + private TpOrderPlacerVO orderPlacer; + + /** + * 标的项 + */ + @ApiModelProperty(value = "标的项") + private List orderSubjectItem; + + /** + * 服务对象 + */ + @ApiModelProperty(value = "服务对象") + private TpOrderTargetServiceVO tpOrderTargetService; + + /** + * 订单线路信息 + */ + @ApiModelProperty(value = "线路") + private List routesInfo; + + /** + * 行程单信息 + */ + @ApiModelProperty(value = "行程单信息") + private List tpOrderTravelTrips; + + /** + * 用车需求方 + */ + @ApiModelProperty(value = "用车需求方") + private TpOrderRequirementUserVO requirementUser; + + /** + * 订单关联的支付单 + */ + @ApiModelProperty(value = "支付单") + private List payOrders; + + /** + * 子订单 + */ + @ApiModelProperty(value = "子订单") + private List subOrders; + + /** + * 发票 + */ + @ApiModelProperty(value = "发票") + private TpOrderInvoiceVO tpOrderInvoice; + + /** + * 审批派单相关 + */ + @ApiModelProperty(value = "审批派单相关") + private TpOrderDispatchVO orderDispatch; + + /** + * 审核相关 + */ + @ApiModelProperty(value = "审核相关") + private TpOrderChangeApplyVO orderChangeApply; + + /** + * 费用信息 + */ + @ApiModelProperty(value = "费用信息") + private List orderChargeRecords; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPaidVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPaidVO.java new file mode 100644 index 0000000..5375ba9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPaidVO.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 已支付订单DTO + *

+ * + * @author chenjiaju + * @since 2023/8/31 + */ + +@Data +@Builder +public class TpOrderPaidVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPassengerVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPassengerVO.java new file mode 100644 index 0000000..9bef799 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPassengerVO.java @@ -0,0 +1,75 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerIdentityTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 乘客信息 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderPassengerVO implements Serializable { + + private static final long serialVersionUID = -7157914478824441426L; + + /** + * 乘客编号 + */ + @ApiModelProperty(value = "乘客编号") + private String passengerNo; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 乘客姓名 + */ + @ApiModelProperty(value = "乘客名称") + private String passengerName; + + /** + * 乘客类型 + * @see TpUserPassengerTypeEnum + */ + @ApiModelProperty(value = "乘客类型(成人-ADULT;儿童-CHILD;残疾人-DEFORMED_MAN;老年人-OLD_PEOPLE;军人-MILITARY)") + private String passengerType; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String passengerContact; + + /** + * 乘客证件类型 + * @see TpUserPassengerIdentityTypeEnum + */ + @ApiModelProperty(value = "证件类型(001-身份证)") + private String identificationType; + + /** + * 乘客证件编号 + */ + @ApiModelProperty(value = "证件编号") + private String identificationNumber; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPayVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPayVO.java new file mode 100644 index 0000000..8f57d7f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPayVO.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpOrderPayVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 待支付订单号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 拉起收银台的地址 + */ + @ApiModelProperty(value = "收银台地址") + private String cashierUrl; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPlacerVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPlacerVO.java new file mode 100644 index 0000000..faf0e79 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPlacerVO.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.common.vo.order; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 下单人 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderPlacerVO implements Serializable { + + private static final long serialVersionUID = -8148089739381314981L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 下单人编号 + */ + @ApiModelProperty(value = "下单人用户编号") + private String placerNo; + + /** + * 下单人姓名 + */ + @ApiModelProperty(value = "下单人姓名") + private String placerName; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String placerContact; + + /** + * 订单联系方式 + */ + @ApiModelProperty(value = "订单联系方式") + private String orderPlacerContact; + + /** + * 后台录单人编号 + */ + @ApiModelProperty(value = "后台录单人编号") + private String backendPlacerNo; + + /** + * 后台录单人员名称 + */ + @ApiModelProperty(value = "后台录单人名称") + private String backendPlacerName; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordDetailVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordDetailVO.java new file mode 100644 index 0000000..776faa4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordDetailVO.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 计价记录详情 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@Data +public class TpOrderPriceRecordDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 询价记录详情 + */ + private String itemNo; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 乘客数量 + */ + private String passengerCount; + + /** + * 单原始金额 + */ + private String singleOriginalAmount; + + /** + * 单优惠金额 + */ + private String singleDiscountAmount; + + /** + * 总原始金额 + */ + private String totalOriginalAmount; + + /** + * 总优惠金额 + */ + private String totalDiscountAmount; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordVO.java new file mode 100644 index 0000000..f49617c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderPriceRecordVO.java @@ -0,0 +1,73 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 计价记录 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@Data +public class TpOrderPriceRecordVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 计价原始金额 + */ + private String pricingOriginalAmount; + + /** + * 计价优惠金额 + */ + private String pricingDiscountAmount; + + /** + * 内部询价金额 + */ + private String internalInquireAmount; + + /** + * 计价类型 + */ + private Integer pricingType; + + /** + * 计价参数 + */ + private String pricingParams; + + /** + * 优惠信息 + */ + private List orderDiscount; + + /** + * 询价记录详情 + */ + private List orderPriceRecordDetails; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderQueryRefundDetailVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderQueryRefundDetailVO.java new file mode 100644 index 0000000..296bb59 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderQueryRefundDetailVO.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import com.deepinnet.tptradecore.common.vo.contract.TpQueryAvailableRefundVoucherVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/31 10:23 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpOrderQueryRefundDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单详情 + */ + @ApiModelProperty(value = "订单详情") + private TpOrderDetailVO orderDetailVO; + + /** + * 可退凭证列表 + */ + @ApiModelProperty(value = "可退凭证列表") + private List voucherDTOList; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderReceivedVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderReceivedVO.java new file mode 100644 index 0000000..d230d91 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderReceivedVO.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 订单接单 + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +public class TpOrderReceivedVO implements Serializable { + + private static final long serialVersionUID = -6835649297585208663L; + + /** + * 接单单据好 + */ + private String receivedNo; + + /** + * 业务单据编号 + */ + private String bizObjNo; + + /** + * 业务单据类型 + */ + private String bizObjType; + + /** + * 接单组织编号 + */ + private String orgNo; + + /** + * 接单组织名称 + */ + private String orgName; + + /** + * 接单人编号 + */ + private String receiverNo; + + /** + * 接单人名称 + */ + private String receiverName; + + /** + * 接单时间 + */ + private Long receivedTime; + + /** + * 接单状态 + */ + private Integer receivedStatus; + + /** + * 业务扩展字段 + */ + private Map bizData; + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRefundVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRefundVO.java new file mode 100644 index 0000000..83378a6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRefundVO.java @@ -0,0 +1,30 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpOrderRefundVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 退票订单号 + */ + private String orderNo; + + /** + * 退票状态 + */ + private String refundStatus; + + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRequirementUserVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRequirementUserVO.java new file mode 100644 index 0000000..6c47c36 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRequirementUserVO.java @@ -0,0 +1,54 @@ +package com.deepinnet.tptradecore.common.vo.order; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 用车需求方 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Data +public class TpOrderRequirementUserVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 用车人名称 + */ + @ApiModelProperty(value = "用车人名称") + private String requirementName; + + /** + * 用车需求方联系人名称 + */ + @ApiModelProperty(value = "用车方联系人名称") + private String requirementContactName; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + private String requirementContact; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleInfoVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleInfoVO.java new file mode 100644 index 0000000..2c6a33f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleInfoVO.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Getter +@Setter +public class TpOrderRescheduleInfoVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签编号 + */ + private String rescheduleNo; + + /** + * 改签前售卖单元编号 + */ + private String subjectItemNo; + + /** + * 改签后售卖单元编号 + */ + private String rescheduleSubjectItemNo; + + /** + * 班次日期 + */ + private String shuttleDate; + + /** + * 班次时间 + */ + private String shuttleTime; + + /** + * 改签后班次日期 + */ + private String rescheduleShuttleDate; + + /** + * 改签后班次时间 + */ + private String rescheduleShuttleTime; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 乘客姓名 + */ + private String passengerName; + + /** + * 乘客数量 + */ + private Integer passengerCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleRecordVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleRecordVO.java new file mode 100644 index 0000000..6c5ff9d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRescheduleRecordVO.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Data +public class TpOrderRescheduleRecordVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签编号 + */ + private String rescheduleNo; + + /** + * 改签后订单编号 + */ + private String orderNo; + + /** + * 改签前订单编号 + */ + private String originalOrderNo; + + /** + * 改签信息 + */ + private List orderRescheduleInfos; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 改签申请时间 + */ + private Long rescheduleTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteShuttleVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteShuttleVO.java new file mode 100644 index 0000000..646d299 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteShuttleVO.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderRouteShuttleVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 线路编号 + */ + @ApiModelProperty(value = "线路编号") + private String routeNo; + + /** + * 班次编号 + */ + @ApiModelProperty(value = "班次编号") + private String shuttleNo; + + /** + * 班次名称 + */ + @ApiModelProperty(value = "班次名称") + private String shuttleName; + + /** + * 班次发车时间 + */ + @ApiModelProperty(value = "班次发车时间") + private String shuttleTime; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型") + private String tripType; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteVO.java new file mode 100644 index 0000000..168bcb5 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderRouteVO.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderRouteVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 线路编号 + */ + @ApiModelProperty(value = "线路编号") + private String routeNo; + + /** + * 线路名称 + */ + @ApiModelProperty(value = "线路名称") + private String routeName; + + /** + * 去程 / 返程 + */ + @ApiModelProperty(value = "去程-go / 返程-back") + private String roundTrip; + + /** + * 营运日期 + */ + @ApiModelProperty("营运日期:work_day-仅工作日运行、weekend-仅非工作日运行、full_time-全时段运行、week_day-每周几循环运行") + private String workTime; + + /** + * 时刻表 + */ + @ApiModelProperty(value = "时刻表,滚动发车时间 / 班次时间") + private String timeSchedule; + + /** + * 线路所属车队 + */ + @ApiModelProperty(value = "线路所属车队") + private String belongFleet; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 班次 + */ + @ApiModelProperty(value = "班次") + private List tpOrderRouteShuttle; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemElementVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemElementVO.java new file mode 100644 index 0000000..dfab91b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemElementVO.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 标的项要素 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderSubjectItemElementVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编码 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 标的项编码 + */ + @ApiModelProperty(value = "标的项编号") + private String itemNo; + + /** + * 要素code + */ + @ApiModelProperty(value = "要素Code") + private String elementCode; + + /** + * 要素名称 + */ + @ApiModelProperty(value = "要素名称") + private String elementName; + + /** + * 要素值 + */ + @ApiModelProperty(value = "要素值") + private String elementValue; + + /** + * 要素单位 + */ + @ApiModelProperty(value = "要素单位") + private String elementUnit; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemVO.java new file mode 100644 index 0000000..5d28283 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderSubjectItemVO.java @@ -0,0 +1,101 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 标的项 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderSubjectItemVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标的编码 + */ + @ApiModelProperty(value = "标的项编码") + private String itemNo; + + /** + * 订单编码 + */ + @ApiModelProperty(value = "订单编码") + private String orderNo; + + /** + * 乘客编码 + */ + @ApiModelProperty(value = "乘客编码") + private String passengerNo; + + /** + * 乘客人数 + */ + @ApiModelProperty(value = "乘客人数") + private Integer passengerCount; + + /** + * 用车天数 + */ + @ApiModelProperty(value = "用车天数") + private Integer days; + + /** + * 是否包含司机食宿 + */ + @ApiModelProperty(value = "是否包含司机食宿") + private String includeDriverExpenses; + + /** + * 行程类型 + */ + @ApiModelProperty(value = "行程类型") + private String tripType; + + /** + * 标的名称 + */ + @ApiModelProperty(value = "标的项名称") + private String name; + + /** + * 标的类型 + */ + @ApiModelProperty(value = "标的项类型") + private String type; + + /** + * 购买标的项数量 + */ + @ApiModelProperty(value = "标的项数量") + private Integer count; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 乘客信息 + */ + @ApiModelProperty(value = "乘客信息") + private TpOrderPassengerVO passenger; + + /** + * 标的项要素 + */ + @ApiModelProperty(value = "标的项要素") + private List orderItemElements; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTargetServiceVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTargetServiceVO.java new file mode 100644 index 0000000..c69937d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTargetServiceVO.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 服务对象 + *

+ * + * @author chenjiaju + * @since 2023/8/1 + */ + +@Data +public class TpOrderTargetServiceVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编码 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 服务方名称 + */ + @ApiModelProperty(value = "服务方名称") + private String targetName; + + /** + * 服务方唯一编码 + */ + @ApiModelProperty(value = "服务方唯一编码") + private String targetNumber; + + /** + * bizData + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTransportationVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTransportationVO.java new file mode 100644 index 0000000..948dbd3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTransportationVO.java @@ -0,0 +1,78 @@ +package com.deepinnet.tptradecore.common.vo.order; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 承运交通工具 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderTransportationVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 派单编码 + */ + @ApiModelProperty(value = "派单编码") + private String dispatchNo; + + /** + * 承运交通工具编码 + */ + @ApiModelProperty(value = "交通工具编码") + private String transportationNo; + + /** + * 司机 + */ + @ApiModelProperty(value = "司机") + private String driver; + + /** + * 状态 + */ + @ApiModelProperty(value = "状态") + private Integer status; + + /** + * 位置 + */ + @ApiModelProperty(value = "位置") + private String position; + + /** + * 类型 + */ + @ApiModelProperty(value = "类型") + private Integer type; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 承运司机 + */ + @ApiModelProperty(value = "承运司机") + private List orderDriverInfo; + + /** + * 承运车辆信息 + */ + @ApiModelProperty(value = "承运车辆信息") + private List orderVehicleInfos; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelDispatchRecordVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelDispatchRecordVO.java new file mode 100644 index 0000000..34e4e5b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelDispatchRecordVO.java @@ -0,0 +1,108 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 行程单车辆派单记录 + *

+ * + * @author abel + * @since 2023-11-23 + */ +@Data +@ApiModel(value = "车辆派单记录") +public class TpOrderTravelDispatchRecordVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 行程单号 + */ + @ApiModelProperty(value = "行程单号") + private String tripNo; + + /** + * 行程类型(go;back) + * @see com.deepinnet.tptradecore.common.enums.order.TpOrderTripTypeEnum + */ + @ApiModelProperty(value = "行程类型(go;back)") + private String tripType; + + /** + * 车队ID + */ + @ApiModelProperty(value = "车队ID") + private String fleetId; + + /** + * 车队组织 + */ + @ApiModelProperty(value = "车队名称") + private String fleetName; + + /** + * 出发时间 + */ + @ApiModelProperty(value = "出发时间") + private Long departureTime; + + /** + * 到达时间 + */ + @ApiModelProperty(value = "到达时间") + private Long arriveTime; + + /** + * 车辆规格 + */ + @ApiModelProperty(value = "车辆规格编码") + private String busSpecificationCode; + + /** + * 车辆名称 + */ + @ApiModelProperty(value = "车辆名称") + private String busName; + + /** + * 车牌号 + */ + @ApiModelProperty(value = "车牌号") + private String busPlate; + + /** + * 司机名称 + */ + @ApiModelProperty(value = "司机名称") + private String driverName; + + /** + * 司机手机号 + */ + @ApiModelProperty(value = "司机手机号") + private String driverPhone; + + /** + * 天包车表示第几天 + */ + @ApiModelProperty(value = "包车中代表当前车辆是第几天的车辆") + private Integer dayIndex; + + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "拓展字段") + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelTripVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelTripVO.java new file mode 100644 index 0000000..8fc0ff2 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTravelTripVO.java @@ -0,0 +1,110 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.enums.order.TpOrderTravelTripStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + *

+ * 行程单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderTravelTripVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 行程单编号 + */ + @ApiModelProperty(value = "行程单编号") + private String tripNo; + + /** + * 订单编号 + */ + @ApiModelProperty(value = "订单编号") + private String orderNo; + + /** + * 乘客数量 + */ + @ApiModelProperty(value = "乘客数量") + private Integer passengerCount; + + /** + * 公里数 + */ + @ApiModelProperty(value = "公里数") + private String miles; + + /** + * 上车点code + */ + @ApiModelProperty(value = "上车点code") + private String pickUpLocationCode; + + /** + * 上车点名称 + */ + @ApiModelProperty(value = "上车点名称") + private String pickUpLocation; + + /** + * 下车点code + */ + @ApiModelProperty(value = "下车点code") + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + @ApiModelProperty(value = "下车点名称") + private String dropOffLocation; + + /** + * 出发时间 + */ + @ApiModelProperty(value = "出发时间") + private String startTime; + + /** + * 到达时间 + */ + @ApiModelProperty(value = "到达时间") + private String endTime; + + /** + * 行程单 行程类型 + */ + @ApiModelProperty(value = "行程单行程类型(go;back)") + private String tripType; + + /** + * 该行程单状态 + * @see TpOrderTravelTripStatusEnum + */ + @ApiModelProperty(value = "行程单行程状态") + private String tripStatus; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + + /** + * 位置信息 + */ + @ApiModelProperty(value = "位置信息") + private List tripPositions; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTripPositionVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTripPositionVO.java new file mode 100644 index 0000000..2159dd0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderTripPositionVO.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 位置信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderTripPositionVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 行程单编号 + */ + @ApiModelProperty(value = "行程单编号") + private String tripNo; + + /** + * 位置编码 + */ + @ApiModelProperty(value = "位置编码") + private String locationCode; + + /** + * 位置名称 + */ + @ApiModelProperty(value = "位置名称") + private String locationName; + + /* + * 经度 + */ + @ApiModelProperty(value = "经度") + private String lng; + + /** + * 维度 + */ + @ApiModelProperty(value = "纬度") + private String lat; + + /** + * 排序 + */ + @ApiModelProperty(value = "排序(最小为起点,最大为终点,中间数为途径点)") + private String index; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderVehicleInfoVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderVehicleInfoVO.java new file mode 100644 index 0000000..27b9725 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpOrderVehicleInfoVO.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 车辆信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpOrderVehicleInfoVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 交通工具编码 + */ + @ApiModelProperty(value = "交通工具编码") + private String transportationNo; + + /** + * 车牌号 + */ + @ApiModelProperty(value = "车牌号") + private String vehicleNumber; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpSalesUnitCarpoolVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpSalesUnitCarpoolVO.java new file mode 100644 index 0000000..926d4d1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpSalesUnitCarpoolVO.java @@ -0,0 +1,86 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/5/24 + */ + +@Data +@NoArgsConstructor +@Accessors(chain = true) +public class TpSalesUnitCarpoolVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + private Integer id; + /** + * 线路名称 + */ + private String routeName; + /** + * 线路编号 + */ + private String routeCode; + /** + * 产品编号 + */ + private String productCode; + /** + * 售卖单元编号 + */ + private String salesUnitCode; + /** + * 乘车日期,格式yyyyMMdd + */ + private String departDate; + /** + * 发车时间,格式HH:mm + */ + private String departTime; + /** + * 最低拼车人数 + */ + private Integer carPoolLimitNum; + /** + * 已拼车人数 + */ + private Integer soldQuantity; + /** + * 预售结束时间 + */ + private Long preSaleEndTime; + /** + * 取消拼车时间 + */ + private Long cancelCarPoolTime; + /** + * 拼车状态 + * @see com.deepinnet.tpproductcore.common.enums.TpCarPoolStatusEnum + */ + private String carPoolStatus; + /** + * 排序字段,糅合拼车状态、乘车日期和发车时间,优先展示拼车中且乘车日期和发车时间较小的拼车信息 + */ + private String sortKey; + /** + * 租户id + */ + private String tenantId; + /** + * 扩展字段 + */ + private String bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserPassengerVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserPassengerVO.java new file mode 100644 index 0000000..c000a7a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserPassengerVO.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerIdentityTypeEnum; +import com.deepinnet.tptradecore.common.enums.order.TpUserPassengerTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 乘客信息出参 + *

+ * + * @author taobinxian + * @version 2023-08-07 + */ + +@Data +public class TpUserPassengerVO implements Serializable { + + private static final long serialVersionUID = -7157914478824441426L; + + /** + * 乘客编号 + */ + @ApiModelProperty("乘客编号") + private String passengerNo; + + /** + * 乘客类型 + * @see TpUserPassengerTypeEnum + */ + @ApiModelProperty(value = "乘客类型(成人-ADULT;儿童-CHILD;残疾人-DEFORMED_MAN;老年人-OLD_PEOPLE;军人-MILITARY)", required = true) + private String passengerType; + + /** + * 乘客姓名 + */ + @ApiModelProperty(value = "乘客名称") + private String passengerName; + + /** + * 乘客证件类型 + * @see TpUserPassengerIdentityTypeEnum + */ + @ApiModelProperty(value = "乘客证件类型(001-身份证)") + private String identityType; + + /** + * 乘客证件编号 + */ + @ApiModelProperty(value = "证件号码") + private String identityNumber; + + /** + * 扩展字段 + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserRouteCollectionVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserRouteCollectionVO.java new file mode 100644 index 0000000..bf55476 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/order/TpUserRouteCollectionVO.java @@ -0,0 +1,107 @@ +package com.deepinnet.tptradecore.common.vo.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 用户线路收集 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +public class TpUserRouteCollectionVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 收集编号 + */ + @ApiModelProperty(value = "收集编号") + private String collectionNo; + + /** + * 用户编号 + */ + @ApiModelProperty(value = "用户编号") + private String userNo; + + /** + * 上车点名称 + */ + @ApiModelProperty(value = "上车点名称") + private String upLocation; + + /** + * 上车点经度 + */ + @ApiModelProperty(value = "上车点经度") + private String upLocationLng; + + /** + * 上车点维度 + */ + @ApiModelProperty(value = "上车点纬度") + private String upLocationLat; + + /** + * 下车点名称 + */ + @ApiModelProperty(value = "下车点名称") + private String downLocation; + + /** + * 下车点经度 + */ + @ApiModelProperty(value = "下车点经度") + private String downLocationLng; + + /** + * 下车点维度 + */ + @ApiModelProperty(value = "下车点纬度") + private String downLocationLat; + + /** + * 期望上车时间 + */ + @ApiModelProperty(value = "期望到达时间") + private String expectArriveTime; + + /** + * 期望下车时间 + */ + @ApiModelProperty(value = "期望返程时间") + private String expectBackTime; + + /** + * 出行目的 + */ + @ApiModelProperty(value = "出行目的") + private String travelPurpose; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + /** + * 手机号 + */ + @ApiModelProperty(value = "手机号") + private String phoneNumber; + + /** + * biz_data + */ + @ApiModelProperty(value = "扩展字段") + private Map bizData; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderCreateVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderCreateVO.java new file mode 100644 index 0000000..efd0d55 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderCreateVO.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.vo.trans; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2022-11-15 14:57 + * + * 创建支付单出参 + */ + +@Data +public class TpPayOrderCreateVO implements Serializable { + + private static final long serialVersionUID = 7136261333361346836L; + + /** + * 支付单号 + **/ + private String payOrderNo; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderVO.java new file mode 100644 index 0000000..c1692ff --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPayOrderVO.java @@ -0,0 +1,92 @@ +package com.deepinnet.tptradecore.common.vo.trans; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * @author taobinxian + * @version 2023-08-07 + */ +@Data +public class TpPayOrderVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 业务单号 + */ + private String bizNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 优惠金额 + */ + private String discountAmount; + + /** + * 支付金额 + */ + private String paymentAmount; + + /** + * 支付方式 + */ + private String payType; + + /** + * 支付场景 + */ + private String payScene; + + /** + * 支付单状态 + */ + private String status; + + /** + * 支付时间 + */ + private Date payTime; + + /** + * 支付宝或微信的交易号 + */ + private String outPayFlowId; + + /** + * 是否计费 + */ + private boolean billingRequired; + + /** + * 收入账户 + */ + private String inAccount; + + /** + * 支出账号 + */ + private String outAccount; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPreparePayVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPreparePayVO.java new file mode 100644 index 0000000..3ed317a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpPreparePayVO.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.vo.trans; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2022-10-31 11:29 + *

+ * 向第三方支付平台发起预支付的响应值,返回收银台的form表单 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPreparePayVO implements Serializable { + + private static final long serialVersionUID = 9036918997756936193L; + + /** + * 预支付结果 + */ + private String prepayResult; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryPayResultVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryPayResultVO.java new file mode 100644 index 0000000..6eb7a97 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryPayResultVO.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.vo.trans; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2022-11-08 11:37 + *

+ * 在第三方支付平台查询支付结果的返回值 + */ +@Data +public class TpQueryPayResultVO implements Serializable { + + private static final long serialVersionUID = 6151927360028137085L; + + /** + * 是否支付成功 + */ + @ApiModelProperty(value = "支付结果") + private boolean paySuccess; + + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String bizNo; + + /** + * 支付单号 + */ + @ApiModelProperty(value = "支付单号") + private String payOrderNo; + + /** + * 支付宝或微信的交易号 + */ + @ApiModelProperty(value = "支付宝或微信的交易号") + private String outPayFlowId; + + /** + * 支付时间 + */ + @ApiModelProperty(value = "支付时间") + private Long payTime; + + /** + * 支付方式 + */ + @ApiModelProperty(value = "支付方式") + private String payType; + + /** + * 支付场景 + */ + @ApiModelProperty(value = "支付场景") + private String payScene; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryRefundResultVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryRefundResultVO.java new file mode 100644 index 0000000..247874f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/trans/TpQueryRefundResultVO.java @@ -0,0 +1,49 @@ +package com.deepinnet.tptradecore.common.vo.trans; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2022-11-08 11:37 + *

+ * 在第三方支付平台查询支付结果的返回值 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryRefundResultVO implements Serializable { + + private static final long serialVersionUID = 6151927360028137085L; + + /** + * 是否退款成功 + */ + private boolean success; + + /** + * 退款申请单号 + */ + private String bizNo; + + /** + * 退款支付单号 + */ + private String payOrderNo; + + /** + * 支付宝或微信的交易号-微信支付退款单号 + */ + private String outPayFlowId; + + /** + * 退款时间 + */ + private LocalDateTime refundTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpBuyLimitQueryVoucherVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpBuyLimitQueryVoucherVO.java new file mode 100644 index 0000000..de7811d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpBuyLimitQueryVoucherVO.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/12/21 15:50 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpBuyLimitQueryVoucherVO implements Serializable { + /** + * 今天凭证数量 + */ + private Integer dayVoucherCount; + + /** + * 本周凭证数量 + */ + private Integer weekVoucherCount; + + /** + * 本月凭证数量 + */ + private Integer monthVoucherCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpMngVerificationRecordDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpMngVerificationRecordDTO.java new file mode 100644 index 0000000..c4c4d93 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpMngVerificationRecordDTO.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherPassengerDTO; +import com.deepinnet.tptradecore.common.vo.order.TpOrderTravelTripVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2024/3/12 11:40 + * @Description + */ +@Data +public class TpMngVerificationRecordDTO implements Serializable { + @ApiModelProperty(value = "乘车时间") + private Long verificationTime; + + @ApiModelProperty(value = "乘客信息") + private TpVoucherPassengerDTO passengerDTO; + + @ApiModelProperty(value = "产品类目编号") + private String productCategoryNo; + + @ApiModelProperty(value = "产品类目名称") + private String productCategoryName; + + @ApiModelProperty("线路编号") + private String routeNo; + + @ApiModelProperty("线路名称") + private String routeName; + + @ApiModelProperty(value = "班次时间") + private String shuttleTime; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "用户手机号") + private String phone; + + @ApiModelProperty(value = "用户编号") + private String userNo; + + @ApiModelProperty(value = "行程信息:包含上下车点") + private TpOrderTravelTripVO tpOrderTravelTrip; + + @ApiModelProperty(value = "行程类型") + private String tripType; + + @ApiModelProperty(value = "核销方式") + private String validationType; + + @ApiModelProperty(value = "乘车人数") + private Integer verificationPassengerCount; + + @ApiModelProperty(value = "车票类型:day-日票,week-周票,term-学期票,month-月票,year-年票") + private String voucherType; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQrCodeQueryVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQrCodeQueryVO.java new file mode 100644 index 0000000..8f65d16 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQrCodeQueryVO.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import lombok.*; + +import java.io.*; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/18 13:44 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQrCodeQueryVO implements Serializable { + + private static final long serialVersionUID = 6386906767980334499L; + + /** + * 凭证信息 + */ + private List voucherDTOs; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQueryVoucherListVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQueryVoucherListVO.java new file mode 100644 index 0000000..3fb9d9a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpQueryVoucherListVO.java @@ -0,0 +1,25 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import lombok.*; + +import java.io.*; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/21 13:52 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpQueryVoucherListVO implements Serializable { + + private static final long serialVersionUID = 3678800136050185544L; + /** + * 凭证列表 + */ + private List voucherDTOs; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeExistVerificationRecordDateQueryVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeExistVerificationRecordDateQueryVO.java new file mode 100644 index 0000000..e64d903 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeExistVerificationRecordDateQueryVO.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/1/11 11:33 + * @Description + */ +@Data +@AllArgsConstructor +public class TpTimeRangeExistVerificationRecordDateQueryVO implements Serializable { + + /** + * 有核销记录的日期列表 + */ + @ApiModelProperty(value = "有核销记录的日期列表") + private List verificationSuccessTimeList; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeUserVerificationRecordDetailQueryVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeUserVerificationRecordDetailQueryVO.java new file mode 100644 index 0000000..4a4a695 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpTimeRangeUserVerificationRecordDetailQueryVO.java @@ -0,0 +1,23 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import com.deepinnet.tptradecore.common.dto.voucher.*; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + * @author amos wong + * @create 2024/1/11 11:33 + * @Description + */ +@Data +public class TpTimeRangeUserVerificationRecordDetailQueryVO implements Serializable { + /** + * 核销记录列表 + */ + @ApiModelProperty(value = "核销记录列表,按照订单分组") + private List recordDTOList; +} + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpVoucherCheckVO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpVoucherCheckVO.java new file mode 100644 index 0000000..0629210 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-facade/src/main/java/com/deepinnet/tptradecore/common/vo/voucher/TpVoucherCheckVO.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.vo.voucher; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/10/23 15:58 + * @Description + */ +@Data +@Builder +public class TpVoucherCheckVO implements Serializable { + + private static final long serialVersionUID = 5577627139303152771L; + + /** + * 检票结果 + */ + private Boolean checkResult; + + /** + * 是否允许继续验票 + */ + private Boolean availableContinueCheck; + + /** + * 是否是一次性核销 + */ + private Boolean isOneTimeVerification; + + /** + * 核销人数 + */ + private Integer verificationPassengerCount; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/pom.xml b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/pom.xml new file mode 100644 index 0000000..ba9829c --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.deepinnet + tptradecore-common-service + 1.0-SNAPSHOT + + + tptradecore-common-service-integration + + + + org.apache.dubbo + dubbo + + + + com.github.javen205 + IJPay-All + + + + com.github.xkzhangsan + xk-time + + + + com.alipay.sdk + alipay-sdk-java + + + + com.deepinnet + tptradecore-common-util + + + + com.deepinnet + tptradecore-common-service-facade + + + + com.deepinnet + tpconfigcore-common-service-facade + + + + com.deepinnet + tpcommoncore-common-service-facade + + + + com.deepinnet + tpproductcore-common-service-facade + + + + com.deepinnet + tpbaseopcore-common-service-facade + + + + + org.apache.rocketmq + rocketmq-spring-boot-starter + + + + org.springframework.retry + spring-retry + + + + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/AlipayRequestBuilder.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/AlipayRequestBuilder.java new file mode 100644 index 0000000..cc4667d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/AlipayRequestBuilder.java @@ -0,0 +1,165 @@ +package com.deepinnet.tptradecore.common.service.integration.builder; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.net.URLEncodeUtil; +import cn.hutool.json.JSONUtil; +import com.alipay.api.domain.*; +import com.alipay.api.request.*; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; + +/** + * @author amos wong + * @create 2022-11-14 19:51 + */ + +public class AlipayRequestBuilder { + public static AlipayTradeWapPayRequest buildTradeWapPayRequest(PayPlatformPreparePayDTO prepayRequestDTO, String returnUrl, String notifyUrl) { + AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest(); + AlipayTradeWapPayModel model = new AlipayTradeWapPayModel(); + + model.setOutTradeNo(prepayRequestDTO.getBizNo()); + + // ATTENTION:支付宝接收的是元 + String cny = prepayRequestDTO.getPayAmount().toString(); + LogUtil.info("向支付宝发起预支付请求,订单号为:{},请求的金额为:{}元", prepayRequestDTO.getBizNo(), cny); + model.setTotalAmount(cny); + + model.setSubject(prepayRequestDTO.getPayTitle()); + model.setProductCode(PayPlatformConstants.ALIPAY_QUICK_WAP_PRODUCT_CODE); + + // ATTENTION:注意日期格式 + String expireTime = DateUtil.format(prepayRequestDTO.getPayTimeout(), PayPlatformConstants.ALIPAY_DATE_FORMAT); + model.setTimeExpire(expireTime); + + // 设置需要回传的参数 + String encodePassBackParams = buildEncodePassBackParams(prepayRequestDTO.getOrgCode(), prepayRequestDTO.getPayScene(), prepayRequestDTO.getBizType(), null, prepayRequestDTO.getTenantId()); + model.setPassbackParams(encodePassBackParams); + + alipayRequest.setBizModel(model); + alipayRequest.setReturnUrl(returnUrl); + alipayRequest.setNotifyUrl(notifyUrl); + return alipayRequest; + } + + public static AlipayTradeAppPayRequest buildTradeAppPayRequest(PayPlatformPreparePayDTO prepayRequestDTO, String returnUrl, String notifyUrl) { + AlipayTradeAppPayRequest alipayRequest = new AlipayTradeAppPayRequest(); + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + + model.setOutTradeNo(prepayRequestDTO.getBizNo()); + + // ATTENTION:支付宝接收的是元 + String cny = prepayRequestDTO.getPayAmount().toString(); + LogUtil.info("向支付宝发起预支付请求,订单号为:{},请求的金额为:{}元", prepayRequestDTO.getBizNo(), cny); + model.setTotalAmount(cny); + + model.setSubject(prepayRequestDTO.getPayTitle()); + model.setProductCode(PayPlatformConstants.ALIPAY_QUICK_MSECURITY_PRODUCT_CODE); + + // ATTENTION:注意日期格式 + String expireTime = DateUtil.format(prepayRequestDTO.getPayTimeout(), PayPlatformConstants.ALIPAY_DATE_FORMAT); + model.setTimeExpire(expireTime); + + // 设置需要回传的参数 + String encodePassBackParams = buildEncodePassBackParams(prepayRequestDTO.getOrgCode(), prepayRequestDTO.getPayScene(), prepayRequestDTO.getBizType(), null, prepayRequestDTO.getTenantId()); + model.setPassbackParams(encodePassBackParams); + + alipayRequest.setBizModel(model); + alipayRequest.setReturnUrl(returnUrl); + alipayRequest.setNotifyUrl(notifyUrl); + return alipayRequest; + } + + public static AlipayTradeCreateRequest buildTradeMiniProgramPayRequest(PayPlatformPreparePayDTO prepayRequestDTO, String appId, String notifyUrl) { + AlipayTradeCreateRequest alipayRequest = new AlipayTradeCreateRequest(); + AlipayTradeCreateModel model = new AlipayTradeCreateModel(); + + model.setOutTradeNo(prepayRequestDTO.getBizNo()); + + // ATTENTION:支付宝接收的是元 + String cny = prepayRequestDTO.getPayAmount().toString(); + LogUtil.info("向支付宝发起预支付请求,订单号为:{},请求的金额为:{}元", prepayRequestDTO.getBizNo(), cny); + model.setTotalAmount(cny); + + model.setSubject(prepayRequestDTO.getPayTitle()); + model.setProductCode(PayPlatformConstants.ALIPAY_JSAPI_PRODUCT_CODE); + model.setOpBuyerOpenId(prepayRequestDTO.getBuyerId()); + model.setOpAppId(appId); + + // ATTENTION:注意日期格式 + String expireTime = DateUtil.format(prepayRequestDTO.getPayTimeout(), PayPlatformConstants.ALIPAY_DATE_FORMAT); + model.setTimeExpire(expireTime); + + // 设置需要回传的参数 + String encodePassBackParams = buildEncodePassBackParams(prepayRequestDTO.getOrgCode(), prepayRequestDTO.getPayScene(), prepayRequestDTO.getBizType(), prepayRequestDTO.getAppId(), prepayRequestDTO.getTenantId()); + model.setPassbackParams(encodePassBackParams); + + alipayRequest.setBizModel(model); + alipayRequest.setReturnUrl(prepayRequestDTO.getReturnUrl()); + alipayRequest.setNotifyUrl(notifyUrl); + return alipayRequest; + } + + public static AlipayTradeQueryRequest buildTradeQueryRequest(String outTradeNo) { + AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); + AlipayTradeQueryModel model = new AlipayTradeQueryModel(); + model.setOutTradeNo(outTradeNo); + request.setBizModel(model); + return request; + } + + public static AlipayTradeRefundRequest buildTradeRefundRequest(PayPlatformRefundDTO refundDTO) { + AlipayTradeRefundRequest refundRequest = new AlipayTradeRefundRequest(); + AlipayTradeRefundModel model = new AlipayTradeRefundModel(); + + model.setTradeNo(refundDTO.getOutPayFlowId()); + model.setOutRequestNo(refundDTO.getRefundOutRequestNo()); + + // ATTENTION:支付宝接受的是元 + String cny = refundDTO.getRefundAmount().toString(); + model.setRefundAmount(cny); + model.setQueryOptions(Lists.newArrayList(Lists.newArrayList(PayPlatformConstants.REFUND_DETAIL_ITEM_LIST))); + LogUtil.info("构建支付宝退款请求,入参为:{}, 订单号为:{},向支付宝申请的退款金额为:{}", JSONUtil.toJsonStr(refundDTO), refundDTO.getRefundOutRequestNo(), cny); + + refundRequest.setBizModel(model); + return refundRequest; + } + + public static AlipayTradeFastpayRefundQueryRequest buildRefundQueryRequest(String outPayFlowId, String outRequestNo) { + AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest(); + AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel(); + // 正向支付的交易单号 + model.setTradeNo(outPayFlowId); + // 退款请求号,用于幂等 + model.setOutRequestNo(outRequestNo); + model.setQueryOptions(Lists.newArrayList(PayPlatformConstants.ALIPAY_GMT_REFUND_PAY)); + request.setBizModel(model); + return request; + } + + public static AlipayTradeCloseRequest buildTradeCloseRequest(String outTradeNo) { + AlipayTradeCloseRequest closeRequest = new AlipayTradeCloseRequest(); + AlipayTradeCloseModel model = new AlipayTradeCloseModel(); + model.setOutTradeNo(outTradeNo); + closeRequest.setBizModel(model); + return closeRequest; + } + + private static String buildEncodePassBackParams(String orgCode, String payScene, String bizType, String appId, String tenantId) { + String needEncodeParams = PayPlatformConstants.TENANT_ID + GlobalConstants.EQUAL_SIGN + tenantId + + GlobalConstants.AND + PayPlatformConstants.ORG_CODE + GlobalConstants.EQUAL_SIGN + orgCode + + GlobalConstants.AND + PayPlatformConstants.PAY_SCENE + GlobalConstants.EQUAL_SIGN + payScene + + GlobalConstants.AND + PayPlatformConstants.BIZ_TYPE + GlobalConstants.EQUAL_SIGN + bizType; + + // 只有支付宝小程序需要回传appId + if (StringUtils.isNotBlank(appId)) { + needEncodeParams += GlobalConstants.AND + PayPlatformConstants.APP_ID + GlobalConstants.EQUAL_SIGN + appId; + } + + return URLEncodeUtil.encodeAll(needEncodeParams); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/WechatPayRequestBuilder.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/WechatPayRequestBuilder.java new file mode 100644 index 0000000..7904b3f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/builder/WechatPayRequestBuilder.java @@ -0,0 +1,120 @@ +package com.deepinnet.tptradecore.common.service.integration.builder; + +import cn.hutool.core.date.*; +import cn.hutool.core.net.URLEncodeUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.dto.PayPlatformPreparePayDTO; +import com.ijpay.wxpay.model.*; +import com.ijpay.wxpay.model.v3.RefundModel; +import com.ijpay.wxpay.model.v3.UnifiedOrderModel; +import com.ijpay.wxpay.model.v3.*; +import org.apache.commons.lang3.StringUtils; + +import java.time.*; +import java.util.Date; + +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.BUILD_WECHAT_REQUEST_ERROR; + +/** + * @author amos wong + * @create 2022-11-16 11:33 + */ + +public class WechatPayRequestBuilder { + public static UnifiedOrderModel buildPreparePayModel(PayPlatformPreparePayDTO preparePayRequestDTO, String appId, + String mchId, String notifyUrl, LocalDateTime payTimeout) { + try { + String outTradeNo = preparePayRequestDTO.getBizNo(); + // 编码的回传参数 + String encodePassBackParams = buildEncodePassBackParams(preparePayRequestDTO.getOrgCode(), preparePayRequestDTO.getPayScene(), preparePayRequestDTO.getBizType(), appId, preparePayRequestDTO.getTenantId()); + + SceneInfo sceneInfo = null; + if (StringUtils.equals(preparePayRequestDTO.getPayScene(), TpPaySceneEnum.H5.getCode())) { + // 场景类型示例值:iOS, Android, Wap + H5Info h5Info = new H5Info().setType(PayPlatformConstants.WECHAT_H5_INFO_TYPE); + // 调用微信支付API的机器IP,支持IPv4和IPv6两种格式的IP地址 + sceneInfo = new SceneInfo() + .setPayer_client_ip(preparePayRequestDTO.getUserIp()) + .setH5_info(h5Info); + } + + // Long转时间戳 + ZoneId zone = ZoneId.systemDefault(); + ZonedDateTime zonedDateTime = payTimeout.atZone(zone); + DateTime dateTime = DateTime.of(Date.from(zonedDateTime.toInstant())); + + UnifiedOrderModel orderModel = new UnifiedOrderModel() + // appId + .setAppid(appId) + // 商户号 + .setMchid(mchId) + // 商品描述 + .setDescription(preparePayRequestDTO.getPayTitle()) + // 商户订单号 + .setOut_trade_no(outTradeNo) + // 订单失效时间 + // TODO 订单失效时间根据配置拉出来的 + // TODO 这里涉及到Long转时间戳一定要小心,容易出问题 + .setTime_expire(DateUtil.format(dateTime, DatePattern.UTC_WITH_XXX_OFFSET_PATTERN)) + // 通知地址 + .setNotify_url(notifyUrl) + // 订单总金额,单位为分 + .setAmount(new Amount((int) preparePayRequestDTO.getPayAmount().getCent(), PayPlatformConstants.CURRENCY_CNY)) + .setAttach(encodePassBackParams); + if (sceneInfo != null) { + orderModel.setScene_info(sceneInfo); + } + + // 微信小程序支付需要塞入openid + String payScene = preparePayRequestDTO.getPayScene(); + if (StringUtils.equals(payScene, TpPaySceneEnum.WECHAT_MINI_PROGRAM.getCode()) || StringUtils.equals(payScene, TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT.getCode())) { + orderModel.setPayer(new Payer(preparePayRequestDTO.getBuyerId(), null, null)); + } + + LogUtil.info("微信支付预支付接口,组装请求微信支付的参数为:{}", JSONUtil.toJsonStr(orderModel)); + return orderModel; + } catch (Exception e) { + LogUtil.error("微信支付预支付接口,构造预支付请求参数时错误,投保单号:{},异常堆栈信息:{}", preparePayRequestDTO.getBizNo(), e); + throw new TpTradeCoreException(BUILD_WECHAT_REQUEST_ERROR); + } + } + + public static RefundModel buildRefundModel(String outPayFlowId, String refundBizNo, String notifyUrl, + Integer payAmount, Integer refundAmount) { + return new RefundModel() + .setTransaction_id(outPayFlowId) + .setOut_refund_no(refundBizNo) + .setNotify_url(notifyUrl) + .setAmount(new RefundAmount(payAmount, PayPlatformConstants.CURRENCY_CNY, refundAmount)); + } + + public static OrderQueryModel buildQueryPayResultModel(String mchId, String bizNo) { + return new OrderQueryModel() + .setMch_id(mchId) + .setOut_trade_no(bizNo); + } + + public static RefundQueryModel buildQueryRefundResultModel(String refundBizNo) { + return new RefundQueryModel() + .setOut_refund_no(refundBizNo); + } + + private static String buildEncodePassBackParams(String orgCode, String payScene, String bizType, String appId, String tenantId) { + String needEncodeParams = PayPlatformConstants.TENANT_ID + GlobalConstants.EQUAL_SIGN + tenantId + + GlobalConstants.AND + PayPlatformConstants.ORG_CODE + GlobalConstants.EQUAL_SIGN + orgCode + + GlobalConstants.AND + PayPlatformConstants.PAY_SCENE + GlobalConstants.EQUAL_SIGN + payScene + + GlobalConstants.AND + PayPlatformConstants.BIZ_TYPE + GlobalConstants.EQUAL_SIGN + bizType; + + // 微信小程序需要回传appId + if (StringUtils.isNotBlank(appId)) { + needEncodeParams += GlobalConstants.AND + PayPlatformConstants.APP_ID + GlobalConstants.EQUAL_SIGN + appId; + } + + return URLEncodeUtil.encodeAll(needEncodeParams); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpAliPayClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpAliPayClient.java new file mode 100644 index 0000000..34ee580 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpAliPayClient.java @@ -0,0 +1,319 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + + +import cn.hutool.json.JSONUtil; +import com.alipay.api.*; +import com.alipay.api.request.*; +import com.alipay.api.response.*; +import com.deepinnet.tp.common.lang.util.*; +import com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.builder.AlipayRequestBuilder; +import com.deepinnet.tptradecore.common.service.integration.config.*; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.deepinnet.tptradecore.common.service.integration.initializer.TpPayConfigInitializer; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.Date; + +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.PREPARE_PAY_ERROR; + +/** + * @author amos wong + * @create 2022-10-31 22:39 + *

+ * 与支付宝开放平台对接的工具类 + */ +@Component +@RefreshScope +public class TpAliPayClient { + + @Resource + private TpPayConfigInitializer payConfigInitializer; + + @Resource + private RetryTemplate retryTemplate; + + private static final String ALIPAY_GATEWAY_URL = "https://openapi.alipay.com/gateway.do"; + + public String preparePay(PayPlatformPreparePayDTO prepayRequestDTO) { + AlipayRequest alipayRequest = null; + try { + // 构建请求参数 + Pair alipayRequestPair = buildAlipayPrepareRequest(prepayRequestDTO); + + // 调用支付宝支付接口生成form表单 + alipayRequest = alipayRequestPair.getLeft(); + if (StringUtils.equals(prepayRequestDTO.getPayScene(), TpPaySceneEnum.ALI_MINI_PROGRAM.getCode())) { + TpAlipayMiniProgramConfig alipayMiniProgramConfig = alipayRequestPair.getRight(); + return alipayMiniProgramPrepay(alipayMiniProgramConfig, alipayRequest); + } + + AlipayClient alipayClient = payConfigInitializer.getPayConfig(prepayRequestDTO.getOrgCode(), prepayRequestDTO.getBizType(), prepayRequestDTO.getTenantId()).getAlipayClient(); + if (alipayClient == null) { + LogUtil.error("支付宝收款客户端不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(prepayRequestDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + AlipayResponse alipayResponse = alipayClient.pageExecute(alipayRequest, "GET"); + LogUtil.info("支付宝支付收银台地址:{}", JSONUtil.toJsonStr(alipayResponse)); + + // 处理结果 + if (!StringUtils.equals(alipayResponse.getCode(), PayPlatformConstants.ALIPAY_PREPAY_SUCCESS)) { + if (StringUtils.equals(alipayResponse.getSubCode(), PayPlatformConstants.ALIPAY_DUPLICATE_PAID_SUB_CODE)) { + LogUtil.error("当前订单已经支付,幂等处理,入参:{}", JSONUtil.toJsonStr(alipayRequest)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATE_PAY_REQUEST); + } + + if (StringUtils.isEmpty(alipayResponse.getBody())) { + LogUtil.error("调用支付宝接口失败,响应码:{},异常信息:{},业务单号:{}", alipayResponse.getCode(), alipayResponse.getMsg(), prepayRequestDTO.getBizNo()); + throw new TpTradeCoreException(PREPARE_PAY_ERROR, PREPARE_PAY_ERROR.getDesc()); + } + } + + // 返回form表单 + return alipayResponse.getBody(); + } catch (Exception e) { + LogUtil.error("请求支付宝预支付接口失败,请求支付宝的入参为:{},异常信息:{}", JSONUtil.toJsonStr(alipayRequest), e); + if (e instanceof TpTradeCoreException) { + throw (TpTradeCoreException) e; + } + throw new TpTradeCoreException(PREPARE_PAY_ERROR, PREPARE_PAY_ERROR.getDesc()); + } + } + + private String alipayMiniProgramPrepay(TpAlipayMiniProgramConfig alipayMiniProgramConfig, AlipayRequest alipayRequest) throws Exception { + AlipayClient alipayClient = buildAlipayClient(alipayMiniProgramConfig); + AlipayTradeCreateResponse alipayResponse = (AlipayTradeCreateResponse) alipayClient.execute(alipayRequest); + LogUtil.info("支付宝小程序请求支付,支付参数为:{}", JSONUtil.toJsonStr(alipayClient)); + if (!StringUtils.equals(alipayResponse.getCode(), PayPlatformConstants.ALIPAY_PREPAY_SUCCESS) || StringUtils.isBlank(alipayResponse.getTradeNo())) { + if (StringUtils.equals(alipayResponse.getSubCode(), PayPlatformConstants.ALIPAY_DUPLICATE_PAID_SUB_CODE)) { + LogUtil.error("当前订单已经支付,幂等处理,入参:{}", JSONUtil.toJsonStr(alipayRequest)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATE_PAY_REQUEST); + } + + LogUtil.error("调用支付宝接口失败,响应码:{},异常信息:{},业务单号:{}", alipayResponse.getCode(), alipayResponse.getMsg()); + throw new TpTradeCoreException(PREPARE_PAY_ERROR, PREPARE_PAY_ERROR.getDesc()); + } + + LogUtil.info("支付宝小程序预支付tradeNo:{}", alipayResponse.getTradeNo()); + return alipayResponse.getTradeNo(); + } + + public TpRefundResultDTO refund(PayPlatformRefundDTO refundDTO) { + + // 业务校验 + refundBizCheck(refundDTO); + + // 构建请求参数 + TpAlipayMiniProgramConfig alipayConfig; + + try { + AlipayTradeRefundRequest refundRequest; + + // 请求支付宝退款接口 + AlipayClient alipayClient; + if (StringUtils.equals(refundDTO.getPayScene(), TpPaySceneEnum.ALI_MINI_PROGRAM.getCode())) { + alipayConfig = payConfigInitializer.getAlipayMiniProgramPayConfig(null, refundDTO.getAppId()); + Assert.notNull(alipayConfig, "根据appId无法查询到对应的支付配置"); + refundRequest = AlipayRequestBuilder.buildTradeRefundRequest(refundDTO); + alipayClient = buildAlipayClient(alipayConfig); + } else { + refundRequest = AlipayRequestBuilder.buildTradeRefundRequest(refundDTO); + alipayClient = payConfigInitializer.getPayConfig(refundDTO.getOrgCode(), refundDTO.getRefundBizType(), refundDTO.getTenantId()).getAlipayClient(); + } + + if (alipayClient == null) { + LogUtil.error("支付宝收款客户端不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + LogUtil.info("向支付宝申请退款,参数为:{}", JSONUtil.toJsonStr(refundRequest)); + AlipayTradeRefundResponse response = retryTemplate.execute((RetryCallback) context -> alipayClient.execute(refundRequest)); + + // 分析响应结果 + if (response.isSuccess()) { + String fundChange = response.getFundChange(); + if (StringUtils.equals(fundChange, PayPlatformConstants.ALIPAY_FUND_CHANGE_Y)) { + TpMoney sendBackFee = new TpMoney(response.getSendBackFee(), TpMoney.ValueUnitEnum.YUAN); + if (refundDTO.getRefundAmount().compare(sendBackFee) == TpMoney.CompareResult.EQUAL) { + LogUtil.info("支付宝退款成功,入参为:{},支付平台退款金额为:{}元", JSONUtil.toJsonStr(refundDTO), response.getRefundFee()); + return TpRefundResultDTO.builder().refundTime(response.getGmtRefundPay().getTime()).success(true).build(); + } + + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_AMOUNT_ERROR); + } + } + + // 未直接返回退款成功,需要调用查询退款结果的接口查询 + TpRefundResultDTO refundResult = queryRefundResult(PayPlatformQueryResultDTO.builder() + .outPayFlowId(refundDTO.getOutPayFlowId()) + .bizType(refundDTO.getRefundBizType()) + .payScene(refundDTO.getPayScene()) + .appId(refundDTO.getAppId()) + .refundOutRequestNo(refundDTO.getRefundOutRequestNo()) + .orgCode(refundDTO.getOrgCode()) + .tenantId(refundDTO.getTenantId()).build()); + if (refundResult.isSuccess()) { + LogUtil.info("支付宝退款成功,入参为:{}", JSONUtil.toJsonStr(refundDTO)); + return refundResult; + } + + LogUtil.error("支付宝退款失败,向支付宝请求的入参为:{},失败原因为:{}", JSONUtil.toJsonStr(refundRequest), response.getMsg()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR); + } catch (Throwable e) { + LogUtil.error("退款接口执行失败,接口入参为:{},异常信息为:{}", JSONUtil.toJsonStr(refundDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR); + } + } + + public TpPayResultDTO queryPayResult(PayPlatformQueryResultDTO queryResultDTO) { + TpPayResultDTO payResultDTO = new TpPayResultDTO(); + String outTradeNo = queryResultDTO.getPayBizNo(); + AlipayTradeQueryRequest request = null; + try { + // 构建请求参数 + AlipayClient alipayClient; + if (!isAlipayMiniProgramPayScene(queryResultDTO.getPayScene())) { + request = AlipayRequestBuilder.buildTradeQueryRequest(outTradeNo); + alipayClient = payConfigInitializer.getPayConfig(queryResultDTO.getOrgCode(), queryResultDTO.getBizType(), queryResultDTO.getTenantId()).getAlipayClient(); + } else { + TpAlipayMiniProgramConfig alipayConfig = payConfigInitializer.getAlipayMiniProgramPayConfig(null, queryResultDTO.getAppId()); + Assert.notNull(alipayConfig, "支付宝小程序无法根据appId找到支付配置"); + request = AlipayRequestBuilder.buildTradeQueryRequest(outTradeNo); + alipayClient = buildAlipayClient(alipayConfig); + } + + if (alipayClient == null) { + LogUtil.error("支付宝收款客户端不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 调用支付宝查询支付结果的接口 + AlipayTradeQueryResponse response = alipayClient.execute(request); + + // 组装返回数据 + if (StringUtils.equals(response.getTradeStatus(), PayPlatformConstants.ALIPAY_TRADE_SUCCESS)) { + LogUtil.info("查询支付宝支付结果成功,订单号为:{},支付结果为:{}", outTradeNo, response.getTradeStatus()); + payResultDTO.setPaySuccess(true); + payResultDTO.setPayTime(response.getSendPayDate().getTime()); + } else { + payResultDTO.setPaySuccess(false); + } + payResultDTO.setOutPayFlowId(response.getTradeNo()); + payResultDTO.setBizNo(response.getOutTradeNo()); + return payResultDTO; + } catch (AlipayApiException e) { + LogUtil.error("查询支付宝支付结果失败,请求支付宝的入参为:{},异常堆栈信息为:{}", JSONUtil.toJsonStr(request), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + } + + public TpRefundResultDTO queryRefundResult(PayPlatformQueryResultDTO queryResultDTO) { + String outPayFlowId = queryResultDTO.getOutPayFlowId(); + boolean isAlipayMiniProgramScene = isAlipayMiniProgramPayScene(queryResultDTO.getPayScene()); + AlipayClient alipayClient; + AlipayTradeFastpayRefundQueryRequest request = null; + + try { + // 构建请求参数 + if (isAlipayMiniProgramScene) { + TpAlipayMiniProgramConfig alipayConfig = payConfigInitializer.getAlipayMiniProgramPayConfig(null, queryResultDTO.getAppId()); + Assert.notNull(alipayConfig, "支付宝小程序的支付配置不能为空"); + request = AlipayRequestBuilder.buildRefundQueryRequest(outPayFlowId, queryResultDTO.getRefundOutRequestNo()); + alipayClient = buildAlipayClient(alipayConfig); + } else { + request = AlipayRequestBuilder.buildRefundQueryRequest(outPayFlowId, queryResultDTO.getRefundOutRequestNo()); + alipayClient = payConfigInitializer.getPayConfig(queryResultDTO.getOrgCode(), queryResultDTO.getBizType(), queryResultDTO.getTenantId()).getAlipayClient(); + } + + if (alipayClient == null) { + LogUtil.error("支付宝收款客户端不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + AlipayTradeFastpayRefundQueryRequest finalRequest = request; + // 请求支付宝查询退款结果的接口 + LogUtil.info("调用支付宝查询退款结果接口,入参为:{}", JSONUtil.toJsonStr(request)); + AlipayTradeFastpayRefundQueryResponse response = retryTemplate.execute(((RetryCallback) context -> alipayClient.execute(finalRequest))); + + // 组装返回结果 + if (StringUtils.equals(response.getRefundStatus(), PayPlatformConstants.REFUND_SUCCESS)) { + LogUtil.info("支付宝查询退款结果,订单号:{},已经退款成功", outPayFlowId); + return TpRefundResultDTO.builder().success(true).refundTime(response.getGmtRefundPay().getTime()).bizNo(outPayFlowId).build(); + } else { + LogUtil.info("支付宝查询退款结果,订单号:{},退款失败,失败原因:{}", outPayFlowId, response.getMsg()); + Date refundDate = response.getGmtRefundPay(); + return TpRefundResultDTO.builder().success(false).refundTime(refundDate == null ? null : refundDate.getTime()).bizNo(outPayFlowId).build(); + } + } catch (Throwable e) { + LogUtil.info("支付宝查询退款结果,支付宝的请求入参为:{},异常堆栈为:{}", JSONUtil.toJsonStr(request), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR); + } + } + + private Pair buildAlipayPrepareRequest(PayPlatformPreparePayDTO prepayRequestDTO) { + String payScene = prepayRequestDTO.getPayScene(); + AlipayRequest alipayRequest; + TpAlipayMiniProgramConfig miniProgramConfig = null; + TpPaySceneEnum paySceneEnum = TpPaySceneEnum.getByCode(payScene); + if (paySceneEnum == null) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_SUPPORT_PAY_SCENE); + } + + if (paySceneEnum != TpPaySceneEnum.ALI_MINI_PROGRAM) { + TpAlipayConfig alipayConfig = payConfigInitializer.getPayConfig(prepayRequestDTO.getOrgCode(), prepayRequestDTO.getBizType(), prepayRequestDTO.getTenantId()).getAlipayConfig(); + if (paySceneEnum == TpPaySceneEnum.H5) { + alipayRequest = AlipayRequestBuilder.buildTradeWapPayRequest( + prepayRequestDTO, + prepayRequestDTO.getReturnUrl(), + alipayConfig.getPayNotifyUrl()); + } else { + alipayRequest = AlipayRequestBuilder.buildTradeAppPayRequest( + prepayRequestDTO, + alipayConfig.getReturnUrl(), + alipayConfig.getPayNotifyUrl()); + } + } else { + miniProgramConfig = payConfigInitializer.getAlipayMiniProgramPayConfig(null, prepayRequestDTO.getAppId()); + alipayRequest = AlipayRequestBuilder.buildTradeMiniProgramPayRequest(prepayRequestDTO, miniProgramConfig.getAppId(), miniProgramConfig.getNotifyUrl()); + } + + return Pair.of(alipayRequest, miniProgramConfig); + } + + /** + * 退款业务校验 + */ + private void refundBizCheck(@Valid PayPlatformRefundDTO refundDTO) { + TpMoney.CompareResult compareResult = refundDTO.getRefundAmount().compare(refundDTO.getPayAmount()); + if (compareResult == TpMoney.CompareResult.GREATER_THAN) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_AMOUNT_GREATER_THAN_PAY_AMOUNT); + } + } + + private boolean isAlipayMiniProgramPayScene(String payScene) { + return StringUtils.equals(payScene, TpPaySceneEnum.ALI_MINI_PROGRAM.getCode()); + } + + private AlipayClient buildAlipayClient(TpAlipayMiniProgramConfig alipayConfig) { + return new DefaultAlipayClient( + ALIPAY_GATEWAY_URL, + alipayConfig.getAppId(), + alipayConfig.getPrivateKey(), + PayPlatformConstants.DEFAULT_FORMAT, + PayPlatformConstants.DEFAULT_CHARSET, + alipayConfig.getPublicKey(), + PayPlatformConstants.DEFAULT_SIGN_TYPE); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpBizRuleClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpBizRuleClient.java new file mode 100644 index 0000000..2330dde --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpBizRuleClient.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.dto.rule.*; +import com.deepinnet.tpproductcore.common.service.facade.bizrule.TpBizRuleFacade; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2023/9/18 20:34 + * @Description 产品规则client + */ +@Component +public class TpBizRuleClient { + + @DubboReference + private TpBizRuleFacade bizRuleFacade; + + public TpRuleExecuteResultVO executeRule(TpRuleExecuteDTO bizRuleExecute) { + TpResult> result = bizRuleFacade.executeBizRule(bizRuleExecute); + if (!result.isSuccess()) { + LogUtil.error("规则域执行规则失败,请求体为:{}, 失败原因:{}", JSONUtil.toJsonStr(bizRuleExecute), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpCategoryClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpCategoryClient.java new file mode 100644 index 0000000..eb21861 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpCategoryClient.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.qto.category.TpCategoryQueryDTO; +import com.deepinnet.tpproductcore.common.service.facade.category.TpCategoryFacade; +import com.deepinnet.tpproductcore.common.vo.category.TpCategoryVO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/10/19 14:38 + * @Description + */ +@Component +public class TpCategoryClient { + + @DubboReference + private TpCategoryFacade categoryFacade; + + public List queryBackCategory(List frontCategoryCodes, String tenantId) { + TpCategoryQueryDTO queryDTO = new TpCategoryQueryDTO(); + queryDTO.setCodes(frontCategoryCodes); + queryDTO.setTenantId(tenantId); + + TpResult> tpResult = categoryFacade.queryBackCategory(queryDTO); + if (!tpResult.isSuccess()) { + LogUtil.error("根据前台类目查询后台类目code失败,入参为:{},失败原因为:{},{}", JSONUtil.toJsonStr(queryDTO), tpResult.getErrorCode(), tpResult.getErrorDesc()); + throw new TpException(tpResult.getErrorCode(), tpResult.getErrorDesc()); + } + + if (CollectionUtils.isEmpty(tpResult.getData())) { + LogUtil.error("根据前台类目查询后台类目code失败,后台类目不存在,入参为:{}", JSONUtil.toJsonStr(queryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_BACK_CATEGORY); + } + + return tpResult.getData(); + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpConfigClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpConfigClient.java new file mode 100644 index 0000000..adc80e1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpConfigClient.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpconfigcore.common.enums.*; +import com.deepinnet.tpconfigcore.common.service.facade.TpConfigItemFacade; +import com.deepinnet.tpconfigcore.common.vo.TpConfigItemVO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.entity.*; +import com.google.common.collect.Lists; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + * @author amos wong + * @create 2023/10/19 10:57 + * @Description + */ +@Service +public class TpConfigClient { + + @DubboReference + private TpConfigItemFacade tpConfigItemFacade; + + public List getFixedConfigValue(String tenantId, String categoryCode, String configItemKey) { + TpResult tpResult = tpConfigItemFacade.getConfigItem(TargetTypeEnum.BACK_CATEGORY.name(), categoryCode, tenantId, configItemKey); + if (!tpResult.isSuccess()) { + LogUtil.error("从交付工厂获取配置失败:{},{}", tpResult.getErrorCode(), tpResult.getErrorDesc()); + throw new TpException(tpResult.getErrorCode(), tpResult.getErrorDesc()); + } + + TpConfigItemVO data = tpResult.getData(); + if (data == null) { + LogUtil.error("从交付工厂获取配置失败,当前配置项值为空:{}", configItemKey); + throw new TpTradeCoreException(TpTradeCoreErrorCode.CONFIG_NOT_FOUND); + } + + LogUtil.info("从交付工厂获取配置成功,categoryCode:{},configKey:{},返回值:{}", categoryCode, configItemKey, JSONUtil.toJsonStr(data.getProdConfigItemInstance())); + if (StrUtil.equals(data.getType(), ConfigItemTypeEnum.SINGLE_CHOICE.name()) || StrUtil.equals(data.getType(), ConfigItemTypeEnum.INPUT.name())) { + TpConfigItemSingleValue configValue = JSON.parseObject(data.getProdConfigItemInstance().getValue(), TpConfigItemSingleValue.class); + return Lists.newArrayList(configValue.getSettingValue()); + } + + if (StrUtil.equals(data.getType(), ConfigItemTypeEnum.MULTI_CHOICE.name())) { + TpConfigItemMultiValue configValue = JSON.parseObject(data.getProdConfigItemInstance().getValue(), TpConfigItemMultiValue.class); + return configValue.getSettingValue(); + } + + throw new TpTradeCoreException(TpTradeCoreErrorCode.INVALID_CONFIG_TYPE); + } +} + + + + + + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpContractClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpContractClient.java new file mode 100644 index 0000000..9f4369e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpContractClient.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherDTO; +import com.deepinnet.tptradecore.common.service.facade.contract.TpContractFacade; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/17 09:47 + * @Description + */ + +@Service +public class TpContractClient { + + @DubboReference + private TpContractFacade contractFacade; + + public List getAvailableRefundVoucherVO(String orderNo, String tenantId) { + TpQueryAvailableRefundVoucherDTO queryDTO = TpQueryAvailableRefundVoucherDTO.builder() + .orderNo(orderNo) + .tenantId(tenantId) + .build(); + TpResult> result = contractFacade.queryAvailableRefundVoucherList(queryDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("获取退票申请单失败,失败原因:{}", result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + public List getRefundOrders(TpQueryRefundApplyOrderDTO dto) { + TpResult> result = contractFacade.getRefundApplyOrderList(dto); + if (!result.isSuccess()) { + LogUtil.error("退款单查询失败, code: {}, msg: {}", result.getErrorCode(), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpEmailClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpEmailClient.java new file mode 100644 index 0000000..eb59c12 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpEmailClient.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.deepinnet.tpcommoncore.common.service.facade.TpEmailFacade; +import com.deepinnet.tpcommoncore.common.service.template.email.TpEmailBaseTemplate; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/11/21 14:11 + * @Description + */ +@Component +public class TpEmailClient { + + @DubboReference + private TpEmailFacade emailFacade; + + public void batchSendEmailAsync(List emails, TpEmailBaseTemplate emailTemplate) { + emailFacade.batchSendEmailAsync(emails, emailTemplate); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpGlobalStoreClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpGlobalStoreClient.java new file mode 100644 index 0000000..c8be816 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpGlobalStoreClient.java @@ -0,0 +1,130 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpUtil; +import com.deepinnet.tp.common.lang.error.TpErrorCode; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpcommoncore.common.service.dto.*; +import com.deepinnet.tpcommoncore.common.service.enums.*; +import com.deepinnet.tpcommoncore.common.service.facade.TpGlobalStoreFacade; +import com.deepinnet.tpcommoncore.common.service.model.TpOssStore; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Service; + +import java.io.File; + +/** + * @author taobinxian + * @version 2023-09-28 + */ +@Service +public class TpGlobalStoreClient { + + @DubboReference + private TpGlobalStoreFacade tpGlobalStoreFacade; + + private static String PRIVATE_BUCKET_NAME = "deepinnet-tp-private"; + + private static String PUBLIC_BUCKET_NAME = "deepinnet-tp-public"; + + private static String tempFile = "./temp/imports/"; + + public byte[] getFileFromOss(String fileKey) { + TpStoreQueryDTO tpStoreQueryDTO = new TpStoreQueryDTO(); + tpStoreQueryDTO.setBucketType(TpStoreBucketTypeEnum.PRIVATE_BUCKET.getBucketType()); + tpStoreQueryDTO.setBucketName(PRIVATE_BUCKET_NAME); + tpStoreQueryDTO.setKey(fileKey); + TpResult result = tpGlobalStoreFacade.getObjectUrl(tpStoreQueryDTO); + if (!result.isSuccess()) { + LogUtil.error("获取文件下载失败:{},{}", result.getErrorCode(), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + String fileUrl = result.getData(); + + // 下载文件 + File file = HttpUtil.downloadFileFromUrl(fileUrl, tempFile + fileKey); + byte[] fileBytes = FileUtil.readBytes(file); + FileUtil.del(file); + return fileBytes; + } + + public TpOssStore putObject(TpStoreUploadDTO storePutDTO) { + storePutDTO.setBizType(TpStoreBizTypeEnum.OSS_STORE.getBizType()); + TpStoreBucketTypeEnum bucketTypeEnum = TpStoreBucketTypeEnum.getTpStoreBucketTypeEnumByBucketType(storePutDTO.getBucketType()); + if (ObjectUtil.isNull(bucketTypeEnum) || bucketTypeEnum.equals(TpStoreBucketTypeEnum.PUBLIC_BUCKET)) { + storePutDTO.setBucketName(PUBLIC_BUCKET_NAME); + } else { + storePutDTO.setBucketName(PRIVATE_BUCKET_NAME); + } + + TpResult storeTpResult; + try { + storeTpResult = tpGlobalStoreFacade.putObject(storePutDTO); + if (!storeTpResult.isSuccess()) { + LogUtil.error("putObject() dubbo service call failed,error:" + storeTpResult.getErrorCode(), storeTpResult.getErrorDesc()); + throw new TpException(storeTpResult.getErrorCode(), storeTpResult.getErrorDesc()); + } + } catch (TpException e) { + throw e; + } catch (Exception e) { + LogUtil.error("upload file error"); + throw new TpException(TpErrorCode.INTERNAL_SERVER_ERROR.getCode(), TpErrorCode.INTERNAL_SERVER_ERROR.getDesc()); + } + + return storeTpResult.getData(); + } + + public String getUrl(TpStoreQueryDTO tpStoreQueryDTO) { + TpStoreBucketTypeEnum bucketTypeEnum = TpStoreBucketTypeEnum.getTpStoreBucketTypeEnumByBucketType(tpStoreQueryDTO.getBucketType()); + if (ObjectUtil.isNull(bucketTypeEnum) || bucketTypeEnum.equals(TpStoreBucketTypeEnum.PUBLIC_BUCKET)) { + tpStoreQueryDTO.setBucketName(PUBLIC_BUCKET_NAME); + } else { + tpStoreQueryDTO.setBucketName(PRIVATE_BUCKET_NAME); + } + + TpResult result; + try { + result = tpGlobalStoreFacade.getObjectUrl(tpStoreQueryDTO); + if (!result.isSuccess()) { + LogUtil.error("getObject() dubbo service call failed,error:" + result.getErrorCode(), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + } catch (TpException e) { + throw e; + } catch (Exception e) { + LogUtil.error("get file url error"); + throw new TpException(TpErrorCode.INTERNAL_SERVER_ERROR.getCode(), TpErrorCode.INTERNAL_SERVER_ERROR.getDesc()); + } + + return result.getData(); + } + + + public boolean exists(TpStoreQueryDTO tpStoreQueryDTO) { + TpStoreBucketTypeEnum bucketTypeEnum = TpStoreBucketTypeEnum.getTpStoreBucketTypeEnumByBucketType(tpStoreQueryDTO.getBucketType()); + if (ObjectUtil.isNull(bucketTypeEnum) || tpStoreQueryDTO.getBucketType().equals(TpStoreBucketTypeEnum.PUBLIC_BUCKET)) { + tpStoreQueryDTO.setBucketName(PUBLIC_BUCKET_NAME); + } else { + tpStoreQueryDTO.setBucketName(PRIVATE_BUCKET_NAME); + } + + TpResult result; + try { + result = tpGlobalStoreFacade.exists(tpStoreQueryDTO); + if (!result.isSuccess()) { + LogUtil.error("exists() dubbo service call failed,error:" + result.getErrorCode(), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + } catch (TpException e) { + throw e; + } catch (Exception e) { + LogUtil.error("get file url error"); + throw new TpException(TpErrorCode.INTERNAL_SERVER_ERROR.getCode(), TpErrorCode.INTERNAL_SERVER_ERROR.getDesc()); + } + + return result.getData(); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpInventoryClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpInventoryClient.java new file mode 100644 index 0000000..e71c119 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpInventoryClient.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.dto.inventory.TpInventoryOperationDTO; +import com.deepinnet.tpproductcore.common.service.facade.inventory.TpInventoryFacade; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author amos wong + * @create 2024/5/24 15:04 + * @Description + */ +@Component +public class TpInventoryClient { + + @DubboReference + private TpInventoryFacade inventoryFacade; + + public void batchOperateInventory(List operations) { + LogUtil.info("批量操作库存,入参为:{}", JSONUtil.toJsonStr(operations)); + TpResult result = inventoryFacade.batchOperateInventory(operations); + if (!result.isSuccess()) { + LogUtil.error("批量操作库存失败,原因:{},入参:{}", result.getErrorDesc(), JSONUtil.toJsonStr(operations)); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderClient.java new file mode 100644 index 0000000..9554cde --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderClient.java @@ -0,0 +1,32 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dto.order.TpOrderQueryDTO; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDetailVO; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2023/8/31 15:30 + * @Description + */ +@Component +public class TpOrderClient { + + @DubboReference + private TpOrderFacade tpOrderFacade; + + public TpOrderDetailVO getOrderDetail(TpOrderQueryDTO queryDTO) { + TpResult result = tpOrderFacade.getOrderDetail(queryDTO); + if (!result.isSuccess()) { + LogUtil.error("调用查询订单列表的接口失败,入参:{},失败原因:{}", queryDTO, result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderDispatchClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderDispatchClient.java new file mode 100644 index 0000000..9149d9d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrderDispatchClient.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchDetailDTO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderDispatchFacade; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; + +/** + *

+ 派单详情查询 + *

+ * + * @author chenjiaju + * @since 2023/9/18 + */ + +@Component +public class TpOrderDispatchClient { + + @Resource + private TpOrderDispatchFacade tpOrderDispatchFacade; + + public TpOrderDispatchVO getOrderDispatchDetail(@NotNull(message = "入参不能为空") TpOrderDispatchDetailDTO orderDispatchDetailDTO) { + TpResult result = tpOrderDispatchFacade.getOrderDispatchDetail(orderDispatchDetailDTO); + if (!result.isSuccess()) { + LogUtil.error("调用订单派单详情查询失败,入参:{},原因:{}", JSONUtil.toJsonStr(orderDispatchDetailDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + if (ObjectUtil.isNull(result.getData())) { + LogUtil.error("派单详情查询失败, 入参:{}", JSONUtil.toJsonStr(orderDispatchDetailDTO)); + throw new TpException(TpTradeCoreErrorCode.ORDER_DISPATCH_DETAIL_ERROR.getCode(), TpTradeCoreErrorCode.ORDER_DISPATCH_DETAIL_ERROR.getDesc()); + } + + return result.getData(); + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrgClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrgClient.java new file mode 100644 index 0000000..857fe6a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpOrgClient.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.org.OrgDetailDTO; +import com.deepinnet.tpbaseopcore.common.dto.pay.*; +import com.deepinnet.tpbaseopcore.common.service.facade.TpOrgFacade; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2023/9/6 10:26 + * @Description + */ +@Component +public class TpOrgClient { + + @DubboReference + private TpOrgFacade orgFacade; + + public OrgPayDTO getOrgPay(String orgId, String tenantId) { + TpResult result = orgFacade.getOrgPay(orgId, tenantId); + if (!result.isSuccess()) { + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + if (result.getData() == null) { + LogUtil.error("当前组织未配置支付宝和微信的收款账号,无法进行支付,需要及时排查问题,组织编号:{}, 租户id:{}", orgId, tenantId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORG_NOT_FOUND_PAY_CONFIG); + } + + return result.getData(); + } + + public TpMiniProgramPayDTO getMiniProgramPayConfig(TpQueryMiniProgramPayConfigDTO queryDTO) { + TpResult miniProgramPayConfig = orgFacade.getMiniProgramPayConfig(queryDTO); + return miniProgramPayConfig.getData(); + } + + public OrgPayDTO getCharterBus(String orgCode, String tenantId) { + TpResult result = orgFacade.getRootOrgPay(orgCode, tenantId); + if (!result.isSuccess()) { + LogUtil.error("包车业务未配置支付宝和微信的收款账号,无法进行支付,需要及时排查问题,租户id:{}", tenantId); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } + + public OrgWxPayDTO getWxPayByPlatSerialNo(String serialNo) { + TpResult result = orgFacade.getWxPay(serialNo); + if (!result.isSuccess()) { + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } + + /** + * 查询组织明细 + * @param orgId + * @param tenantId + * @return + */ + public OrgDetailDTO getOrgDetail(String orgId, String tenantId) { + TpResult result = orgFacade.getOrgDetail(orgId, tenantId); + if (!result.isSuccess()) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.INTERNAL_SERVER_ERROR, result.getErrorDesc()); + } + + return result.getData(); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpPaymentClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpPaymentClient.java new file mode 100644 index 0000000..0d10d9a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpPaymentClient.java @@ -0,0 +1,66 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.service.facade.trans.TpPaymentFacade; +import com.deepinnet.tptradecore.common.vo.trans.TpPreparePayVO; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/14 17:03 + * @Description + */ +@Service +public class TpPaymentClient { + + @DubboReference + private TpPaymentFacade paymentFacade; + + public TpPreparePayVO prepay(TpPreparePayDTO prepayDTO) { + TpResult result = paymentFacade.preparePay(prepayDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("预支付失败,入参:{},失败原因:{}", JSONUtil.toJsonStr(prepayDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + public boolean refund(TpPayRefundDTO refundDTO) { + TpResult result = paymentFacade.refund(refundDTO); + if (result.isSuccess()) { + return true; + } + + LogUtil.error("退款失败,入参:{},失败原因:{}", JSONUtil.toJsonStr(refundDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + public List getPayOrderList(TpPayOrderQueryDTO queryDTO) { + TpResult> result = paymentFacade.queryPayOrderList(queryDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("查询支付单列表失败,入参:{},失败原因:{}", JSONUtil.toJsonStr(queryDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + + } + + public Boolean reschedulePaidSuccessDTO(TpReschedulePaidSuccessDTO reschedulePaidSuccessDTO) { + TpResult result = paymentFacade.reschedulePaidSuccess(reschedulePaidSuccessDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("改签生成支付成功的支付单失败,入参:{},失败原因:{}", JSONUtil.toJsonStr(reschedulePaidSuccessDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductClient.java new file mode 100644 index 0000000..ba595d8 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductClient.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.dto.product.*; +import com.deepinnet.tpproductcore.common.enums.*; +import com.deepinnet.tpproductcore.common.qto.product.TpProductQueryDTO; +import com.deepinnet.tpproductcore.common.service.facade.product.TpProductServiceFacade; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.google.common.collect.Lists; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2023/9/22 17:47 + * @Description + */ +@Component +public class TpProductClient { + + @DubboReference + private TpProductServiceFacade productServiceFacade; + + public TpProdDetailDTO getProduct(TpProductQueryDTO productQueryDTO) { + TpResult result = productServiceFacade.getProduct(productQueryDTO); + if (!result.isSuccess()) { + LogUtil.error("产品查询失败: {}, 错误编码:{}, 错误信息: {}", JSONUtil.toJsonStr(productQueryDTO), result.getErrorCode(), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + if (ObjectUtil.isNull(result.getData())) { + LogUtil.error("当前查询的产品, {}, 不存在", productQueryDTO.getProductCode()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PRODUCT_NOT_EXIST_ERROR); + } + + return result.getData(); + } + + public TpProductExtendAttributesDTO getProductExtendAttributes(String routeCode, String tenantId) { + TpProductQueryDTO queryDTO = new TpProductQueryDTO(); + queryDTO.setRouteCode(routeCode); + queryDTO.setTenantId(tenantId); + queryDTO.setFormalFlag(FormalFlagEnum.FORMAL.getCode()); + queryDTO.setNeedProperties(Lists.newArrayList(NeedPropertiesEnum.EXTEND_ATTRIBUTE.getCode())); + TpProdDetailDTO prodDetailDTO = getProduct(queryDTO); + if (prodDetailDTO.getExtendAttributes() == null) { + LogUtil.error("产品继承属性不存在,routeCode={}", routeCode); + throw new TpTradeCoreException(TpTradeCoreErrorCode.EXTEND_ATTRIBUTES_NOT_FOUND); + } + + TpProductExtendAttributesDTO extendAttributes = prodDetailDTO.getExtendAttributes(); + LogUtil.info("查询到的产品继承属性为:{},入参={}", JSONUtil.toJsonStr(extendAttributes), JSONUtil.toJsonStr(queryDTO)); + return extendAttributes; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductSalesUnitClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductSalesUnitClient.java new file mode 100644 index 0000000..2102b01 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpProductSalesUnitClient.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.dto.TpSalesUnitCarPoolStatusUpdateDTO; +import com.deepinnet.tpproductcore.common.qto.TpSalesUnitCarPoolListQueryDTO; +import com.deepinnet.tpproductcore.common.service.facade.product.TpProductSalesUnitFacade; +import com.deepinnet.tpproductcore.common.vo.TpSalesUnitCarPoolVO; +import com.deepinnet.tptradecore.common.dto.order.TpCarPoolListQueryDTO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + *

+ * 售卖单元client + *

+ * + * @author chenjiaju + * @since 2023/9/21 + */ + +@Component +public class TpProductSalesUnitClient { + + @DubboReference + private TpProductSalesUnitFacade tpProductSalesUnitFacade; + + public List listCarpools(TpCarPoolListQueryDTO dto) { + TpSalesUnitCarPoolListQueryDTO queryDTO = new TpSalesUnitCarPoolListQueryDTO(); + queryDTO.setSalesUnitCodeList(dto.getSalesUnitCodeList()); + queryDTO.setTenantId(dto.getTenantId()); + + TpResult> carpoolsResult = tpProductSalesUnitFacade.listCarPools(queryDTO); + + if (!carpoolsResult.isSuccess()) { + LogUtil.error("开线预约信息查询失败:{}, 错误编码:{}, 错误信息:{}", JSONObject.toJSONString(dto), carpoolsResult.getErrorCode(), carpoolsResult.getErrorDesc()); + throw new TpException(carpoolsResult.getErrorCode(), carpoolsResult.getErrorDesc()); + } + + if (CollUtil.isEmpty(carpoolsResult.getData())) { + LogUtil.error("未查询到对应的售卖单元开线信息, 查询参数:{}", JSONObject.toJSONString(dto), carpoolsResult.getErrorCode(), carpoolsResult.getErrorDesc()); + throw new TpException(TpTradeCoreErrorCode.CARPOOL_SALE_UNIT_QUERY_ERROR.getCode(), TpTradeCoreErrorCode.CARPOOL_SALE_UNIT_QUERY_ERROR.getDesc()); + } + + return carpoolsResult.getData(); + } + + + /** + * 拼车开线列表-更新状态 + * + * @param carPoolDTO + * @return 更新后的拼车信息 + */ + public List triggerCarPoolStatusUpdate(TpSalesUnitCarPoolStatusUpdateDTO carPoolDTO) { + TpResult> carpoolsResult = tpProductSalesUnitFacade.triggerCarPoolStatusUpdate(carPoolDTO); + + if (!carpoolsResult.isSuccess()) { + LogUtil.error("拼车开线列表-更新状态失败:{}, 错误编码:{}, 错误信息:{}", JSONObject.toJSONString(carPoolDTO), carpoolsResult.getErrorCode(), carpoolsResult.getErrorDesc()); + throw new TpException(carpoolsResult.getErrorCode(), carpoolsResult.getErrorDesc()); + } + + if (CollUtil.isEmpty(carpoolsResult.getData())) { + LogUtil.error("拼车开线列表-更新状态失败, 查询参数:{}", JSONObject.toJSONString(carPoolDTO), carpoolsResult.getErrorCode(), carpoolsResult.getErrorDesc()); + throw new TpException(TpTradeCoreErrorCode.CARPOOL_SALE_UNIT_QUERY_ERROR.getCode(), TpTradeCoreErrorCode.CARPOOL_SALE_UNIT_QUERY_ERROR.getDesc()); + } + + return carpoolsResult.getData(); + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpRouteClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpRouteClient.java new file mode 100644 index 0000000..f9e7330 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpRouteClient.java @@ -0,0 +1,137 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.driver.TpDriverDTO; +import com.deepinnet.tpbaseopcore.common.dto.route.*; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.BusDriverDetailDTO; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.ShuttleDetailDTO; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.ShuttleOverviewDTO; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.ShuttleQueryDTO; +import com.deepinnet.tpbaseopcore.common.service.facade.*; +import com.deepinnet.tptradecore.common.dto.order.TpOrderShuttleQueryDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderShuttlesQueryDTO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + *

+ * 线路client + *

+ * + * @author chenjiaju + * @since 2023/9/18 + */ + +@Component +public class TpRouteClient { + + @DubboReference + private TpRouteFacade tpRouteFacade; + + @DubboReference + private TpShuttleFacade shuttleFacade; + + @DubboReference + private TpDriverFacade driverFacade; + + public List listShuttle(TpOrderShuttlesQueryDTO dto) { + ShuttleQueryDTO shuttleQueryDTO = new ShuttleQueryDTO(); + shuttleQueryDTO.setShuttleCodes(dto.getShuttleCodes()); + shuttleQueryDTO.setTenantId(dto.getTenantId()); + + TpResult> shuttleResult = shuttleFacade.listShuttle(shuttleQueryDTO); + + if (!shuttleResult.isSuccess()) { + LogUtil.error("班次司机信息查询失败, 班次编号:{}, tenantId:{}, 错误编码:{}, 错误信息:{}", dto.getShuttleCodes(), dto.getTenantId(), shuttleResult.getErrorCode(), shuttleResult.getErrorDesc()); + throw new TpException(shuttleResult.getErrorCode(), shuttleResult.getErrorDesc()); + } + + if (ObjectUtil.isNull(shuttleResult.getData())) { + LogUtil.warn("未查询到班次的司机信息, 班次编号:{}, tenantId:{}", dto.getShuttleCodes(), dto.getTenantId()); + } + + return shuttleResult.getData(); + } + + public ShuttleRouteStationTimeDTO queryRouteStationInShuttle(TpOrderShuttleQueryDTO dto) { + TpResult shuttleResult = tpRouteFacade.queryRouteStationInShuttle(dto.getShuttleNo(), dto.getPickUpLocationCode(), dto.getDropDownLocationCode(), dto.getTenantId()); + if (!shuttleResult.isSuccess()) { + LogUtil.error("线路班次信息查询失败, 班次编号:{}, 上车点code:{}, 下车点code:{}, tenantId:{}, 错误编码:{}, 错误信息:{}", dto.getShuttleNo(), dto.getPickUpLocationCode(), dto.getDropDownLocationCode(), dto.getTenantId(), shuttleResult.getErrorCode(), shuttleResult.getErrorDesc()); + throw new TpException(shuttleResult.getErrorCode(), shuttleResult.getErrorDesc()); + } + + if (ObjectUtil.isNull(shuttleResult.getData())) { + LogUtil.warn("未查询到班次信息, 班次编号:{}, 上车点code:{}, 下车点code:{}, tenantId:{}", dto.getShuttleNo(), dto.getPickUpLocationCode(), dto.getDropDownLocationCode(), dto.getTenantId(), shuttleResult.getErrorCode()); + } + + return shuttleResult.getData(); + } + + public RouteDetailDTO getRouteDetail(String routeCode, String tenantId) { + TpResult result = tpRouteFacade.getRouteDetail(routeCode, Boolean.FALSE, tenantId); + if (!result.isSuccess()) { + LogUtil.error("查询线路详情失败,原因为:{},routeCode为:{}", result.getErrorDesc(), routeCode); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } + + public ShuttleDetailDTO getShuttleDetail(String shuttleCode, String tenantId) { + TpResult result = shuttleFacade.getShuttleDetail(shuttleCode, tenantId); + if (!result.isSuccess()) { + LogUtil.error("查询班次详情失败,原因为:{},shuttleCode为:{}", result.getErrorDesc(), shuttleCode); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } + + public TpDriverDTO getDriverDetail(String driverCode, String tenantId) { + TpResult result = driverFacade.getDriverDetail(driverCode, tenantId); + if (!result.isSuccess()) { + LogUtil.error("查询司机详情失败,原因为:{},driverCode:{}", result.getErrorDesc(), driverCode); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + } + + public List getDriverDetails(List driverCodes, String tenantId) { + return driverCodes.stream().map(driverCode->{ + TpResult result = driverFacade.getDriverDetail(driverCode, tenantId); + if (!result.isSuccess()) { + LogUtil.error("查询司机详情失败,原因为:{},driverCode:{}", result.getErrorDesc(), driverCode); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return result.getData(); + }).collect(Collectors.toList()); + } + + public List getDriverPhoneByShuttleCode(String shuttleCode, String tenantId) { + ShuttleDetailDTO shuttleDetail = getShuttleDetail(shuttleCode, tenantId); + List driverCodeList = Optional.ofNullable(shuttleDetail.getBusDriverDetail()).orElseGet(List::of).stream().map(BusDriverDetailDTO::getDriverCode).collect(Collectors.toList()); + List driverPhoneList = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(driverCodeList)) { + driverCodeList.forEach(d->{ + TpDriverDTO driverDetail = getDriverDetail(d, tenantId); + if (StringUtils.isNotEmpty(driverDetail.getPhone())) { + driverPhoneList.add(driverDetail.getPhone()); + } + }); + } + return driverPhoneList; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSequenceClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSequenceClient.java new file mode 100644 index 0000000..69d5b42 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSequenceClient.java @@ -0,0 +1,298 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.date.DateUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tpcommoncore.common.service.dto.TpSequenceQueryDTO; +import com.deepinnet.tpcommoncore.common.service.enums.TpSequenceBizTypeEnum; +import com.deepinnet.tpcommoncore.common.service.facade.TpGlobalSequenceFacade; +import com.deepinnet.tpcommoncore.common.service.model.TpSequence; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * @author amos wong + * @create 2022-11-21 17:10 + */ +@Component +public class TpSequenceClient { + + private static final String INNER_RELATION_MARK = "000"; + + private static final String PAY_ORDER_MARK = "001"; + + private static final String BILL_ORDER_MARK = "002"; + + private static final String CHARGE_ORDER_MARK = "003"; + + private static final String REFUND_APPLY_ORDER_MARK = "004"; + + private static final String USER_PASSENGER_MARK = "005"; + + private static final String USER_ORDER_MARK = "006"; + + private static final String USER_TRAVEL_TRIP_MARK = "007"; + + private static final String ROUTE_COLLECTION_MARK = "008"; + + private static final String PRICING_MARK = "009"; + + private static final String DEPOSIT_MARK = "010"; + + private static final String BALANCE_MARK = "011"; + + private static final String ORDER_CHANGE_APPLY_MARK = "012"; + + private static final String ORDER_CHANGE_ITEM_MARK = "013"; + + + private static final String AUDIT_MARK = "014"; + + private static final String ORDER_DISPATCH_MARK = "015"; + + private static final String ORDER_RECEIVED_MARK = "016"; + + private static final String ORDER_RESCHEDULE_MARK = "017"; + + private static final String DATE_FORMAT = "yyyyMMdd"; + + @DubboReference + private TpGlobalSequenceFacade sequenceFacade; + + public String generatePayOrderNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_PAY_ORDER); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(PAY_ORDER_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateBillOrderNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_BILL_ORDER); + StringBuilder sb = new StringBuilder(); + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(BILL_ORDER_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateChargeOrderNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_CHARGE_ORDER); + StringBuilder sb = new StringBuilder(); + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(CHARGE_ORDER_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateRefundApplyOrderNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_REFUND_APPLY_ORDER); + StringBuilder sb = new StringBuilder(); + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(REFUND_APPLY_ORDER_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateUserPassengerNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_PASSENGER); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(USER_PASSENGER_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateOrderNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_ORDER); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(USER_ORDER_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateTripNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_TRAVEL_TRIP_ORDER); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(USER_TRAVEL_TRIP_MARK) + .append(sequenceNo) + .toString(); + } + + public String generatePricingNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_PRICING); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(PRICING_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateRouteCollectionNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_ROUTE_COLLECTION); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(ROUTE_COLLECTION_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateDepositNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_DEPOSIT); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(DEPOSIT_MARK) + .append(sequenceNo) + .toString(); + } + + private String getSequenceNo(TpSequenceBizTypeEnum bizTypeEnum) { + TpResult result = sequenceFacade.getSequence(TpSequenceQueryDTO.builder() + .bizType(bizTypeEnum.getBizType()) + .build()); + if (!result.isSuccess()) { + LogUtil.error("生成:{},单号失败,失败原因:", bizTypeEnum.getBizType(), result.getErrorDesc()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.GENERATE_GLOBAL_SEQUENCE_ERROR); + } + + return String.format("%09d", result.getData().getSeqNo()); + } + + public String generateBalanceNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_BALANCE); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(BALANCE_MARK) + .append(sequenceNo) + .toString(); + } + //TODO + public String generateAuditNo() { + + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_DEPOSIT); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(AUDIT_MARK) + .append(sequenceNo) + .toString(); + } + + + //TODO + public String generateOrderChangeApplyNo() { + + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_DEPOSIT); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(ORDER_CHANGE_APPLY_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateOrderChangeItemNo() { + + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_DEPOSIT); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(ORDER_CHANGE_ITEM_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateOrderDispatchNo() { + + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_DEPOSIT); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(ORDER_DISPATCH_MARK) + .append(sequenceNo) + .toString(); + } + + + public String generateOrderReceivedNo() { + + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.SEQ_DEPOSIT); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(ORDER_RECEIVED_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateInnerRelationNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.INNER_RELATION); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(INNER_RELATION_MARK) + .append(sequenceNo) + .toString(); + } + + public String generateRescheduleNo() { + String sequenceNo = getSequenceNo(TpSequenceBizTypeEnum.RESCHEDULE_NO); + StringBuilder sb = new StringBuilder(); + // 日期yyMMdd(6位)+ 单据类型标识(3位)+ sequence(9位)拼接 + Date today = DateUtil.date(System.currentTimeMillis()); + String dateSequence = DateUtil.format(today, DATE_FORMAT); + return sb.append(dateSequence) + .append(ORDER_RESCHEDULE_MARK) + .append(sequenceNo) + .toString(); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSmsClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSmsClient.java new file mode 100644 index 0000000..5bf6751 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpSmsClient.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.deepinnet.tpcommoncore.common.service.dto.TpSmsBatchSendDTO; +import com.deepinnet.tpcommoncore.common.service.facade.TpSmsFacade; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsBaseTemplate; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/11/21 14:11 + * @Description + */ +@Component +public class TpSmsClient { + + @DubboReference + private TpSmsFacade smsFacade; + + public void sendSms(String mobile, TpSmsBaseTemplate smsTemplate) { + smsFacade.sendSmsAsync(mobile, smsTemplate); + } + + public void batchSendSmsAsync(List dto) { + smsFacade.batchSendSmsAsync(dto); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpStudentClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpStudentClient.java new file mode 100644 index 0000000..62e0819 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpStudentClient.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tpproductcore.common.qto.serviceobject.student.TpStudentQueryDTO; +import com.deepinnet.tpproductcore.common.service.facade.serviceobject.TpStudentFacade; +import com.deepinnet.tpproductcore.common.vo.TpStudentVO; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +/** + *         ┏┓   ┏┓+ + + *        ┏┛┻━━━┛┻┓ + + + *        ┃       ┃ + *        ┃   ━   ┃ ++ + + + + *        ████━████ ┃+ + *        ┃       ┃ + + *        ┃   ┻   ┃ + *        ┃       ┃ + + + *        ┗━┓    ┏━┛ + *          ┃   ┃ + *          ┃   ┃ + + + + + *          ┃   ┃    Code is far away from bug with the animal protecting + *          ┃   ┃ +     神兽保佑,代码无bug + *          ┃   ┃ + *          ┃   ┃  + + *          ┃    ┗━━━┓ + + + *          ┃        ┣┓ + *          ┃        ┏┛ + *          ┗┓┓┏━┳┓┏┛ + + + + + *           ┃┫┫ ┃┫┫ + *           ┗┻┛ ┗┻┛+ + + + + * + * @author 唐国翔 + * @since 2024-01-17 星期三 + **/ +@Component +public class TpStudentClient { + + @DubboReference + private TpStudentFacade studentFacade; + + + public TpStudentVO queryStudentDetail(TpStudentQueryDTO query) { + TpResult tpResult = studentFacade.queryStudentDetail(query); + if (!tpResult.isSuccess()) { + throw new TpException(tpResult.getErrorCode(), tpResult.getErrorDesc()); + } + return tpResult.getData(); + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTenantClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTenantClient.java new file mode 100644 index 0000000..dd191ae --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTenantClient.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpconfigcore.common.dto.TenantContractGetByOrgCodeDTO; +import com.deepinnet.tpconfigcore.common.dto.TenantContractListQueryDTO; +import com.deepinnet.tpconfigcore.common.service.facade.TpTenantFacade; +import com.deepinnet.tpconfigcore.common.vo.TpTenantContractDTO; +import com.deepinnet.tpconfigcore.common.vo.TpTenantContractListDTO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/9/6 10:26 + * @Description + */ +@Component +public class TpTenantClient { + + @DubboReference + private TpTenantFacade tpTenantFacade; + + /** + * 查询组织明细 + * @param orgId + * @param tenantId + * @return + */ + public TpTenantContractDTO getOrgDetail(String orgId, String tenantId) { + TenantContractListQueryDTO dto = new TenantContractListQueryDTO(); + dto.setTenantId(tenantId); + dto.setCarrierOrg(ListUtil.toList(orgId)); + + TpResult> result = tpTenantFacade.listTenantContract(dto); + if (!result.isSuccess()) { + LogUtil.error("组织联系信息查询失败, 入参:{}, 错误信息:{}", JSONObject.toJSONString(dto), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + return CollUtil.isEmpty(result.getData()) ? null : result.getData().get(0); + } + + /** + * 查询业务员联系方式 + * @param orgCode 组织编号 + * @param tenantId 租户编号 + * @return TpTenantContractListDTO 业务员联系电话 / 邮箱 + */ + public TpTenantContractListDTO getAuditorsByOrgCode(String orgCode, String tenantId) { + TenantContractGetByOrgCodeDTO dto = new TenantContractGetByOrgCodeDTO(); + dto.setTenantId(tenantId); + dto.setCarrierOrg(orgCode); + + TpResult auditorContracts = tpTenantFacade.getTenantContractByOrgCode(dto); + + if (!auditorContracts.isSuccess()) { + LogUtil.error("组织联系信息查询失败, 入参:{}, 错误信息:{}", JSONObject.toJSONString(dto), auditorContracts.getErrorDesc()); + throw new TpException(auditorContracts.getErrorCode(), auditorContracts.getErrorDesc()); + } + + return auditorContracts.getData(); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTripClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTripClient.java new file mode 100644 index 0000000..5870858 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpTripClient.java @@ -0,0 +1,42 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + + +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.dispatch.query.TpCharteredBusTripVO; +import com.deepinnet.tpbaseopcore.common.dto.dispatch.sync.TpCharteredBusTripDTO; +import com.deepinnet.tpbaseopcore.common.service.facade.TpTripFacade; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + *

+ 主数据行程服务 + *

+ * + * @author chenjiaju + * @since 2023/9/18 + */ + +@Component +public class TpTripClient { + + @DubboReference + private TpTripFacade tpTripFacade; + + public List queryTripList(TpCharteredBusTripDTO dto) { + TpResult> listTpResult = tpTripFacade.queryTripList(dto); + + if (!listTpResult.isSuccess()) { + LogUtil.error("主数据调度信息查询异常, 查询参数:{}, 错误异常码:{}, 异常原因:{}", JSONObject.toJSONString(dto), listTpResult.getErrorCode(), listTpResult.getErrorDesc()); + throw new TpException(listTpResult.getErrorCode(), listTpResult.getErrorDesc()); + } + + return listTpResult.getData(); + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpUserCertificationClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpUserCertificationClient.java new file mode 100644 index 0000000..19a83fd --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpUserCertificationClient.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpcommoncore.common.service.dto.TpIdCardDTO; +import com.deepinnet.tpcommoncore.common.service.facade.TpUserCertificationFacade; +import com.deepinnet.tpcommoncore.common.service.model.TpIdCardValidationResult; +import com.deepinnet.tptradecore.common.dto.order.TpUserPassengerDTO; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Component; + +/** + *

+ * 实名认证 + *

+ * + * @author chenjiaju + * @since 2023/8/21 + */ +@Component +public class TpUserCertificationClient { + + @DubboReference + private TpUserCertificationFacade tpUserCertificationFacade; + + public void validate (TpUserPassengerDTO tpUserPassengerDTO) { + TpIdCardDTO tpIdCardDTO = buildTpIdCardDTO(tpUserPassengerDTO); + TpResult validate = tpUserCertificationFacade.validate(tpIdCardDTO); + + if (!validate.isSuccess()) { + LogUtil.error("实名认证失败, 错误码: {}, 错误信息: {}, 请求参数: {}", validate.getErrorCode(), validate.getErrorDesc(), JSONObject.toJSONString(tpIdCardDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_VALID_ERROR, TpTradeCoreErrorCode.PASSENGER_VALID_ERROR.getDesc()); + } + + if (!validate.getData().getSuccess()) { + LogUtil.warn("实名认证服务失败, 失败原因: {}", validate.getData().getErrorMessage()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_VALID_ERROR, TpTradeCoreErrorCode.PASSENGER_VALID_ERROR.getDesc()); + } + + } + + private static TpIdCardDTO buildTpIdCardDTO(TpUserPassengerDTO tpUserPassengerDTO) { + TpIdCardDTO tpIdCardDTO = new TpIdCardDTO(); + tpIdCardDTO.setUserId(tpUserPassengerDTO.getUserNo()); + tpIdCardDTO.setName(tpUserPassengerDTO.getPassengerName()); + tpIdCardDTO.setIdCardNo(tpUserPassengerDTO.getIdentityNumber()); + return tpIdCardDTO; + } + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpVoucherClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpVoucherClient.java new file mode 100644 index 0000000..bfd3bb1 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpVoucherClient.java @@ -0,0 +1,75 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.common.service.facade.voucher.TpVoucherFacade; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/14 14:53 + * @Description + */ +@Service +public class TpVoucherClient { + + @DubboReference + private TpVoucherFacade voucherFacade; + + public List getOrderDetailVoucherList(TpVoucherQueryDTO queryDTO) { + TpResult> result = voucherFacade.getOrderDetailVoucherList(queryDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("查询凭证列表失败,查询入参:{},失败原因:{}", JSONUtil.toJsonStr(queryDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + public List getVoucherList(TpVoucherQueryDTO queryDTO) { + TpResult> result = voucherFacade.getVoucherList(queryDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("查询凭证列表失败,查询入参:{},失败原因:{}", JSONUtil.toJsonStr(queryDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + + public boolean invalidVoucher(List voucherUpdateDTOs) { + TpResult result = voucherFacade.invalidVoucher(voucherUpdateDTOs); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("失效凭证失败,入参:{},失败原因:{}", JSONUtil.toJsonStr(voucherUpdateDTOs), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + public List getVerificationRecordList(TpVoucherVerificationRecordQueryDTO queryDTO) { + TpResult> result = voucherFacade.getVoucherVerificationRecordList(queryDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("查询凭证核销记录失败,入参:{},凭证编号:{}", JSONUtil.toJsonStr(queryDTO.getVoucherNos()), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } + + public Boolean rescheduleInvalidVouchers(TpRescheduleInvalidVoucherDTO rescheduleInvalidVoucherDTO) { + TpResult result = voucherFacade.rescheduleInvalidVouchers(rescheduleInvalidVoucherDTO); + if (result.isSuccess()) { + return result.getData(); + } + + LogUtil.error("改签失效现有凭证失败,入参:{},错误信息:{}", JSONUtil.toJsonStr(rescheduleInvalidVoucherDTO), result.getErrorDesc()); + throw new TpException(result.getErrorCode(), result.getErrorDesc()); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClient.java new file mode 100644 index 0000000..3ee5f69 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClient.java @@ -0,0 +1,548 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.json.*; +import com.deepinnet.tp.common.lang.util.*; +import com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.builder.WechatPayRequestBuilder; +import com.deepinnet.tptradecore.common.service.integration.config.*; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.deepinnet.tptradecore.common.service.integration.initializer.TpPayConfigInitializer; +import com.ijpay.core.IJPayHttpResponse; +import com.ijpay.core.enums.RequestMethodEnum; +import com.ijpay.core.kit.*; +import com.ijpay.core.utils.DateTimeZoneUtil; +import com.ijpay.wxpay.WxPayApi; +import com.ijpay.wxpay.enums.WxDomainEnum; +import com.ijpay.wxpay.enums.v3.BasePayApiEnum; +import com.ijpay.wxpay.model.v3.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.security.PrivateKey; +import java.util.*; + +import static com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum.WECHAT_SUPPORT_PAY_SCENE; +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.*; +import static com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants.WECHAT_PREPAY_ID; +import static com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants.WECHAT_SUCCESS_RESPONSE_CODE; + + +/** + * @author amos wong + * @create 2022-10-31 22:39 + */ + +@Component +public class TpWechatPayClient { + + @Resource + private TpPayConfigInitializer payConfigInitializer; + + public String preparePay(PayPlatformPreparePayDTO preparePayRequestDTO) { + try { + // 获取当前组织的支付配置 + String payScene = preparePayRequestDTO.getPayScene(); + // 支付场景校验 + TpPaySceneEnum paySceneEnum = checkPayScene(payScene); + if (paySceneEnum == TpPaySceneEnum.WECHAT_MINI_PROGRAM || paySceneEnum == TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT) { + return wechatJSApiPrepay(preparePayRequestDTO); + } + + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(preparePayRequestDTO.getOrgCode(), preparePayRequestDTO.getBizType(), preparePayRequestDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(preparePayRequestDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_WECHAT_CLIENT); + } + + // 构建请求参数 + UnifiedOrderModel preparePayModel = WechatPayRequestBuilder.buildPreparePayModel( + preparePayRequestDTO, + wechatPayConfig.getAppId(), + wechatPayConfig.getMchId(), + wechatPayConfig.getPayNotifyUrl(), + preparePayRequestDTO.getPayTimeout()); + + // 处理请求url + String requestUrl; + if (paySceneEnum == TpPaySceneEnum.H5) { + requestUrl = BasePayApiEnum.H5_PAY.getUrl(); + } else if (paySceneEnum == TpPaySceneEnum.APP) { + requestUrl = BasePayApiEnum.APP_PAY.getUrl(); + } else { + requestUrl = BasePayApiEnum.JS_API_PAY.getUrl(); + } + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.POST, + WxDomainEnum.CHINA.getDomain(), + requestUrl, + wechatPayConfig.getMchId(), + wechatPayConfig.getSerialNo(), + wechatPayConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatPayConfig.getPrivateKey()), + JSONUtil.toJsonStr(preparePayModel)); + + // 处理响应 + return processPrepayResponse(wechatPayConfig.getAppId(), wechatPayConfig.getMchId(), paySceneEnum, response, PayKit.getPrivateKeyByKeyContent(wechatPayConfig.getPrivateKey())); + } catch (Exception e) { + LogUtil.error("微信支付预支付接口,预支付失败,入参为:{},异常堆栈信息:{}", JsonUtil.toJsonStr(preparePayRequestDTO), e); + if (e instanceof TpTradeCoreException) { + TpTradeCoreException tradeCoreException = (TpTradeCoreException) e; + if (tradeCoreException.getErrorCode() == DUPLICATE_PAY_REQUEST) { + throw tradeCoreException; + } + } + + throw new TpTradeCoreException(WECHAT_PREPARE_PAY_ERROR); + } + } + + private String wechatJSApiPrepay(PayPlatformPreparePayDTO preparePayRequestDTO) throws Exception { + Assert.hasLength(preparePayRequestDTO.getAppId(), "appId不能为空"); + TpPaySceneEnum paySceneEnum = checkPayScene(preparePayRequestDTO.getPayScene()); + + TpWechatMiniProgramConfig wechatConfig = payConfigInitializer.getWechatMiniProgramPayConfig(null, preparePayRequestDTO.getAppId()); + if (wechatConfig == null) { + LogUtil.error("微信小程序支付配置为空,入参为:{}", JSONUtil.toJsonStr(preparePayRequestDTO)); + throw new TpTradeCoreException(PREPARE_PAY_ERROR); + } + + // 构建请求参数 + UnifiedOrderModel preparePayModel = WechatPayRequestBuilder.buildPreparePayModel( + preparePayRequestDTO, + wechatConfig.getAppId(), + wechatConfig.getMchId(), + wechatConfig.getPayNotifyUrl(), + preparePayRequestDTO.getPayTimeout()); + + String requestUrl = BasePayApiEnum.JS_API_PAY.getUrl(); + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.POST, + WxDomainEnum.CHINA.getDomain(), + requestUrl, + wechatConfig.getMchId(), + wechatConfig.getSerialNo(), + wechatConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatConfig.getPrivateKey()), + JSONUtil.toJsonStr(preparePayModel)); + + // 处理响应 + return processPrepayResponse(wechatConfig.getAppId(), wechatConfig.getMchId(), paySceneEnum, response, PayKit.getPrivateKeyByKeyContent(wechatConfig.getPrivateKey())); + } + + public TpRefundResultDTO refund(PayPlatformRefundDTO refundDTO) { + try { + // 参数校验 + refundBizCheck(refundDTO); + + + // 获取当前租户的支付配置 + if (StringUtils.equals(refundDTO.getPayScene(), TpPaySceneEnum.WECHAT_MINI_PROGRAM.getCode()) || StringUtils.equals(refundDTO.getPayScene(), TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT.getCode())) { + return miniProgramRefund(refundDTO); + } + + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(refundDTO.getOrgCode(), refundDTO.getRefundBizType(), refundDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 构建请求参数 + RefundModel refundModel = WechatPayRequestBuilder.buildRefundModel( + refundDTO.getOutPayFlowId(), + refundDTO.getRefundOutRequestNo(), + wechatPayConfig.getRefundNotifyUrl(), + (int) refundDTO.getPayAmount().getCent(), + (int) refundDTO.getRefundAmount().getCent()); + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.POST, + WxDomainEnum.CHINA.getDomain(), + BasePayApiEnum.REFUND.getUrl(), + wechatPayConfig.getMchId(), + wechatPayConfig.getSerialNo(), + wechatPayConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatPayConfig.getPrivateKey()), + JSONUtil.toJsonStr(refundModel) + ); + + // 分析结果 + if (response.getStatus() == WECHAT_SUCCESS_RESPONSE_CODE) { + String refundStatus = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_STATUS_KEY); + String refundSuccessTime = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_SUCCESS_TIME_KEY); + if (StringUtils.equals(refundStatus, PayPlatformConstants.WECHAT_REFUND_SUCCESS)) { + LogUtil.info("微信退款请求成功,入参为:{},响应体为:{}", JSONUtil.toJsonStr(refundDTO), JsonUtil.toJsonStr(response)); + String timeZoneDateStr = DateTimeZoneUtil.timeZoneDateToStr(refundSuccessTime); + return TpRefundResultDTO.builder().refundTime(new Date(timeZoneDateStr).getTime()).success(true).build(); + } else if (StringUtils.equals(refundStatus, PayPlatformConstants.WECHAT_REFUND_PROCESSING)) { + return TpRefundResultDTO.builder().success(false).build(); + } else { + LogUtil.error("微信退款请求失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(refundDTO), refundStatus, JSONUtil.toJsonStr(response)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR); + } + } + + LogUtil.error("微信退款请求失败,入参为:{},响应信息:{}", JSONUtil.toJsonStr(refundDTO), JSONUtil.toJsonStr(response)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } catch (Exception e) { + LogUtil.error("微信退款请求失败,入参为:{},异常堆栈信息:{}", JSONUtil.toJsonStr(refundDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } + } + + private TpRefundResultDTO miniProgramRefund(PayPlatformRefundDTO refundDTO) throws Exception { + TpWechatMiniProgramConfig wechatConfig = payConfigInitializer.getWechatMiniProgramPayConfig(null, refundDTO.getAppId()); + if (wechatConfig == null) { + LogUtil.error("微信小程序支付配置为空,入参为:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(PREPARE_PAY_ERROR); + } + + RefundModel refundModel = WechatPayRequestBuilder.buildRefundModel( + refundDTO.getOutPayFlowId(), + refundDTO.getRefundOutRequestNo(), + wechatConfig.getRefundNotifyUrl(), + (int) refundDTO.getPayAmount().getCent(), + (int) refundDTO.getRefundAmount().getCent()); + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.POST, + WxDomainEnum.CHINA.getDomain(), + BasePayApiEnum.REFUND.getUrl(), + wechatConfig.getMchId(), + wechatConfig.getSerialNo(), + wechatConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatConfig.getPrivateKey()), + JSONUtil.toJsonStr(refundModel) + ); + + // 分析结果 + if (response.getStatus() == WECHAT_SUCCESS_RESPONSE_CODE) { + String refundStatus = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_STATUS_KEY); + String refundSuccessTime = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_SUCCESS_TIME_KEY); + if (StringUtils.equals(refundStatus, PayPlatformConstants.WECHAT_REFUND_SUCCESS)) { + LogUtil.info("微信退款请求成功,入参为:{},响应体为:{}", JSONUtil.toJsonStr(refundDTO), JsonUtil.toJsonStr(response)); + String timeZoneDateStr = DateTimeZoneUtil.timeZoneDateToStr(refundSuccessTime); + return TpRefundResultDTO.builder().refundTime(new Date(timeZoneDateStr).getTime()).success(true).build(); + } else if (StringUtils.equals(refundStatus, PayPlatformConstants.WECHAT_REFUND_PROCESSING)) { + return TpRefundResultDTO.builder().success(false).build(); + } else { + LogUtil.error("微信退款请求失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(refundDTO), refundStatus, JSONUtil.toJsonStr(response)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR); + } + } + + LogUtil.error("微信退款请求失败,入参为:{},响应信息:{}", JSONUtil.toJsonStr(refundDTO), JSONUtil.toJsonStr(response)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } + + public TpPayResultDTO queryPayResult(PayPlatformQueryResultDTO queryResultDTO) { + String outTradeNo = queryResultDTO.getPayBizNo(); + + try { + // 获取当前租户的支付配置 + if (StringUtils.equals(queryResultDTO.getPayScene(), TpPaySceneEnum.WECHAT_MINI_PROGRAM.getCode()) || StringUtils.equals(queryResultDTO.getPayScene(), TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT.getCode())) { + return miniProgramQueryPayResult(queryResultDTO); + } + + // 获取当前租户的支付配置 + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(queryResultDTO.getOrgCode(), queryResultDTO.getBizType(), queryResultDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 构造请求参数 + Map paramMap = new HashMap<>(); + paramMap.put(PayPlatformConstants.MCH_ID, wechatPayConfig.getMchId()); + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.GET, + WxDomainEnum.CHINA.getDomain(), + String.format(BasePayApiEnum.ORDER_QUERY_BY_OUT_TRADE_NO.toString(), outTradeNo), + wechatPayConfig.getMchId(), + wechatPayConfig.getSerialNo(), + wechatPayConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatPayConfig.getPrivateKey()), + paramMap + ); + + // 分析结果 + String tradeStatus = getValueFromResponse(response, PayPlatformConstants.WECHAT_TRADE_STATE_KEY); + String successTime = getValueFromResponse(response, PayPlatformConstants.WECHAT_SUCCESS_TIME); + String outPayFlowId = getValueFromResponse(response, PayPlatformConstants.TRANSACTION_ID); + + LogUtil.info("微信支付查询支付结果为:订单号为:{},tradeStatus:{},successTime:{},outPayFlowId:{}", outTradeNo, tradeStatus, successTime, outPayFlowId); + if (StringUtils.isBlank(tradeStatus)) { + LogUtil.error("微信支付查询支付结果失败,缺少必要的字段,订单号为:{}", outTradeNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + + if (StringUtils.equals(tradeStatus, PayPlatformConstants.WECHAT_PAY_SUCCESS)) { + LogUtil.info("微信支付查询支付结果成功,订单号为:{},支付结果为:{}", outTradeNo, tradeStatus); + // ATTENTION:微信的支付成功时间很独特,需要转化一下 + String paySuccessTime = DateTimeZoneUtil.timeZoneDateToStr(successTime); + return TpPayResultDTO.builder() + .bizNo(outTradeNo) + .payTime(DateUtil.parse(paySuccessTime).getTime()) + .paySuccess(true) + .outPayFlowId(outPayFlowId) + .build(); + } else { + LogUtil.info("微信支付查询支付结果成功,订单号为:{},支付结果为:{}", outTradeNo, tradeStatus); + + return TpPayResultDTO.builder() + .paySuccess(false) + .bizNo(outTradeNo) + .outPayFlowId(outPayFlowId) + .build(); + } + } catch (Exception e) { + LogUtil.error("查询微信支付结果失败,订单号:{},异常堆栈信息:{}", outTradeNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + } + + private TpPayResultDTO miniProgramQueryPayResult(PayPlatformQueryResultDTO queryResultDTO) throws Exception { + String outTradeNo = queryResultDTO.getPayBizNo(); + + TpWechatMiniProgramConfig wechatConfig = payConfigInitializer.getWechatMiniProgramPayConfig(null, queryResultDTO.getAppId()); + if (wechatConfig == null) { + LogUtil.error("微信小程序支付配置为空,入参为:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(PREPARE_PAY_ERROR); + } + + // 构造请求参数 + Map paramMap = new HashMap<>(); + paramMap.put(PayPlatformConstants.MCH_ID, wechatConfig.getMchId()); + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.GET, + WxDomainEnum.CHINA.getDomain(), + String.format(BasePayApiEnum.ORDER_QUERY_BY_OUT_TRADE_NO.toString(), outTradeNo), + wechatConfig.getMchId(), + wechatConfig.getSerialNo(), + wechatConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatConfig.getPrivateKey()), + paramMap + ); + + // 分析结果 + String tradeStatus = getValueFromResponse(response, PayPlatformConstants.WECHAT_TRADE_STATE_KEY); + String successTime = getValueFromResponse(response, PayPlatformConstants.WECHAT_SUCCESS_TIME); + String outPayFlowId = getValueFromResponse(response, PayPlatformConstants.TRANSACTION_ID); + + if (StringUtils.isBlank(tradeStatus)) { + LogUtil.error("微信支付查询支付结果失败,缺少必要的字段,订单号为:{},successTime:{},outPayFlowId:{}", outTradeNo, successTime, outPayFlowId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + + if (StringUtils.equals(tradeStatus, PayPlatformConstants.WECHAT_PAY_SUCCESS)) { + if (StringUtils.isBlank(successTime) || StringUtils.isBlank(outPayFlowId)) { + LogUtil.error("微信支付查询支付结果失败,缺少必要的字段,订单号为:{},successTime:{},outPayFlowId:{}", outTradeNo, successTime, outPayFlowId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + + LogUtil.info("微信支付查询支付结果成功,订单号为:{},支付结果为:{}", outTradeNo, tradeStatus); + // ATTENTION:微信的支付成功时间很独特,需要转化一下 + String paySuccessTime = DateTimeZoneUtil.timeZoneDateToStr(successTime); + return TpPayResultDTO.builder() + .bizNo(outTradeNo) + .payTime(DateUtil.parse(paySuccessTime).getTime()) + .paySuccess(true) + .outPayFlowId(outPayFlowId) + .build(); + } else { + LogUtil.info("微信支付查询支付结果成功,订单号为:{},支付结果为:{}", outTradeNo, tradeStatus); + + return TpPayResultDTO.builder() + .paySuccess(false) + .bizNo(outTradeNo) + .outPayFlowId(outPayFlowId) + .build(); + } + } + + public TpRefundResultDTO queryRefundResult(PayPlatformQueryResultDTO queryResultDTO) { + String refundBizNo = queryResultDTO.getRefundOutRequestNo(); + try { + // 获取当前租户的支付配置 + if (StringUtils.equals(queryResultDTO.getPayScene(), TpPaySceneEnum.WECHAT_MINI_PROGRAM.getCode()) || StringUtils.equals(queryResultDTO.getPayScene(), TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT.getCode())) { + return miniProgramQueryRefundResult(queryResultDTO); + } + + // 获取当前租户的支付配置 + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(queryResultDTO.getOrgCode(), queryResultDTO.getBizType(), queryResultDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.GET, + WxDomainEnum.CHINA.getDomain(), + String.format(BasePayApiEnum.REFUND_QUERY_BY_OUT_REFUND_NO.getUrl(), refundBizNo), + wechatPayConfig.getMchId(), + wechatPayConfig.getSerialNo(), + wechatPayConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatPayConfig.getPrivateKey()), + "" + ); + + // 分析结果 + String refundStatus = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_STATUS_KEY); + String refundId = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_ID); + String successTime = getValueFromResponse(response, PayPlatformConstants.WECHAT_SUCCESS_TIME); + + if (StringUtils.isBlank(refundStatus) || StringUtils.isBlank(refundId) || StringUtils.isBlank(successTime)) { + LogUtil.error("微信支付查询退款结果失败,缺少必要的字段,订单号为:{},refundStatus:{},refundId:{},successTime:{}", refundStatus, refundId, successTime); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + + if (StringUtils.equals(refundStatus, PayPlatformConstants.WECHAT_REFUND_SUCCESS)) { + LogUtil.info("微信退款查询退款结果成功,订单号为:{},退款结果为:{}", refundBizNo, refundStatus); + return TpRefundResultDTO.builder() + .success(true) + .bizNo(refundBizNo) + .outPayFlowId(refundId) + .refundTime(DateUtil.parse(DateTimeZoneUtil.timeZoneDateToStr(successTime)).getTime()) + .build(); + } else { + LogUtil.info("微信退款查询退款结果成功,订单号为:{},退款结果为:{}", refundBizNo, refundStatus); + return TpRefundResultDTO.builder() + .success(false) + .bizNo(refundBizNo) + .outPayFlowId(refundId) + .build(); + } + } catch (Exception e) { + LogUtil.error("查询微信退款结果失败,退款单号:{},异常堆栈信息:{}", refundBizNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_REFUND_RESULT_ERROR); + } + } + + private TpRefundResultDTO miniProgramQueryRefundResult(PayPlatformQueryResultDTO queryResultDTO) throws Exception { + String refundBizNo = queryResultDTO.getRefundOutRequestNo(); + + // 获取当前租户的支付配置 + TpWechatMiniProgramConfig wechatPayConfig = payConfigInitializer.getWechatMiniProgramPayConfig(null, queryResultDTO.getAppId()); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 发起请求 + IJPayHttpResponse response = WxPayApi.v3( + RequestMethodEnum.GET, + WxDomainEnum.CHINA.getDomain(), + String.format(BasePayApiEnum.REFUND_QUERY_BY_OUT_REFUND_NO.getUrl(), refundBizNo), + wechatPayConfig.getMchId(), + wechatPayConfig.getSerialNo(), + wechatPayConfig.getPlatSerialNo(), + PayKit.getPrivateKeyByKeyContent(wechatPayConfig.getPrivateKey()), + "" + ); + + // 分析结果 + String refundStatus = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_STATUS_KEY); + String refundId = getValueFromResponse(response, PayPlatformConstants.WECHAT_REFUND_ID); + String successTime = getValueFromResponse(response, PayPlatformConstants.WECHAT_SUCCESS_TIME); + + if (StringUtils.isBlank(refundStatus) || StringUtils.isBlank(refundId) || StringUtils.isBlank(successTime)) { + LogUtil.error("微信支付查询退款结果失败,缺少必要的字段,订单号为:{},refundStatus:{},refundId:{},successTime:{}", refundStatus, refundId, successTime); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + + if (StringUtils.equals(refundStatus, PayPlatformConstants.WECHAT_REFUND_SUCCESS)) { + LogUtil.info("微信退款查询退款结果成功,订单号为:{},退款结果为:{}", refundBizNo, refundStatus); + return TpRefundResultDTO.builder() + .success(true) + .bizNo(refundBizNo) + .outPayFlowId(refundId) + .refundTime(DateUtil.parse(DateTimeZoneUtil.timeZoneDateToStr(successTime)).getTime()) + .build(); + } else { + LogUtil.info("微信退款查询退款结果成功,订单号为:{},退款结果为:{}", refundBizNo, refundStatus); + return TpRefundResultDTO.builder() + .success(false) + .bizNo(refundBizNo) + .outPayFlowId(refundId) + .build(); + } + } + + private TpPaySceneEnum checkPayScene(String payScene) { + TpPaySceneEnum paySceneEnum = TpPaySceneEnum.getByCode(payScene); + if (paySceneEnum == null) { + LogUtil.error("微信预支付接口,入参为:{},当前支付场景不存在", payScene); + throw new TpTradeCoreException(NOT_SUPPORT_PAY_SCENE); + } + + if (!WECHAT_SUPPORT_PAY_SCENE.contains(paySceneEnum)) { + throw new TpTradeCoreException(NOT_SUPPORT_PAY_SCENE); + } + + return paySceneEnum; + } + + private String processPrepayResponse(String appId, String mchId, TpPaySceneEnum paySceneEnum, IJPayHttpResponse response, PrivateKey privateKey) throws Exception { + String body = response.getBody(); + JSONObject bodyObject = JSONUtil.parseObj(body); + + // 当重复支付时微信会报错,这里需要处理一下 + if (StringUtils.equals((String) bodyObject.get(PayPlatformConstants.CODE), PayPlatformConstants.DUPLICATED_PAID_CODE)) { + throw new TpTradeCoreException(DUPLICATE_PAY_REQUEST); + } + + if (response.getStatus() == WECHAT_SUCCESS_RESPONSE_CODE) { + if (paySceneEnum == TpPaySceneEnum.APP || paySceneEnum == TpPaySceneEnum.WECHAT_MINI_PROGRAM || paySceneEnum == TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT) { + String prepayId = getValueFromResponse(response, WECHAT_PREPAY_ID); + Map map; + if (paySceneEnum == TpPaySceneEnum.WECHAT_MINI_PROGRAM || paySceneEnum == TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT) { + map = WxPayKit.jsApiCreateSign(appId, prepayId, privateKey); + } else { + map = WxPayKit.appCreateSign(appId, mchId, prepayId, privateKey); + } + + LogUtil.info("调用微信预支付接口成功,小程序支付唤起参数为:{}", JSONUtil.toJsonStr(map)); + return JSONUtil.toJsonStr(map); + } + + LogUtil.info("调用微信支付预支付接口成功,H5支付链接为:{}", body); + JSONObject wechatH5PayResponse = new JSONObject(body); + return wechatH5PayResponse.getStr(PayPlatformConstants.WECHAT_H5_RESPONSE_URL); + } else { + LogUtil.error("微信预支付接口,处理失败,响应为:{}", JSONUtil.toJsonStr(response)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.WECHAT_PREPARE_PAY_ERROR); + } + } + + private String getValueFromResponse(IJPayHttpResponse response, String key) { + String body = response.getBody(); + JSONObject jsonObject = JSONUtil.parseObj(body); + return jsonObject.getStr(key); + } + + /** + * 退款业务校验 + */ + private void refundBizCheck(@Valid PayPlatformRefundDTO refundDTO) { + TpMoney.CompareResult compareResult = refundDTO.getRefundAmount().compare(refundDTO.getPayAmount()); + if (compareResult == TpMoney.CompareResult.GREATER_THAN) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_AMOUNT_GREATER_THAN_PAY_AMOUNT); + } + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClientV2.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClientV2.java new file mode 100644 index 0000000..923a038 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/client/TpWechatPayClientV2.java @@ -0,0 +1,328 @@ +package com.deepinnet.tptradecore.common.service.integration.client; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.*; +import com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.config.TpWechatPayConfig; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.deepinnet.tptradecore.common.service.integration.entity.H5SceneInfo; +import com.deepinnet.tptradecore.common.service.integration.initializer.TpPayConfigInitializer; +import com.ijpay.core.enums.*; +import com.ijpay.core.kit.WxPayKit; +import com.ijpay.wxpay.WxPayApi; +import com.ijpay.wxpay.model.*; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +import static com.deepinnet.tptradecore.common.enums.trans.TpPaySceneEnum.WECHAT_SUPPORT_PAY_SCENE; +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.NOT_SUPPORT_PAY_SCENE; +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.WECHAT_PREPARE_PAY_ERROR; + + +/** + * @author amos wong + * @create 2022-10-31 22:39 + */ + +@Component +public class TpWechatPayClientV2 { + + @Resource + private TpPayConfigInitializer payConfigInitializer; + + public String preparePay(PayPlatformPreparePayDTO preparePayRequestDTO) { + try { + // 获取当前组织的支付配置 + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(preparePayRequestDTO.getOrgCode(), preparePayRequestDTO.getBizType(), preparePayRequestDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(preparePayRequestDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_WECHAT_CLIENT); + } + + // 支付场景校验 + TpPaySceneEnum paySceneEnum = checkPayScene(preparePayRequestDTO.getPayScene()); + + H5SceneInfo sceneInfo = null; + String tradeType; + String openId = null; + + if (paySceneEnum == TpPaySceneEnum.H5) { + sceneInfo = new H5SceneInfo(); + H5SceneInfo.H5 h5_info = new H5SceneInfo.H5(); + sceneInfo.setH5_info(h5_info); + h5_info.setType(PayPlatformConstants.H5_INFO_WAP_TYPE); + // 此域名必须在商户平台--"产品中心"--"开发配置"中添加 + // WAP网站应用地址 + h5_info.setWap_url(wechatPayConfig.getPayNotifyUrl()); + // WAP网站名称 + h5_info.setWap_name(preparePayRequestDTO.getPayTitle()); + tradeType = TradeType.MWEB.getTradeType(); + } else if (paySceneEnum == TpPaySceneEnum.WECHAT_MINI_PROGRAM || paySceneEnum == TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT) { + tradeType = TradeType.JSAPI.getTradeType(); + openId = preparePayRequestDTO.getBuyerId(); + } else { + tradeType = TradeType.APP.getTradeType(); + } + + // 构建支付请求参数,api文档地址:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1 + Map params = UnifiedOrderModel + .builder() + .appid(wechatPayConfig.getAppId()) + .mch_id(wechatPayConfig.getMchId()) + // 随机字符串 + .nonce_str(WxPayKit.generateStr()) + // 商品描述:格式要求严格:浏览器打开的移动网页的主页title名-商品概述 + .body(preparePayRequestDTO.getPayTitle()) + // 商户订单号 + .out_trade_no(preparePayRequestDTO.getBizNo()) + .trade_type(tradeType) + .openid(openId) + // 总金额单位为分 + .total_fee(String.valueOf(preparePayRequestDTO.getPayAmount().getCent())) + // 必须传正确的用户端IP + .spbill_create_ip(preparePayRequestDTO.getUserIp()) + .time_expire(preparePayRequestDTO.getPayTimeout().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))) + .notify_url(wechatPayConfig.getPayNotifyUrl()) + .scene_info(sceneInfo == null ? null : JSONUtil.toJsonStr(sceneInfo)) + .build() + .createSign(wechatPayConfig.getApiKey(), SignType.HMACSHA256); + + // 发起请求 + LogUtil.info("请求微信预支付接口,系统入参为:{},请求微信的参数为:{}", JSONUtil.toJsonStr(preparePayRequestDTO), JSONUtil.toJsonStr(params)); + String xmlResult = WxPayApi.pushOrder(false, params); + + // 处理响应 + Map result = WxPayKit.xmlToMap(xmlResult); + String returnCode = result.get(PayPlatformConstants.RETURN_CODE); + String returnMsg = result.get(PayPlatformConstants.RETURN_MSG); + if (!WxPayKit.codeIsOk(returnCode)) { + LogUtil.error("微信预支付接口,预支付失败,入参为:{},响应信息:{},错误信息:{}", JsonUtil.toJsonStr(preparePayRequestDTO), JSONUtil.toJsonStr(xmlResult), returnMsg); + throw new TpTradeCoreException(TpTradeCoreErrorCode.WECHAT_PREPARE_PAY_ERROR); + } + + String result_code = result.get(PayPlatformConstants.RESULT_CODE); + if (!WxPayKit.codeIsOk(result_code)) { + LogUtil.error("微信预支付接口,预支付失败,入参为:{},响应信息:{},错误码:{}", JsonUtil.toJsonStr(preparePayRequestDTO), JSONUtil.toJsonStr(xmlResult), result_code); + throw new TpTradeCoreException(TpTradeCoreErrorCode.WECHAT_PREPARE_PAY_ERROR); + } + + if (paySceneEnum == TpPaySceneEnum.WECHAT_MINI_PROGRAM || paySceneEnum == TpPaySceneEnum.APP || paySceneEnum == TpPaySceneEnum.WECHAT_OFFICIAL_ACCOUNT) { + String prepayId = result.get(PayPlatformConstants.PREPAY_ID); + Map packageParams = WxPayKit.appPrepayIdCreateSign(wechatPayConfig.getAppId(), wechatPayConfig.getMchId(), prepayId, + wechatPayConfig.getApiKey(), SignType.HMACSHA256); + return JSONUtil.toJsonStr(packageParams); + } else { + return result.get(PayPlatformConstants.MWEB_URL); + } + } catch (Exception e) { + LogUtil.error("微信支付预支付接口,预支付失败,入参为:{},异常堆栈信息:{}", JsonUtil.toJsonStr(preparePayRequestDTO), e); + throw new TpTradeCoreException(WECHAT_PREPARE_PAY_ERROR); + } + } + + public TpRefundResultDTO refund(PayPlatformRefundDTO refundDTO) { + try { + // 参数校验 + refundBizCheck(refundDTO); + + // 获取当前租户的支付配置 + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(refundDTO.getOrgCode(), refundDTO.getRefundBizType(), refundDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(refundDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + Map params = RefundModel.builder() + .appid(wechatPayConfig.getAppId()) + .mch_id(wechatPayConfig.getMchId()) + .nonce_str(WxPayKit.generateStr()) + .out_trade_no(refundDTO.getPayBizNo()) + .out_refund_no(refundDTO.getRefundOutRequestNo()) + .total_fee(String.valueOf(refundDTO.getPayAmount().getCent())) + .refund_fee(String.valueOf(refundDTO.getRefundAmount().getCent())) + .build() + .createSign(wechatPayConfig.getApiKey(), SignType.MD5); + + String xmlResult = WxPayApi.orderRefund(false, params, IoUtil.toStream(wechatPayConfig.getCertificate().getBytes()), wechatPayConfig.getMchId()); + + Map refundResult = WxPayKit.xmlToMap(xmlResult); + String returnCode = refundResult.get(PayPlatformConstants.RETURN_CODE); + String returnMsg = refundResult.get(PayPlatformConstants.RETURN_MSG); + if (!WxPayKit.codeIsOk(returnCode)) { + LogUtil.error("微信退款请求失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(refundDTO), returnMsg, JSONUtil.toJsonStr(refundResult)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } + + String resultCode = refundResult.get(PayPlatformConstants.RESULT_CODE); + if (!WxPayKit.codeIsOk(resultCode)) { + LogUtil.error("微信退款请求失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(refundDTO), returnMsg, JSONUtil.toJsonStr(refundResult)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } else { + LogUtil.info("微信退款请求成功,入参为:{},响应体为:{}", JSONUtil.toJsonStr(refundDTO), JsonUtil.toJsonStr(refundResult)); + return TpRefundResultDTO.builder().refundTime(new Date().getTime()).success(true).build(); + } + } catch (Exception e) { + LogUtil.error("微信退款请求失败,入参为:{},异常堆栈信息:{}", JSONUtil.toJsonStr(refundDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } + } + + public TpPayResultDTO queryPayResult(PayPlatformQueryResultDTO queryResultDTO) { + String bizNo = queryResultDTO.getPayBizNo(); + + try { + // 获取当前租户的支付配置 + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(queryResultDTO.getOrgCode(), queryResultDTO.getBizType(), queryResultDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 构造请求参数 + Map params = OrderQueryModel.builder() + .appid(wechatPayConfig.getAppId()) + .mch_id(wechatPayConfig.getMchId()) + .out_trade_no(queryResultDTO.getPayBizNo()) + .nonce_str(WxPayKit.generateStr()) + .build() + .createSign(wechatPayConfig.getApiKey(), SignType.MD5); + + // 处理响应 + String xmlResult = WxPayApi.orderQuery(params); + Map queryResult = WxPayKit.xmlToMap(xmlResult); + String returnCode = queryResult.get(PayPlatformConstants.RETURN_CODE); + String returnMsg = queryResult.get(PayPlatformConstants.RETURN_MSG); + String tradeState = queryResult.get(PayPlatformConstants.TRADE_STATE); + String successTime = queryResult.get(PayPlatformConstants.TIME_END); + String transactionId = queryResult.get(PayPlatformConstants.TRANSACTION_ID); + + if (!WxPayKit.codeIsOk(returnCode)) { + LogUtil.error("查询微信支付结果失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(queryResultDTO), returnMsg, JSONUtil.toJsonStr(queryResult)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } + + String resultCode = queryResult.get(PayPlatformConstants.RESULT_CODE); + if (!WxPayKit.codeIsOk(resultCode)) { + LogUtil.error("查询微信支付结果失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(queryResultDTO), returnMsg, JSONUtil.toJsonStr(queryResult)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } else { + if (WxPayKit.codeIsOk(tradeState)) { + LogUtil.info("查询微信支付结果,当前订单支付成功,入参为:{}", JSONUtil.toJsonStr(queryResultDTO)); + return TpPayResultDTO.builder() + .bizNo(queryResultDTO.getPayBizNo()) + .payTime(LocalDateTimeUtil.toEpochMilli(LocalDateTime.parse(successTime, DateTimeFormatter.ofPattern("yyyyMMddHHmmss")))) + .paySuccess(true) + .outPayFlowId(transactionId) + .build(); + } + + LogUtil.info("查询微信支付结果,当前订单未支付,入参为:{},响应为:{}", JSONUtil.toJsonStr(queryResultDTO), JSONUtil.toJsonStr(queryResult)); + return TpPayResultDTO.builder() + .bizNo(queryResultDTO.getPayBizNo()) + .paySuccess(false) + .build(); + } + } catch (Exception e) { + LogUtil.error("查询微信支付结果失败,订单号:{},异常堆栈信息:{}", bizNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_PAY_RESULT_ERROR); + } + } + + public TpRefundResultDTO queryRefundResult(PayPlatformQueryResultDTO queryResultDTO) { + String refundBizNo = queryResultDTO.getPayBizNo(); + + try { + // 获取当前租户的支付配置 + TpWechatPayConfig wechatPayConfig = payConfigInitializer.getPayConfig(queryResultDTO.getOrgCode(), queryResultDTO.getBizType(), queryResultDTO.getTenantId()).getWechatPayConfig(); + if (wechatPayConfig == null) { + LogUtil.error("微信收款配置不存在,需要检查公交业主是否配置了支付账号,入参:{}", JSONUtil.toJsonStr(queryResultDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_ALIPAY_CLIENT); + } + + // 创建请求参数 + Map params = RefundQueryModel.builder() + .appid(wechatPayConfig.getAppId()) + .mch_id(wechatPayConfig.getMchId()) + .nonce_str(WxPayKit.generateStr()) + .out_trade_no(queryResultDTO.getPayBizNo()) + .out_refund_no(queryResultDTO.getRefundOutRequestNo()) + .build() + .createSign(wechatPayConfig.getApiKey(), SignType.MD5); + + // 查询退款结果 + String xmlResult = WxPayApi.orderRefundQuery(false, params); + + // 处理响应 + Map queryResult = WxPayKit.xmlToMap(xmlResult); + String returnCode = queryResult.get(PayPlatformConstants.RETURN_CODE); + String returnMsg = queryResult.get(PayPlatformConstants.RETURN_MSG); + String refundStatus = queryResult.get(PayPlatformConstants.REFUND_STATUS_N); + String refundSuccessTime = queryResult.get(PayPlatformConstants.REFUND_SUCCESS_TIME_N); + String transactionId = queryResult.get(PayPlatformConstants.TRANSACTION_ID); + + if (!WxPayKit.codeIsOk(returnCode)) { + LogUtil.error("查询微信退款结果失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(queryResultDTO), returnMsg, JSONUtil.toJsonStr(queryResult)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } + + String resultCode = queryResult.get(PayPlatformConstants.RESULT_CODE); + if (!WxPayKit.codeIsOk(resultCode)) { + LogUtil.error("查询微信退款结果失败,入参为:{},结果为:{},完整响应体:{}", JSONUtil.toJsonStr(queryResultDTO), returnMsg, JSONUtil.toJsonStr(queryResult)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_ERROR, TpTradeCoreErrorCode.REFUND_ERROR.getDesc()); + } else { + if (WxPayKit.codeIsOk(refundStatus)) { + LogUtil.info("查询微信退款结果成功,当前订单退款成功,入参为:{}", JSONUtil.toJsonStr(queryResultDTO)); + return TpRefundResultDTO.builder() + .success(true) + .bizNo(refundBizNo) + .outPayFlowId(transactionId) + .refundTime(LocalDateTimeUtil.toEpochMilli(LocalDateTime.parse(refundSuccessTime, DateTimeFormatter.ofPattern("yyyyMMddHHmmss")))) + .build(); + } + + LogUtil.info("查询微信退款结果成功,当前订单未退款成功,入参为:{},响应为:{}", JSONUtil.toJsonStr(queryResultDTO), JSONUtil.toJsonStr(queryResult)); + return TpRefundResultDTO.builder() + .success(false) + .bizNo(refundBizNo) + .outPayFlowId(transactionId) + .build(); + } + } catch (Exception e) { + LogUtil.error("查询微信退款结果失败,退款单号:{},异常堆栈信息:{}", refundBizNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.QUERY_REFUND_RESULT_ERROR); + } + } + + private TpPaySceneEnum checkPayScene(String payScene) { + TpPaySceneEnum paySceneEnum = TpPaySceneEnum.getByCode(payScene); + if (paySceneEnum == null) { + LogUtil.error("微信预支付接口,入参为:{},当前支付场景不存在", payScene); + throw new TpTradeCoreException(NOT_SUPPORT_PAY_SCENE); + } + + if (!WECHAT_SUPPORT_PAY_SCENE.contains(paySceneEnum)) { + throw new TpTradeCoreException(NOT_SUPPORT_PAY_SCENE); + } + + return paySceneEnum; + } + + /** + * 退款业务校验 + */ + private void refundBizCheck(PayPlatformRefundDTO refundDTO) { + TpMoney.CompareResult compareResult = refundDTO.getRefundAmount().compare(refundDTO.getPayAmount()); + if (compareResult == TpMoney.CompareResult.GREATER_THAN) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.REFUND_AMOUNT_GREATER_THAN_PAY_AMOUNT); + } + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayConfig.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayConfig.java new file mode 100644 index 0000000..2d2dbb9 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayConfig.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import lombok.*; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpAlipayConfig { + /** + * 支付宝appId + */ + private String appId; + + /** + * 支付宝公钥 + */ + private String publicKey; + + /** + * 支付宝私钥 + */ + private String privateKey; + + /** + * 支付成功通知url + */ + private String payNotifyUrl; + + /** + * 退款通知url + */ + private String refundNotifyUrl; + + + private String returnUrl; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayMiniProgramConfig.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayMiniProgramConfig.java new file mode 100644 index 0000000..25b3ba7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpAlipayMiniProgramConfig.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; + +/** + * @author amos wong + * @create 2023/12/6 19:45 + * @Description + */ +@Data +public class TpAlipayMiniProgramConfig { + /** + * 城市编码 + */ + private String cityCode; + + /** + * 支付宝appId + */ + private String appId; + + /** + * 支付宝公钥 + */ + private String publicKey; + + /** + * 支付宝私钥 + */ + private String privateKey; + + /** + * 支付成功通知url + */ + private String notifyUrl; + + /** + * 支付成功跳转url + */ + private String returnUrl; + + /** + * 支付成功通知url + */ + private String appAuthToken; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayConfig.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayConfig.java new file mode 100644 index 0000000..437c0ca --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayConfig.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import com.alipay.api.AlipayClient; +import com.deepinnet.tptradecore.common.service.integration.config.*; +import lombok.Data; + +/** + * @author amos wong + * @create 2023/11/8 10:35 + * @Description + */ +@Data +public class TpPayConfig { + /** + * 支付宝配置 + */ + private TpAlipayConfig alipayConfig; + + /** + * 微信配置 + */ + private TpWechatPayConfig wechatPayConfig; + + /** + * 支付宝client + */ + private AlipayClient alipayClient; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayReturnUrlConfig.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayReturnUrlConfig.java new file mode 100644 index 0000000..c6f69f3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpPayReturnUrlConfig.java @@ -0,0 +1,17 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import lombok.Data; + +/** + * @author amos wong + * @create 2023/12/6 19:45 + * @Description + */ +@Data +public class TpPayReturnUrlConfig { + + private String tenantId; + + private TpUrl url; +} + diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpUrl.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpUrl.java new file mode 100644 index 0000000..0a3944a --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpUrl.java @@ -0,0 +1,15 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import lombok.Data; + +/** + * @author amos wong + * @create 2024/1/4 17:57 + * @Description + */ +@Data +public class TpUrl { + private String customBus; + + private String charterBus; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatMiniProgramConfig.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatMiniProgramConfig.java new file mode 100644 index 0000000..fea6192 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatMiniProgramConfig.java @@ -0,0 +1,62 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import lombok.Data; + +/** + * @author amos wong + * @create 2024/1/2 11:22 + * @Description + */ +@Data +public class TpWechatMiniProgramConfig { + + /** + * 公众号id + */ + private String appId; + + /** + * 城市编号 + */ + private String cityCode; + + /** + * 直连商户id + */ + private String mchId; + + /** + * 支付成功回调地址 + */ + private String payNotifyUrl; + + /** + * 退款回调地址 + */ + private String refundNotifyUrl; + + /** + * 商户证书序列号 + */ + private String serialNo; + + /** + * 平台证书序列号 + */ + private String platSerialNo; + + /** + * 微信支付证书 + */ + private String certificate; + + /** + * 私钥内容 + */ + private String privateKey; + + /** + * api密钥-管理后台自己设置的密钥 + */ + private String apiKey; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatPayConfig.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatPayConfig.java new file mode 100644 index 0000000..53fea50 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/config/TpWechatPayConfig.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.service.integration.config; + +import lombok.Data; + +@Data +public class TpWechatPayConfig { + + private String appId; + + private String mchId; + + /** + * 支付成功回调地址 + */ + private String payNotifyUrl; + + /** + * 退款回调地址 + */ + private String refundNotifyUrl; + + /** + * 商户证书序列号 + */ + private String serialNo; + + /** + * 平台证书序列号 + */ + private String platSerialNo; + + /** + * 微信支付证书 + */ + private String certificate; + + /** + * 私钥内容 + */ + private String privateKey; + + /** + * api密钥-管理后台自己设置的密钥 + */ + private String apiKey; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/constants/PayPlatformConstants.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/constants/PayPlatformConstants.java new file mode 100644 index 0000000..cc66453 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/constants/PayPlatformConstants.java @@ -0,0 +1,197 @@ +package com.deepinnet.tptradecore.common.service.integration.constants; + +/** + * @author amos wong + * @create 2022-11-05 20:50 + */ + +public class PayPlatformConstants { + + //===============支付宝预支付拉起收银台的常量 + /** + * 支付宝超时时间的格式 + */ + public final static String ALIPAY_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + + public final static String TENANT_ID = "tenantId"; + + public final static String BIZ_TYPE = "bizType"; + + public final static String PASSBACK_PARAMS = "passback_params"; + + public final static String RESOURCE = "resource"; + + public final static String CIPHERTEXT = "ciphertext"; + + public final static String NONCE = "nonce"; + + public final static String ASSOCIATED_DATA = "associated_data"; + + /** + * 支付宝手机h5支付的产品码 + */ + public final static String ALIPAY_QUICK_WAP_PRODUCT_CODE = "QUICK_WAP_WAY"; + + /** + * 支付宝手机APP支付的产品码 + */ + public final static String ALIPAY_QUICK_MSECURITY_PRODUCT_CODE = "QUICK_MSECURITY_PAY"; + + /** + * 支付宝手机小程序支付的产品码 + */ + public final static String ALIPAY_JSAPI_PRODUCT_CODE = "JSAPI_PAY"; + + //===============支付宝回调需要的常量 + public final static String OUT_TRADE_NO = "out_trade_no"; + + public final static String TOTAL_AMOUNT = "total_amount"; + + public final static String PAY_SCENE = "payScene"; + + public final static String APP_ID = "app_id"; + + public final static String ALIPAY_NOTIFY_PAY_TIME = "gmt_payment"; + + public final static String OUT_BIZ_NO = "out_biz_no"; + + public final static String REFUND_FEE = "refund_fee"; + + public final static String PASS_BACK_PARAMS = "passback_params"; + + public final static String ALIPAY_NOTIFY_REFUND_TIME = "gmt_refund"; + + public final static String TRADE_STATUS = "trade_status"; + + public final static String ALIPAY_TRADE_FINISHED = "TRADE_FINISHED"; + + public final static String TRADE_NO = "trade_no"; + + public final static String CODE = "code"; + + public final static String TRADE_STATE = "trade_state"; + public final static String REFUND_STATUS = "refund_status"; + + public final static String REFUND_STATUS_N = "refund_status_n"; + public final static String REFUND_SUCCESS_TIME_N = "refund_success_time_n"; + + public final static String TIME_END = "time_end"; + + public final static String ORG_CODE = "org_code"; + + //===============微信预支付拉起收银台的常量 + + /** + * 货币种类:人民币 + */ + public final static String CURRENCY_CNY = "CNY"; + + /** + * H5场景信息 + */ + public final static String WECHAT_H5_INFO_TYPE = "Wap"; + + public final static String DEFAULT_FORMAT = "json"; + + public final static String DEFAULT_CHARSET = "UTF-8"; + + public final static String DEFAULT_SIGN_TYPE = "RSA2"; + + public final static String WECHAT_PREPAY_ID = "prepay_id"; + + public final static String WECHAT_REFUND_STATUS_KEY = "status"; + + public final static String WECHAT_REFUND_SUCCESS_TIME_KEY = "success_time"; + + public final static String WECHAT_REFUND_ID = "refund_id"; + + public final static String WECHAT_REFUND_SUCCESS = "SUCCESS"; + + public final static String WECHAT_REFUND_PROCESSING = "PROCESSING"; + + public final static String WECHAT_PAY_SUCCESS = "SUCCESS"; + + public final static Integer WECHAT_SUCCESS_RESPONSE_CODE = 200; + + public final static String DUPLICATED_PAID_CODE = "ORDERPAID"; + + public final static String ALIPAY_FUND_CHANGE_Y = "Y"; + + public final static String ALIPAY_FUND_CHANGE_N = "N"; + + public final static String ALIPAY_GMT_REFUND_PAY = "gmt_refund_pay"; + + /** + * 微信支付流水号 + */ + public final static String TRANSACTION_ID = "transaction_id"; + + public final static String OUT_REFUND_NO = "out_refund_no"; + + public final static String WECHAT_SUCCESS_TIME = "success_time"; + + //===============微信回调验签的相关参数 + /** + * 微信签名随机串 + */ + public final static String WECHAT_CALLBACK_NONCE = "Wechatpay-Nonce"; + + /** + * 签名 + */ + public final static String WECHAT_CALLBACK_SIGNATURE = "Wechatpay-Signature"; + + /** + * 证书序列号(微信平台) + */ + public final static String WECHAT_CALLBACK_SERIAL = "Wechatpay-Serial"; + + /** + * 附加数据 + */ + public final static String ATTACH = "attach"; + + /** + * 时间戳 + */ + public final static String WECHAT_CALLBACK_TIMESTAMP = "Wechatpay-Timestamp"; + + public final static String MCH_ID = "mchid"; + + public static final String WECHAT_TRADE_STATE_KEY = "trade_state"; + + public static final String ALIPAY_TRADE_SUCCESS = "TRADE_SUCCESS"; + + public static final String ALIPAY_PREPAY_SUCCESS = "10000"; + + public static final String ALIPAY_DUPLICATE_PAID_SUB_CODE = "ACQ.TRADE_HAS_SUCCESS"; + + public static final String REFUND_SUCCESS = "REFUND_SUCCESS"; + + public static final String REFUND_DETAIL_ITEM_LIST = "refund_detail_item_list"; + + public static final String SEND_BACK_FEE = "send_back_fee"; + + public static final String H5_INFO_WAP_TYPE = "Wap"; + + public static final String H5_INFO_ANDROID_TYPE = "Android"; + + public static final String H5_INFO_IOS_TYPE = "IOS"; + + public static final String RETURN_CODE = "return_code"; + public static final String RETURN_MSG = "return_msg"; + public static final String RESULT_CODE = "result_code"; + + public static final String WECHAT_H5_RESPONSE_URL = "h5_url"; + + public static final String MWEB_URL = "mweb_url"; + + public static final String PREPAY_ID = "prepay_id"; + + public static final String MD5 = "MD5"; + + public static final String APP_AUTH_TOKEN = "app_auth_token"; + + public static final String GRANT_TYPE = " authorization_code"; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformPreparePayDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformPreparePayDTO.java new file mode 100644 index 0000000..d7ff8e0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformPreparePayDTO.java @@ -0,0 +1,83 @@ +package com.deepinnet.tptradecore.common.service.integration.dto; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2022-11-05 20:25 + *

+ * 第三方支付平台预支付DTO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class PayPlatformPreparePayDTO { + + /** + * 订单号,作为和支付宝的幂等字段 + * 如果使用支付单号可能会出现微信和支付宝同时支付造成重复支付的问题 + */ + private String bizNo; + + /** + * 支付宝小程序appId,当支付宝小程序支付时必传 + */ + private String appId; + + /** + * 原始订单编号 + */ + private String orderNo; + + /** + * 业务类型,bizNo+bizType用作幂等号 + */ + private String bizType; + + /** + * 买家id,小程序支付必填,支付宝小程序中代表用户id + * 微信小程序中代表openid + */ + private String buyerId; + + /** + * 组织编号 + */ + private String orgCode; + + /** + * 支付标题 + */ + private String payTitle; + + /** + * 支付场景 + */ + private String payScene; + + /** + * 需要支付的总金额,单位为分 + */ + private TpMoney payAmount; + + /** + * 支付成功后的跳转地址 + */ + private String returnUrl; + + /** + * 支付用户的ip地址 + */ + private String userIp; + + /** + * 支付超时时间,绝对时间 + */ + private LocalDateTime payTimeout; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformQueryResultDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformQueryResultDTO.java new file mode 100644 index 0000000..0a36643 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformQueryResultDTO.java @@ -0,0 +1,43 @@ +package com.deepinnet.tptradecore.common.service.integration.dto; + +import lombok.*; + +/** + * @author amos wong + * @create 2022-11-08 11:25 + *

+ * 第三方支付平台查询支付结果的DTO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class PayPlatformQueryResultDTO { + /** + * 正向业务单号 + */ + private String payBizNo; + + /** + * 正向微信、支付宝外部支付流水号 + */ + private String outPayFlowId; + + /** + * 单次退款的请求号,用于幂等处理 + */ + private String refundOutRequestNo; + + private String bizType; + + private String payScene; + + private String appId; + + /** + * 组织编号 + */ + private String orgCode; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformRefundDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformRefundDTO.java new file mode 100644 index 0000000..154b965 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/PayPlatformRefundDTO.java @@ -0,0 +1,69 @@ +package com.deepinnet.tptradecore.common.service.integration.dto; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.*; + +import javax.validation.constraints.*; + +/** + * @author amos wong + * @create 2022-11-13 10:12 + *

+ * 请求第三方支付平台退款DTO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class PayPlatformRefundDTO { + + /** + * 正向业务单号:正向订单号+正向业务类型 + */ + @NotBlank(message = "正向业务单号不能为空") + private String payBizNo; + + /** + * 微信和支付宝外部支付流水号 + */ + @NotBlank(message = "微信和支付宝外部支付流水号不能为空") + private String outPayFlowId; + + /** + * 退款业务类型 + */ + private String refundBizType; + + /** + * 正向支付单的支付场景 + */ + private String payScene; + + /** + * 支付宝小程序appId + */ + private String appId; + + /** + * 退款请求号,用于幂等处理 + */ + @NotBlank(message = "退款请求号") + private String refundOutRequestNo; + + @NotBlank(message = "组织编号不能为空") + private String orgCode; + + /** + * 订单支付的总金额,单位为分 + */ + @NotNull(message = "订单支付的总金额不能为空") + private TpMoney payAmount; + + /** + * 退款的总金额,单位为分 + */ + @NotNull(message = "退款的总金额不能为空") + private TpMoney refundAmount; + + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpPayResultDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpPayResultDTO.java new file mode 100644 index 0000000..76ca8aa --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpPayResultDTO.java @@ -0,0 +1,55 @@ +package com.deepinnet.tptradecore.common.service.integration.dto; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2022-11-08 11:37 + *

+ * 在第三方支付平台查询支付结果的返回值 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPayResultDTO implements Serializable { + + private static final long serialVersionUID = 6151927360028137085L; + + /** + * 是否支付成功 + */ + private boolean paySuccess; + + /** + * 业务单号,目前是订单号 + */ + private String bizNo; + + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 支付宝或微信的交易号 + */ + private String outPayFlowId; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 支付方式 + */ + private String payType; + + /** + * 支付场景 + */ + private String payScene; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpRefundResultDTO.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpRefundResultDTO.java new file mode 100644 index 0000000..1a64215 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpRefundResultDTO.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.common.service.integration.dto; + +import lombok.*; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2022-11-08 11:37 + *

+ * 在第三方支付平台查询支付结果的返回值 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpRefundResultDTO implements Serializable { + + private static final long serialVersionUID = 6151927360028137085L; + + /** + * 是否退款成功 + */ + private boolean success; + + /** + * 退款申请单号 + */ + private String bizNo; + + /** + * 退款支付单号 + */ + private String payOrderNo; + + /** + * 支付宝或微信的交易号-微信支付退款单号 + */ + private String outPayFlowId; + + /** + * 退款时间 + */ + private Long refundTime; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpWechatH5Response.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpWechatH5Response.java new file mode 100644 index 0000000..41b1338 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/dto/TpWechatH5Response.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.service.integration.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author amos wong + * @create 2023/11/16 14:00 + * @Description + */ +@Data +public class TpWechatH5Response implements Serializable { + + private String h5_url; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/H5SceneInfo.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/H5SceneInfo.java new file mode 100644 index 0000000..7fed57f --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/H5SceneInfo.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.common.service.integration.entity; + +import lombok.Data; + + +@Data +public class H5SceneInfo { + + private H5 h5_info; + + @Data + public static class H5 { + private String type; + private String app_name; + private String bundle_id; + private String package_name; + private String wap_url; + private String wap_name; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemMultiValue.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemMultiValue.java new file mode 100644 index 0000000..d0b9c6b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemMultiValue.java @@ -0,0 +1,18 @@ +package com.deepinnet.tptradecore.common.service.integration.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class TpConfigItemMultiValue { + /** + * 配置项Code + */ + private String code; + + /** + * 配置项值 + */ + private List settingValue; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemSingleValue.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemSingleValue.java new file mode 100644 index 0000000..d55d698 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/entity/TpConfigItemSingleValue.java @@ -0,0 +1,16 @@ +package com.deepinnet.tptradecore.common.service.integration.entity; + +import lombok.Data; + +@Data +public class TpConfigItemSingleValue { + /** + * 配置项Code + */ + private String code; + + /** + * 配置项值 + */ + private String settingValue; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/initializer/TpPayConfigInitializer.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/initializer/TpPayConfigInitializer.java new file mode 100644 index 0000000..56de455 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/initializer/TpPayConfigInitializer.java @@ -0,0 +1,176 @@ +package com.deepinnet.tptradecore.common.service.integration.initializer; + +import cn.hutool.json.JSONUtil; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.pay.*; +import com.deepinnet.tpbaseopcore.common.enums.TpPaySceneEnum; +import com.deepinnet.tptradecore.common.enums.TpBizTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpOrgClient; +import com.deepinnet.tptradecore.common.service.integration.config.*; +import com.deepinnet.tptradecore.common.service.integration.constants.PayPlatformConstants; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/31 16:49 + * @Description 应用启动时去拉取所有公交业主配置的支付密钥的初始化器 + */ +@Component +public class TpPayConfigInitializer { + + @Resource + private TpOrgClient orgClient; + + public static final String ALIPAY_SANDBOX_GATEWAY = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; + + private static final String ALIPAY_GATEWAY_URL = "https://openapi.alipay.com/gateway.do"; + + private static final List SUPPORT_SANDBOX_ENV = Lists.newArrayList("local", "dev", "test"); + + @Value("${spring.profiles.active}") + private String env; + + public TpPayConfig getPayConfig(String orgCode, String bizType, String tenantId) { + // 调用组织域的接口获取支付信息 + OrgPayDTO orgPayDTO; + if (StringUtils.isBlank(bizType)) { + LogUtil.error("获取支付配置接口,业务类型为空,无法获取支付配置信息,组织编号:{}, 租户id:{}", orgCode, tenantId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.BIZ_TYPE_IS_EMPTY); + } + + // 根据环境获取支付宝网关地址,测试环境用沙箱,预发和生产用线上 + String alipayGatewayUrl = getAlipayGatewayUrl(env); + + // 获取支付配置 + if (TpBizTypeEnum.CUSTOM_BUS_BIZ_TYPE.contains(bizType)) { + orgPayDTO = orgClient.getOrgPay(orgCode, tenantId); + } else { + orgPayDTO = orgClient.getCharterBus(orgCode, tenantId); + } + + if (orgPayDTO.getOrgAliPay() == null && orgPayDTO.getOrgWxPay() == null) { + LogUtil.error("当前组织未配置支付宝和微信的收款账号,无法进行支付,需要及时排查问题,组织编号:{}, 租户id:{}", orgCode, tenantId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORG_NOT_FOUND_PAY_CONFIG); + } + + TpPayConfig payConfig = new TpPayConfig(); + if (orgPayDTO.getOrgAliPay() != null) { + // 初始化支付宝配置类 + TpAlipayConfig alipayConfig = TpAlipayConfig.builder() + .appId(orgPayDTO.getOrgAliPay().getAppId()) + .privateKey(orgPayDTO.getOrgAliPay().getPrivateKey()) + .publicKey(orgPayDTO.getOrgAliPay().getPublicKey()) + .payNotifyUrl(orgPayDTO.getOrgAliPay().getNotifyUrl()) + .build(); + + // 初始化支付宝client + AlipayClient alipayClient = new DefaultAlipayClient( + alipayGatewayUrl, + alipayConfig.getAppId(), + alipayConfig.getPrivateKey(), + PayPlatformConstants.DEFAULT_FORMAT, + PayPlatformConstants.DEFAULT_CHARSET, + alipayConfig.getPublicKey(), + PayPlatformConstants.DEFAULT_SIGN_TYPE); + + payConfig.setAlipayConfig(alipayConfig); + payConfig.setAlipayClient(alipayClient); + } + + if (orgPayDTO.getOrgWxPay() != null) { + OrgWxPayDTO orgWxPay = orgPayDTO.getOrgWxPay(); + TpWechatPayConfig wechatPayConfig = new TpWechatPayConfig(); + wechatPayConfig.setApiKey(orgWxPay.getApiV3()); + wechatPayConfig.setAppId(orgWxPay.getAppId()); + wechatPayConfig.setMchId(orgWxPay.getMerchantId()); + wechatPayConfig.setCertificate(orgWxPay.getCertContent()); + wechatPayConfig.setPayNotifyUrl(orgWxPay.getPayNotifyUrl()); + wechatPayConfig.setRefundNotifyUrl(orgWxPay.getRefundNotifyUrl()); + wechatPayConfig.setSerialNo(orgWxPay.getSerialNo()); + wechatPayConfig.setPlatSerialNo(orgWxPay.getPlatSerialNo()); + wechatPayConfig.setPrivateKey(orgWxPay.getAppSecret()); + payConfig.setWechatPayConfig(wechatPayConfig); + } + + return payConfig; + } + + public TpAlipayMiniProgramConfig getAlipayMiniProgramPayConfig(String uniqCode, String appId) { + TpQueryMiniProgramPayConfigDTO queryDTO = new TpQueryMiniProgramPayConfigDTO(); + queryDTO.setUniqCode(uniqCode); + queryDTO.setAppId(appId); + queryDTO.setPayScene(TpPaySceneEnum.ALI_MINI_PROGRAM.getCode()); + + TpMiniProgramPayDTO miniProgramPayDTO = orgClient.getMiniProgramPayConfig(queryDTO); + if (miniProgramPayDTO == null || miniProgramPayDTO.getAliMiniProgramPayDTO() == null) { + LogUtil.error("支付宝小程序支付配置不存在,入参为:{}", JSONUtil.toJsonStr(queryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ALIPAY_MINI_PROGRAM_CONFIG_NOT_FOUND); + } + + OrgAliMiniProgramPayDTO aliMiniProgramPayDTO = miniProgramPayDTO.getAliMiniProgramPayDTO(); + TpAlipayMiniProgramConfig alipayMiniProgramConfig = new TpAlipayMiniProgramConfig(); + alipayMiniProgramConfig.setCityCode(aliMiniProgramPayDTO.getUniqCode()); + alipayMiniProgramConfig.setAppId(aliMiniProgramPayDTO.getAppId()); + alipayMiniProgramConfig.setPublicKey(aliMiniProgramPayDTO.getPublicKey()); + alipayMiniProgramConfig.setPrivateKey(aliMiniProgramPayDTO.getPrivateKey()); + alipayMiniProgramConfig.setNotifyUrl(aliMiniProgramPayDTO.getNotifyUrl()); + alipayMiniProgramConfig.setAppAuthToken(aliMiniProgramPayDTO.getAppAuthToken()); + return alipayMiniProgramConfig; + } + + public TpWechatMiniProgramConfig getWechatMiniProgramPayConfig(String uniqCode, String appId) { + TpQueryMiniProgramPayConfigDTO queryDTO = new TpQueryMiniProgramPayConfigDTO(); + queryDTO.setUniqCode(uniqCode); + queryDTO.setAppId(appId); + queryDTO.setPayScene(TpPaySceneEnum.WECHAT_MINI_PROGRAM.getCode()); + + TpMiniProgramPayDTO miniProgramPayDTO = orgClient.getMiniProgramPayConfig(queryDTO); + if (miniProgramPayDTO == null || (miniProgramPayDTO.getWxMiniProgramPayDTO() == null && miniProgramPayDTO.getWxOfficialAccountPayDTO() == null)) { + LogUtil.error("微信小程序支付配置不存在,入参为:{}", JSONUtil.toJsonStr(queryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.WECHAT_MINI_PROGRAM_CONFIG_NOT_FOUND); + } + + OrgWxMiniProgramPayDTO wxMiniProgramPayDTO = miniProgramPayDTO.getWxMiniProgramPayDTO(); + OrgWxMiniProgramPayDTO officialAccountPayDTO = miniProgramPayDTO.getWxOfficialAccountPayDTO(); + + // 同一个appId只会是小程序或者微信公众号的其中一种 + if (wxMiniProgramPayDTO != null) { + return buildWechatMiniProgramConfig(wxMiniProgramPayDTO); + } else { + return buildWechatMiniProgramConfig(officialAccountPayDTO); + } + } + + public String getAlipayGatewayUrl(String env) { + if (SUPPORT_SANDBOX_ENV.contains(env)) { + return ALIPAY_SANDBOX_GATEWAY; + } + + return ALIPAY_GATEWAY_URL; + } + + private TpWechatMiniProgramConfig buildWechatMiniProgramConfig(OrgWxMiniProgramPayDTO wxMiniProgramPayDTO) { + TpWechatMiniProgramConfig wechatMiniProgramConfig = new TpWechatMiniProgramConfig(); + wechatMiniProgramConfig.setAppId(wxMiniProgramPayDTO.getAppId()); + wechatMiniProgramConfig.setMchId(wxMiniProgramPayDTO.getMerchantId()); + wechatMiniProgramConfig.setPayNotifyUrl(wxMiniProgramPayDTO.getPayNotifyUrl()); + wechatMiniProgramConfig.setRefundNotifyUrl(wxMiniProgramPayDTO.getRefundNotifyUrl()); + wechatMiniProgramConfig.setSerialNo(wxMiniProgramPayDTO.getSerialNo()); + wechatMiniProgramConfig.setPlatSerialNo(wxMiniProgramPayDTO.getPlatSerialNo()); + wechatMiniProgramConfig.setCertificate(wxMiniProgramPayDTO.getCertContent()); + wechatMiniProgramConfig.setPrivateKey(wxMiniProgramPayDTO.getPrivateKey()); + wechatMiniProgramConfig.setApiKey(wxMiniProgramPayDTO.getApiV3()); + wechatMiniProgramConfig.setCityCode(wxMiniProgramPayDTO.getUniqCode()); + return wechatMiniProgramConfig; + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageConstants.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageConstants.java new file mode 100644 index 0000000..26dce8d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageConstants.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.constants; + +/** + * @author amos wong + * @create 2023/9/4 09:56 + * @Description + */ +public interface MessageConstants { + + /** + * 交易核心topic + */ + String TRADECORE_EVENT_TOPIC = "TP_TRADECORE_EVENT_TOPIC"; + + /** + * 交易核心延时消息topic + */ + String TRADECORE_DELAY_EVENT_TOPIC = "TP_TRADECORE_DELAY_EVENT_TOPIC"; + + /** + * 资金中心支付成功事件 + **/ + String EVENT_CODE_TRANS_PAY_SUCCESS = "EC_TRANS_PAY_SUCCESS"; + + String EVENT_CODE_TRANS_REFUND_SUCCESS = "EC_TRANS_REFUND_SUCCESS"; + + String EVENT_CODE_RESCHEDULE_VOUCHER_INVALID_SUCCESS = "EC_RESCHEDULE_VOUCHER_INVALID_SUCCESS"; + + /** + * 退票成功消息 + **/ + String EVENT_CODE_REFUND_TICKET_SUCCESS = "EC_REFUND_TICKET_SUCCESS"; + + /** + * 凭证核销成功事件 + **/ + String EVENT_CODE_VOUCHER_VERIFICATION_SUCCESS = "EC_VOUCHER_VERIFICATION_SUCCESS"; + + /** + * 凭证过期事件 + **/ + String EVENT_CODE_VOUCHER_EXPIRED_SUCCESS = "EC_VOUCHER_EXPIRED_SUCCESS"; + + /** + * 订单过期延时消息 + */ + String EVENT_ORDER_DELAY_TAG_SUCCESS = "EVENT_ORDER_DELAY_TAG_SUCCESS"; + + String EVENT_REFUND_ORDER_DELAY_TAG_SUCCESS = "EVENT_REFUND_ORDER_DELAY_TAG_SUCCESS"; + + /** + * 支付单过期延时消息 + */ + String EVENT_PAY_ORDER_DELAY_TAG_SUCCESS = "EVENT_PAY_ORDER_DELAY_TAG_SUCCESS"; + + /** + * 订单拼车成功国朗通知 + */ + String EVENT_CAR_POOL_GUO_LANG_NOTICE_TAG_SUCCESS = "EVENT_CAR_POOL_GUO_LANG_NOTICE_TAG_SUCCESS"; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageDelayLevel.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageDelayLevel.java new file mode 100644 index 0000000..1151301 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageDelayLevel.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.constants; + +/** + * MQ延迟等级 + * + * @author tianxincode@163.com + * @since 2022/6/16 + */ +public interface MessageDelayLevel { + int ONE_SECOND = 1; + int FIVE_SECOND = 2; + int TEN_SECOND = 3; + int THIRTY_SECOND = 4; + int ONE_MINUTE = 5; + int TWO_MINUTE = 6; + int THREE_MINUTE = 7; + int FOUR_MINUTE = 8; + int FIVE_MINUTE = 9; + int SIX_MINUTE = 10; + int SEVEN_MINUTE = 11; + int EIGHT_MINUTE = 12; + int NINE_MINUTE = 13; + int TEN_MINUTE = 14; + int TWENTY_MINUTE = 15; + int THIRTY_MINUTE = 16; + int ONE_HOUR = 17; + int TWO_HOUR = 18; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageSysConstants.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageSysConstants.java new file mode 100644 index 0000000..d7eb0bc --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/constants/MessageSysConstants.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.constants; + +/** + * MQ系统级常量 + * + * @author amos wong + * @since 2022/11/6 + */ +public class MessageSysConstants { + /** + * 分隔符 + */ + public final static String DELIMITER = ":"; + + /** + * 消息来源-履约域(退票) + */ + public final static String SOURCE_CONTRACT = "TPTRADECORE-CONTRACT"; + + /** + * 消息来源-凭证 + */ + public final static String SOURCE_VOUCHER = "TPTRADECORE-VOUCHER"; + + /** + * 消息来源-资金域 + */ + public final static String SOURCE_TRANS = "TPTRADECORE-TRANS"; + + /** + * 消息来源-订单域 + */ + public final static String SOURCE_ORDER = "TPTRADECORE-ORDER"; + + /** + * 消费者组名称 + */ + public final static String CONSUMER_GROUP = "tptradecore-provider-group"; + + /** + * 生产者组名称 + */ + public final static String PROVIDER_GROUP = "tptradecore-consumer-group"; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/BaseMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/BaseMessageEntity.java new file mode 100644 index 0000000..3d04e94 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/BaseMessageEntity.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author amos wong + * @create 2022-11-22 20:57 + * + * MQ消息体基类 + */ +@Data +public class BaseMessageEntity { + + /** + * 发送消息的来源,这里为应用名称 + */ + protected String source; + + /** + * 业务键,用于RocketMQ控制台查看消费情况 + */ + protected String key; + + /* + * 发送时间 + */ + protected LocalDateTime sendTime = LocalDateTime.now(); + + /** + * 业务消息内容 + */ + private String body; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/CarPoolPosGuoLangMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/CarPoolPosGuoLangMessageEntity.java new file mode 100644 index 0000000..791a906 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/CarPoolPosGuoLangMessageEntity.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2024/5/21 + */ + +@Data +public class CarPoolPosGuoLangMessageEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 卡号 + */ + private String cardNo; + + /** + * 外部流水号 + */ + private String outTradeNo; + + /** + * 预约班次时间,格式:yyyy-mm-dd HH:mm:ss + */ + private String planTravelTime; + + /** + * pos机器编号 + */ + private String posNo; + + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/OrderDelayMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/OrderDelayMessageEntity.java new file mode 100644 index 0000000..e57b22d --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/OrderDelayMessageEntity.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + *

+ * 订单延迟消息实体 + *

+ * + * @author chenjiaju + * @since 2023/9/7 + */ + +@Data +public class OrderDelayMessageEntity { + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 租户编号 + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayOrderDelayMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayOrderDelayMessageEntity.java new file mode 100644 index 0000000..00e7f35 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayOrderDelayMessageEntity.java @@ -0,0 +1,26 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + *

+ * 订单延迟消息实体 + *

+ * + * @author chenjiaju + * @since 2023/9/7 + */ + +@Data +public class PayOrderDelayMessageEntity { + + /** + * 支付单编号 + */ + private String payOrderNo; + + /** + * 租户编号 + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayRefundDelayMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayRefundDelayMessageEntity.java new file mode 100644 index 0000000..ec76471 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PayRefundDelayMessageEntity.java @@ -0,0 +1,19 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PayRefundDelayMessageEntity extends BaseMessageEntity implements Serializable { + + /** + * 原始订单编号 + */ + private String originalOrderNo; + + /** + * 租户编号 + */ + private String tenantId; +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PaySuccessMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PaySuccessMessageEntity.java new file mode 100644 index 0000000..edfbf19 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/PaySuccessMessageEntity.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-22 21:33 + */ +@Data +public class PaySuccessMessageEntity { + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 订单号 + */ + private String orderNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 支付成功时间 + */ + private Long payTime; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/RefundSuccessMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/RefundSuccessMessageEntity.java new file mode 100644 index 0000000..ed260c6 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/RefundSuccessMessageEntity.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-22 21:33 + */ +@Data +public class RefundSuccessMessageEntity extends BaseMessageEntity { + /** + * 原始订单号 + */ + private String orderNo; + + /** + * 退款支付单号 + */ + private String refundPayOrderNo; + + /** + * 退款业务单号,如果是定制公交,这里代表退票申请单号 + */ + private String refundBizNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/TicketRefundSuccessMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/TicketRefundSuccessMessageEntity.java new file mode 100644 index 0000000..be057a0 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/TicketRefundSuccessMessageEntity.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-22 21:33 + */ +@Data +public class TicketRefundSuccessMessageEntity extends BaseMessageEntity { + + /** + * 订单号 + */ + private String orderNo; + + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 核销时间 + */ + private Long refundTime; + + /** + * 租户id + */ + private String tenantId; + + /** + * 是否存在退票 + */ + private boolean existRefund; + + /** + * 是否存在核销 + */ + private boolean existVerification; + + /** + * 是否存在有效凭证 + */ + private boolean existValid; + + /** + * 是否存在过期凭证 + */ + private boolean existExpire; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherExpireMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherExpireMessageEntity.java new file mode 100644 index 0000000..ddd5c46 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherExpireMessageEntity.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-22 21:33 + */ +@Data +public class VoucherExpireMessageEntity extends BaseMessageEntity { + + /** + * 订单号 + */ + private String orderNo; + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 是否存在有效凭证 + */ + private boolean existValid; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherRescheduleInvalidMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherRescheduleInvalidMessageEntity.java new file mode 100644 index 0000000..5367f7e --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherRescheduleInvalidMessageEntity.java @@ -0,0 +1,28 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + * @author amos wong + * @create 2024-07-19 10:40 + *

+ * 改签订单失效凭证后订单推进到已失效 + */ +@Data +public class VoucherRescheduleInvalidMessageEntity extends BaseMessageEntity { + + /** + * 订单号 + */ + private String orderNo; + + /** + * 是否存在退票 + */ + private Boolean existRefund; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherVerificationSuccessMessageEntity.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherVerificationSuccessMessageEntity.java new file mode 100644 index 0000000..7de24fa --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/entity/VoucherVerificationSuccessMessageEntity.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.entity; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-22 21:33 + */ +@Data +public class VoucherVerificationSuccessMessageEntity { + + /** + * 订单号 + */ + private String orderNo; + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 核销时间 + */ + private Long verificationTime; + + /** + * 租户id + */ + private String tenantId; + + /** + * 是否存在退票 + */ + private boolean existRefund; + + /** + * 是否存在核销 + */ + private boolean existVerification; + + /** + * 是否存在有效凭证 + */ + private boolean existValid; + + /** + * 是否存在过期凭证 + */ + private boolean existExpire; +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/template/MessageClient.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/template/MessageClient.java new file mode 100644 index 0000000..2ae3df7 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/mq/template/MessageClient.java @@ -0,0 +1,110 @@ +package com.deepinnet.tptradecore.common.service.integration.mq.template; + +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.BaseMessageEntity; +import org.apache.rocketmq.client.producer.*; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.apache.rocketmq.spring.support.RocketMQHeaders; +import org.slf4j.*; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + + +/** + * 封装MQ发送消息的逻辑 + */ +@Component +public class MessageClient { + + @Resource + private RocketMQTemplate rocketMQTemplate; + + @Value("${spring.profiles.active}") + private String env; + + private static final Logger MESSAGE_LOG = LoggerFactory.getLogger("MESSAGE-LOG"); + + public String getMessageTopic() { + return MessageConstants.TRADECORE_EVENT_TOPIC + "-" + env; + } + + public String getDelayMessageTopic() { + return MessageConstants.TRADECORE_DELAY_EVENT_TOPIC + "-" + env; + } + + /** + * 构建目的地 + */ + public String buildDestination(String topic, String tag) { + return topic + MessageSysConstants.DELIMITER + tag; + } + + /** + * 发送同步消息 + * + * @param topic 发送的主题 + * @param tag 路由标签 + * @param message 消息体 + * @param + * @return + */ + public SendResult send(String topic, String tag, T message) { + LogUtil.info(MESSAGE_LOG, "{},{},{}", topic, tag, message); + return send(topic + MessageSysConstants.DELIMITER + tag, message); + } + + private SendResult send(String destination, T message) { + Message sendMessage = MessageBuilder.withPayload(message).setHeader(RocketMQHeaders.KEYS, message.getKey()).build(); + SendResult sendResult = rocketMQTemplate.syncSend(destination, sendMessage); + LogUtil.info("[{}]同步消息[{}]发送结果[{}]", destination, JSONUtil.toJsonStr(message), JSONObject.toJSON(sendResult)); + return sendResult; + } + + /** + * 发送延迟消息 + * + * @param topic 发送的主题 + * @param tag 路由标签 + * @param message 消息体 + * @param delayTime 延迟时间毫秒值 + * @return + */ + public SendResult send(String topic, String tag, T message, long delayTime) { + return send(topic + MessageSysConstants.DELIMITER + tag, message, delayTime); + } + + private SendResult send(String destination, T message, Long delayTime) { + Message sendMessage = MessageBuilder.withPayload(message).setHeader(RocketMQHeaders.KEYS, message.getKey()).build(); + SendResult sendResult = rocketMQTemplate.syncSendDeliverTimeMills(destination, sendMessage, delayTime); + LogUtil.info("[{}]延迟时间[{}]消息[{}]发送结果[{}]", destination, delayTime, JSONUtil.toJsonStr(message), JSONUtil.toJsonStr(sendResult)); + return sendResult; + } + + /** + * 发送事务消息 + * + * @param topic 发送的主题 + * @param tag 路由标签 + * @param message 消息体 + * @param arg 额外信息 + * @param + * @return + */ + public SendResult sendTransactional(String topic, String tag, T message, Object arg) { + return send(topic + MessageSysConstants.DELIMITER + tag, message, arg); + } + + private SendResult send(String destination, T message, Object arg) { + Message sendMessage = MessageBuilder.withPayload(message).setHeader(RocketMQHeaders.KEYS, message.getKey()).build(); + TransactionSendResult sendResult = rocketMQTemplate.sendMessageInTransaction(destination, sendMessage, arg); + LogUtil.info("事务消息,业务key={},发送成功", destination, message.getKey()); + return sendResult; + } +} \ No newline at end of file diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/AlipayStrategy.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/AlipayStrategy.java new file mode 100644 index 0000000..2e5587b --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/AlipayStrategy.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.common.service.integration.strategy; + +import com.deepinnet.tptradecore.common.enums.trans.TpPayTypeEnum; +import com.deepinnet.tptradecore.common.service.integration.client.TpAliPayClient; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author amos wong + * @create 2022-11-10 17:39 + *

+ * 支付宝支付策略 + */ +@Service +public class AlipayStrategy implements PayStrategy { + + @Resource + private TpAliPayClient alipayClient; + + @Override + public String preparePay(PayPlatformPreparePayDTO preparePayDTO) { + return alipayClient.preparePay(preparePayDTO); + } + + @Override + public TpPayResultDTO queryPayResult(PayPlatformQueryResultDTO queryResultDTO) { + return alipayClient.queryPayResult(queryResultDTO); + } + + @Override + public TpPayTypeEnum getPayType() { + return TpPayTypeEnum.ALIPAY; + } + + @Override + public TpRefundResultDTO refund(PayPlatformRefundDTO refundDTO) { + return alipayClient.refund(refundDTO); + } + + @Override + public TpRefundResultDTO queryRefundResult(PayPlatformQueryResultDTO queryResultDTO) { + return alipayClient.queryRefundResult(queryResultDTO); + } +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/PayStrategy.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/PayStrategy.java new file mode 100644 index 0000000..d735285 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/PayStrategy.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.common.service.integration.strategy; + +import com.deepinnet.tptradecore.common.enums.trans.TpPayTypeEnum; +import com.deepinnet.tptradecore.common.service.integration.dto.*; + +/** + * @author amos wong + * @create 2022-11-10 17:38 + *

+ * 支付策略类 + */ + +public interface PayStrategy { + + String preparePay(PayPlatformPreparePayDTO preparePayDTO); + + TpPayResultDTO queryPayResult(PayPlatformQueryResultDTO queryResultDTO); + + TpPayTypeEnum getPayType(); + + TpRefundResultDTO refund(PayPlatformRefundDTO refundDTO); + + TpRefundResultDTO queryRefundResult(PayPlatformQueryResultDTO queryResultDTO); +} diff --git a/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/WechatPayStrategy.java b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/WechatPayStrategy.java new file mode 100644 index 0000000..8c56eb4 --- /dev/null +++ b/tptradecore-common/tptradecore-common-service/tptradecore-common-service-integration/src/main/java/com/deepinnet/tptradecore/common/service/integration/strategy/WechatPayStrategy.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.common.service.integration.strategy; + +import com.deepinnet.tptradecore.common.enums.trans.TpPayTypeEnum; +import com.deepinnet.tptradecore.common.service.integration.client.TpWechatPayClient; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author amos wong + * @create 2022-11-10 17:39 + */ +@Service +public class WechatPayStrategy implements PayStrategy { + + @Resource + private TpWechatPayClient wechatPayClient; + + @Override + public String preparePay(PayPlatformPreparePayDTO preparePayDTO) { + return wechatPayClient.preparePay(preparePayDTO); + } + + @Override + public TpPayResultDTO queryPayResult(PayPlatformQueryResultDTO queryResultDTO) { + return wechatPayClient.queryPayResult(queryResultDTO); + } + + @Override + public TpPayTypeEnum getPayType() { + return TpPayTypeEnum.WECHAT_PAY; + } + + @Override + public TpRefundResultDTO refund(PayPlatformRefundDTO refundDTO) { + return wechatPayClient.refund(refundDTO); + } + + @Override + public TpRefundResultDTO queryRefundResult(PayPlatformQueryResultDTO queryResultDTO) { + return wechatPayClient.queryRefundResult(queryResultDTO); + } +} diff --git a/tptradecore-common/tptradecore-common-util/pom.xml b/tptradecore-common/tptradecore-common-util/pom.xml new file mode 100644 index 0000000..44c29b3 --- /dev/null +++ b/tptradecore-common/tptradecore-common-util/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.deepinnet + tptradecore-common + 1.0-SNAPSHOT + + + tptradecore-common-util + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + org.springframework.boot + spring-boot-starter-web + + + diff --git a/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/NacosConfigUtil.java b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/NacosConfigUtil.java new file mode 100644 index 0000000..f6c5e9f --- /dev/null +++ b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/NacosConfigUtil.java @@ -0,0 +1,37 @@ +package com.deepinnet.tptradecore.common.util; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +/** + * @author amos wong + * @create 2022-11-02 11:47 + * nacos配置中心的工具类,该应用所有配置中心的属性都在该类中管理, + * 当有属性更新时会自动刷新 + */ + +/* +@RefreshScope +@Component +@Data +public class NacosConfigUtil { + + */ +/** + * 支付宝定制公交跳转URL + *//* + + @Value("${alipay.customBus.returnUrl}") + private String alipayCustomBusReturnUrl; + + */ +/** + * 支付宝包车跳转URL + *//* + + @Value("${alipay.charter.returnUrl}") + private String alipayCharterReturnUrl; +} +*/ diff --git a/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/PayCommonUtil.java b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/PayCommonUtil.java new file mode 100644 index 0000000..b127577 --- /dev/null +++ b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/PayCommonUtil.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.common.util; + +import cn.hutool.crypto.digest.*; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/10/9 14:52 + * @Description + */ +public class PayCommonUtil { + + public static String createWechatV2Sign(Map requestParams, String apiKey) { + // 按照参数名ASCII码从小到大排序 + SortedMap sortedRequestParams = paramFilter(requestParams); + + // 创建签名字符串 + String sign = buildSignString(sortedRequestParams, apiKey); + + // MD5加密并转换成大写 + return DigestUtil.md5Hex(sign).toUpperCase(); + } + + + private static SortedMap paramFilter(Map originalParam) { + SortedMap paramFilterMap = new TreeMap<>(); + if (MapUtils.isEmpty(originalParam)) { + return paramFilterMap; + } + + originalParam.forEach((k, v) -> { + if (StringUtils.isBlank(v) || StringUtils.equalsIgnoreCase(k, "sign")) { + return; + } + + paramFilterMap.put(k, v); + }); + + return paramFilterMap; + } + + private static String buildSignString(SortedMap paramMap, String apiKey) { + StringBuilder sb = new StringBuilder(); + + if (MapUtils.isNotEmpty(paramMap)) { + paramMap.forEach((k, v) -> { + if (!"key".equals(k)) { + sb.append(k).append("=").append(v).append("&"); + } + }); + } + + sb.append("key=").append(apiKey); + return sb.toString(); + } + +} diff --git a/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/TimeConvertUtil.java b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/TimeConvertUtil.java new file mode 100644 index 0000000..8a9381b --- /dev/null +++ b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/TimeConvertUtil.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.common.util; + +import cn.hutool.core.date.*; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; + +import java.time.*; +import java.time.format.DateTimeFormatter; + +public class TimeConvertUtil { + + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(GlobalConstants.TIME_FORMAT); + + /** + * 将HH:mm格式的时间,转化为当天对应时间的时间戳 + * + * @param time HH:mm格式的字符串,如08:40 + * @return + */ + public static Long convertTime2Timestamp(String time) { + LocalTime curTime = LocalTime.parse(time, FORMATTER); + LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), curTime); + return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + } + + /** + * 接收一个时间戳,截取当前时间戳对于的日期 + * 然后拼接传入的HH:mm格式的时间,最终返回两者拼接而成的时间戳 + * + * @param time HH:mm格式的字符串,如08:40 + * @param timestamp 需要拼接日期的时间戳 + * @return + */ + public static Long convertDateAndTime2Timestamp(Long timestamp, String time) { + LocalTime localTime = LocalTime.parse(time, FORMATTER); + LocalDate localDate = DateUtil.date(timestamp).toLocalDateTime().toLocalDate(); + LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); + return LocalDateTimeUtil.toEpochMilli(localDateTime); + } + + /** + * 接收一个时间戳,将它的时分秒丢弃,最后计算出当天日期00:00:00对应的时间 + * 如输入 2021-10-16 08:40:00,返回 2021-10-16 00:00:00 + * + * @param timestamp 时间戳 + * @return + */ + public static Long getTimeStampDayStartTimestamp(Long timestamp) { + LocalDate localDate = DateUtil.date(timestamp).toLocalDateTime().toLocalDate(); + LocalDateTime localDateTime = localDate.atStartOfDay(); + return LocalDateTimeUtil.toEpochMilli(localDateTime); + } + + /** + * 接收一个时间戳,将它的时分秒丢弃,最后计算出当天日期23:59:59 + * 如输入 2021-10-16 08:40:00,返回 2021-10-16 23:59:59 + * + * @param timestamp 时间戳 + * @return + */ + public static Long getTimeStampDayEndTimestamp(Long timestamp) { + LocalDate localDate = DateUtil.date(timestamp).toLocalDateTime().toLocalDate(); + LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.MAX); + return LocalDateTimeUtil.toEpochMilli(localDateTime); + } +} diff --git a/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/constants/BizDataKeyConstants.java b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/constants/BizDataKeyConstants.java new file mode 100644 index 0000000..d558a43 --- /dev/null +++ b/tptradecore-common/tptradecore-common-util/src/main/java/com/deepinnet/tptradecore/common/util/constants/BizDataKeyConstants.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.common.util.constants; + +/** + * @author amos wong + * @create 2024/4/16 10:35 + * @Description + */ +public class BizDataKeyConstants { + + public static final String ONE_TIME_VERIFICATION_TICKET = "oneTimeVerificationTicket"; + + public static final String DEPART_TIME_DESC = "departTimeDesc"; +} diff --git a/tptradecore-core/pom.xml b/tptradecore-core/pom.xml new file mode 100644 index 0000000..77af85d --- /dev/null +++ b/tptradecore-core/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + com.deepinnet + tptradecore + 1.0-SNAPSHOT + + + tptradecore-core + pom + + tptradecore-core-model + tptradecore-core-service + + + diff --git a/tptradecore-core/tptradecore-core-model/pom.xml b/tptradecore-core/tptradecore-core-model/pom.xml new file mode 100644 index 0000000..967972c --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.deepinnet + tptradecore-core + 1.0-SNAPSHOT + + + tptradecore-core-model + + + + org.springframework.boot + spring-boot-starter-validation + + + + diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAudit.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAudit.java new file mode 100644 index 0000000..3a2393b --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAudit.java @@ -0,0 +1,94 @@ +package com.deepinnet.tptradecore.core.model.audit; + +import lombok.Data; + +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/11/16 14:03 + * @Description + */ +@Data +public class TpAudit { + + + /** + * 主键Id + */ + private Long id; + /** + * 审核单编号 + */ + private String auditNo; + + /** + * 审核单类型 + */ + private Integer type; + + /** + * 提交时间 + */ + private Long submitTime; + + /** + * 审核单提交人编号 + */ + private String submitterNo; + + /** + * 审核单提交人名称 + */ + private String submitterName; + + /** + * 提交申请原因 + */ + private String applyReason; + + /** + * 审核员编号 + */ + private String auditorNo; + + + /** + * 审核员名字 + */ + private String auditorName; + + /** + * 审核状态 + */ + private String status; + + /** + * 审核建议 + */ + private String remark; + + /** + * 审核时间 + */ + private Long auditTime; + + /** + * 审核单关联业务单号 + */ + private String bizObjectNo; + /** + * 审核单关联业务单号类型 + */ + private String bizObjType; + + + /** + * 业务扩展字段 + */ + private Map bizData; + /** + * 租户ID + */ + private String tenantId; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrder.java new file mode 100644 index 0000000..c8ef847 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrder.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.core.model.audit; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单 + */ +@Data +public class TpAuditOrder implements Serializable { + + + /** + * 订单号 + */ + private String originalOrderNo; + + + /** + * 包车类型 + */ + private Integer charterBusType; + + + /** + * 订单金额(应付金额) + */ + private String payableAmount; + + /** + * 退款手续费 + */ + private String serviceCharge; + + /** + * 全额退款金额 + */ + private String fullRefundAmount; + + /** + * 扣手续费后退款金额 + */ + private String rscRefundAmount; + + /** + * 实际退款金额 + */ + private String actualRefundAmount; + + /** + * 所属组织编码 + */ + private String orgNo; + + /** + * 所属组织名称 + */ + private String orgName; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrderList.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrderList.java new file mode 100644 index 0000000..93a802c --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/audit/TpAuditOrderList.java @@ -0,0 +1,85 @@ +package com.deepinnet.tptradecore.core.model.audit; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author xiehuaqiao + * @create 2023/10/30 15:12 + * @Description 审核单 + */ +@Data +public class TpAuditOrderList implements Serializable { + + /** + * 审核单编号 + */ + private String auditNo; + + /** + * 提交时间 + */ + private Long submitTime; + + /** + * 提交人编号 + */ + private String submitterNo; + + /** + * 提交人名称 + */ + private String submitterName; + + /** + * 提交申请原因 + */ + private String applyReason; + + /** + * 审核员编号 + */ + private String auditorNo; + + /** + * 审核员名字 + */ + private String auditorName; + + /** + * 审核状态 + *

+ * approved_success: 审核通过 + * approved_reject:审核未通过 + * waiting_approved:待审核 + * approved_timeout:审核超时 + *

+ */ + private String status; + + /** + * 审核建议 + */ + private String remark; + + /** + * 审核时间 + */ + private Long auditTime; + + /** + * 审核单关联业务单号 + */ + private String bizObjectNo; + /** + * 审核单关联业务单号类型 + */ + private String bizObjType; + + /** + * 审核单关联的订单详情 + */ + private TpAuditOrder auditOrder; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpInvalidVoucherParam.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpInvalidVoucherParam.java new file mode 100644 index 0000000..5b58f70 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpInvalidVoucherParam.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +@Data +public class TpInvalidVoucherParam { + + private String refundApplyOrderNo; + + private String voucherNo; + + private Integer refundCount; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplicant.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplicant.java new file mode 100644 index 0000000..a901d28 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplicant.java @@ -0,0 +1,35 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:01 + * @Description 退票申请单领域模型 + */ + +@Data +public class TpRefundApplicant { + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + private String userNo; + + private String userName; + + private String phone; + + /** + * 租户id + */ + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplyOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplyOrder.java new file mode 100644 index 0000000..4fddcb6 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundApplyOrder.java @@ -0,0 +1,148 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import com.deepinnet.tptradecore.core.model.trans.TpPayOrder; +import lombok.Data; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 10:01 + * @Description 退票申请单领域模型 + */ + +@Data +public class TpRefundApplyOrder { + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 产品编码 + */ + private String productCode; + + /** + * 产品名称 + */ + private String productName; + + /** + * 产品类目编号 + */ + private String productCategoryNo; + + /** + * 产品类目名称 + */ + private String productCategoryName; + + /** + * 申请退票用户编号 + */ + private String userNo; + + /** + * 主订单号 + */ + private String orderNo; + + /** + * 业务单号 + */ + private String bizNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 退票原因 + */ + private String reason; + + /** + * 申请时间 + */ + private Long applyTime; + + /** + * 状态 + */ + private String status; + + /** + * 申请退款金额 + */ + private TpMoney applyAmount; + + /** + * 退款计费金额 + */ + private TpMoney chargeAmount; + + /** + * 实退金额 + */ + private TpMoney refundAmount; + + /** + * 退票标的项 + */ + private List subjectItemList; + + /** + * 线路 / 班次 + */ + private List refundRoutes; + + /** + * 退票乘客 + */ + private List passengers; + + /** + * 退票用车需求方 + */ + private TpRefundRequirementUser refundRequirementUser; + + /** + * 退款方式:原路退回或线下退款 + * + * @see com.deepinnet.tptradecore.common.util.enums.TpRefundTypeEnum + */ + private String refundType; + + /** + * 退款支付单 + */ + private List refundPayOrders; + + /** + * 退票申请人 + */ + private TpRefundApplicant refundApplicant; + + /** + * 退票凭证列表 + */ + private List refundVoucherList; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 租户id + */ + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundPassenger.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundPassenger.java new file mode 100644 index 0000000..b8c08a2 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundPassenger.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:02 + * @Description 退票申请单关联乘客领域模型 + */ +@Data +public class TpRefundPassenger { + + /** + * 退票申请单编号 + */ + private String refundApplyOrderNo; + + /** + * 退票标的项id + */ + private String refundSubjectItemNo; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 姓名 + */ + private String name; + + /** + * 联系方式 + */ + private String contactInfo; + + /** + * 证件号 + */ + private String certNo; + + /** + * 证件类型 + */ + private String certType; + + /** + * 乘客类型 + */ + private String passengerType; + + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRequirementUser.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRequirementUser.java new file mode 100644 index 0000000..34c5ed0 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRequirementUser.java @@ -0,0 +1,49 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:02 + * @Description 交通需求方领域模型(用车方) + */ +@Data +public class TpRefundRequirementUser { + + /** + * 退票申请单编号 + */ + private String refundApplyOrderNo; + + /** + * 退票标的项id + */ + private String refundSubjectItemId; + + /** + * 交通需求方编号 + */ + private String requirementNo; + + /** + * 交通需求方名称 + */ + private String requirementName; + + /** + * 联系方式 + */ + private String contactInfo; + + /** + * 联系人姓名 + */ + private String contactName; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRoute.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRoute.java new file mode 100644 index 0000000..8e9e456 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRoute.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import com.deepinnet.tptradecore.core.model.order.BaseModel; +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpRefundRoute extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 线路编号 + */ + private String routeNo; + + /** + * 线路名称 + */ + private String routeName; + + /** + * 去程/返程 + */ + private String roundTrip; + + /** + * 班次 + */ + private TpRefundRouteShuttle routeShuttle; + + /** + * 租户id + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRouteShuttle.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRouteShuttle.java new file mode 100644 index 0000000..0610ee5 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundRouteShuttle.java @@ -0,0 +1,52 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import com.deepinnet.tptradecore.core.model.order.BaseModel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@Data +public class TpRefundRouteShuttle extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 线路编号 + */ + private String routeNo; + + /** + * 班次编号 + */ + private String shuttleNo; + + /** + * 班次名称 + */ + private String shuttleName; + + /** + * 班次发车时间 + */ + private String shuttleTime; + + /** + * 租户id + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItem.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItem.java new file mode 100644 index 0000000..aee77da --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItem.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 10:02 + * @Description 退票标的项领域模型 + */ +@Data +public class TpRefundSubjectItem { + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 标的项id + */ + private String subjectItemId; + + /** + * 标的项编号 + */ + private String subjectItemNo; + + /** + * 标的项类型 + */ + private String subjectItemType; + + /** + * 数量 + */ + private Integer quantity; + + private String tripType; + + /** + * 退票标的项关联的乘客信息 + */ + private TpRefundPassenger passenger; + + /** + * 退票标的项关联的交通需求方(用车方) + */ + private TpRefundRequirementUser requirementUser; + + /** + * 退票标的项组成要素 + */ + private List subjectItemElements; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItemElement.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItemElement.java new file mode 100644 index 0000000..8deec1a --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundSubjectItemElement.java @@ -0,0 +1,48 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:02 + * @Description 退票标的项组成要素 + */ +@Data +public class TpRefundSubjectItemElement { + /** + * 标的项编号 + */ + private String subjectItemNo; + + /** + * 要素名称 + */ + private String name; + + /** + * 要素编码 + */ + private String code; + + /** + * 要素值 + */ + private String value; + + /** + * 单位编码 + */ + private String unitCode; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucher.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucher.java new file mode 100644 index 0000000..fa45638 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucher.java @@ -0,0 +1,13 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +@Data +public class TpRefundVoucher { + + private String refundApplyOrderNo; + + private String voucherNo; + + private Integer refundCount; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucherRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucherRecord.java new file mode 100644 index 0000000..8dea7b6 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/contract/TpRefundVoucherRecord.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.core.model.contract; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * 退票失效凭证记录 + */ +@Data +public class TpRefundVoucherRecord implements Serializable { + + /** + * 退票申请单号 + */ + private String refundApplyOrderNo; + + /** + * 失效凭证参数 + */ + private String invalidVoucherParam; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} \ No newline at end of file diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderMainEnum.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderMainEnum.java new file mode 100644 index 0000000..ba91d0f --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderMainEnum.java @@ -0,0 +1,68 @@ +package com.deepinnet.tptradecore.core.model.enums.order; + +/** + *

+ * 主子订单枚举 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ +public enum TpOrderMainEnum { + + /** + * 主订单 + */ + MAIN_ORDER(1, "主订单"), + + /** + * 子订单 + */ + SUB_ORDER(0, "子订单"), + + ; + + /** + * 主子订单 + */ + private Integer main; + + /** + * 主子订单中文描述 + */ + private String mainDesc; + + /** + * 订单状态类型 + */ + private Integer statusType; + + TpOrderMainEnum(Integer main, String mainDesc) { + this.main = main; + this.mainDesc = mainDesc; + } + + public Integer getMain() { + return main; + } + + public void setMain(Integer main) { + this.main = main; + } + + public String getMainDesc() { + return mainDesc; + } + + public void setMainDesc(String mainDesc) { + this.mainDesc = mainDesc; + } + + public Integer getStatusType() { + return statusType; + } + + public void setStatusType(Integer statusType) { + this.statusType = statusType; + } +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderStatusEnum.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderStatusEnum.java new file mode 100644 index 0000000..c559900 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderStatusEnum.java @@ -0,0 +1,366 @@ +package com.deepinnet.tptradecore.core.model.enums.order; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; + +import java.util.List; + +/** + *

+ * 订单状态枚举 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ +public enum TpOrderStatusEnum { + + /** + * 订单初始化 + */ + INIT(0, "订单初始化", 1), + + /** + * 订单待支付 + */ + PENDING_PAY(5, "订单待支付", 1), + + /** + * 订单超时未支付 + */ + ORDER_TIMEOUT(10, "订单超时", 1), + + /** + * 已支付 + */ + ALREADY_PAY(15, "已支付", 1), + + /** + * 部分核销 + */ + PARTLY_VERIFICATION(20, "部分核销", 1), + + /** + * 退款中 + */ + ORDER_REFUNDING(25, "退款中", 1), + + /** + * 部分退款 + */ + PARTLY_REFUND(30, "部分退款", 1), + + /** + * 已改签(终态) + */ + ALREADY_CHANGE(35, "已经改签", 1), + + /** + * 全部退款(终态) + */ + ALL_REFUND(40, "全部退款", 1), + + /** + * 退款失败 + */ + REFUND_ERROR(45, "退款失败", 1), + + /** + * 已完成 / 全部核销 (终态,存在退款请求) + */ + FINISH_HAS_REFUND(50, "已完成(存在退款)", 1), + + /** + * 已完成(未发生退款) + */ + FINISH_NOT_REFUND(55, "已完成(未发生退款)", 1), + + /** + * 订单部分过期 + */ + PARTLY_EXPIRE_HAS_REFUND(60, "包含退款", 1), + + /** + * 订单部分过期 + */ + PARTLY_EXPIRE_HAS_NOT_REFUND(65, "不包含退款", 1), + + /** + * 订单全部过期 + */ + ALL_EXPIRE(70, "订单全部过期", 1), + + /** + * 已改签, 包含退款 + */ + RESCHEDULE_HAS_REFUND(75, "已改签(包含退款)", 1), + + /** + * 已改签, 不包含退款 + */ + RESCHEDULE_NOT_REFUND(80, "已改签(不包含退款)", 1), + + // ============================= 定制包车 ============================= + + ORDER_PACKAGE_INIT(0, "包车订单初始化", 2), + + /** + * 订单待确认 + */ + ORDER_NEED_CONFIRM(5, "订单待确认", 2), + + /** + * 订单超时未确认 + */ + ORDER_TIMEOUT_CONFIRM(10, "订单超时未确认", 2), + + /** + * 订单已确认 + */ + ORDER_CONFIRMED(15, "订单已确认", 2), + + /** + * 订单已驳回 + */ + ORDER_REJECTED(20, "订单已驳回", 2), + + /** + * 订金待支付 + */ + ORDER_DEPOSIT_NEED_PAY(25, "订金待支付", 2), + + /** + * 订金超时未支付 + */ + ORDER_DEPOSIT_TIMEOUT(30, "订金超时未支付", 2), + + /** + * 订金已支付 + */ + ORDER_DEPOSIT_PAID(35, "订金已支付", 2), + + /** + * 订单待派车 + */ + ORDER_NEED_DISPATCH(40, "订单待派车", 2), + + /** + * 订单已派车 + */ + ORDER_DISPATCHED(45, "订单已派车", 2), + + /** + * 行程已发车 + */ + ORDER_TRIP_START(50, "行程已发车", 2), + + /** + * 行程结束待确认订单金额 + */ + ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT(52, "行程结束待确认订单金额", 2), + + /** + * 行程结束,待支付尾款 + */ + ORDER_TRIP_END_NEED_PAY(55, "行程结束待支付尾款", 2), + + /** + * 行程结束,已支付尾款 + */ + ORDER_TRIP_END_PAID(60, "行程结束已支付尾款", 2), + + /** + * 行程结束,退款中 + */ + ORDER_TRIP_END_REFUNDING(65, "行程结束退款中", 2), + + /** + * 行程结束,已退款 + */ + ORDER_TRIP_END_REFUNDED(70, "行程结束已退款", 2), + + /** + * 行程结束 (无退款 / 无尾款) + */ + ORDER_TRIP_END(75, "行程结束", 2), + + /** + * 取消订单审核中 + */ + ORDER_CANCEL_AUDITING(80, "取消订单审核中", 2), + + /** + * 取消订单审核通过 + */ + ORDER_CANCEL_AUDITED(85, "取消订单审核通过", 2), + + /** + * 订单取消待支付 + */ + ORDER_CANCEL_NEED_PAY(90, "订单取消待支付", 2), + + /** + * 订单取消已支付 + */ + ORDER_CANCEL_PAID(95, "订单取消已支付", 2), + + /** + * 订单取消退款中 + */ + ORDER_CANCEL_REFUNDING(100, "订单取消退款中", 2), + + /** + * 订单取消退款成功 + */ + ORDER_CANCEL_REFUNDED(105, "订单取消退款成功", 2), + + /** + * 订单已取消 + */ + ORDER_CANCELED(110, "订单已取消", 2), + + /** + * 变更订单-审核中 + */ + ORDER_CHANGE_AUDITING(115, "订单变更审核中", 2), + + /** + * 订单变更审核通过 + */ + ORDER_CHANGE_AUDITED(120, "订单变更审核通过", 2), + + // ============================= 拼车 ============================= + // 0状态共用 + // 与定制公交共用状态 5-待支付; 10-支付超时; + + ORDER_CARPOOL_INIT(0, "订单初始化", 3), + + /** + * 订单待支付 + */ + ORDER_CARPOOL_PENDING_PAY(5, "订单待支付", 3), + + /** + * 订单超时未支付 + */ + ORDER_CARPOOL_TIMEOUT(10, "订单超时", 3), + + /** + * 拼车中 + */ + ORDER_CARPOOLING(15, "拼车中", 3), + + /** + * 拼车成功-待乘车 + */ + ORDER_CARPOOLED(20, "拼车成功(待乘车)", 3), + + /** + * 已完成 + */ + ORDER_CARPOOLED_FINISH(25, "已完成", 3), + + /** + * 取消拼车成功无需退款 + */ + ORDER_CARPOOL_CANCELED_UN_REFUND(30, "取消拼车成功(无需退款)", 3), + + /** + * 取消拼车退款中 + */ + ORDER_CARPOOL_CANCEL_REFUNDING(35, "取消拼车退款中", 3), + + /** + * 取消拼车退款成功 + */ + ORDER_CARPOOL_CANCELED_REFUNDED(40, "取消拼车退款成功", 3), + + /** + * 拼车失败无需退款 + */ + ORDER_CARPOOL_FAIL_UN_REFUND(45, "拼车失败(无需退款)", 3), + + /** + * 拼车失败退款中 + */ + ORDER_CARPOOL_FAIL_REFUNDING(50, "拼车失败退款中", 3), + + /** + * 拼车失败退款成功 + */ + ORDER_FAIL_CARPOOL_REFUNDED(55, "拼车失败退款成功", 3), + + ; + + /** + * 订单状态 + */ + private Integer status; + + /** + * 订单状态名称 + */ + private String statusName; + + /** + * 订单状态类型 + */ + private Integer statusType; + + TpOrderStatusEnum (Integer status, String statusName, Integer statusType) { + this.status = status; + this.statusName = statusName; + this.statusType = statusType; + } + + @Deprecated + public TpOrderStatusEnum getStatusEnumByStatus(Integer status) { + for (TpOrderStatusEnum tpOrderStatusEnum : TpOrderStatusEnum.values()) { + if (ObjectUtil.equals(tpOrderStatusEnum.getStatus(), status)) { + return tpOrderStatusEnum; + } + } + return null; + } + + public static TpOrderStatusEnum getTpOrderStatusEnumByStatus(Integer status, Integer type) { + for (TpOrderStatusEnum statusEnum : TpOrderStatusEnum.values()) { + if (ObjectUtil.equals(statusEnum.getStatus(), status) && ObjectUtil.equal(statusEnum.getStatusType(), type)) { + return statusEnum; + } + } + + return null; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public Integer getStatusType() { + return statusType; + } + + public void setStatusType(Integer statusType) { + this.statusType = statusType; + } + + public static final List ORDER_END_STATUS = ListUtil.toList( + ORDER_CANCEL_PAID.getStatus(), + ORDER_CANCEL_REFUNDED.getStatus(), + ORDER_TRIP_END_PAID.getStatus(), + ORDER_TRIP_END_REFUNDED.getStatus(), + ORDER_TRIP_END.getStatus()); +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderTypeEnum.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderTypeEnum.java new file mode 100644 index 0000000..61e48a3 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/enums/order/TpOrderTypeEnum.java @@ -0,0 +1,68 @@ +package com.deepinnet.tptradecore.core.model.enums.order; + +import lombok.Getter; + +/** + *

+ * 订单类型枚举 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ +@Getter +public enum TpOrderTypeEnum { + + /** + * 定制公交 + */ + CUSTOMIZED_ORDER(1, "定制公交"), + + /** + * 包车订单 + */ + PACKING_ORDER(2, "包车订单"), + + /** + * 拼车 + */ + CARPOOL_ORDER(3, "拼车"), + + /** + * 定制公交-改签 + */ + CUSTOMIZED_RESCHEDULE_ORDER(4, "定制公交改签"), + + ; + + /** + * 订单类型 + */ + private Integer type; + + /** + * 类型描述 + */ + private String typeDesc; + + TpOrderTypeEnum(Integer type, String typeDesc) { + this.type = type; + this.typeDesc = typeDesc; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getTypeDesc() { + return typeDesc; + } + + public void setTypeDesc(String typeDesc) { + this.typeDesc = typeDesc; + } +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BaseModel.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BaseModel.java new file mode 100644 index 0000000..44eaaa5 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BaseModel.java @@ -0,0 +1,20 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; + +import java.io.Serializable; + +/** + * + * @author chenjiaju + * @since 2023/7/28 + */ + +@Data +public class BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BasePage.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BasePage.java new file mode 100644 index 0000000..8a9cfa7 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/BasePage.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 分页 + *

+ * + * @author chenjiaju + * @since 2023/8/1 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class BasePage extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 当前页 + */ + private int pageNum = 1; + + /** + * 每页显示条数 + */ + private int pageSize = 10; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBalanceOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBalanceOrder.java new file mode 100644 index 0000000..9228a9c --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBalanceOrder.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +/** + *

+ * 尾款 + *

+ * + * @author chenjiaju + * @since 2023/11/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpBalanceOrder extends BaseModel implements Serializable { + + /** + * 订金订单编号 + */ + private String balanceOrderNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 需要支付尾款金额 + */ + private String balanceAmount; + + /** + * 尾款类型 + */ + private String balanceType; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 支付状态 + */ + private Integer status; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBatchQueryOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBatchQueryOrder.java new file mode 100644 index 0000000..ae8c291 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpBatchQueryOrder.java @@ -0,0 +1,27 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author chenjiaju + * @version 2023-11-23 + */ +@Data +@Builder +public class TpBatchQueryOrder { + + /** + * 原始订单编号 + */ + private List originalOrderNos; + + /** + * 租户id(必传) + */ + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpDepositOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpDepositOrder.java new file mode 100644 index 0000000..7bd846f --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpDepositOrder.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +/** + *

+ * 订金 + *

+ * + * @author chenjiaju + * @since 2023/11/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpDepositOrder extends BaseModel implements Serializable { + + /** + * 订金订单编号 + */ + private String depositOrderNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 需要支付订金金额 + */ + private String payAmount; + + /** + * 支付比例 + */ + private BigDecimal payPercentage; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 支付状态 + */ + private Integer status; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrder.java new file mode 100644 index 0000000..239a242 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrder.java @@ -0,0 +1,286 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.*; + +/** + *

+ * 订单领域实体 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrder extends BaseModel implements Serializable { + + private static final long serialVersionUID = -1934894255107914110L; + + /** + * 产品编码 + */ + @NotNull + private String productNo; + + /** + * 产品名称 + */ + @NotNull + private String productName; + + /** + * 产品类目编码 + */ + @NotNull + private String productCategoryNo; + + /** + * 产品类目中文 + */ + @NotNull + private String productCategory; + + /** + * 外部业务单号 + */ + private String outRequestNo; + + /** + * 用户编码 + */ + @NotNull + private String userNo; + + /** + * 订单编码 + */ + @NotNull + private String orderNo; + + /** + * 父订单编号 + */ + private String parentOrderNo; + + /** + * 原订单号 + */ + private String originalOrderNo; + + /** + * 是否主订单(0-否;1-是) + */ + @NotNull + private Integer main; + + /** + * 订单状态 + */ + @NotNull + private Integer status; + + /** + * 确认订单结束状态 + */ + private Integer endConfirmStatus; + + /** + * 确认结束时间 + */ + private Long endConfirmTime; + + /** + * 审核前状态 + */ + private Integer beforeApproveStatus; + + /** + * 订单类型(定制公交 / 预约包车 / 包车改签) + */ + @NotNull + private Integer type; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 付款模式 + */ + private String payMode; + + /** + * 乘客人数 + */ + private Integer passengerNumber; + + /** + * 乘客人名 + */ + private List passengerNames; + + /** + * 实付金额 + */ + private String payAmount; + + /** + * 应付金额 + */ + private String payableAmount; + + /** + * 订单优惠前原金额 + */ + @NotNull + private String originalAmount; + + /** + * 优惠金额 + */ + private String discountAmount; + + /** + * 手续费 + */ + private String serviceCharge; + + /** + * 订单来源(APP / 微信小程序 / 支付宝小程序 / H5) + */ + @NotNull + private String source; + + /** + * 支付方式 + */ + private String payType; + + /** + * 是否实名认证(0-否;1-是) + */ + @NotNull + private Integer identityVerificat; + + /** + * 车票类型 + */ + private String ticketType; + + /** + * 下单时间 + */ + @NotNull + private Long orderTime; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 订单关闭时间 + */ + private Long closeTime; + + /** + * 订单过期时间 + */ + @NotNull + private Long expireTime; + + /** + * 发票状态 + */ + private Integer invoiceStatus; + + /** + * 是否可见 + */ + private Integer visible; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 要素信息 + */ + @NotNull + private List orderElements; + + /** + * 报价记录 + */ + private List orderPriceRecord; + + /** + * 费用记录 + */ + private List orderChargeRecords; + + /** + * 行程派车记录 + */ + private List dispatchRecords; + + /** + * 下单人 + */ + @NotNull + private TpOrderPlacer orderPlacer; + + /** + * 用车需求方 + */ + private TpOrderRequirementUser orderRequirementUser; + + /** + * 标的项 + */ + @NotNull + private List orderSubjectItem; + + /** + * 行程单 + */ + private List orderTravelTrips; + + /** + * 服务对象 + */ + private TpOrderTargetService tpOrderTargetService; + + /** + * 线路 / 班次 + */ + private List tpOrderRoutes; + + /** + * 子订单 + */ + private List subOrders; + + /** + * 发票 + */ + private TpOrderInvoice tpOrderInvoice; + + /** + * 拼车预约记录 + */ + private List orderCarpoolRecords; + + /** + * 改签记录 + */ + private List rescheduleRecords; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderCarpoolRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderCarpoolRecord.java new file mode 100644 index 0000000..c52af7e --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderCarpoolRecord.java @@ -0,0 +1,72 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 拼车预约记录 + *

+ * + * @author chenjiaju + * @since 2024/5/20 + */ + +@Data +public class TpOrderCarpoolRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * pos机编码 + */ + private String posNo; + + /** + * 售卖单元编码 + */ + private String subjectItemNo; + + /** + * 用户编号(下单人编号) + */ + private String userNo; + + /** + * 班次code + */ + private String shuttleCode; + + /** + * 发车时间 + */ + private Long departureTime; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 刷卡卡号 + */ + private String cardNo; + + /** + * 卡流水号 + */ + private String cardBizNo; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApplicant.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApplicant.java new file mode 100644 index 0000000..fa1f005 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApplicant.java @@ -0,0 +1,29 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author xiehuaqiao + * @create 2023/11/16 14:03 + * @Description + */ +@Data +public class TpOrderChangeApplicant { + + /** + * 申请人编号 + */ + private String applicantNo; + + /** + * 申请人名称 + */ + private String applicantName; + + /** + * 申请人手机号 + */ + private String applicantPhone; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApply.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApply.java new file mode 100644 index 0000000..2b5e765 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeApply.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/11/16 14:03 + * @Description + */ +@Data +public class TpOrderChangeApply { + + + /** + * 申请单号 + */ + private String applyNo; + + /** + * 申请变更的订单号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 申请单状态 + * + */ + private String applyStatus; + + /** + * 申请时间 + */ + private Long applyTime; + + /** + * 申请原因 + */ + private String applyReason; + + /** + * 申请变更的业务类型 + */ + private String applyType; + + /** + * 服务费减免申请原因 + */ + private String rscApplyReason; + + /** + * 服务费减免申请时间 + */ + private Long rscApplyTime; + + /** + * 服务费减免类型 + */ + private String rscApplyType; + + /** + * 最终审核完成时间 + */ + private Long approvedTime; + + /** + * 最终审批结果描述:如果是审批拒绝或者审批超时,需要将原因同步到申请单这 + */ + private String approvedRemark; + + /** + * 订单变更项 + */ + private List orderChangeItems; + + /** + * 申请人信息 + */ + private TpOrderChangeApplicant orderChangeApplicant; + + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItem.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItem.java new file mode 100644 index 0000000..d8e2958 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItem.java @@ -0,0 +1,59 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/11/16 14:03 + * @Description + */ +@Data +public class TpOrderChangeItem { + + /** + * 变更项编号 + * + */ + private String itemNo; + + /** + * 变更订单号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 变更申请单号 + */ + private String applyNo; + + /** + * 变更项类型 + * + */ + private String itemType; + + /** + * 变更项因子 + * + */ + private List itemFactors; + + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItemFactor.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItemFactor.java new file mode 100644 index 0000000..9e64172 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangeItemFactor.java @@ -0,0 +1,77 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; + +import java.util.Map; + +/** + * @author xiehuaqiao + * @create 2023/11/16 14:03 + * @Description + */ +@Data +public class TpOrderChangeItemFactor { + + + /** + * 变更因子编码 + */ + private String factorCode; + + /** + * 变更因子名称 + */ + private String factorName; + + /** + * 变更因子类型 + */ + private String factorType; + + /** + * 变更项编号 + */ + private String changeItemNo; + + /** + * 变更前的值 + */ + private String beforeValue; + + /** + * 变更后的值 + */ + private String afterValue; + + + /** + * 因子排序 + */ + private Integer sortIndex; + + /** + * 变更订单号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 变更申请单号 + */ + private String applyNo; + + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangePriceRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangePriceRecord.java new file mode 100644 index 0000000..61f378f --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChangePriceRecord.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-10 + */ +@Getter +@Setter +public class TpOrderChangePriceRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 询价价格 / 改价前价格 + */ + private String inquirePrice; + + /** + * 改价后价格 + */ + private String changePrice; + + /** + * 改价操作员编号 + */ + private String operatorUser; + + /** + * 改价操作员名称 + */ + private String operatorName; + + /** + * 租户ID + */ + private String tenantId; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChargeRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChargeRecord.java new file mode 100644 index 0000000..5358a86 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderChargeRecord.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单费用 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderChargeRecord extends BaseModel implements Serializable { + + private static final long serialVersionUID = -1934894255107914110L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 原始订单编号 + */ + private String originalOrderNo; + + /** + * 询价金额 + */ + private String inquireAmount; + + /** + * 业务员更改价格 + */ + private String changeAmount; + + /** + * 实付金额 + */ + private String payAmount; + + /** + * 手续费 + */ + private String serviceCharge; + + /** + * 手续费比例 + */ + private String servicePercentage; + + /** + * 是否免手续费 + */ + private Integer freeServiceCharge = 0; + + /** + * 业务类型(下单 / 变更订单 / 取消订单) + */ + private String bizType; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 创建时间 + */ + private Long operateTime; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDiscount.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDiscount.java new file mode 100644 index 0000000..90d9d9b --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDiscount.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + *

+ * 优惠信息 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderDiscount extends BaseModel implements Serializable { + + private static final long serialVersionUID = -1414448888888888239L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 优惠类型 + */ + private Integer type; + + /** + * 优惠金额 + */ + private String discountAmount; + + /** + * 扩展字段 + */ + private Map bizData; + + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatch.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatch.java new file mode 100644 index 0000000..be3f267 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatch.java @@ -0,0 +1,140 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Map; + +/** + *

+ * 订单派单领域实体 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderDispatch extends BaseModel { + + + /** + * 派单编号 + */ + private String dispatchNo; + /** + * 订单编号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 派单操作员编号 + */ + private String operatorNo; + + /** + * 派单操作员名称 + */ + private String operatorName; + + /** + * 派单类型 + */ + private String dispatchScene; + + /** + * 分派组织代码 + */ + private String targetOrgNo; + + /** + * 分派组织名称 + */ + private String targetOrgName; + + /** + * 分派组织类型 + */ + private String targetOrgType; + + /** + * 是否可以重新分配 + */ + private Boolean isReDispatch; + + /** + * 目标分配组织是否可以退回原处 + */ + private Boolean isGiveBack ; + + /** + * 退单原因 + */ + private String giveBackReason; + + /** + * 退单时间 + */ + private Long giveBackTime; + + /** + * 分配组织是否可以召回 + */ + private Boolean isCallBack; + + /** + * 召回时间 + */ + private Long callBackTime; + + /** + * 召回原因 + */ + private String callBackReason; + /** + * 分配时间 + */ + private Long dispatchTime; + + /** + * 分配单状态 + */ + private Integer dispatchStatus; + + /** + * 下单来源承运组织编码 + */ + private String originOrgNo; + + /** + * 下单来源承运组织名称 + */ + private String originOrgName; + + /** + * 下单来源承运组织类型 + */ + private String originOrgType; + + /** + * 派单车队 + */ + private TpOrderDispatchFleet fleet; + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchFleet.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchFleet.java new file mode 100644 index 0000000..635f60b --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchFleet.java @@ -0,0 +1,84 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 订单派车领域实体 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderDispatchFleet extends BaseModel { + + private String code; + + /** + * 派单编号 + */ + private String dispatchNo; + /** + * 订单编号 + */ + private String orderNo; + + /** + * 源订单号 + */ + private String originalOrderNo; + + /** + * 分配员编码 + */ + private String operatorNo; + + /** + * 分配员名称 + */ + private String operatorName; + + /** + * 分配目标车队编码 + */ + private String targetFleetNo; + + /** + * 分配目标车队名称 + */ + private String targetFleetName; + + /** + * 车型与合营车队对应关系(去程) + */ + private List goJoinFleets; + + /** + * 车型与合营车队对应关系(返程) + */ + private List backJoinFleets; + + /** + * 分配车队时间 + */ + private Long dispatchTime; + + /** + * 业务扩展字段 + */ + private Map bizData; + + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchJoinFleet.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchJoinFleet.java new file mode 100644 index 0000000..e570c54 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDispatchJoinFleet.java @@ -0,0 +1,65 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Map; + +/** + * Description: + * Date: 2024/6/3 + * Author: lijunheng + */ + +/** + * 订单分配的合营车队,一个车型对应一个车队 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderDispatchJoinFleet extends BaseModel { + + /** + * 派单主营车队记录编码 + */ + private String orderDispatchFleetCode; + + /** + * 行程类型(go; back) + */ + private String tripType; + + /** + * 车型编码 + */ + private String specCode; + + /** + * 车型名称 + */ + private String specName; + + /** + * 分公司编码 + */ + private String orgCode; + + /** + * 分公司名称 + */ + private String orgName; + + /** + * 车队编码 + */ + private String fleetCode; + + /** + * 车队名称 + */ + private String fleetName; + + /** + * 扩展字段 + */ + private Map bizData; +} \ No newline at end of file diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDriverInfo.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDriverInfo.java new file mode 100644 index 0000000..0e005e2 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderDriverInfo.java @@ -0,0 +1,45 @@ +package com.deepinnet.tptradecore.core.model.order; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + *

+ * 司机信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderDriverInfo extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 承运交通工具编码 + */ + private String transportationNo; + + /** + * 司机 + */ + private String name; + + /** + * 司机联系方式 + */ + private String contact; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderElement.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderElement.java new file mode 100644 index 0000000..2e2915c --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderElement.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.core.model.order; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 订单要素信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderElement extends BaseModel implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 要素类型(下单 / 退款 / 改签) + */ + private Integer elementType; + + /** + * 要素code + */ + private String elementCode; + + /** + * 要素名称 + */ + private String elementName; + + /** + * 要素Key + */ + private String elementKey; + + /** + * 要素值 + */ + private String elementValue; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderInvoice.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderInvoice.java new file mode 100644 index 0000000..febe287 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderInvoice.java @@ -0,0 +1,49 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 发票 + *

+ * + * @author chenjiaju + * @since 2023/11/29 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderInvoice extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 发票号码 + */ + private String invoiceNo; + + /** + * 发票地址 + */ + private String invoiceAddress; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderItemElement.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderItemElement.java new file mode 100644 index 0000000..1abbc99 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderItemElement.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 标的项要素 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderItemElement extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 标的项编码 + */ + private String itemNo; + + /** + * 要素code + */ + private String elementCode; + + /** + * 要素名称 + */ + private String elementName; + + /** + * 要素值 + */ + private String elementValue; + + /** + * 要素单位 + */ + private String elementUnit; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPassenger.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPassenger.java new file mode 100644 index 0000000..dcfdb88 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPassenger.java @@ -0,0 +1,69 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 乘客信息 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderPassenger extends BaseModel implements Serializable { + + private static final long serialVersionUID = -7157914478824441426L; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 乘客姓名 + */ + private String passengerName; + + /** + * 联系方式 + */ + private String passengerContact; + + /** + * 乘客证件类型 + */ + private String identificationType; + + /** + * 乘客证件编号 + */ + private String identificationNumber; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPlacer.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPlacer.java new file mode 100644 index 0000000..1d827f8 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPlacer.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.core.model.order; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 下单人 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderPlacer extends BaseModel implements Serializable { + + private static final long serialVersionUID = -8148089739381314981L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 下单人编号 + */ + private String placerNo; + + /** + * 下单人姓名 + */ + private String placerName; + + /** + * 用户联系方式 + */ + private String placerContact; + + /** + * 下单人联系方式 + */ + private String orderPlacerContact; + + /** + * 后台录单人员编号 + */ + private String backendPlacerNo; + + /** + * 后台录单人员名称 + */ + private String backendPlacerName; + + /** + * 扩展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecord.java new file mode 100644 index 0000000..43a7928 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecord.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

+ * 计价记录 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderPriceRecord extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 计价原始金额 + */ + private String pricingOriginalAmount; + + /** + * 计价优惠金额 + */ + private String pricingDiscountAmount; + + /** + * 内部询价金额 + */ + private String internalInquireAmount; + + /** + * 计价类型 + */ + private Integer pricingType; + + /** + * 计价参数 + */ + private String pricingParams; + + /** + * 优惠信息 + */ + private List orderDiscounts; + + /** + * 计价记录详情 + */ + private List orderPriceDetailRecordDetails; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecordDetail.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecordDetail.java new file mode 100644 index 0000000..a0c1c2c --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPriceRecordDetail.java @@ -0,0 +1,74 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 计价记录详情 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderPriceRecordDetail extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 计价记录编号 + */ + private String pricingNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 标的项编码 + */ + private String itemNo; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 乘客数量 + */ + private Integer passengerCount; + + /** + * 单原始金额 + */ + private String singleOriginalAmount; + + /** + * 总优惠金额 + */ + private String singleDiscountAmount; + + /** + * 总原始金额 + */ + private String totalOriginalAmount; + + /** + * 总优惠金额 + */ + private String totalDiscountAmount; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPushStatus.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPushStatus.java new file mode 100644 index 0000000..4ce68d4 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderPushStatus.java @@ -0,0 +1,31 @@ +package com.deepinnet.tptradecore.core.model.order; + +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import lombok.*; + +/** + *

+ * 状态推进 + *

+ * + * @author chenjiaju + * @since 2023/11/22 + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class TpOrderPushStatus extends BaseModel { + + private String orderNo; + + private TpOrderStatusEnum statusEnum; + + private Integer currentStatus; + + private Long payTime; + + private Integer endConfirmStatus; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderQueryList.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderQueryList.java new file mode 100644 index 0000000..16a75ec --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderQueryList.java @@ -0,0 +1,179 @@ +package com.deepinnet.tptradecore.core.model.order; + +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderTypeEnum; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 列表查询模型 + *

+ * + * @author chenjiaju + * @since 2023/8/1 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpOrderQueryList extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 下单用户编号 + */ + private String placerNo; + + /** + * pos机刷卡卡号 + */ + private String posCardNo; + + /** + * 后台录单用户编号 + */ + private String backendPlacerNo; + + /** + * 下单用户手机号 + */ + private String placerPhone; + + /** + * 联系手机号 + */ + private String contactPhone; + + /** + * 联系人名称 + */ + private String contactName; + + /** + * 产品编码 + */ + private String productCode; + + /** + * 产品名称 + */ + private String productName; + + /** + * 线路名称 + */ + private String routeName; + + /** + * 线路编号 + */ + private String routeCode; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 原始订单编号 + */ + private String originalOrderNo; + + /** + * 产品类目no + */ + private String productCategoryNo; + + /** + * 发车时间 + */ + private String departureTime; + + /** + * 订单类型(包车订单 / 灵活公交订单...) + * @see TpOrderTypeEnum + */ + private Integer orderType; + + /** + * 车票类型 + */ + private List ticketType; + + /** + * 行程类型(go;back) + */ + private String tripType; + + /** + * 订单来源 + */ + private String source; + + /** + * 发票状态 + */ + private Integer invoiceStatus; + + /** + * 发票号码 + */ + private String invoiceNo; + + /** + * 订单状态 + * @see TpOrderStatusEnum + */ + private Integer tpOrderStatusEnum; + + /** + * 包车订单状态 + * @see TpOrderStatusEnum + */ + private List statusArr; + + /** + * 待确认状态 + */ + private Boolean needConfirmFlag; + + /** + * 服务对象名称 + */ + private String serviceTargetName; + + /** + * 组织编号 + */ + private List orgNos; + + /** + * 乘车日期-开始时间 + */ + private Long pickUpStartTime; + + /** + * 乘车日期-结束时间 + */ + private Long pickUpEndTime; + + /** + * 下单开始时间 + */ + private Long orderStartTime; + + /** + * 下单结束时间 + */ + private Long orderEndTime; + + /** + * 全额退款审批 + */ + private Integer allRefundAuditStatus; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderReceived.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderReceived.java new file mode 100644 index 0000000..2c5f9b5 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderReceived.java @@ -0,0 +1,75 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Map; + +/** + *

+ * 订单接单领域实体 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderReceived extends BaseModel { + + /** + * 接单单据号 + */ + private String receivedNo; + + /** + * 业务单据编号 + */ + private String bizObjNo; + + /** + * 业务单据类型 + */ + private String bizObjType; + + /** + * 接单组织编号 + */ + private String orgNo; + + /** + * 接单组织名称 + */ + private String orgName; + + /** + * 接单人编号 + */ + private String receiverNo; + + /** + * 接单人名称 + */ + private String receiverName; + + /** + * 接单时间 + */ + private Long receivedTime; + + /** + * 接单状态 + */ + private Integer receivedStatus; + + /** + * 业务扩展字段 + */ + private Map bizData; + /** + * 租户id + */ + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRequirementUser.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRequirementUser.java new file mode 100644 index 0000000..80bfd29 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRequirementUser.java @@ -0,0 +1,50 @@ +package com.deepinnet.tptradecore.core.model.order; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 用车需求方 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderRequirementUser extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 用车人名称 + */ + private String requirementName; + + /** + * 用车需求方联系人名称 + */ + private String requirementContactName; + + /** + * 联系方式 + */ + private String requirementContact; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleInfo.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleInfo.java new file mode 100644 index 0000000..0b0802f --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleInfo.java @@ -0,0 +1,82 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +public class TpOrderRescheduleInfo extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签编号 + */ + private String rescheduleNo; + + /** + * 改签前售卖单元编号 + */ + private String subjectItemNo; + + /** + * 改签后售卖单元编号 + */ + private String rescheduleSubjectItemNo; + + /** + * 改签前班次编号 + */ + private String shuttleNo; + + /** + * 改签后班次编号 + */ + private String rescheduleShuttleNo; + + /** + * 班次日期 + */ + private String shuttleDate; + + /** + * 班次时间 + */ + private String shuttleTime; + + /** + * 改签后班次日期 + */ + private String rescheduleShuttleDate; + + /** + * 改签后班次时间 + */ + private String rescheduleShuttleTime; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 乘客姓名 + */ + private String passengerName; + + /** + * 乘客数量 + */ + private Integer passengerCount; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleRecord.java new file mode 100644 index 0000000..e16b003 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRescheduleRecord.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author abel + * @since 2024-07-15 + */ +@Getter +@Setter +public class TpOrderRescheduleRecord extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 改签编号 + */ + private String rescheduleNo; + + /** + * 改签后订单编号 + */ + private String orderNo; + + /** + * 改签前订单编号 + */ + private String originalOrderNo; + + /** + * 改签信息 + */ + private List orderRescheduleInfos; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 改签申请时间 + */ + private Long rescheduleTime; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRoute.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRoute.java new file mode 100644 index 0000000..dc101e1 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRoute.java @@ -0,0 +1,69 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 线路 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderRoute extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 线路编号 + */ + private String routeNo; + + /** + * 线路名称 + */ + private String routeName; + + /** + * 去程 / 返程 + */ + private String roundTrip; + + /** + * 营运日期 + */ + private String workTime; + + /** + * 时刻表 + */ + private String timeSchedule; + + /** + * 所属车队 / 公司 + */ + private String belongFleet; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 班次 + */ + private List tpOrderRouteShuttle; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRouteShuttle.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRouteShuttle.java new file mode 100644 index 0000000..bdd5b77 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderRouteShuttle.java @@ -0,0 +1,58 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 班次 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderRouteShuttle extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 线路编号 + */ + private String routeNo; + + /** + * 班次编号 + */ + private String shuttleNo; + + /** + * 班次名称 + */ + private String shuttleName; + + /** + * 班次发车时间 + */ + private String shuttleTime; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderSubjectItem.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderSubjectItem.java new file mode 100644 index 0000000..3f81ada --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderSubjectItem.java @@ -0,0 +1,89 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 标的项 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderSubjectItem extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标的编码 + */ + private String itemNo; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 乘客编码 + */ + private String passengerNo; + + /** + * 乘客人数 + */ + private Integer passengerCount; + + /** + * 用车天数 + */ + private Integer days; + + /** + * 是否包含司机食宿 + */ + private String includeDriverExpenses; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 标的名称 + */ + private String name; + + /** + * 标的类型 + */ + private String type; + + /** + * 购买标的项数量 + */ + private Integer count; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 乘客信息 + */ + private TpOrderPassenger passenger; + + /** + * 标的项要素 + */ + private List orderItemElements; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTargetService.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTargetService.java new file mode 100644 index 0000000..6fb192b --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTargetService.java @@ -0,0 +1,44 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 服务对象 + *

+ * + * @author chenjiaju + * @since 2023/8/1 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpOrderTargetService extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单编码 + */ + private String orderNo; + + /** + * 服务方名称 + */ + private String targetName; + + /** + * 服务方唯一编码 + */ + private String targetNumber; + + /** + * bizData + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTransportation.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTransportation.java new file mode 100644 index 0000000..27eae7a --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTransportation.java @@ -0,0 +1,70 @@ +package com.deepinnet.tptradecore.core.model.order; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 承运交通工具 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderTransportation extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 派单编码 + */ + private String dispatchNo; + + /** + * 承运交通工具编码 + */ + private String transportationNo; + + /** + * 司机 + */ + private String driver; + + /** + * 状态 + */ + private Integer status; + + /** + * 位置 + */ + private String position; + + /** + * 类型 + */ + private Integer type; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 承运司机 + */ + private List orderDriverInfo; + + /** + * 承运车辆信息 + */ + private List orderVehicleInfos; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelDispatchRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelDispatchRecord.java new file mode 100644 index 0000000..86dffd7 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelDispatchRecord.java @@ -0,0 +1,87 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author abel + * @since 2023-11-23 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderTravelDispatchRecord extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 行程单号 + */ + private String tripNo; + + /** + * 行程类型(go;back) + */ + private String tripType; + + /** + * 车队ID + */ + private String fleetId; + + /** + * 车队组织 + */ + private String fleetName; + + /** + * 出发时间 + */ + private Long departureTime; + + /** + * 到达时间 + */ + private Long arriveTime; + + /** + * 车辆规格 + */ + private String busSpecificationCode; + + /** + * 车辆名称 + */ + private String busName; + + /** + * 车牌号 + */ + private String busPlate; + + /** + * 司机名称 + */ + private String driverName; + + /** + * 司机手机号 + */ + private String driverPhone; + + /** + * 天包车表示第几天 + */ + private Integer dayIndex; + + /** + * 扩展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelTrip.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelTrip.java new file mode 100644 index 0000000..0ac654c --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTravelTrip.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.*; + +/** + *

+ * 行程单 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderTravelTrip extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 行程单编号 + */ + private String tripNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 乘客数量 + */ + private Integer passengerCount; + + /** + * 公里数 + */ + private String miles; + + /** + * 上车点code + */ + private String pickUpLocationCode; + + /** + * 上车点名称 + */ + private String pickUpLocation; + + /** + * 下车点code + */ + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + private String dropOffLocation; + + /** + * 出发时间 + */ + private String startTime; + + /** + * 到达时间 + */ + private String endTime; + + /** + * 行程单 行程类型 + */ + private String tripType; + + /** + * 该行程单状态 + */ + private String tripStatus; + + /** + * 扩展字段 + */ + private Map bizData; + + /** + * 位置信息 + */ + private List tripPositions; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTripPosition.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTripPosition.java new file mode 100644 index 0000000..cbce7e9 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderTripPosition.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 位置信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderTripPosition extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 行程单编号 + */ + private String tripNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 位置编码 + */ + private String locationCode; + + /** + * 位置编码 + */ + private String locationName; + + /* + * 经度 + */ + private String lng; + + /** + * 维度 + */ + private String lat; + + /** + * 序号 + */ + private Integer index; + + /** + * 扩展字段 + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderUpdateCharge.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderUpdateCharge.java new file mode 100644 index 0000000..2ac0ee5 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderUpdateCharge.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *

+ * 订单价格更新 + *

+ * + * @author chenjiaju + * @since 2023/11/27 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpOrderUpdateCharge { + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 首次确定订单时需支付金额 + */ + private String payAmount; + + /** + * 手续费 + */ + private String serviceCharge; + + /** + * 改价后后的金额,如未改价,则和询价金额一致 + */ + private String changeAmount; + + /** + * 支付模式 + */ + private String payMode; + + /** + * 租户ID + */ + private String tenantId; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderVehicleInfo.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderVehicleInfo.java new file mode 100644 index 0000000..1d806bb --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpOrderVehicleInfo.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 车辆信息 + *

+ * + * @author chenjiaju + * @since 2023-07-25 15:46:31 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TpOrderVehicleInfo extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 车辆信息 + */ + private String transportationNo; + + /** + * 车牌号 + */ + private String vehicleNumber; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserDelPassengerCondition.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserDelPassengerCondition.java new file mode 100644 index 0000000..76180bb --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserDelPassengerCondition.java @@ -0,0 +1,36 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

+ * 乘客信息删除条件 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpUserDelPassengerCondition extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + @NotNull + private String userNo; + + /** + * 乘客编号 + */ + @NotNull + private String passengerNo; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassenger.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassenger.java new file mode 100644 index 0000000..0519686 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassenger.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.core.model.order; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; + +/** + *

+ * 用户乘客模型 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpUserPassenger extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 乘客姓名 + */ + private String name; + + /** + * 乘客证件类型 + */ + private String identityType; + + /** + * 乘客证件号 + */ + private String identityNumber; + + /** + * biz_data + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassengerCondition.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassengerCondition.java new file mode 100644 index 0000000..e92e59f --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserPassengerCondition.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 乘客信息查询条件 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpUserPassengerCondition extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 乘客编号 + */ + private String passengerNo; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollection.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollection.java new file mode 100644 index 0000000..7ceb1b0 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollection.java @@ -0,0 +1,97 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * 用户线路收集 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpUserRouteCollection extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 收集编号 + */ + private String collectionNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 手机号 + */ + private String phoneNumber; + + /** + * 上车点名称 + */ + @NotBlank + private String upLocation; + + /** + * 上车点经度 + */ + private String upLocationLng; + + /** + * 上车点维度 + */ + private String upLocationLat; + + /** + * 下车点名称 + */ + @NotBlank + private String downLocation; + + /** + * 下车点经度 + */ + private String downLocationLng; + + /** + * 下车点维度 + */ + private String downLocationLat; + + /** + * 期望到达时间 + */ + private String expectArriveTime; + + /** + * 期望返程时间 + */ + private String expectBackTime; + + /** + * 出行目的 + */ + private String travelPurpose; + + /** + * 备注 + */ + private String remark; + + /** + * biz_data + */ + private Map bizData; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollectionCondition.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollectionCondition.java new file mode 100644 index 0000000..43bb7a0 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/order/TpUserRouteCollectionCondition.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.core.model.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 线路收集查询条件 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class TpUserRouteCollectionCondition extends BaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 用户手机号 + */ + private String phone; + +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/rule/TpBizRule.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/rule/TpBizRule.java new file mode 100644 index 0000000..f7daac0 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/rule/TpBizRule.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.core.model.rule; + +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + *

+ * + *

+ * + * @author chenjiaju + * @since 2023-07-28 10:09:47 + */ +@Getter +@Setter +public class TpBizRule implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 关联的业务单号 + */ + private String bizNo; + + /** + * 业务规则代码 + */ + private String code; + + /** + * 业务规则名称 + */ + private String name; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 规则表达式 + */ + private String expression; + + /** + * 目标对象类型 + */ + private String targetObjType; + + /** + * 目标对象ID + */ + private String targetObjId; + + /** + * 规则分组 + */ + private String ruleGroup; + + /** + * 规则枚举 + */ + private String ruleEnum; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/task/TpScheduleTask.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/task/TpScheduleTask.java new file mode 100644 index 0000000..28f76b2 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/task/TpScheduleTask.java @@ -0,0 +1,53 @@ +package com.deepinnet.tptradecore.core.model.task; + +import lombok.Data; + +/** + * @author amos wong + * @create 2022-11-23 11:57 + */ +@Data +public class TpScheduleTask { + + private Long id; + /** + * 内部业务号,可能为支付单号或者订单号,根据任务类型来区分 + * 如果是关闭支付单的任务就是支付单号 + */ + private String bizNo; + + /** + * 任务类型 + * + * @see com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum + */ + private String taskType; + + /** + * 任务的状态 + * + * @see com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskStatusEnum + */ + private String status; + + private String source; + + private String env; + + /** + * 预计触发的时间 + */ + private Long triggerTime; + + /** + * 实际执行的时间 + */ + private Long executeTime; + + /** + * 重试的次数 + */ + private Integer retryCount; + + private String tenantId; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpBill.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpBill.java new file mode 100644 index 0000000..1472294 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpBill.java @@ -0,0 +1,64 @@ +package com.deepinnet.tptradecore.core.model.trans; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.*; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:12 + * @Description 账单 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TpBill { + /** + * 账单编号 + */ + private String billNo; + + /** + * 账单金额 + */ + private TpMoney amount; + + /** + * 订单号 + */ + private String orderNo; + + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 账单状态 + */ + private String status; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 账单类型 + */ + private String billType; + + /** + * 备注 + */ + private String remark; + + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpCharge.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpCharge.java new file mode 100644 index 0000000..9a8accd --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpCharge.java @@ -0,0 +1,75 @@ +package com.deepinnet.tptradecore.core.model.trans; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.*; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:14 + * @Description 计费单 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpCharge { + + /** + * 计费单号 + */ + private String chargeNo; + + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 计费标题 + */ + private String title; + + /** + * 计费类型 + */ + private String chargeType; + + /** + * 收退费金额 + */ + private TpMoney amount; + + /** + * 计费比例 + */ + private String ratio; + + /** + * 收费主体id + */ + private String chargingEntityId; + + /** + * 收费主体类型 + */ + private String chargingEntityType; + + /** + * 状态 + */ + private String status; + + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpFinancialAccount.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpFinancialAccount.java new file mode 100644 index 0000000..5c29217 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpFinancialAccount.java @@ -0,0 +1,69 @@ +package com.deepinnet.tptradecore.core.model.trans; + +import lombok.*; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:15 + * @Description 资金账号 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpFinancialAccount { + + /** + * 关联的业务单号 + */ + private String bizNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 账号类型:收款方或者付款方 + */ + private String accountType; + + /** + * 账号 + */ + private String account; + + /** + * 账号名称 + */ + private String accountName; + + /** + * 支付宝、微信、银行 + */ + private String channel; + + /** + * 卡机构id + */ + private String cardIssuerId; + + /** + * 开户行名称 + */ + private String bankName; + + /** + * 银行账号 + */ + private String bankAccount; + + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpPayOrder.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpPayOrder.java new file mode 100644 index 0000000..0c95759 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/trans/TpPayOrder.java @@ -0,0 +1,128 @@ +package com.deepinnet.tptradecore.core.model.trans; + +import com.deepinnet.tp.common.lang.util.TpMoney; +import lombok.*; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:17 + * @Description + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TpPayOrder { + + /** + * 支付单号 + */ + private String payOrderNo; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 业务单号 + */ + private String bizNo; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 优惠金额 + */ + private TpMoney discountAmount; + + /** + * 计费金额 + */ + private TpMoney chargeAmount; + + /** + * 实付金额 + */ + private TpMoney payAmount; + + /** + * 支付方式 + */ + private String payType; + + /** + * 支付场景 + */ + private String payScene; + + /** + * 支付标题 + */ + private String payTitle; + + /** + * 支付单状态 + */ + private String status; + + /** + * 支付时间 + */ + private Long payTime; + + /** + * 支付过期时间 + */ + private Long payTimeout; + + /** + * 三方支付流水号 + */ + private String outPayFlowId; + + /** + * 是否需要计收费 + */ + private Boolean chargeRequired; + + /** + * 当前支付的序列号 + */ + private Long paySequence; + + /** + * 账单 + */ + private TpBill tpBill; + + /** + * 计费单 + */ + private TpCharge tpCharge; + + /** + * 收入账号 + */ + private TpFinancialAccount payeeAccount; + + /** + * 支出账号 + */ + private TpFinancialAccount payerAccount; + + /** + * 租户id + */ + private String tenantId; + + /** + * 拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpPassengerList.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpPassengerList.java new file mode 100644 index 0000000..ddd3a08 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpPassengerList.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.core.model.voucher; + +import lombok.Data; + +/** + * @author 唐国翔 + * @since 2024/1/10 11:35 + **/ +@Data +public class TpPassengerList { + + /** + * 乘客姓名 + */ + private String placerName; + + /** + * 乘客联系电话 + */ + private String placerContact; + + /** + * 上车点code + */ + private String pickUpLocationCode; + + /** + * 上车点名称 + */ + private String pickUpLocation; + + /** + * 下车点code + */ + private String dropOffLocationCode; + + /** + * 下车点名称 + */ + private String dropOffLocation; + + /** + * 凭证核验结果 + */ + private String result; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucher.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucher.java new file mode 100644 index 0000000..817298f --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucher.java @@ -0,0 +1,164 @@ +package com.deepinnet.tptradecore.core.model.voucher; + +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import lombok.Data; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/26 10:26 + * @Description 出行凭证 + */ +@Data +public class TpVoucher { + + private Long id; + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 凭证关联的售卖单元code + */ + private String salesUnitCode; + + /** + * 订单号 + */ + private String orderNo; + + /** + * 凭证编码 + */ + private String voucherCode; + + /** + * 产品类目编号 + */ + private String productCategoryNo; + + /** + * 产品类目名称 + */ + private String productCategoryName; + + /** + * 凭证类型 + */ + private String type; + + /** + * 有效期开始时间 + */ + private Long effectiveStartTime; + + /** + * 有效期结束时间 + */ + private Long effectiveEndTime; + + /** + * 最早检票时间 + */ + private String earliestCheckTime; + + /** + * 最晚检票时间 + */ + private String latestCheckTime; + + /** + * 线路id + */ + private String routeId; + + /** + * 线路名称 + */ + private String routeName; + + /** + * 班次id + */ + private String shuttleId; + + /** + * 班次名称 + */ + private String shuttleName; + + /** + * 验票方式 + */ + private List validationTypes; + + /** + * 总可用次数 + */ + private Integer totalCount; + + /** + * 已核销次数 + */ + private Integer redemptionCount; + + /** + * 已退次数 + */ + private Integer refundCount; + + /** + * 乘车人数 + */ + private Integer passengerCount; + + /** + * 是否需要实名,0表示非实名,1表示实名 + */ + private Boolean requiredRealName; + + /** + * 凭证状态 + */ + private String status; + + /** + * 乘客信息 + */ + private TpVoucherPassenger passenger; + + /** + * 凭证归属渠道 + * + * @see com.deepinnet.tptradecore.common.enums.voucher.TpVoucherChannelEnum + */ + private String channel; + + /** + * 业务规则列表 + */ + private List bizRuleList; + + /** + * 租户id + */ + private String tenantId; + + /** + * 行程类型 + */ + private String tripType; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherInspectionRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherInspectionRecord.java new file mode 100644 index 0000000..44c11d9 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherInspectionRecord.java @@ -0,0 +1,60 @@ +package com.deepinnet.tptradecore.core.model.voucher; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:30 + * @Description 第三方送检记录 + */ +@Data +public class TpVoucherInspectionRecord { + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 送检参数 + */ + private String param; + + /** + * 返回结果 + */ + private String result; + + /** + * 送检api + */ + private String api; + + /** + * 送检时间 + */ + private LocalDateTime inspectionTime; + + /** + * 三方机构名称 + */ + private String instName; + + /** + * 三方机构编码 + */ + private String instCode; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherPassenger.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherPassenger.java new file mode 100644 index 0000000..3be66e6 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherPassenger.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.core.model.voucher; + +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:28 + * @Description 出行凭证关联乘客 + */ +@Data +public class TpVoucherPassenger { + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 乘客编号 + */ + private String passengerNo; + + /** + * 姓名 + */ + private String name; + + /** + * 联系方式 + */ + private String contactInfo; + + /** + * 证件号 + */ + private String certNo; + + /** + * 证件类型 + */ + private String certType; + + /** + * 乘客类型 + */ + private String passengerType; + + /** + * 租户id + */ + private String tenantId; + + /** + * 业务数据 + */ + private Map bizData; + + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + + if (!(obj instanceof TpVoucherPassenger)) { + return false; + } + + TpVoucherPassenger passenger = (TpVoucherPassenger) obj; + return StringUtils.equals(passengerNo, passenger.getPassengerNo()); + } + + @Override + public int hashCode() { + return passengerNo.hashCode(); + } +} diff --git a/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherVerificationRecord.java b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherVerificationRecord.java new file mode 100644 index 0000000..3093878 --- /dev/null +++ b/tptradecore-core/tptradecore-core-model/src/main/java/com/deepinnet/tptradecore/core/model/voucher/TpVoucherVerificationRecord.java @@ -0,0 +1,61 @@ +package com.deepinnet.tptradecore.core.model.voucher; + +import lombok.Data; + +import java.util.Map; + +/** + * @author amos wong + * @create 2023/7/26 10:33 + * @Description 检票记录 + */ +@Data +public class TpVoucherVerificationRecord { + + /** + * 凭证编号 + */ + private String voucherNo; + + /** + * 用户编号 + */ + private String userNo; + + /** + * 验票时间 + */ + private Long verificationTime; + + /** + * 核销次数 + */ + private Integer redemptionCount; + + /** + * 检票结果 + */ + private String result; + + /** + * 检票类型 + * + * @see TpVoucherCheckTypeEnum + */ + private String validationType; + + /** + * 失败原因 + */ + private String reason; + + /** + * 租户id + */ + private String tenantId; + + /** + * 业务拓展字段 + */ + private Map bizData; +} diff --git a/tptradecore-core/tptradecore-core-service/pom.xml b/tptradecore-core/tptradecore-core-service/pom.xml new file mode 100644 index 0000000..b9ebd2b --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.deepinnet + tptradecore-core + 1.0-SNAPSHOT + + + tptradecore-core-service + + + + com.deepinnet + tptradecore-core-model + + + + com.deepinnet + tptradecore-common-util + + + + com.deepinnet + tptradecore-common-dal + + + + com.deepinnet + tptradecore-common-service-facade + + + + com.deepinnet + tptradecore-common-service-integration + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework + spring-tx + + + org.springframework + spring-jdbc + + + org.mockito + mockito-core + test + + + + com.github.jsonzou + jmockdata + 4.3.0 + test + + + + junit + junit + test + + + com.deepinnet + tpcommoncore-common-service-facade + + + + + diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/component/TpTenantNacosConfigComponent.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/component/TpTenantNacosConfigComponent.java new file mode 100644 index 0000000..8ba7621 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/component/TpTenantNacosConfigComponent.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.core.component; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + *

+ * nacos配置组件 + *

+ * + * @author chenjiaju + * @since 2024/1/4 + */ + +@Data +@Component +@RefreshScope +public class TpTenantNacosConfigComponent { + + @Value("${tenantDomain}") + private String tenantDomain; + + private final Map tenantDomainMap = new ConcurrentHashMap<>(); + + @PostConstruct + private void init() { + setDomainLinkMap(this.tenantDomain); + } + + private void setDomainLinkMap(String tenantDomain) { + tenantDomainMap.clear(); + String[] pairs = tenantDomain.split(","); + for (String pair : pairs) { + int dashIndex = pair.indexOf("-"); + if (dashIndex != -1) { + tenantDomainMap.put(pair.substring(0, dashIndex), pair.substring(dashIndex + 1)); + } + } + } + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/config/TransactionTemplateConfiguration.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/config/TransactionTemplateConfiguration.java new file mode 100644 index 0000000..8b53f5c --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/config/TransactionTemplateConfiguration.java @@ -0,0 +1,33 @@ +package com.deepinnet.tptradecore.core.config; + +import org.springframework.context.annotation.*; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.sql.DataSource; + +/** + * 事务模板配置 + * + * @author amos wong + * @version 2022-11-09 + */ +@Configuration +@EnableTransactionManagement +public class TransactionTemplateConfiguration { + + @Bean("tpTransactionTemplate") + public TransactionTemplate transactionTemplate(DataSourceTransactionManager dataSourceTransactionManager) { + TransactionTemplate transactionTemplate = new TransactionTemplate(); + transactionTemplate.setTransactionManager(dataSourceTransactionManager); + return transactionTemplate; + } + + @Bean + public DataSourceTransactionManager transactionManager(DataSource dataSource) { + DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); + dataSourceTransactionManager.setDataSource(dataSource); + return dataSourceTransactionManager; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/constants/MessageConstants.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/constants/MessageConstants.java new file mode 100644 index 0000000..532a608 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/constants/MessageConstants.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.core.mq.constants; + +/** + *

+ * 消息常量类 + *

+ * + * @author chenjiaju + * @since 2023/9/2 + */ +public class MessageConstants { + + /** + * 资金中心支付成功消息 + */ + public static final String EC_TRANS_PAY_SUCCESS = "EC_TRANS_PAY_SUCCESS"; + + /** + * 凭证核销成功消息 + */ + public static final String EC_VOUCHER_VERIFICATION_SUCCESS = "EC_VOUCHER_VERIFICATION_SUCCESS"; + + /** + * 资金域退款成功消息 + */ + public static final String EVENT_CODE_TRANS_REFUND_SUCCESS = "EC_TRANS_REFUND_SUCCESS"; + + /** + * 凭证退款成功消息 + */ + public static final String EC_TICKET_REFUND_SUCCESS = "EC_REFUND_TICKET_SUCCESS"; + + /** + * 延迟消息 + */ + public static final String EVENT_ORDER_DELAY_TAG_SUCCESS = "EVENT_ORDER_DELAY_TAG_SUCCESS"; + + /** + * 支付单过期延时消息 + */ + public static final String EVENT_PAY_ORDER_DELAY_TAG_SUCCESS = "EVENT_PAY_ORDER_DELAY_TAG_SUCCESS"; + + /** + * 退款延时消息TAG + */ + public static final String EVENT_REFUND_ORDER_DELAY_TAG_SUCCESS = "EVENT_REFUND_ORDER_DELAY_TAG_SUCCESS"; + + /** + * 凭证过期消息 + */ + public static final String EC_VOUCHER_EXPIRED_SUCCESS = "EC_VOUCHER_EXPIRED_SUCCESS"; + + /** + * 用户小程序注册成功事件 + **/ + public static final String EVENT_USER_MINI_REGISTER_SUCCESS = "EVENT_USER_MINI_REGISTER_SUCCESS"; + + /** + * 订单拼车成功国朗通知 + */ + public static final String EVENT_CAR_POOL_GUO_LANG_NOTICE_TAG_SUCCESS = "EVENT_CAR_POOL_GUO_LANG_NOTICE_TAG_SUCCESS"; + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/entity/TpMessageEntity.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/entity/TpMessageEntity.java new file mode 100644 index 0000000..8da2c72 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/entity/TpMessageEntity.java @@ -0,0 +1,47 @@ +package com.deepinnet.tptradecore.core.mq.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author chenjiaju + * @version 2023/1/9 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TpMessageEntity implements Serializable { + + /** + * topic + */ + private String topic; + + /** + * tag + */ + private String tag; + + /** + * consumeGroup + */ + + private String consumerGroup; + + /** + * key + */ + private String messageKey; + + /** + * 接收到的消息 + */ + private String message; + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpMessageHandler.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpMessageHandler.java new file mode 100644 index 0000000..a03e80f --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpMessageHandler.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.core.mq.handler; + + +import com.deepinnet.tptradecore.core.mq.entity.TpMessageEntity; + +/** + * @author chenjiaju + * @version 2022/11/22 16:11 + */ +public interface TpMessageHandler { + + /** + * tag + * @return tag + */ + String supportTag(); + + /** + * 处理消息 + * @param message + */ + void handle(TpMessageEntity message); + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpUserMiniRegisterMessageHandler.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpUserMiniRegisterMessageHandler.java new file mode 100644 index 0000000..5c5a31f --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/handler/TpUserMiniRegisterMessageHandler.java @@ -0,0 +1,194 @@ +package com.deepinnet.tptradecore.core.mq.handler; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.mq.model.TpUserMiniRegisterMessageEntity; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplicantDO; +import com.deepinnet.tptradecore.common.dal.dataobject.contract.TpRefundApplyOrderDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderPlacerDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserPassengerDO; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherDO; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherVerificationRecordDO; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundApplicantRepository; +import com.deepinnet.tptradecore.common.dal.repository.contract.TpRefundApplyOrderRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeApplyRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderPlacerRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpUserPassengerRepository; +import com.deepinnet.tptradecore.common.dal.repository.trans.TpFinancialAccountRepository; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherPassengerRepository; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherRepository; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherVerificationRecordRepository; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; +import com.deepinnet.tptradecore.core.mq.constants.MessageConstants; +import com.deepinnet.tptradecore.core.mq.entity.TpMessageEntity; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author cky + * @version 2024/02/21 16:15 + */ +@Service +@RequiredArgsConstructor +public class TpUserMiniRegisterMessageHandler implements TpMessageHandler { + + @Resource + private TpRefundApplicantRepository refundApplicantRepository; + + @Resource + private TpRefundApplyOrderRepository refundApplyOrderRepository; + + @Resource + private TpVoucherRepository voucherRepository; + + @Resource + private TpVoucherVerificationRecordRepository voucherVerificationRecordRepository; + + @Resource + private TpOrderRepository orderRepository; + + @Resource + private TpUserPassengerRepository userPassengerRepository; + + @Resource + private TpVoucherPassengerRepository voucherPassengerRepository; + + @Resource + private TpOrderChangeApplyRepository orderChangeApplyRepository; + + @Resource + private TpFinancialAccountRepository financialAccountRepository; + + @Resource + private TpOrderPlacerRepository orderPlacerRepository; + + @Override + public String supportTag() { + return MessageConstants.EVENT_USER_MINI_REGISTER_SUCCESS; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void handle(TpMessageEntity messageEntity) { + String bodyMsg = buildMessage(messageEntity); + + // 解析消息体 + TpUserMiniRegisterMessageEntity paySuccessMessageEntity = JSONObject.parseObject(bodyMsg, TpUserMiniRegisterMessageEntity.class); + String userId = paySuccessMessageEntity.getUserId(); + String openId = paySuccessMessageEntity.getOpenId(); + String tenantId = paySuccessMessageEntity.getTenantId(); + + // 更新订单、凭证和资金信息的用户编号,由openid 更新为用户编号 + // 新用户编号的出行人为空,才进行更新 + TpUserPassengerCondition tpUserPassengerCondition = new TpUserPassengerCondition(); + tpUserPassengerCondition.setUserNo(userId); + tpUserPassengerCondition.setTenantId(paySuccessMessageEntity.getTenantId()); + List tpUserPassengers = userPassengerRepository.queryPassengerListByUserNo(tpUserPassengerCondition); + if (CollectionUtil.isEmpty(tpUserPassengers)) { + LambdaUpdateWrapper userPassengerDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpUserPassengerDO.class) + .set(TpUserPassengerDO::getUserNo, userId) + .eq(TpUserPassengerDO::getUserNo, openId) + .eq(TpUserPassengerDO::getTenantId, tenantId); + userPassengerRepository.update(userPassengerDOLambdaUpdateWrapper); + } + + // 更新退款用户 + TpRefundApplicantDO refundApplicantDO = refundApplicantRepository.getOne(Wrappers.lambdaQuery(TpRefundApplicantDO.class).eq(TpRefundApplicantDO::getUserNo, openId).eq(TpRefundApplicantDO::getTenantId, tenantId).last("limit 1")); + if (refundApplicantDO != null) { + LambdaUpdateWrapper refundApplicantDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpRefundApplicantDO.class) + .set(TpRefundApplicantDO::getUserNo, userId) + .eq(TpRefundApplicantDO::getUserNo, openId) + .eq(TpRefundApplicantDO::getTenantId, tenantId); + refundApplicantRepository.update(refundApplicantDOLambdaUpdateWrapper); + } + + // 更新退款单 + TpRefundApplyOrderDO refundApplyOrderDO = refundApplyOrderRepository.getOne(Wrappers.lambdaQuery(TpRefundApplyOrderDO.class).eq(TpRefundApplyOrderDO::getUserNo, openId).eq(TpRefundApplyOrderDO::getTenantId, tenantId).last("limit 1")); + if (refundApplyOrderDO != null) { + LambdaUpdateWrapper refundApplyOrderDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpRefundApplyOrderDO.class) + .set(TpRefundApplyOrderDO::getUserNo, userId) + .eq(TpRefundApplyOrderDO::getUserNo, openId) + .eq(TpRefundApplyOrderDO::getTenantId, tenantId); + refundApplyOrderRepository.update(refundApplyOrderDOLambdaUpdateWrapper); + } + + // 更新凭证 + TpVoucherDO voucherDO = voucherRepository.getOne(Wrappers.lambdaQuery(TpVoucherDO.class).eq(TpVoucherDO::getUserNo, openId).eq(TpVoucherDO::getTenantId, tenantId).last("limit 1")); + + if (voucherDO != null) { + LambdaUpdateWrapper voucherDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpVoucherDO.class) + .set(TpVoucherDO::getUserNo, userId) + .eq(TpVoucherDO::getUserNo, openId) + .eq(TpVoucherDO::getTenantId, tenantId); + voucherRepository.update(voucherDOLambdaUpdateWrapper); + } + + // 更新凭证检验记录 + TpVoucherVerificationRecordDO voucherVerificationRecordDO = voucherVerificationRecordRepository.getOne(Wrappers.lambdaQuery(TpVoucherVerificationRecordDO.class).eq(TpVoucherVerificationRecordDO::getUserNo, openId) + .eq(TpVoucherVerificationRecordDO::getTenantId, tenantId).last("limit 1")); + if (voucherVerificationRecordDO != null) { + LambdaUpdateWrapper verificationRecordDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpVoucherVerificationRecordDO.class) + .set(TpVoucherVerificationRecordDO::getUserNo, userId) + .eq(TpVoucherVerificationRecordDO::getUserNo, openId) + .eq(TpVoucherVerificationRecordDO::getTenantId, tenantId); + voucherVerificationRecordRepository.update(verificationRecordDOLambdaUpdateWrapper); + } + + + // 更新订单 + TpOrderDO orderDO = orderRepository.getOne(Wrappers.lambdaQuery(TpOrderDO.class).eq(TpOrderDO::getUserNo, openId).eq(TpOrderDO::getTenantId, tenantId).last("limit 1")); + if (orderDO != null) { + LambdaUpdateWrapper orderDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpOrderDO.class) + .set(TpOrderDO::getUserNo, userId) + .eq(TpOrderDO::getUserNo, openId) + .eq(TpOrderDO::getTenantId, tenantId); + orderRepository.update(orderDOLambdaUpdateWrapper); + } + + // 更新订单修改申请 + TpOrderChangeApplyDO orderChangeApplyDO = orderChangeApplyRepository.getOne(Wrappers.lambdaQuery(TpOrderChangeApplyDO.class).eq(TpOrderChangeApplyDO::getApplicantNo, openId).eq(TpOrderChangeApplyDO::getTenantId, tenantId).last("limit 1")); + if (orderChangeApplyDO != null) { + LambdaUpdateWrapper orderChangeApplyDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpOrderChangeApplyDO.class) + .set(TpOrderChangeApplyDO::getApplicantNo, userId) + .eq(TpOrderChangeApplyDO::getApplicantNo, openId) + .eq(TpOrderChangeApplyDO::getTenantId, tenantId); + orderChangeApplyRepository.update(orderChangeApplyDOLambdaUpdateWrapper); + } + + // 更新订单人 + TpOrderPlacerDO orderPlacerDO = orderPlacerRepository.getOne(Wrappers.lambdaQuery(TpOrderPlacerDO.class).eq(TpOrderPlacerDO::getPlacerNo, openId).eq(TpOrderPlacerDO::getTenantId, tenantId).last("limit 1")); + if (orderPlacerDO != null) { + LambdaUpdateWrapper orderPlacerDOLambdaUpdateWrapper = Wrappers.lambdaUpdate(TpOrderPlacerDO.class) + .set(TpOrderPlacerDO::getPlacerNo, userId) + .eq(TpOrderPlacerDO::getPlacerNo, openId) + .eq(TpOrderPlacerDO::getTenantId, tenantId); + orderPlacerRepository.update(orderPlacerDOLambdaUpdateWrapper); + } + + } + + + private String buildMessage(TpMessageEntity messageEntity) { + String message = messageEntity.getMessage(); + LogUtil.info("------------------------------收到用户小程序注册成功消息:{}", message); + JSONObject jsonObject = JSONObject.parseObject(message); + + String messageKey = (String) jsonObject.get("key"); + + // message key + messageEntity.setMessageKey(messageKey); + + return (String) jsonObject.get("body"); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/listener/UserMqMessageListener.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/listener/UserMqMessageListener.java new file mode 100644 index 0000000..04148d1 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/mq/listener/UserMqMessageListener.java @@ -0,0 +1,91 @@ +package com.deepinnet.tptradecore.core.mq.listener; + +import cn.hutool.core.collection.CollectionUtil; +import com.deepinnet.tp.common.lang.exception.TpException; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.core.mq.entity.TpMessageEntity; +import com.deepinnet.tptradecore.core.mq.handler.TpMessageHandler; +import org.apache.rocketmq.common.message.MessageExt; +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + + +/** + * 用户注册成功,订正历史数据监听器 + * + * @author cky + * @version 2024/02/27 09:28 + */ + +@Component +@RocketMQMessageListener( + topic = "${message.user-topic}", + consumerGroup = "${message.consumerGroup}" +) +public class UserMqMessageListener implements RocketMQListener { + + @Resource + private Map messageHandlerMap = new ConcurrentHashMap<>(); + + @Value("${message.consumerGroup}") + private String group; + + protected String consumerGroup() { + return group; + } + + /** + * @param messageExt 消息 + */ + @Override + public void onMessage(MessageExt messageExt) { + this.consumeMessage(messageExt); + } + + /** + * 打日志 & 分发处理器 + * + * @param messageExt 消息 + */ + public void consumeMessage(MessageExt messageExt) { + String message = new String(messageExt.getBody(), StandardCharsets.UTF_8); + LogUtil.info("消费组[{}], 接收TOPIC:[{}], tag:[{}], messageKey:[{}], 消息内容[{}]", consumerGroup(), messageExt.getTopic(), messageExt.getTags(), messageExt.getKeys(), messageExt); + try { + // 消息分发到具体的处理器 + _dispatchMessage(TpMessageEntity.builder() + .tag(messageExt.getTags()) + .message(message) + .messageKey(messageExt.getKeys()) + .consumerGroup(consumerGroup()) + .topic(messageExt.getTopic()).build()); + } catch (Exception e) { + LogUtil.error("消息消费异常, 异常消息:{}", message, e); + throw new TpException("消费消息异常:", e); + } + } + + /** + * 消息分发 + */ + protected void _dispatchMessage(TpMessageEntity message) { + + + List messageHandlers = messageHandlerMap.values().stream().filter(messageHandler -> message.getTag().equals(messageHandler.supportTag())).collect(Collectors.toList()); + + if (CollectionUtil.isEmpty(messageHandlers)) { + LogUtil.error("message find no handler:{}", message); + throw new TpException("未找到具体的handler"); + } + // 消息实际处理 + messageHandlers.parallelStream().forEach(messageHandler -> messageHandler.handle(message)); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/TpAuditDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/TpAuditDomainService.java new file mode 100644 index 0000000..c1edf75 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/TpAuditDomainService.java @@ -0,0 +1,81 @@ +package com.deepinnet.tptradecore.core.service.audit; + +import com.deepinnet.tptradecore.common.dto.audit.*; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.audit.TpAuditOrderList; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 审核领域服务 + *

+ * + * @author chenjiaju + * @since 2023/8/9 + */ +@Validated +public interface TpAuditDomainService { + + + /** + * 查询审核单详情 + * + * @return + */ + TpAudit getAuditDetail(@NotNull(message = "入参不能为空") TpAuditQueryDetailDTO tpAuditQueryDetailDTO); + + /** + * 查询审核单详情 + * + * @return + */ + TpAudit getLatestAuditDetail(TpAuditLatestDetailDTO auditLatestDetailDTO); + /** + * 查询审核单详情 + * + * @return + */ + List listAudits(@NotNull(message = "入参不能为空") TpAuditListQueryDTO tpAuditListQueryDTO); + + + + /** + * 创建审核单 + * + * @return + */ + Boolean createAudit(@NotNull(message = "入参不能为空") TpAuditCreatedDTO tpAuditCreatedDTO); + + + /** + * 审核单-审核确认接口 + * + * @param confirmAuditDTO + * @return + */ + Boolean submitApproved(@NotNull(message = "入参不能为空") TpAuditApprovedSubmitDTO confirmAuditDTO); + + + /** + * 查询订单相关的审核单信息 + * @param dto + * @return + */ + List listOrderAudit(@NotNull(message = "入参不能为空") TpOrderAuditListQueryDTO dto); + + /** + * 更改订单派单状态 + * + * @param tenantId 租户ID + * @param auditNo 审核单号 + * @param tpAuditStatusEnum 状态枚举 + */ + Boolean pushAuditStatus(@NotNull String tenantId, @NotNull String auditNo, @NotNull TpAuditStatusEnum tpAuditStatusEnum); + + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/impl/TpAuditDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/impl/TpAuditDomainServiceImpl.java new file mode 100644 index 0000000..59c7f98 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/audit/impl/TpAuditDomainServiceImpl.java @@ -0,0 +1,179 @@ +package com.deepinnet.tptradecore.core.service.audit.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.audit.TpAuditDOConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.audit.TpAuditDO; +import com.deepinnet.tptradecore.common.dal.repository.audit.TpAuditRepository; +import com.deepinnet.tptradecore.common.dto.audit.*; +import com.deepinnet.tptradecore.common.enums.audit.TpAuditStatusEnum; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskStatusEnum; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.core.model.audit.TpAudit; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.audit.TpAuditDomainService; +import com.deepinnet.tptradecore.core.service.order.impl.TpOrderDomainServiceImpl; +import com.deepinnet.tptradecore.core.service.task.TpScheduleTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + *

+ * 审核领域服务实现 + *

+ * + * @author xiehuaqiao + * @since 2023/11/20 + */ + +@Service +public class TpAuditDomainServiceImpl implements TpAuditDomainService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDomainServiceImpl.class); + + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private TpAuditDOConverter tpAuditDOConverter; +// @Resource +// private TpScheduleTaskService scheduleTaskService; + + @Resource + private TpAuditRepository tpAuditRepository; + + @Resource + private TpSequenceClient tpSequenceClient; +// +// /** +// * 审核单超时时间默认为15分钟 +// */ +// private static Long AUDIT_APPROVED_TIMEOUT = 300L; + + @Override + public TpAudit getAuditDetail(TpAuditQueryDetailDTO tpAuditQueryDetailDTO) { + + return tpAuditRepository.queryAuditByAuditNo(tpAuditQueryDetailDTO.getAuditNo(), tpAuditQueryDetailDTO.getTenantId()); + } + + @Override + public TpAudit getLatestAuditDetail(TpAuditLatestDetailDTO auditLatestDetailDTO) { + + return tpAuditRepository.queryLatestAuditByBizObj(auditLatestDetailDTO.getAuditNo(), + auditLatestDetailDTO.getBizObjectNo(), + auditLatestDetailDTO.getBizObjType(), + auditLatestDetailDTO.getAuditorNo(), + auditLatestDetailDTO.getType(), + auditLatestDetailDTO.getAuditStatuses(),auditLatestDetailDTO.getTenantId()); + } + + @Override + public List listAudits(TpAuditListQueryDTO tpAuditListQueryDTO) { + + return tpAuditRepository.listAudits(tpAuditListQueryDTO); + + } + + @Override + public Boolean createAudit(TpAuditCreatedDTO tpAuditCreatedDTO) { + // 查询是否存在已经提交的审核 + TpAudit tpAudit = tpAuditRepository.queryAuditByBizObjAndStatus(tpAuditCreatedDTO.getBizObjectNo(), tpAuditCreatedDTO.getBizObjType(), TpAuditStatusEnum.WAITING_APPROVED.getType(), tpAuditCreatedDTO.getTenantId()); + if (ObjectUtil.isNotNull(tpAudit)) { + LogUtil.error(LOGGER, "已经存在审核单, 审核单号为:{}", tpAudit.getAuditNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.SUBMIT_REPEAT_APPROVAL_ERROR); + } + AtomicBoolean saveResult = new AtomicBoolean(Boolean.FALSE); + try { + if (tpAuditCreatedDTO.getSubmitTime() == null) { + tpAuditCreatedDTO.setSubmitTime(DateUtil.current()); + } + TpAuditDO tpAuditDO = tpAuditDOConverter.model2DO(tpAuditCreatedDTO); + //生成审核单编号 + tpAuditDO.setAuditNo(tpSequenceClient.generateAuditNo()); + + transactionTemplate.executeWithoutResult(e -> { + saveResult.set(tpAuditRepository.save(tpAuditDO)); + }); +// //不用同一个事务,创建审核超时任务 +// if (saveResult.get()) { +// createAuditTimeOutTask(tpAuditDO.getAuditNo(), tpAuditDO.getSubmitTime(), tpAuditDO.getTenantId()); +// } else { +// throw new TpTradeCoreException(TpTradeCoreErrorCode.AUDIT_CREATE_ERROR); +// } + } catch (Exception e) { + LogUtil.error(LOGGER, "审核单创建失败", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.AUDIT_CREATE_ERROR); + } + return saveResult.get(); + } + +// private void createAuditTimeOutTask(String auditNo, LocalDateTime submitTime, String tenantId) { +// try { +// TpScheduleTask scheduleTask = new TpScheduleTask(); +// scheduleTask.setTenantId(tenantId); +// scheduleTask.setBizNo(auditNo); +// scheduleTask.setTaskType(TpScheduleTaskTypeEnum.AUDIT_TIME_OUT.getType()); +// scheduleTask.setStatus(TpScheduleTaskStatusEnum.WAIT_EXECUTE.getStatus()); +// scheduleTask.setTriggerTime(LocalDateTimeUtil.toEpochMilli(submitTime.plusMinutes(AUDIT_APPROVED_TIMEOUT))); +// scheduleTaskService.batchInsertScheduleTasks(Arrays.asList(scheduleTask)); +// } catch (Exception e) { +// LogUtil.error(LOGGER, "审核单超时任务创建失败", e); +// } +// } + + @Override + public Boolean submitApproved(TpAuditApprovedSubmitDTO confirmAuditDTO) { + TpAudit tpAudit = tpAuditRepository.queryAuditByAuditNo(confirmAuditDTO.getAuditNo(), confirmAuditDTO.getTenantId()); + if (ObjectUtil.isNull(tpAudit)) { + LogUtil.error(LOGGER, "当前审核单:{}, 不存在", confirmAuditDTO.getAuditNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_APPROVAL_ORDER_NOT_EXIST_ERROR); + } + + try { + transactionTemplate.executeWithoutResult(e -> { + tpAuditRepository.updateAudit(confirmAuditDTO); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "审核单审核失败", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.APPROVAL_BIZ_NOT_EXIST_ERROR); + } + return Boolean.TRUE; + } + + @Override + public List listOrderAudit(TpOrderAuditListQueryDTO dto) { + return tpAuditRepository.listOrderAudit(dto); + } + + @Override + public Boolean pushAuditStatus(String tenantId, String auditNo, TpAuditStatusEnum tpAuditStatusEnum) { + TpAudit tpAudit = tpAuditRepository.queryAuditByAuditNo(auditNo, tenantId); + if (ObjectUtil.isNull(tpAudit)) { + LogUtil.error(LOGGER, "当前审核单:{}, 不存在", auditNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_APPROVAL_ORDER_NOT_EXIST_ERROR); + } + + try { + transactionTemplate.executeWithoutResult(e -> { + tpAuditRepository.pushAuditStatus(tenantId, auditNo, tpAuditStatusEnum.getType()); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "审核单审核失败", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.APPROVAL_BIZ_NOT_EXIST_ERROR); + } + return Boolean.TRUE; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/TpContractDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/TpContractDomainService.java new file mode 100644 index 0000000..564de5c --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/TpContractDomainService.java @@ -0,0 +1,76 @@ +package com.deepinnet.tptradecore.core.service.contract; + + +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherUpdateDTO; +import com.deepinnet.tptradecore.core.model.contract.*; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/21 14:41 + * @Description 履约域领域服务 + */ +public interface TpContractDomainService { + + /** + * 申请退票 + * + * @param refundApplyOrder 入参 + * @return 是否成功 + */ + Boolean applyTicketRefund(TpRefundApplyOrder refundApplyOrder); + + /** + * 查询退票记录列表 + * + * @return 退票申请单 + */ + PageInfo pageQueryRefundApplyOrders(TpPageQueryRefundApplyOrderDTO queryDTO); + + /** + * 查询退票申请单列表 + * + * @param queryDTO + * @return + */ + List getRefundApplyOrderList(TpQueryRefundApplyOrderDTO queryDTO); + + /** + * 退票成功接口 + * + * @param refundApplyOrderNo + * @param tenantId + * @return + */ + Boolean refundSuccess(String refundApplyOrderNo, String tenantId); + + /** + * 保存退票失效凭证记录 + * + * @param updateDTOs + * @return + */ + Boolean saveRefundVoucherRecord(List updateDTOs); + + + /** + * 获取退票失效凭证记录 + * + * @param refundApplyOrderNo + * @param tenantId + * @return + */ + TpRefundVoucherRecord getRefundVoucherRecord(String refundApplyOrderNo, String tenantId); + + /** + * 是否存在退票失效凭证记录 + * + * @param refundApplyOrderNo + * @param tenantId + * @return + */ + Boolean existRefundVoucherRecord(String refundApplyOrderNo, String tenantId); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/impl/TpContractDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/impl/TpContractDomainServiceImpl.java new file mode 100644 index 0000000..4ea57cc --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/contract/impl/TpContractDomainServiceImpl.java @@ -0,0 +1,384 @@ +package com.deepinnet.tptradecore.core.service.contract.impl; + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.condition.contract.*; +import com.deepinnet.tptradecore.common.dal.convert.contract.*; +import com.deepinnet.tptradecore.common.dal.repository.contract.*; +import com.deepinnet.tptradecore.common.dto.contract.*; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherUpdateDTO; +import com.deepinnet.tptradecore.common.enums.contract.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.contract.*; +import com.deepinnet.tptradecore.core.service.contract.TpContractDomainService; +import com.github.pagehelper.*; +import com.google.common.collect.*; +import org.apache.commons.collections4.*; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2023/7/21 14:41 + * @Description 履约域领域服务 + */ +@Service +public class TpContractDomainServiceImpl implements TpContractDomainService { + + @Resource + private TpRefundApplyOrderRepository applyOrderRepository; + + @Resource + private TpRefundPassengerRepository passengerRepository; + + @Resource + private TpRefundRequirementUserRepository requirementUserRepository; + + @Resource + private TpRefundSubjectItemRepository subjectItemRepository; + + @Resource + private TpRefundSubjectItemElementRepository subjectItemElementRepository; + + @Resource + private TpRefundVoucherRecordRepository refundVoucherRecordRepository; + + @Resource + private TpRefundApplicantRepository refundApplicantRepository; + + @Resource + private TpRefundRouteRepository refundRouteRepository; + + @Resource + private TpRefundRouteShuttleRepository refundRouteShuttleRepository; + + @Resource + private TpRefundRouteConverter refundRouteConverter; + + @Resource + private TpRefundApplyOrderConvert refundApplyOrderConvert; + + @Resource + private TpRefundApplicantConvert refundApplicantConvert; + + @Resource + private TpRefundVoucherRecordConvert refundVoucherRecordConvert; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public Boolean applyTicketRefund(TpRefundApplyOrder refundApplyOrder) { + transactionTemplate.executeWithoutResult(action -> { + applyOrderRepository.save(refundApplyOrder); + + // 保存退票标的项 + List subjectItemList = refundApplyOrder.getSubjectItemList(); + subjectItemRepository.batchSave(subjectItemList); + + List subjectItemElements = Lists.newArrayList(); + List passengerList = Lists.newArrayList(); + List refundRequirementUsers = Lists.newArrayList(); + subjectItemList.forEach(subjectItem -> { + subjectItemElements.addAll(subjectItem.getSubjectItemElements()); + + if (subjectItem.getPassenger() != null) { + passengerList.add(subjectItem.getPassenger()); + } + + if (subjectItem.getRequirementUser() != null) { + refundRequirementUsers.add(subjectItem.getRequirementUser()); + } + }); + + // 退票标的项组成要素 + subjectItemElementRepository.batchSave(subjectItemElements); + + // 标的项关联的乘客信息 + if (CollectionUtils.isNotEmpty(passengerList)) { + passengerRepository.batchSave(passengerList); + } + + // 标的项关联的交通需求方(用车方) + if (CollectionUtils.isNotEmpty(refundRequirementUsers)) { + requirementUserRepository.batchSave(refundRequirementUsers); + } + + // 保存退票的线路和班次信息 + if (CollectionUtils.isNotEmpty(refundApplyOrder.getRefundRoutes())) { + refundRouteRepository.saveBatch(refundRouteConverter.model2DOList(refundApplyOrder.getRefundRoutes())); + } + + // 保存退票申请人 + refundApplicantRepository.save(refundApplicantConvert.convert2DO(refundApplyOrder.getRefundApplicant())); + }); + + return true; + } + + @Override + public PageInfo pageQueryRefundApplyOrders(TpPageQueryRefundApplyOrderDTO queryDTO) { + Page page = PageHelper.startPage(queryDTO.getPageNum(), queryDTO.getPageSize()); + List refundApplyOrders = applyOrderRepository.searchApplyOrders(queryDTO); + if (CollectionUtils.isEmpty(refundApplyOrders)) { + return null; + } + + List refundOrderNos = refundApplyOrders.stream() + .map(TpRefundApplyOrder::getRefundApplyOrderNo) + .collect(Collectors.toList()); + + // 查询路线信息 + Map> routeMap = assembleRouteAndShuttle(refundOrderNos, queryDTO.getTenantId()); + if (MapUtils.isNotEmpty(routeMap)) { + refundApplyOrders.forEach(refundApplyOrder -> { + List refundRoutes = routeMap.get(refundApplyOrder.getRefundApplyOrderNo()); + refundApplyOrder.setRefundRoutes(refundRoutes); + }); + } + + // 查询退票申请人 + List refundApplicantList = refundApplicantRepository.getRefundApplicantByRefundOrderNos(refundOrderNos, queryDTO.getTenantId()); + Assert.notEmpty(refundApplicantList, "退票申请人不能为空"); + Map refundApplicantMap = refundApplicantList.stream() + .collect(Collectors.toMap(TpRefundApplicant::getRefundApplyOrderNo, Function.identity())); + refundApplyOrders.forEach(refundApplyOrder -> { + TpRefundApplicant tpRefundApplicant = refundApplicantMap.get(refundApplyOrder.getRefundApplyOrderNo()); + refundApplyOrder.setRefundApplicant(tpRefundApplicant); + }); + + List refundApplyOrderDTOs = refundApplyOrderConvert.convert2DTOList(refundApplyOrders); + PageInfo pageInfo = PageInfo.of(refundApplyOrderDTOs); + pageInfo.setPageNum(page.getPageNum()); + pageInfo.setPageSize(page.getPageSize()); + pageInfo.setTotal(page.getTotal()); + return pageInfo; + } + + @Override + public List getRefundApplyOrderList(TpQueryRefundApplyOrderDTO queryDTO) { + List refundApplyOrders = applyOrderRepository.getRefundApplyOrderList(queryDTO); + if (CollectionUtils.isEmpty(refundApplyOrders)) { + return null; + } + + List refundApplyOrderNos = refundApplyOrders.stream() + .map(TpRefundApplyOrder::getRefundApplyOrderNo) + .collect(Collectors.toList()); + + Map> subjectItemMap = null; + Map> routeMap = null; + Map> passengerMap = null; + Map refundApplicantMap = null; + Map> refundVoucherMap = null; + + if (CollectionUtils.isEmpty(queryDTO.getNeedProperties())) { + return refundApplyOrders; + } + + // 退票申请单标的项 + if (queryDTO.getNeedProperties().contains(TpRefundApplyOrderModulesEnum.REFUND_SUBJECT_ITEM.getModule())) { + subjectItemMap = assembleRefundSubjectItemList(refundApplyOrderNos, queryDTO.getTenantId()); + } + + // 线路和班次信息 + if (queryDTO.getNeedProperties().contains(TpRefundApplyOrderModulesEnum.REFUND_ROUTE.getModule())) { + routeMap = assembleRouteAndShuttle(refundApplyOrderNos, queryDTO.getTenantId()); + } + + // 退票乘客信息 + if (queryDTO.getNeedProperties().contains(TpRefundApplyOrderModulesEnum.REFUND_PASSENGER.getModule())) { + passengerMap = assembleRefundPassengers(refundApplyOrderNos, queryDTO.getTenantId()); + } + + // 退票申请人信息 + if (queryDTO.getNeedProperties().contains(TpRefundApplyOrderModulesEnum.REFUND_APPLICANT.getModule())) { + refundApplicantMap = assembleRefundApplicant(refundApplyOrderNos, queryDTO.getTenantId()); + } + + // 退票失效的凭证 + if (queryDTO.getNeedProperties().contains(TpRefundApplyOrderModulesEnum.REFUND_VOUCHER.getModule())) { + refundVoucherMap = assembleRefundVoucher(refundApplyOrderNos, queryDTO.getTenantId()); + } + + // 组装 + for (TpRefundApplyOrder refundApplyOrder : refundApplyOrders) { + if (MapUtils.isNotEmpty(subjectItemMap)) { + refundApplyOrder.setSubjectItemList(subjectItemMap.get(refundApplyOrder.getRefundApplyOrderNo())); + } + + if (MapUtils.isNotEmpty(routeMap)) { + refundApplyOrder.setRefundRoutes(routeMap.get(refundApplyOrder.getRefundApplyOrderNo())); + } + + if (MapUtils.isNotEmpty(passengerMap)) { + Set refundPassengerSet = Sets.newHashSet(); + List distinctPassengerList = Lists.newArrayList(); + + List passengerList = passengerMap.get(refundApplyOrder.getRefundApplyOrderNo()); + passengerList.forEach(passenger -> { + if (refundPassengerSet.contains(passenger.getPassengerNo())) { + return; + } + + refundPassengerSet.add(passenger.getPassengerNo()); + distinctPassengerList.add(passenger); + }); + + refundApplyOrder.setPassengers(distinctPassengerList); + } + + if (MapUtils.isNotEmpty(refundApplicantMap)) { + refundApplyOrder.setRefundApplicant(refundApplicantMap.get(refundApplyOrder.getRefundApplyOrderNo())); + } + + if (MapUtils.isNotEmpty(refundVoucherMap)) { + refundApplyOrder.setRefundVoucherList(refundVoucherMap.get(refundApplyOrder.getRefundApplyOrderNo())); + } + } + + return refundApplyOrders; + } + + @Override + public Boolean refundSuccess(String refundApplyOrderNo, String tenantId) { + boolean res = applyOrderRepository.updateByCondition(UpdateRefundApplyOrderCondition.builder() + .refundApplyOrderNo(refundApplyOrderNo) + .tenantId(tenantId) + .originalStatus(TpRefundApplyOrderStatusEnum.REFUNDING.getCode()) + .targetStatus(TpRefundApplyOrderStatusEnum.REFUNDED_SUCCESS.getCode()) + .build()); + if (!res) { + LogUtil.error("更新退票申请单状态为成功执行失败,退票单号:{}", refundApplyOrderNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.UPDATE_REFUND_APPLY_ORDER_ERROR); + } + + return Boolean.TRUE; + } + + @Override + public Boolean saveRefundVoucherRecord(List updateDTOs) { + TpRefundVoucherRecord refundVoucherRecord = refundVoucherRecordConvert.convertDTO2Domain(updateDTOs); + return refundVoucherRecordRepository.save(refundVoucherRecord); + } + + @Override + public TpRefundVoucherRecord getRefundVoucherRecord(String refundApplyOrderNo, String tenantId) { + return refundVoucherRecordRepository.getRefundVoucherRecord(refundApplyOrderNo, tenantId); + } + + @Override + public Boolean existRefundVoucherRecord(String refundApplyOrderNo, String tenantId) { + return refundVoucherRecordRepository.existRefundVoucherRecord(refundApplyOrderNo, tenantId); + } + + private Map> assembleRefundSubjectItemList(List refundApplyOrderNos, String tenantId) { + // 标的项 + List refundSubjectItemList = subjectItemRepository.getRefundSubjectItemList(refundApplyOrderNos, tenantId); + Assert.notEmpty(refundSubjectItemList, "退票标的项不能为空"); + + // 标的项组成要素 + List refundSubjectItemNos = refundSubjectItemList.stream() + .map(TpRefundSubjectItem::getSubjectItemNo) + .collect(Collectors.toList()); + List refundSubjectItemElementList = subjectItemElementRepository.getRefundSubjectItemElementList(refundSubjectItemNos, tenantId); + Assert.notEmpty(refundSubjectItemList, "退票标的项组成要素不能为空"); + + // 标的项对应的乘客信息 + QueryRefundPassengerCondition queryCondition = new QueryRefundPassengerCondition(); + queryCondition.setRefundSubjectItemNos(refundSubjectItemNos); + queryCondition.setTenantId(tenantId); + List passengerList = passengerRepository.getPassengerList(queryCondition); + Map passengerMap = Maps.newHashMap(); + if (CollectionUtils.isNotEmpty(passengerList)) { + passengerMap = passengerList.stream().collect(Collectors.toMap(TpRefundPassenger::getRefundSubjectItemNo, Function.identity())); + } + + // 将标的项和标的项组成要素组装在一起 + Map> refundSubjectItemMap = refundSubjectItemElementList.stream() + .collect(Collectors.groupingBy(TpRefundSubjectItemElement::getSubjectItemNo)); + for (TpRefundSubjectItem refundSubjectItem : refundSubjectItemList) { + if (MapUtils.isNotEmpty(passengerMap)) { + TpRefundPassenger refundPassenger = passengerMap.get(refundSubjectItem.getSubjectItemNo()); + refundSubjectItem.setPassenger(refundPassenger); + } + refundSubjectItem.setSubjectItemElements(refundSubjectItemMap.get(refundSubjectItem.getSubjectItemNo())); + } + + // 返回 + return refundSubjectItemList + .stream() + .collect(Collectors.groupingBy(TpRefundSubjectItem::getRefundApplyOrderNo)); + } + + private Map> assembleRouteAndShuttle(List refundApplyOrderNos, String tenantId) { + List refundRoutes = refundRouteRepository.listRouteByRefundApplyOrderNos(refundApplyOrderNos, tenantId); + if (CollectionUtils.isEmpty(refundRoutes)) { + return null; + } + + List routeNos = refundRoutes.stream() + .map(TpRefundRoute::getRouteNo) + .distinct() + .collect(Collectors.toList()); + List routeSchedules = refundRouteShuttleRepository.queryRouteShuttle(refundApplyOrderNos, routeNos, tenantId); + + // 滚动发车班次为空 + if (CollectionUtils.isNotEmpty(routeSchedules)) { + Map routeScheduleMap = routeSchedules + .stream() + .collect(Collectors.toMap(TpRefundRouteShuttle::getRouteNo, Function.identity())); + refundRoutes.forEach(refundRoute -> refundRoute.setRouteShuttle(routeScheduleMap.get(refundRoute.getRouteNo()))); + } + + return refundRoutes.stream() + .collect(Collectors.groupingBy(TpRefundRoute::getRefundApplyOrderNo)); + } + + private Map> assembleRefundPassengers(List refundApplyOrderNos, String tenantId) { + List passengerList = passengerRepository.getPassengerList(QueryRefundPassengerCondition.builder() + .refundApplyOrderNos(refundApplyOrderNos) + .tenantId(tenantId) + .build()); + if (CollectionUtils.isEmpty(passengerList)) { + return null; + } + + return passengerList.stream() + .collect(Collectors.groupingBy(TpRefundPassenger::getRefundApplyOrderNo)); + } + + private Map assembleRefundApplicant(List refundApplyOrderNos, String tenantId) { + List refundApplicantList = refundApplicantRepository.getRefundApplicantByRefundOrderNos(refundApplyOrderNos, tenantId); + Assert.notEmpty(refundApplicantList, "退票申请人不能为空"); + return refundApplicantList.stream() + .collect(Collectors.toMap(TpRefundApplicant::getRefundApplyOrderNo, Function.identity())); + } + + private Map> assembleRefundVoucher(List refundApplyOrderNos, String tenantId) { + List refundVoucherRecords = refundVoucherRecordRepository.listRefundVoucherRecords(refundApplyOrderNos, tenantId); + Assert.notEmpty(refundVoucherRecords, "退票申请人不能为空"); + + List totalRefundVoucherList = Lists.newArrayList(); + refundVoucherRecords.forEach(r -> { + String invalidVoucherParamJSON = r.getInvalidVoucherParam(); + List invalidVoucherParamList = JSONUtil.toList(invalidVoucherParamJSON, TpInvalidVoucherParam.class); + invalidVoucherParamList.forEach(invalid -> { + TpRefundVoucher refundVoucher = new TpRefundVoucher(); + refundVoucher.setVoucherNo(invalid.getVoucherNo()); + refundVoucher.setRefundCount(invalid.getRefundCount()); + refundVoucher.setRefundApplyOrderNo(invalid.getRefundApplyOrderNo()); + totalRefundVoucherList.add(refundVoucher); + }); + }); + + return totalRefundVoucherList.stream().collect(Collectors.groupingBy(TpRefundVoucher::getRefundApplyOrderNo)); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderChangedApplyDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderChangedApplyDomainService.java new file mode 100644 index 0000000..cd51f78 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderChangedApplyDomainService.java @@ -0,0 +1,99 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItem; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author xiehuaqiao + * @create 2023/11/15 17:34 + * @Description + */ +public interface TpOrderChangedApplyDomainService { + + /** + * 查询指定订单变更申请单详情 + * + * @param orderChangeApplyQueryDTO + * @return + */ + TpOrderChangeApply getOrderChangedApplyDetail(@NotNull(message = "入参不能为空") TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO); + + /** + * 查询指定订单变更申请单详情 + * + * @param tenantId + * @param applyNoList + * @return + */ + List listByApplyNos(String tenantId,List applyNoList); + + + + /** + * 查询指定申请单对应的变更项信息 + * + * @param orderChangeApplyQueryDTO + * @return + */ + List listOrderChangedItems(@NotNull(message = "入参不能为空") TpOrderChangeItemListDTO orderChangeApplyQueryDTO); + + + /** + * 创建订单变更申请单 + * + * @param orderChangeApplyCreatedDTO + * @return + */ + Boolean createOrderChangeApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO); + + + /** + * 提交申请单审核结果 + * @param approvedSubmitDTO + * @return + */ + Boolean submitApprovedApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyApprovedSubmitDTO approvedSubmitDTO); + + + /** + * 提交服务费减免申请 + * @param rfscApplyDTO + * @return + */ + Boolean submitReduceFscApply(@NotNull(message = "入参不能为空") TpOrderChangeApplyRscApplyDTO rfscApplyDTO); + + /** + * 申请单状态推进 + * @param statusUpdateDTO + * @return + */ + Boolean pushOrderChangedApplyStatus(TpOrderChangeApplyStatusUpdateDTO statusUpdateDTO); + + /** + * 查询指定订单的最近一条申请单详情 + * + * @param tpOrderChangeApplyLatestDetailDTO + * @return + */ + TpOrderChangeApply getLatestOrderChangedApplyDetail(TpOrderChangeApplyLatestDetailDTO tpOrderChangeApplyLatestDetailDTO); + + + /** + * 查询指定订单的所有记录 + * + * @param tpOrderChangeApplyListDTO + * @return + */ + List listOrderChangeApply(TpOrderChangeApplyListDTO tpOrderChangeApplyListDTO); + + /** + * 查询指定订单列表的每一个最近记录 + * @param tpOrderChangeApplyListDTO + * @return + */ + List batchQueryOrderChangeApplyByOrderNos(TpOrderChangeApplyBatchListDTO tpOrderChangeApplyListDTO); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDispatchDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDispatchDomainService.java new file mode 100644 index 0000000..714169f --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDispatchDomainService.java @@ -0,0 +1,98 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchCallBackDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchFleetCreatedDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchGiveBackDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 订单派单领域服务接口 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@Validated +public interface TpOrderDispatchDomainService { + + /** + * 订单派单 + * + * @param tpOrderDispatch 订单派单域实体 + * @return 订单 + */ + Boolean dispatchOrder(@NotNull TpOrderDispatchCreatedDTO tpOrderDispatch); + + + /** + * 订单召回 + * + * @param callBackDTO 订单召回实体 + * @return 订单 + */ + Boolean callBackOrder(@NotNull TpOrderDispatchCallBackDTO callBackDTO); + + /** + * 订单退回 + * + * @param giveBackDTO 订单退回实体 + * @return 订单 + */ + Boolean giveBackOrder(@NotNull TpOrderDispatchGiveBackDTO giveBackDTO); + + + /** + * 订单指派车队 + * @param fleetCreatedDTO + * @return + */ + Boolean dispatchFleet(TpOrderDispatchFleetCreatedDTO fleetCreatedDTO); + + /** + * 查询订单派单记录 + * + * @param tenantId 租户ID + * @param orderDispatchNo 订单派单处理流水号 + * @param originalOrderNo 订单编号 + * @param statuses 派单单据状态 + * @return 订单详情 + */ + TpOrderDispatch getDispatchOrder(@NotNull String tenantId, String orderDispatchNo, String originalOrderNo,List statuses); + + /** + * 查询订单派单记录 + * + * @param tenantId 租户ID + * @param originalOrderNo 订单编号 + * @return 订单列表 + */ + List listDispatchOrder(@NotNull String tenantId, @NotNull String originalOrderNo); + + + /** + * 更改订单派单状态 + * + * @param tenantId 租户ID + * @param orderDispatchNo 订单派单处理流水号 + * @param originalOrderNo 订单编号 + * @param tpOrderDispatchStatusEnum 状态枚举 + */ + Boolean pushDispatchStatus(@NotNull String tenantId, @NotNull String orderDispatchNo, @NotNull String originalOrderNo, @NotNull TpOrderDispatchStatusEnum tpOrderDispatchStatusEnum); + + /** + * 查询派单列表数据 + * @param tenantId 租户ID + * @param originalOrderNoList 订单ID列表 + * @param statuses 订单状态列表 + * @return + */ + List listOrderDispatchDetail(String tenantId, List originalOrderNoList, List statuses); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDomainService.java new file mode 100644 index 0000000..95a2414 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderDomainService.java @@ -0,0 +1,341 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tptradecore.common.dto.order.TpOrderCarpoolSearchDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderModulesEnum; +import com.deepinnet.tptradecore.core.model.order.*; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 订单域领域服务接口 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Validated +public interface TpOrderDomainService { + + /** + * 创建订单 + * + * @param tpOrder 订单域实体(可能为主子订单) + * @return 订单 + */ + TpOrder createOrder(@NotNull TpOrder tpOrder); + + /** + * 改签订单 + * + * @param tpOrder 改签后的订单域实体 + * @return 改签后的订单 + */ + TpOrder changeOrder(@NotNull TpOrder tpOrder); + + /** + * 查询订单详情 + * + * @param tenantId 租户ID + * @param userNo 用户编号 + * @param orderNo 订单编号 + * @param needModules 查询模块 + * @return 订单详情 + */ + TpOrder getOrder(@NotNull String tenantId, String userNo, @NotNull String orderNo, List needModules); + + /** + * 查询订单详情 + * + * @param tenantId 租户ID + * @param userNo 用户编号 + * @param originalOrderNo 原始订单编号 + * @param needModules 查询模块 + * @return 订单详情 + */ + TpOrder getOrderByOriginalOrderNo(String tenantId, String userNo, String originalOrderNo, List needModules); + + /** + * 查询订单列表 + * + * @param tpOrderQueryList 查询条件 + * @return 订单列表 + */ + CommonPage getOrderList(@NotNull TpOrderQueryList tpOrderQueryList); + + /** + * 关闭订单(超时关单) + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + */ + void closeOrderExpireTime(@NotNull String tenantId, @NotNull String orderNo); + + /** + * 定制包车取消订单(审核成功后 或 无需审核) + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + */ + void cancelCharterBus(@NotNull String tenantId, @NotNull String orderNo); + + /** + * 支付订单(推进状态流转) + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + */ + void payOrder(@NotNull String tenantId, @NotNull String orderNo, @NotNull Long payTime); + + /** + * 订单提交审核(审核状态推进) + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + */ + void submitApprovalOrder(@NotNull String tenantId, @NotNull String orderNo); + + /** + * 订单审核(审核状态推进) + * + * @param tenantId 租户ID + * @param orderNo 订单编号 + * @param approveStatus 订单审核状态,状态参考如下枚举 + * @see com.deepinnet.tptradecore.core.model.enums.audit.TpAuditStatusEnum + */ + void approvalOrder(@NotNull String tenantId, @NotNull String orderNo, @NotNull Integer approveStatus); + + /** + * 当前线路是否有未核销完的订单 + * + * @param routeNo 线路编号 + * @param tenantId 租户ID + * @return 存在未核销-true; 不存在未核销-false + */ + boolean queryRouteHasUnverifiedOrder(@NotNull String routeNo, @NotNull String tenantId); + + /** + * 当前线路的班次是否有未核销完的订单 + * + * @param routeNo 线路编号 + * @param shuttleNo 班次编号 + * @param tenantId 租户ID + * @return 存在未核销-true; 不存在未核销-false + */ + boolean queryRouteScheduleHasUnverifiedOrder(@NotNull String routeNo, @NotNull String shuttleNo, @NotNull String tenantId); + + /** + * 更改订单状态 + * + * @param changeOrderPushStatus 推进状态 + */ + void changeOrderStatus(TpOrderPushStatus changeOrderPushStatus); + + /** + * 根据订单编号更新订单支付信息 + * @param orderNo 订单编号 + * @param payType 支付类型 + * @param userNo 用户编号 + * @param tenantId 租户ID + */ + void updateOrderPayInfoByOrderNo(@NotNull String orderNo, @NotNull String payType, @NotNull String userNo, @NotNull String tenantId); + + /** + * 创建订金订单 + * @param depositOrder 订金信息 + */ + void createDepositOrder(TpDepositOrder depositOrder); + + /** + * 更新订金订单为已支付 + * @param orderNo 订单编号 + * @param tenantId 租户ID + */ + void updateDepositPaidOrderByOriginalOrderNo(String orderNo, String tenantId); + + /** + * 更新费用记录 + * @param tpOrderChargeRecord 费用 + */ + void updateChargeRecord(TpOrderChargeRecord tpOrderChargeRecord); + + /** + * 存储费用记录 + * @param orderChargeRecords 费用记录 + */ + void saveChargeRecords(List orderChargeRecords); + + /** + * 查询订单费用记录 + * @param orderNo 订单编号 + * @param originalNo 原始订单编号 + * @param tenantId 租户ID + * @return 费用记录 + */ + List getChargeRecords(String orderNo, String originalNo, String tenantId); + + /** + * 更新订单费用信息 + * @param tpOrderUpdateCharge 变更金额对象 + */ + void updateOrderChargeByOrderNo(TpOrderUpdateCharge tpOrderUpdateCharge); + + /** + * 存储改价记录 + * @param tpOrderChangePriceRecord 改价记录 + */ + void saveChangePriceRecord(TpOrderChangePriceRecord tpOrderChangePriceRecord); + + /** + * 订单更改为不可见 + * @param tenantId 租户ID + * @param orderNo 订单编号 + */ + void updateOrderNotVisible(String tenantId, String orderNo); + + /** + * 包车C端列表查询 + * @param tpOrderQueryList 查询入参 + * @return 列表数据 + */ + List getCharterBusOrderListToC(TpOrderQueryList tpOrderQueryList); + + /** + * 包车B端列表查询 + * @param tpOrderQueryList 查询 + * @return 订单列表 + */ + List getCharterBusOrderListToB(TpOrderQueryList tpOrderQueryList); + + /** + * 删除当前订单对应业务类型的费用记录 + * @param orderNo 订单编号 + * @param bizType 业务类型 + * @param tenantId 租户ID + */ + void removeChargeRecord(String orderNo, String bizType, String tenantId); + + /** + * 存储派单信息 + */ + void createTravelDispatchRecords(List tpOrderTravelDispatchRecords); + + /** + * 更新尾款支付状态 + * @param originalOrderNo 原始订单编号 + * @param tenantId 租户ID + */ + void updateBalancePaidOrderByOrderNo(String originalOrderNo, String tenantId); + + /** + * 创建尾款单 + * @param tpBalanceOrder 尾款单入参 + */ + void createBalanceOrder(TpBalanceOrder tpBalanceOrder); + + /** + * 更新行程单状态 + * @param updateTrip 行程单信息 + */ + void updateTravelTripStatus(TpOrderTravelTrip updateTrip); + + void saveInvoice(List tpOrderInvoices); + + TpOrderInvoice getInvoiceByInvoiceNo(String invoiceNo); + + Long queryOrderCount(String originalOrderNo, String tenantId); + + List batchQueryListByOriginalOrderNos(TpBatchQueryOrder batchQueryOrder); + + /** + * 查询订单列表 + * @param startCount 开始索引 + * @param batch 批量值 + * @return 订单列表 + */ + @Deprecated + List queryOrderBatchList(long startCount, int batch); + + /** + * 查询订单列表 + * @param orderNos 订单编号列表 + * @return 订单列表 + */ + List queryOrderBatchList(List orderNos, String tenantId); + + /** + * 批量查询拼车订单 + * @param orderNos + * @param tenantId + * @return + */ + List queryCarpoolOrderList(List orderNos, String tenantId); + + /** + * 查询原始订单号对应的所有历史订单 + * @param tenantId 租户ID + * @param originalOrderNo 原始订单编号 + * @return 订单列表 + */ + List queryOrdersByOriginalOrderNo(String tenantId, String originalOrderNo); + + /** + * 根据订单编号查询行程单 + * @param tenantId 租户ID + * @param orderNos 订单编号 + * @return 行程单 + */ + List queryTripNosByOrderNos(String tenantId, List orderNos); + + /** + * 取消订单全额减免手续费则将 变更 / 取消订单手续费标识全部标记为减免 + * @param tpOrderChargeRecord 参数 + */ + void updateOperationReduceServiceCharge(TpOrderChargeRecord tpOrderChargeRecord); + + /** + * 根据条件查询定制公交订单数量 + * @param tpOrderQueryList 查询条件 + * @return 订单数量 + */ + Long queryCustomBusOrderCount(TpOrderQueryList tpOrderQueryList); + + /** + * 查询pad端预约单 + * @param tpOrderQueryList 查询条件 + * @return 订单 + */ + CommonPage getPadCarpoolOrderList(TpOrderQueryList tpOrderQueryList); + + /** + * 批量更新订单状态 + * @param orderNos + * @param tenantId + */ + void batchUpdateCarpoolOrderStatus(List orderNos, Integer targetStatus, String tenantId); + + /** + * 查询刷卡流水号对应的所有记录 + * @param swipeCardNo 刷卡流水号 + * @param tenantId 租户ID + * @return 刷卡记录 + */ + List querySwipeCardNoExist(String swipeCardNo, String tenantId); + + /** + * 根据售卖单元编码查询拼车订单列表 + * @param searchDTO 查询条件 + * @return 拼车订单列表 + */ + List queryCarpoolOrderListBySaleUnitCode(TpOrderCarpoolSearchDTO searchDTO); + + /** + * 保存改签记录 + * @param records 改签记录 + */ + void saveRescheduleRecords(List records); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderReceivedDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderReceivedDomainService.java new file mode 100644 index 0000000..acfce85 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpOrderReceivedDomainService.java @@ -0,0 +1,63 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedCreatedDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderReceivedStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrderReceived; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 订单接单领域服务接口 + *

+ * + * @author xiehuaqiao + * @since 2023/11/13 + */ + +@Validated +public interface TpOrderReceivedDomainService { + + /** + * 创建订单接单记录 + * + * @param tpOrderReceivedCreatedDTO 订单派单域实体 + * @return 订单 + */ + Boolean receiveOrder(@NotNull TpOrderReceivedCreatedDTO tpOrderReceivedCreatedDTO); + + /** + * 查询订单派单记录 + * + * @param tenantId 租户ID + * @param receivedNo 接单处理流水号 + * @param bizObjNo 接单业务单据号 + * @param bizObjType 接单业务单据类型 + * @return 接单就详情 + */ + TpOrderReceived getReceivedOrder(@NotNull String tenantId, @NotNull String receivedNo, @NotNull String bizObjNo, @NotNull String bizObjType); + + /** + * 查询订单派单记录 + * + * @param tenantId 租户ID + * @param bizObjNo 接单业务单据号 + * @param bizObjType 接单业务单据类型 + * @return 订单列表 + */ + List listReceivedOrder(@NotNull String tenantId, @NotNull String bizObjNo, @NotNull String bizObjType); + + /** + * 更改订单派单状态 + * + * @param tenantId 租户ID + * @param receivedNo 接单处理流水号 + * @param bizObjNo 接单业务单据号 + * @param bizObjType 接单业务单据类型 + * @param tpOrderReceivedStatusEnum 状态枚举 + */ + Boolean changeReceivedOrderStatus(@NotNull String tenantId, @NotNull String receivedNo, @NotNull String bizObjNo, @NotNull String bizObjType, @NotNull TpOrderReceivedStatusEnum tpOrderReceivedStatusEnum); + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserPassengerDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserPassengerDomainService.java new file mode 100644 index 0000000..591127c --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserPassengerDomainService.java @@ -0,0 +1,46 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.core.model.order.TpUserDelPassengerCondition; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 用户乘客领域服务 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ +@Validated +public interface TpUserPassengerDomainService { + + /** + * 保存乘客 + * @param tpUserPassenger 乘客信息 + */ + void savePassenger(@NotNull TpUserPassenger tpUserPassenger); + + /** + * 修改乘客信息 + * @param tpUserPassenger 乘客信息 + */ + void modifyPassenger(@NotNull TpUserPassenger tpUserPassenger); + + /** + * 乘客信息列表 + * @param tpUserPassengerCondition 查询条件 + */ + List getPassengerList(@NotNull TpUserPassengerCondition tpUserPassengerCondition); + + /** + * 根据用户编号与乘客编号删除乘客信息 + * @param tpUserDelPassengerCondition 乘客编号与用户编号信息 + */ + void delPassenger(@NotNull TpUserDelPassengerCondition tpUserDelPassengerCondition); + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserRouteCollectionDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserRouteCollectionDomainService.java new file mode 100644 index 0000000..30bf075 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/TpUserRouteCollectionDomainService.java @@ -0,0 +1,34 @@ +package com.deepinnet.tptradecore.core.service.order; + +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollectionCondition; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 线路招募领域服务 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ +@Validated +public interface TpUserRouteCollectionDomainService { + + /** + * 线路收集 + * @param tpUserRouteCollection 线路收集信息 + */ + void collectRoute(@NotNull TpUserRouteCollection tpUserRouteCollection); + + /** + * 分页查询线路收集信息 + * @param tpUserRouteCollectionCondition 查询条件 + * @return 线路收集分页信息 + */ + List getCollectionRouteList(@NotNull TpUserRouteCollectionCondition tpUserRouteCollectionCondition); + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderChangedApplyDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderChangedApplyDomainServiceImpl.java new file mode 100644 index 0000000..fe77bdd --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderChangedApplyDomainServiceImpl.java @@ -0,0 +1,402 @@ +package com.deepinnet.tptradecore.core.service.order.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderChangeApplyConverter; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderChangeItemConverter; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderChangeItemFactorConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeApplyDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderChangeItemFactorDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeApplyRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeItemFactorRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderChangeItemRepository; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeApply; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItem; +import com.deepinnet.tptradecore.core.model.order.TpOrderChangeItemFactor; +import com.deepinnet.tptradecore.core.service.order.TpOrderChangedApplyDomainService; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 订单变更申请领域服务实现 + *

+ * + * @author xiehuaqiao + * @since 2023/11/12 + */ +@Service +public class TpOrderChangedApplyDomainServiceImpl implements TpOrderChangedApplyDomainService { + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderChangedApplyDomainServiceImpl.class); + + @Resource + private TpSequenceClient tpSequenceClient; + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private TpOrderChangeApplyConverter tpOrderChangeApplyConverter; + + @Resource + private TpOrderChangeItemConverter tpOrderChangeItemConverter; + + @Resource + private TpOrderChangeApplyRepository tpOrderChangeApplyRepository; + + @Resource + private TpOrderChangeItemRepository tpOrderChangeItemRepository; + + @Resource + private TpOrderChangeItemFactorConverter tpOrderChangeItemFactorConverter; + @Resource + private TpOrderChangeItemFactorRepository tpOrderChangeItemFactorRepository; + + @Override + public TpOrderChangeApply getOrderChangedApplyDetail(TpOrderChangeApplyDetailDTO orderChangeApplyQueryDTO) { + TpOrderChangeApplyDO tpOrderChangeApplyDO = tpOrderChangeApplyRepository.getOrderChangedApplyDetail( + orderChangeApplyQueryDTO.getTenantId(),orderChangeApplyQueryDTO.getApplyNo(),orderChangeApplyQueryDTO.getOrderNo() + ,orderChangeApplyQueryDTO.getOriginalOrderNo(),orderChangeApplyQueryDTO.getApplyType(),orderChangeApplyQueryDTO.getApplyStatus()); + if(tpOrderChangeApplyDO == null){ + return null; + } + TpOrderChangeApply tpOrderChangeApply = tpOrderChangeApplyConverter.do2Model(tpOrderChangeApplyDO); + if(tpOrderChangeApply == null){ + return null; + } + TpOrderChangeItemListDTO orderChangeItemListDTO = new TpOrderChangeItemListDTO(); + orderChangeItemListDTO.setTenantId(tpOrderChangeApply.getTenantId()); + orderChangeItemListDTO.setApplyNo(tpOrderChangeApply.getApplyNo()); + orderChangeItemListDTO.setOrderNo(tpOrderChangeApply.getOrderNo()); + orderChangeItemListDTO.setOriginalOrderNo(tpOrderChangeApply.getOriginalOrderNo()); + tpOrderChangeApply.setOrderChangeItems(listOrderChangedItems(orderChangeItemListDTO)); + return tpOrderChangeApply; + } + + @Override + public List listByApplyNos(String tenantId, List applyNoList) { + List tpOrderChangeApplyDOs = tpOrderChangeApplyRepository.listByApplyNos(tenantId,applyNoList); + if(CollUtil.isEmpty(tpOrderChangeApplyDOs)){ + return Collections.EMPTY_LIST; + } + return tpOrderChangeApplyConverter.do2ModelList(tpOrderChangeApplyDOs); + } + + @Override + public List listOrderChangedItems(TpOrderChangeItemListDTO orderChangeApplyQueryDTO) { + + List tpOrderChangeItemDOS = tpOrderChangeItemRepository.listItemsByApplyNoAndOrderNo(orderChangeApplyQueryDTO.getTenantId(),orderChangeApplyQueryDTO.getApplyNo(),orderChangeApplyQueryDTO.getOriginalOrderNo()); + if(CollUtil.isEmpty(tpOrderChangeItemDOS)){ + return Collections.EMPTY_LIST; + } + List tpOrderChangeItems = tpOrderChangeItemConverter.do2ModelList(tpOrderChangeItemDOS); + tpOrderChangeItems.parallelStream().forEach(tpOrderChangeItem -> { + // 并行查询子订单相关模块数据 + parallelSearchItemFactors(orderChangeApplyQueryDTO.getTenantId(),tpOrderChangeItem.getItemNo(), tpOrderChangeItem.getOriginalOrderNo(), tpOrderChangeItem); + }); + return tpOrderChangeItems; + } + + private void parallelSearchItemFactors(String tenantId, String itemNo, String originalOrderNo, TpOrderChangeItem tpOrderChangeItem) { + + List factorDOS = tpOrderChangeItemFactorRepository.listFactorsByItemNoAndOrderNo(tenantId, itemNo,originalOrderNo); + + // 不存在因子,返回空 + if (CollUtil.isEmpty(factorDOS)) { + return ; + } + List factorList = tpOrderChangeItemFactorConverter.do2ModelList(factorDOS); + tpOrderChangeItem.setItemFactors(factorList); + } + + @Override + public Boolean createOrderChangeApply(TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO) { + LogUtil.info("createOrderChangeApply-domain-service:{}", JSONObject.toJSONString(orderChangeApplyCreatedDTO)); + try { + transactionTemplate.executeWithoutResult(e -> { + // 保存申请单 + saveOrderChangeApply(orderChangeApplyCreatedDTO); + + // 保存变更项 + saveOrderChangeApplyItems(orderChangeApplyCreatedDTO.getOrderChangeItems()); + + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单变更申请单创建失败, 订单变更数据:{}", JSONObject.toJSONString(orderChangeApplyCreatedDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_CREATE_ERROR); + } + // 返回申请单编号 + return Boolean.TRUE; + } + + @Override + public Boolean submitApprovedApply(TpOrderChangeApplyApprovedSubmitDTO approvedSubmitDTO) { + try { + String applyNo = approvedSubmitDTO.getApplyNo(); + String targetApplyStatus = approvedSubmitDTO.getTargetApplyStatus(); + String originalApplyStatus = approvedSubmitDTO.getOriginalApplyStatus(); + String orderNo = approvedSubmitDTO.getOrderNo(); + String originalOrderNo = approvedSubmitDTO.getOriginalOrderNo(); + String tenantId = approvedSubmitDTO.getTenantId(); + // + LocalDateTime approvedTime = null; + if (ObjectUtil.isNotNull(approvedSubmitDTO.getApprovedTime())) { + approvedTime = LocalDateTimeUtil.of(approvedSubmitDTO.getApprovedTime()); + } + String approvedRemark = approvedSubmitDTO.getApprovedRemark(); + LocalDateTime finalApprovedTime = approvedTime; + transactionTemplate.executeWithoutResult(e -> { + tpOrderChangeApplyRepository.submitApprovedResult(applyNo, originalApplyStatus, targetApplyStatus, orderNo, originalOrderNo,finalApprovedTime,tenantId, approvedRemark); + + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "提交审核结果失败, 请求入参:{}", JSONObject.toJSONString(approvedSubmitDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_APPROVED_UPDATE_ERROR); + } + // 返回审核结果 + return Boolean.TRUE; + } + + @Override + public Boolean submitReduceFscApply(TpOrderChangeApplyRscApplyDTO rscApplyDTO) { + try { + String applyNo = rscApplyDTO.getApplyNo(); + String targetApplyStatus = rscApplyDTO.getTargetApplyStatus(); + String originalApplyStatus = rscApplyDTO.getOriginalApplyStatus(); + String orderNo = rscApplyDTO.getOrderNo(); + String originalOrderNo = rscApplyDTO.getOriginalOrderNo(); + String tenantId = rscApplyDTO.getTenantId(); + // + LocalDateTime rscApplyTime = null; + if (ObjectUtil.isNotNull(rscApplyDTO.getRscApplyTime())) { + rscApplyTime = LocalDateTimeUtil.of(rscApplyDTO.getRscApplyTime()); + } + LocalDateTime finalRscApplyTime = rscApplyTime; + transactionTemplate.executeWithoutResult(e -> { + tpOrderChangeApplyRepository.submitReduceFscApply(applyNo, originalApplyStatus, targetApplyStatus, orderNo, originalOrderNo,finalRscApplyTime,tenantId, rscApplyDTO.getRscApplyReason()); + + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "提交免服务费申请结果失败, 请求入参:{}", JSONObject.toJSONString(rscApplyDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_APPROVED_UPDATE_ERROR); + } + // 返回审核结果 + return Boolean.TRUE; + } + + + private void saveOrderChangeApply(TpOrderChangeApplyCreatedDTO orderChangeApplyCreatedDTO) { + TpOrderChangeApplyDO tpOrderChangeApplyDO = tpOrderChangeApplyConverter.dto2DO(orderChangeApplyCreatedDTO); + String applyNo = tpSequenceClient.generateOrderChangeApplyNo(); + tpOrderChangeApplyDO.setApplyNo(applyNo); + //更新applyNo + if(CollUtil.isNotEmpty(orderChangeApplyCreatedDTO.getOrderChangeItems())){ + orderChangeApplyCreatedDTO.getOrderChangeItems().stream().forEach(changeItemCreatedDTO -> { + changeItemCreatedDTO.setApplyNo(applyNo); + changeItemCreatedDTO.setOriginalOrderNo(orderChangeApplyCreatedDTO.getOriginalOrderNo()); + changeItemCreatedDTO.setOrderNo(orderChangeApplyCreatedDTO.getOrderNo()); + }); + } + tpOrderChangeApplyRepository.save(tpOrderChangeApplyDO); + } + + private void saveOrderChangeApplyItems(List orderChangeItems) { + if(CollUtil.isEmpty(orderChangeItems)){ + return; + } + List itemFactors = new ArrayList<>(); + orderChangeItems.stream().forEach(orderChangeItem->{ + String itemNo = tpSequenceClient.generateOrderChangeItemNo(); + orderChangeItem.setItemNo(itemNo); + if(CollUtil.isEmpty( orderChangeItem.getItemFactors())){ + return; + } + orderChangeItem.getItemFactors().stream().forEach(factorCreatedDTO -> { + factorCreatedDTO.setChangeItemNo(itemNo); + factorCreatedDTO.setApplyNo(orderChangeItem.getApplyNo()); + factorCreatedDTO.setOrderNo(orderChangeItem.getOrderNo()); + factorCreatedDTO.setOriginalOrderNo(orderChangeItem.getOriginalOrderNo()); + } ); + itemFactors.addAll( orderChangeItem.getItemFactors()); + }); + + List orderChangeItemDOS = tpOrderChangeItemConverter.dto2DOList(orderChangeItems); + if(CollUtil.isNotEmpty(orderChangeItemDOS)) { + tpOrderChangeItemRepository.saveBatch(orderChangeItemDOS); + } + List orderChangeItemFactorDOS = tpOrderChangeItemFactorConverter.dto2DOList(itemFactors); + if(CollUtil.isNotEmpty(orderChangeItemFactorDOS)) { + tpOrderChangeItemFactorRepository.saveBatch(orderChangeItemFactorDOS); + } + } + + + @Override + public Boolean pushOrderChangedApplyStatus(TpOrderChangeApplyStatusUpdateDTO statusUpdateDTO) { + try { + String applyNo = statusUpdateDTO.getApplyNo(); + String targetApplyStatus = statusUpdateDTO.getTargetApplyStatus(); + String originalApplyStatus = statusUpdateDTO.getOriginalApplyStatus(); + String orderNo = statusUpdateDTO.getOrderNo(); + String originalOrderNo = statusUpdateDTO.getOriginalOrderNo(); + String tenantId = statusUpdateDTO.getTenantId(); + // + LocalDateTime approvedTime = null; + if (ObjectUtil.isNotNull(statusUpdateDTO.getApprovedTime())) { + approvedTime = LocalDateTimeUtil.of(statusUpdateDTO.getApprovedTime()); + } + String approvedRemark = statusUpdateDTO.getApprovedRemark(); + LocalDateTime finalApprovedTime = approvedTime; + transactionTemplate.executeWithoutResult(e -> { + tpOrderChangeApplyRepository.submitApprovedResult(applyNo, originalApplyStatus, targetApplyStatus, orderNo, originalOrderNo,finalApprovedTime,tenantId, approvedRemark); + + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "申请单状态推进失败, 订单变更数据:{}", JSONObject.toJSONString(statusUpdateDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CHANGE_APPLY_CREATE_ERROR); + } + // 返回申请单编号 + return Boolean.TRUE; + } + + @Override + public TpOrderChangeApply getLatestOrderChangedApplyDetail(TpOrderChangeApplyLatestDetailDTO applyLatestDetailDTO) { + TpOrderChangeApplyDO tpOrderChangeApplyDO = tpOrderChangeApplyRepository.getLatestOrderChangedApplyDetail( + applyLatestDetailDTO.getTenantId(),applyLatestDetailDTO.getOrderNo() + ,applyLatestDetailDTO.getOriginalOrderNo(),applyLatestDetailDTO.getApplyTypes(),applyLatestDetailDTO.getApplyStatuses()); + if(tpOrderChangeApplyDO == null){ + return null; + } + TpOrderChangeApply tpOrderChangeApply = tpOrderChangeApplyConverter.do2Model(tpOrderChangeApplyDO); + if(tpOrderChangeApply == null){ + return null; + } + TpOrderChangeItemListDTO orderChangeItemListDTO = new TpOrderChangeItemListDTO(); + orderChangeItemListDTO.setTenantId(tpOrderChangeApply.getTenantId()); + orderChangeItemListDTO.setApplyNo(tpOrderChangeApply.getApplyNo()); + orderChangeItemListDTO.setOrderNo(tpOrderChangeApply.getOrderNo()); + orderChangeItemListDTO.setOriginalOrderNo(tpOrderChangeApply.getOriginalOrderNo()); + tpOrderChangeApply.setOrderChangeItems(listOrderChangedItems(orderChangeItemListDTO)); + return tpOrderChangeApply; + } + + @Override + public List listOrderChangeApply(TpOrderChangeApplyListDTO applyListDTO) { + List tpOrderChangeApplyDOList = tpOrderChangeApplyRepository.listOrderChangeApply( + applyListDTO.getTenantId(),applyListDTO.getOrderNo(),applyListDTO.getOriginalOrderNo() + ,applyListDTO.getApplyTypes(),applyListDTO.getApplyStatuses()); + if(CollUtil.isEmpty(tpOrderChangeApplyDOList )){ + return Collections.emptyList(); + } + List tpOrderChangeApplyList = tpOrderChangeApplyConverter.do2ModelList(tpOrderChangeApplyDOList); + if(CollUtil.isEmpty(tpOrderChangeApplyList)){ + return Collections.emptyList(); + } + //查询所有变更项列表 + List applyNoList = tpOrderChangeApplyList.stream().map(TpOrderChangeApply::getApplyNo).collect(Collectors.toList()); + Map> orderChangeItemMap = listOrderChangeItemsByApplyNos(applyListDTO.getTenantId(),applyNoList); + tpOrderChangeApplyList.stream().forEach(tpOrderChangeApply -> { + tpOrderChangeApply.setOrderChangeItems( orderChangeItemMap.get(tpOrderChangeApply.getApplyNo())); + }); + return tpOrderChangeApplyList; + } + + @Override + public List batchQueryOrderChangeApplyByOrderNos(TpOrderChangeApplyBatchListDTO applyListDTO) { + List tpOrderChangeApplyDOList = tpOrderChangeApplyRepository.batchQueryOrderChangeApplyByOrderNos( + applyListDTO.getTenantId(),applyListDTO.getOrderNos(),applyListDTO.getOriginalOrderNos() + ,applyListDTO.getApplyTypes(),applyListDTO.getApplyStatuses()); + if(CollUtil.isEmpty(tpOrderChangeApplyDOList )){ + return Collections.emptyList(); + } + //内存过滤找出最近的一条 + List filterOrderChangeApplyDOList = sortOrderChangeApplys(tpOrderChangeApplyDOList); + List tpOrderChangeApplyList = tpOrderChangeApplyConverter.do2ModelList(filterOrderChangeApplyDOList); + if(CollUtil.isEmpty(tpOrderChangeApplyList)){ + return Collections.emptyList(); + } + //查询所有变更项列表 + List applyNoList = tpOrderChangeApplyList.stream().map(TpOrderChangeApply::getApplyNo).collect(Collectors.toList()); + Map> orderChangeItemMap = listOrderChangeItemsByApplyNos(applyListDTO.getTenantId(),applyNoList); + tpOrderChangeApplyList.stream().forEach(tpOrderChangeApply -> { + tpOrderChangeApply.setOrderChangeItems( orderChangeItemMap.get(tpOrderChangeApply.getApplyNo())); + }); + return tpOrderChangeApplyList; + } + + @NotNull + private static List sortOrderChangeApplys(List tpOrderChangeApplyDOList) { + Map> changeApplyDOMap = tpOrderChangeApplyDOList.stream().collect(Collectors.groupingBy(TpOrderChangeApplyDO::getOrderNo)); + Map changeApplyMap = new HashMap<>(); + changeApplyDOMap.entrySet().forEach(changeApplyEntry ->{ + changeApplyEntry.getValue().stream().forEach(tpOrderChangeApplyDO -> { + TpOrderChangeApplyDO sourceOrderChangeApplyDO = changeApplyMap.get(tpOrderChangeApplyDO.getOrderNo()); + if(sourceOrderChangeApplyDO == null){ + changeApplyMap.put(tpOrderChangeApplyDO.getOrderNo(),tpOrderChangeApplyDO); + return; + } + if(tpOrderChangeApplyDO.getApplyTime().isAfter(sourceOrderChangeApplyDO.getApplyTime())){ + changeApplyMap.put(tpOrderChangeApplyDO.getOrderNo(),tpOrderChangeApplyDO); + } + + }); + }); + return changeApplyMap.values().stream().collect(Collectors.toList()); + } + + private Map> listOrderChangeItemsByApplyNos(String tenantId, List applyNoList) { + + List tpOrderChangeItemDOS = tpOrderChangeItemRepository.listItemsByApplyNos(tenantId,applyNoList); + if(CollUtil.isEmpty(tpOrderChangeItemDOS)){ + return Collections.EMPTY_MAP; + } + List tpOrderChangeItems = tpOrderChangeItemConverter.do2ModelList(tpOrderChangeItemDOS); + if(CollUtil.isEmpty(tpOrderChangeItems)){ + return Collections.EMPTY_MAP; + } + //查询变更项因子数据列表 + List itemNoList = tpOrderChangeItems.stream().map(TpOrderChangeItem::getItemNo).collect(Collectors.toList()); + + Map> orderChangeItemFactorMap = listItemFactorsByItemNos(tenantId,itemNoList); + tpOrderChangeItems.stream().forEach(orderChangeItem -> { + orderChangeItem.setItemFactors( orderChangeItemFactorMap.get(orderChangeItem.getItemNo())); + }); + + return tpOrderChangeItems.stream().collect(Collectors.groupingBy(TpOrderChangeItem::getApplyNo)); + } + + private Map> listItemFactorsByItemNos(String tenantId, List itemNoList) { + + if (CollUtil.isEmpty(itemNoList)) { + return Collections.EMPTY_MAP; + } + + List factorDOS = tpOrderChangeItemFactorRepository.listFactorsByItemNos(tenantId, itemNoList); + // 不存在因子,返回空 + if (CollUtil.isEmpty(factorDOS)) { + return Collections.EMPTY_MAP; + } + List factorList = tpOrderChangeItemFactorConverter.do2ModelList(factorDOS); + // 不存在因子,返回空 + if (CollUtil.isEmpty(factorList)) { + return Collections.EMPTY_MAP; + } + return factorList.stream().collect(Collectors.groupingBy(TpOrderChangeItemFactor::getChangeItemNo)); + } + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDispatchDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDispatchDomainServiceImpl.java new file mode 100644 index 0000000..d552875 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDispatchDomainServiceImpl.java @@ -0,0 +1,313 @@ +package com.deepinnet.tptradecore.core.service.order.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderDispatchConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchFleetDO; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderDispatchJoinFleetDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDispatchFleetRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDispatchJoinFleetRepository; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderDispatchRepository; +import com.deepinnet.tptradecore.common.dto.order.*; +import com.deepinnet.tptradecore.common.enums.order.TpOrderDispatchStatusEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderTripTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatch; +import com.deepinnet.tptradecore.core.model.order.TpOrderDispatchFleet; +import com.deepinnet.tptradecore.core.service.order.TpOrderDispatchDomainService; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 订单派单领域服务实现 + *

+ * + * @author xiehuaqiao + * @since 2023/11/12 + */ +@Service +public class TpOrderDispatchDomainServiceImpl implements TpOrderDispatchDomainService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDispatchDomainServiceImpl.class); + + @Resource + private TpOrderDispatchFleetRepository dispatchFleetRepository; + + @Resource + private TpOrderDispatchJoinFleetRepository dispatchJoinFleetRepository; + @Resource + private TpOrderDispatchRepository tpOrderDispatchRepository; + @Resource + private TpOrderDispatchConverter tpOrderDispatchConverter; + + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private TpSequenceClient tpSequenceClient; + + @Override + public Boolean dispatchOrder(TpOrderDispatchCreatedDTO dispatchCreatedDTO) { + LogUtil.info("订单派单执行开始,入参为:{}", JSONObject.toJSONString(dispatchCreatedDTO)); + try { + transactionTemplate.executeWithoutResult(e -> { + + TpOrderDispatchDO tpOrderDispatchDO = tpOrderDispatchConverter.dto2DO(dispatchCreatedDTO); + //判断当前订单是否有订单,如果有,则直接更新,否则就新增 + TpOrderDispatchDO oldDispatchNo = tpOrderDispatchRepository.getDispatchOrder(dispatchCreatedDTO.getTenantId(),dispatchCreatedDTO.getOriginalOrderNo()); + if(oldDispatchNo == null) { + //新增 + String dispatchNo = tpSequenceClient.generateOrderDispatchNo(); + tpOrderDispatchDO.setDispatchNo(dispatchNo); + tpOrderDispatchRepository.save(tpOrderDispatchDO); + }else { + //直接更新 + oldDispatchNo.setDispatchScene(tpOrderDispatchDO.getDispatchScene()); + oldDispatchNo.setDispatchStatus(tpOrderDispatchDO.getDispatchStatus()); + oldDispatchNo.setDispatchTime(tpOrderDispatchDO.getDispatchTime()); + oldDispatchNo.setOperatorNo(tpOrderDispatchDO.getOperatorNo()); + oldDispatchNo.setOperatorName(tpOrderDispatchDO.getOperatorName()); + oldDispatchNo.setTargetOrgNo(tpOrderDispatchDO.getTargetOrgNo()); + oldDispatchNo.setTargetOrgName(tpOrderDispatchDO.getTargetOrgName()); + tpOrderDispatchRepository.updateById(oldDispatchNo); + } + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单派单执行失败,入参:{}", JSONObject.toJSONString(dispatchCreatedDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_CREATE_ERROR); + } + LogUtil.info("订单派单执行结束,入参:{}", JSONObject.toJSONString(dispatchCreatedDTO)); + // 返回派单结果 + return Boolean.TRUE; + } + + @Override + public Boolean callBackOrder(TpOrderDispatchCallBackDTO callBackDTO) { + LogUtil.info("订单召回执行开始,入参:{}", JSONObject.toJSONString(callBackDTO)); + try { + transactionTemplate.executeWithoutResult(e -> { + + TpOrderDispatchDO tpOrderDispatchDO = tpOrderDispatchConverter.dto2DO(callBackDTO); + + //判断当前订单是否有订单,如果有,则直接更新,否则就新增 + TpOrderDispatchDO oldDispatchDo = tpOrderDispatchRepository.getDispatchOrder(callBackDTO.getTenantId(),callBackDTO.getOriginalOrderNo()); + if(oldDispatchDo == null){ + LogUtil.error(LOGGER, "派单记录不存在,入参为 {}", JSONObject.toJSONString(callBackDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_CALLBACK_ERROR); + } + tpOrderDispatchRepository.update(null, Wrappers.lambdaUpdate() + .set(TpOrderDispatchDO::getTargetOrgName,null) + .set(TpOrderDispatchDO::getTargetOrgNo,null) + .set(TpOrderDispatchDO::getDispatchStatus,TpOrderDispatchStatusEnum.ORDER_DISPATCH_CALLBACK_STATUS.getStatus()) + .set(StrUtil.isNotEmpty(tpOrderDispatchDO.getOperatorNo()),TpOrderDispatchDO::getOperatorNo,tpOrderDispatchDO.getOperatorNo()) + .set(StrUtil.isNotEmpty(tpOrderDispatchDO.getOperatorName()),TpOrderDispatchDO::getOperatorName,tpOrderDispatchDO.getOperatorName()) + .set(tpOrderDispatchDO.getCallBackTime()!=null,TpOrderDispatchDO::getCallBackTime,tpOrderDispatchDO.getCallBackTime()) + .set(StrUtil.isNotEmpty(tpOrderDispatchDO.getCallBackReason()),TpOrderDispatchDO::getCallBackReason,tpOrderDispatchDO.getCallBackReason()) + .eq(TpOrderDispatchDO::getId,oldDispatchDo.getId())); + + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单召回执行失败,入参为 {}", JSONObject.toJSONString(callBackDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_CALLBACK_ERROR); + } + LogUtil.info("订单召回执行结束,入参为 {}", JSONObject.toJSONString(callBackDTO)); + // 返回召回结果 + return Boolean.TRUE; + } + + + @Override + public Boolean giveBackOrder(TpOrderDispatchGiveBackDTO giveBackDTO) { + LogUtil.info("订单退回执行开始,入参为 {}", JSONObject.toJSONString(giveBackDTO)); + try { + transactionTemplate.executeWithoutResult(e -> { + + + TpOrderDispatchDO tpOrderDispatchDO = tpOrderDispatchConverter.dto2DO(giveBackDTO); + + //判断当前订单是否有订单,如果有,则直接更新,否则就新增 + TpOrderDispatchDO oldDispatchDo = tpOrderDispatchRepository.getDispatchOrder(giveBackDTO.getTenantId(), giveBackDTO.getOriginalOrderNo()); + if (oldDispatchDo == null) { + LogUtil.error(LOGGER, "派单记录不存在,入参为 {}", JSONObject.toJSONString(giveBackDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_GIVEBACK_ERROR); + } +// //直接更新 +// oldDispatchDo.setTargetOrgName(null); +// oldDispatchDo.setTargetOrgNo(null); +// oldDispatchDo.setDispatchStatus(TpOrderDispatchStatusEnum.ORDER_DISPATCH_GIVEBACK_STATUS.getStatus()); +// oldDispatchDo.setOperatorNo(tpOrderDispatchDO.getOperatorNo()); +// oldDispatchDo.setOperatorName(tpOrderDispatchDO.getOperatorName()); +// oldDispatchDo.setGiveBackTime(tpOrderDispatchDO.getGiveBackTime()); +// oldDispatchDo.setGiveBackReason(tpOrderDispatchDO.getGiveBackReason()); + tpOrderDispatchRepository.update(null, Wrappers.lambdaUpdate() + .set(TpOrderDispatchDO::getTargetOrgName,null) + .set(TpOrderDispatchDO::getTargetOrgNo,null) + .set(TpOrderDispatchDO::getDispatchStatus,TpOrderDispatchStatusEnum.ORDER_DISPATCH_GIVEBACK_STATUS.getStatus()) + .set(StrUtil.isNotEmpty(tpOrderDispatchDO.getOperatorNo()),TpOrderDispatchDO::getOperatorNo,tpOrderDispatchDO.getOperatorNo()) + .set(StrUtil.isNotEmpty(tpOrderDispatchDO.getOperatorName()),TpOrderDispatchDO::getOperatorName,tpOrderDispatchDO.getOperatorName()) + .set(tpOrderDispatchDO.getGiveBackTime()!=null,TpOrderDispatchDO::getGiveBackTime,tpOrderDispatchDO.getGiveBackTime()) + .set(StrUtil.isNotEmpty(tpOrderDispatchDO.getGiveBackReason()),TpOrderDispatchDO::getGiveBackReason,tpOrderDispatchDO.getGiveBackReason()) + .eq(TpOrderDispatchDO::getId,oldDispatchDo.getId())); + + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单退回失败, 入参:{}", JSONObject.toJSONString(giveBackDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_GIVEBACK_ERROR); + } + LogUtil.info("订单退回执行结束,入参为 {}", JSONObject.toJSONString(giveBackDTO)); + // 返回退回结果 + return Boolean.TRUE; + } + + @Override + public Boolean dispatchFleet(TpOrderDispatchFleetCreatedDTO fleetCreatedDTO) { + LogUtil.info("dispatchFleet-domain-service:{}", JSONObject.toJSONString(fleetCreatedDTO)); + //生成订单分配车队表的编码 + String code = tpSequenceClient.generateInnerRelationNo(); + TpOrderDispatchFleetDO tpOrderDispatchFleetDO = tpOrderDispatchConverter.dto2DO(fleetCreatedDTO); + tpOrderDispatchFleetDO.setCode(code); + List goJoinFleetDOList = buildTpOrderDispatchJoinFleetDOList(fleetCreatedDTO.getGoJoinFleets(), code, fleetCreatedDTO.getTenantId()); + List backJoinFleetDOList = buildTpOrderDispatchJoinFleetDOList(fleetCreatedDTO.getBackJoinFleets(), code, fleetCreatedDTO.getTenantId()); + + + TpOrderDispatchFleetDO existDispatchFleet = dispatchFleetRepository.selectFleet(fleetCreatedDTO.getTenantId(), fleetCreatedDTO.getDispatchNo()); + try { + transactionTemplate.executeWithoutResult(e -> { + //1.删除之前的车队信息,只保留最新的 + if (existDispatchFleet != null) { + dispatchFleetRepository.deleteByCode(Lists.newArrayList(existDispatchFleet.getCode())); + //老数据没有code,这里需要兼容 + if (StringUtils.isNotBlank(existDispatchFleet.getCode())) { + dispatchJoinFleetRepository.deleteByDispatchFleetCode(existDispatchFleet.getCode()); + } + } + //2.选择新的车队信息 + dispatchFleetRepository.save(tpOrderDispatchFleetDO); + if (CollectionUtils.isNotEmpty(goJoinFleetDOList)) { + dispatchJoinFleetRepository.saveBatch(goJoinFleetDOList); + } + if (CollectionUtils.isNotEmpty(backJoinFleetDOList)) { + dispatchJoinFleetRepository.saveBatch(backJoinFleetDOList); + } + //3.更新派单状态为已派车 + tpOrderDispatchRepository.updateDispatchStatus(fleetCreatedDTO.getTenantId(),fleetCreatedDTO.getDispatchNo(),fleetCreatedDTO.getOriginalOrderNo(),TpOrderDispatchStatusEnum.ORDER_DISPATCH_ASSIGNED_FLEET_STATUS); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单指派车队创建失败, 订单变更数据:{}", JSONObject.toJSONString(fleetCreatedDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_CREATE_ERROR); + } + // 返回派单编号 + return Boolean.TRUE; + } + + @Override + public TpOrderDispatch getDispatchOrder(String tenantId, String orderDispatchNo, String originalOrderNo,List statuses) { + TpOrderDispatch tpOrderDispatch = null; + try { + //orderDispatchNo可能不传,这时按originalOrderNo查询最新的一条记录 + TpOrderDispatchDO tpOrderDispatchDO = tpOrderDispatchRepository.getDispatchOrder(tenantId, orderDispatchNo, originalOrderNo,statuses); + if (tpOrderDispatchDO != null) { + tpOrderDispatch = tpOrderDispatchConverter.do2Model(tpOrderDispatchDO); + TpOrderDispatchFleetDO tpOrderDispatchFleetDO = dispatchFleetRepository.selectFleet(tenantId,tpOrderDispatchDO.getDispatchNo()); + TpOrderDispatchFleet dispatchFleet = tpOrderDispatchConverter.do2Model(tpOrderDispatchFleetDO); + //查询合营车队关系,兼容之前没有code的情况 + if (dispatchFleet != null && StringUtils.isNotBlank(dispatchFleet.getCode())) { + List joinFleetDOList = dispatchJoinFleetRepository.selectJoinFleets(dispatchFleet.getCode()); + Map> gobackMap = joinFleetDOList.stream().collect(Collectors.groupingBy(fleet -> StringUtils.isNotBlank(fleet.getTripType()) ? fleet.getTripType() : "NULL")); + dispatchFleet.setGoJoinFleets(tpOrderDispatchConverter.do2JoinFleetModelList(gobackMap.get(TpOrderTripTypeEnum.GO.getCode()))); + dispatchFleet.setBackJoinFleets(tpOrderDispatchConverter.do2JoinFleetModelList(gobackMap.get(TpOrderTripTypeEnum.BACK.getCode()))); + tpOrderDispatch.setFleet(dispatchFleet); + } + } + + } catch (Exception e) { + LogUtil.error(LOGGER, "订单派单详情查询失败, 查询条件:{}", tenantId + ":" + orderDispatchNo + ":" + originalOrderNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_DETAIL_ERROR); + } + // 返回详情对象 + return tpOrderDispatch; + } + + @Override + public List listDispatchOrder(String tenantId, String originalOrderNo) { + List tpOrderDispatchs = null; + try { + List tpOrderDispatchDOS = tpOrderDispatchRepository.listDispatchOrderByOrderNo(tenantId, originalOrderNo); + if (CollectionUtil.isNotEmpty(tpOrderDispatchDOS)) { + tpOrderDispatchs = tpOrderDispatchConverter.do2ModelList(tpOrderDispatchDOS); + } + + } catch (Exception e) { + LogUtil.error(LOGGER, "订单派单详情查询失败, 查询条件:{}", tenantId + ":" + originalOrderNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_DETAIL_ERROR); + } + // 返回详情对象 + return tpOrderDispatchs; + } + + @Override + public Boolean pushDispatchStatus(String tenantId, String orderDispatchNo, String originalOrderNo, TpOrderDispatchStatusEnum tpOrderDispatchStatusEnum) { + + try { + transactionTemplate.executeWithoutResult(e -> { + + tpOrderDispatchRepository.updateDispatchStatus(tenantId,orderDispatchNo,originalOrderNo,tpOrderDispatchStatusEnum); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单派单创建失败, 订单变更数据:{}",tenantId + ":" + originalOrderNo + ":" + orderDispatchNo + tpOrderDispatchStatusEnum.getStatus(), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_STATUS_UPDATE_ERROR); + } + // 返回派单编号 + return Boolean.TRUE; + + } + + @Override + public List listOrderDispatchDetail(String tenantId, List originalOrderNoList, List statuses) { + List tpOrderDispatchs = null; + try { + List tpOrderDispatchDOS = tpOrderDispatchRepository.listOrderDispatchDetail(tenantId, originalOrderNoList,statuses); + if (CollectionUtil.isNotEmpty(tpOrderDispatchDOS)) { + tpOrderDispatchs = tpOrderDispatchConverter.do2ModelList(tpOrderDispatchDOS); + } + + } catch (Exception e) { + LogUtil.error(LOGGER, "订单派单列表查询失败, 查询条件:{}", tenantId + ":" + originalOrderNoList, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_DISPATCH_DETAIL_ERROR); + } + // 返回详情对象 + return tpOrderDispatchs; + } + + private List buildTpOrderDispatchJoinFleetDOList(List joinFleets, String orderDispatchFleetCode, String tenantId) { + if (CollectionUtils.isEmpty(joinFleets)) { + return ListUtil.empty(); + } + List joinFleetDOList = tpOrderDispatchConverter.dto2DOList(joinFleets); + if (CollectionUtils.isNotEmpty(joinFleetDOList)) { + joinFleetDOList.forEach(v -> { + v.setOrderDispatchFleetCode(orderDispatchFleetCode); + v.setTenantId(tenantId); + }); + } + return joinFleetDOList; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDomainServiceImpl.java new file mode 100644 index 0000000..b6adfd2 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderDomainServiceImpl.java @@ -0,0 +1,1647 @@ +package com.deepinnet.tptradecore.core.service.order.impl; + +import cn.hutool.core.collection.*; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.*; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.*; +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.order.*; +import com.deepinnet.tptradecore.common.dal.dataobject.order.*; +import com.deepinnet.tptradecore.common.dal.repository.order.*; +import com.deepinnet.tptradecore.common.dto.order.TpOrderCarpoolSearchDTO; +import com.deepinnet.tptradecore.common.enums.order.*; +import com.deepinnet.tptradecore.common.enums.task.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.*; +import com.deepinnet.tptradecore.core.model.order.*; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.deepinnet.tptradecore.core.service.task.TpScheduleTaskService; +import com.github.pagehelper.*; +import com.google.common.collect.*; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.*; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + *

+ * 订单域领域服务实现 + *

+ * + * @author chenjiaju + * @since 2023/7/26 + */ + +@Service +public class TpOrderDomainServiceImpl implements TpOrderDomainService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderDomainServiceImpl.class); + + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private TpOrderConverter tpOrderConverter; + + @Resource + private TpOrderElementConverter tpOrderElementConverter; + + @Resource + private TpOrderPriceRecordConverter tpOrderPriceRecordConverter; + + @Resource + private TpOrderDiscountConverter tpOrderDiscountConverter; + + @Resource + private TpOrderPlacerConverter tpOrderPlacerConverter; + + @Resource + private TpOrderRequirementUserConverter tpOrderRequirementUserConverter; + + @Resource + private TpOrderSubjectItemConverter tpOrderSubjectItemConverter; + + @Resource + private TpOrderPassengerConverter tpOrderPassengerConverter; + + @Resource + private TpOrderItemElementConverter tpOrderItemElementConverter; + + @Resource + private TpOrderTravelTripConverter tpOrderTravelTripConverter; + + @Resource + private TpOrderTripPositionConverter tpOrderTripPositionConverter; + + @Resource + private TpOrderServiceTargetConverter tpOrderServiceTargetConverter; + + @Resource + private TpOrderTripDispatchRecordConverter tpOrderTripDispatchRecordConverter; + + @Resource + private TpOrderRouteConverter tpOrderRouteConverter; + + @Resource + private TpOrderRouteShuttleConverter tpOrderRouteShuttleConverter; + + @Resource + private TpOrderPriceRecordDetailConverter tpOrderPriceRecordDetailConverter; + + @Resource + private TpOrderDepositConverter tpOrderDepositConverter; + + @Resource + private TpOrderChargeRecordConverter tpOrderChargeRecordConverter; + + @Resource + private TpOrderBalanceConverter tpOrderBalanceConverter; + + @Resource + private TpOrderChangePriceRecordConverter tpOrderChangePriceRecordConverter; + + @Resource + private TpOrderInvoiceConverter tpOrderInvoiceConverter; + + @Resource + private TpOrderRepository tpOrderRepository; + + @Resource + private TpOrderElementRepository tpOrderElementRepository; + + @Resource + private TpOrderPriceRecordRepository tpOrderPriceRecordRepository; + + @Resource + private TpOrderDiscountRepository tpOrderDiscountRepository; + + @Resource + private TpOrderPlacerRepository tpOrderPlacerRepository; + + @Resource + private TpOrderRequirementUserRepository tpOrderRequirementUserRepository; + + @Resource + private TpOrderSubjectItemRepository tpOrderSubjectItemRepository; + + @Resource + private TpOrderPassengerRepository tpOrderPassengerRepository; + + @Resource + private TpOrderItemElementRepository tpOrderItemElementRepository; + + @Resource + private TpOrderTravelTripRepository tpOrderTravelTripRepository; + + @Resource + private TpOrderTripPositionRepository tpOrderTripPositionRepository; + + @Resource + private TpOrderServiceTargetRepository tpOrderServiceTargetRepository; + + @Resource + private TpOrderRouteRepository tpOrderRouteRepository; + + @Resource + private TpOrderRouteShuttleRepository tpOrderRouteShuttleRepository; + + @Resource + private TpOrderPriceRecordDetailRepository tpOrderPriceRecordDetailRepository; + + @Resource + private TpOrderDepositRepository tpOrderDepositRepository; + + @Resource + private TpOrderChargeRecordRepository tpOrderChargeRecordRepository; + + @Resource + private TpOrderChangePriceRecordRepository tpOrderChangePriceRecordRepository; + + @Resource + private TpOrderTravelDispatchRecordRepository tpOrderTravelDispatchRecordRepository; + + @Resource + private TpOrderBalanceRepository tpOrderBalanceRepository; + + @Resource + private TpOrderInvoiceRepository tpOrderInvoiceRepository; + + @Resource + private TpScheduleTaskService scheduleTaskService; + + @Resource + private TpOrderCarpoolRecordRepository carpoolRecordRepository; + + @Value("${spring.profiles.active}") + private String env; + + @Value("${spring.application.name}") + private String applicationName; + @Resource + private TpOrderCarpoolRecordConverter tpOrderCarpoolRecordConverter; + + @Resource + private TpOrderRescheduleRecordRepository tpOrderRescheduleRecordRepository; + + @Override + public TpOrder createOrder(TpOrder tpOrder) { + LogUtil.info("createOrder-domain-service:{}", JSONObject.toJSONString(tpOrder)); + try { + // 保存主订单 + saveMainOrder(tpOrder); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单创建失败, 订单数据:{}", JSONObject.toJSONString(tpOrder), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CREATE_ERROR); + } + // 返回编号 + return tpOrder; + } + + @Override + public TpOrder changeOrder(TpOrder tpOrder) { + // 主订单判断 + TpOrder tpOrderDomain = getOrderByTenantIdAndOrderNo(tpOrder.getTenantId(), tpOrder.getOriginalOrderNo(), null); + if (ObjectUtil.notEqual(TpOrderMainEnum.MAIN_ORDER.getMain(), tpOrderDomain.getMain())) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.SUB_ORDER_CAN_NOT_MODIFY); + } + + // 订单状态判断 + if (ObjectUtil.notEqual(tpOrderDomain.getStatus(), TpOrderStatusEnum.ALREADY_PAY.getStatus())) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + // 子订单是否存在 & 状态判断 + List subOrders = tpOrder.getSubOrders(); + if (CollUtil.isNotEmpty(subOrders)) { + subOrders.parallelStream().forEach(subOrder -> { + TpOrder subOrderDomain = getOrderByTenantIdAndOrderNo(subOrder.getTenantId(), subOrder.getOriginalOrderNo(), null); + if (ObjectUtil.notEqual(subOrderDomain.getStatus(), TpOrderStatusEnum.ALREADY_PAY.getStatus())) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + }); + } + + try { + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(tpOrder.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ALREADY_CHANGE); + pushStatus.setTenantId(tpOrder.getTenantId()); + + // 将这批订单设置为已改签的终态 + return transactionTemplate.execute(e -> { + tpOrderRepository.updateStatusByOrderNo(pushStatus); + return createOrder(tpOrder); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "原订单号:{}, 订单改签失败, 改签订单数据:{}", tpOrder.getOriginalOrderNo(), JSONObject.toJSONString(tpOrder), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CHANGE_ERROR); + } + } + + @Override + public TpOrder getOrder(String tenantId, String userNo, String orderNo, List needModules) { + // 订单详细信息 + TpOrder tpOrder = getOrderByTenantIdAndOrderNo(tenantId, orderNo, userNo); + + // 并行查询订单相关模块数据 + parallelSearchOrderModule(tenantId, orderNo, needModules, tpOrder); + + // 查询子订单信息 + // tpOrder.setSubOrders(getSubOrders(tenantId, orderNo, needModules)); + + return tpOrder; + } + + @Override + public TpOrder getOrderByOriginalOrderNo(String tenantId, String userNo, String originalOrderNo, List needModules) { + // 订单详细信息 + TpOrder tpOrder = getOrderByOriginalOrderNo(tenantId, originalOrderNo, userNo); + + // 并行查询订单相关模块数据 + parallelSearchOrderModule(tenantId, tpOrder.getOrderNo(), needModules, tpOrder); + + // 查询子订单信息 + // tpOrder.setSubOrders(getSubOrders(tenantId, orderNo, needModules)); + + return tpOrder; + } + + private TpOrder getOrderByOriginalOrderNo(String tenantId, String originalOrderNo, String userNo) { + return Optional.ofNullable(tpOrderRepository.getOrderByOriginalOrderNo(tenantId, originalOrderNo, userNo)).orElseThrow(() -> new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_FOUND)); + } + + @Override + public CommonPage getOrderList(TpOrderQueryList tpOrderQueryList) { + // 执行查询逻辑 + CommonPage tpOrders = tpOrderRepository.queryOrderList(tpOrderQueryList); + + // 并行查询改为串形查询 + if (CollUtil.isEmpty(tpOrders.getList())) { + return tpOrders; + } + + List orderNos = tpOrders.getList().stream().map(TpOrder::getOrderNo).collect(Collectors.toList()); + + setServiceTargetByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders.getList()); + setRouteInfoByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders.getList()); + setOrderPlacerByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders.getList()); + setOrderTravelTripByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders.getList()); + setOrderSubjectItemByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders.getList()); + // setOrderChargeRecords(tpOrders.getList().stream().map(TpOrder::getOriginalOrderNo).collect(Collectors.toList()), tpOrderQueryList.getTenantId(), tpOrders.getList()); + + return tpOrders; + } + + private void setOrderChargeRecords(List originalOrderNos, String tenantId, List orders) { + List chargeRecords = tpOrderChargeRecordRepository.list(Wrappers.lambdaQuery() + .in(TpOrderChargeRecordDO::getOriginalOrderNo, originalOrderNos) + .eq(TpOrderChargeRecordDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(chargeRecords)) { + return; + } + + List tpOrderChargeRecords = tpOrderChargeRecordConverter.doList2ModelList(chargeRecords); + + Map> chargeRecordsMap = tpOrderChargeRecords.stream().collect(Collectors.groupingBy(TpOrderChargeRecord::getOriginalOrderNo)); + + orders.forEach(order -> { + + List orderChargeRecords = chargeRecordsMap.get(order.getOriginalOrderNo()); + + if (CollUtil.isNotEmpty(orderChargeRecords)) { + order.setOrderChargeRecords(orderChargeRecords); + } + }); + } + + private void setOrderSubjectItemByOrderNos(List orderNos, String tenantId, List orders) { + List subjectItems = tpOrderSubjectItemRepository.list(Wrappers.lambdaQuery() + .in(TpOrderSubjectItemDO::getOrderNo, orderNos) + .eq(TpOrderSubjectItemDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(subjectItems)) { + return; + } + + List tpOrderSubjectItems = tpOrderSubjectItemConverter.doList2ModelList(subjectItems); + + // 标的项要素 + List itemElements = tpOrderItemElementRepository.list(Wrappers.lambdaQuery() + .in(TpOrderItemElementDO::getOrderNo, orderNos) + .eq(TpOrderItemElementDO::getTenantId, tenantId) + .in(TpOrderItemElementDO::getItemNo, tpOrderSubjectItems.stream().map(TpOrderSubjectItem::getItemNo).collect(Collectors.toList()))); + + Map> itemElementMapList = itemElements.stream().collect(Collectors.groupingBy(TpOrderItemElementDO::getItemNo)); + tpOrderSubjectItems.forEach(subjectItem -> { + Map> itemElementByOrderNo = itemElementMapList.get(subjectItem.getItemNo()).stream().collect(Collectors.groupingBy(TpOrderItemElementDO::getOrderNo)); + subjectItem.setOrderItemElements(tpOrderItemElementConverter.doList2ModelList(itemElementByOrderNo.get(subjectItem.getOrderNo()))); + }); + + List passengerNos = tpOrderSubjectItems.stream().map(TpOrderSubjectItem::getPassengerNo).collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(passengerNos)) { + List passengers = tpOrderPassengerRepository.list(Wrappers.lambdaQuery() + .in(TpOrderPassengerDO::getOrderNo, orderNos) + .eq(TpOrderPassengerDO::getTenantId, tenantId) + .in(TpOrderPassengerDO::getPassengerNo, passengerNos)); + + Map passengerMap = passengers.stream().collect(Collectors.toMap(TpOrderPassengerDO::getPassengerNo, Function.identity(), (k1, k2) -> k2)); + + tpOrderSubjectItems.forEach(subjectItem -> { + if (CollUtil.isNotEmpty(passengerMap)) { + subjectItem.setPassenger(tpOrderPassengerConverter.do2Model(passengerMap.get(subjectItem.getPassengerNo()))); + } + }); + } + + Map> orderSubjectMap = tpOrderSubjectItems.stream().collect(Collectors.groupingBy(TpOrderSubjectItem::getOrderNo)); + + orders.forEach(order -> order.setOrderSubjectItem(orderSubjectMap.get(order.getOrderNo()))); + } + + private void setOrderTravelTripByOrderNos(List orderNos, String tenantId, List orders) { + List trips = tpOrderTravelTripRepository.list(Wrappers.lambdaQuery() + .in(TpOrderTravelTripDO::getOrderNo, orderNos) + .eq(TpOrderTravelTripDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(trips)) { + return; + } + + Map> orderTripMap = trips.stream().collect(Collectors.groupingBy(TpOrderTravelTripDO::getOrderNo)); + + List positions = new ArrayList<>(); + positions = tpOrderTripPositionRepository.list(Wrappers.lambdaQuery() + .in(TpOrderTripPositionDO::getOrderNo, orderNos) + .eq(TpOrderTripPositionDO::getTenantId, tenantId)); + + Map> positionsMap = positions.stream().collect(Collectors.groupingBy(TpOrderTripPositionDO::getTripNo)); + + orders.forEach(order -> { + List orderTravelTrips = tpOrderTravelTripConverter.doList2ModelList(orderTripMap.get(order.getOrderNo())); + if (CollUtil.isNotEmpty(orderTravelTrips) && MapUtil.isNotEmpty(positionsMap)) { + orderTravelTrips.forEach(trip -> trip.setTripPositions(tpOrderTripPositionConverter.doList2ModelList(positionsMap.get(trip.getTripNo())))); + } + + order.setOrderTravelTrips(orderTravelTrips); + }); + + } + + private void setOrderPlacerByOrderNos(List orderNos, String tenantId, List orders) { + List orderPlacers = tpOrderPlacerRepository.list(Wrappers.lambdaQuery() + .in(TpOrderPlacerDO::getOrderNo, orderNos) + .eq(TpOrderPlacerDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(orderPlacers)) { + return; + } + + Map orderPlacerMap = orderPlacers.stream().collect(Collectors.toMap(TpOrderPlacerDO::getOrderNo, Function.identity())); + + orders.forEach(order -> order.setOrderPlacer(tpOrderPlacerConverter.do2Model(orderPlacerMap.get(order.getOrderNo())))); + } + + private void setRouteInfoByOrderNos(List orderNos, String tenantId, List orders) { + List routes = tpOrderRouteRepository.list(Wrappers.lambdaQuery() + .in(TpOrderRouteDO::getOrderNo, orderNos) + .eq(TpOrderRouteDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(routes)) { + return; + } + + Map> tpOrderRoutesMap = routes.stream().collect(Collectors.groupingBy(TpOrderRouteDO::getOrderNo)); + + // 查询线路对应的班次信息 + List shuttles = new ArrayList<>(); + shuttles = tpOrderRouteShuttleRepository.list(Wrappers.lambdaQuery() + .in(TpOrderRouteShuttleDO::getOrderNo, orderNos) + .in(TpOrderRouteShuttleDO::getRouteNo, routes.stream().map(TpOrderRouteDO::getRouteNo).collect(Collectors.toList())) + .eq(TpOrderRouteShuttleDO::getTenantId, tenantId)); + + Map> shuttleListMap = shuttles.stream().collect(Collectors.groupingBy(TpOrderRouteShuttleDO::getRouteNo)); + + orders.forEach(order -> { + List tpOrderRouteDOs = tpOrderRoutesMap.get(order.getOrderNo()); + if (CollUtil.isEmpty(tpOrderRouteDOs)) { + return; + } + + List orderRoutes = tpOrderRouteConverter.doList2ModelList(tpOrderRouteDOs); + + orderRoutes.forEach(route -> { + List routeShuttles = shuttleListMap.get(route.getRouteNo()); + + if (CollUtil.isNotEmpty(routeShuttles)) { + Map> shuttleMap = routeShuttles.stream().collect(Collectors.groupingBy(TpOrderRouteShuttleDO::getOrderNo)); + + route.setTpOrderRouteShuttle(tpOrderRouteShuttleConverter.doList2ModelList(shuttleMap.get(route.getOrderNo()))); + } + }); + + + order.setTpOrderRoutes(orderRoutes); + }); + } + + private void setServiceTargetByOrderNos(List orderNos, String tenantId, List orders) { + List serviceTargets = tpOrderServiceTargetRepository.list(Wrappers.lambdaQuery() + .in(TpOrderServiceTargetDO::getOrderNo, orderNos) + .eq(TpOrderServiceTargetDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(serviceTargets)) { + return; + } + Map targetDoMap = serviceTargets.stream().collect(Collectors.toMap(TpOrderServiceTargetDO::getOrderNo, Function.identity())); + + orders.forEach(order -> order.setTpOrderTargetService(tpOrderServiceTargetConverter.do2Model(targetDoMap.get(order.getOrderNo())))); + } + + @Override + public void closeOrderExpireTime(String tenantId, String orderNo) { + try { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(orderNo); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TIMEOUT); + pushStatus.setTenantId(tenantId); + + changeOrderStatus(pushStatus); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单:{}, 关单失败", orderNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CLOSE_ERROR); + } + } + + @Override + public void cancelCharterBus(String tenantId, String orderNo) { + try { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(orderNo); + pushStatus.setStatusEnum(TpOrderStatusEnum.ALL_REFUND); + pushStatus.setTenantId(tenantId); + + // 取消订单(根据产品配置,如果需要审核,则审核后状态变更为全部退款,如不需审核,则退款成功后改为全部退款) + changeOrderStatus(pushStatus); + } catch (Exception e) { + LogUtil.error(LOGGER, "定制包车取消订单:{}, 失败", orderNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CANCEL_CHARTER_BUS_ERROR); + } + } + + @Override + public void payOrder(String tenantId, String orderNo, Long payTime) { + try { + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(orderNo); + pushStatus.setStatusEnum(TpOrderStatusEnum.ALREADY_PAY); + pushStatus.setPayTime(payTime); + pushStatus.setTenantId(tenantId); + + // 支付订单 + changeOrderStatus(pushStatus); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单:{}, 支付失败", orderNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_PAY_ERROR); + } + } + + @Override + public void submitApprovalOrder(String tenantId, String orderNo) { +// // 查询订单当前审核状态 +// TpOrder order = getOrderByTenantIdAndOrderNo(tenantId, orderNo, null); +// if (ObjectUtil.isNotNull(order.getApproveStatus()) && ObjectUtil.equals(order.getApproveStatus(), TpAuditStatusEnum.NEED_APPROVAL.getStatus())) { +// LogUtil.error(LOGGER, "当前订单:{}, 存在审核中订单,请勿重复提交", order.getOrderNo()); +// throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_SUBMIT_REPEAT_APPROVAL_ERROR); +// } +// +// try { +// transactionTemplate.executeWithoutResult(e -> { +// //更改订单审核状态 + // tpOrderRepository.changeApprovalOrder(tenantId, orderNo, TpAuditStatusEnum.NEED_APPROVAL.getStatus()); +// }); +// } catch (Exception e) { +// LogUtil.error(LOGGER, "订单:{}, 提交审核失败", orderNo, e); +// throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_PAY_ERROR); +// } + } + + @Override + public void approvalOrder(String tenantId, String orderNo, Integer approveStatus) { + // 查询订单当前审核状态 +// TpOrder order = getOrderByTenantIdAndOrderNo(tenantId, orderNo, null); +// if (ObjectUtil.isNull(order.getApproveStatus())) { +// LogUtil.error(LOGGER, "订单审核异常, 当前订单:{}, 未提交审核", order.getOrderNo(), order.getApproveStatus()); +// throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_SUBMIT_REPEAT_APPROVAL_ERROR); +// } +// +// if (ObjectUtil.notEqual(order.getApproveStatus(), TpAuditStatusEnum.NEED_APPROVAL.getStatus())) { +// LogUtil.error(LOGGER, "订单审核异常, 当前订单:{}, 审核状态为:{}", order.getOrderNo(), order.getApproveStatus()); +// throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_SUBMIT_REPEAT_APPROVAL_ERROR); +// } +// +// try { +// transactionTemplate.executeWithoutResult(e -> { +// // 更改订单审核状态 +// tpOrderRepository.changeApprovalOrder(tenantId, orderNo, approveStatus); +// }); +// } catch (Exception e) { +// LogUtil.error(LOGGER, "订单:{}, 审核失败", orderNo, e); +// throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_PAY_ERROR); +// } + } + + @Override + public boolean queryRouteHasUnverifiedOrder(String routeNo, String tenantId) { + return tpOrderRepository.queryUnverifiedOrderByRouteNo(routeNo, tenantId) == 0 ? Boolean.FALSE : Boolean.TRUE; + } + + @Override + public boolean queryRouteScheduleHasUnverifiedOrder(String routeNo, String shuttleNo, String tenantId) { + return tpOrderRepository.queryUnverifiedOrderByRouteNoAndShuttleNo(routeNo, shuttleNo, tenantId) == 0 ? Boolean.FALSE : Boolean.TRUE; + } + + /** + *

+ * 修改订单状态 + *

+ *

+ * *订单状态不可回退 + *

+ * + * @param tpOrderPushStatus 状态推进 + */ + @Override + public void changeOrderStatus(TpOrderPushStatus tpOrderPushStatus) { + + try { + // 修改订单状态 (包含该订单的子订单) + tpOrderRepository.updateStatusByOrderNo(tpOrderPushStatus); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单:{}, 状态修改失败", tpOrderPushStatus.getOrderNo(), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_MODIFY_ERROR); + } + } + + @Override + public void updateOrderPayInfoByOrderNo(String orderNo, String payType, String userNo, String tenantId) { + // 查询订单编号是否存在 + TpOrder order = getOrder(tenantId, userNo, orderNo, null); + + // 更新订单支付信息 + tpOrderRepository.update(Wrappers.lambdaUpdate() + .eq(TpOrderDO::getOrderNo, orderNo) + .eq(TpOrderDO::getTenantId, tenantId) + .eq(TpOrderDO::getUserNo, userNo) + .set(TpOrderDO::getPayType, payType)); + } + + @Override + public void createDepositOrder(TpDepositOrder depositOrder) { + // 查询订单编号是否存在 + getOrderByOriginalOrderNo(depositOrder.getTenantId(), null, depositOrder.getOrderNo(), null); + + TpOrderDepositDO depositDO = tpOrderDepositRepository.getOne(Wrappers.lambdaQuery() + .eq(TpOrderDepositDO::getOrderNo, depositOrder.getOrderNo()) + .eq(TpOrderDepositDO::getTenantId, depositOrder.getTenantId())); + + // 已创建支付订单,无需重新创建,直接返回≈ + if (ObjectUtil.isNotNull(depositDO)) { + return; + } + + // 创建订金订单 + tpOrderDepositRepository.save(tpOrderDepositConverter.model2DO(depositOrder)); + } + + @Override + public void updateDepositPaidOrderByOriginalOrderNo(String originalOrderNo, String tenantId) { + tpOrderDepositRepository.updateDepositPaidStatusByOrderNo(originalOrderNo, tenantId); + } + + @Override + public void updateChargeRecord(TpOrderChargeRecord tpOrderChargeRecord) { + Optional.ofNullable(tpOrderChargeRecordRepository.getOne(Wrappers.lambdaQuery() + .eq(TpOrderChargeRecordDO::getOrderNo, tpOrderChargeRecord.getOrderNo()) + .eq(TpOrderChargeRecordDO::getBizType, tpOrderChargeRecord.getBizType()))) + .orElseThrow(() -> new TpTradeCoreException(TpTradeCoreErrorCode.CHARGE_RECORD_NOT_EXIST_ERROR)); + + // 更新费用记录 + tpOrderChargeRecordRepository.update(Wrappers.lambdaUpdate() + .eq(TpOrderChargeRecordDO::getOrderNo, tpOrderChargeRecord.getOrderNo()) + .eq(TpOrderChargeRecordDO::getBizType, tpOrderChargeRecord.getBizType()) + // 改价金额更新 + .set(StrUtil.isNotEmpty(tpOrderChargeRecord.getChangeAmount()), TpOrderChargeRecordDO::getChangeAmount, tpOrderChargeRecord.getChangeAmount()) + // 支付金额更新 + .set(StrUtil.isNotEmpty(tpOrderChargeRecord.getPayAmount()), TpOrderChargeRecordDO::getPayAmount, tpOrderChargeRecord.getPayAmount()) + // 手续费更新 + .set(StrUtil.isNotEmpty(tpOrderChargeRecord.getServiceCharge()), TpOrderChargeRecordDO::getServiceCharge, tpOrderChargeRecord.getServiceCharge()) + .set(StrUtil.isNotEmpty(tpOrderChargeRecord.getServicePercentage()), TpOrderChargeRecordDO::getServicePercentage, tpOrderChargeRecord.getServicePercentage()) + // 单笔操作是否免手续费 + .set(ObjectUtil.isNotNull(tpOrderChargeRecord.getFreeServiceCharge()), TpOrderChargeRecordDO::getFreeServiceCharge, tpOrderChargeRecord.getFreeServiceCharge())); + } + + @Override + public List getChargeRecords(String orderNo, String originalNo, String tenantId) { + return tpOrderChargeRecordRepository.getChargeRecordsByOrderNo(orderNo, originalNo, tenantId); + } + + @Override + public void updateOrderChargeByOrderNo(TpOrderUpdateCharge tpOrderUpdateCharge) { + Assert.isTrue(StrUtil.isNotEmpty(tpOrderUpdateCharge.getServiceCharge()) || StrUtil.isNotEmpty(tpOrderUpdateCharge.getChangeAmount()) || StrUtil.isNotEmpty(tpOrderUpdateCharge.getPayMode()), "serviceCharge、changeAmount、payMode is null"); + + tpOrderRepository.update(Wrappers.lambdaUpdate() + .eq(TpOrderDO::getOrderNo, tpOrderUpdateCharge.getOrderNo()) + .eq(TpOrderDO::getTenantId, tpOrderUpdateCharge.getTenantId()) + .set(StrUtil.isNotEmpty(tpOrderUpdateCharge.getPayAmount()), TpOrderDO::getPayAmount, tpOrderUpdateCharge.getPayAmount()) + .set(StrUtil.isNotEmpty(tpOrderUpdateCharge.getServiceCharge()), TpOrderDO::getServiceCharge, tpOrderUpdateCharge.getServiceCharge()) + .set(StrUtil.isNotEmpty(tpOrderUpdateCharge.getChangeAmount()), TpOrderDO::getPayableAmount, tpOrderUpdateCharge.getChangeAmount()) + .set(StrUtil.isNotEmpty(tpOrderUpdateCharge.getChangeAmount()), TpOrderDO::getDiscountAmount, tpOrderUpdateCharge.getChangeAmount()) + .set(StrUtil.isNotEmpty(tpOrderUpdateCharge.getPayMode()), TpOrderDO::getPayMode, tpOrderUpdateCharge.getPayMode())); + } + + @Override + public void saveChangePriceRecord(TpOrderChangePriceRecord tpOrderChangePriceRecord) { + tpOrderChangePriceRecordRepository.save(tpOrderChangePriceRecordConverter.model2DO(tpOrderChangePriceRecord)); + } + + @Override + public void updateOrderNotVisible(String tenantId, String orderNo) { + tpOrderRepository.update(Wrappers.lambdaUpdate() + .eq(TpOrderDO::getOrderNo, orderNo) + .eq(TpOrderDO::getTenantId, tenantId) + .set(TpOrderDO::getVisible, 0)); + } + + @Override + public List getCharterBusOrderListToC(TpOrderQueryList tpOrderQueryList) { + // 执行查询逻辑 + List tpOrders = tpOrderRepository.queryCharterBusOrderListToC(tpOrderQueryList); + + if (CollUtil.isEmpty(tpOrders)) { + return Collections.emptyList(); + } + + List orderNos = tpOrders.stream().map(TpOrder::getOrderNo).collect(Collectors.toList()); + + setOrderPlacerByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderRequirementUserByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderTravelTripByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderSubjectItemByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderInvoiceByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderChargeRecords(tpOrders.stream().map(TpOrder::getOriginalOrderNo).collect(Collectors.toList()), tpOrderQueryList.getTenantId(), tpOrders); + return tpOrders; + } + + @Override + public List getCharterBusOrderListToB(TpOrderQueryList tpOrderQueryList) { + // 执行查询逻辑 + List tpOrders = tpOrderRepository.queryCharterBusOrderListToB(tpOrderQueryList); + if (CollUtil.isEmpty(tpOrders)) { + return Collections.emptyList(); + } + + List orderNos = tpOrders.stream().map(TpOrder::getOrderNo).collect(Collectors.toList()); + + setOrderPlacerByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderRequirementUserByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderTravelTripByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderSubjectItemByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderInvoiceByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderChargeRecords(tpOrders.stream().map(TpOrder::getOriginalOrderNo).collect(Collectors.toList()), tpOrderQueryList.getTenantId(), tpOrders); + return tpOrders; + } + + @Override + public void removeChargeRecord(String orderNo, String bizType, String tenantId) { + Optional.ofNullable(tpOrderChargeRecordRepository.getOne(Wrappers.lambdaQuery() + .eq(TpOrderChargeRecordDO::getOrderNo, orderNo) + .eq(TpOrderChargeRecordDO::getBizType, bizType) + .eq(TpOrderChargeRecordDO::getTenantId, tenantId))) + .orElseThrow(() -> new TpTradeCoreException(TpTradeCoreErrorCode.CHARGE_RECORD_NOT_EXIST_ERROR)); + + tpOrderChargeRecordRepository.remove(Wrappers.lambdaQuery() + .eq(TpOrderChargeRecordDO::getOrderNo, orderNo) + .eq(TpOrderChargeRecordDO::getBizType, bizType) + .eq(TpOrderChargeRecordDO::getTenantId, tenantId)); + } + + @Override + public void createTravelDispatchRecords(List tpOrderTravelDispatchRecords) { + tpOrderTravelDispatchRecordRepository.saveBatch(tpOrderTripDispatchRecordConverter.modelList2DoList(tpOrderTravelDispatchRecords)); + } + + @Override + public void updateBalancePaidOrderByOrderNo(String originalOrderNo, String tenantId) { + tpOrderBalanceRepository.updateBalancePaidStatusByOrderNo(originalOrderNo, tenantId); + } + + @Override + public void createBalanceOrder(TpBalanceOrder tpBalanceOrder) { + // 查询订单编号是否存在 + getOrderByOriginalOrderNo(tpBalanceOrder.getTenantId(), null, tpBalanceOrder.getOrderNo(), null); + + TpOrderBalanceDO balanceDO = tpOrderBalanceRepository.getOne(Wrappers.lambdaQuery() + .eq(TpOrderBalanceDO::getOrderNo, tpBalanceOrder.getOrderNo()) + .eq(TpOrderBalanceDO::getTenantId, tpBalanceOrder.getTenantId())); + + // 已创建尾款订单,无需重新创建,直接返回 + if (ObjectUtil.isNotNull(balanceDO)) { + return; + } + + // 创建尾款单 + tpOrderBalanceRepository.save(tpOrderBalanceConverter.model2DO(tpBalanceOrder)); + } + + @Override + public void updateTravelTripStatus(TpOrderTravelTrip updateTrip) { + tpOrderTravelTripRepository.update(tpOrderTravelTripConverter.model2DO(updateTrip), Wrappers.lambdaQuery() + .eq(TpOrderTravelTripDO::getOrderNo, updateTrip.getOrderNo()) + .eq(TpOrderTravelTripDO::getTripNo, updateTrip.getTripNo()) + .eq(TpOrderTravelTripDO::getTenantId, updateTrip.getTenantId())); + } + + @Override + public void saveInvoice(List tpOrderInvoices) { + transactionTemplate.executeWithoutResult(e -> { + // 保存发票 + tpOrderInvoiceRepository.saveBatch(tpOrderInvoiceConverter.modelList2DOList(tpOrderInvoices)); + + // 更改订单发票上传状态 + tpOrderRepository.update(Wrappers.lambdaUpdate() + .in(TpOrderDO::getOrderNo, tpOrderInvoices.stream().map(TpOrderInvoice::getOrderNo).collect(Collectors.toList())) + .eq(TpOrderDO::getTenantId, tpOrderInvoices.get(0).getTenantId()) + .set(TpOrderDO::getInvoiceStatus, 1)); + }); + + } + + @Override + public TpOrderInvoice getInvoiceByInvoiceNo(String invoiceNo) { + TpOrderInvoiceDO invoiceDO = tpOrderInvoiceRepository.getOne(Wrappers.lambdaQuery() + .eq(TpOrderInvoiceDO::getInvoiceNo, invoiceNo)); + return tpOrderInvoiceConverter.do2Model(invoiceDO); + } + + @Override + public Long queryOrderCount(String originalOrderNo, String tenantId) { + return tpOrderRepository.count(Wrappers.lambdaQuery() + .eq(TpOrderDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderDO::getTenantId, tenantId) + ); + } + + @Override + public List batchQueryListByOriginalOrderNos(TpBatchQueryOrder batchQueryOrder) { + // 执行查询逻辑 + return tpOrderRepository.batchQueryOrderList(batchQueryOrder); + } + + @Override + public List queryOrderBatchList(long startCount, int batch) { + return tpOrderRepository.queryOrderBatchList(startCount, batch); + } + + @Override + public List queryOrderBatchList(List orders, String tenantId) { + List tpOrders = tpOrderRepository.batchQueryOrderList(TpBatchQueryOrder.builder() + .originalOrderNos(orders).tenantId(tenantId).build()); + + if (CollUtil.isEmpty(tpOrders)) { + return new ArrayList<>(); + } + + // setRouteInfoByOrderNos(orders, "1648", tpOrders); + List invoices = queryInvoiceByOrderNos(tpOrders, tenantId); + + if (CollUtil.isNotEmpty(invoices)) { + Map orderInvoiceMap = invoices.stream().collect(Collectors.toMap(TpOrderInvoice::getOrderNo, Function.identity())); + tpOrders.forEach(order -> order.setTpOrderInvoice(orderInvoiceMap.get(order.getOrderNo()))); + } + + return tpOrders; + } + + @Override + public List queryCarpoolOrderList(List orderNos, String tenantId) { + LambdaQueryWrapper wrappers = Wrappers.lambdaQuery() + .in(TpOrderDO::getOrderNo, orderNos) + .eq(TpOrderDO::getTenantId, tenantId); + List tpOrders = tpOrderConverter.doList2ModelList(tpOrderRepository.list(wrappers)); + if (CollectionUtils.isEmpty(tpOrders)){ + return null; + } + + setOrderSubjectItemByOrderNos(orderNos, tenantId, tpOrders); + return tpOrders; + } + + private List queryInvoiceByOrderNos(List orderList, String tenantId) { + return tpOrderInvoiceConverter.doList2ModelList(tpOrderInvoiceRepository.list(Wrappers.lambdaQuery() + .in(TpOrderInvoiceDO::getOrderNo, orderList.stream().map(TpOrder::getOrderNo).collect(Collectors.toList())) + .eq(TpOrderInvoiceDO::getTenantId, tenantId))); + } + + @Override + public List queryOrdersByOriginalOrderNo(String tenantId, String originalOrderNo) { + List orders = tpOrderRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderDO::getTenantId, tenantId) + .ne(TpOrderDO::getStatus, TpOrderStatusEnum.INIT.getStatus()) + .eq(TpOrderDO::getVisible, BooleanUtil.toInt(Boolean.TRUE))); + return tpOrderConverter.doList2ModelList(orders); + } + + @Override + public List queryTripNosByOrderNos(String tenantId, List orderNos) { + List travelTrips = tpOrderTravelTripRepository.list(Wrappers.lambdaQuery() + .in(TpOrderTravelTripDO::getOrderNo, orderNos) + .eq(TpOrderTravelTripDO::getTenantId, tenantId)); + return tpOrderTravelTripConverter.doList2ModelList(travelTrips); + } + + @Override + public void updateOperationReduceServiceCharge(TpOrderChargeRecord tpOrderChargeRecord) { + tpOrderChargeRecordRepository.update(Wrappers.lambdaUpdate() + .eq(TpOrderChargeRecordDO::getOriginalOrderNo, tpOrderChargeRecord.getOriginalOrderNo()) + .in(TpOrderChargeRecordDO::getBizType, ListUtil.toList(TpAuditOrChangePriceBizTypeEnum.CHANGE_ORDER.getBizType(), TpAuditOrChangePriceBizTypeEnum.CANCEL_ORDER.getBizType())) + .set(TpOrderChargeRecordDO::getFreeServiceCharge, BooleanUtil.toInt(Boolean.TRUE))); + } + + @Override + public Long queryCustomBusOrderCount(TpOrderQueryList tpOrderQueryList) { + return tpOrderRepository.queryCustomBusOrderCount(tpOrderQueryList); + } + + @Override + public CommonPage getPadCarpoolOrderList(TpOrderQueryList tpOrderQueryList) { + Page page = PageHelper.startPage(tpOrderQueryList.getPageNum(), tpOrderQueryList.getPageSize()); + // 查询pad端预约的列表数据 + List tpOrders = tpOrderRepository.queryPadCarpoolOrderList(tpOrderQueryList); + + if (CollUtil.isEmpty(tpOrders)) { + return buildOrderPageList(page, Lists.newArrayList()); + } + + List orderNos = tpOrders.stream().map(TpOrder::getOrderNo).collect(Collectors.toList()); + + setServiceTargetByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setRouteInfoByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderPlacerByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderTravelTripByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + setOrderSubjectItemByOrderNos(orderNos, tpOrderQueryList.getTenantId(), tpOrders); + + return buildOrderPageList(page, tpOrders); + } + + @Override + public void batchUpdateCarpoolOrderStatus(List orderNos, Integer targetStatus, String tenantId) { + tpOrderRepository.update(Wrappers.lambdaUpdate() + .set(TpOrderDO::getStatus, targetStatus) + .in(TpOrderDO::getOrderNo, orderNos) + .eq(TpOrderDO::getStatus, TpOrderStatusEnum.ORDER_CARPOOLING.getStatus()) + .eq(TpOrderDO::getTenantId, tenantId)); + } + + @Override + public List querySwipeCardNoExist(String swipeCardNo, String tenantId) { + return tpOrderCarpoolRecordConverter.doList2ModelList(carpoolRecordRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderCarpoolRecordDO::getCardBizNo, swipeCardNo) + .eq(TpOrderCarpoolRecordDO::getTenantId, tenantId))); + } + + @Override + public List queryCarpoolOrderListBySaleUnitCode(TpOrderCarpoolSearchDTO searchDTO) { + List carpoolRecordDOList = carpoolRecordRepository.list(Wrappers.lambdaQuery() + .in(CollUtil.isNotEmpty(searchDTO.getSubjectItemNos()), TpOrderCarpoolRecordDO::getSubjectItemNo, searchDTO.getSubjectItemNos()) + .eq(StrUtil.isNotEmpty(searchDTO.getShuttleCode()), TpOrderCarpoolRecordDO::getShuttleCode, searchDTO.getShuttleCode()) + .eq(ObjectUtil.isNotNull(searchDTO.getDepartureTime()), TpOrderCarpoolRecordDO::getDepartureTime, searchDTO.getDepartureTime()) + .eq(TpOrderCarpoolRecordDO::getTenantId, searchDTO.getTenantId())); + + if (CollUtil.isEmpty(carpoolRecordDOList)) { + return null; + } + + List tpOrders = tpOrderConverter.doList2ModelList(tpOrderRepository.list(Wrappers.lambdaQuery() + .in(TpOrderDO::getOrderNo, carpoolRecordDOList.stream().map(TpOrderCarpoolRecordDO::getOrderNo).collect(Collectors.toList())) + .eq(TpOrderDO::getType, TpOrderTypeEnum.CARPOOL_ORDER.getType()) + .eq(TpOrderDO::getStatus, TpOrderStatusEnum.ORDER_CARPOOLING.getStatus()))); + + if (CollUtil.isEmpty(tpOrders)) { + return null; + } + + List orderNos = tpOrders.stream().map(TpOrder::getOrderNo).collect(Collectors.toList()); + + setRouteInfoByOrderNos(orderNos, searchDTO.getTenantId(), tpOrders); + setOrderPlacerByOrderNos(orderNos, searchDTO.getTenantId(), tpOrders); + setOrderTravelTripByOrderNos(orderNos, searchDTO.getTenantId(), tpOrders); + setOrderCarpoolRecordByOrderNos(tpOrders, carpoolRecordDOList); + + return tpOrders; + } + + @Override + public void saveRescheduleRecords(List records) { + List recordDOS = Lists.newArrayList(); + records.forEach(record -> record.getOrderRescheduleInfos().forEach(info -> { + TpOrderRescheduleRecordDO tpOrderRescheduleRecordDO = new TpOrderRescheduleRecordDO(); + tpOrderRescheduleRecordDO.setRescheduleNo(record.getRescheduleNo()); + tpOrderRescheduleRecordDO.setOrderNo(record.getOrderNo()); + tpOrderRescheduleRecordDO.setOriginalOrderNo(record.getOriginalOrderNo()); + tpOrderRescheduleRecordDO.setSubjectItemNo(info.getSubjectItemNo()); + tpOrderRescheduleRecordDO.setShuttleNo(info.getShuttleNo()); + tpOrderRescheduleRecordDO.setShuttleDate(info.getShuttleDate()); + tpOrderRescheduleRecordDO.setShuttleTime(info.getShuttleTime()); + tpOrderRescheduleRecordDO.setRescheduleSubjectItemNo(info.getRescheduleSubjectItemNo()); + tpOrderRescheduleRecordDO.setRescheduleShuttleNo(info.getRescheduleShuttleNo()); + tpOrderRescheduleRecordDO.setRescheduleShuttleDate(info.getRescheduleShuttleDate()); + tpOrderRescheduleRecordDO.setRescheduleShuttleTime(info.getRescheduleShuttleTime()); + tpOrderRescheduleRecordDO.setPassengerNo(info.getPassengerNo()); + tpOrderRescheduleRecordDO.setPassengerName(info.getPassengerName()); + tpOrderRescheduleRecordDO.setPassengerCount(info.getPassengerCount()); + tpOrderRescheduleRecordDO.setRescheduleTime(record.getRescheduleTime()); + tpOrderRescheduleRecordDO.setTripType(record.getTripType()); + tpOrderRescheduleRecordDO.setTenantId(record.getTenantId()); + + recordDOS.add(tpOrderRescheduleRecordDO); + })); + tpOrderRescheduleRecordRepository.saveBatch(recordDOS); + } + + private void setOrderInvoiceByOrderNos(List orderNos, String tenantId, List orders) { + List orderInvoices = tpOrderInvoiceRepository.list(Wrappers.lambdaQuery() + .in(TpOrderInvoiceDO::getOrderNo, orderNos) + .eq(TpOrderInvoiceDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(orderInvoices)) { + return; + } + + Map orderInvoiceMap = orderInvoices.stream().collect(Collectors.toMap(TpOrderInvoiceDO::getOrderNo, Function.identity())); + + orders.forEach(order -> order.setTpOrderInvoice(tpOrderInvoiceConverter.do2Model(orderInvoiceMap.get(order.getOrderNo())))); + } + + private void setOrderRequirementUserByOrderNos(List orderNos, String tenantId, List orders) { + List orderRequirementUsers = tpOrderRequirementUserRepository.list(Wrappers.lambdaQuery() + .in(TpOrderRequirementUserDO::getOrderNo, orderNos) + .eq(TpOrderRequirementUserDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(orderRequirementUsers)) { + return; + } + + Map orderRequirementUserMap = orderRequirementUsers.stream().collect(Collectors.toMap(TpOrderRequirementUserDO::getOrderNo, Function.identity())); + + orders.forEach(order -> order.setOrderRequirementUser(tpOrderRequirementUserConverter.do2Model(orderRequirementUserMap.get(order.getOrderNo())))); + } + + private void setOrderCarpoolRecordByOrderNos(List tpOrders, List carpoolRecordDOList) { + Map> carpoolRecordsMap = carpoolRecordDOList.stream().collect(Collectors.groupingBy(TpOrderCarpoolRecordDO::getOrderNo)); + tpOrders.forEach(order -> { + List carpoolRecords = tpOrderCarpoolRecordConverter.doList2ModelList(carpoolRecordsMap.get(order.getOrderNo())); + + if (CollUtil.isNotEmpty(carpoolRecords)) { + order.setOrderCarpoolRecords(carpoolRecords); + } + }); + } + + private CommonPage buildOrderPageList(Page page, List orderList) { + CommonPage result = new CommonPage<>(); + result.setPageNum(page.getPageNum()); + result.setPageSize(page.getPageSize()); + result.setTotal(page.getTotal()); + result.setList(orderList); + return result; + } + + private List getSubOrders(String tenantId, String orderNo, List needModules) { + List subTpOrders = tpOrderRepository.queryOrderListByParentNo(tenantId, orderNo); + if (CollUtil.isEmpty(subTpOrders)) { + return null; + } + subTpOrders.parallelStream().forEach(subOrder -> { + // 并行查询子订单相关模块数据 + parallelSearchOrderModule(tenantId, subOrder.getOrderNo(), needModules, subOrder); + }); + + return subTpOrders; + } + + private void parallelSearchOrderModule(String tenantId, String orderNo, List needModules, TpOrder tpOrder) { + if (CollUtil.isEmpty(needModules)) { + return; + } + + needModules.forEach(module -> { + switch (module) { + case ORDER_PRICE_RECORD: + tpOrder.setOrderPriceRecord(getOrderPriceRecords(tenantId, orderNo)); + break; + case ORDER_ELEMENT_INFO: + tpOrder.setOrderElements(getOrderElements(tenantId, orderNo)); + break; + case ORDER_PLACER: + tpOrder.setOrderPlacer(getOrderPlacer(tenantId, orderNo)); + break; + case ORDER_REQUIREMENT_USER: + tpOrder.setOrderRequirementUser(getOrderRequirementUser(tenantId, orderNo)); + break; + case ORDER_SUBJECT_ITEM: + tpOrder.setOrderSubjectItem(getOrderSubjectItems(tenantId, orderNo)); + break; + case ORDER_TRAVEL_TRIP: + tpOrder.setOrderTravelTrips(getOrderTravelTrip(tenantId, orderNo)); + break; + case ORDER_SERVICE_TARGET: + tpOrder.setTpOrderTargetService(getTpOrderServiceTarget(tenantId, orderNo)); + break; + case ORDER_ROUTE_INFO: + tpOrder.setTpOrderRoutes(getOrderRoutes(tenantId, orderNo)); + break; + case CHARGE_RECORD: + tpOrder.setOrderChargeRecords(getChargeRecords(null, tpOrder.getOriginalOrderNo(), tenantId)); + break; + case TRAVEL_DISPATCH_RECORD: + tpOrder.setDispatchRecords(getDispatchRecords(orderNo, tenantId)); + break; + case ORDER_INVOICE: + tpOrder.setTpOrderInvoice(getOrderInvoiceByOrderNo(tpOrder.getOrderNo(), tenantId)); + break; + case RESCHEDULE_RECORD: + if (ObjectUtil.equals(tpOrder.getType(), TpOrderTypeEnum.CUSTOMIZED_ORDER.getType())) { + tpOrder.setRescheduleRecords(getRescheduleRecords(tpOrder.getOriginalOrderNo(), tenantId)); + } + break; + } + }); + } + + private List getRescheduleRecords(String originalOrderNo, String tenantId) { + List rescheduleRecords = tpOrderRescheduleRecordRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderRescheduleRecordDO::getOriginalOrderNo, originalOrderNo) + .eq(TpOrderRescheduleRecordDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(rescheduleRecords)) { + return Lists.newArrayList(); + } + + List records = Lists.newArrayList(); + + Map> rescheduleRecordMapList = rescheduleRecords.stream().collect(Collectors.groupingBy(TpOrderRescheduleRecordDO::getRescheduleNo)); + + rescheduleRecordMapList.forEach((k, v) -> { + TpOrderRescheduleRecordDO tpOrderRescheduleRecordDO = v.get(0); + TpOrderRescheduleRecord tpOrderRescheduleRecord = new TpOrderRescheduleRecord(); + tpOrderRescheduleRecord.setRescheduleNo(tpOrderRescheduleRecordDO.getRescheduleNo()); + tpOrderRescheduleRecord.setOrderNo(tpOrderRescheduleRecordDO.getOrderNo()); + tpOrderRescheduleRecord.setOriginalOrderNo(tpOrderRescheduleRecordDO.getOriginalOrderNo()); + tpOrderRescheduleRecord.setTripType(tpOrderRescheduleRecordDO.getTripType()); + tpOrderRescheduleRecord.setRescheduleTime(tpOrderRescheduleRecordDO.getRescheduleTime()); + tpOrderRescheduleRecord.setTenantId(tpOrderRescheduleRecordDO.getTenantId()); + + List infos = Lists.newArrayList(); + v.forEach(rescheduleInfo -> { + TpOrderRescheduleInfo tpOrderRescheduleInfo = TpOrderRescheduleInfo.builder() + .rescheduleNo(rescheduleInfo.getRescheduleNo()) + .subjectItemNo(rescheduleInfo.getSubjectItemNo()) + .rescheduleSubjectItemNo(rescheduleInfo.getRescheduleSubjectItemNo()) + .shuttleDate(rescheduleInfo.getShuttleDate()) + .shuttleTime(rescheduleInfo.getShuttleTime()) + .rescheduleShuttleDate(rescheduleInfo.getRescheduleShuttleDate()) + .rescheduleShuttleTime(rescheduleInfo.getRescheduleShuttleTime()) + .passengerNo(rescheduleInfo.getPassengerNo()) + .passengerName(rescheduleInfo.getPassengerName()) + .passengerCount(rescheduleInfo.getPassengerCount()).build(); + + infos.add(tpOrderRescheduleInfo); + }); + + tpOrderRescheduleRecord.setOrderRescheduleInfos(infos); + + records.add(tpOrderRescheduleRecord); + }); + + records.sort(Comparator.comparing(TpOrderRescheduleRecord::getRescheduleTime).reversed()); + + return records; + } + + private TpOrderInvoice getOrderInvoiceByOrderNo(String orderNo, String tenantId) { + TpOrderInvoiceDO invoiceDO = tpOrderInvoiceRepository.getOne(Wrappers.lambdaQuery() + .eq(TpOrderInvoiceDO::getOrderNo, orderNo) + .eq(TpOrderInvoiceDO::getTenantId, tenantId)); + return tpOrderInvoiceConverter.do2Model(invoiceDO); + } + + private List getDispatchRecords(String orderNo, String tenantId) { + List dispatchRecordDOList = tpOrderTravelDispatchRecordRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderTravelDispatchRecordDO::getOrderNo, orderNo) + .eq(TpOrderTravelDispatchRecordDO::getTenantId, tenantId)); + return tpOrderTripDispatchRecordConverter.doList2ModelList(dispatchRecordDOList); + } + + private List getOrderRoutes(String tenantId, String orderNo) { + List tpOrderRoutes = tpOrderRouteRepository.queryRouteByOrderNo(tenantId, orderNo); + if (CollUtil.isEmpty(tpOrderRoutes)) { + return null; + } + + List shuttles = tpOrderRouteShuttleRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderRouteShuttleDO::getOrderNo, orderNo) + .in(TpOrderRouteShuttleDO::getRouteNo, tpOrderRoutes.stream().map(TpOrderRoute::getRouteNo).collect(Collectors.toList())) + .eq(TpOrderRouteShuttleDO::getTenantId, tenantId)); + + if (CollUtil.isEmpty(shuttles)) { + return tpOrderRoutes; + } + + Map> routeShuttleMap = shuttles.stream().collect(Collectors.groupingBy(TpOrderRouteShuttleDO::getRouteNo)); + + tpOrderRoutes.forEach(tpOrderRoute -> tpOrderRoute.setTpOrderRouteShuttle(tpOrderRouteShuttleConverter.doList2ModelList(routeShuttleMap.get(tpOrderRoute.getRouteNo())))); + return tpOrderRoutes; + } + + private TpOrderTargetService getTpOrderServiceTarget(String tenantId, String orderNo) { + return tpOrderServiceTargetRepository.queryServiceTargetByOrderNo(tenantId, orderNo); + } + + private List getOrderTravelTrip(String tenantId, String orderNo) { + List travelTrips = tpOrderTravelTripRepository.queryOrderTravelTripsByOrderNo(tenantId, orderNo); + if (CollUtil.isEmpty(travelTrips)) { + return null; + } + + List positions = new ArrayList<>(); + positions = tpOrderTripPositionRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderTripPositionDO::getOrderNo, orderNo) + .in(TpOrderTripPositionDO::getTripNo, travelTrips.stream().map(TpOrderTravelTrip::getTripNo).collect(Collectors.toList())) + .eq(TpOrderTripPositionDO::getTenantId, tenantId)); + + Map> positionsMap = positions.stream().collect(Collectors.groupingBy(TpOrderTripPositionDO::getTripNo)); + + travelTrips.forEach(trip -> trip.setTripPositions(tpOrderTripPositionConverter.doList2ModelList(positionsMap.get(trip.getTripNo())))); + +// travelTrips.parallelStream().forEach(travelTrip -> { +// List orderTripPositions = tpOrderTripPositionRepository.queryPositionsByOrderNoAndTripNo(tenantId, orderNo, travelTrip.getTripNo()); +// travelTrip.setTripPositions(orderTripPositions); +// }); + return travelTrips; + } + + private List getOrderSubjectItems(String tenantId, String orderNo) { + // 查询订单标的信息 + List tpOrderSubjectItems = tpOrderSubjectItemRepository.queryOrderSubjectItemsByOrderNo(tenantId, orderNo); + + if (CollUtil.isEmpty(tpOrderSubjectItems)) { + return null; + } + + // 标的项要素 + List itemElements = tpOrderItemElementRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderItemElementDO::getOrderNo, orderNo) + .eq(TpOrderItemElementDO::getTenantId, tenantId) + .in(TpOrderItemElementDO::getItemNo, tpOrderSubjectItems.stream().map(TpOrderSubjectItem::getItemNo).collect(Collectors.toList()))); + + Map> itemElementMapList = itemElements.stream().collect(Collectors.groupingBy(TpOrderItemElementDO::getItemNo)); + tpOrderSubjectItems.forEach(subjectItem -> subjectItem.setOrderItemElements(tpOrderItemElementConverter.doList2ModelList(itemElementMapList.get(subjectItem.getItemNo())))); + + List passengerNos = tpOrderSubjectItems.stream().map(TpOrderSubjectItem::getPassengerNo).collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(passengerNos)) { + List passengers = tpOrderPassengerRepository.list(Wrappers.lambdaQuery() + .eq(TpOrderPassengerDO::getOrderNo, orderNo) + .eq(TpOrderPassengerDO::getTenantId, tenantId) + .in(TpOrderPassengerDO::getPassengerNo, passengerNos)); + + Map passengerMap = passengers.stream().collect(Collectors.toMap(TpOrderPassengerDO::getPassengerNo, Function.identity(), (k1, k2) -> k2)); + + tpOrderSubjectItems.forEach(subjectItem -> { + if (CollUtil.isNotEmpty(passengerMap)) { + subjectItem.setPassenger(tpOrderPassengerConverter.do2Model(passengerMap.get(subjectItem.getPassengerNo()))); + } + }); + } + + // 查询乘客信息机对应标的项信息 + // getPassengerAndOrderItemElements(tenantId, orderNo, tpOrderSubjectItems); + + return tpOrderSubjectItems; + } + + private void getPassengerAndOrderItemElements(String tenantId, String orderNo, List orderSubjectItems) { + orderSubjectItems.parallelStream().forEach(orderSubjectItem -> { + // 查询乘客信息 + orderSubjectItem.setPassenger(getTpOrderPassengerDO(tenantId, orderNo, orderSubjectItem.getPassengerNo())); + + // 查询标的项要素 + orderSubjectItem.setOrderItemElements(getOrderItemElements(tenantId, orderNo, orderSubjectItem.getItemNo())); + }); + } + + private List getOrderItemElements(String tenantId, String orderNo, String itemNo) { + return tpOrderItemElementRepository.queryOrderItemElementsByOrderNoAndItemNo(tenantId, orderNo, itemNo); + } + + private TpOrderPassenger getTpOrderPassengerDO(String tenantId, String orderNo, String passengerNo) { + // 查询乘客 + return tpOrderPassengerRepository.queryOrderPassengersByOrderNoAndPassengerNo(tenantId, orderNo, passengerNo); + } + + private TpOrderRequirementUser getOrderRequirementUser(String tenantId, String orderNo) { + // 用车需求方查询 + return tpOrderRequirementUserRepository.queryRequirementUserByOrderNo(tenantId, orderNo); + } + + private TpOrderPlacer getOrderPlacer(String tenantId, String orderNo) { + // 下单人查询 + return tpOrderPlacerRepository.queryPlacerByOrderNo(tenantId, orderNo); + } + + private List getOrderElements(String tenantId, String orderNo) { + // 查询下单要素 + List tpOrderElements = tpOrderElementRepository.queryOrderElementsByOrderNo(tenantId, orderNo); + + if (CollUtil.isEmpty(tpOrderElements)) { + return null; + } + + return tpOrderElements; + } + + private List getOrderPriceRecords(String tenantId, String orderNo) { + List tpOrderPriceRecords = tpOrderPriceRecordRepository.queryPriceRecordsByOrderNo(tenantId, orderNo); + + // 不存在计价记录,返回空 + if (CollUtil.isEmpty(tpOrderPriceRecords)) { + return null; + } + + // 批量查询 + Map> pricingNoRecordDetailsMap = tpOrderPriceRecordDetailRepository.list(Wrappers.lambdaQuery() + .in(TpOrderPriceRecordDetailDO::getOrderNo, orderNo) + .eq(TpOrderPriceRecordDetailDO::getTenantId, tenantId)).stream().collect(Collectors.groupingBy(TpOrderPriceRecordDetailDO::getPricingNo)); + + // 并行查询改为串行 + tpOrderPriceRecords.forEach(priceRecord -> { + priceRecord.setOrderPriceDetailRecordDetails(tpOrderPriceRecordDetailConverter.doList2ModelList(pricingNoRecordDetailsMap.get(priceRecord.getPricingNo()))); + }); + +// // 查询计价记录与优惠信息 +// tpOrderPriceRecords.parallelStream().forEach(priceRecord -> { +// // 查询计价记录详情 +// List tpOrderPriceRecordDetails = tpOrderPriceRecordDetailRepository.queryPriceRecordDetailsByOrderNoAndPricingNo(tenantId, orderNo, priceRecord.getPricingNo()); +// priceRecord.setOrderPriceDetailRecordDetails(tpOrderPriceRecordDetails); +// // 查询优惠信息 +// List orderDiscounts = tpOrderDiscountRepository.queryOrderDiscountsByOrderNoAndPriceNo(tenantId, orderNo, priceRecord.getPricingNo()); +// priceRecord.setOrderDiscounts(orderDiscounts); +// }); + + return tpOrderPriceRecords; + } + + private TpOrder getOrderByTenantIdAndOrderNo(String tenantId, String orderNo, String userNo) { + return Optional.ofNullable(tpOrderRepository.queryByTenantIdAndOrderNo(tenantId, orderNo, userNo)).orElseThrow(() -> new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_FOUND)); + } + + private void saveOrderTravelTripAndPositions(List orderTravelTrips) { + if (CollUtil.isNotEmpty(orderTravelTrips)) { + // 保存行程单 + tpOrderTravelTripRepository.saveBatch(tpOrderTravelTripConverter.modelList2DOList(orderTravelTrips)); + + List positions = Lists.newArrayList(); + + orderTravelTrips.forEach(orderTravelTrip -> { + // 位置信息 + positions.addAll(orderTravelTrip.getTripPositions()); + }); + + saveOrderTripPosition(positions); + } + } + + private void saveOrderTripPosition(List tripPositions) { + if (CollUtil.isNotEmpty(tripPositions)) { + tpOrderTripPositionRepository.saveBatch(tpOrderTripPositionConverter.modelList2DOList(tripPositions)); + } + } + + private void saveOrderSubjectItemElementsAndPassenger(List orderSubjectItems) { + if (CollUtil.isNotEmpty(orderSubjectItems)) { + Set passengerKeySet = Sets.newHashSet(); + List passengerList = Lists.newArrayList(); + + List itemElements = Lists.newArrayList(); + + // 标的项 + tpOrderSubjectItemRepository.saveBatch(tpOrderSubjectItemConverter.modelList2DOList(orderSubjectItems)); + orderSubjectItems.forEach(orderSubjectItem -> { + // 标的项组成要素 + itemElements.addAll(orderSubjectItem.getOrderItemElements()); + // 乘客信息 + if (ObjectUtil.isNotNull(orderSubjectItem.getPassenger()) && !passengerKeySet.contains(orderSubjectItem.getPassengerNo())) { + String passengerKey = orderSubjectItem.getPassengerNo() + "-" + orderSubjectItem.getTripType(); + if (!passengerKeySet.contains(passengerKey)) { + passengerList.add(orderSubjectItem.getPassenger()); + passengerKeySet.add(passengerKey); + } + } + }); + + // 保存标的项组成要素 + saveOrderItemElement(itemElements); + + // 保存乘客信息 + saveOrderPassenger(passengerList); + } + } + + private void saveOrderPassenger(List passengerList) { + if (CollUtil.isNotEmpty(passengerList)) { + tpOrderPassengerRepository.saveBatch(tpOrderPassengerConverter.modelList2DOList(passengerList)); + } + } + + private void saveOrderItemElement(List orderItemElements) { + if (CollUtil.isNotEmpty(orderItemElements)) { + // 针对组成要素去重 + tpOrderItemElementRepository.saveBatch(tpOrderItemElementConverter.modelList2DOList(orderItemElements.stream().distinct().collect(Collectors.toList()))); + } + } + + private void saveOrderRequirementUser(TpOrderRequirementUser tpOrderRequirementUser) { + if (ObjectUtil.isNotNull(tpOrderRequirementUser)) { + tpOrderRequirementUserRepository.save(tpOrderRequirementUserConverter.model2DO(tpOrderRequirementUser)); + } + } + + private void saveOrderPlacer(TpOrderPlacer tpOrderPlacer) { + if (ObjectUtil.isNotNull(tpOrderPlacer)) { + tpOrderPlacerRepository.save(tpOrderPlacerConverter.model2DO(tpOrderPlacer)); + } + } + + private void saveOrderPriceRecordAndOrderDiscount(List priceRecords) { + if (CollUtil.isNotEmpty(priceRecords)) { + // 报价记录 + tpOrderPriceRecordRepository.saveBatch(tpOrderPriceRecordConverter.modelList2DOList(priceRecords)); + + List discounts = Lists.newArrayList(); + List priceRecordDetails = Lists.newArrayList(); + priceRecords.forEach(priceRecord -> { + // 优惠信息 + discounts.addAll(CollUtil.isEmpty(priceRecord.getOrderDiscounts()) ? Lists.newArrayList() : priceRecord.getOrderDiscounts()); + // 计价记录详情 + priceRecordDetails.addAll(priceRecord.getOrderPriceDetailRecordDetails()); + }); + + // 批量保存优惠信息 + saveOrderDiscount(discounts); + + // 批量保存计价记录详情 + saveOrderPriceRecordDetail(priceRecordDetails); + } + } + + private void saveOrderPriceRecordDetail(List orderPriceDetailRecordDetails) { + if (CollUtil.isNotEmpty(orderPriceDetailRecordDetails)) { + tpOrderPriceRecordDetailRepository.saveBatch(tpOrderPriceRecordDetailConverter.modelList2DOList(orderPriceDetailRecordDetails)); + } + } + + private void saveOrderDiscount(List orderDiscounts) { + if (CollUtil.isNotEmpty(orderDiscounts)) { + tpOrderDiscountRepository.saveBatch(tpOrderDiscountConverter.modelList2DOList(orderDiscounts)); + } + } + + private void saveOrderElements(List orderElements) { + if (CollUtil.isNotEmpty(orderElements)) { + tpOrderElementRepository.saveBatch(tpOrderElementConverter.modelList2DOList(orderElements)); + } + } + + private void saveOrder(TpOrder tpOrder) { + tpOrderRepository.save(tpOrderConverter.model2DO(tpOrder)); + } + + private void saveServiceTarget(TpOrderTargetService tpOrderTargetService) { + if (ObjectUtil.isNotNull(tpOrderTargetService)) { + tpOrderServiceTargetRepository.save(tpOrderServiceTargetConverter.model2DO(tpOrderTargetService)); + } + } + + private void saveSubOrders(List subOrders) { + if (CollUtil.isNotEmpty(subOrders)) { + // 保存订单数据 + subOrders.forEach(this::saveOrderData); + } + } + + private void saveMainOrder(TpOrder tpOrder) { + saveOrderData(tpOrder); + } + + private void saveOrderData(TpOrder tpOrder) { + // 保存订单数据 + saveOrder(tpOrder); + + // 保存线路信息 + saveRouteAndSchedule(tpOrder.getTpOrderRoutes()); + + // 保存下单要素 + saveOrderElements(tpOrder.getOrderElements()); + + // 保存 报价记录 & 保存优惠信息 + saveOrderPriceRecordAndOrderDiscount(tpOrder.getOrderPriceRecord()); + + // 保存下单人 + saveOrderPlacer(tpOrder.getOrderPlacer()); + + // 保存用车需求方 + saveOrderRequirementUser(tpOrder.getOrderRequirementUser()); + + // 保存 标的项 & 标的项组成要素 & 乘客信息 + saveOrderSubjectItemElementsAndPassenger(tpOrder.getOrderSubjectItem()); + + // 保存 行程单 & 位置信息 + saveOrderTravelTripAndPositions(tpOrder.getOrderTravelTrips()); + + // 保存服务方 + saveServiceTarget(tpOrder.getTpOrderTargetService()); + + // 保存费用信息 + saveChargeRecords(tpOrder.getOrderChargeRecords()); + + // 包车业务需要保存行程结束的定时任务,第一次创建订单的时候才去保存定时任务 + if (Objects.equals(tpOrder.getType(), TpOrderTypeEnum.PACKING_ORDER.getType()) && StringUtils.isBlank(tpOrder.getParentOrderNo())) { + saveOrderScheduleTask(tpOrder); + } + + // 保存拼车订单与标的项的关联记录 + saveOrderCarpoolRecords(tpOrder.getOrderCarpoolRecords()); + } + + private void saveOrderCarpoolRecords(List orderCarpoolRecords) { + if (CollUtil.isNotEmpty(orderCarpoolRecords)) { + carpoolRecordRepository.saveBatch(tpOrderCarpoolRecordConverter.modelList2DoList(orderCarpoolRecords)); + } + } + + private void saveOrderScheduleTask(TpOrder tpOrder) { + List scheduleTasks = new ArrayList<>(); + + // 构建行程结束的定时任务 + TpScheduleTask tripEndScheduleTask = buildTripEndScheduleTask(tpOrder); + scheduleTasks.add(tripEndScheduleTask); + + // 订单状态由已派车改为行程中 + TpScheduleTask orderTripStartTask = buildTripStartScheduleTask(tpOrder); + scheduleTasks.add(orderTripStartTask); + + if (StringUtils.equals(tpOrder.getPayMode(), TpOrderPayModeEnum.PAY_BEFORE.getPayMode()) + || StringUtils.equals(tpOrder.getPayMode(), TpOrderPayModeEnum.PAY_BEFORE_ALL.getPayMode())) { + // 定金超时未支付任务 + TpScheduleTask payTimeoutScheduleTask = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.ORDER_PAY_BEFORE_PAY_TIMEOUT.getType(), + tpOrder.getExpireTime(), tpOrder.getTenantId()); + scheduleTasks.add(payTimeoutScheduleTask); + } + + // 审核单超时任务 + TpScheduleTask auditTimeOutScheduleTask = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.AUDIT_TIME_OUT.getType(), + tpOrder.getExpireTime(), tpOrder.getTenantId()); + scheduleTasks.add(auditTimeOutScheduleTask); + + long tripStartTime; + long tripEndTime; + if (tpOrder.getOrderTravelTrips().size() == 1) { + TpOrderTravelTrip tpOrderTravelTrip = tpOrder.getOrderTravelTrips().get(0); + tripStartTime = Convert.toLong(tpOrderTravelTrip.getStartTime()); + tripEndTime = Convert.toLong(tpOrderTravelTrip.getEndTime()); + } else { + List goTrip = tpOrder.getOrderTravelTrips().stream().filter(trip -> StrUtil.equals(trip.getTripType(), TpOrderTripTypeEnum.GO.getCode())).collect(Collectors.toList()); + tripStartTime = Convert.toLong(goTrip.get(0).getStartTime()); + List backTrip = tpOrder.getOrderTravelTrips().stream().filter(trip -> StrUtil.equals(trip.getTripType(), TpOrderTripTypeEnum.BACK.getCode())).collect(Collectors.toList()); + tripEndTime = Convert.toLong(backTrip.get(0).getEndTime()); + } + + // 行程开始前两个小时 1000 * 60 * 60 * 2 + TpScheduleTask tripStartBeforeTwoHours = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.TRIP_START_BEFORE_TWO_HOURS.getType(), + (tripStartTime - 7200000), tpOrder.getTenantId()); + scheduleTasks.add(tripStartBeforeTwoHours); + + // 行程开始前半个小时 1000 * 60 * 30 + TpScheduleTask tripStartBeforeHalfHour = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.TRIP_START_BEFORE_HALF_HOURS.getType(), + (tripStartTime - 1800000), tpOrder.getTenantId()); + scheduleTasks.add(tripStartBeforeHalfHour); + + // 行程结束后三天 1000 * 60 * 60 * 24 * 3 + TpScheduleTask tripEndAfterThreeDays = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.TRIP_END_AFTER_THREE_DAYS.getType(), + (tripEndTime + 259200000), tpOrder.getTenantId()); + scheduleTasks.add(tripEndAfterThreeDays); + + // 关单前两个小时 1000 * 60 * 60 * 2 + TpScheduleTask closeOrderBeforeTwoHours = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.CLOSE_ORDER_BEFORE_TWO_HOURS.getType(), + (tpOrder.getExpireTime() - 7200000), tpOrder.getTenantId()); + scheduleTasks.add(closeOrderBeforeTwoHours); + + // 关单前半个小时 1000 * 60 * 30 +// TpScheduleTask closeOrderBeforeHalfHour = buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.CLOSE_ORDER_BEFORE_HALF_HOURS.getType(), +// (tpOrder.getExpireTime() - 1800000), tpOrder.getTenantId()); +// scheduleTasks.add(closeOrderBeforeHalfHour); + + scheduleTaskService.batchInsertScheduleTasks(scheduleTasks); + } + + private TpScheduleTask buildTripEndScheduleTask(TpOrder tpOrder) { + List orderTravelTrips = tpOrder.getOrderTravelTrips(); + + // 行程结束时间 + long endTime; + if (orderTravelTrips.size() == 1) { + endTime = Long.parseLong(orderTravelTrips.get(0).getEndTime()); + } else { + List backTrips = orderTravelTrips.stream() + .filter(trip -> StringUtils.equals(trip.getTripType(), TpOrderTripTypeEnum.BACK.getCode())) + .collect(Collectors.toList()); + TpOrderTravelTrip backTrip = backTrips.get(0); + endTime = Long.parseLong(backTrip.getEndTime()); + } + + return buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.CHARTER_BUS_TRIP_END.getType(), endTime, tpOrder.getTenantId()); + } + + private TpScheduleTask buildTripStartScheduleTask(TpOrder tpOrder) { + List orderTravelTrips = tpOrder.getOrderTravelTrips(); + + // 行程结束时间 + long startTime; + if (orderTravelTrips.size() == 1) { + startTime = Long.parseLong(orderTravelTrips.get(0).getStartTime()); + } else { + List backTrips = orderTravelTrips.stream() + .filter(trip -> StringUtils.equals(trip.getTripType(), TpOrderTripTypeEnum.GO.getCode())) + .collect(Collectors.toList()); + TpOrderTravelTrip backTrip = backTrips.get(0); + startTime = Long.parseLong(backTrip.getStartTime()); + } + + return buildScheduleTask(tpOrder.getOriginalOrderNo(), TpScheduleTaskTypeEnum.ORDER_TRIP_START.getType(), startTime, tpOrder.getTenantId()); + } + + @Override + public void saveChargeRecords(List orderChargeRecords) { + if (CollUtil.isNotEmpty(orderChargeRecords)) { + tpOrderChargeRecordRepository.saveBatch(tpOrderChargeRecordConverter.modelList2DOList(orderChargeRecords)); + } + } + + private void saveRouteAndSchedule(List tpOrderRoutes) { + if (CollUtil.isNotEmpty(tpOrderRoutes)) { + tpOrderRouteRepository.saveBatch(tpOrderRouteConverter.modelList2DOList(tpOrderRoutes)); + List shuttles = Lists.newArrayList(); + tpOrderRoutes.forEach(tpOrderRoute -> { + if (ObjectUtil.isNotNull(tpOrderRoute.getTpOrderRouteShuttle())) { + shuttles.addAll(tpOrderRoute.getTpOrderRouteShuttle()); + } + }); + saveSchedule(shuttles); + } + } + + private void saveSchedule(List shuttles) { + if (CollUtil.isNotEmpty(shuttles)) { + tpOrderRouteShuttleRepository.saveBatch(tpOrderRouteShuttleConverter.modelList2DOList(shuttles)); + } + } + + private TpScheduleTask buildScheduleTask(String originalOrderNo, String taskType, Long triggerTime, String tenantId) { + TpScheduleTask scheduleTask = new TpScheduleTask(); + scheduleTask.setBizNo(originalOrderNo); + scheduleTask.setTaskType(taskType); + scheduleTask.setStatus(TpScheduleTaskStatusEnum.WAIT_EXECUTE.getStatus()); + scheduleTask.setSource(applicationName); + scheduleTask.setEnv(env); + scheduleTask.setTriggerTime(triggerTime); + scheduleTask.setRetryCount(0); + scheduleTask.setTenantId(tenantId); + return scheduleTask; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderReceivedDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderReceivedDomainServiceImpl.java new file mode 100644 index 0000000..2094392 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpOrderReceivedDomainServiceImpl.java @@ -0,0 +1,118 @@ +package com.deepinnet.tptradecore.core.service.order.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson2.JSONObject; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.order.TpOrderReceivedConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpOrderReceivedDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpOrderReceivedRepository; +import com.deepinnet.tptradecore.common.dto.order.TpOrderReceivedCreatedDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderReceivedStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpSequenceClient; +import com.deepinnet.tptradecore.core.model.order.TpOrderReceived; +import com.deepinnet.tptradecore.core.service.order.TpOrderReceivedDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 订单接单领域服务实现 + *

+ * + * @author xiehuaqiao + * @since 2023/11/12 + */ +@Service +public class TpOrderReceivedDomainServiceImpl implements TpOrderReceivedDomainService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpOrderReceivedDomainServiceImpl.class); + + @Resource + private TpOrderReceivedRepository tpOrderReceivedRepository; + + @Resource + private TpOrderReceivedConverter tpOrderReceivedConverter; + + @Resource + private TransactionTemplate transactionTemplate; + + @Resource + private TpSequenceClient tpSequenceClient; + + @Override + public Boolean receiveOrder(TpOrderReceivedCreatedDTO tpOrderReceivedCreatedDTO) { + LogUtil.info("receiveOrder-domain-service:{}", JSONObject.toJSONString(tpOrderReceivedCreatedDTO)); + try { + transactionTemplate.executeWithoutResult(e -> { + + TpOrderReceivedDO tpOrderReceivedDO = tpOrderReceivedConverter.dto2DO(tpOrderReceivedCreatedDTO); + String receivedNo = tpSequenceClient.generateOrderReceivedNo(); + tpOrderReceivedDO.setReceivedNo(receivedNo); + tpOrderReceivedRepository.save(tpOrderReceivedDO); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单接单创建失败, 订单变更数据:{}", JSONObject.toJSONString(tpOrderReceivedCreatedDTO), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_RECEIVED_CREATE_ERROR); + } + // 返回派单编号 + return Boolean.TRUE; + } + + @Override + public TpOrderReceived getReceivedOrder(String tenantId, String receivedNo, String bizObjNo, String bizObjType) { + TpOrderReceived tpOrderReceived = null; + try { + TpOrderReceivedDO tpOrderReceivedDO = tpOrderReceivedRepository.getOrderReceived(tenantId, receivedNo, bizObjNo,bizObjType); + if (tpOrderReceivedDO != null) { + tpOrderReceived = tpOrderReceivedConverter.do2Model(tpOrderReceivedDO); + } + + } catch (Exception e) { + LogUtil.error(LOGGER, "订单接单详情查询失败, 查询条件:{}", tenantId + ":" + receivedNo + ":" + bizObjNo +":" +bizObjType , e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_RECEIVED_DETAIL_ERROR); + } + // 返回详情对象 + return tpOrderReceived; + } + + @Override + public List listReceivedOrder(String tenantId, String bizObjNo, String bizObjType) { + List tpOrderReceiveds = null; + try { + List tpOrderReceivedDOS = tpOrderReceivedRepository.listOrderReceivedByOrderNo(tenantId, bizObjNo,bizObjType); + if (CollectionUtil.isNotEmpty(tpOrderReceivedDOS)) { + tpOrderReceiveds = tpOrderReceivedConverter.do2ModelList(tpOrderReceivedDOS); + } + + } catch (Exception e) { + LogUtil.error(LOGGER, "订单接单详情查询失败, 查询条件:{}", tenantId + ":" + bizObjNo +":" +bizObjType, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_RECEIVED_DETAIL_ERROR); + } + // 返回详情对象 + return tpOrderReceiveds; + } + + @Override + public Boolean changeReceivedOrderStatus(String tenantId, String receivedNo, String bizObjNo, String bizObjType, TpOrderReceivedStatusEnum tpOrderReceivedStatusEnum) { + + try { + transactionTemplate.executeWithoutResult(e -> { + + tpOrderReceivedRepository.updateReceivedStatus(tenantId,receivedNo,bizObjNo,bizObjType,tpOrderReceivedStatusEnum); + }); + } catch (Exception e) { + LogUtil.error(LOGGER, "订单接单状态更新失败, 订单变更数据:{}",tenantId + ":" + receivedNo + ":" + bizObjNo +":" +bizObjType+":" + tpOrderReceivedStatusEnum.getStatus(), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_RECEIVED_STATUS_UPDATE_ERROR); + } + // 返回派单编号 + return Boolean.TRUE; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserPassengerDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserPassengerDomainServiceImpl.java new file mode 100644 index 0000000..14a6974 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserPassengerDomainServiceImpl.java @@ -0,0 +1,114 @@ +package com.deepinnet.tptradecore.core.service.order.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.order.TpUserPassengerConverter; +import com.deepinnet.tptradecore.common.dal.dataobject.order.TpUserPassengerDO; +import com.deepinnet.tptradecore.common.dal.repository.order.TpUserPassengerRepository; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.order.TpUserDelPassengerCondition; +import com.deepinnet.tptradecore.core.model.order.TpUserPassenger; +import com.deepinnet.tptradecore.core.model.order.TpUserPassengerCondition; +import com.deepinnet.tptradecore.core.service.order.TpUserPassengerDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 用户乘客领域服务实现类 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Service +public class TpUserPassengerDomainServiceImpl implements TpUserPassengerDomainService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpUserPassengerDomainServiceImpl.class); + + @Resource + private TpUserPassengerRepository tpUserPassengerRepository; + + @Resource + private TpUserPassengerConverter tpUserPassengerConverter; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public void savePassenger(TpUserPassenger tpUserPassenger) { + TpUserPassenger passenger = tpUserPassengerRepository.queryPassengerByUserNoAndPassengerIdentity(tpUserPassenger.getTenantId(), tpUserPassenger.getUserNo(), tpUserPassenger.getIdentityType(), tpUserPassenger.getIdentityNumber()); + + if (ObjectUtil.isNotNull(passenger)) { + LogUtil.error(LOGGER, "用户:{}, 已存在证件类型:{}, 证件号码:{}, 的乘客", tpUserPassenger.getUserNo(), tpUserPassenger.getIdentityType(), tpUserPassenger.getIdentityNumber()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_EXIST_ERROR); + } + + try{ + transactionTemplate.executeWithoutResult(e -> tpUserPassengerRepository.save(tpUserPassengerConverter.model2DO(tpUserPassenger))); + } catch (Exception e) { + LogUtil.error(LOGGER, "乘客信息创建失败, 乘客信息:{}", JSONObject.toJSONString(tpUserPassenger), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_SAVE_ERROR); + } + } + + @Override + public void modifyPassenger(TpUserPassenger tpUserPassenger) { + // 根据乘客编号与用户编号查询乘客 + TpUserPassenger passenger = getTpUserPassengerByUserNoAndPassengerNo(tpUserPassenger.getTenantId(), tpUserPassenger.getPassengerNo(), tpUserPassenger.getUserNo()); + + // 乘客不存在 + if (ObjectUtil.isNull(passenger)) { + LogUtil.error(LOGGER, "乘客编号:{}, 的乘客不存在, 乘客信息:{}", tpUserPassenger.getPassengerNo(), JSONObject.toJSONString(tpUserPassenger)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_NOT_EXIST_ERROR); + } + + // 乘客存在 + try { + transactionTemplate.executeWithoutResult(e -> tpUserPassengerRepository.updateByPassengerNo(tpUserPassenger)); + } catch (Exception e) { + LogUtil.error(LOGGER, "乘客信息修改失败, 乘客信息:{}", JSONObject.toJSONString(tpUserPassenger), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_MODIFY_ERROR); + } + } + + @Override + public List getPassengerList(TpUserPassengerCondition tpUserPassengerCondition) { + return tpUserPassengerRepository.queryPassengerListByUserNo(tpUserPassengerCondition); + } + + @Override + public void delPassenger(TpUserDelPassengerCondition tpUserDelPassengerCondition) { + // 根据乘客编号与用户编号查询乘客 + TpUserPassenger passenger = getTpUserPassengerByUserNoAndPassengerNo(tpUserDelPassengerCondition.getTenantId(), tpUserDelPassengerCondition.getPassengerNo(), tpUserDelPassengerCondition.getUserNo()); + + // 乘客不存在 + if (ObjectUtil.isNull(passenger)) { + LogUtil.error(LOGGER, "用户:{}, 乘客编号:{}, 的乘客不存在", tpUserDelPassengerCondition.getUserNo(), tpUserDelPassengerCondition.getPassengerNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_NOT_EXIST_ERROR); + } + + try { + transactionTemplate.executeWithoutResult(e -> tpUserPassengerRepository.remove(Wrappers.lambdaQuery() + .eq(TpUserPassengerDO::getTenantId, tpUserDelPassengerCondition.getTenantId()) + .eq(TpUserPassengerDO::getPassengerNo, tpUserDelPassengerCondition.getPassengerNo()) + .eq(TpUserPassengerDO::getUserNo, tpUserDelPassengerCondition.getUserNo()))); + } catch (Exception e) { + LogUtil.error(LOGGER, "乘客信息删除失败, 乘客信息:{}", JSONObject.toJSONString(tpUserDelPassengerCondition), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PASSENGER_DELETE_ERROR); + } + } + + private TpUserPassenger getTpUserPassengerByUserNoAndPassengerNo(String tenantId, String passengerNo, String userNo) { + return tpUserPassengerRepository.queryPassengerByUserNoAndPassengerNo(tenantId, passengerNo, userNo); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserRouteCollectionDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserRouteCollectionDomainServiceImpl.java new file mode 100644 index 0000000..8d5ac3d --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/order/impl/TpUserRouteCollectionDomainServiceImpl.java @@ -0,0 +1,57 @@ +package com.deepinnet.tptradecore.core.service.order.impl; + +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.convert.order.TpUserRouteCollectionConverter; +import com.deepinnet.tptradecore.common.dal.repository.order.TpUserRouteCollectionRepository; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollection; +import com.deepinnet.tptradecore.core.model.order.TpUserRouteCollectionCondition; +import com.deepinnet.tptradecore.core.service.order.TpUserRouteCollectionDomainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 线路收集领域服务实现类 + *

+ * + * @author chenjiaju + * @since 2023/8/16 + */ + +@Service +public class TpUserRouteCollectionDomainServiceImpl implements TpUserRouteCollectionDomainService { + + private static final Logger LOGGER = LoggerFactory.getLogger(TpUserRouteCollectionDomainServiceImpl.class); + + @Resource + private TpUserRouteCollectionRepository tpUserRouteCollectionRepository; + + @Resource + private TpUserRouteCollectionConverter tpUserRouteCollectionConverter; + + @Resource + private TransactionTemplate transactionTemplate; + + @Override + public void collectRoute(TpUserRouteCollection tpUserRouteCollection) { + try { + transactionTemplate.executeWithoutResult(e -> tpUserRouteCollectionRepository.save(tpUserRouteCollectionConverter.model2DO(tpUserRouteCollection))); + } catch (Exception e) { + LogUtil.error(LOGGER, "线路收集失败!", e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ROUTE_COLLECTION_ERROR); + } + } + + @Override + public List getCollectionRouteList(TpUserRouteCollectionCondition tpUserRouteCollectionCondition) { + // 查询 + return tpUserRouteCollectionRepository.queryRouteCollectionList(tpUserRouteCollectionCondition); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/CommonScheduleTaskExecuteTemplate.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/CommonScheduleTaskExecuteTemplate.java new file mode 100644 index 0000000..263fa25 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/CommonScheduleTaskExecuteTemplate.java @@ -0,0 +1,86 @@ +package com.deepinnet.tptradecore.core.service.task; + + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.enums.task.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.task.worker.AbstractBaseTaskWorker; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.*; + + +/** + * @author amos wong + * @create 2022-11-30 21:18 + *

+ * 定时任务执行通用模板类 + */ + +@Component +public class CommonScheduleTaskExecuteTemplate implements InitializingBean { + + private final ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 5, 60, TimeUnit.SECONDS, + new ArrayBlockingQueue<>(15)); + + @Resource + private TpScheduleTaskService scheduleTaskService; + + @Resource + private Map taskWorkerMap; + + private static final Integer LIMIT_COUNT = 30; + + private final Map scheduleTypeWorkerMap = new ConcurrentHashMap<>(); + + @Override + public void afterPropertiesSet() { + taskWorkerMap + .values() + .parallelStream() + .forEach(taskWorker -> scheduleTypeWorkerMap.put(taskWorker.getTaskType(), taskWorker)); + } + + @Scheduled(fixedDelay = 60000) + public void process() { + // 捞取任务 + List allNeedExecuteTasks = getNeedExecuteTasks(); + if (CollectionUtils.isEmpty(allNeedExecuteTasks)) { + return; + } + + // 将任务提交给线程池处理 + for (TpScheduleTask needExecuteTask : allNeedExecuteTasks) { + TpScheduleTaskTypeEnum taskTypeEnum = TpScheduleTaskTypeEnum.getByType(needExecuteTask.getTaskType()); + if (taskTypeEnum == null) { + LogUtil.error("定时任务模板类处理异常,原因:任务类型不存在,任务id:{}", needExecuteTask.getId()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ILLEGAL_SCHEDULE_TASK_TYPE); + } + + AbstractBaseTaskWorker taskWorker = scheduleTypeWorkerMap.get(taskTypeEnum); + if (taskWorker == null) { + LogUtil.error("无法找到当前任务类型对应的worker,请及时排查问题,当前的任务为:{}", JSONUtil.toJsonStr(needExecuteTask)); + continue; + } + + executor.submit(() -> taskWorker.doCommit(needExecuteTask)); + } + } + + private List getNeedExecuteTasks() { + return scheduleTaskService.listTasks( + TpScheduleTaskTypeEnum.TRADECORE_SUPPORT_TASK_TYPE_LIST, + Lists.newArrayList(TpScheduleTaskStatusEnum.WAIT_EXECUTE.getStatus(), TpScheduleTaskStatusEnum.FAIL.getStatus()), + System.currentTimeMillis(), + LIMIT_COUNT); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/TpScheduleTaskService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/TpScheduleTaskService.java new file mode 100644 index 0000000..4e3c0b0 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/TpScheduleTaskService.java @@ -0,0 +1,108 @@ +package com.deepinnet.tptradecore.core.service.task; + + +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.condition.task.UpdateTaskCondition; +import com.deepinnet.tptradecore.common.dal.repository.task.TpScheduleTaskRepository; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskStatusEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author amos wong + * @create 2022-10-25 13:46 + */ +@Service("scheduleTaskService") +public class TpScheduleTaskService { + @Resource + private TpScheduleTaskRepository scheduleTaskRepository; + + public List listTasks(List types, List statusList, Long triggerTime, Integer limitCount) { + return scheduleTaskRepository.getAllByTypeAndStatusAndTriggerTime(types, statusList, triggerTime, limitCount); + } + + public void batchInsertScheduleTasks(List scheduleTasks) { + try { + scheduleTaskRepository.batchSave(scheduleTasks); + } catch (Exception e) { + LogUtil.error("插入定时任务失败,任务信息:{},异常堆栈信息:{}", JSONUtil.toJsonStr(scheduleTasks), e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.INSERT_TASK_ERROR, TpTradeCoreErrorCode.INSERT_TASK_ERROR.getDesc()); + } + } + + public void updateTaskExecuting(Long taskId, String bizNo, String originalStatus, Long executeTime, String tenantId) { + this.updateScheduleTask( + taskId, + bizNo, + originalStatus, + TpScheduleTaskStatusEnum.EXECUTING.getStatus(), + null, + null, + executeTime, + tenantId); + } + + public void updateTaskSuccess(Long taskId, String bizNo, String tenantId) { + this.updateScheduleTask( + taskId, + bizNo, + TpScheduleTaskStatusEnum.EXECUTING.getStatus(), + TpScheduleTaskStatusEnum.SUCCESS.getStatus(), + null, + null, + null, + tenantId); + } + + public void updateTaskFail(Long taskId, String bizNo, Integer retryCount, Long nextTriggerTime, String tenantId) { + this.updateScheduleTask( + taskId, + bizNo, + TpScheduleTaskStatusEnum.EXECUTING.getStatus(), + TpScheduleTaskStatusEnum.FAIL.getStatus(), + retryCount, + nextTriggerTime, + null, + tenantId); + } + + public void updateTaskTerminated(Long taskId, String bizNo, String tenantId) { + this.updateScheduleTask( + taskId, + bizNo, + TpScheduleTaskStatusEnum.EXECUTING.getStatus(), + TpScheduleTaskStatusEnum.TERMINATED.getStatus(), + null, + null, + null, + tenantId); + } + + private void updateScheduleTask(Long taskId, String bizNo, String originalStatus, String targetStatus, + Integer retryCount, Long nextTriggerTime, Long executeTime, String tenantId) { + try { + UpdateTaskCondition updateTaskCondition = new UpdateTaskCondition(); + updateTaskCondition.setId(taskId); + updateTaskCondition.setOriginalStatus(originalStatus); + updateTaskCondition.setTargetStatus(targetStatus); + updateTaskCondition.setRetryCount(retryCount); + updateTaskCondition.setTenantId(tenantId); + updateTaskCondition.setTriggerTime(nextTriggerTime); + updateTaskCondition.setExecuteTime(executeTime); + boolean isSuccess = scheduleTaskRepository.updateTaskByCondition(updateTaskCondition); + if (!isSuccess) { + LogUtil.error("更新任务状态失败,任务号:{},业务号:{}", taskId, bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.UPDATE_TASK_STATUS_ERROR); + } + } catch (Exception e) { + LogUtil.error("更新任务状态失败,任务号:{},业务号:{},异常堆栈信息:{}", taskId, bizNo, e); + throw new TpTradeCoreException(TpTradeCoreErrorCode.UPDATE_TASK_STATUS_ERROR); + } + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/AbstractBaseTaskWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/AbstractBaseTaskWorker.java new file mode 100644 index 0000000..7310fda --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/AbstractBaseTaskWorker.java @@ -0,0 +1,165 @@ +package com.deepinnet.tptradecore.core.service.task.worker; + + +import cn.hutool.core.date.DateUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.task.TpScheduleTaskService; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.*; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; + +import java.util.List; + +import static com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR; + +/** + * @author amos wong + * @create 2022-12-01 08:28 + */ + +@Component +public abstract class AbstractBaseTaskWorker { + @Resource + private TpScheduleTaskService scheduleTaskService; + + @Resource + private TransactionTemplate transactionTemplate; + + protected static final Logger SCHEDULE_TASK_LOG = LoggerFactory.getLogger("SCHEDULE-TASK-LOG"); + + private static final String EXECUTE_LOG_PATTERN = "EXECUTE,{},{},{},{}ms,{}"; + + private static final Integer MAX_RETRY_COUNT = 10; + + private static final Integer TWO_MINUTES = 2 * 60 * 1000; + protected static final String TRIGGER_TIME = "triggerTime"; + + + public abstract TpScheduleTaskTypeEnum getTaskType(); + + public static void main(String[] args) { + String s = String.valueOf(DateUtil.current()); + System.out.println(s); + } + public void doCommit(TpScheduleTask scheduleTask) { + // 获取必要的业务参数 + long startTime = System.currentTimeMillis(); + Long taskId = scheduleTask.getId(); + String bizNo = scheduleTask.getBizNo(); + String tenantId = scheduleTask.getTenantId(); + MDC.put(TRIGGER_TIME, String.valueOf(scheduleTask.getTriggerTime())); + try { + // 更新任务状态到执行中 + scheduleTaskService.updateTaskExecuting(taskId, bizNo, scheduleTask.getStatus(), System.currentTimeMillis(), tenantId); + + // 校验业务状态 + checkBizStatus(taskId, bizNo, scheduleTask.getTenantId()); + + // 更新业务状态 + updateBizStatus(bizNo, scheduleTask.getTenantId()); + + // 修改任务状态为成功&做其他的业务动作如发消息等 + transactionTemplate.executeWithoutResult(action -> { + scheduleTaskService.updateTaskSuccess(taskId, bizNo, tenantId); + + doOtherBiz(scheduleTask); + }); + } catch (TpTradeCoreException e) { + // 异常场景:幂等处理 + if (e.getErrorCode() == IDEMPOTENT_REQUEST_ERROR) { + LogUtil.error("执行任务幂等处理,任务id:{},业务单号:{}", taskId, bizNo); + // 将任务状态设置为成功 + scheduleTaskService.updateTaskSuccess(taskId, bizNo, tenantId); + return; + } + + // 处理异常场景 + processException(e, scheduleTask); + + long endTime = System.currentTimeMillis(); + LogUtil.info(SCHEDULE_TASK_LOG, EXECUTE_LOG_PATTERN, scheduleTask.getId(), scheduleTask.getBizNo(), false, endTime - startTime, e.getErrorCode()); + return; + } catch (Exception e) { + makeTaskFailAndUpdateRetryCount(taskId, bizNo, scheduleTask.getRetryCount(), tenantId, scheduleTask.getTriggerTime(), e); + LogUtil.error("任务执行失败,原因为:未知异常,任务id为:{}, 支付单号为:{},异常堆栈为:{}", taskId, bizNo, e); + LogUtil.info(SCHEDULE_TASK_LOG, EXECUTE_LOG_PATTERN, scheduleTask.getId(), scheduleTask.getBizNo(), false, TpTradeCoreErrorCode.UNKNOWN_EXCEPTION.getCode()); + return; + } + + long endTime = System.currentTimeMillis(); + LogUtil.info(SCHEDULE_TASK_LOG, EXECUTE_LOG_PATTERN, scheduleTask.getId(), scheduleTask.getBizNo(), true, endTime - startTime, "-"); + LogUtil.info("任务执行成功,任务id为:{}, 支付单号为:{}", taskId, bizNo); + } + + protected abstract void doOtherBiz(TpScheduleTask scheduleTask); + + /** + * 处理异常场景 + */ + protected void processException(TpTradeCoreException exception, TpScheduleTask scheduleTask) { + List needTerminatedErrorCodeList = needTerminatedErrorCode(); + if (CollectionUtils.isEmpty(needTerminatedErrorCodeList)) { + makeTaskFailAndUpdateRetryCount(scheduleTask.getId(), scheduleTask.getBizNo(), scheduleTask.getRetryCount(), scheduleTask.getTenantId(), scheduleTask.getTriggerTime(), exception); + } else { + if (needTerminatedErrorCodeList.contains(exception.getErrorCode())) { + makeTaskTerminated(scheduleTask.getId(), scheduleTask.getBizNo(), scheduleTask.getTenantId()); + } else { + makeTaskFailAndUpdateRetryCount(scheduleTask.getId(), scheduleTask.getBizNo(), scheduleTask.getRetryCount(), scheduleTask.getTenantId(), scheduleTask.getTriggerTime(), exception); + } + } + } + + /** + * 需要终止的异常错误码 + * + * @return + */ + protected abstract List needTerminatedErrorCode(); + + /** + * 校验业务状态 + * + * @param taskId + * @param bizNo + * @param tenantId + */ + protected abstract void checkBizStatus(Long taskId, String bizNo, String tenantId); + + /** + * 更新业务状态 + * + * @param bizNo + * @param tenantId + */ + protected abstract void updateBizStatus(String bizNo, String tenantId); + + protected void makeTaskFailAndUpdateRetryCount(Long taskId, String bizNo, Integer retryCount, String tenantId, Long triggerTime, Exception e) { + if (e instanceof TpTradeCoreException) { + TpTradeCoreException tradeCoreException = (TpTradeCoreException) e; + LogUtil.error("执行任务失败,原因为{},任务id:{},业务单号:{},异常堆栈:{}", tradeCoreException.getErrorCode().getDesc(), taskId, bizNo, e); + } else { + LogUtil.error("执行任务失败,任务id:{},业务单号:{},异常堆栈:{}", taskId, bizNo, e); + } + + int curRetryCount = retryCount == null ? 0 : retryCount; + + if (curRetryCount >= MAX_RETRY_COUNT) { + LogUtil.error("执行任务失败,任务已经达到最大重试次数,任务id:{},业务单号:{},异常堆栈:{}", e); + scheduleTaskService.updateTaskTerminated(taskId, bizNo, tenantId); + } else { + // 执行失败的任务,下次触发时间为上一次触发时间后的2分钟 + scheduleTaskService.updateTaskFail(taskId, bizNo, curRetryCount + 1, triggerTime + TWO_MINUTES, tenantId); + } + } + + protected void makeTaskTerminated(Long taskId, String bizNo, String tenantId) { + scheduleTaskService.updateTaskTerminated(taskId, bizNo, tenantId); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CarPoolEndWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CarPoolEndWorker.java new file mode 100644 index 0000000..9fd6cdf --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CarPoolEndWorker.java @@ -0,0 +1,275 @@ +package com.deepinnet.tptradecore.core.service.task.worker; +import com.deepinnet.tpbaseopcore.common.dto.driver.TpDriverDTO; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.BusDriverDetailDTO; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsBaseTemplate; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.deepinnet.tp.common.lang.result.TpResult; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpbaseopcore.common.dto.shuttle.ShuttleDetailDTO; +import com.deepinnet.tpcommoncore.common.service.dto.TpSmsBatchSendDTO; +import com.deepinnet.tpcommoncore.common.service.template.sms.driver.TpSmsCarPoolSuccessDriverTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsCarPoolFailTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsCarPoolSuccessTemplate; +import com.deepinnet.tpproductcore.common.dto.TpSalesUnitCarPoolStatusUpdateDTO; +import com.deepinnet.tpproductcore.common.enums.TpCarPoolStatusEnum; +import com.deepinnet.tpproductcore.common.qto.TpSalesUnitCarPoolListQueryDTO; +import com.deepinnet.tpproductcore.common.vo.TpSalesUnitCarPoolVO; +import com.deepinnet.tptradecore.common.dto.order.TpCancelCarpoolDTO; +import com.deepinnet.tptradecore.common.dto.order.TpCarPoolListQueryDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderCarpoolPushStatusDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderCarpoolSearchDTO; +import com.deepinnet.tptradecore.common.enums.order.TpCarpoolOrderOperateEnum; +import com.deepinnet.tptradecore.common.enums.order.TpOrderSourceEnum; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.facade.order.TpOrderFacade; +import com.deepinnet.tptradecore.common.service.integration.client.TpProductClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpProductSalesUnitClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpRouteClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpSmsClient; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.deepinnet.tptradecore.core.util.TpTimeFormatUtil; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.dubbo.config.annotation.DubboReference; +import org.jetbrains.annotations.NotNull; +import org.slf4j.MDC; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author cky + * @create 2024/05/24 15:15 + * @Description + */ +@Component +@Slf4j +public class CarPoolEndWorker extends AbstractBaseTaskWorker { + + @Resource + private TpProductSalesUnitClient productSalesUnitClient; + + @DubboReference + private TpOrderFacade orderFacade; + + @Resource + private TpSmsClient smsClient; + + @Resource + private TpOrderDomainService orderDomainService; + @Resource + private TpRouteClient routeClient; + + @Override + public TpScheduleTaskTypeEnum getTaskType() { + return TpScheduleTaskTypeEnum.CAR_POOL_END; + } + + @Override + protected List needTerminatedErrorCode() { + return Lists.newArrayList(TpTradeCoreErrorCode.CAR_POOL_END_TIME_CHANGED, TpTradeCoreErrorCode.NOT_EXIST_CAR_POOL_ERROR); + } + + @Override + protected void doOtherBiz(TpScheduleTask scheduleTask) { + } + + @Override + protected void checkBizStatus(Long taskId, String bizNo, String tenantId) { + String triggerTime = MDC.get(TRIGGER_TIME); + SCHEDULE_TASK_LOG.info("拼车checkBizStatus,triggerTime:{}", triggerTime); + TpCarPoolListQueryDTO tpCarPoolListQueryDTO = new TpCarPoolListQueryDTO(); + tpCarPoolListQueryDTO.setSalesUnitCodeList(Arrays.asList(bizNo)); + tpCarPoolListQueryDTO.setTenantId(tenantId); + List existedCarPool = productSalesUnitClient.listCarpools(tpCarPoolListQueryDTO); + // 拼车状态终态,不再执行任务 + if (CollectionUtil.isEmpty(existedCarPool) + || Objects.equals(existedCarPool.get(0).getCarPoolStatus(), TpCarPoolStatusEnum.SUCCESS.getCode()) + || Objects.equals(existedCarPool.get(0).getCarPoolStatus(), TpCarPoolStatusEnum.FAILED.getCode())) { + SCHEDULE_TASK_LOG.info("售卖单元:{}对应的拼车开线记录已经{},不执行任务", bizNo, existedCarPool.get(0).getCarPoolStatus()); + return; + } + // 拼车开线记录定时任务触发时间不一致,不执行任务 + if (!Objects.equals(String.valueOf(existedCarPool.get(0).getCancelCarPoolTime()), triggerTime)) { + SCHEDULE_TASK_LOG.info("售卖单元:{}对应的拼车开线记录定时任务触发时间不一致,不执行任务,cancelCarPoolTime:{}, triggerTime:{}", bizNo, existedCarPool.get(0).getCancelCarPoolTime(), triggerTime); + throw new TpTradeCoreException(TpTradeCoreErrorCode.CAR_POOL_END_TIME_CHANGED); + } + + // 触发拼车状态变更 + TpSalesUnitCarPoolStatusUpdateDTO tpSalesUnitCarPoolStatusUpdateDTO = new TpSalesUnitCarPoolStatusUpdateDTO(); + tpSalesUnitCarPoolStatusUpdateDTO.setSalesUnitCodeList(Arrays.asList(bizNo)); + tpSalesUnitCarPoolStatusUpdateDTO.setTenantId(tenantId); + List tpSalesUnitCarPoolVOS = productSalesUnitClient.triggerCarPoolStatusUpdate(tpSalesUnitCarPoolStatusUpdateDTO); + + if (CollectionUtils.isEmpty(tpSalesUnitCarPoolVOS)) { + SCHEDULE_TASK_LOG.info("售卖单元:{}对应的拼车开线记录不存在,不执行任务", bizNo); + return; + } + // 拼车状态 + String carPoolStatus = tpSalesUnitCarPoolVOS.get(0).getCarPoolStatus(); + Long shuttleTime = tpSalesUnitCarPoolVOS.get(0).getShuttleTime(); + String shuttleCode = tpSalesUnitCarPoolVOS.get(0).getShuttleCode(); + String routeName = tpSalesUnitCarPoolVOS.get(0).getRouteName(); + + + TpOrderCarpoolSearchDTO searchDTO = new TpOrderCarpoolSearchDTO(); + searchDTO.setTenantId(tenantId); + searchDTO.setDepartureTime(shuttleTime); + searchDTO.setShuttleCode(shuttleCode); + SCHEDULE_TASK_LOG.info("拼车定时任务,拼车开线记录:{}", tpSalesUnitCarPoolVOS); + + // 下单人信息、线路信息、行程单、拼车记录 + List tpOrders = orderDomainService.queryCarpoolOrderListBySaleUnitCode(searchDTO); + + List smsBatchSendDTOs; + + // 推进订单 + if (Objects.equals(carPoolStatus, TpCarPoolStatusEnum.FAILED.getCode())) { + TpCancelCarpoolDTO tpCancelCarpoolDTO = new TpCancelCarpoolDTO(); + tpCancelCarpoolDTO.setOperateType(TpCarpoolOrderOperateEnum.FINISH.getOperateType()); + tpCancelCarpoolDTO.setSaleUnitCodeList(Arrays.asList(bizNo)); + tpCancelCarpoolDTO.setTenantId(tenantId); + // 拼车失败订单 + TpResult cancelOrCarpoolFailOrder = orderFacade.cancelOrCarpoolFailOrder(tpCancelCarpoolDTO); + if (!cancelOrCarpoolFailOrder.isSuccess() ) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.CANCEL_CAR_POOL_FINISH_ERROR); + } + + smsBatchSendDTOs = getTpSmsBatchSendDTOS(tpOrders, TpCarPoolStatusEnum.FAILED); + } else if (Objects.equals(carPoolStatus, TpCarPoolStatusEnum.SUCCESS.getCode())) { + TpOrderCarpoolPushStatusDTO tpOrderCarpoolPushStatusDTO = new TpOrderCarpoolPushStatusDTO(); + tpOrderCarpoolPushStatusDTO.setSubjectItemNo(bizNo); + tpOrderCarpoolPushStatusDTO.setTenantId(tenantId); + // 拼车成功订单 + TpResult successOrder = orderFacade.bathUpdateCarpoolSuccessOrder(tpOrderCarpoolPushStatusDTO); + if (!successOrder.isSuccess()) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.SUCCESS_CAR_POOL_ERROR); + } + + smsBatchSendDTOs = getTpSmsBatchSendDTOS(tpOrders, TpCarPoolStatusEnum.SUCCESS); + // 给司机发送拼车成功短信 + sendDriverSms(bizNo, tenantId, shuttleCode, routeName, shuttleTime); + } else { + // 拼车状态不是拼车中或拼车失败时,抛出异常,说明拼车结束时间发生了变更 + throw new TpTradeCoreException(TpTradeCoreErrorCode.CAR_POOL_END_TIME_CHANGED); + } + + // 给用户发送短信 + try { + if (CollUtil.isNotEmpty(smsBatchSendDTOs)) { + smsClient.batchSendSmsAsync(smsBatchSendDTOs); + } + } catch (Exception e) { + SCHEDULE_TASK_LOG.error("给用户发送短信异常, smsBatchSendDTOs:{}", smsBatchSendDTOs, e); + } + + + } + + private void sendDriverSms(String bizNo, String tenantId, String shuttleCode, String routeName, Long shuttleTime) { + try { + TpSmsCarPoolSuccessDriverTemplate driverTemplate = new TpSmsCarPoolSuccessDriverTemplate(); + ShuttleDetailDTO shuttleDetail = routeClient.getShuttleDetail(shuttleCode, tenantId); + + if (shuttleDetail != null && CollectionUtil.isNotEmpty(shuttleDetail.getStationTimeDetail()) && CollectionUtil.isNotEmpty(shuttleDetail.getBusDriverDetail())) { + + List busDriverDetail = shuttleDetail.getBusDriverDetail(); + List driverDetails = routeClient.getDriverDetails(busDriverDetail.stream().map(BusDriverDetailDTO::getDriverCode).collect(Collectors.toList()), tenantId); + List driverPhoneList = driverDetails.stream().map(TpDriverDTO::getPhone).filter(StrUtil::isNotEmpty).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(driverPhoneList)) { + driverTemplate.setFirstSiteName(shuttleDetail.getStationTimeDetail().get(0).getStationName()); + driverTemplate.setLastSiteName(shuttleDetail.getStationTimeDetail().get(shuttleDetail.getStationTimeDetail().size()-1).getStationName()); + driverTemplate.setRouteName(routeName); + driverTemplate.setDepartureDateTime(TpTimeFormatUtil.convertTimestamp2ChineseFormat(shuttleTime)); + + List driverSmsList = driverPhoneList.stream().map(d -> { + TpSmsBatchSendDTO smsBatchSendDTO = new TpSmsBatchSendDTO(); + smsBatchSendDTO.setMobile(d); + smsBatchSendDTO.setSmsTemplate(driverTemplate); + return smsBatchSendDTO; + }).collect(Collectors.toList()); + + smsClient.batchSendSmsAsync(driverSmsList); + + } else { + SCHEDULE_TASK_LOG.info("拼车定时任务,司机手机号为空,busDriverDetail:{}", busDriverDetail); + } + + } else { + SCHEDULE_TASK_LOG.error("拼车定时任务,班次不存在,shuttleCode:{}, tenantId:{}", shuttleCode, tenantId); + } + + + + } catch (Exception e) { + SCHEDULE_TASK_LOG.error("拼车定时任务,发送司机短信失败, bizNo:{}", bizNo, e); + } + } + + private List getTpSmsBatchSendDTOS(List tpOrders, TpCarPoolStatusEnum carPoolStatus) { + if (CollectionUtil.isEmpty(tpOrders)) { + return Collections.emptyList(); + } + List smsBatchSendDTOs = Lists.newArrayList(); + tpOrders.forEach(order -> { + if (!StrUtil.equals(order.getSource(), TpOrderSourceEnum.POS.getType())) { + TpSmsBatchSendDTO tpSmsBatchSendDTO = new TpSmsBatchSendDTO(); + tpSmsBatchSendDTO.setMobile(StrUtil.isNotEmpty(order.getOrderPlacer().getOrderPlacerContact()) ? order.getOrderPlacer().getOrderPlacerContact() : order.getOrderPlacer().getPlacerContact()); + + if (StrUtil.equals(carPoolStatus.getCode(), TpCarPoolStatusEnum.SUCCESS.getCode())) { + TpSmsCarPoolSuccessTemplate carPoolSuccessTemplate = buildCarpoolSuccessTemplate(order); + + tpSmsBatchSendDTO.setSmsTemplate(carPoolSuccessTemplate); + } else { + TpSmsCarPoolFailTemplate carPoolFailTemplate = buildCarpoolFailTemplate(order); + + tpSmsBatchSendDTO.setSmsTemplate(carPoolFailTemplate); + } + smsBatchSendDTOs.add(tpSmsBatchSendDTO); + } + }); + return smsBatchSendDTOs; + } + + private TpSmsCarPoolFailTemplate buildCarpoolFailTemplate(TpOrder order) { + TpSmsCarPoolFailTemplate carPoolFailTemplate = new TpSmsCarPoolFailTemplate(); + + carPoolFailTemplate.setDepartureDateTime(TpTimeFormatUtil.convertTimestamp2ChineseFormat(order.getOrderCarpoolRecords().get(0).getDepartureTime())); + carPoolFailTemplate.setPickUpLocation(order.getOrderTravelTrips().get(0).getPickUpLocation()); + carPoolFailTemplate.setDropOffLocation(order.getOrderTravelTrips().get(0).getDropOffLocation()); + carPoolFailTemplate.setRouteName(order.getTpOrderRoutes().get(0).getRouteName()); + carPoolFailTemplate.setRefundAmount(order.getPayAmount()); + + return carPoolFailTemplate; + } + + private TpSmsCarPoolSuccessTemplate buildCarpoolSuccessTemplate(TpOrder order) { + TpSmsCarPoolSuccessTemplate carPoolSuccessTemplate = new TpSmsCarPoolSuccessTemplate(); + + carPoolSuccessTemplate.setDepartureDateTime(TpTimeFormatUtil.convertTimestamp2ChineseFormat(order.getOrderCarpoolRecords().get(0).getDepartureTime())); + carPoolSuccessTemplate.setPickUpLocation(order.getOrderTravelTrips().get(0).getPickUpLocation()); + carPoolSuccessTemplate.setDropOffLocation(order.getOrderTravelTrips().get(0).getDropOffLocation()); + carPoolSuccessTemplate.setRouteName(order.getTpOrderRoutes().get(0).getRouteName()); + return carPoolSuccessTemplate; + } + + @Override + protected void updateBizStatus(String bizNo, String tenantId) { + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CharterBusTripEndTaskWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CharterBusTripEndTaskWorker.java new file mode 100644 index 0000000..2147804 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/CharterBusTripEndTaskWorker.java @@ -0,0 +1,145 @@ +package com.deepinnet.tptradecore.core.service.task.worker; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.*; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpcommoncore.common.service.template.email.TpEmailConfirmPayAmountTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.staff.TpSmsConfirmPayAmountTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsTripEndNeedUserPayTemplate; +import com.deepinnet.tpcommoncore.common.service.template.sms.user.TpSmsTripEndRefundTemplate; +import com.deepinnet.tpconfigcore.common.vo.TpTenantContractListDTO; +import com.deepinnet.tptradecore.common.dto.order.TpOrderDispatchDetailDTO; +import com.deepinnet.tptradecore.common.enums.order.TpOrderModulesEnum; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpEmailClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpOrderDispatchClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpSmsClient; +import com.deepinnet.tptradecore.common.service.integration.client.TpTenantClient; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.common.vo.order.TpOrderDispatchVO; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.*; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.google.common.collect.Lists; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author amos wong + * @create 2023/12/8 10:50 + * @Description + */ +@Component +@RefreshScope +public class CharterBusTripEndTaskWorker extends AbstractBaseTaskWorker { + + @Resource + private TpOrderDomainService orderDomainService; + + @Resource + private MessageClient messageClient; + + @Resource + private TpSmsClient tpSmsClient; + + @Resource + private TpEmailClient tpEmailClient; + + @Resource + private TpOrderDispatchClient tpOrderDispatchClient; + + @Resource + private TpTenantClient tpTenantClient; + + private static final Long TEN_HOUR = 36000000L; + + @Override + public TpScheduleTaskTypeEnum getTaskType() { + return TpScheduleTaskTypeEnum.CHARTER_BUS_TRIP_END; + } + + @Override + protected List needTerminatedErrorCode() { + return Lists.newArrayList(TpTradeCoreErrorCode.ORDER_NOT_FOUND, TpTradeCoreErrorCode.ORDER_CANCELED_CAN_NOT_OPERATION_ERROR); + } + + @Override + protected void doOtherBiz(TpScheduleTask scheduleTask) { + } + + @Override + protected void checkBizStatus(Long taskId, String bizNo, String tenantId) { + TpOrder order = orderDomainService.getOrderByOriginalOrderNo(tenantId, null, bizNo, null); + if (order == null) { + LogUtil.error("[行程结束定时任务]执行失败:订单不存在,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_FOUND); + } + + if (ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_AUDITED.getStatus()) + || ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_NEED_PAY.getStatus()) + || ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_REFUNDING.getStatus()) + || ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_REFUNDED.getStatus()) + || ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_CANCELED.getStatus()) + || ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_CANCEL_PAID.getStatus())) { + LogUtil.error("[行程结束定时任务]执行失败: 订单已取消, 订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_CANCELED_CAN_NOT_OPERATION_ERROR); + } + + if (!ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_TRIP_START.getStatus())) { + LogUtil.error("[行程结束定时任务]执行失败:订单状态异常不是行程中无法执行,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + } + + @Override + protected void updateBizStatus(String bizNo, String tenantId) { + TpOrder order = orderDomainService.getOrderByOriginalOrderNo(tenantId, null, bizNo, ListUtil.toList(TpOrderModulesEnum.ORDER_REQUIREMENT_USER)); + if (order == null) { + LogUtil.error("[行程结束定时任务]执行失败:订单不存在,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_FOUND); + } + + // 查询派单记录 + TpOrderDispatchDetailDTO dto = new TpOrderDispatchDetailDTO(); + dto.setOrderNo(bizNo); + dto.setTenantId(tenantId); + TpOrderDispatchVO orderDispatchDetail = tpOrderDispatchClient.getOrderDispatchDetail(dto); + + // 查询审核人员 + TpTenantContractListDTO orgAuditorDetail = tpTenantClient.getAuditorsByOrgCode(orderDispatchDetail.getTargetOrgNo(), tenantId); + + // 发短信 + if (ObjectUtil.isNotNull(orgAuditorDetail) && CollUtil.isNotEmpty(orgAuditorDetail.getAuditorPhone())) { + TpSmsConfirmPayAmountTemplate smsTemplate = new TpSmsConfirmPayAmountTemplate(); + smsTemplate.setOrderNo(order.getOriginalOrderNo()); + tpSmsClient.sendSms(orgAuditorDetail.getAuditorPhone().get(0), smsTemplate); + } + + // 发邮件 + if (ObjectUtil.isNotNull(orgAuditorDetail) && CollUtil.isNotEmpty(orgAuditorDetail.getAuditorEmail())) { + TpEmailConfirmPayAmountTemplate emailTemplate = new TpEmailConfirmPayAmountTemplate(); + emailTemplate.setOrderNo(order.getOriginalOrderNo()); + tpEmailClient.batchSendEmailAsync(orgAuditorDetail.getAuditorEmail(), emailTemplate); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(order.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_END_CONFIRMING_ORDER_AMOUNT); + pushStatus.setCurrentStatus(order.getStatus()); + pushStatus.setTenantId(order.getTenantId()); + + orderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/DepositOrderPayTimeoutWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/DepositOrderPayTimeoutWorker.java new file mode 100644 index 0000000..944b6ad --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/DepositOrderPayTimeoutWorker.java @@ -0,0 +1,79 @@ +package com.deepinnet.tptradecore.core.service.task.worker; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.*; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +/** + * @author amos wong + * @create 2023/12/9 15:15 + * @Description + */ +@Component +public class DepositOrderPayTimeoutWorker extends AbstractBaseTaskWorker { + + @Resource + private TpOrderDomainService orderDomainService; + + @Override + public TpScheduleTaskTypeEnum getTaskType() { + return TpScheduleTaskTypeEnum.ORDER_PAY_BEFORE_PAY_TIMEOUT; + } + + @Override + protected List needTerminatedErrorCode() { + return Lists.newArrayList(TpTradeCoreErrorCode.ORDER_NOT_FOUND); + } + + @Override + protected void doOtherBiz(TpScheduleTask scheduleTask) { + + } + + @Override + protected void checkBizStatus(Long taskId, String bizNo, String tenantId) { + TpOrder order = orderDomainService.getOrderByOriginalOrderNo(tenantId, null, bizNo, null); + if (order == null) { + LogUtil.error("订单不存在,定金订单超时关单任务终止,originalOrderNo:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_FOUND); + } + + if (!ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_DEPOSIT_NEED_PAY.getStatus())) { + LogUtil.error("订单状态不是定金待支付状态,定金订单超时关单任务执行失败,originalOrderNo:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_DEPOSIT_TIMEOUT)) { + LogUtil.error("定金订单已经变为超时状态,幂等处理", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + } + + @Override + protected void updateBizStatus(String bizNo, String tenantId) { + TpOrder order = orderDomainService.getOrderByOriginalOrderNo(tenantId, null, bizNo, null); + if (order == null) { + LogUtil.error("[订金超时关单任务]执行失败:订单不存在,订单号:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_NOT_FOUND); + } + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(order.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_DEPOSIT_TIMEOUT); + pushStatus.setCurrentStatus(order.getStatus()); + pushStatus.setTenantId(tenantId); + orderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/OrderTripStartWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/OrderTripStartWorker.java new file mode 100644 index 0000000..8cabdf2 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/OrderTripStartWorker.java @@ -0,0 +1,71 @@ +package com.deepinnet.tptradecore.core.service.task.worker; + +import cn.hutool.core.util.ObjectUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.enums.order.TpOrderStatusEnum; +import com.deepinnet.tptradecore.core.model.order.TpOrder; +import com.deepinnet.tptradecore.core.model.order.TpOrderPushStatus; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.service.order.TpOrderDomainService; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author chenjiaju + * @since 2023/12/9 15:15 + * @Description 订单已派车改为已发车定时任务 + */ +@Component +public class OrderTripStartWorker extends AbstractBaseTaskWorker { + + @Resource + private TpOrderDomainService orderDomainService; + + @Override + public TpScheduleTaskTypeEnum getTaskType() { + return TpScheduleTaskTypeEnum.ORDER_TRIP_START; + } + + @Override + protected void doOtherBiz(TpScheduleTask scheduleTask) { + + } + + @Override + protected List needTerminatedErrorCode() { + return Lists.newArrayList( TpTradeCoreErrorCode.ORDER_NOT_FOUND, TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + @Override + protected void checkBizStatus(Long taskId, String bizNo, String tenantId) { + TpOrder order = orderDomainService.getOrderByOriginalOrderNo(tenantId, null, bizNo, null); + + if (!ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_DISPATCHED.getStatus())) { + LogUtil.error("订单状态[已派车],[订单已派车改为行程中]任务执行失败,originalOrderNo:{}", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.ORDER_STATUS_ERROR); + } + + if (ObjectUtil.equals(order.getStatus(), TpOrderStatusEnum.ORDER_TRIP_START)) { + LogUtil.error("订单已经变为[行程中],幂等处理", bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + } + + @Override + protected void updateBizStatus(String bizNo, String tenantId) { + TpOrder order = orderDomainService.getOrderByOriginalOrderNo(tenantId, null, bizNo, null); + + TpOrderPushStatus pushStatus = new TpOrderPushStatus(); + pushStatus.setOrderNo(order.getOrderNo()); + pushStatus.setStatusEnum(TpOrderStatusEnum.ORDER_TRIP_START); + pushStatus.setCurrentStatus(order.getStatus()); + pushStatus.setTenantId(tenantId); + orderDomainService.changeOrderStatus(pushStatus); + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/PayOrderTimeoutCloseWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/PayOrderTimeoutCloseWorker.java new file mode 100644 index 0000000..c7a98ad --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/PayOrderTimeoutCloseWorker.java @@ -0,0 +1,88 @@ +package com.deepinnet.tptradecore.core.service.task.worker; + + +/** + * @author amos wong + * @create 2022-11-26 08:32 + *

+ * 支付单超时关单worker + */ +/*@Component +public class PayOrderTimeoutCloseWorker extends AbstractBaseTaskWorker { + + @Resource + private TpScheduleTaskService scheduleTaskService; + + @Resource + private TpPayOrderDomainService payOrderDomainService; + + @Override + protected void processException(TpTradeCoreException exception, TpScheduleTask scheduleTask) { + Long taskId = scheduleTask.getId(); + String bizNo = scheduleTask.getBizNo(); + String tenantId = scheduleTask.getTenantId(); + + if (exception.getErrorCode() == PAY_ORDER_NOT_FOUND) { + super.makeTaskFailAndUpdateRetryCount(taskId, bizNo, scheduleTask.getRetryCount(), tenantId, exception); + } + + // 支付单已关单,幂等处理 + if (exception.getErrorCode() == IDEMPOTENT_REQUEST_ERROR) { + LogUtil.error("[支付单超时关单任务]执行任务幂等处理,原因为查询支付单已经关单,任务id:{},业务单号:{},异常堆栈:{}", taskId, bizNo, exception); + // 将任务状态设置为成功 + scheduleTaskService.updateTaskSuccess(taskId, bizNo, tenantId); + } + + // 支付单状态为已支付,将任务置为成功 + if (exception.getErrorCode() == TASK_NOT_SUPPORT_PAY_ORDER_STATUS) { + LogUtil.error("[支付单超时关单任务]执行任务错误,原因为查询支付单已经支付成功,任务id:{},业务单号:{},异常堆栈:{}", + taskId, bizNo, exception); + + scheduleTaskService.updateTaskSuccess(taskId, bizNo, tenantId); + } + + // 更新支付单和更新任务状态的事务回滚了,需要将任务状态更新为失败 + if (exception.getErrorCode() == UPDATE_PAY_ORDER_ERROR || exception.getErrorCode() == UPDATE_TASK_STATUS_ERROR) { + super.makeTaskFailAndUpdateRetryCount(taskId, bizNo, scheduleTask.getRetryCount(), tenantId, exception); + } + } + + @Override + protected void checkBizStatus(Long taskId, String bizNo, String tenantId) { + List payOrders = payOrderDomainService.queryPayOrderList(TpPayOrderQueryDTO.builder() + .payOrderNo(bizNo) + .tenantId(tenantId) + .build()); + + // 支付单不存在 + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("支付超时关单定时任务,支付单为空,任务id:{},支付单号:{}", taskId, bizNo); + throw new TpTradeCoreException(PAY_ORDER_NOT_FOUND, PAY_ORDER_NOT_FOUND.getDesc()); + } + + Assert.isTrue(payOrders.size() == 1, "通过支付单号查询支付单,返回的结果不唯一"); + TpPayOrder payOrder = payOrders.get(0); + // 支付单已关单,幂等处理 + if (StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.CLOSED.getCode())) { + throw new TpTradeCoreException(IDEMPOTENT_REQUEST_ERROR, IDEMPOTENT_REQUEST_ERROR.getDesc()); + } + + // 支付单已经支付成功,不需要改变 + if (StringUtils.equals(payOrder.getStatus(), TpPayOrderStatusEnum.PAID.getCode())) { + throw new TpTradeCoreException(TASK_NOT_SUPPORT_PAY_ORDER_STATUS, TASK_NOT_SUPPORT_PAY_ORDER_STATUS.getDesc()); + } + } + + @Override + protected void updateBizStatus(String bizNo, String tenantId) { + payOrderDomainService.closePayOrder(TpPayOrderCloseDTO.builder() + .payOrderNo(bizNo) + .tenantId(tenantId) + .build()); + } + + @Override + public TpScheduleTaskTypeEnum getTaskType() { + return TpScheduleTaskTypeEnum.CLOSE_PAY_ORDER; + } +}*/ diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/VoucherExpiredWorker.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/VoucherExpiredWorker.java new file mode 100644 index 0000000..2684af9 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/task/worker/VoucherExpiredWorker.java @@ -0,0 +1,232 @@ +package com.deepinnet.tptradecore.core.service.task.worker; + +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tpproductcore.common.dto.rule.*; +import com.deepinnet.tpproductcore.common.enums.TpRuleExpressionGroupEnum; +import com.deepinnet.tptradecore.common.dal.repository.rule.TpBizRuleRepository; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherRepository; +import com.deepinnet.tptradecore.common.dto.voucher.TpVoucherQueryDTO; +import com.deepinnet.tptradecore.common.enums.task.TpScheduleTaskTypeEnum; +import com.deepinnet.tptradecore.common.enums.voucher.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.client.TpBizRuleClient; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.model.voucher.*; +import com.deepinnet.tptradecore.core.service.voucher.*; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2023/9/5 11:33 + * @Description 凭证过期定时任务 + */ +@Component +public class VoucherExpiredWorker extends AbstractBaseTaskWorker { + @Resource + private TpVoucherRepository voucherRepository; + + @Resource + private TpVoucherDomainService voucherDomainService; + + @Resource + private TpVoucherVerificationDomainService verificationDomainService; + + @Resource + private MessageClient messageClient; + + @Resource + private TpBizRuleClient bizRuleClient; + + @Resource + private TpBizRuleRepository bizRuleRepository; + + @Override + public TpScheduleTaskTypeEnum getTaskType() { + return TpScheduleTaskTypeEnum.VOUCHER_EXPIRE; + } + + @Override + protected List needTerminatedErrorCode() { + return Lists.newArrayList(TpTradeCoreErrorCode.NOT_FOUND_VOUCHER, TpTradeCoreErrorCode.NOT_AVAILABLE_EXPIRE_VOUCHER_STATUS); + } + + @Override + protected void doOtherBiz(TpScheduleTask scheduleTask) { + String voucherNo = scheduleTask.getBizNo(); + TpVoucher voucher = voucherRepository.getByVoucherNo(voucherNo, scheduleTask.getTenantId()); + String orderNo = voucher.getOrderNo(); + + List voucherList = voucherRepository.getVoucherListForUpdate(orderNo, scheduleTask.getTenantId()); + TpVoucher curVoucher = voucherList.get(0); + if (StringUtils.equals(curVoucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + BaseMessageEntity expireMessageEntity = buildVoucherExpireMsg(voucherNo, orderNo, scheduleTask.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_VOUCHER_EXPIRED_SUCCESS, expireMessageEntity); + LogUtil.info("发送凭证失效的消息,消息体为:{},当前失效的凭证编号为:{}", JSONUtil.toJsonStr(expireMessageEntity), voucherNo); + } else { + // 如果是月票 + voucherList.sort(Comparator.comparing(TpVoucher::getEffectiveEndTime)); + TpVoucher tpVoucher = voucherList.get(voucherList.size() - 1); + if (StringUtils.equals(tpVoucher.getVoucherNo(), curVoucher.getVoucherNo())) { + BaseMessageEntity expireMessageEntity = buildVoucherExpireMsg(voucherNo, orderNo, scheduleTask.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_VOUCHER_EXPIRED_SUCCESS, expireMessageEntity); + LogUtil.info("发送凭证失效的消息,消息体为:{},当前失效的凭证编号为:{}", JSONUtil.toJsonStr(expireMessageEntity), voucherNo); + } + } + } + + @Override + protected void checkBizStatus(Long taskId, String bizNo, String tenantId) { + // 月票:定时任务执行时间一定是最后一天最晚检票时间之后 + TpVoucher voucher = voucherRepository.getByVoucherNo(bizNo, tenantId); + if (voucher == null) { + LogUtil.error("凭证过期定时任务,凭证不存在,任务执行失败,直接终止该任务,任务编号:{}", taskId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_VOUCHER); + } + + // 查询规则 + List voucherRules = bizRuleRepository.getBizRuleList(Lists.newArrayList(voucher.getVoucherNo()), null, tenantId); + if (CollectionUtils.isEmpty(voucherRules)) { + LogUtil.error("查询凭证列表失败,原因:凭证的规则不存在,voucherNo:{}", JSONUtil.toJsonStr(voucher.getVoucherNo())); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_RULE_NOT_FOUND); + } + voucher.setBizRuleList(voucherRules); + + if (StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.EXPIRED.getCode())) { + LogUtil.error("凭证过期定时任务,凭证状态为已过期,幂等处理,任务编号:{}", taskId); + throw new TpTradeCoreException(TpTradeCoreErrorCode.IDEMPOTENT_REQUEST_ERROR); + } + + // 只有部分核销、已创建的状态才能过期 + if (!TpVoucherStatusEnum.ENABLE_EXPIRE_STATUS_LIST.contains(voucher.getStatus())) { + LogUtil.error("当前凭证状态不支持过期处理,任务编号为:{},凭证编号为:{}", taskId, bizNo); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_AVAILABLE_EXPIRE_VOUCHER_STATUS); + } + + // 月票只有已创建和已过期的状态,需要结合核销记录来判断当天的状态 + if (!StringUtils.equals(TpVoucherTypeEnum.DAY.getCode(), voucher.getStatus())) { + long beginTime = LocalDateTimeUtil.toEpochMilli(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.now())); + List records = verificationDomainService.listVerificationRecord(Lists.newArrayList(bizNo), beginTime, System.currentTimeMillis(), tenantId); + if (CollectionUtils.isEmpty(records)) { + return; + } + + List successRecords = records.stream() + .filter(record -> StringUtils.equals(record.getResult(), TpVoucherVerifiedResultEnum.SUCCESS.getCode())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(successRecords)) { + return; + } + + // 只有当天部分核销才能过期 + int totalAvailableCount = getEveryDayTotalAvailableCount(voucher); + if (totalAvailableCount == successRecords.size()) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_AVAILABLE_EXPIRE_VOUCHER_STATUS); + } + } else { + // 日票,判断时间是否允许过期 + Long effectiveEndTime = voucher.getEffectiveEndTime(); + if (effectiveEndTime > System.currentTimeMillis()) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_AVAILABLE_EXPIRE_VOUCHER_STATUS); + } + } + } + + @Override + protected void updateBizStatus(String bizNo, String tenantId) { + voucherDomainService.expireVoucher(bizNo, tenantId); + } + + private BaseMessageEntity buildVoucherExpireMsg(String voucherNo, String orderNo, String tenantId) { + BaseMessageEntity baseMessageEntity = new BaseMessageEntity(); + baseMessageEntity.setSource(MessageSysConstants.SOURCE_VOUCHER); + baseMessageEntity.setKey(voucherNo); + baseMessageEntity.setSendTime(LocalDateTime.now()); + + VoucherExpireMessageEntity expireMessageEntity = new VoucherExpireMessageEntity(); + List voucherList = getVoucherList(orderNo, tenantId); + + boolean existValid = voucherList.stream() + .anyMatch(voucher -> StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.CREATED.getCode()) + || StringUtils.equals(voucher.getStatus(), TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode())); + expireMessageEntity.setExistValid(existValid); + expireMessageEntity.setVoucherNo(voucherNo); + expireMessageEntity.setOrderNo(orderNo); + expireMessageEntity.setTenantId(tenantId); + baseMessageEntity.setBody(JSONUtil.toJsonStr(expireMessageEntity)); + + return baseMessageEntity; + } + + private List getVoucherList(String orderNo, String tenantId) { + TpVoucherQueryDTO queryDTO = new TpVoucherQueryDTO(); + List curVoucherList = voucherDomainService.getVoucherList(queryDTO.setOrderNo(orderNo).setTenantId(tenantId)); + if (CollectionUtils.isEmpty(curVoucherList)) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_VOUCHER); + } + return curVoucherList; + } + + private int getEveryDayTotalAvailableCount(TpVoucher voucher) { + int everyDayTotalAvailableCount = 0; + if (StringUtils.equals(voucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + everyDayTotalAvailableCount = voucher.getTotalCount(); + } + if (StringUtils.equals(voucher.getType(), TpVoucherTypeEnum.WEEK.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucher, voucher.getBizRuleList(), TpRuleExpressionGroupEnum.WEEK_TICKET_USE_LIMIT); + } else if (StringUtils.equals(voucher.getType(), TpVoucherTypeEnum.MONTH.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucher, voucher.getBizRuleList(), TpRuleExpressionGroupEnum.MONTH_TICKET_USE_LIMIT); + } else if (StringUtils.equals(voucher.getType(), TpVoucherTypeEnum.TERM.getCode())) { + everyDayTotalAvailableCount = getEveryDayCheckCount(voucher, voucher.getBizRuleList(), TpRuleExpressionGroupEnum.SEMESTER_TICKET_USE_LIMIT); + } + + return everyDayTotalAvailableCount; + } + + private int getEveryDayCheckCount(TpVoucher tpVoucher, List bizRuleList, TpRuleExpressionGroupEnum ruleGroup) { + int everyDayCheckCount; + List checkEveryDayCountRules; + checkEveryDayCountRules = bizRuleList.stream() + .filter(rule -> StringUtils.equals(rule.getRuleGroup(), ruleGroup.getCode())) + .collect(Collectors.toList()); + + Assert.notEmpty(checkEveryDayCountRules, "校验每日可乘坐次数的规则不能为空"); + + List expressionList = checkEveryDayCountRules.stream() + .map(TpBizRule::getExpression) + .collect(Collectors.toList()); + + Assert.notEmpty(checkEveryDayCountRules, "每日限制乘车次数校验规则不能为空"); + everyDayCheckCount = ticketCheckCountRule(expressionList, tpVoucher.getPassengerCount(), ruleGroup, tpVoucher.getTenantId()); + return everyDayCheckCount; + } + + private int ticketCheckCountRule(List expressionList, Integer passengerCount, TpRuleExpressionGroupEnum ruleGroup, String tenantId) { + TpRuleExecuteDTO ruleExecuteDTO = new TpRuleExecuteDTO<>(); + TpRollShuttleTripsParamDTO checkParamDTO = new TpRollShuttleTripsParamDTO(); + ruleExecuteDTO.setRuleList(expressionList); + ruleExecuteDTO.setTenantId(tenantId); + ruleExecuteDTO.setParameter(checkParamDTO); + checkParamDTO.setPassengerCount(passengerCount); + ruleExecuteDTO.setRuleExpressionGroup(ruleGroup); + + TpRuleExecuteResultVO executeResult = bizRuleClient.executeRule(ruleExecuteDTO); + return executeResult.getResult(); + } + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/TpPayOrderDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/TpPayOrderDomainService.java new file mode 100644 index 0000000..68f2f57 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/TpPayOrderDomainService.java @@ -0,0 +1,90 @@ +package com.deepinnet.tptradecore.core.service.trans; + + +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.service.integration.dto.TpPayResultDTO; +import com.deepinnet.tptradecore.common.service.integration.dto.TpRefundResultDTO; +import com.deepinnet.tptradecore.core.model.trans.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * @author amos wong + * @create 2023/7/21 14:41 + * @Description 支付单领域服务 + */ + +@Valid +public interface TpPayOrderDomainService { + + /** + * 调用第三方支付工具的接口进行预支付,拉起收银台 + * + * @param tpPayOrder 支付单 + * @return 收银台地址 + */ + boolean createPayOrder(TpPayOrder tpPayOrder); + + /*** + * 主动查询支付结果的接口 + * @param dto + * @return 支付结果 + */ + TpPayResultDTO queryPayResult(TpQueryPayResultDTO dto); + + /** + * 第三方支付平台查询退款结果的接口 + * + * @param dto + * @return + */ + TpRefundResultDTO queryRefundResult(TpQueryRefundResultDTO dto); + + /** + * 查询支付单的接口 + * + * @param dto + * @return + */ + List queryPayOrderList(TpPayOrderQueryDTO dto); + + /** + * 关闭支付单的接口 + * + * @param dto + * @return + */ + Boolean closePayOrder(TpPayOrderCloseDTO dto); + + /** + * 批量关闭支付单接口 + * + * @param payOrderNos + * @param tenantId + * @return + */ + Boolean batchClosePayOrder(List payOrderNos, String tenantId); + + /** + * 更新支付单接口 + * + * @param updateDTO 入参 + * @return + */ + Boolean updatePayOrder(TpPayOrderUpdateDTO updateDTO); + + /** + * 支付成功 + * + * @return + */ + Boolean paySuccess(TpPaySuccessDTO paySuccessDTO); + + /** + * 退款成功 + * + * @return + */ + Boolean refundSuccess(TpRefundSuccessDTO refundSuccessDTO); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImpl.java new file mode 100644 index 0000000..621ade0 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/trans/impl/TpPayOrderDomainServiceImpl.java @@ -0,0 +1,412 @@ +package com.deepinnet.tptradecore.core.service.trans.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepinnet.tp.common.lang.constants.GlobalConstants; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.condition.trans.*; +import com.deepinnet.tptradecore.common.dal.dataobject.trans.TpPayOrderDO; +import com.deepinnet.tptradecore.common.dal.repository.trans.*; +import com.deepinnet.tptradecore.common.dto.trans.*; +import com.deepinnet.tptradecore.common.enums.trans.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.common.service.integration.dto.*; +import com.deepinnet.tptradecore.common.service.integration.mq.constants.*; +import com.deepinnet.tptradecore.common.service.integration.mq.entity.*; +import com.deepinnet.tptradecore.common.service.integration.mq.template.MessageClient; +import com.deepinnet.tptradecore.common.service.integration.strategy.PayStrategy; +import com.deepinnet.tptradecore.core.model.trans.*; +import com.deepinnet.tptradecore.core.service.trans.TpPayOrderDomainService; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.*; +import org.apache.commons.lang3.*; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2023/7/21 14:41 + * @Description 支付单领域服务 + */ +@Service +public class TpPayOrderDomainServiceImpl implements TpPayOrderDomainService, InitializingBean { + + @Resource + private TpPayOrderRepository payOrderRepository; + + @Resource + private TpBillRepository billRepository; + + @Resource + private TpChargeRepository chargeRepository; + + @Resource + private TpFinancialAccountRepository financialAccountRepository; + + @Resource + private TransactionTemplate tpTransactionTemplate; + + @Resource + private Map payStrategyMap; + + @Resource + private MessageClient messageClient; + + private final Map payTypeStrategyMap = new ConcurrentHashMap<>(); + + @Override + public void afterPropertiesSet() { + payStrategyMap + .values() + .parallelStream() + .forEach(payStrategy -> payTypeStrategyMap.put(payStrategy.getPayType(), payStrategy)); + } + + @Override + public boolean createPayOrder(TpPayOrder tpPayOrder) { + // 账单 + TpBill tpBill = tpPayOrder.getTpBill(); + + // 资金账户 + TpFinancialAccount payeeAccount = tpPayOrder.getPayeeAccount(); + TpFinancialAccount payerAccount = tpPayOrder.getPayerAccount(); + + // 计费单 + TpCharge tpCharge = tpPayOrder.getTpCharge(); + + tpTransactionTemplate.executeWithoutResult(action -> { + payOrderRepository.save(tpPayOrder); + if (tpBill != null) { + billRepository.save(tpBill); + } + + if (payeeAccount != null && payerAccount != null) { + financialAccountRepository.batchSave(Lists.newArrayList(payeeAccount, payerAccount)); + } + + if (ObjectUtils.isNotEmpty(tpCharge)) { + chargeRepository.save(tpCharge); + } + }); + + return true; + } + + @Override + public TpPayResultDTO queryPayResult(TpQueryPayResultDTO dto) { + // 优先查本地的支付单,如果已支付直接返回 + TpPayOrderQueryDTO queryDTO = BeanUtil.copyProperties(dto, TpPayOrderQueryDTO.class); + queryDTO.setTargetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAYING.getCode(), TpPayOrderStatusEnum.PAID.getCode())); + List payOrders = queryPayOrderList(queryDTO); + + if (CollectionUtils.isEmpty(payOrders)) { + LogUtil.error("当前订单不存在支付单,系统数据错误,请及时排查,入参:{}", JSONUtil.toJsonStr(dto)); + TpPayResultDTO payResultDTO = new TpPayResultDTO(); + payResultDTO.setPaySuccess(false); + return payResultDTO; + } + + List paidPayOrders = payOrders.stream() + .filter(payOrder -> TpPayOrderStatusEnum.PAID.getCode().equals(payOrder.getStatus())) + .collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(paidPayOrders)) { + if (paidPayOrders.size() > 1) { + LogUtil.error("同一笔订单出现了多笔已支付的支付单,需要及时排查,订单号为:{}", dto.getBizNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_PAID_PAY_ORDER); + } + TpPayOrder paidOrder = paidPayOrders.get(0); + TpPayResultDTO payResult = BeanUtil.copyProperties(paidOrder, TpPayResultDTO.class); + payResult.setPaySuccess(true); + return payResult; + } + + // 本地支付单未支付,查询支付平台的支付结果 + List payingPayOrders = payOrders.stream() + .filter(payOrder -> TpPayOrderStatusEnum.PAYING.getCode().equals(payOrder.getStatus())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(payingPayOrders)) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_IN_PROCESS_PAY_ORDER); + } + + if (payingPayOrders.size() > 1) { + LogUtil.error("同一笔订单出现了多笔待支付的支付单,需要及时排查,订单号为:{}", dto.getBizNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_UNPAID_PAY_ORDER); + } + + TpPayOrder payingPayOrder = payingPayOrders.get(0); + String platformOutTradeNo = dto.getBizNo() + GlobalConstants.HORIZONTAL_LINE + payingPayOrder.getPaySequence(); + TpPayResultDTO payResultDTO = payTypeStrategyMap.get(TpPayTypeEnum.getByCode(payingPayOrder.getPayType())) + .queryPayResult(new PayPlatformQueryResultDTO(platformOutTradeNo, null, null, dto.getBizType(), payingPayOrder.getPayScene(), + payingPayOrder.getPayeeAccount().getAccount(), dto.getOrgCode(), dto.getTenantId())); + if (payResultDTO.isPaySuccess()) { + this.paySuccess(TpPaySuccessDTO.builder() + .payOrderNo(payingPayOrder.getPayOrderNo()) + .outPayFlowId(payResultDTO.getOutPayFlowId()) + .payTime(payResultDTO.getPayTime()) + .tenantId(payingPayOrder.getTenantId()) + .build()); + + BaseMessageEntity messageEntity = buildPaySuccessMessage(payingPayOrder.getOrderNo(), payingPayOrder.getPayOrderNo(), payingPayOrder.getBizType(), + payResultDTO.getPayTime(), payingPayOrder.getTenantId()); + messageClient.send(messageClient.getMessageTopic(), MessageConstants.EVENT_CODE_TRANS_PAY_SUCCESS, messageEntity); + LogUtil.info("查询支付结果后发现用户已支付但是当前支付单的状态未变更为已支付,发送支付成功消息成功,支付单号为:{}", payingPayOrder.getPayOrderNo()); + } + + return payResultDTO; + } + + @Override + public TpRefundResultDTO queryRefundResult(TpQueryRefundResultDTO dto) { + // 优先查本地的支付单,如果已退款直接返回,退款幂等处理 + TpPayOrderQueryDTO queryDTO = TpPayOrderQueryDTO.builder().bizNo(dto.getRefundBizNo()).tenantId(dto.getTenantId()).build(); + queryDTO.setTargetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.REFUND.getCode(), TpPayOrderStatusEnum.REFUNDING.getCode())); + List payOrders = queryPayOrderList(queryDTO); + + if (CollectionUtils.isEmpty(payOrders)) { + return TpRefundResultDTO.builder().success(false).build(); + } + + List refundPayOrders = payOrders.stream() + .filter(payOrder -> TpPayOrderStatusEnum.REFUND.getCode().equals(payOrder.getStatus())) + .collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(refundPayOrders)) { + if (refundPayOrders.size() > 1) { + LogUtil.error("同一笔订单出现了多笔已支付的支付单,需要及时排查,订单号为:{}", dto.getRefundBizNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_REFUND_PAY_ORDER); + } + TpPayOrder refundPayOrder = refundPayOrders.get(0); + TpRefundResultDTO refundResult = BeanUtil.copyProperties(refundPayOrder, TpRefundResultDTO.class); + refundResult.setSuccess(true); + return refundResult; + } + + List refundingPayOrders = payOrders.stream() + .filter(payOrder -> TpPayOrderStatusEnum.REFUNDING.getCode().equals(payOrder.getStatus())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(refundingPayOrders)) { + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_IN_PROCESS_REFUND_PAY_ORDER); + } + + if (refundingPayOrders.size() > 1) { + LogUtil.error("同一笔订单出现了多笔退款中的支付单,需要及时排查,订单号为:{}", dto.getRefundBizNo()); + throw new TpTradeCoreException(TpTradeCoreErrorCode.DUPLICATED_REFUNDING_PAY_ORDER); + } + + TpPayOrder refundingPayOrder = refundingPayOrders.get(0); + + // 本地支付单未退款,查询支付平台的退款结果 + TpPayOrderQueryDTO paidPayOrderQueryDTO = TpPayOrderQueryDTO.builder().bizNo(dto.getPayBizNo()).tenantId(dto.getTenantId()).build(); + paidPayOrderQueryDTO.setTargetStatusList(Lists.newArrayList(TpPayOrderStatusEnum.PAID.getCode())); + List paidOrders = queryPayOrderList(paidPayOrderQueryDTO); + if (CollectionUtils.isEmpty(paidOrders)) { + LogUtil.error("查询退款结果接口,不存在已支付的支付单,入参为:{}", JSONUtil.toJsonStr(paidPayOrderQueryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.NOT_FOUND_PAID_PAY_ORDER); + } + TpPayOrder paidPayOrder = paidOrders.get(0); + String platformPayBizNo = paidPayOrder.getBizNo() + GlobalConstants.HORIZONTAL_LINE + paidPayOrder.getPaySequence(); + + TpRefundResultDTO refundResultDTO = payTypeStrategyMap.get(TpPayTypeEnum.getByCode(refundingPayOrder.getPayType())) + .queryRefundResult(new PayPlatformQueryResultDTO(platformPayBizNo, paidPayOrder.getOutPayFlowId(), dto.getRefundBizNo(), refundingPayOrder.getBizType(), refundingPayOrder.getPayScene(), + refundingPayOrder.getPayerAccount().getAccount(), dto.getOrgCode(), dto.getTenantId())); + + if (refundResultDTO.isSuccess()) { + this.refundSuccess(TpRefundSuccessDTO.builder() + .refundPayOrderNo(refundingPayOrder.getPayOrderNo()) + .tenantId(refundingPayOrder.getTenantId()) + .build()); + } + + // 支付平台查询未退款,直接返回结果 + return refundResultDTO; + } + + @Override + public List queryPayOrderList(TpPayOrderQueryDTO dto) { + QueryPayOrderCondition queryCondition = BeanUtil.copyProperties(dto, QueryPayOrderCondition.class); + List payOrders = payOrderRepository.listPayOrderByCondition(queryCondition); + if (CollectionUtils.isEmpty(payOrders)) { + return Lists.newArrayList(); + } + + List payOrderNos = payOrders.stream() + .distinct() + .map(TpPayOrder::getPayOrderNo) + .collect(Collectors.toList()); + + String tenantId = payOrders.get(0).getTenantId(); + + // 账单 + List tpBills = billRepository.listByPayOrderNos(payOrderNos, tenantId); + Assert.notEmpty(tpBills, "账单不能为空"); + Map billMap = tpBills.stream() + .collect(Collectors.toMap(TpBill::getPayOrderNo, Function.identity())); + + // 计费单 + List tpCharges = chargeRepository.listByPayOrderNos(payOrderNos, tenantId); + Map chargeMap = tpCharges.stream() + .collect(Collectors.toMap(TpCharge::getPayOrderNo, Function.identity())); + + // 资金账户 + List financialAccounts = financialAccountRepository.listByPayOrderNos(payOrderNos, tenantId); + Assert.notEmpty(tpBills, "资金账户不能为空"); + Map> financialAccountMap = financialAccounts.stream() + .collect(Collectors.groupingBy(TpFinancialAccount::getBizNo)); + + payOrders.forEach(payOrder -> { + TpBill tpBill = billMap.get(payOrder.getPayOrderNo()); + payOrder.setTpBill(tpBill); + + if (MapUtils.isNotEmpty(chargeMap)) { + payOrder.setTpCharge(chargeMap.get(payOrder.getPayOrderNo())); + } + + List financialAccountList = financialAccountMap.get(payOrder.getPayOrderNo()); + if (CollectionUtils.isEmpty(financialAccountList)) { + return; + } + TpFinancialAccount payerAccount = financialAccountList.stream() + .filter(account -> StringUtils.equals(account.getAccountType(), TpFinancialAccountTypeEnum.PAYER.getCode())) + .findFirst() + .get(); + + TpFinancialAccount payeeAccount = financialAccountList.stream() + .filter(account -> StringUtils.equals(account.getAccountType(), TpFinancialAccountTypeEnum.PAYEE.getCode())) + .findFirst() + .get(); + payOrder.setPayerAccount(payerAccount); + payOrder.setPayeeAccount(payeeAccount); + }); + + return payOrders; + } + + @Override + public Boolean closePayOrder(TpPayOrderCloseDTO dto) { + UpdatePayOrderCondition updateCondition = BeanUtil.copyProperties(dto, UpdatePayOrderCondition.class); + updateCondition.setOriginalStatus(TpPayOrderStatusEnum.PAYING.getCode()); + updateCondition.setTargetStatus(TpPayOrderStatusEnum.CLOSED.getCode()); + return payOrderRepository.updatePayOrderByCondition(updateCondition); + } + + @Override + public Boolean batchClosePayOrder(List payOrderNos, String tenantId) { + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() + .in(TpPayOrderDO::getPayOrderNo, payOrderNos) + .eq(TpPayOrderDO::getTenantId, tenantId) + .set(TpPayOrderDO::getStatus, TpPayOrderStatusEnum.CLOSED.getCode()); + return payOrderRepository.update(wrapper); + } + + @Override + public Boolean updatePayOrder(TpPayOrderUpdateDTO updateDTO) { + UpdatePayOrderCondition updateCondition = BeanUtil.copyProperties(updateDTO, UpdatePayOrderCondition.class); + return payOrderRepository.updatePayOrderByCondition(updateCondition); + } + + @Override + public Boolean paySuccess(TpPaySuccessDTO paySuccessDTO) { + tpTransactionTemplate.executeWithoutResult(action -> { + boolean isSuccess = payOrderRepository.updatePayOrderByCondition(UpdatePayOrderCondition.builder() + .payOrderNo(paySuccessDTO.getPayOrderNo()) + .tenantId(paySuccessDTO.getTenantId()) + .payTime(paySuccessDTO.getPayTime()) + .outPayFlowId(paySuccessDTO.getOutPayFlowId()) + .originalStatus(TpPayOrderStatusEnum.PAYING.getCode()) + .targetStatus(TpPayOrderStatusEnum.PAID.getCode()) + .build()); + if (!isSuccess) { + LogUtil.error("更新支付单状态为已支付失败,入参为:{}", JSONUtil.toJsonStr(paySuccessDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.UPDATE_PAY_ORDER_ERROR, TpTradeCoreErrorCode.UPDATE_PAY_ORDER_ERROR.getDesc()); + } + + isSuccess = billRepository.updateByCondition(UpdateBillCondition.builder() + .payOrderNo(paySuccessDTO.getPayOrderNo()) + .tenantId(paySuccessDTO.getTenantId()) + .originalStatus(TpBillStatusEnum.INIT.getCode()) + .targetStatus(TpBillStatusEnum.PAID.getCode()) + .build()); + if (!isSuccess) { + LogUtil.error("更新账单为已支付失败,入参为:{}", JSONUtil.toJsonStr(paySuccessDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.UPDATE_BILL_ERROR, TpTradeCoreErrorCode.UPDATE_BILL_ERROR.getDesc()); + } + }); + return true; + } + + @Override + public Boolean refundSuccess(TpRefundSuccessDTO refundSuccessDTO) { + TpPayOrder refundPayOrder = payOrderRepository.getByCondition(QueryPayOrderCondition.builder() + .payOrderNo(refundSuccessDTO.getRefundPayOrderNo()) + .tenantId(refundSuccessDTO.getTenantId()) + .build()); + + if (refundPayOrder == null) { + LogUtil.error("退款支付单不存在,系统数据错误,请及时排查,入参:{}", JSONUtil.toJsonStr(refundSuccessDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.PAY_ORDER_NOT_FOUND); + } + + TpCharge tpCharge = chargeRepository.queryByCondition(QueryChargeCondition.builder() + .payOrderNo(refundSuccessDTO.getRefundPayOrderNo()) + .tenantId(refundSuccessDTO.getTenantId()) + .build()); + + tpTransactionTemplate.executeWithoutResult(action -> { + payOrderRepository.updatePayOrderByCondition(UpdatePayOrderCondition.builder() + .payOrderNo(refundSuccessDTO.getRefundPayOrderNo()) + .tenantId(refundSuccessDTO.getTenantId()) + .originalStatus(TpPayOrderStatusEnum.REFUNDING.getCode()) + .targetStatus(TpPayOrderStatusEnum.REFUND.getCode()) + .payTime(refundSuccessDTO.getRefundTime()) + .build()); + + billRepository.updateByCondition(UpdateBillCondition.builder() + .payOrderNo(refundSuccessDTO.getRefundPayOrderNo()) + .originalStatus(TpBillStatusEnum.INIT.getCode()) + .targetStatus(TpBillStatusEnum.REFUND.getCode()) + .build()); + + if (tpCharge != null) { + chargeRepository.updateByCondition(UpdateChargeCondition.builder() + .payOrderNo(refundSuccessDTO.getRefundPayOrderNo()) + .tenantId(refundSuccessDTO.getTenantId()) + .originalStatus(TpChargeStatusEnum.INIT.getCode()) + .targetStatus(TpChargeStatusEnum.REFUND.getCode()) + .build()); + } + }); + + return true; + } + + private BaseMessageEntity buildPaySuccessMessage(String orderNo, String payOrderNo, String bizType, Long payTime, String tenantId) { + BaseMessageEntity messageEntity = new BaseMessageEntity(); + messageEntity.setKey(payOrderNo); + messageEntity.setSource(MessageSysConstants.SOURCE_TRANS); + messageEntity.setSendTime(LocalDateTime.now()); + + PaySuccessMessageEntity payOrderSuccessEntity = new PaySuccessMessageEntity(); + payOrderSuccessEntity.setPayOrderNo(payOrderNo); + payOrderSuccessEntity.setOrderNo(orderNo); + payOrderSuccessEntity.setBizType(bizType); + payOrderSuccessEntity.setPayTime(payTime); + payOrderSuccessEntity.setTenantId(tenantId); + String body = JSONUtil.toJsonStr(payOrderSuccessEntity); + messageEntity.setBody(body); + return messageEntity; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherDomainService.java new file mode 100644 index 0000000..3a29488 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherDomainService.java @@ -0,0 +1,104 @@ +package com.deepinnet.tptradecore.core.service.voucher; + + +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import com.deepinnet.tptradecore.core.model.voucher.*; + +import java.util.*; + +/** + * @author amos wong + * @create 2023/7/21 14:42 + * @Description 凭证域领域服务 + */ +public interface TpVoucherDomainService { + + /** + * 生成凭证的接口 + * + * @param voucherList + * @return + */ + Boolean createVoucher(List voucherList); + + /** + * 查询凭证列表 + */ + List getVoucherList(TpVoucherQueryDTO queryDTO); + + /** + * 查询凭证列表 + */ + List getVoucherListWithNeedProperties(TpVoucherQueryDTO queryDTO); + + /** + * 查询某个凭证 + * + * @param queryDTO + * @return + */ + TpVoucher getVoucher(TpVoucherQueryDTO queryDTO); + + /** + * 检票成功 + */ + void checkSuccess(TpVoucher tpVoucher, Long verificationTime, Integer everyDayTotalAvailableCount, Integer curVerificationCount, String validationType); + + /** + * 线下预约(临安村村通)批量全部核销成功,通过国朗的回调来核销 + * + * @param voucherList + * @param verificationTime + * @param validationType + */ + void villageBatchCheckSuccess(List voucherList, Long verificationTime, String userNo, String validationType, String tenantId); + + /** + * 团体票批量检票成功 + * + * @param tpVoucher + * @param verificationTime + * @param everyDayTotalAvailableCount + * @param curVerificationCount + * @param validationType + */ + void groupTicketBatchCheckSuccess(TpVoucher tpVoucher, Long verificationTime, Integer everyDayTotalAvailableCount, Integer curVerificationCount, String validationType); + + /** + * 检票失败 + * + * @param tpVoucher + * @param verificationTime + */ + void checkFail(TpVoucher tpVoucher, Long verificationTime, String checkType); + + /** + * 出行凭证失效,应用于退票的场景 + * + * @return 核销结果 + */ + Boolean batchInvalidVouchers(List voucherUpdateDTOs); + + /** + * 改签失效凭证 + * + * @param invalidVoucherDTOs + * @return + */ + Boolean rescheduleInvalidVoucher(List invalidVoucherDTOs); + + /** + * 查询凭证规则 + * + * @param bizNos + * @param ruleTypes + * @return + */ + List getVoucherRules(List bizNos, List ruleTypes, String tenantId); + + + Boolean expireVoucher(String voucherNo, String tenantId); + + List getVoucherPassengerList(String routeCode, String shuttleCode, Date shuttleDate, String tenantId); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherVerificationDomainService.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherVerificationDomainService.java new file mode 100644 index 0000000..598bdda --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/TpVoucherVerificationDomainService.java @@ -0,0 +1,22 @@ +package com.deepinnet.tptradecore.core.service.voucher; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tptradecore.common.dal.condition.voucher.VoucherVerificationQueryCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.MngVoucherVerificationRecordQueryResult; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherVerificationRecord; + +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/7 13:58 + * @Description + */ +public interface TpVoucherVerificationDomainService { + + List listVerificationRecord(List voucherNos, Long startTime, Long endTime, String tenantId); + + List getTimeRangeVerificationRecord(String userNo, Long startTime, Long endTime, String tenantId); + + CommonPage queryMngVerificationRecords(VoucherVerificationQueryCondition queryCondition); +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherDomainServiceImpl.java new file mode 100644 index 0000000..68586a5 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherDomainServiceImpl.java @@ -0,0 +1,448 @@ +package com.deepinnet.tptradecore.core.service.voucher.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.*; +import cn.hutool.json.JSONUtil; +import com.deepinnet.tp.common.lang.util.LogUtil; +import com.deepinnet.tptradecore.common.dal.condition.voucher.*; +import com.deepinnet.tptradecore.common.dal.convert.voucher.*; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.TpVoucherDO; +import com.deepinnet.tptradecore.common.dal.repository.rule.TpBizRuleRepository; +import com.deepinnet.tptradecore.common.dal.repository.voucher.*; +import com.deepinnet.tptradecore.common.dto.voucher.*; +import com.deepinnet.tptradecore.common.enums.task.*; +import com.deepinnet.tptradecore.common.enums.trans.TpVoucherNeedPropertiesEnum; +import com.deepinnet.tptradecore.common.enums.voucher.*; +import com.deepinnet.tptradecore.common.error.TpTradeCoreErrorCode; +import com.deepinnet.tptradecore.common.exception.TpTradeCoreException; +import com.deepinnet.tptradecore.core.model.rule.TpBizRule; +import com.deepinnet.tptradecore.core.model.task.TpScheduleTask; +import com.deepinnet.tptradecore.core.model.voucher.*; +import com.deepinnet.tptradecore.core.service.task.TpScheduleTaskService; +import com.deepinnet.tptradecore.core.service.voucher.TpVoucherDomainService; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author amos wong + * @create 2023/7/21 14:42 + * @Description 凭证域领域服务 + */ +@Service +public class TpVoucherDomainServiceImpl implements TpVoucherDomainService { + + @Resource + private TpVoucherRepository voucherRepository; + + @Resource + private TpVoucherPassengerRepository passengerRepository; + + @Resource + private TpBizRuleRepository bizRuleRepository; + + @Resource + private TpVoucherVerificationRecordRepository verificationRecordRepository; + + @Resource + private TpScheduleTaskService scheduleTaskService; + + @Resource + private TpVoucherMapStructConvert voucherMapStructConvert; + + @Resource + private TransactionTemplate transactionTemplate; + + @Value("${spring.profiles.active}") + private String env; + + @Value("${spring.application.name}") + private String applicationName; + + private static final String DATE_FORMAT = "HH:mm"; + + @Override + public Boolean createVoucher(List voucherList) { + if (CollectionUtils.isEmpty(voucherList)) { + return Boolean.FALSE; + } + + List tpVoucherDOS = voucherMapStructConvert.convert2DOList(voucherList); + List passengerList = new ArrayList<>(); + voucherList.forEach(voucher -> { + if (voucher.getPassenger() != null) { + passengerList.add(voucher.getPassenger()); + } + }); + + transactionTemplate.executeWithoutResult(action -> { + // 凭证 + voucherRepository.saveBatch(tpVoucherDOS); + + // 凭证关联的乘客信息 + if (CollectionUtils.isNotEmpty(passengerList)) { + passengerRepository.saveBatch(TpVoucherPassengerMapStructConvert.INSTANCE.convert2DOList(passengerList)); + } + + // 凭证业务规则 + List bizRuleList = new ArrayList<>(); + voucherList.forEach(voucher -> bizRuleList.addAll(voucher.getBizRuleList())); + bizRuleRepository.batchSave(bizRuleList); + }); + + // 线下的村村通不插入凭证过期的定时任务,因为POS机的凭证最晚检票时间很长并未与我们这里的保持一致 + boolean isOfflineVillageChannel = StringUtils.equals(voucherList.get(0).getChannel(), TpVoucherChannelEnum.OFFLINE_VILLAGE.getCode()); + if (isOfflineVillageChannel) { + return Boolean.TRUE; + } + + // 凭证过期的定时任务,可以降级处理 + try { + List scheduleTasks = buildVoucherExpireScheduleTasks(voucherList); + scheduleTaskService.batchInsertScheduleTasks(scheduleTasks); + } catch (Exception e) { + LogUtil.error("插入凭证过期的定时任务失败,降级处理,凭证列表为:{},异常堆栈为:{}", JSONUtil.toJsonStr(voucherList), e); + } + + return Boolean.TRUE; + } + + private List buildVoucherExpireScheduleTasks(List voucherList) { + List scheduleTasks = Lists.newArrayList(); + voucherList.forEach(voucher -> { + TpScheduleTask scheduleTask = new TpScheduleTask(); + scheduleTask.setBizNo(voucher.getVoucherNo()); + scheduleTask.setTaskType(TpScheduleTaskTypeEnum.VOUCHER_EXPIRE.getType()); + scheduleTask.setStatus(TpScheduleTaskStatusEnum.WAIT_EXECUTE.getStatus()); + scheduleTask.setSource(applicationName); + scheduleTask.setEnv(env); + + LocalDateTime effectiveEndDate = LocalDateTimeUtil.of(voucher.getEffectiveEndTime()); + // 处理最晚检票时间的时、分 + String latestCheckTime = voucher.getLatestCheckTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT); + LocalTime lateCheckLocalTime = LocalTime.parse(latestCheckTime, formatter); + // 计算最终时间=最晚检票时间+1分钟 + LocalDateTime finalTriggerTime = LocalDateTime.of(effectiveEndDate.toLocalDate(), lateCheckLocalTime).plusMinutes(1); + + int delayRandomSecond = RandomUtil.randomInt(10, 100); + scheduleTask.setTriggerTime(LocalDateTimeUtil.toEpochMilli(finalTriggerTime.plusSeconds(delayRandomSecond))); + scheduleTask.setExecuteTime(null); + scheduleTask.setRetryCount(0); + scheduleTask.setTenantId(voucher.getTenantId()); + scheduleTasks.add(scheduleTask); + }); + + return scheduleTasks; + } + + @Override + public List getVoucherList(TpVoucherQueryDTO queryDTO) { + QueryCondition queryVoucherCondition = BeanUtil.copyProperties(queryDTO, QueryCondition.class); + List voucherList = voucherRepository.getVoucherList(queryVoucherCondition); + if (CollectionUtils.isEmpty(voucherList)) { + return null; + } + + List voucherNos = voucherList.stream() + .map(TpVoucher::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + + // 查询乘客 + List voucherPassengerList = passengerRepository.getVoucherPassengerList(voucherNos, queryDTO.getTenantId()); + + // 查询规则 + List voucherRules = bizRuleRepository.getBizRuleList(voucherNos, null, queryDTO.getTenantId()); + if (CollectionUtils.isEmpty(voucherRules)) { + LogUtil.error("查询凭证列表失败,原因:凭证的规则不存在,入参为:{}", JSONUtil.toJsonStr(queryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_RULE_NOT_FOUND); + } + + Map> bizRuleMap = voucherRules.stream() + .collect(Collectors.groupingBy(TpBizRule::getBizNo)); + + Map voucherPassengerMap = null; + if (CollectionUtils.isNotEmpty(voucherPassengerList)) { + voucherPassengerMap = voucherPassengerList.stream() + .collect(Collectors.toMap(TpVoucherPassenger::getVoucherNo, Function.identity())); + } + + for (TpVoucher voucher : voucherList) { + // 设置乘客 + if (MapUtils.isNotEmpty(voucherPassengerMap)) { + TpVoucherPassenger voucherPassenger = voucherPassengerMap.get(voucher.getVoucherNo()); + voucher.setPassenger(voucherPassenger); + } + + // 设置凭证的规则 + List bizRules = bizRuleMap.get(voucher.getVoucherNo()); + voucher.setBizRuleList(bizRules); + } + + return voucherList; + } + + @Override + public List getVoucherListWithNeedProperties(TpVoucherQueryDTO queryDTO) { + QueryCondition queryCondition = convert2VoucherQueryCondition(queryDTO); + List voucherList = voucherRepository.getVoucherList(queryCondition); + if (CollectionUtils.isEmpty(voucherList)) { + return null; + } + + if (StringUtils.isNotBlank(queryDTO.getTripType())) { + voucherList.removeIf(v -> !StringUtils.equals(v.getTripType(), queryDTO.getTripType())); + } + + if (CollectionUtils.isEmpty(voucherList)) { + return null; + } + + List needProperties = queryDTO.getNeedProperties(); + if (CollectionUtils.isEmpty(needProperties)) { + return voucherList; + } + + List voucherNos = voucherList.stream() + .map(TpVoucher::getVoucherNo) + .distinct() + .collect(Collectors.toList()); + + // 查询乘客 + if (needProperties.contains(TpVoucherNeedPropertiesEnum.PASSENGER.getCode())) { + List voucherPassengerList = passengerRepository.getVoucherPassengerList(voucherNos, queryDTO.getTenantId()); + Map voucherPassengerMap = null; + if (CollectionUtils.isNotEmpty(voucherPassengerList)) { + voucherPassengerMap = voucherPassengerList.stream().collect(Collectors.toMap(TpVoucherPassenger::getVoucherNo, Function.identity())); + } + + // 设置乘客 + for (TpVoucher voucher : voucherList) { + if (MapUtils.isNotEmpty(voucherPassengerMap)) { + TpVoucherPassenger voucherPassenger = voucherPassengerMap.get(voucher.getVoucherNo()); + voucher.setPassenger(voucherPassenger); + } + } + } + + // 查询规则 + if (needProperties.contains(TpVoucherNeedPropertiesEnum.BIZ_RULE.getCode())) { + List voucherRules = bizRuleRepository.getBizRuleList(voucherNos, null, queryDTO.getTenantId()); + if (CollectionUtils.isEmpty(voucherRules)) { + LogUtil.error("查询凭证列表失败,原因:凭证的规则不存在,入参为:{}", JSONUtil.toJsonStr(queryDTO)); + throw new TpTradeCoreException(TpTradeCoreErrorCode.VOUCHER_RULE_NOT_FOUND); + } + + Map> bizRuleMap = voucherRules.stream() + .collect(Collectors.groupingBy(TpBizRule::getBizNo)); + + for (TpVoucher voucher : voucherList) { + // 设置凭证的规则 + List bizRules = bizRuleMap.get(voucher.getVoucherNo()); + voucher.setBizRuleList(bizRules); + } + } + + // 过滤状态 + if (CollectionUtils.isNotEmpty(queryDTO.getTargetStatusList())) { + List targetStatusList = queryDTO.getTargetStatusList(); + voucherList = voucherList.stream() + .filter(voucher -> targetStatusList.contains(voucher.getStatus())) + .collect(Collectors.toList()); + } + + return voucherList; + } + + @Override + public TpVoucher getVoucher(TpVoucherQueryDTO queryDTO) { + TpVoucher tpVoucher = voucherRepository.getByVoucherNo(queryDTO.getVoucherNo(), queryDTO.getTenantId()); + if (tpVoucher == null) { + return null; + } + + TpVoucherPassenger voucherPassenger = passengerRepository.getVoucherPassenger(queryDTO.getVoucherNo(), queryDTO.getTenantId()); + if (voucherPassenger != null) { + tpVoucher.setPassenger(voucherPassenger); + } + + List bizRuleList = bizRuleRepository.getBizRuleList(Lists.newArrayList(tpVoucher.getVoucherNo()), null, queryDTO.getTenantId()); + Assert.notEmpty(bizRuleList, "凭证检票规则不能为空"); + tpVoucher.setBizRuleList(bizRuleList); + + return tpVoucher; + } + + @Override + public void checkSuccess(TpVoucher tpVoucher, Long verificationTime, Integer everyDayTotalAvailableCount, Integer curVerificationCount, String validationType) { + if (StringUtils.equals(tpVoucher.getType(), TpVoucherTypeEnum.DAY.getCode())) { + Integer totalCount = tpVoucher.getTotalCount(); + Integer refundCount = tpVoucher.getRefundCount(); + Integer redemptionCount = tpVoucher.getRedemptionCount(); + int availableCount = totalCount - refundCount; + + Assert.isTrue(totalCount >= redemptionCount, "总可用次数必须大于已核销次数"); + + // 日票根据可用的次数去更新状态 + if (tpVoucher.getRedemptionCount() == availableCount - 1) { + voucherRepository.updateByCondition(UpdateCondition.builder() + .voucherNo(tpVoucher.getVoucherNo()) + .redemptionCount(redemptionCount + 1) + .originalStatus(tpVoucher.getStatus()) + .targetStatus(TpVoucherStatusEnum.FULLY_VERIFIED.getCode()) + .tenantId(tpVoucher.getTenantId()) + .build()); + } else { + voucherRepository.updateByCondition(UpdateCondition.builder() + .voucherNo(tpVoucher.getVoucherNo()) + .redemptionCount(tpVoucher.getRedemptionCount() + 1) + .originalStatus(tpVoucher.getStatus()) + .targetStatus(TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode()) + .tenantId(tpVoucher.getTenantId()) + .build()); + } + } else { + // 非日票判断是否到达最后一天,根据最后一天的状态去更新状态,否则不更新状态 + LocalDateTime effectiveEndTime = LocalDateTimeUtil.of(tpVoucher.getEffectiveEndTime()); + String targetStatus = null; + if (LocalDateTimeUtil.beginOfDay(effectiveEndTime).isEqual(LocalDateTimeUtil.beginOfDay(LocalDateTime.now()))) { + if (ObjectUtil.equals(curVerificationCount + 1, everyDayTotalAvailableCount)) { + targetStatus = TpVoucherStatusEnum.FULLY_VERIFIED.getCode(); + } + } + + voucherRepository.updateByCondition(UpdateCondition.builder() + .voucherNo(tpVoucher.getVoucherNo()) + .originalStatus(tpVoucher.getStatus()) + .redemptionCount(tpVoucher.getRedemptionCount() + 1) + .targetStatus(targetStatus) + .tenantId(tpVoucher.getTenantId()) + .build()); + } + + // 持久化检票记录 + verificationRecordRepository.save(TpVoucherVerificationMapStructConvert.INSTANCE.buildVerificationRecord(tpVoucher, verificationTime, TpVoucherVerifiedResultEnum.SUCCESS.getCode(), validationType, 1)); + } + + @Override + public void villageBatchCheckSuccess(List voucherList, Long verificationTime, String userNo, String validationType, String tenantId) { + List voucherNos = voucherList.stream().map(TpVoucher::getVoucherNo) + .collect(Collectors.toList()); + + List voucherUpdateList = Lists.newArrayList(); + voucherList.forEach(v -> { + Integer totalCount = v.getTotalCount(); + Integer refundCount = v.getRefundCount(); + Integer redemptionCount = v.getRedemptionCount(); + int availableCount = totalCount - refundCount - redemptionCount; + Assert.isTrue(availableCount >= 1, "可用次数必须大于1次"); + + TpVoucherDO voucherDO = new TpVoucherDO(); + voucherDO.setId(v.getId()); + voucherDO.setRedemptionCount(v.getRedemptionCount() + 1); + if (availableCount == 1) { + voucherDO.setStatus(TpVoucherStatusEnum.FULLY_VERIFIED.getCode()); + } else { + voucherDO.setStatus(TpVoucherStatusEnum.PARTIAL_VERIFIED.getCode()); + } + + voucherUpdateList.add(voucherDO); + }); + + transactionTemplate.executeWithoutResult(action -> { + voucherRepository.updateBatchById(voucherUpdateList); + verificationRecordRepository.saveBatch(TpVoucherVerificationMapStructConvert.INSTANCE.batchBuildVerificationRecord(voucherNos, userNo, tenantId, verificationTime, TpVoucherVerifiedResultEnum.SUCCESS.getCode(), validationType, 1)); + }); + } + + @Override + public void groupTicketBatchCheckSuccess(TpVoucher tpVoucher, Long verificationTime, Integer everyDayTotalAvailableCount, Integer curVerificationCount, String validationType) { + Integer totalCount = tpVoucher.getTotalCount(); + Integer refundCount = tpVoucher.getRefundCount(); + Integer redemptionCount = tpVoucher.getRedemptionCount(); + int availableCount = totalCount - refundCount - redemptionCount; + Assert.isTrue(availableCount > 0, "可用次数必须大于0"); + + transactionTemplate.executeWithoutResult(action -> { + // 直接更新为全部核销 + voucherRepository.updateByCondition(UpdateCondition.builder() + .voucherNo(tpVoucher.getVoucherNo()) + .redemptionCount(availableCount) + .originalStatus(tpVoucher.getStatus()) + .targetStatus(TpVoucherStatusEnum.FULLY_VERIFIED.getCode()) + .tenantId(tpVoucher.getTenantId()) + .build()); + + // 持久化检票记录 + verificationRecordRepository.save(TpVoucherVerificationMapStructConvert.INSTANCE.buildVerificationRecord(tpVoucher, verificationTime, TpVoucherVerifiedResultEnum.SUCCESS.getCode(), validationType, availableCount)); + }); + } + + @Override + public void checkFail(TpVoucher tpVoucher, Long verificationTime, String validationType) { + verificationRecordRepository.save(TpVoucherVerificationMapStructConvert.INSTANCE.buildVerificationRecord(tpVoucher, verificationTime, TpVoucherVerifiedResultEnum.FAIL.getCode(), validationType, null)); + } + + @Override + public Boolean batchInvalidVouchers(List voucherUpdateDTOs) { + if (CollectionUtils.isEmpty(voucherUpdateDTOs)) { + return Boolean.FALSE; + } + + voucherRepository.batchUpdate(voucherUpdateDTOs); + return Boolean.TRUE; + } + + @Override + public Boolean rescheduleInvalidVoucher(List invalidVoucherDTOs) { + if (CollectionUtils.isEmpty(invalidVoucherDTOs)) { + return true; + } + + return voucherRepository.updateInvalidVouchers(invalidVoucherDTOs); + } + + @Override + public List getVoucherRules(List bizNos, List ruleGroups, String tenantId) { + return bizRuleRepository.getBizRuleList(bizNos, ruleGroups, tenantId); + } + + @Override + public Boolean expireVoucher(String voucherNo, String tenantId) { + return voucherRepository.updateByCondition(UpdateCondition.builder() + .voucherNo(voucherNo) + .targetStatus(TpVoucherStatusEnum.EXPIRED.getCode()) + .tenantId(tenantId) + .build()); + } + + @Override + public List getVoucherPassengerList(String routeCode, String shuttleCode, Date shuttleDate, String tenantId) { + return TpVoucherPassengerMapStructConvert.INSTANCE.do2modelList(voucherRepository.getVoucherPassengerList(routeCode, shuttleCode, shuttleDate, tenantId)); + } + + private QueryCondition convert2VoucherQueryCondition(TpVoucherQueryDTO queryDTO) { + QueryCondition queryCondition = new QueryCondition(); + queryCondition.setUserNo(queryDTO.getUserNo()); + queryCondition.setOrderNo(queryDTO.getOrderNo()); + queryCondition.setVoucherNo(queryDTO.getVoucherNo()); + queryCondition.setProductCategoryNo(queryDTO.getProductCategoryNo()); + queryCondition.setVoucherNos(queryDTO.getVoucherNos()); + queryCondition.setTenantId(queryDTO.getTenantId()); + return queryCondition; + } +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherVerificationDomainServiceImpl.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherVerificationDomainServiceImpl.java new file mode 100644 index 0000000..e97c634 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/service/voucher/impl/TpVoucherVerificationDomainServiceImpl.java @@ -0,0 +1,51 @@ +package com.deepinnet.tptradecore.core.service.voucher.impl; + +import com.deepinnet.tp.common.lang.page.CommonPage; +import com.deepinnet.tptradecore.common.dal.condition.voucher.VoucherVerificationQueryCondition; +import com.deepinnet.tptradecore.common.dal.dataobject.voucher.MngVoucherVerificationRecordQueryResult; +import com.deepinnet.tptradecore.common.dal.repository.voucher.TpVoucherVerificationRecordRepository; +import com.deepinnet.tptradecore.core.model.voucher.TpVoucherVerificationRecord; +import com.deepinnet.tptradecore.core.service.voucher.TpVoucherVerificationDomainService; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author amos wong + * @create 2023/8/7 13:58 + * @Description + */ +@Service +public class TpVoucherVerificationDomainServiceImpl implements TpVoucherVerificationDomainService { + + @Resource + private TpVoucherVerificationRecordRepository verificationRecordRepository; + + @Override + public List listVerificationRecord(List voucherNos, Long startTime, + Long endTime, String tenantId) { + return verificationRecordRepository.getVerificationRecordList(voucherNos, startTime, endTime, tenantId); + } + + @Override + public List getTimeRangeVerificationRecord(String userNo, Long startTime, Long endTime, String tenantId) { + return verificationRecordRepository.getTimeRangeVerificationRecord(userNo, startTime, endTime, tenantId); + } + + @Override + public CommonPage queryMngVerificationRecords(VoucherVerificationQueryCondition queryCondition) { + Page page = PageHelper.startPage(queryCondition.getPageNum(), queryCondition.getPageSize()); + List resultList = verificationRecordRepository.queryMngVerificationRecords(queryCondition); + CommonPage result = new CommonPage<>(); + result.setPageNum(page.getPageNum()); + result.setPageSize(page.getPageSize()); + result.setTotal(page.getTotal()); + result.setList(resultList); + return result; + + } + +} diff --git a/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/util/TpTimeFormatUtil.java b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/util/TpTimeFormatUtil.java new file mode 100644 index 0000000..23a06c3 --- /dev/null +++ b/tptradecore-core/tptradecore-core-service/src/main/java/com/deepinnet/tptradecore/core/util/TpTimeFormatUtil.java @@ -0,0 +1,24 @@ +package com.deepinnet.tptradecore.core.util; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author amos wong + * @create 2024/3/18 10:52 + * @Description + */ +public class TpTimeFormatUtil { + + /** + * 输入时间戳,返回MM月dd日 HH:mm 格式的字符串 + * + * @param timestamp + * @return + */ + public static String convertTimestamp2ChineseFormat(Long timestamp) { + Date date = new Date(timestamp); + SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日 HH:mm"); + return formatter.format(date); + } +}