diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/TempController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/TempController.java index 090caa98e..db957105a 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/TempController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/TempController.java @@ -438,6 +438,7 @@ public class TempController extends BaseController { /** * 校验未分账的支付单 + * https://localhost:8080/temp/verifyUndividedPayment */ @PostMapping("/verifyUndividedPayment") public RestApiResponse verifyUndividedPayment(@RequestBody QueryOrderDTO dto) { diff --git a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java index 13375d946..2b902ab34 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -7,11 +7,11 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.jsowell.adapay.dto.QueryPaymentConfirmDTO; +import com.jsowell.adapay.response.PaymentConfirmResponse; import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse; import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.vo.OrderSettleResult; import com.jsowell.adapay.vo.PaymentInfo; -import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.StringUtils; @@ -23,10 +23,9 @@ import com.jsowell.pile.mapper.OrderBasicInfoMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.service.orderlogic.AbstractOrderLogic; import com.jsowell.pile.service.orderlogic.DelayMerchantOrderLogic; -import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.vo.web.ClearingBillVO; import com.jsowell.pile.vo.web.OrderListVO; -import com.jsowell.wxpay.service.WxAppletRemoteService; +import com.jsowell.pile.vo.web.OrderPayDetailVO; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,78 +53,24 @@ public class TempService { @Autowired private ClearingWithdrawInfoService clearingWithdrawInfoService; - @Autowired - private TransactionService transactionService; - - @Autowired - private RedisCache redisCache; - - @Autowired - private WxAppletRemoteService wxAppletRemoteService; - @Autowired private OrderPayRecordService orderPayRecordService; - @Autowired - private IMemberBasicInfoService memberBasicInfoService; - - @Autowired - private WxpayCallbackRecordService wxpayCallbackRecordService; - @Autowired private AdapayCallbackRecordService adapayCallbackRecordService; - @Autowired - private WechatPayService wechatPayService; - - @Autowired - private IOrderAbnormalRecordService orderAbnormalRecordService; - - @Autowired - private TransactionService pileTransactionService; - - @Autowired - private IPileBasicInfoService pileBasicInfoService; - - @Autowired - private IPileConnectorInfoService pileConnectorInfoService; - @Autowired private WxpayRefundCallbackService wxpayRefundCallbackService; - @Autowired - private IPileBillingTemplateService pileBillingTemplateService; - - @Autowired - private IPileAuthCardService pileAuthCardService; - - @Autowired - private OrderMonitorDataService orderMonitorDataService; - - @Autowired - private IPileStationInfoService pileStationInfoService; - @Autowired private IPileMerchantInfoService pileMerchantInfoService; - @Autowired - private IMemberPlateNumberRelationService memberPlateNumberRelationService; - - @Autowired - private IMemberTransactionRecordService memberTransactionRecordService; - @Autowired private ISettleOrderReportService settleOrderReportService; @Autowired private IAdapayMemberAccountService adapayMemberAccountService; - @Autowired - private PileRemoteService pileRemoteService; - - @Autowired - private IPileStationWhitelistService pileStationWhitelistService; - @Autowired private AdapayService adapayService; @@ -522,10 +467,33 @@ public class TempService { } public void verifyUndividedPayment(QueryOrderDTO dto) { + String wechatAppId = "wxbb3e0d474569481d"; + String startTime = dto.getStartTime(); + String endTime = dto.getEndTime(); // 查询时间段的订单 - + // List list = adapayCallbackRecordService.selectByDateTime(startTime, endTime); + List orderPayDetailVOS = orderBasicInfoService.queryOrderPayDetail(startTime, endTime); + logger.info("校验未分账的支付单-在 {} - {} 期间,共查询到{}条支付记录", startTime, endTime, orderPayDetailVOS.size()); // 查询支付单 分账情况 + for (OrderPayDetailVO record : orderPayDetailVOS) { + String paymentId = record.getPaymentId(); + BigDecimal confirmAmt = record.getSettleAmount(); + String orderCode = record.getOrderCode(); + QueryPaymentConfirmDTO queryPaymentConfirmDTO = new QueryPaymentConfirmDTO(); + queryPaymentConfirmDTO.setWechatAppId(wechatAppId); + queryPaymentConfirmDTO.setPaymentId(paymentId); + QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(queryPaymentConfirmDTO); + logger.info("校验未分账的支付单-支付id:{}, 查询到的分账信息:{}", paymentId, JSON.toJSONString(response)); + List confirms = response.getPaymentConfirms(); + if (CollectionUtils.isEmpty(confirms)) { + logger.info("校验未分账的支付单-支付id:{}没有进行过分账", paymentId); + // 没有配置结算账户的,默认分到本商户 + AdapayMemberAccount defaultAccount = adapayMemberAccountService.getDefault(); + PaymentConfirmResponse paymentConfirmRequest = adapayService.createPaymentConfirmRequest(paymentId, defaultAccount, confirmAmt, orderCode, wechatAppId); + logger.info("校验未分账的支付单-支付id:{}, 执行分账结果:{}", paymentId, JSON.toJSONString(paymentConfirmRequest)); + } + } + - // 没有配置结算账户的,默认分到本商户 } } diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java index 85e70d737..3d4d0db6e 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java @@ -35,6 +35,9 @@ public class CacheConstants { public static final String PUSH_STATION_CONNECTOR = "push_station_connector"; + // 支付确认列表 + public static final String PAYMENT_CONFIRM_LIST = "payment_confirm_list:"; + // 会员余额退款正在进行中 public static final String MEMBER_BALANCE_REFUNDS_ARE_IN_PROGRESS = "member_balance_refunds_are_in_progress:"; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java index 58a40550b..035f5b7e0 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java @@ -833,6 +833,9 @@ public class AdapayService { } String jsonString = JSON.toJSONString(paymentConfirm); log.info("调分账接口param:{}, result:{}", JSON.toJSONString(confirmParams), jsonString); + + // 删除支付确认信息缓存 + redisCache.deleteObject(CacheConstants.PAYMENT_CONFIRM_LIST + paymentId); return JSONObject.parseObject(jsonString, PaymentConfirmResponse.class); } @@ -1000,6 +1003,15 @@ public class AdapayService { * 查询支付确认对象列表 */ public QueryPaymentConfirmDetailResponse queryPaymentConfirmList(QueryPaymentConfirmDTO dto) { + QueryPaymentConfirmDetailResponse response = null; + // 查缓存 + String redisKey = CacheConstants.PAYMENT_CONFIRM_LIST + dto.getPaymentId(); + String redisResult = redisCache.getCacheObject(redisKey); + if (StringUtils.isNotBlank(redisResult)) { + response = JSONObject.parseObject(redisResult, QueryPaymentConfirmDetailResponse.class); + return response; + } + AbstractAdapayConfig config = AdapayConfigFactory.getConfig(dto.getWechatAppId()); if (config == null) { throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CONFIG_IS_NULL_ERROR); @@ -1008,15 +1020,15 @@ public class AdapayService { param.put("payment_id", dto.getPaymentId()); param.put("app_id", config.getAdapayAppId()); - QueryPaymentConfirmDetailResponse queryPaymentConfirmDetailResponse = null; try { Map map = PaymentConfirm.queryList(param, config.getWechatAppId()); - queryPaymentConfirmDetailResponse = JSON.parseObject(JSON.toJSONString(map), QueryPaymentConfirmDetailResponse.class); + response = JSON.parseObject(JSON.toJSONString(map), QueryPaymentConfirmDetailResponse.class); // log.info("queryPaymentConfirmDetailResponse:{}", JSON.toJSONString(queryPaymentConfirmDetailResponse)); + redisCache.setCacheObject(redisKey, JSON.toJSONString(response), CacheConstants.cache_expire_time_10d); } catch (BaseAdaPayException e) { log.error("查询支付确认对象列表error", e); } - return queryPaymentConfirmDetailResponse; + return response; } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayMemberAccount.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayMemberAccount.java index e345c247a..b416ea580 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayMemberAccount.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayMemberAccount.java @@ -51,46 +51,6 @@ public class AdapayMemberAccount extends BaseEntity { */ private String delFlag; - public void setId(Long id) { - this.id = id; - } - - public Long getId() { - return id; - } - - public void setMerchantId(String merchantId) { - this.merchantId = merchantId; - } - - public String getMerchantId() { - return merchantId; - } - - public void setAdapayMemberId(String adapayMemberId) { - this.adapayMemberId = adapayMemberId; - } - - public String getAdapayMemberId() { - return adapayMemberId; - } - - public void setSettleAccountId(String settleAccountId) { - this.settleAccountId = settleAccountId; - } - - public String getSettleAccountId() { - return settleAccountId; - } - - public void setDelFlag(String delFlag) { - this.delFlag = delFlag; - } - - public String getDelFlag() { - return delFlag; - } - @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java index 318546ced..c57a2507b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java @@ -25,4 +25,6 @@ public interface AdapayCallbackRecordMapper { AdapayCallbackRecord selectByPaymentId(String paymentId); List queryRecordList(@Param("orderCodeList") List orderCodeList); + + List selectByDateTime(@Param("startTime") String startTime, @Param("endTime") String endTime); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index ee66087fc..e2f3b6cc9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -2,7 +2,6 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.OrderDetail; -import com.jsowell.pile.domain.nanrui.NROrderInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.vo.base.MerchantOrderInfoVO; @@ -13,6 +12,7 @@ import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; import com.jsowell.pile.vo.uniapp.SendMessageVO; import com.jsowell.pile.vo.web.IndexOrderInfoVO; import com.jsowell.pile.vo.web.OrderListVO; +import com.jsowell.pile.vo.web.OrderPayDetailVO; import com.jsowell.pile.vo.web.RefundOrder; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -256,4 +256,6 @@ public interface OrderBasicInfoMapper { * @return */ List getNROrderInfoByOrderCode(@Param("dto") NRQueryOrderDTO dto); + + List queryOrderPayDetail(@Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java index ce8968ea8..5c8ba3a78 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java @@ -2,10 +2,14 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.AdapayCallbackRecord; +import java.util.List; + public interface AdapayCallbackRecordService { void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord); AdapayCallbackRecord selectByOrderCode(String orderCode); AdapayCallbackRecord selectByPaymentId(String paymentId); + + List selectByDateTime(String startTime, String endTime); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayMemberAccountService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayMemberAccountService.java index 42fdadb22..7a8580e26 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayMemberAccountService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayMemberAccountService.java @@ -70,4 +70,6 @@ public interface IAdapayMemberAccountService { void deleteByMemberId(String memberId); void updateAdapayMemberAccountByMemberId(AdapayMemberAccount adapayMemberAccount); + + AdapayMemberAccount getDefault(); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index 620a7d9c9..6a565d97a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -5,8 +5,10 @@ import com.jsowell.adapay.response.PaymentReverseResponse; import com.jsowell.adapay.vo.OrderSettleResult; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; -import com.jsowell.pile.domain.*; -import com.jsowell.pile.domain.nanrui.NROrderInfo; +import com.jsowell.pile.domain.AdapayMemberAccount; +import com.jsowell.pile.domain.OrderBasicInfo; +import com.jsowell.pile.domain.OrderDetail; +import com.jsowell.pile.domain.SettleOrderReport; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.service.orderlogic.AbstractOrderLogic; @@ -18,10 +20,7 @@ import com.jsowell.pile.vo.nanrui.NROrderInfoVO; import com.jsowell.pile.vo.uniapp.OrderVO; import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; import com.jsowell.pile.vo.uniapp.SendMessageVO; -import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; -import com.jsowell.pile.vo.web.IndexOrderInfoVO; -import com.jsowell.pile.vo.web.OrderListVO; -import com.jsowell.pile.vo.web.OrderTotalDataVO; +import com.jsowell.pile.vo.web.*; import com.jsowell.wxpay.response.WechatPayRefundResponse; import java.math.BigDecimal; @@ -370,4 +369,6 @@ public interface IOrderBasicInfoService { * @return */ List getNROrderInfos(NRQueryOrderDTO dto); + + List queryOrderPayDetail(String startTime, String endTime); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java index 7740384e6..af1fab35c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java @@ -10,6 +10,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Slf4j @Service public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordService { @@ -75,4 +77,9 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ } return record; } + + @Override + public List selectByDateTime(String startTime, String endTime) { + return adapayCallbackRecordMapper.selectByDateTime(startTime, endTime); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayMemberAccountServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayMemberAccountServiceImpl.java index 93745a245..f837940df 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayMemberAccountServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayMemberAccountServiceImpl.java @@ -2,6 +2,7 @@ package com.jsowell.pile.service.impl; import com.google.common.collect.Lists; import com.jsowell.common.constant.CacheConstants; +import com.jsowell.common.constant.Constants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.StringUtils; @@ -161,4 +162,11 @@ public class AdapayMemberAccountServiceImpl implements IAdapayMemberAccountServi public void updateAdapayMemberAccountByMemberId(AdapayMemberAccount adapayMemberAccount) { adapayMemberAccountMapper.updateAdapayMemberAccountByMemberId(adapayMemberAccount); } + + @Override + public AdapayMemberAccount getDefault() { + AdapayMemberAccount account = new AdapayMemberAccount(); + account.setAdapayMemberId(Constants.ZERO); + return account; + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index fd287a5b3..9b05471bd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -3378,4 +3378,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { pileTransactionService.doCreateOrder(createOrderTransactionDTO); return orderBasicInfo; } + + /** + * 根据时间端范围查询订单支付单id + */ + @Override + public List queryOrderPayDetail(String startTime, String endTime) { + return orderBasicInfoMapper.queryOrderPayDetail(startTime, endTime); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderPayDetailVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderPayDetailVO.java new file mode 100644 index 000000000..ecf1f4a36 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderPayDetailVO.java @@ -0,0 +1,34 @@ +package com.jsowell.pile.vo.web; + +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; + +@Getter +@Setter +public class OrderPayDetailVO { + // 订单编号 + private String orderCode; + + // 订单创建时间 + private String createTime; + + // 运营商id + private String merchantId; + + // 支付金额 + private BigDecimal payAmount; + + // 退款金额 + private BigDecimal refundAmount; + + // 结算金额 + private BigDecimal settleAmount; + + // 结算时间 + private String settlementTime; + + // 支付id + private String paymentId; +} diff --git a/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml index 75cf3b40c..ac45aa8ef 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml @@ -305,4 +305,12 @@ #{orderCode,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 92cb2c70c..1f61e8ee9 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -1196,4 +1196,23 @@ + + \ No newline at end of file