修改退款审核、退款环节,记录操作人ID,通过请求token获取用户ID

This commit is contained in:
jkcdev 2025-05-20 16:46:49 +08:00
parent 7817cfb727
commit 5a5623069e
5 changed files with 48 additions and 12 deletions

View File

@ -107,6 +107,12 @@
<artifactId>javax.servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<!-- Sa-Token 权限认证在线文档https://sa-token.cc -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
<version>${satoken.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -1,9 +1,13 @@
package com.cdzy.payment.controller; package com.cdzy.payment.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.cdzy.common.enums.Code;
import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.JsonResult;
import com.cdzy.payment.model.dto.*; import com.cdzy.payment.model.dto.*;
import com.cdzy.payment.service.WxPayService; import com.cdzy.payment.service.WxPayService;
import com.ebike.feign.clients.StaffFeignClient;
import com.ebike.feign.model.rsp.StaffFeign;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.wechat.pay.java.service.payments.model.Transaction; import com.wechat.pay.java.service.payments.model.Transaction;
import com.wechat.pay.java.service.refund.model.Refund; import com.wechat.pay.java.service.refund.model.Refund;
@ -26,6 +30,8 @@ public class EbikeWxPaymentController {
@Resource @Resource
private WxPayService wxPayService; private WxPayService wxPayService;
@Resource
private StaffFeignClient staffFeignClient;
/** /**
* 微信支付下单 * 微信支付下单
@ -84,7 +90,15 @@ public class EbikeWxPaymentController {
*/ */
@PostMapping("/refund") @PostMapping("/refund")
public JsonResult<?> refund(@RequestBody ReqRefundDto refundDto) { public JsonResult<?> refund(@RequestBody ReqRefundDto refundDto) {
HandleNotifyResult r = wxPayService.refund(refundDto); // 获取审核人信息
String tokenValue = StpUtil.getTokenValue();
String userId = null;
JsonResult<StaffFeign> result = staffFeignClient.getInfoByToken(tokenValue);
if (result.getCode() == Code.SUCCESS) {
StaffFeign staffFeign = result.getData();
userId = String.valueOf(staffFeign.getStaffId());
}
HandleNotifyResult r = wxPayService.refund(refundDto, userId);
return r.isSuccess()?JsonResult.success(true):JsonResult.failed(r.getMessage()); return r.isSuccess()?JsonResult.success(true):JsonResult.failed(r.getMessage());
} }
@ -96,7 +110,15 @@ public class EbikeWxPaymentController {
*/ */
@PostMapping("/reviewRefund") @PostMapping("/reviewRefund")
public JsonResult<?> reviewRefund(@RequestBody ReqRefundProcessDto processDto) { public JsonResult<?> reviewRefund(@RequestBody ReqRefundProcessDto processDto) {
boolean r = wxPayService.refundReview(processDto); // 获取审核人信息
String tokenValue = StpUtil.getTokenValue();
String userId = null;
JsonResult<StaffFeign> result = staffFeignClient.getInfoByToken(tokenValue);
if (result.getCode() == Code.SUCCESS) {
StaffFeign staffFeign = result.getData();
userId = String.valueOf(staffFeign.getStaffId());
}
boolean r = wxPayService.refundReview(processDto, userId);
return r?JsonResult.success(true):JsonResult.failed("审核失败"); return r?JsonResult.success(true):JsonResult.failed("审核失败");
} }

View File

@ -81,17 +81,19 @@ public interface WxPayService {
* 审核退款申请 * 审核退款申请
* *
* @param processDto 退款审核信息 * @param processDto 退款审核信息
* @operator 操作人id
* @return 退款信息id * @return 退款信息id
*/ */
Boolean refundReview(ReqRefundProcessDto processDto); Boolean refundReview(ReqRefundProcessDto processDto, String operator);
/** /**
* 调用微信退款接口 * 调用微信退款接口
* *
* @param refundDto 退款请求 * @param refundDto 退款请求
* @param operator 操作人id
* @return 退款信息id * @return 退款信息id
*/ */
HandleNotifyResult refund(ReqRefundDto refundDto); HandleNotifyResult refund(ReqRefundDto refundDto, String operator);
/** /**

View File

@ -96,7 +96,8 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"), EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户") QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"), .when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time") EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"), EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time"),
EBIKE_USER_ORDERS.RIDE_POINT, EBIKE_USER_ORDERS.RETURN_POINT
) )
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID)) .leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID)) .leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
@ -131,7 +132,8 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"), EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户") QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"), .when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time") EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"), EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time"),
EBIKE_USER_ORDERS.RIDE_POINT, EBIKE_USER_ORDERS.RETURN_POINT
) )
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID)) .leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID)) .leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
@ -170,8 +172,9 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
.when("2").then("线下退款").end().as("refund_method"), .when("2").then("线下退款").end().as("refund_method"),
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"), EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户") QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"), .when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time") EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"), EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time"),
EBIKE_USER_ORDERS.RIDE_POINT, EBIKE_USER_ORDERS.RETURN_POINT
) )
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID)) .leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID)) .leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
@ -203,7 +206,8 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"), EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户") QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"), .when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time") EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"), EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time"),
EBIKE_USER_ORDERS.RIDE_POINT, EBIKE_USER_ORDERS.RETURN_POINT
) )
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID)) .leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID)) .leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))

View File

@ -366,6 +366,7 @@ public class WxPayServiceImpl implements WxPayService {
ebikeRefund.setRefundApply(ebikePayment.getTotal()); ebikeRefund.setRefundApply(ebikePayment.getTotal());
ebikeRefund.setTransactionId(transactionId); ebikeRefund.setTransactionId(transactionId);
ebikeRefund.setReason(reason); ebikeRefund.setReason(reason);
ebikeRefund.setStatus(String.valueOf(Status.PROCESSING.ordinal()));
ebikeRefund.setProcessState(String.valueOf(RefundProcessState.applying.ordinal())); ebikeRefund.setProcessState(String.valueOf(RefundProcessState.applying.ordinal()));
ebikeRefund.setSource(String.valueOf(RefoundApplySource.user.ordinal())); ebikeRefund.setSource(String.valueOf(RefoundApplySource.user.ordinal()));
ebikeRefundService.saveRefundResult(ebikeRefund); ebikeRefundService.saveRefundResult(ebikeRefund);
@ -373,13 +374,13 @@ public class WxPayServiceImpl implements WxPayService {
} }
@Override @Override
public Boolean refundReview(ReqRefundProcessDto processDto) { public Boolean refundReview(ReqRefundProcessDto processDto, String operator) {
EbikeRefund ebikeRefund = ebikeRefundService.getById(processDto.getRefundId()); EbikeRefund ebikeRefund = ebikeRefundService.getById(processDto.getRefundId());
if (ebikeRefund == null) { if (ebikeRefund == null) {
log.error("审核refundReview失败{} 退款申请不存在", processDto.getRefundId()); log.error("审核refundReview失败{} 退款申请不存在", processDto.getRefundId());
return false; return false;
} }
ebikeRefund.setReviewOperator(operator);
ebikeRefund.setProcessState(processDto.getOperate()); ebikeRefund.setProcessState(processDto.getOperate());
ebikeRefund.setProcessTime(LocalDateTime.now()); ebikeRefund.setProcessTime(LocalDateTime.now());
ebikeRefund.setRemark(processDto.getReason()); ebikeRefund.setRemark(processDto.getReason());
@ -396,7 +397,7 @@ public class WxPayServiceImpl implements WxPayService {
} }
@Override @Override
public HandleNotifyResult refund(ReqRefundDto refundDto) { public HandleNotifyResult refund(ReqRefundDto refundDto, String operator) {
HandleNotifyResult result_ = new HandleNotifyResult(); HandleNotifyResult result_ = new HandleNotifyResult();
result_.setSuccess(false); result_.setSuccess(false);
// 首先验证密码 // 首先验证密码
@ -451,6 +452,7 @@ public class WxPayServiceImpl implements WxPayService {
Refund result = wxRefundService.create(request); Refund result = wxRefundService.create(request);
// 更新退款信息 // 更新退款信息
if (result != null) { if (result != null) {
ebikeRefund.setRefundOperator(operator);
ebikeRefund.setOrderId(outTradeNo); ebikeRefund.setOrderId(outTradeNo);
ebikeRefund.setTransactionId(transactionId); ebikeRefund.setTransactionId(transactionId);
ebikeRefund.setTotal(amount.getTotal()); ebikeRefund.setTotal(amount.getTotal());