zhangchen 1 місяць тому
батько
коміт
bb454ca59c

+ 2 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/ReservationOrderListDto.java

@@ -29,6 +29,8 @@ public class ReservationOrderListDto {
     private String storeEntranceImageUrl;
     @ApiModelProperty(value = "订单状态")
     private Integer orderStatus;
+    @ApiModelProperty(value = "支付状态 0:未支付 1:已支付 2:已退款 3:部分退款")
+    private Integer paymentStatus;
     @ApiModelProperty(value = "预约ID")
     private Integer reservationId;
     @ApiModelProperty(value = "订金金额")

+ 2 - 0
alien-entity/src/main/resources/mapper/UserReservationOrderMapper.xml

@@ -13,6 +13,7 @@
         <result column="depositAmount" property="depositAmount"/>
         <result column="createdTime" property="createdTime"/>
         <result column="verificationCode" property="verificationCode"/>
+        <result column="paymentStatus" property="paymentStatus"/>
     </resultMap>
 
     <!-- 预订订单列表:店铺名称模糊搜索(限10字)、按状态筛选 -->
@@ -24,6 +25,7 @@
             s.store_name AS storeName,
             img.img_url AS storeEntranceImageUrl,
             o.order_status AS orderStatus,
+            o.payment_status AS paymentStatus,
             o.reservation_id AS reservationId,
             o.deposit_amount AS depositAmount,
             o.created_time AS createdTime,

+ 3 - 1
alien-store/src/main/java/shop/alien/store/controller/MerchantPaymentController.java

@@ -70,6 +70,7 @@ public class MerchantPaymentController {
             @ApiImplicitParam(name = "storeId", value = "门店ID", required = true, paramType = "query", dataType = "int"),
             @ApiImplicitParam(name = "outTradeNo", value = "商户订单号", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "refundAmount", value = "退款金额(元)", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "refundType", value = "退款类型 0:用户取消 1:商家退款 2:部分退款等 3.扫码核销成功", required = false, paramType = "query", dataType = "int"),
             @ApiImplicitParam(name = "refundReason", value = "退款原因", paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "payType", value = "支付类型 alipay", required = true, paramType = "query", dataType = "String")
     })
@@ -78,9 +79,10 @@ public class MerchantPaymentController {
             @RequestParam Integer storeId,
             @RequestParam String outTradeNo,
             @RequestParam String refundAmount,
+            @RequestParam Integer refundType,
             @RequestParam(required = false) String refundReason,
             @RequestParam(defaultValue = "alipay") String payType) {
         log.info("MerchantPaymentController.refund storeId={}, outTradeNo={}", storeId, outTradeNo);
-        return merchantPaymentStrategyFactory.getStrategy(payType).refund(storeId, outTradeNo, refundAmount, refundReason);
+        return merchantPaymentStrategyFactory.getStrategy(payType).refund(storeId, outTradeNo, refundAmount, refundReason, refundType);
     }
 }

+ 3 - 1
alien-store/src/main/java/shop/alien/store/controller/UserReservationPaymentController.java

@@ -71,6 +71,7 @@ public class UserReservationPaymentController {
             @ApiImplicitParam(name = "storeId", value = "门店ID", required = true, paramType = "query", dataType = "int"),
             @ApiImplicitParam(name = "outTradeNo", value = "商户订单号", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "refundAmount", value = "退款金额(元)", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "refundType", value = "退款类型 0:用户取消 1:商家退款 2:部分退款等 3.扫码核销成功", required = false, paramType = "query", dataType = "int"),
             @ApiImplicitParam(name = "refundReason", value = "退款原因", paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "payType", value = "支付类型 alipay/wechatPay", paramType = "query", dataType = "String")
     })
@@ -79,10 +80,11 @@ public class UserReservationPaymentController {
             @RequestParam Integer storeId,
             @RequestParam String outTradeNo,
             @RequestParam String refundAmount,
+            @RequestParam Integer refundType,
             @RequestParam(required = false) String refundReason,
             @RequestParam(defaultValue = "alipay") String payType) {
         log.info("UserReservationPaymentController.refund storeId={}, outTradeNo={}", storeId, outTradeNo);
         MerchantPaymentStrategy strategy = merchantPaymentStrategyFactory.getStrategy(payType);
-        return strategy.refund(storeId, outTradeNo, refundAmount, refundReason);
+        return strategy.refund(storeId, outTradeNo, refundAmount, refundReason, refundType);
     }
 }

+ 1 - 0
alien-store/src/main/java/shop/alien/store/service/impl/ReservationOrderListServiceImpl.java

@@ -130,6 +130,7 @@ public class ReservationOrderListServiceImpl implements ReservationOrderListServ
             vo.setStoreName(dto.getStoreName());
             vo.setStoreEntranceImageUrl(dto.getStoreEntranceImageUrl());
             vo.setOrderStatus(dto.getOrderStatus());
+            vo.setPaymentStatus(dto.getPaymentStatus());
             UserReservation resForStatus = dto.getReservationId() != null ? reservationMap.get(dto.getReservationId()) : null;
             vo.setStatusText(buildStatusText(dto.getOrderStatus(), resForStatus));
             vo.setDepositAmount(dto.getDepositAmount());

+ 2 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreReservationServiceImpl.java

@@ -168,7 +168,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
             try {
                 // 调用退款接口(和核销中的退款逻辑一样)
                 MerchantPaymentStrategy strategy = merchantPaymentStrategyFactory.getStrategy(order.getPaymentMethod());
-                strategy.refund(order.getStoreId(), order.getOutTradeNo(), order.getDepositAmount().toString(), "商家取消预约退款");
+                strategy.refund(order.getStoreId(), order.getOutTradeNo(), order.getDepositAmount().toString(), "商家取消预约退款", 1);
                 
                 // 退款成功后,更新订单状态为已退款(7)
 //                order.setOrderStatus(7); // 7:已退款
@@ -623,7 +623,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
         if(order.getOrderCostType() == 1){
             //调用退款
             MerchantPaymentStrategy strategy = merchantPaymentStrategyFactory.getStrategy(order.getPaymentMethod());
-            strategy.refund(order.getStoreId(), order.getOutTradeNo(), order.getDepositAmount().toString(), "已扫码到店商家退款");
+            strategy.refund(order.getStoreId(), order.getOutTradeNo(), order.getDepositAmount().toString(), "已扫码到店商家退款", 3);
 
         }
 

+ 1 - 1
alien-store/src/main/java/shop/alien/store/strategy/merchantPayment/MerchantPaymentStrategy.java

@@ -42,7 +42,7 @@ public interface MerchantPaymentStrategy {
      * @param refundReason 退款原因
      * @return 成功 R.data("退款成功"),失败 R.fail
      */
-    R<String> refund(Integer storeId, String outTradeNo, String refundAmount, String refundReason);
+    R<String> refund(Integer storeId, String outTradeNo, String refundAmount, String refundReason, Integer refundType);
 
     /**
      * 策略类型,如 alipay、wechatPay

+ 2 - 1
alien-store/src/main/java/shop/alien/store/strategy/merchantPayment/impl/MerchantAlipayPaymentStrategyImpl.java

@@ -296,7 +296,7 @@ public class MerchantAlipayPaymentStrategyImpl implements MerchantPaymentStrateg
     }
 
     @Override
-    public R<String> refund(Integer storeId, String outTradeNo, String refundAmount, String refundReason) {
+    public R<String> refund(Integer storeId, String outTradeNo, String refundAmount, String refundReason, Integer refundType) {
         if (storeId == null || StringUtils.isBlank(outTradeNo)) {
             return R.fail("门店ID和商户订单号不能为空");
         }
@@ -346,6 +346,7 @@ public class MerchantAlipayPaymentStrategyImpl implements MerchantPaymentStrateg
             order.setRefundTime(now);
             order.setRefundReason(refundReason);
             order.setUpdatedTime(now);
+            order.setRefundType(refundType);
             userReservationOrderService.updateById(order);
 
             RefundRecord record = new RefundRecord();

+ 2 - 1
alien-store/src/main/java/shop/alien/store/strategy/merchantPayment/impl/MerchantWechatPaymentStrategyImpl.java

@@ -299,7 +299,7 @@ public class MerchantWechatPaymentStrategyImpl implements MerchantPaymentStrateg
     }
 
     @Override
-    public R<String> refund(Integer storeId, String outTradeNo, String refundAmount, String refundReason) {
+    public R<String> refund(Integer storeId, String outTradeNo, String refundAmount, String refundReason, Integer refundType) {
         if (storeId == null || StringUtils.isBlank(outTradeNo)) {
             return R.fail("门店ID和商户订单号不能为空");
         }
@@ -384,6 +384,7 @@ public class MerchantWechatPaymentStrategyImpl implements MerchantPaymentStrateg
             order.setRefundTime(now);
             order.setRefundReason(refundReason);
             order.setUpdatedTime(now);
+            order.setRefundType(refundType);
             userReservationOrderService.updateById(order);
 
             RefundRecord record = new RefundRecord();

+ 3 - 0
alien-store/src/main/java/shop/alien/store/vo/ReservationOrderListVo.java

@@ -35,6 +35,9 @@ public class ReservationOrderListVo {
     @ApiModelProperty(value = "订单状态 0:待支付 1:待使用 2:已完成 3:已过期 4:已取消 5:已关闭 6:退款中 7:已退款")
     private Integer orderStatus;
 
+    @ApiModelProperty(value = "支付状态 0:未支付 1:已支付 2:已退款 3:部分退款")
+    private Integer paymentStatus;
+
     @ApiModelProperty(value = "状态文案:待支付/待使用/已完成/已过期/已取消/已关闭/退款中/已退款")
     private String statusText;