瀏覽代碼

超级会员收款

chao 3 年之前
父節點
當前提交
f8ab18c360

+ 7 - 4
backup.sql

@@ -57,14 +57,17 @@ ALTER TABLE `cm_order_pay_link`
     ADD COLUMN `vipRecordId` bigint(11) DEFAULT NULL COMMENT '会员购买记录Id' AFTER `orderId`,
     ADD COLUMN `vipMonth` bigint(11) DEFAULT NULL COMMENT '会员购买记录Id' AFTER `vipRecordId`;
 
+-- 修改分账详情表
+ALTER TABLE `cm_split_account` ADD COLUMN `vipRecordId` bigint(11) NULL COMMENT '超级会员购买记录Id' AFTER `shopId`;
+
 -- 修改 cm_discern_receipt,cm_receipt_order_relation 收款表
 ALTER TABLE `cm_discern_receipt`
-    MODIFY COLUMN `receiptType` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0'
-    COMMENT '收款款项类型:1订单款,2非订单款,3返佣款,5供应商退款,6超级会员款';
+    MODIFY COLUMN `receiptType` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '收款款项类型:1订单款,2非订单款,3返佣款,5供应商退款,6超级会员款';
 ALTER TABLE `cm_receipt_order_relation`
-    ADD COLUMN `vipId` bigint(11) DEFAULT NULL COMMENT '超级会员套餐id' AFTER `orderId`,
-    ADD COLUMN `userId` bigint(11) DEFAULT NULL COMMENT '超级会员用户id' AFTER `orderId`;
+    ADD COLUMN `vipRecordId` bigint(11) DEFAULT NULL COMMENT '超级会员购买记录Id' AFTER `orderId`,
+    MODIFY COLUMN `relationType` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '关系类型:1返佣订单(返佣款或供应商退款)、2非返佣订单(订单款或者非订单款)、3超级会员款';
 
+-- 修改 订单
 ALTER TABLE `caimei`.`cm_order`
     ADD COLUMN `svipFullReduction` DECIMAL(15,2) NULL COMMENT '订单超级会员优惠' DEFAULT 0.00 AFTER `couponAmount`;
 ALTER TABLE `caimei`.`cm_shop_order`

+ 1 - 1
src/main/java/com/caimei365/order/model/po/DiscernReceiptPo.java

@@ -27,7 +27,7 @@ public class DiscernReceiptPo implements Serializable {
      */
     private Integer payType;
     /**
-     * 收款款项类型:1订单款,2非订单款,3返佣款
+     * 收款款项类型:1订单款,2非订单款,3返佣款 , 5供应商退款,6超级会员款
      */
     private Integer receiptType;
     /**

+ 4 - 0
src/main/java/com/caimei365/order/model/po/OrderReceiptRelationPo.java

@@ -33,6 +33,10 @@ public class OrderReceiptRelationPo implements Serializable {
      * 订单Id(relationType值为1是为子订单ID,为2时为主订单ID)
      */
     private Integer orderId;
+    /**
+     *  超级会员购买记录Id
+     */
+    private Integer vipRecordId;
     /**
      * 删除标记 0 否,其余是
      */

+ 1 - 1
src/main/java/com/caimei365/order/model/po/SplitAccountPo.java

@@ -35,7 +35,7 @@ public class SplitAccountPo implements Serializable {
     /**
      * 超级会员套餐id
      */
-    private Integer vipPackageId;
+    private Integer vipRecordId;
     /**
      * 分账类型:1公账-专票,2私账-无票,3公账-普票,4供应商子商户
      */

+ 41 - 14
src/main/java/com/caimei365/order/service/impl/PayNonOrderServiceImpl.java

@@ -2,12 +2,15 @@ package com.caimei365.order.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.components.WeChatService;
+import com.caimei365.order.mapper.BaseMapper;
 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.PaySecondDto;
 import com.caimei365.order.model.dto.PayVipDto;
+import com.caimei365.order.model.po.DiscernReceiptPo;
+import com.caimei365.order.model.po.OrderReceiptRelationPo;
 import com.caimei365.order.model.po.SplitAccountPo;
 import com.caimei365.order.model.po.UserVipPo;
 import com.caimei365.order.service.PayNonOrderService;
@@ -37,6 +40,8 @@ import java.util.*;
 @Slf4j
 @Service
 public class PayNonOrderServiceImpl implements PayNonOrderService {
+    @Resource
+    private BaseMapper baseMapper;
     @Resource
     private PayOrderMapper payOrderMapper;
     @Resource
@@ -471,7 +476,7 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         // 保存升级超级会员分账参数
         JSONObject data = result.getJSONObject("data");
         SplitAccountPo splitAccount = new SplitAccountPo();
-        splitAccount.setVipPackageId(payParam.getVipId());
+        splitAccount.setVipRecordId(payParam.getVipRecordId());
         // 超级会员 公账-专票
         splitAccount.setType(1);
         // 待分账总金额
@@ -492,12 +497,8 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         splitAccount.setMbOrderId(data.getString("mbOrderId"));
         splitAccount.setOrderRequestNo(data.getString("orderId"));
         splitAccount.setPayStatus(0);
-
-        //todo 分账
-
         // 保存分账详情
         payOrderMapper.insertSplitAccount(splitAccount);
-
         return ResponseJson.success(result);
     }
 
@@ -523,6 +524,8 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         String orderStatus = json.getString("orderStatus");
         // 平台唯一流水号
         String mbOrderId = json.getString("mbOrderId");
+        // 商户唯一订单号
+        String orderRequestNo = json.getString("orderId");
         // 金额,以元为单位
         BigDecimal amount = json.getBigDecimal("amount");
         log.info("【升级超级会员异步回调】>>>>>>>>>>>支付订单状态:" + orderStatus);
@@ -546,13 +549,39 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         // 金额
         double payAmount = amount.doubleValue();
         String payFormData = json.toJSONString();
-
-
-        //todo 支付成功-添加收款记录
-
-
-
-
+        Date date = new Date();
+        String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
+        // 保存收款记录
+        DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
+        discernReceipt.setPayWay(1);
+        discernReceipt.setPayType(Integer.valueOf(payType));
+        discernReceipt.setReceiptType(6);
+        discernReceipt.setReceiptStatus(3);
+        discernReceipt.setReceiptAmount(payAmount);
+        discernReceipt.setConfirmType(4);
+        discernReceipt.setRePayFlag(1);
+        discernReceipt.setFormData(payFormData);
+        discernReceipt.setReceiptDate(curDateStr);
+        discernReceipt.setConfirmDate(curDateStr);
+        discernReceipt.setReviewDate(curDateStr);
+        discernReceipt.setUpdateDate(curDateStr);
+        discernReceipt.setDelFlag(0);
+        // 保存 收款记录
+        baseMapper.insertDiscernReceipt(discernReceipt);
+        log.info("【升级超级会员异步回调】>>>>>>>>>>>>>>保存识别款项(insert[cm_discern_receipt])id:" + discernReceipt.getId() + ",vipRecordId:" + recordId);
+        // 收款项和订单关系表
+        OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+        relation.setReceiptId(discernReceipt.getId());
+        relation.setVipRecordId(recordId);
+        relation.setAssociateAmount(payAmount);
+        relation.setMbOrderId(mbOrderId);
+        relation.setOrderRequestNo(orderRequestNo);
+        relation.setSplitStatus(1);
+        relation.setRelationType(3);
+        relation.setDelFlag(0);
+        // 保存 收款项和订单关系
+        baseMapper.insertOrderReceiptRelation(relation);
+        log.info("【升级超级会员异步回调】>>>>>>>>>>>收款项和购买历史关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",vipRecordId:" + recordId);
         //超级会员数据库修改
         UserVipPo userVip = new UserVipPo();
         UserVipPo dbUserVip = payOrderMapper.getUserVipInfo(userId);
@@ -598,10 +627,8 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
             record.setPayType(12);
         }
         payOrderMapper.updateVipPackageRecord(recordId);
-
         //修改分账付款状态
         payOrderMapper.updateSplitAccountByPay(mbOrderId);
         return "SUCCESS";
     }
-
 }

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

@@ -34,9 +34,9 @@
         VALUES (#{orderId}, #{vipRecordId}, #{vipMonth}, #{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,
+        INSERT INTO cm_split_account (orderId, productId, orderProductId, shopId, vipRecordId, type, subUserNo, splitAccount,
                                         mbOrderId, orderRequestNo,payStatus, productType, splitTime)
-        VALUES (#{orderId}, #{productId}, #{orderProductId}, #{shopId}, #{type}, #{subUserNo}, #{splitAccount},
+        VALUES (#{orderId}, #{productId}, #{orderProductId}, #{shopId},#{vipRecordId}, #{type}, #{subUserNo}, #{splitAccount},
                 #{mbOrderId}, #{orderRequestNo}, #{payStatus}, #{productType}, NOW());
     </insert>
     <insert id="insertPayShop">
@@ -65,7 +65,7 @@
     </update>
     <update id="updateOrderPayLink">
         UPDATE cm_order_pay_link SET
-            orderId = #{orderId}, vipRecordId = #{vipRecordId}, linkLogo = #{linkLogo}, unpaidAmount = #{unpaidAmount}, generateTime = #{generateTime},
+            orderId = #{orderId}, vipRecordId = #{vipRecordId}, vipMonth = #{vipMonth}, linkLogo = #{linkLogo}, unpaidAmount = #{unpaidAmount}, generateTime = #{generateTime},
             effectiveTime = #{effectiveTime}, payStatus = #{payStatus}, payType = #{payType}, delFlag = #{delFlag}
         WHERE id = #{id}
     </update>
@@ -149,6 +149,7 @@
             id,
             orderId,
             vipRecordId,
+            vipMonth,
             linkLogo,
             unpaidAmount,
             generateTime,