From dd5dc62452575834ae5176fdf674f326f1b23f67 Mon Sep 17 00:00:00 2001 From: HH Date: Sat, 8 Apr 2023 23:24:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E4=BB=B7=E5=8D=95=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ghy/callback/PayCallbackService.java | 33 ++++---- .../web/controller/pay/AlipayController.java | 66 +++++++++++---- .../web/controller/pay/WxPayController.java | 80 +++++++++---------- .../service/impl/OrderDetailServiceImpl.java | 21 ++++- .../mapper/FinancialChangeRecordMapper.java | 7 ++ .../payment/mapper/FinancialDetailMapper.java | 7 ++ .../service/FinancialDetailService.java | 7 ++ .../FinancialChangeRecordServiceImpl.java | 2 +- .../impl/FinancialDetailServiceImpl.java | 5 ++ .../financial/FinancialChangeRecordMapper.xml | 6 ++ .../financial/FinancialDetailMapper.xml | 7 ++ 11 files changed, 166 insertions(+), 75 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/callback/PayCallbackService.java b/ghy-admin/src/main/java/com/ghy/callback/PayCallbackService.java index 8e21ce1a..278e8b33 100644 --- a/ghy-admin/src/main/java/com/ghy/callback/PayCallbackService.java +++ b/ghy-admin/src/main/java/com/ghy/callback/PayCallbackService.java @@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.concurrent.CompletableFuture; /** * 支付回调 @@ -51,27 +52,31 @@ public class PayCallbackService implements CallBackService { PaymentDTO dto = financialMasterService.selectPaymentById(payment.getId()); // 校验是否是本系统发出去的支付请求 if (dto != null) { - // 更新交易记录 - PaymentDTO param = new PaymentDTO(); - param.setId(payment.getId()); - param.setFeeAmt(payment.getFeeAmt()); - param.setStatus(payment.getStatus()); - param.setPayTime(LocalDateTime.now()); - financialMasterService.updatePayment(param); + CompletableFuture.runAsync(() -> { + // 异步更新交易记录 避免被回滚 + PaymentDTO param = new PaymentDTO(); + param.setId(payment.getId()); + param.setFeeAmt(payment.getFeeAmt()); + param.setStatus(payment.getStatus()); + param.setPayTime(LocalDateTime.now()); + financialMasterService.updatePayment(param); + }); if (AdapayStatusEnum.succeeded.code.equals(payment.getStatus())) { - if(payment.getOrderNo().split("_").length > 2){ - // 支付回调中的加价记录 - String financialChangeRecordIds = payment.getOrderNo().split("_")[1]; - String[] financialChangeRecordArr = financialChangeRecordIds.split(","); + if (payment.getOrderNo().split("_").length > 2) { + // 支付回调中的加价记录ID + String fcrIdStr = payment.getOrderNo().split("_")[1]; + String[] fcrIds = fcrIdStr.split(","); BigDecimal totalChangeMoney = BigDecimal.ZERO; Long financialMasterId = null; - for (String financialChangeRecordId: financialChangeRecordArr) { + for (String fcrId : fcrIds) { FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord(); - financialChangeRecord.setId(Long.valueOf(financialChangeRecordId)); + financialChangeRecord.setId(Long.valueOf(fcrId)); financialChangeRecord.setPayStatus(1); // 加价的支付paymentId回填到remark financialChangeRecord.setRemark(payment.getId()); + financialChangeRecord.setRemark(payment.getId()); + financialChangeRecord.setPaymentId(payment.getId()); financialChangeRecordService.update(financialChangeRecord); // 修改子订单的payMoney @@ -99,7 +104,7 @@ public class PayCallbackService implements CallBackService { // 更新主财务单状态 financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel()); } else { - logger.warn("支付失败 : {}", payment); + logger.warn("支付失败 : {}", data); } } else { logger.warn("系统中不存在这条交易记录: {}", event); diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java index 4d80a557..f9e5e088 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java @@ -1,9 +1,12 @@ package com.ghy.web.controller.pay; +import com.alibaba.fastjson.JSONObject; +import com.ghy.common.adapay.model.AdapayStatusEnum; import com.ghy.common.adapay.model.PayParam; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.enums.PayStatus; +import com.ghy.common.enums.PayTypeEnum; import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderMaster; import com.ghy.order.service.OrderDetailService; @@ -14,7 +17,10 @@ import com.ghy.payment.service.AdapayService; import com.ghy.payment.service.FinancialChangeRecordService; import com.ghy.payment.service.FinancialMasterService; import com.huifu.adapay.core.exception.BaseAdaPayException; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; @@ -72,7 +78,6 @@ public class AlipayController extends BaseController { @PostMapping("/addQr") public AjaxResult addQrPay(@RequestBody Long orderDetailId) { BigDecimal payMoney = BigDecimal.ZERO; - Map map; // 查询回原子单 OrderDetail orderDetail = orderDetailService.selectById(orderDetailId); if (orderDetail == null) { @@ -87,29 +92,60 @@ public class AlipayController extends BaseController { if (fm == null) { return AjaxResult.error("财务单不存在!"); } - // 主单是否付款 - FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(orderDetailId); - // 查询关联的加价单 - if (Objects.equals(fm.getPayStatus(), PayStatus.WAIT_PAY.getCode())) { + // 主单是否付款 没付款的话一起付 + boolean fmPaid = Objects.equals(PayStatus.WAIT_PAY.getCode(), fm.getPayStatus()); + if (fmPaid) { payMoney = payMoney.add(fm.getPayMoney()); } + // 查询关联的加价单 + FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(orderDetailId); if (financialChangeRecord != null) { payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); } - // 付款 - PayParam payParam = null; - if (financialChangeRecord == null) { - payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(), payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), "商品标题", "商品描述信息"); - } else { - payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" +financialChangeRecord.getId() + "_" + System.currentTimeMillis(), payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), "加价付款", "叮咚到家服务"); + if (BigDecimal.ZERO.compareTo(payMoney) > -1) { + return AjaxResult.error("不需要支付"); } + + // 付款 + PayParam payParam; + if (financialChangeRecord == null) { + payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(), + payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), + "订单支付", "叮咚到家服务"); + } else { + payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + financialChangeRecord.getId() + "_" + System.currentTimeMillis(), + payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), + "加价付款", "叮咚到家服务"); + } + + JSONObject response; try { - map = adapayService.alipayQrPay(orderMaster.getDeptId(), payParam, null, null, null); + response = adapayService.alipayQrPay(orderMaster.getDeptId(), payParam, null, null, null); } catch (BaseAdaPayException e) { - logger.error("创建支付失败", e); + logger.error("创建支付失败: " + e.getMessage(), e); return AjaxResult.error("网络不佳 请稍后再试"); } - return AjaxResult.success(map); + boolean status = AdapayStatusEnum.succeeded.code.equals(response.getString("status")); + if (!status) { + logger.error("创建支付失败: {}", response.toJSONString()); + return AjaxResult.error("网络不佳 请稍后再试"); + } + // 支付二维码创建成功 保存一下paymentId + String paymentId = response.getString("id"); + if (fmPaid) { + FinancialMaster fm2update = new FinancialMaster(); + fm2update.setId(fm.getId()); + fm2update.setPaymentId(paymentId); + fm2update.setPayType(PayTypeEnum.ALIPAY_QR.getCode()); + financialMasterService.updateFinancialMaster(fm2update); + } + if (financialChangeRecord != null) { + FinancialChangeRecord fcr2update = new FinancialChangeRecord(); + fcr2update.setId(financialChangeRecord.getId()); + fcr2update.setPaymentId(paymentId); + financialChangeRecordService.update(fcr2update); + } + return AjaxResult.success(response); } } diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java index ee45389c..d1a2fcc2 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java @@ -1,6 +1,5 @@ package com.ghy.web.controller.pay; -import com.ghy.common.adapay.model.DivMember; import com.ghy.common.adapay.model.PayParam; import com.ghy.common.adapay.model.WxpayExpend; import com.ghy.common.config.WxConfig; @@ -8,7 +7,6 @@ import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.enums.PayStatus; import com.ghy.common.json.JSONObject; -import com.ghy.common.utils.ExceptionUtil; import com.ghy.common.utils.StringUtils; import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderMaster; @@ -22,7 +20,10 @@ import com.ghy.payment.service.FinancialMasterService; import com.huifu.adapay.core.exception.BaseAdaPayException; import org.springframework.stereotype.Controller; import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -54,7 +55,6 @@ public class WxPayController extends BaseController { @ResponseBody public AjaxResult drawCash(@RequestBody JSONObject object) { try { - // 101 123dasda D0 1.00 C7D101 Long deptId = object.getLong("deptId"); String orderNo = object.getStr("orderNo"); String cashType = object.getStr("cashType"); @@ -85,11 +85,11 @@ public class WxPayController extends BaseController { } List idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList()); List financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ",")); - List financialChangeRecordIds = new ArrayList(); + List financialChangeRecordIds = new ArrayList<>(); for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) { - if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) { + if (PayStatus.WAIT_PAY.getCode().equals(financialChangeRecord.getPayStatus())) { payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); - financialChangeRecordIds.add(Long.valueOf(financialChangeRecord.getId())); + financialChangeRecordIds.add(financialChangeRecord.getId()); } } //调用adapay微信公众号支付. @@ -97,8 +97,6 @@ public class WxPayController extends BaseController { expend.setOpenId(openId); Map map; try { - List divMembers = new ArrayList<>(); -// divMembers.add(new DivMember("C7D101", String.valueOf(financialMaster.getPayMoney()), true)); // TODO 订单里需要补充支付金额、tittle、简要描述、分账信息、description String changeRecordIdStr = financialChangeRecordIds.size() > 0 ? StringUtils.join(financialChangeRecordIds, ",") + "_" : ""; PayParam payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + changeRecordIdStr + System.currentTimeMillis(), @@ -111,37 +109,37 @@ public class WxPayController extends BaseController { return AjaxResult.success(map); } - /** - * 微信公众号支付. - * https://open.weixin.qq.com/connect/oauth2/authorize? - * appid=wx404f2439a8c24e15 - * &redirect_uri=http%3A%2F%2Fwww.opsoul.com%2Fpay%2Fwx%2Fpub - * &response_type=code - * &scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect - */ - @GetMapping("/pub") - @ResponseBody - public AjaxResult pubPay(HttpServletRequest request) { - String openId = request.getParameter("openId"); - String orderMasterCode = request.getHeader("orderMasterCode"); - OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode); - if (orderMaster == null) { - return AjaxResult.error("订单不存在"); - } - try { - logger.info("open id is " + openId); - //调用adapay微信公众号支付. - WxpayExpend expend = new WxpayExpend(); - expend.setOpenId(openId); - Map map; - PayParam payParam = PayParam.delayPayParam(orderMaster.getCode(), "0.01", "工圈子测试", "工圈子测试描述"); - map = adapayService.wxPubPay(orderMaster.getDeptId(), payParam, expend, null, null); - return AjaxResult.success(map); - } catch (Exception e) { - e.printStackTrace(); - logger.error(ExceptionUtil.getExceptionMessage(e)); - } - return AjaxResult.success(); - } +// /** +// * 微信公众号支付.暂时用不着 +// * https://open.weixin.qq.com/connect/oauth2/authorize? +// * appid=wx404f2439a8c24e15 +// * &redirect_uri=http%3A%2F%2Fwww.opsoul.com%2Fpay%2Fwx%2Fpub +// * &response_type=code +// * &scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect +// */ +// @GetMapping("/pub") +// @ResponseBody +// public AjaxResult pubPay(HttpServletRequest request) { +// String openId = request.getParameter("openId"); +// String orderMasterCode = request.getHeader("orderMasterCode"); +// OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode); +// if (orderMaster == null) { +// return AjaxResult.error("订单不存在"); +// } +// try { +// logger.info("open id is " + openId); +// //调用adapay微信公众号支付. +// WxpayExpend expend = new WxpayExpend(); +// expend.setOpenId(openId); +// Map map; +// PayParam payParam = PayParam.delayPayParam(orderMaster.getCode(), "0.01", "工圈子测试", "工圈子测试描述"); +// map = adapayService.wxPubPay(orderMaster.getDeptId(), payParam, expend, null, null); +// return AjaxResult.success(map); +// } catch (Exception e) { +// e.printStackTrace(); +// logger.error(ExceptionUtil.getExceptionMessage(e)); +// } +// return AjaxResult.success(); +// } } 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 675eb402..438aad19 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 @@ -258,7 +258,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { * @param orderDetail * @throws BaseAdaPayException */ - private void refund(OrderDetail orderDetail) throws BaseAdaPayException { + @Transactional(rollbackFor = Exception.class) + public void refund(OrderDetail orderDetail) throws BaseAdaPayException { Long orderDetailId = orderDetail.getId(); OrderMaster orderMaster = orderMasterMapper.selectById(orderDetail.getOrderMasterId()); Assert.notNull(orderMaster, "OrderMaster is null !"); @@ -276,7 +277,6 @@ public class OrderDetailServiceImpl implements OrderDetailService { refundMoney = refundMoney.subtract(fcr.getChangeMoney()); } - List fdList = financialDetailService.selectListByOrderDetailId(orderDetailId); for (FinancialDetail fd : fdList) { if (PayStatus.REFUND.getCode().equals(fd.getPayStatus()) || @@ -287,7 +287,6 @@ public class OrderDetailServiceImpl implements OrderDetailService { } else if (PayStatus.PAID.getCode().equals(fd.getPayStatus())) { refundMoney = refundMoney.add(fd.getPayMoney()); } - financialDetailService.updatePayStatus(fd.getId(), PayStatus.REFUND.getCode()); } if (BigDecimal.ZERO.compareTo(refundMoney) > -1) { @@ -295,6 +294,9 @@ public class OrderDetailServiceImpl implements OrderDetailService { return; } + // 子订单的退款肯定≤主订单金额 否则肯定算错了 + Assert.isTrue(refundMoney.compareTo(financialMaster.getPayMoney()) < 1, "订单金额异常"); + // 发起退款 String refundAmt = AdapayUtils.bigDecimalToString(refundMoney); JSONObject response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), refundAmt, RefundType.ROD); @@ -304,6 +306,17 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 如果退款失败 这里携带失败原因抛出异常 回滚订单状态 Assert.isTrue(status, response.getString("error_msg")); logger.info("子订单[id={}]退款成功", orderDetailId); + + String reverseId = response.getString("id"); + for (FinancialDetail fd : fdList) { + if (PayStatus.PAID.getCode().equals(fd.getPayStatus())) { + FinancialDetail fd2update = new FinancialDetail(); + fd2update.setId(fd.getId()); + fd2update.setPayStatus(PayStatus.REFUND.getCode()); + fd2update.setReverseId(reverseId); + financialDetailService.updateFinancialDetail(fd2update); + } + } } @Override @@ -618,6 +631,6 @@ public class OrderDetailServiceImpl implements OrderDetailService { @Override public void refundSucceeded(String reverseId) { - // TODO + financialDetailService.refundSucceeded(reverseId); } } diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java index c8e0314e..227c5908 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java @@ -65,4 +65,11 @@ public interface FinancialChangeRecordMapper { List selectByMasterId(@Param("orderMasterId") Long orderMasterId); int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus); + + /** + * 退款成功 + * + * @param reverseId Adapay撤销支付ID + */ + void refundSucceeded(String reverseId); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java index 49265376..f6a3278f 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java @@ -96,4 +96,11 @@ public interface FinancialDetailMapper { void updateByFinancialMasterId(FinancialDetail financialDetail); int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus); + + /** + * 退款成功 + * + * @param reverseId Adapay撤销支付ID + */ + void refundSucceeded(String reverseId); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java index 81a11798..e9f36bee 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java @@ -116,4 +116,11 @@ public interface FinancialDetailService { List selectByFinancialMasterIdAndType(Long financialMasterId, int type); int updatePayStatus(Long id, Integer payStatus); + + /** + * 退款成功 + * + * @param reverseId Adapay撤销支付ID + */ + void refundSucceeded(String reverseId); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java index 5d1a91cc..2fa39453 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java @@ -153,6 +153,6 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe @Override public void refundSucceeded(String reverseId) { - // TODO + financialChangeRecordMapper.refundSucceeded(reverseId); } } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java index 33a4af49..d9e50abd 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java @@ -175,4 +175,9 @@ public class FinancialDetailServiceImpl implements FinancialDetailService { public int updatePayStatus(Long id, Integer payStatus) { return financialDetailMapper.updatePayStatus(id, payStatus); } + + @Override + public void refundSucceeded(String reverseId) { + financialDetailMapper.refundSucceeded(reverseId); + } } diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml index 79bfa1bd..f5a41e44 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml @@ -111,4 +111,10 @@ SET pay_status = #{payStatus} WHERE id = #{id} + + + UPDATE financial_change_record SET + pay_status = 3 + WHERE reverse_id = #{reverseId} + diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml index a312fcc2..05c2b4b2 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml @@ -155,6 +155,13 @@ WHERE id = #{id} + + UPDATE financial_detail SET + pay_status = 3 , + update_time = SYSDATE() + WHERE reverse_id = #{reverseId} + +