From 728bd0f8efdc38a63b341ad5516e6b5ca640d8c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=9D=9E=E5=87=A1?= Date: Mon, 23 Mar 2026 09:00:24 +0000 Subject: [PATCH] Merge #68 into master from cc_20260313_ws_wallet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 网商钱包分账对接 * cc_20260313_ws_wallet: (9 commits squashed) - fix:新店开通网商钱包 - fix:网商钱包开通回调修改 - fix - fix - fix:关闭网商开通回调接口验签 - Merge branch 'master' into cc_20260313_ws_wallet # Conflicts: # coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletService.java # coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniWalletController.java - fix:钱包批量转账新增钱包类型字段 - fix:网商钱包分账对接 - fix Signed-off-by: 王非凡 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/68 --- .../enums/fees/AllocationPayStatusEnum.java | 3 +- .../store/dao/fees/ShopAllocationInfoDAO.java | 20 +++++++++ .../cool/store/dao/fees/WalletPayInfoDAO.java | 24 +++++++++++ .../cool/store/dao/wallet/WalletTradeDAO.java | 23 +++++++++++ .../mapper/wallet/WalletTradeMapper.java | 8 ++++ .../mapper/fees/WalletPayInfoMapper.xml | 5 ++- .../mapper/wallet/WalletTradeMapper.xml | 12 +++++- .../store/dto/wallet/BatchTransferDTO.java | 3 ++ .../store/entity/fees/WalletPayInfoDO.java | 7 ++++ .../store/entity/wallet/WalletTradeDO.java | 6 +++ .../FranchisePayTypeUpdateRequest.java | 2 +- .../wallet/BatchTransferQueryRequest.java | 22 ++++++++++ .../request/wallet/BatchTransferRequest.java | 4 ++ .../request/xgj/ReceiptCallBackRequest.java | 2 +- .../service/fees/WalletPayInfoService.java | 6 +++ .../fees/impl/WalletPayInfoServiceImpl.java | 35 +++++++++++++++- .../order/impl/MiniStoreOrderServiceImpl.java | 1 + .../service/wallet/WalletApiService.java | 7 ++++ .../store/controller/webc/TestController.java | 1 + .../com/cool/store/job/XxlJobHandler.java | 41 ++++++++++++++++--- 20 files changed, 218 insertions(+), 14 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferQueryRequest.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java index 5a08d4661..742fb19e0 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java @@ -18,7 +18,8 @@ public enum AllocationPayStatusEnum { PAID(1, "已支付"), FAIL(2, "支付失败"), PAYING(3, "支付中"), - CANCEL(4, "已取消") + CANCEL(4, "已取消"), + UNPAID(5, "未支付"), ; private final Integer status; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/ShopAllocationInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/ShopAllocationInfoDAO.java index 542fbf0b9..4d51f3814 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/ShopAllocationInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/ShopAllocationInfoDAO.java @@ -6,6 +6,7 @@ import com.cool.store.mapper.fees.ShopAllocationInfoMapper; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Repository; +import tk.mybatis.mapper.entity.Example; import java.util.List; import java.util.Objects; @@ -60,4 +61,23 @@ public class ShopAllocationInfoDAO { } shopAllocationInfoMapper.insertOrUpdateBatch(list); } + + /** + * 更新分账状态 + * @param shopId 门店id + * @param expenseTypes 费用类型列表 + * @param status 状态 + */ + public void updateStatusByShopId(Long shopId, List expenseTypes, Integer status) { + if (CollectionUtils.isEmpty(expenseTypes)) { + return; + } + Example example = new Example(ShopAllocationInfoDO.class); + example.createCriteria() + .andEqualTo("shopId", shopId) + .andIn("expenseType", expenseTypes); + ShopAllocationInfoDO allocationInfoDO = new ShopAllocationInfoDO(); + allocationInfoDO.setStatus(status); + shopAllocationInfoMapper.updateByExampleSelective(allocationInfoDO, example); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/WalletPayInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/WalletPayInfoDAO.java index 0a45e8b20..b6ff477d4 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/WalletPayInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/fees/WalletPayInfoDAO.java @@ -125,4 +125,28 @@ public class WalletPayInfoDAO { walletPayInfoDO.setClaimStatus(claimStatus); walletPayInfoMapper.updateByExampleSelective(walletPayInfoDO, example); } + + /** + * 根据批次编号查询 + * @param batchCode 批次编号 + * @return 列表 + */ + public List getByBatchCode(String batchCode) { + Example example = new Example(WalletPayInfoDO.class); + example.createCriteria().andEqualTo("batchCode", batchCode); + return walletPayInfoMapper.selectByExample(example); + } + + /** + * 根据批次编号更新支付状态 + * @param batchCode 批次编号 + * @param payStatus 支付状态 + */ + public void updatePayStatusByBatchCode(String batchCode, Integer payStatus) { + Example example = new Example(WalletPayInfoDO.class); + example.createCriteria().andEqualTo("batchCode", batchCode); + WalletPayInfoDO walletPayInfoDO = new WalletPayInfoDO(); + walletPayInfoDO.setPayStatus(payStatus); + walletPayInfoMapper.updateByExampleSelective(walletPayInfoDO, example); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java index 9e625dd9c..094712d62 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java @@ -56,4 +56,27 @@ public class WalletTradeDAO { } return walletTradeMapper.updateBatchByPayNo(list) > 0; } + + /** + * 查询支付中交易单批次号 + * @param module 业务模块 + * @param type 交易类型 + * @return 批次号列表 + */ + public List getPayingOrderBatchCode(String module, Integer type) { + return walletTradeMapper.getPayingOrderBatchCode(module, type); + } + + /** + * 根据批次号更新支付状态 + * @param batchCode 批次号 + * @param payStatus 支付状态 + */ + public void updatePayStatusByBatchCode(String batchCode, Integer payStatus) { + Example example = new Example(WalletTradeDO.class); + example.createCriteria().andEqualTo("batchCode", batchCode); + WalletTradeDO walletTradeDO = new WalletTradeDO(); + walletTradeDO.setPayStatus(payStatus); + walletTradeMapper.updateByExampleSelective(walletTradeDO, example); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java index 5054661b2..805d79bdd 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java @@ -12,4 +12,12 @@ public interface WalletTradeMapper extends Mapper { int updateByPayNo(WalletTradeDO record); int updateBatchByPayNo(@Param("list") List list); + + /** + * 查询支付中交易单批次号 + * @param module 业务模块 + * @param type 交易类型 + * @return 批次号列表 + */ + List getPayingOrderBatchCode(@Param("module") String module, @Param("type") Integer type); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/fees/WalletPayInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/fees/WalletPayInfoMapper.xml index 93887b61d..05a600ff9 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/fees/WalletPayInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/fees/WalletPayInfoMapper.xml @@ -18,13 +18,14 @@ + - INSERT INTO zxjp_fees_wallet_pay_info (shop_id, module, pay_no, pay_user_name, pay_amount, trade_id, pay_status, pay_time, claim_status, expense_types, remark, create_user_id) + INSERT INTO zxjp_fees_wallet_pay_info (shop_id, module, pay_no, pay_user_name, pay_amount, trade_id, pay_status, pay_time, claim_status, expense_types, remark, create_user_id, batch_code) VALUES - (#{item.shopId}, #{item.module}, #{item.payNo}, #{item.payUserName}, #{item.payAmount}, #{item.tradeId}, #{item.payStatus}, #{item.payTime}, #{item.claimStatus}, #{item.expenseTypes}, #{item.remark}, #{item.createUserId}) + (#{item.shopId}, #{item.module}, #{item.payNo}, #{item.payUserName}, #{item.payAmount}, #{item.tradeId}, #{item.payStatus}, #{item.payTime}, #{item.claimStatus}, #{item.expenseTypes}, #{item.remark}, #{item.createUserId}, #{item.batchCode}) diff --git a/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml index 015642af4..2d1f5a4d9 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml @@ -17,14 +17,15 @@ + - INSERT INTO zxjp_wallet_trade (module, pay_no, trade_id, type, pay_user_name, pay_amount, pay_status, pay_time, remark, create_user_id) + INSERT INTO zxjp_wallet_trade (module, pay_no, trade_id, type, pay_user_name, pay_amount, pay_status, pay_time, remark, create_user_id, batch_code) VALUES - (#{item.module}, #{item.payNo}, #{item.tradeId}, #{item.type}, #{item.payUserName}, #{item.payAmount}, #{item.payStatus}, #{item.payTime}, #{item.remark}, #{item.createUserId}) + (#{item.module}, #{item.payNo}, #{item.tradeId}, #{item.type}, #{item.payUserName}, #{item.payAmount}, #{item.payStatus}, #{item.payTime}, #{item.remark}, #{item.createUserId}, #{item.batchCode}) @@ -63,4 +64,11 @@ WHERE pay_no = #{item.payNo} + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BatchTransferDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BatchTransferDTO.java index 5cc70d59f..1b132ee11 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BatchTransferDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BatchTransferDTO.java @@ -19,6 +19,9 @@ public class BatchTransferDTO { @ApiModelProperty("批量转账数据") private List transArray; + @ApiModelProperty("批次号") + private String batchCode; + @Data public static class TransDataRequest { diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/fees/WalletPayInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/fees/WalletPayInfoDO.java index 1d1b5e634..c423a4e93 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/fees/WalletPayInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/fees/WalletPayInfoDO.java @@ -102,6 +102,12 @@ public class WalletPayInfoDO { @Column(name = "create_time") private Date createTime; + /** + * 批量分账批次号 + */ + @Column(name = "batch_code") + private String batchCode; + public WalletPayInfoDO(String module, Long shopId, String payNo, String payUserName, BigDecimal payAmount, String expenseType, String createUserId, String tradeId) { this.shopId = shopId; this.payNo = payNo; @@ -127,6 +133,7 @@ public class WalletPayInfoDO { walletTradeDO.setPayTime(this.payTime); walletTradeDO.setRemark(this.remark); walletTradeDO.setCreateUserId(this.createUserId); + walletTradeDO.setBatchCode(this.batchCode); return walletTradeDO; } } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/wallet/WalletTradeDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/wallet/WalletTradeDO.java index 560194522..80af56acf 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/wallet/WalletTradeDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/wallet/WalletTradeDO.java @@ -85,4 +85,10 @@ public class WalletTradeDO { */ @Column(name = "create_time") private Date createTime; + + /** + * 批量分账批次号 + */ + @Column(name = "batch_code") + private String batchCode; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/FranchisePayTypeUpdateRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/FranchisePayTypeUpdateRequest.java index 4b61d649e..43dcf0a65 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/FranchisePayTypeUpdateRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/FranchisePayTypeUpdateRequest.java @@ -19,7 +19,7 @@ public class FranchisePayTypeUpdateRequest { @NotNull(message = "门店id不能为空") private Long shopId; - @ApiModelProperty("支付方式,1线下支付 2平安钱包支付") + @ApiModelProperty("支付方式,1线下支付 2网商钱包支付") @NotNull(message = "支付方式不能为空") private Integer payType; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferQueryRequest.java new file mode 100644 index 000000000..4cf26b40b --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferQueryRequest.java @@ -0,0 +1,22 @@ +package com.cool.store.request.wallet; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *

+ * 批量转账分账查询 + *

+ * + * @author wangff + * @since 2026/3/18 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BatchTransferQueryRequest { + @ApiModelProperty("批次号") + private String batchCode; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferRequest.java index e50db9d26..92bf2c210 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/BatchTransferRequest.java @@ -17,6 +17,10 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor public class BatchTransferRequest { + /** + * 钱包类型,1平安,2网商 + */ + private Integer walletType = 2; private String outStoreId; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/ReceiptCallBackRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/ReceiptCallBackRequest.java index bbca9f6ca..35a5780e2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/ReceiptCallBackRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/ReceiptCallBackRequest.java @@ -22,7 +22,7 @@ public class ReceiptCallBackRequest { private Integer claimStatus; /** - * 支付方式,线下支付-0,平安钱包支付-2 + * 支付方式,线下支付-0,网商钱包支付-2 */ private Integer payWay; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/fees/WalletPayInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/fees/WalletPayInfoService.java index 243a8c86a..354dec3c7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/fees/WalletPayInfoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/fees/WalletPayInfoService.java @@ -25,6 +25,12 @@ public interface WalletPayInfoService { */ Boolean pay(WalletPayRequest request, String oldPayNo); + /** + * 查询并更新批量支付结果 + * @param batchCode 批次编号 + */ + void queryAndUpdateBatchTransferStatus(String batchCode); + /** * 重新支付 * @param request 钱包重新支付Request diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/fees/impl/WalletPayInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/fees/impl/WalletPayInfoServiceImpl.java index 39ad6d0f2..f771b459f 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/fees/impl/WalletPayInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/fees/impl/WalletPayInfoServiceImpl.java @@ -15,6 +15,7 @@ import com.cool.store.dao.fees.WalletPayInfoDAO; import com.cool.store.dao.wallet.WalletTradeDAO; import com.cool.store.dto.wallet.AccountInfoDTO; import com.cool.store.dto.wallet.BatchTransferDTO; +import com.cool.store.request.wallet.BatchTransferQueryRequest; import com.cool.store.request.wallet.BatchTransferRequest; import com.cool.store.dto.wallet.TransferDTO; import com.cool.store.entity.FranchiseFeeDO; @@ -123,7 +124,7 @@ public class WalletPayInfoServiceImpl implements WalletPayInfoService { assert feeItem != null; return new BatchTransferRequest.TransDataRequest(payNo, feeItem.getFeeItemId(), shopAllocationInfoDO.getPayeeCode(), null, payAmount.toString(), feeItem.getDesc()); }); - BatchTransferRequest transRequest = new BatchTransferRequest(shopInfo.getStoreId(), request.getPayPwd(), transDataList); + BatchTransferRequest transRequest = new BatchTransferRequest(2, shopInfo.getStoreId(), request.getPayPwd(), transDataList); BatchTransferDTO batchTransferDTO = walletApiService.batchTransfer(transRequest); if (CollectionUtils.isEmpty(batchTransferDTO.getTransArray())) { throw new ServiceException(ErrorCodeEnum.WALLET_TRANS_FAIL); @@ -134,7 +135,8 @@ public class WalletPayInfoServiceImpl implements WalletPayInfoService { WalletPayInfoDO walletPayInfoDO = new WalletPayInfoDO( WalletTradeModuleEnum.FRANCHISE_PAY.getModule(), request.getShopId(), transResult.getReqNo(), user.getUsername(), new BigDecimal(transResult.getAmount()), feeItemEnum.getExpenseType(), user.getPartnerId(), String.valueOf(transResult.getTradeId()) ); - // 这里只返回成功或失败 + walletPayInfoDO.setBatchCode(batchTransferDTO.getBatchCode()); + // 平安这里只返回成功或失败,网商只返回处理中 walletPayInfoDO.setPayStatus(batchTransferDTO.getTradeStatus()); if (StringUtils.isNotBlank(oldPayNo)) { walletRePayInfoList.add(walletPayInfoDO); @@ -179,6 +181,35 @@ public class WalletPayInfoServiceImpl implements WalletPayInfoService { return true; } + @Override + @Transactional + public void queryAndUpdateBatchTransferStatus(String batchCode) { + BatchTransferDTO batchTransferDTO = walletApiService.queryBatchTransfer(new BatchTransferQueryRequest(batchCode)); + // 根据批次号更新交易单 + walletTradeDAO.updatePayStatusByBatchCode(batchCode, batchTransferDTO.getTradeStatus()); + // 根据批次号更新业务单 + List payInfoList = walletPayInfoDAO.getByBatchCode(batchCode); + if (CollectionUtils.isEmpty(payInfoList)) { + log.error("查询并更新批量转账状态异常,业务单为空"); + return; + } + walletPayInfoDAO.updatePayStatusByBatchCode(batchCode, batchTransferDTO.getTradeStatus()); + // 更新分账信息 + Long shopId = payInfoList.get(0).getShopId(); + List expenseTypes = CollStreamUtil.toList(payInfoList, WalletPayInfoDO::getExpenseTypes); + shopAllocationInfoDAO.updateStatusByShopId(shopId, expenseTypes, batchTransferDTO.getTradeStatus()); + // 校验并流转流程 + if (AllocationPayStatusEnum.PAID.getStatus().equals(batchTransferDTO.getTradeStatus())) { + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); + // 校验并流转流程 + verifyAndProcessFlow(shopInfo.getId()); + // 推送缴费单数据到新管家 + if (CollectionUtils.isNotEmpty(payInfoList)) { + pushReceiptRequest(payInfoList, shopInfo); + } + } + } + /** * 推送账单到新管家 */ diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java index 00ad30113..2792f3b12 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java @@ -954,6 +954,7 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { BatchTransferRequest batchTransferRequest = new BatchTransferRequest(); batchTransferRequest.setOutStoreId(shopInfo.getStoreId()); batchTransferRequest.setPayPwd(request.getPayPwd()); + batchTransferRequest.setWalletType(2); List transArray = new ArrayList<>(); for (PreAllocationRecordDO record : allocationRecords) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletApiService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletApiService.java index 6d19028a6..e69f37335 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletApiService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletApiService.java @@ -275,4 +275,11 @@ public class WalletApiService { public WsPayAccountDTO wsPayAccountQuery(OutStoreIdRequest request) { return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/account/ws/v1/queryCollectionAccount", request, WsPayAccountDTO.class); } + + /** + * 批量转账分账查询 + */ + public BatchTransferDTO queryBatchTransfer(BatchTransferQueryRequest request) { + return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/trans/v1/queryBatchTransfer", request, BatchTransferDTO.class); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java index 0f9d3e05f..ed9c83810 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java @@ -116,6 +116,7 @@ public class TestController { ReceiptCallBackRequest receiptRequest = new ReceiptCallBackRequest(); receiptRequest.setReceiptId(payInfoDO.getPayNo()); receiptRequest.setClaimStatus(1); + receiptRequest.setPayWay(2); openApiService.changeReceiptStatus(receiptRequest); List list = walletPayInfoDAO.getByShopId(payInfoDO.getShopId(), WalletTradeModuleEnum.FRANCHISE_PAY.getModule(), null); List allocationList = shopAllocationInfoDAO.getByShopId(payInfoDO.getShopId()); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java b/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java index 29f62d63d..8229318ab 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java @@ -5,17 +5,16 @@ import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.dao.tp.TpApplyFormDAO; +import com.cool.store.dao.wallet.WalletTradeDAO; import com.cool.store.dto.*; import com.cool.store.dto.store.StoreOrderTimeDTO; -import com.cool.store.dto.xgj.XgjPayResultDTO; import com.cool.store.entity.*; import com.cool.store.entity.tp.TpApplyFormDO; import com.cool.store.enums.*; import com.cool.store.enums.tp.TpFormStatusEnum; import com.cool.store.enums.close.CloseTypeEnum; -import com.cool.store.enums.close.RefundPayStatusEnum; -import com.cool.store.enums.close.XgjRefundPayStatusEnum; import com.cool.store.enums.master.StoreCloseReasonEnum; +import com.cool.store.enums.wallet.WalletTradeModuleEnum; import com.cool.store.mapper.ApplyLicenseMapper; import com.cool.store.mapper.LineInfoMapper; import com.cool.store.mapper.TrainingExperienceMapper; @@ -25,14 +24,13 @@ import com.cool.store.request.ZxjpApiRequest; import com.cool.store.request.bigdata.LatestOrderDateRequest; import com.cool.store.request.tp.TpApplyQueryRequest; import com.cool.store.request.close.store.CloseStoreApplyRequest; -import com.cool.store.request.xgj.XgjPaymentRequest; import com.cool.store.response.bigdata.LatestOrderDateResponse; import com.cool.store.service.*; import com.cool.store.service.close.CloseStoreRefundService; import com.cool.store.service.close.CloseStoreService; +import com.cool.store.service.fees.WalletPayInfoService; import com.cool.store.service.impl.CommonService; import com.cool.store.service.tp.TpApplyService; -import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.MDCUtils; import com.cool.store.utils.poi.DateUtils; import com.cool.store.utils.poi.StringUtils; @@ -129,6 +127,10 @@ public class XxlJobHandler { ThirdXgjService thirdXgjService; @Resource CloseStoreRefundService closeStoreRefundService; + @Resource + WalletPayInfoService walletPayInfoService; + @Resource + WalletTradeDAO walletTradeDAO; /** @@ -612,4 +614,33 @@ public class XxlJobHandler { } log.info("------end refundOrderStatus------"); } + + /** + * 钱包批量转账分账支付状态查询 + */ + @XxlJob("batchTransferQuery") + public void batchTransferQuery() { + MDCUtils.put(CommonConstants.REQUEST_ID, UUID.randomUUID().toString()); + log.info("------start batchTransferQuery------"); + boolean hasNext = true; + int pageNum = 1; + int pageSize = CommonConstants.BATCH_SIZE; + while (hasNext) { + PageHelper.startPage(pageNum, pageSize); + List batchCodes = walletTradeDAO.getPayingOrderBatchCode(WalletTradeModuleEnum.FRANCHISE_PAY.getModule(), 1); + hasNext = batchCodes.size() >= pageSize; + if (CollectionUtils.isEmpty(batchCodes)) { + break; + } + for (String batchCode : batchCodes) { + try { + walletPayInfoService.queryAndUpdateBatchTransferStatus(batchCode); + } catch (Exception e) { + log.error("钱包批量转账分账支付状态查询失败, batchCode:{}", batchCode, e); + } + } + pageNum++; + } + log.info("------end batchTransferQuery------"); + } }