zhijiezhao vor 3 Jahren
Ursprung
Commit
04961de861

+ 1 - 1
src/main/java/com/caimei365/order/controller/HeliPayApi.java

@@ -178,7 +178,7 @@ public class HeliPayApi {
     /**
      * 合利宝pc微信支付宝二维码
      */
-    @ApiOperation("合利宝pc微信/支付宝扫码支付")
+    @ApiOperation("合利宝支付宝扫码支付")
     @PostMapping("/scan/pay")
     public ResponseJson<JSONObject> payByWeChat(HeliDto heliDto, @RequestHeader HttpHeaders headers) {
         if (null == heliDto.getShopOrderId()) {

+ 1 - 1
src/main/java/com/caimei365/order/controller/HeliPayNonOrderApi.java

@@ -174,7 +174,7 @@ public class HeliPayNonOrderApi {
      *                }
      */
     @ApiOperation("购买价值优惠券-支付宝线上支付")
-    @PostMapping("/second/scan")
+    @PostMapping("/coupon/scan")
     public ResponseJson<JSONObject> payCouponByAlipay(HeliDto heliDto, @RequestHeader HttpHeaders headers) {
         if (null == heliDto.getCouponRecordId()) {
             return ResponseJson.error("购买记录id不能为空!", null);

+ 3 - 4
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -2,10 +2,7 @@ package com.caimei365.order.mapper;
 
 import com.caimei365.order.model.bo.VipRecordBo;
 import com.caimei365.order.model.po.*;
-import com.caimei365.order.model.vo.BankCodeVo;
-import com.caimei365.order.model.vo.CouponCheckVo;
-import com.caimei365.order.model.vo.OrderPayLinkVo;
-import com.caimei365.order.model.vo.OrderVo;
+import com.caimei365.order.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -246,4 +243,6 @@ public interface PayOrderMapper {
     void updateSplitAccount(String mbOrderId, String orderRequestNo);
 
     String findShopOrderSplitCode(Integer shopOrderId);
+
+    void updateShopOrder(ShopOrderVo shopOrder);
 }

+ 71 - 104
src/main/java/com/caimei365/order/service/impl/HeliPayServiceImpl.java

@@ -213,14 +213,8 @@ public class HeliPayServiceImpl implements HeliPayService {
         log.info("回调签名" + sign);
         String oriMessage = MyBeanUtils.getSigned(res, null);
         String oriMessage1 = oriMessage + SPLIT + Constant.SAOMA;
-        String oriMessage2 = oriMessage + SPLIT + Constant.FENZHANG;
-        String oriMessage3 = oriMessage + SPLIT + Constant.XUNI;
-        String oriMessage4 = oriMessage + SPLIT + Constant.WANGYIN;
         String checkSign1 = Disguiser.disguiseMD5(oriMessage1.trim());
-        String checkSign2 = Disguiser.disguiseMD5(oriMessage2.trim());
-        String checkSign3 = Disguiser.disguiseMD5(oriMessage3.trim());
-        String checkSign4 = Disguiser.disguiseMD5(oriMessage4.trim());
-        boolean b = sign.equals(checkSign1) || sign.equals(checkSign2) || sign.equals(checkSign3) || sign.equals(checkSign4);
+        boolean b = sign.equals(checkSign1);
         if (!b) {
             return "验签名失败!";
         }
@@ -302,7 +296,7 @@ public class HeliPayServiceImpl implements HeliPayService {
         // 更新订单支付状态
         payOrderMapper.updateOrderStatus(order);
         // 支付记录
-        // todo子订单返佣????
+        //todo 子订单返佣????
         List<DiscernReceiptVo> shopOrderDiscernReceiptList = orderCommonMapper.getShopOrderDiscernReceipt(shopOrderId);
         double shopOrderReceiptAmount = 0d;
         if (null != shopOrderDiscernReceiptList && shopOrderDiscernReceiptList.size() > 0) {
@@ -317,13 +311,7 @@ public class HeliPayServiceImpl implements HeliPayService {
         } else {
             shopOrder.setReceiptStatus(2);
         }
-
-        //todo 修改子订单支付链接状态
-        OrderPayLinkVo orderPayLink = payOrderMapper.getOrderPayLink(orderId, amount);
-        if (null != orderPayLink && ("12".equals(payType) || "17".equals(payType))) {
-            orderPayLink.setPayStatus(1);
-            payOrderMapper.updateOrderPayLinkStatus(orderPayLink);
-        }
+        payOrderMapper.updateShopOrder(shopOrder);
         // 保存收款记录
         DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
         discernReceipt.setPayWay(1);
@@ -357,52 +345,52 @@ public class HeliPayServiceImpl implements HeliPayService {
         baseMapper.insertOrderReceiptRelation(relation);
         log.info("【支付异步回调】>>>>>>>>>>>收款项和订单关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",orderId:" + orderId);
 
+        //当前版本无法线上走充值/订金订单
         // 商品数据
-        List<OrderProductVo> orderProductList = orderCommonMapper.getOrderProductByOrderId(orderId);
-        // todo 当前版本无法线上走订金订单
+//        List<OrderProductVo> orderProductList = orderCommonMapper.getOrderProductByOrderId(orderId);
         // 判断是否是充值商品
-        int rechargeFlag = 0;
-        // 缴纳订金订单
-        int[] productId1 = {6060, 6061, 6062, 6063, 6064};
-        // 充值余额订单
-        int[] productId2 = {6065, 6066, 6067, 6068, 6069};
-        for (OrderProductVo product : orderProductList) {
-            if (ArrayUtils.contains(productId1, product.getProductId())) {
-                rechargeFlag = 1;
-                break;
-            }
-            if (ArrayUtils.contains(productId2, product.getProductId())) {
-                rechargeFlag = 2;
-                break;
-            }
-        }
-        if (rechargeFlag > 0) {
-            // 账户余额
-            double oldUserMoney = baseMapper.getUserMoney(order.getUserId());
-            double userMoney = MathUtil.add(oldUserMoney, amount).doubleValue();
-            // 可用余额
-            Double oldAvailableMoney = baseMapper.getAbleUserMoney(order.getUserId());
-            double availableMoney = MathUtil.add(oldAvailableMoney, amount).doubleValue();
-            payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
-            log.info("【支付异步回调】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
-            //保存余额到余额收支记录
-            BalanceRecordPo balanceRecord = new BalanceRecordPo();
-            balanceRecord.setUserId(order.getUserId());
-            balanceRecord.setType(1);
-            if (rechargeFlag == 1) {
-                balanceRecord.setBalanceType(6);
-            } else {
-                balanceRecord.setBalanceType(7);
-            }
-            balanceRecord.setAddDate(new Date());
-            balanceRecord.setAmount(amount);
-            balanceRecord.setOrderId(orderId);
-            balanceRecord.setRemark("订单商品充值余额");
-            balanceRecord.setDelFlag(0);
-            // 保存 余额收支记录
-            baseMapper.insertBalanceRecord(balanceRecord);
-            log.info("【支付异步回调】>>>>>>>>>>>>>>>>>>>>>>>>>>订单商品充值余额(insert[cm_user_balance_record])orderId:" + orderId);
-        }
+//        int rechargeFlag = 0;
+//        // 缴纳订金订单
+//        int[] productId1 = {6060, 6061, 6062, 6063, 6064};
+//        // 充值余额订单
+//        int[] productId2 = {6065, 6066, 6067, 6068, 6069};
+//        for (OrderProductVo product : orderProductList) {
+//            if (ArrayUtils.contains(productId1, product.getProductId())) {
+//                rechargeFlag = 1;
+//                break;
+//            }
+//            if (ArrayUtils.contains(productId2, product.getProductId())) {
+//                rechargeFlag = 2;
+//                break;
+//            }
+//        }
+//        if (rechargeFlag > 0) {
+//            // 账户余额
+//            double oldUserMoney = baseMapper.getUserMoney(order.getUserId());
+//            double userMoney = MathUtil.add(oldUserMoney, amount).doubleValue();
+//            // 可用余额
+//            Double oldAvailableMoney = baseMapper.getAbleUserMoney(order.getUserId());
+//            double availableMoney = MathUtil.add(oldAvailableMoney, amount).doubleValue();
+//            payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
+//            log.info("【支付异步回调】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
+//            //保存余额到余额收支记录
+//            BalanceRecordPo balanceRecord = new BalanceRecordPo();
+//            balanceRecord.setUserId(order.getUserId());
+//            balanceRecord.setType(1);
+//            if (rechargeFlag == 1) {
+//                balanceRecord.setBalanceType(6);
+//            } else {
+//                balanceRecord.setBalanceType(7);
+//            }
+//            balanceRecord.setAddDate(new Date());
+//            balanceRecord.setAmount(amount);
+//            balanceRecord.setOrderId(orderId);
+//            balanceRecord.setRemark("订单商品充值余额");
+//            balanceRecord.setDelFlag(0);
+//            // 保存 余额收支记录
+//            baseMapper.insertBalanceRecord(balanceRecord);
+//            log.info("【支付异步回调】>>>>>>>>>>>>>>>>>>>>>>>>>>订单商品充值余额(insert[cm_user_balance_record])orderId:" + orderId);
+//        }
 
         // 线上支付与自主下单送豆(已全部收款),最后一笔线上支付成功后,赠送200采美豆
         if (3 == order.getReceiptStatus() && 0 == order.getSecondHandOrderFlag()) {
@@ -946,11 +934,17 @@ public class HeliPayServiceImpl implements HeliPayService {
         Integer orderId = Integer.valueOf(split[0]);
         //1位置支付类型
         String payType = split[1];
+        //2位置子订单id
+        Integer shopOrderId = Integer.valueOf(split[2]);
         // 订单信息
         OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
+        ShopOrderVo shopOrder = orderCommonMapper.getShopOrderByOrderId(shopOrderId);
         if (null == order) {
             return "订单不存在";
         }
+        if (null == shopOrder) {
+            return "子订单不存在";
+        }
         // 支付记录
         List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
         double receiptAmount = 0d;
@@ -1007,6 +1001,23 @@ public class HeliPayServiceImpl implements HeliPayService {
             orderPayLink.setPayStatus(1);
             payOrderMapper.updateOrderPayLinkStatus(orderPayLink);
         }
+        // 支付记录
+        //todo 子订单返佣????
+        List<DiscernReceiptVo> shopOrderDiscernReceiptList = orderCommonMapper.getShopOrderDiscernReceipt(shopOrderId);
+        double shopOrderReceiptAmount = 0d;
+        if (null != shopOrderDiscernReceiptList && shopOrderDiscernReceiptList.size() > 0) {
+            for (DiscernReceiptVo discernReceipt : shopOrderDiscernReceiptList) {
+                shopOrderReceiptAmount = MathUtil.add(shopOrderReceiptAmount, discernReceipt.getAssociateAmount()).doubleValue();
+            }
+        }
+        shopOrder.setReceiptAmount(MathUtil.add(shopOrderReceiptAmount, amount).doubleValue());
+        //均摊后needpay:已支付
+        if (MathUtil.compare(shopOrder.getRealPay(), shopOrder.getReceiptAmount()) == 0) {
+            shopOrder.setReceiptStatus(3);
+        } else {
+            shopOrder.setReceiptStatus(2);
+        }
+        payOrderMapper.updateShopOrder(shopOrder);
         // 保存收款记录
         DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
         discernReceipt.setPayWay(1);
@@ -1035,55 +1046,11 @@ public class HeliPayServiceImpl implements HeliPayService {
         relation.setSplitStatus(0);
         relation.setRelationType(2);
         relation.setDelFlag(0);
+        relation.setShopOrderId(shopOrderId);
         // 保存 收款项和订单关系
         baseMapper.insertOrderReceiptRelation(relation);
         log.info("【支付异步回调】>>>>>>>>>>>收款项和订单关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",orderId:" + orderId);
 
-        // 商品数据
-        List<OrderProductVo> orderProductList = orderCommonMapper.getOrderProductByOrderId(orderId);
-        // 判断是否是充值商品
-        int rechargeFlag = 0;
-        // 缴纳订金订单
-        int[] productId1 = {6060, 6061, 6062, 6063, 6064};
-        // 充值余额订单
-        int[] productId2 = {6065, 6066, 6067, 6068, 6069};
-        for (OrderProductVo product : orderProductList) {
-            if (ArrayUtils.contains(productId1, product.getProductId())) {
-                rechargeFlag = 1;
-                break;
-            }
-            if (ArrayUtils.contains(productId2, product.getProductId())) {
-                rechargeFlag = 2;
-                break;
-            }
-        }
-        if (rechargeFlag > 0) {
-            // 账户余额
-            double oldUserMoney = baseMapper.getUserMoney(order.getUserId());
-            double userMoney = MathUtil.add(oldUserMoney, amount).doubleValue();
-            // 可用余额
-            Double oldAvailableMoney = baseMapper.getAbleUserMoney(order.getUserId());
-            double availableMoney = MathUtil.add(oldAvailableMoney, amount).doubleValue();
-            payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
-            log.info("【支付异步回调】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
-            //保存余额到余额收支记录
-            BalanceRecordPo balanceRecord = new BalanceRecordPo();
-            balanceRecord.setUserId(order.getUserId());
-            balanceRecord.setType(1);
-            if (rechargeFlag == 1) {
-                balanceRecord.setBalanceType(6);
-            } else {
-                balanceRecord.setBalanceType(7);
-            }
-            balanceRecord.setAddDate(new Date());
-            balanceRecord.setAmount(amount);
-            balanceRecord.setOrderId(orderId);
-            balanceRecord.setRemark("订单商品充值余额");
-            balanceRecord.setDelFlag(0);
-            // 保存 余额收支记录
-            baseMapper.insertBalanceRecord(balanceRecord);
-            log.info("【支付异步回调】>>>>>>>>>>>>>>>>>>>>>>>>>>订单商品充值余额(insert[cm_user_balance_record])orderId:" + orderId);
-        }
         // 线上支付与自主下单送豆(已全部收款),最后一笔线上支付成功后,赠送200采美豆
         if (3 == order.getReceiptStatus() && 0 == order.getSecondHandOrderFlag()) {
             UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();

+ 21 - 19
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -130,7 +130,7 @@ public class SubmitServiceImpl implements SubmitService {
         // 获取机构用户Id
         Integer clubUserId = baseMapper.getUserIdByClubId(submitDto.getClubId());
         submitDto.getUnionId();
-        unionId=submitDto.getUnionId();
+        unionId = submitDto.getUnionId();
         if (null == clubUserId || clubUserId == 0) {
             return ResponseJson.error("机构用户信息异常!", null);
         }
@@ -324,7 +324,6 @@ public class SubmitServiceImpl implements SubmitService {
         mainOrder.setDelFlag(0);
 
 
-
         //协销下单
         if (3 == orderParamBo.getCartType()) {
             mainOrder.setSpId(orderParamBo.getServiceProviderId());
@@ -1360,8 +1359,8 @@ public class SubmitServiceImpl implements SubmitService {
          * 更新主订单线上支付按钮
          * onlinePayFlag:0可以 1不可以
          */
-        Integer onlinePayFlag=onlinePay.get()?0:1;
-        submitMapper.updateOnlinePayFlag(onlinePayFlag,mainOrder.getOrderId());
+        Integer onlinePayFlag = onlinePay.get() ? 0 : 1;
+        submitMapper.updateOnlinePayFlag(onlinePayFlag, mainOrder.getOrderId());
         /*
          * 保存 订单收货用户信息
          */
@@ -1543,29 +1542,32 @@ public class SubmitServiceImpl implements SubmitService {
 
         log.info("**********************微信模板消息推送*****************************");
         List<Integer> productIds = orderClubMapper.getProductOrder(mainOrder.getOrderId());
-        if (0==mainOrder.getSecondHandOrderFlag() && 0==mainOrder.getRebateFlag() && (null != productIds && !productIds.contains(6060)) ) {
-            log.info("*******获取公众名"+orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString());
-            String name="0";
+        if (0 == mainOrder.getSecondHandOrderFlag() && 0 == mainOrder.getRebateFlag() && (null != productIds && !productIds.contains(6060))) {
+            log.info("*******获取公众名" + orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString());
+            String name = "0";
             try {
                 String accessToken = weChatService.getAccessToken();
                 List<String> openidList = orderClubMapper.getOpenidListByPermission(unionId);
                 openidList.removeIf(Objects::isNull);
-                String i=orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString();
-                if(i.length()<10){
-                     name= StringUtils.strip(i, "[]");
-                }else { name= StringUtils.strip(i.substring(0,11), "[]"); name+="...";}
+                String i = orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString();
+                if (i.length() < 10) {
+                    name = StringUtils.strip(i, "[]");
+                } else {
+                    name = StringUtils.strip(i.substring(0, 11), "[]");
+                    name += "...";
+                }
 
-                log.info("订单商品>>>>>"+name+""+mainOrder.getOrderId());
+                log.info("订单商品>>>>>" + name + "" + mainOrder.getOrderId());
                 String associateTitle = "订单已成功提交,等待付款!";
-                Double money=mainOrder.getPayTotalFee();
+                Double money = mainOrder.getPayTotalFee();
                 String orderno = mainOrder.getOrderNo();
-                String remarkText = "下单时间:" + mainOrder.getOrderTime() +"点击详情进行付款";
+                String remarkText = "下单时间:" + mainOrder.getOrderTime() + "点击详情进行付款";
                 // 跳转到【小程序付款-选择支付方式页面】
-                String pagePath = "pages/user/order/order-details?orderId="+mainOrder.getOrderId();
+                String pagePath = "pages/user/order/order-details?orderId=" + mainOrder.getOrderId();
                 for (String openid : openidList) {
                     // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接
-                    log.error("获取openid>>>>>"+openidList);
-                    weChatService.sendTemplateMsgs(accessToken, openid, associateTitle, name,orderno, money, remarkText, pagePath);
+                    log.error("获取openid>>>>>" + openidList);
+                    weChatService.sendTemplateMsgs(accessToken, openid, associateTitle, name, orderno, money, remarkText, pagePath);
                 }
             } catch (Exception e) {
                 log.error("【订单下单通知】获取微信公众号access_token异常!", e);
@@ -1573,8 +1575,6 @@ public class SubmitServiceImpl implements SubmitService {
         }
 
 
-
-
         log.info("******************** 提交订单逻辑处理 end *******************");
 
         /*
@@ -1603,6 +1603,8 @@ public class SubmitServiceImpl implements SubmitService {
         info.put("orderMark", "#" + mainOrder.getOrderId() + "#");
         //应付订单金额
         info.put("payTotalFee", mainOrder.getPayTotalFee());
+        //线上线下按钮onlinePayFlag:0线上,1线下
+        info.put("onlinePayFlag",onlinePayFlag);
         //真实需要付款金额
         info.put("payableAmount", mainOrder.getPayableAmount());
         if (isPaySuccessFlag) {

+ 2 - 2
src/main/resources/mapper/BaseMapper.xml

@@ -267,9 +267,9 @@
     <insert id="insertOrderReceiptRelation" keyColumn="id" keyProperty="id"
             parameterType="com.caimei365.order.model.po.OrderReceiptRelationPo" useGeneratedKeys="true">
         INSERT INTO cm_receipt_order_relation (relationType, receiptId, associationType, associateAmount, orderId, couponRecordId, vipRecordId, authVipRecordId, delFlag,
-                                               mbOrderId, orderRequestNo, splitStatus, productId)
+                                               mbOrderId, orderRequestNo, splitStatus, productId,shopOrderId)
         VALUES (#{relationType}, #{receiptId}, #{associationType}, #{associateAmount}, #{orderId}, #{couponRecordId}, #{vipRecordId}, #{authVipRecordId}, #{delFlag},
-                #{mbOrderId}, #{orderRequestNo}, #{splitStatus}, #{productId})
+                #{mbOrderId}, #{orderRequestNo}, #{splitStatus}, #{productId},#{shopOrderId})
     </insert>
     <insert id="insertBeansHistory" parameterType="com.caimei365.order.model.po.UserBeansHistoryPo">
         INSERT INTO user_beans_history (userId, type, beansType, orderId, num, pushStatus, addTime, delFlag)

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

@@ -141,6 +141,11 @@
             mbOrderId = #{mbOrderId}
         WHERE orderRequestNo = #{orderRequestNo}
     </update>
+    <update id="updateShopOrder">
+        UPDATE cm_shop_order SET
+        receiptStatus = #{receiptStatus}, receiptAmount = #{receiptAmount}
+        WHERE shopOrderID = #{shopOrderId}
+    </update>
     <select id="getPayOnLineSwitch" resultType="java.lang.Integer">
         SELECT STATUS FROM cm_pay_online_switch WHERE id=1
     </select>