diff --git a/ghy-admin/src/main/java/com/ghy/web/timer/AdapaySyncTimer.java b/ghy-admin/src/main/java/com/ghy/web/timer/AdapaySyncTimer.java index 0c693b58..22c64d97 100644 --- a/ghy-admin/src/main/java/com/ghy/web/timer/AdapaySyncTimer.java +++ b/ghy-admin/src/main/java/com/ghy/web/timer/AdapaySyncTimer.java @@ -74,6 +74,8 @@ public class AdapaySyncTimer { String orderNo = AdapayUtils.createOrderNo(AdapayOrderType.DRAW_CASH); JSONObject drawCash = adapayService.drawCash(deptId, orderNo, "T1", avlBalance, memberId, "提现", null); log.info("Worker[{},{}]提现结果: {}", workerBank.getWorkerId(), workerBank.getName(), drawCash.toJSONString()); + } else { + log.error("Worker[{},{}]查询账户余额失败: {}", workerBank.getWorkerId(), workerBank.getName(), accountBalance.toJSONString()); } } catch (BaseAdaPayException e) { log.error(e.getMessage(), e); @@ -101,6 +103,8 @@ public class AdapaySyncTimer { String orderNo = AdapayUtils.createOrderNo(AdapayOrderType.DRAW_CASH); JSONObject drawCash = adapayService.drawCash(deptId, orderNo, "T1", avlBalance, memberId, "提现", null); log.info("Customer[{},{}]提现结果: {}", customer.getCustomerId(), customer.getName(), drawCash.toJSONString()); + } else { + log.error("Customer[{},{}]查询账户余额失败: {}", customer.getCustomerId(), customer.getName(), accountBalance.toJSONString()); } } catch (BaseAdaPayException e) { log.error(e.getMessage(), e); @@ -108,6 +112,9 @@ public class AdapaySyncTimer { } } + /** + * 定时同步提现状态 + */ @Scheduled(fixedRate = 5 * 60 * 1000L) public void syncDrawCash() { List records = drawCashRecordMapper.selectByStatus("pending"); @@ -147,7 +154,7 @@ public class AdapaySyncTimer { // 更新提现记录表状态 drawCashRecordMapper.updateStatus(record.getId(), "succeeded"); // 更新子订单表状态 - orderDetailService.updateDrawCashStatus(record.getId(), 2, new Date()); + orderDetailService.updateDrawCashStatus(record.getId(), 2, null, new Date()); break; // 提现失败 case "F": @@ -155,7 +162,7 @@ public class AdapaySyncTimer { // 更新提现记录表状态 drawCashRecordMapper.updateStatus(record.getId(), "failed"); // 更新子订单表状态 - orderDetailService.updateDrawCashStatus(record.getId(), -1, null); + orderDetailService.updateDrawCashStatus(record.getId(), -1, null, null); break; default: break; diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java index 8f964968..97ff8196 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java @@ -106,10 +106,12 @@ public interface OrderDetailMapper { * * @param drawCashId 发起提现后Adapay返回的对象ID * @param drawCashStatus 提现状态见{@link OrderDetail#getDrawCashStatus()} + * @param drawCashTime 发起提现时间 * @param arrivalTime 提现到账时间 * @return 1 */ - int updateDrawCashStatus(@Param("drawCashId") String drawCashId, @Param("drawCashStatus") int drawCashStatus, @Param("arrivalTime") Date arrivalTime); + int updateDrawCashStatus(@Param("drawCashId") String drawCashId, @Param("drawCashStatus") int drawCashStatus, + @Param("drawCashTime") Date drawCashTime, @Param("arrivalTime") Date arrivalTime); int deleteByMaster(Long masterId); } diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java index bdf164be..756ddc1a 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java @@ -143,10 +143,11 @@ public interface OrderDetailService { * * @param drawCashId 发起提现后Adapay返回的对象ID * @param drawCashStatus 提现状态见{@link OrderDetail#getDrawCashStatus()} + * @param drawCashTime 发起提现时间 * @param arrivalTime 提现到账时间 * @return 1 */ - int updateDrawCashStatus(String drawCashId, int drawCashStatus, Date arrivalTime); + int updateDrawCashStatus(String drawCashId, int drawCashStatus, Date drawCashTime, Date arrivalTime); /** * 退款成功时 退款回调接口里会调用这个方法 diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index 98471aed..e83a4fc4 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -746,8 +746,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { } @Override - public int updateDrawCashStatus(String drawCashId, int drawCashStatus, Date arrivalTime) { - return orderDetailMapper.updateDrawCashStatus(drawCashId, drawCashStatus, arrivalTime); + public int updateDrawCashStatus(String drawCashId, int drawCashStatus, Date drawCashTime, Date arrivalTime) { + return orderDetailMapper.updateDrawCashStatus(drawCashId, drawCashStatus, drawCashTime, arrivalTime); } @Override diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java index b565f007..870fb45b 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -307,7 +307,16 @@ public class OrderMasterServiceImpl implements OrderMasterService { } String amount = member.getAmount(); try { - drawCash(orderMaster.getDeptId(), memberId, amount); + String drawCashId = drawCash(orderMaster.getDeptId(), memberId, amount); + + if (drawCashId != null) { + // 给大师傅的子单设置提现状态和提现时间 2023/5/18 + for (OrderDetail orderDetail : orderDetails) { + if (orderMaster.getWorkerId().equals(orderDetail.getWorkerId())) { + orderDetailService.updateDrawCashStatus(drawCashId, 1, new Date(), null); + } + } + } } catch (BaseAdaPayException e) { logger.error("自动发起提现失败: orderMasterId={}, memberId={}, cashAmt={}", orderMasterId, memberId, amount, e); } @@ -321,15 +330,18 @@ public class OrderMasterServiceImpl implements OrderMasterService { * @param memberId Adapay实名账户ID * @param amount 提现金额 */ - private void drawCash(Long deptId, String memberId, String amount) throws BaseAdaPayException { + private String drawCash(Long deptId, String memberId, String amount) throws BaseAdaPayException { String orderNo = AdapayUtils.createOrderNo(AdapayOrderType.DRAW_CASH); JSONObject response = adapayService.drawCash(deptId, orderNo, "T1", amount, memberId, "订单结算", null); boolean status = AdapayStatusEnum.pending.code.equals(response.getString("status")) || AdapayStatusEnum.succeeded.code.equals(response.getString("status")); - if (!status) { + if (status) { + return response.getString("id"); + } else { //如果提现失败 把信息记录到error日志里 logger.error("提现失败: deptId={}, memberId={}, amount={}, 失败原因:{}", deptId, memberId, amount, response.getString("error_msg")); + return null; } } diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index c15acfed..5c6e2394 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -392,9 +392,12 @@ - UPDATE order_detail - SET draw_cash_status = #{drawCashStatus}, - arrival_time = #{arrivalTime} + UPDATE order_detail SET + draw_cash_id = #{drawCashId}, + draw_cash_time = #{drawCashTime}, + arrival_time = #{arrivalTime}, + draw_cash_status = #{drawCashStatus}, + update_time = NOW() WHERE draw_cash_id = #{drawCashId}