From b7f04d2159cbf2c60935f70c7436d61776972831 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Wed, 16 Apr 2025 15:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=9C=AA=E5=88=86=E5=B8=90=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsowell/service/TempService.java | 11 +++- .../pile/mapper/OrderUnsplitRecordMapper.java | 9 ++- .../service/OrderUnsplitRecordService.java | 4 ++ .../impl/OrderUnsplitRecordServiceImpl.java | 10 ++++ .../mapper/pile/OrderUnsplitRecordMapper.xml | 25 ++++++--- .../com/jsowell/quartz/task/JsowellTask.java | 55 +++++++++++++++++++ 6 files changed, 100 insertions(+), 14 deletions(-) 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 2d5f7476a..42038b7d9 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -8,7 +8,9 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.jsowell.adapay.common.AdaPayment; +import com.jsowell.adapay.common.DivMember; import com.jsowell.adapay.common.PaymentConfirmInfo; +import com.jsowell.adapay.dto.PaymentConfirmParam; import com.jsowell.adapay.dto.QueryPaymentConfirmDTO; import com.jsowell.adapay.response.PaymentConfirmResponse; import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse; @@ -16,6 +18,7 @@ import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.vo.OrderSplitResult; import com.jsowell.adapay.vo.PaymentInfo; import com.jsowell.common.annotation.CostTime; +import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.RabbitConstants; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; @@ -23,7 +26,9 @@ import com.jsowell.common.enums.adapay.AdapayStatusEnum; import com.jsowell.common.enums.adapay.MerchantDelayModeEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; +import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.AfterSettleOrderDTO; @@ -115,6 +120,9 @@ public class TempService { @Autowired private RedisCache redisCache; + @Autowired + private OrderUnsplitRecordService orderUnsplitRecordService; + /** * 计算订单耗电量 * 内蒙古站点 @@ -1056,8 +1064,5 @@ public class TempService { orderBasicInfoService.splittingMethod(afterSettleOrderDTO); } - /** - * - */ } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderUnsplitRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderUnsplitRecordMapper.java index a31c21653..1cb4021ad 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderUnsplitRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderUnsplitRecordMapper.java @@ -1,11 +1,12 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.OrderUnsplitRecord; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; import java.util.List; -import org.apache.ibatis.annotations.Param; - +@Repository public interface OrderUnsplitRecordMapper { int deleteByPrimaryKey(Integer id); @@ -24,4 +25,6 @@ public interface OrderUnsplitRecordMapper { int insertOrUpdate(OrderUnsplitRecord record); int insertOrUpdateSelective(OrderUnsplitRecord record); -} \ No newline at end of file + + List queryUnsplitOrders(@Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderUnsplitRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderUnsplitRecordService.java index 48beca643..123e987f5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderUnsplitRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderUnsplitRecordService.java @@ -6,4 +6,8 @@ import java.util.List; public interface OrderUnsplitRecordService { void batchInsert(List orderUnsplitRecordList); + + List queryUnsplitOrders(String startTime, String endTime); + + void updateOrderUnsplitRecord(OrderUnsplitRecord orderUnsplitRecord); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderUnsplitRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderUnsplitRecordServiceImpl.java index 8078b42ea..d91b186dd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderUnsplitRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderUnsplitRecordServiceImpl.java @@ -18,4 +18,14 @@ public class OrderUnsplitRecordServiceImpl implements OrderUnsplitRecordService public void batchInsert(List orderUnsplitRecordList) { orderUnsplitRecordMapper.batchInsert(orderUnsplitRecordList); } + + @Override + public List queryUnsplitOrders(String startTime, String endTime) { + return orderUnsplitRecordMapper.queryUnsplitOrders(startTime, endTime); + } + + @Override + public void updateOrderUnsplitRecord(OrderUnsplitRecord orderUnsplitRecord) { + orderUnsplitRecordMapper.insertOrUpdateSelective(orderUnsplitRecord); + } } diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderUnsplitRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderUnsplitRecordMapper.xml index 5a10c4a60..300c853c7 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderUnsplitRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderUnsplitRecordMapper.xml @@ -16,12 +16,12 @@ - id, payment_id, `status`, order_code, pay_amount, refund_amount, settle_amount, order_time, + id, payment_id, `status`, order_code, pay_amount, refund_amount, settle_amount, order_time, create_time + select + + from order_unsplit_record + where status = 'unsplit' + and order_time between #{startTime,jdbcType=VARCHAR} and #{endTime,jdbcType=VARCHAR} + order by order_time + + diff --git a/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java b/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java index 6a4aefaa2..a8cbd9752 100644 --- a/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java +++ b/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java @@ -1,15 +1,22 @@ package com.jsowell.quartz.task; +import com.google.common.collect.Lists; +import com.jsowell.adapay.common.DivMember; +import com.jsowell.adapay.dto.PaymentConfirmParam; import com.jsowell.adapay.dto.WithdrawDTO; +import com.jsowell.adapay.response.PaymentConfirmResponse; import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; +import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.spring.SpringUtils; import com.jsowell.pile.domain.OrderBasicInfo; +import com.jsowell.pile.domain.OrderUnsplitRecord; import com.jsowell.pile.domain.PileMerchantInfo; import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.domain.ykcCommond.PublishPileBillingTemplateCommand; @@ -68,6 +75,9 @@ public class JsowellTask { @Autowired private ThirdPartyStationRelationService thirdPartyStationRelationService; + @Autowired + private OrderUnsplitRecordService orderUnsplitRecordService; + /** * 设置挡板, PRE环境不执行 */ @@ -332,4 +342,49 @@ public class JsowellTask { }); } + /** + * 处理未分帐订单 + */ + public void processUnSettledOrder() { + String startTime = "2023-01-01 00:00:00"; + String endTime = "2023-12-31 23:59:59"; + String adapayMemberId = "0"; + String wechatAppId1 = "wxbb3e0d474569481d"; // 万车充 + + // 查询未分帐订单 + PageUtils.startPage(1, 500); + List list = orderUnsplitRecordService.queryUnsplitOrders(startTime, endTime); + for (OrderUnsplitRecord orderUnsplitRecord : list) { + String paymentId = orderUnsplitRecord.getPaymentId(); + String orderCode = orderUnsplitRecord.getOrderCode(); + BigDecimal confirmAmt = orderUnsplitRecord.getSettleAmount(); + + DivMember divMember = new DivMember(); + divMember.setMemberId(adapayMemberId); + divMember.setAmount(AdapayUtil.formatAmount(confirmAmt)); + divMember.setFeeFlag(Constants.Y); + + PaymentConfirmParam param = PaymentConfirmParam.builder() + .paymentId(paymentId) + .divMemberList(Lists.newArrayList(divMember)) + .confirmAmt(confirmAmt) + .orderCode(orderCode) + .wechatAppId(wechatAppId1) + .build(); + // 延时分账,使用确认交易API + PaymentConfirmResponse paymentConfirmResponse = adapayService.createPaymentConfirmRequest(param); + + // 如果确认交易成功,则更新订单状态为已分账 + if (paymentConfirmResponse.isSuccess()) { + log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId); + orderUnsplitRecord.setStatus(paymentConfirmResponse.getStatus()); + orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord); + } else { + // 如果失败,打印日志 + log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg()); + return; + } + } + } + }