Browse Source

支付链接重定向

chao 3 năm trước cách đây
mục cha
commit
2d2b07ac85

+ 1 - 1
src/main/java/com/caimei365/order/components/OrderCommonService.java

@@ -100,7 +100,7 @@ public class OrderCommonService {
      */
     public List<DiscernReceiptVo> getDiscernReceiptAndSetOrder(OrderVo order) {
         // 支付记录
-        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId());
+        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
         Double receiptAmount = 0d;
         // 订单款
         if (!discernReceiptList.isEmpty()) {

+ 21 - 28
src/main/java/com/caimei365/order/controller/PayOrderApi.java

@@ -4,18 +4,15 @@ import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.dto.PayDto;
 import com.caimei365.order.model.dto.PayLinkDto;
-import com.caimei365.order.model.vo.OrderPayLinkVo;
 import com.caimei365.order.service.PayOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpHeaders;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
 import java.security.spec.InvalidKeySpecException;
 import java.util.Map;
@@ -99,32 +96,28 @@ public class PayOrderApi {
         return payOrderService.getPayLink(payLinkDto);
     }
 
-//    /**
-//     * 支付链接重定向到页面
-//     */
-//    @ApiOperation("支付链接重定向到页面(旧:/PayOrder/jumpPage)")
-//    @GetMapping("/link/jump")
-//    public void jumpPage(String linkLogo) {
-//        payOrderService.jumpPage(linkLogo);
-//    }
-//
-//    /**
-//     * 支付链接数据
-//     */
-//    @ApiOperation("支付链接重定向到页面(旧:/PayOrder/linkData)")
-//    @GetMapping("/link/data")
-//    public ResponseJson linkData(String linkLogo) {
-//        return payOrderService.linkData(linkLogo);
-//    }
-
-
-
-
-
-
-
-
+    /**
+     * 支付链接重定向到页面
+     * @param linkLogo 链接标识
+     */
+    @ApiOperation("支付链接重定向到页面(旧:/PayOrder/jumpPage)")
+    @ApiImplicitParam(required = false, name = "linkLogo", value = "链接标识")
+    @GetMapping("/link/jump")
+    public String jumpPayPage(String linkLogo) {
+        return payOrderService.jumpPayPage(linkLogo);
+    }
 
+    /**
+     * 重定向页面的支付数据
+     */
+    @ApiOperation("重定向页面的支付数据(旧:/PayOrder/linkData)")
+    @GetMapping("/link/data")
+    public ResponseJson<Map<String, Object>> linkPayData(String linkLogo) {
+        if (StringUtils.isBlank(linkLogo)) {
+            return ResponseJson.error("链接标识不能为空!", null);
+        }
+        return payOrderService.linkPayData(linkLogo);
+    }
 
     /**
      * 微信线上支付

+ 1 - 1
src/main/java/com/caimei365/order/mapper/OrderCommonMapper.java

@@ -43,7 +43,7 @@ public interface OrderCommonMapper {
      * 支付记录(收款记录)
      * @param orderId 订单Id
      */
-    List<DiscernReceiptVo> getDiscernReceipt(Integer orderId);
+    List<DiscernReceiptVo> getDiscernReceipt(Integer orderId, String shopOrderId);
     /**
      * 获取返佣款
      * @param shopOrderId 子订单Id

+ 6 - 0
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -46,6 +46,11 @@ public interface PayOrderMapper {
      * @param amount  本次待付款金额
      */
     OrderPayLinkVo getOrderPayLink(Integer orderId, Double amount);
+    /**
+     * 支付链接
+     * @param linkLogo  链接标识
+     */
+    OrderPayLinkVo getPayLinkByLinkLogo(String linkLogo);
     /**
      * 新增支付链接
      */
@@ -65,4 +70,5 @@ public interface PayOrderMapper {
     Integer getOrderPromotionsId(Integer orderId);
 
 
+
 }

+ 10 - 1
src/main/java/com/caimei365/order/service/PayOrderService.java

@@ -43,6 +43,16 @@ public interface PayOrderService {
      * }
      */
     ResponseJson<String> getPayLink(PayLinkDto payLinkDto);
+    /**
+     * 支付链接重定向到页面
+     * @param linkLogo 链接标识
+     */
+    String jumpPayPage(String linkLogo);
+    /**
+     * 重定向页面的支付数据
+     * @param linkLogo 链接标识
+     */
+    ResponseJson<Map<String, Object>> linkPayData(String linkLogo);
     /**
      * 微信线上支付
      * @param payDto {
@@ -80,5 +90,4 @@ public interface PayOrderService {
      */
     String paymentCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException;
 
-
 }

+ 59 - 4
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -69,7 +69,8 @@ public class PayOrderServiceImpl implements PayOrderService {
     private String notifyUrl;
     @Value("${caimei.redirectLink}")
     private String redirectLink;
-
+    @Value("${caimei.linkPage}")
+    private String linkPage;
 
     /**
      * 订单支付前效验付款规则
@@ -229,7 +230,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         // 机构信息
         String userName = baseMapper.getUserNameByUserId(order.getUserId());
         // 支付记录
-        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId());
+        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
         if (!discernReceiptList.isEmpty()) {
             AtomicDouble receiptAmount = new AtomicDouble(0d);
             AtomicReference<Boolean> offlineFlag = new AtomicReference<>(false);
@@ -317,6 +318,60 @@ public class PayOrderServiceImpl implements PayOrderService {
         return ResponseJson.success(link);
     }
 
+    /**
+     * 支付链接重定向到页面
+     *
+     * @param linkLogo 链接标识
+     */
+    @Override
+    public String jumpPayPage(String linkLogo) {
+        return "redirect:" + linkPage + "?linkLogo=" + linkLogo;
+    }
+
+    /**
+     * 重定向页面的支付数据
+     *
+     * @param linkLogo 链接标识
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> linkPayData(String linkLogo) {
+        OrderPayLinkVo orderPayLink = payOrderMapper.getPayLinkByLinkLogo(linkLogo);
+        if (null == orderPayLink) {
+            // 已重新生成链接
+            return ResponseJson.error("链接已更新,请重新获取", null);
+        }
+        //链接状态,0成功
+        int code = 0;
+        // 订单信息
+        OrderVo order = payOrderMapper.getOrderByOrderId(orderPayLink.getOrderId());
+        // 支付记录
+        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
+        if (orderPayLink.getEffectiveTime().compareTo(new Date()) < 0) {
+            //链接失效
+            code = -3;
+        }
+        if (null != discernReceiptList && discernReceiptList.size() > 0) {
+            for (DiscernReceiptVo discernReceipt : discernReceiptList) {
+                if (2 == discernReceipt.getPayWay()) {
+                    // 已线下支付
+                    code = -2;
+                    break;
+                }
+            }
+        }
+        if (1 == orderPayLink.getPayStatus()) {
+            //链接已支付
+            code = 5;
+        }
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String time = dateFormat.format(orderPayLink.getEffectiveTime());
+        Map<String, Object> map = new HashMap<>(3);
+        map.put("orderPayLink", orderPayLink);
+        map.put("code", code);
+        map.put("time", time);
+        return ResponseJson.success(map);
+    }
+
     /**
      * 微信线上支付
      *
@@ -430,7 +485,7 @@ public class PayOrderServiceImpl implements PayOrderService {
             return ResponseJson.error("订单状态错误", null);
         }
         // 支付记录
-        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId());
+        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
         if (!discernReceiptList.isEmpty()) {
             AtomicReference<Boolean> offlineFlag = new AtomicReference<>(false);
             discernReceiptList.forEach(discernReceipt -> {
@@ -549,7 +604,7 @@ public class PayOrderServiceImpl implements PayOrderService {
             return "订单不存在";
         }
         // 支付记录
-        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId());
+        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
         if (!discernReceiptList.isEmpty()) {
             AtomicDouble receiptAmount = new AtomicDouble(0d);
             discernReceiptList.forEach(discernReceipt -> {

+ 3 - 0
src/main/resources/mapper/OrderClubMapper.xml

@@ -116,6 +116,7 @@
     </select>
     <select id="getMainOrderByOrderId" resultType="com.caimei365.order.model.po.OrderPo">
         SELECT
+            orderID AS orderId,
             orderSource,
             orderNo,
             userID AS userId,
@@ -229,6 +230,7 @@
     </select>
     <select id="getOrderList" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+            orderID AS orderId,
             orderSource,
             orderNo,
             userID AS userId,
@@ -300,6 +302,7 @@
     </select>
     <select id="getOrderListByKeyword" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+        co.orderID AS orderId,
         co.orderSource,
         co.orderNo,
         co.userID AS userId,

+ 2 - 3
src/main/resources/mapper/OrderCommonMapper.xml

@@ -120,9 +120,8 @@
         cror.associateAmount
         FROM cm_receipt_order_relation cror
         LEFT JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
-        WHERE cror.orderID = #{orderId}
-        AND cror.relationType = '2' AND cror.delFlag = '0'
-        AND cdr.delFlag = '0' AND cdr.receiptStatus = '3' AND cdr.payType != '16'
+        WHERE ((cror.orderID = #{orderId} AND cror.relationType = '2') OR (cror.orderID = #{shopOrderId} AND cror.relationType = '1'))
+        AND cror.delFlag = '0' AND cdr.delFlag = '0' AND cdr.receiptStatus = '3' AND cdr.payType != '16'
         ORDER BY cdr.receiptDate DESC
     </select>
     <select id="getRebateAmountByShopOrder" resultType="java.lang.Double">

+ 4 - 0
src/main/resources/mapper/OrderSellerMapper.xml

@@ -9,8 +9,10 @@
     </select>
     <select id="getOrderList" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+        orderID AS orderId,
         orderSource,
         orderNo,
+        shopOrderIds,
         userID AS userId,
         clubID AS clubId,
         buyUserID AS buyUserId,
@@ -86,6 +88,7 @@
     </select>
     <select id="getOrderListClub" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+        orderID AS orderId,
         orderSource,
         orderNo,
         userID AS userId,
@@ -157,6 +160,7 @@
     </select>
     <select id="getOrderListByKeyword" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+        orderID AS orderId,
         co.orderSource,
         co.orderNo,
         co.userID AS userId,

+ 19 - 0
src/main/resources/mapper/PayOrderMapper.xml

@@ -48,10 +48,12 @@
     </select>
     <select id="getOrderByOrderId" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+            orderID AS orderId,
             orderSource,
             orderNo,
             userID AS userId,
             clubID AS clubId,
+            shopOrderIds,
             buyUserID AS buyUserId,
             orderTime AS orderTime,
             updateDate AS updateDate,
@@ -118,7 +120,24 @@
         AND delFlag = '0' AND payStatus = '0'
         ORDER BY id DESC LIMIT 1
     </select>
+    <select id="getPayLinkByLinkLogo" resultType="com.caimei365.order.model.vo.OrderPayLinkVo">
+        SELECT
+            id,
+            orderId,
+            linkLogo,
+            unpaidAmount,
+            generateTime,
+            effectiveTime,
+            payStatus,
+            payType,
+            delFlag
+        FROM
+        cm_order_pay_link
+        WHERE linkLogo = #{linkLogo}
+        AND delFlag = '0'
+    </select>
     <select id="getOrderPromotionsId" resultType="java.lang.Integer">
         SELECT id FROM cm_promotions_order WHERE orderId = #{orderId} LIMIT 1
     </select>
+
 </mapper>