Explorar el Código

SVIP生成网银支付链接

chao hace 3 años
padre
commit
9993753262

+ 6 - 0
backup.sql

@@ -49,3 +49,9 @@ MODIFY COLUMN `normalUserID` bigint(11) DEFAULT NULL COMMENT '【V2021已废弃
 -- 修改 repeat_purchase_price 复购价格库表
 ALTER TABLE `repeat_purchase_price`
 ADD COLUMN `updateTime` varchar(50) DEFAULT NULL COMMENT '更新时间' AFTER `createTime`;
+
+
+-- =========== 超级会员S_VIP
+-- 修改 cm_order_pay_link 支付链接
+ALTER TABLE `cm_order_pay_link`
+    ADD COLUMN `vipId` bigint(11) DEFAULT NULL COMMENT '超级会员套餐id' AFTER `orderId`;

+ 6 - 2
src/main/java/com/caimei365/order/controller/PayOrderApi.java

@@ -88,13 +88,17 @@ public class PayOrderApi {
      *  生成网银支付链接
      * @param payLinkDto {
      *          orderId       订单ID
+     *          vipId         会员套餐Id
      * }
      */
     @ApiOperation("生成网银支付链接(旧:/PayOrder/payLink)")
     @PostMapping("/link")
     public ResponseJson<String> getPayLink(PayLinkDto payLinkDto) {
-        if (null == payLinkDto.getOrderId()) {
-            return ResponseJson.error("订单Id不能为空!", null);
+        if (null == payLinkDto.getOrderId() && null == payLinkDto.getVipId()) {
+            return ResponseJson.error("订单Id和超级会员套餐Id不能同时为空!", null);
+        }
+        if (null != payLinkDto.getOrderId() && null != payLinkDto.getVipId()) {
+            return ResponseJson.error("订单Id和超级会员套餐Id不能同时出现!", null);
         }
         return payOrderService.getPayLink(payLinkDto);
     }

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

@@ -40,11 +40,17 @@ public interface PayOrderMapper {
      */
     void updateMoneyByUserId(Double userMoney, Double ableUserMoney, Integer userId);
     /**
-     * 支付链接
+     * 订单支付链接
      * @param orderId 订单Id
      * @param amount  本次待付款金额
      */
     OrderPayLinkVo getOrderPayLink(Integer orderId, Double amount);
+    /**
+     * svip支付链接
+     * @param vipId   超级会员套餐Id
+     * @param amount  本次待付款金额
+     */
+    OrderPayLinkVo getVipPayLink(Integer vipId, Double amount);
     /**
      * 支付链接
      * @param linkLogo  链接标识

+ 5 - 0
src/main/java/com/caimei365/order/model/dto/PayLinkDto.java

@@ -19,6 +19,11 @@ public class PayLinkDto implements Serializable {
      */
     @ApiModelProperty("订单Id")
     private Integer orderId;
+    /**
+     * 会员套餐id
+     */
+    @ApiModelProperty("会员套餐Id")
+    private Integer vipId;
     /**
      * 支付类型,1企业网银,2个人网银
      */

+ 4 - 0
src/main/java/com/caimei365/order/model/vo/OrderPayLinkVo.java

@@ -21,6 +21,10 @@ public class OrderPayLinkVo implements Serializable {
      * 订单id
      */
     private Integer orderId;
+    /**
+     * 会员套餐id
+     */
+    private Integer vipId;
     /**
      * 链接标识
      */

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

@@ -42,6 +42,7 @@ public interface PayOrderService {
      * 生成网银支付链接
      * @param payLinkDto {
      *          orderId       订单ID
+     *          vipId         会员套餐Id
      * }
      */
     ResponseJson<String> getPayLink(PayLinkDto payLinkDto);

+ 22 - 11
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -276,14 +276,21 @@ public class PayOrderServiceImpl implements PayOrderService {
      *
      * @param payLinkDto {
      *                   orderId       订单ID
+     *                   vipId         会员套餐Id
      *                   }
      */
     @Override
     public ResponseJson<String> getPayLink(PayLinkDto payLinkDto) {
-        // 订单信息
-        OrderVo order = orderCommonMapper.getOrderByOrderId(payLinkDto.getOrderId());
-        if (null == order) {
-            return ResponseJson.error("订单不存在", null);
+        OrderPayLinkVo orderPayLink = null;
+        if (null != payLinkDto.getOrderId()) {
+            // 订单信息
+            OrderVo order = orderCommonMapper.getOrderByOrderId(payLinkDto.getOrderId());
+            if (null == order) {
+                return ResponseJson.error("订单不存在", null);
+            }
+            orderPayLink = payOrderMapper.getOrderPayLink(payLinkDto.getOrderId(), null);
+        } else {
+            orderPayLink = payOrderMapper.getVipPayLink(payLinkDto.getVipId(), null);
         }
         // 时间戳
         long time = System.currentTimeMillis() / 1000;
@@ -297,11 +304,11 @@ public class PayOrderServiceImpl implements PayOrderService {
         GregorianCalendar calendar = new GregorianCalendar();
         calendar.setTime(date);
         calendar.add(Calendar.DATE, 1);
-        OrderPayLinkVo orderPayLink = payOrderMapper.getOrderPayLink(payLinkDto.getOrderId(), null);
         if (null == orderPayLink) {
             orderPayLink = new OrderPayLinkVo();
         }
         orderPayLink.setOrderId(payLinkDto.getOrderId());
+        orderPayLink.setVipId(payLinkDto.getVipId());
         orderPayLink.setPayType(payLinkDto.getPayType());
         orderPayLink.setUnpaidAmount(payLinkDto.getUnpaidAmount());
         orderPayLink.setRedirectLink(redirectLink);
@@ -337,16 +344,20 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Override
     public ResponseJson<Map<String, Object>> linkPayData(String linkLogo) {
         OrderPayLinkVo orderPayLink = payOrderMapper.getPayLinkByLinkLogo(linkLogo);
-        if (null == orderPayLink) {
+        if (null == orderPayLink || (null == orderPayLink.getOrderId() && null == orderPayLink.getVipId())) {
             // 已重新生成链接
             return ResponseJson.error("链接已更新,请重新获取", null);
         }
-        //链接状态,0成功
+        // 链接状态,0成功
         int code = 0;
-        // 订单信息
-        OrderVo order = orderCommonMapper.getOrderByOrderId(orderPayLink.getOrderId());
-        // 支付记录
-        List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
+        // 订单支付记录
+        List<DiscernReceiptVo> discernReceiptList = null;
+        if (null != orderPayLink.getOrderId()) {
+            // 订单信息
+            OrderVo order = orderCommonMapper.getOrderByOrderId(orderPayLink.getOrderId());
+            // 支付记录
+            discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
+        }
         if (orderPayLink.getEffectiveTime().compareTo(new Date()) < 0) {
             //链接失效
             code = -3;

+ 26 - 3
src/main/resources/mapper/PayOrderMapper.xml

@@ -30,8 +30,8 @@
         WHERE userID = #{userId}
     </update>
     <insert id="insertOrderPayLink" keyColumn="id" keyProperty="id"  parameterType="com.caimei365.order.model.vo.OrderPayLinkVo" useGeneratedKeys="true">
-        INSERT INTO cm_order_pay_link (orderId, linkLogo, unpaidAmount, generateTime, effectiveTime, payStatus, payType, delFlag)
-        VALUES (#{orderId}, #{linkLogo}, #{unpaidAmount}, #{generateTime}, #{effectiveTime}, #{payStatus}, #{payType}, #{delFlag})
+        INSERT INTO cm_order_pay_link (orderId, vipId, linkLogo, unpaidAmount, generateTime, effectiveTime, payStatus, payType, delFlag)
+        VALUES (#{orderId}, #{vipId}, #{linkLogo}, #{unpaidAmount}, #{generateTime}, #{effectiveTime}, #{payStatus}, #{payType}, #{delFlag})
     </insert>
     <insert id="insertSplitAccount" keyColumn="id" keyProperty="id"  parameterType="com.caimei365.order.model.po.SplitAccountPo">
         INSERT INTO cm_split_account (orderId, productId, orderProductId,shopId, type, subUserNo, splitAccount,
@@ -53,7 +53,7 @@
     </insert>
     <update id="updateOrderPayLink">
         UPDATE cm_order_pay_link SET
-            orderId = #{orderId}, linkLogo = #{linkLogo}, unpaidAmount = #{unpaidAmount}, generateTime = #{generateTime},
+            orderId = #{orderId}, vipId = #{vipId}, linkLogo = #{linkLogo}, unpaidAmount = #{unpaidAmount}, generateTime = #{generateTime},
             effectiveTime = #{effectiveTime}, payStatus = #{payStatus}, payType = #{payType}, delFlag = #{delFlag}
         WHERE id = #{id}
     </update>
@@ -94,6 +94,7 @@
         SELECT
             id,
             orderId,
+            vipId,
             linkLogo,
             unpaidAmount,
             generateTime,
@@ -110,10 +111,32 @@
         AND delFlag = '0' AND payStatus = '0'
         ORDER BY id DESC LIMIT 1
     </select>
+    <select id="getVipPayLink" resultType="com.caimei365.order.model.vo.OrderPayLinkVo">
+        SELECT
+        id,
+        orderId,
+        vipId,
+        linkLogo,
+        unpaidAmount,
+        generateTime,
+        effectiveTime,
+        payStatus,
+        payType,
+        delFlag
+        FROM
+        cm_order_pay_link
+        WHERE vipId = #{vipId}
+        <if test="amount != null">
+            AND unpaidAmount = #{amount}
+        </if>
+        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,
+            vipId,
             linkLogo,
             unpaidAmount,
             generateTime,