Explorar o código

vip生成网银支付链接

chao %!s(int64=3) %!d(string=hai) anos
pai
achega
385d90f35b

+ 1 - 2
backup.sql

@@ -54,8 +54,7 @@ ADD COLUMN `updateTime` varchar(50) DEFAULT NULL COMMENT '更新时间' AFTER `c
 -- =========== 超级会员S_VIP
 -- 修改 cm_order_pay_link 支付链接
 ALTER TABLE `cm_order_pay_link`
-    ADD COLUMN `vipId` bigint(11) DEFAULT NULL COMMENT '超级会员套餐id' AFTER `orderId`,
-    ADD COLUMN `userId` bigint(11) DEFAULT NULL COMMENT '机构用户id' AFTER `vipId`;
+    ADD COLUMN `vipRecordId` bigint(11) DEFAULT NULL COMMENT '会员购买记录Id' AFTER `orderId`;
 
 -- 修改 cm_discern_receipt,cm_receipt_order_relation 收款表
 ALTER TABLE `cm_discern_receipt`

+ 5 - 9
src/main/java/com/caimei365/order/controller/PayOrderApi.java

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

+ 14 - 8
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -1,5 +1,6 @@
 package com.caimei365.order.mapper;
 
+import com.caimei365.order.model.bo.VipRecordBo;
 import com.caimei365.order.model.po.OrderReceiptRelationPo;
 import com.caimei365.order.model.po.PayShopPo;
 import com.caimei365.order.model.po.PayShopRecordPo;
@@ -47,11 +48,10 @@ public interface PayOrderMapper {
     OrderPayLinkVo getOrderPayLink(Integer orderId, Double amount);
     /**
      * svip支付链接
-     * @param vipId   超级会员套餐Id
-     * @param userId   用户Id
+     * @param vipRecordId   会员购买记录Id
      * @param amount  本次待付款金额
      */
-    OrderPayLinkVo getVipPayLink(Integer vipId, Integer userId, Double amount);
+    OrderPayLinkVo getVipPayLink(Integer vipRecordId, Double amount);
     /**
      * 支付链接
      * @param linkLogo  链接标识
@@ -137,14 +137,20 @@ public interface PayOrderMapper {
      * 查询已支付运费
      */
     Double getPaidShipping(Integer orderId, Integer shopId);
-    /**
-     * 获取会员套餐价格
-     * @param id 会员套餐Id
-     */
-    Double getVipPackagePriceById(Integer id);
+//    /**
+//     * 获取会员套餐价格
+//     * @param id 会员套餐Id
+//     */
+//    Double getVipPackagePriceById(Integer id);
     /**
      * 获取会员套餐月份
      * @param id 会员套餐Id
      */
     Integer getVipPackageDurationById(Integer id);
+
+    /**
+     * 获取会员套餐记录
+     * @param id
+     */
+    VipRecordBo getVipPackageRecord(Integer id);
 }

+ 57 - 0
src/main/java/com/caimei365/order/model/bo/VipRecordBo.java

@@ -0,0 +1,57 @@
+package com.caimei365.order.model.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/10/12
+ */
+@Data
+public class VipRecordBo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 记录Id
+     */
+    private Integer id;
+    /**
+     * 用户Id
+     */
+    private Integer userId;
+    /**
+     * Vip套餐Id
+     */
+    private Integer packageId;
+    /**
+     * 开始时间
+     */
+    private Date beginTime;
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+    /**
+     * 支付状态 0 未付款 1 已付款
+     */
+    private Integer payStatus;
+    /**
+     * 用户付款方式:1线上,2线下,3余额抵扣,4采美豆抵扣
+     */
+    private Integer payWay;
+    /**
+     * 付款类型:1建设银行7297、2广发银行0115、3中信银行7172、4中信银行0897、5中信银行0897-财付通、6中信银行0897-支付宝、7线上-支付宝、8线上-微信支付、9线上-快钱支付、10口头返佣、11广发银行5461、12PC-B2B网银、13PC-微信支付、14PC-支付宝、15小程序-微信支付、16余额抵扣、17PC-B2C网银',
+     */
+    private Integer payType;
+    /**
+     * 支付金额
+     */
+    private Double price;
+    /**
+     * 支付时间
+     */
+    private Date payTime;
+}

+ 3 - 8
src/main/java/com/caimei365/order/model/dto/PayLinkDto.java

@@ -20,15 +20,10 @@ public class PayLinkDto implements Serializable {
     @ApiModelProperty("订单Id")
     private Integer orderId;
     /**
-     * 会员套餐id
+     * 会员购买记录Id
      */
-    @ApiModelProperty("会员套餐Id")
-    private Integer vipId;
-    /**
-     * 用户id
-     */
-    @ApiModelProperty("用户Id")
-    private Integer userId;
+    @ApiModelProperty("会员购买记录Id")
+    private Integer vipRecordId;
     /**
      * 支付类型,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 vipRecordId;
     /**
      * 会员套餐id
      */

+ 3 - 4
src/main/java/com/caimei365/order/service/PayOrderService.java

@@ -39,11 +39,10 @@ public interface PayOrderService {
      */
     ResponseJson<Map<String, Object>> getCheckoutCounter(Integer orderId);
     /**
-     * 生成网银支付链接
+     *  生成网银支付链接
      * @param payLinkDto {
-     *          orderId       订单ID
-     *          vipId         会员套餐Id
-     *          userId        用户ID
+     *                   orderId       订单ID
+     *                   vipRecordId   会员购买记录Id
      * }
      */
     ResponseJson<String> getPayLink(PayLinkDto payLinkDto);

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

@@ -10,6 +10,7 @@ import com.caimei365.order.mapper.OrderCommonMapper;
 import com.caimei365.order.mapper.PayOrderMapper;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.bo.PayParamBo;
+import com.caimei365.order.model.bo.VipRecordBo;
 import com.caimei365.order.model.dto.PayDto;
 import com.caimei365.order.model.dto.PayLinkDto;
 import com.caimei365.order.model.enums.OrderStatus;
@@ -272,13 +273,11 @@ public class PayOrderServiceImpl implements PayOrderService {
     }
 
     /**
-     * 生成网银支付链接
-     *
+     *  生成网银支付链接
      * @param payLinkDto {
      *                   orderId       订单ID
-     *                   vipId         会员套餐Id
-     *                   userId        用户ID
-     *                   }
+     *                   vipRecordId   会员购买记录Id
+     * }
      */
     @Override
     public ResponseJson<String> getPayLink(PayLinkDto payLinkDto) {
@@ -291,7 +290,7 @@ public class PayOrderServiceImpl implements PayOrderService {
             }
             orderPayLink = payOrderMapper.getOrderPayLink(payLinkDto.getOrderId(), null);
         } else {
-            orderPayLink = payOrderMapper.getVipPayLink(payLinkDto.getVipId(), payLinkDto.getUserId(), null);
+            orderPayLink = payOrderMapper.getVipPayLink(payLinkDto.getVipRecordId(), null);
         }
         // 时间戳
         long time = System.currentTimeMillis() / 1000;
@@ -312,15 +311,16 @@ public class PayOrderServiceImpl implements PayOrderService {
         if (null == orderPayLink) {
             orderPayLink = new OrderPayLinkVo();
         }
-        if (null != payLinkDto.getVipId()) {
-            // 获取会员套餐价格
-            Double price = payOrderMapper.getVipPackagePriceById(payLinkDto.getVipId());
-            orderPayLink.setUnpaidAmount(price);
+        if (null != payLinkDto.getVipRecordId()) {
+            // 获取会员套餐记录
+            VipRecordBo record = payOrderMapper.getVipPackageRecord(payLinkDto.getVipRecordId());
+            orderPayLink.setVipId(record.getPackageId());
+            orderPayLink.setUnpaidAmount(record.getPrice());
         } else {
             orderPayLink.setUnpaidAmount(payLinkDto.getUnpaidAmount());
         }
         orderPayLink.setOrderId(payLinkDto.getOrderId());
-        orderPayLink.setVipId(payLinkDto.getVipId());
+        orderPayLink.setVipRecordId(payLinkDto.getVipRecordId());
         orderPayLink.setPayType(payLinkDto.getPayType());
         orderPayLink.setRedirectLink(redirectLink);
         orderPayLink.setLinkLogo(linkLogo);
@@ -361,6 +361,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         }
         // 链接状态,0成功
         int code = 0;
+        String userName = "";
         // 订单支付记录
         List<DiscernReceiptVo> discernReceiptList = null;
         if (null != orderPayLink.getOrderId()) {
@@ -368,10 +369,16 @@ public class PayOrderServiceImpl implements PayOrderService {
             OrderVo order = orderCommonMapper.getOrderByOrderId(orderPayLink.getOrderId());
             // 支付记录
             discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
+            // 机构信息
+            userName = baseMapper.getUserNameByUserId(order.getUserId());
         } else {
             // 超级会员套餐时长(月)
             Integer mouth = payOrderMapper.getVipPackageDurationById(orderPayLink.getVipId());
             orderPayLink.setVipMonth(mouth);
+            // 获取会员套餐记录
+            VipRecordBo record = payOrderMapper.getVipPackageRecord(orderPayLink.getVipRecordId());
+            // 机构信息
+            userName = baseMapper.getUserNameByUserId(record.getUserId());
         }
         if (orderPayLink.getEffectiveTime().compareTo(new Date()) < 0) {
             //链接失效
@@ -394,6 +401,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         String time = dateFormat.format(orderPayLink.getEffectiveTime());
         Map<String, Object> map = new HashMap<>(3);
         map.put("orderPayLink", orderPayLink);
+        map.put("userName", userName);
         map.put("code", code);
         map.put("time", time);
         return ResponseJson.success(map);

+ 13 - 13
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, vipId, userId, linkLogo, unpaidAmount, generateTime, effectiveTime, payStatus, payType, delFlag)
-        VALUES (#{orderId}, #{vipId}, #{linkLogo},#{userId},#{unpaidAmount}, #{generateTime}, #{effectiveTime}, #{payStatus}, #{payType}, #{delFlag})
+        INSERT INTO cm_order_pay_link (orderId, vipRecordId, linkLogo, unpaidAmount, generateTime, effectiveTime, payStatus, payType, delFlag)
+        VALUES (#{orderId}, #{vipRecordId}, #{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}, vipId = #{vipId}, userId = #{userId}, linkLogo = #{linkLogo}, unpaidAmount = #{unpaidAmount}, generateTime = #{generateTime},
+            orderId = #{orderId}, vipRecordId = #{vipRecordId}, linkLogo = #{linkLogo}, unpaidAmount = #{unpaidAmount}, generateTime = #{generateTime},
             effectiveTime = #{effectiveTime}, payStatus = #{payStatus}, payType = #{payType}, delFlag = #{delFlag}
         WHERE id = #{id}
     </update>
@@ -94,8 +94,7 @@
         SELECT
             id,
             orderId,
-            vipId,
-            userId,
+            vipRecordId,
             linkLogo,
             unpaidAmount,
             generateTime,
@@ -116,8 +115,7 @@
         SELECT
         id,
         orderId,
-        vipId,
-        userId,
+        vipRecordId,
         linkLogo,
         unpaidAmount,
         generateTime,
@@ -127,7 +125,7 @@
         delFlag
         FROM
         cm_order_pay_link
-        WHERE vipId = #{vipId} AND userId=#{userId}
+        WHERE vipRecordId = #{vipRecordId}
         <if test="amount != null">
             AND unpaidAmount = #{amount}
         </if>
@@ -138,8 +136,7 @@
         SELECT
             id,
             orderId,
-            vipId,
-            userId,
+            vipRecordId,
             linkLogo,
             unpaidAmount,
             generateTime,
@@ -218,10 +215,13 @@
         AND shopId = #{shopId}
         AND productType = 2 AND payStatus = 1
     </select>
-    <select id="getVipPackagePriceById" resultType="java.lang.Double">
-        SELECT price FROM cm_svip_package WHERE id = #{id};
-    </select>
+<!--    <select id="getVipPackagePriceById" resultType="java.lang.Double">-->
+<!--        SELECT price FROM cm_svip_package WHERE id = #{id};-->
+<!--    </select>-->
     <select id="getVipPackageDurationById" resultType="java.lang.Integer">
         SELECT duration FROM cm_svip_package WHERE id = #{id};
     </select>
+    <select id="getVipPackageRecord" resultType="com.caimei365.order.model.bo.VipRecordBo">
+        SELECT id, userId, packageId, price, payStatus FROM cm_svip_history WHERE id = #{id};
+    </select>
 </mapper>