Browse Source

分账功能

zhangbin 1 year ago
parent
commit
b66c7fb17e

+ 3 - 1
nbjk-admin/src/main/java/com/miaxis/app/controller/wx/WxController.java

@@ -319,7 +319,9 @@ public class WxController extends BaseController {
                 .put("out_trade_no", order.getOutTradeNo());
                 .put("out_trade_no", order.getOutTradeNo());
         rootNode.putObject("amount").put("total", order.getTotal());
         rootNode.putObject("amount").put("total", order.getTotal());
         rootNode.putObject("payer").put("openid", order.getXcxOpenid());
         rootNode.putObject("payer").put("openid", order.getXcxOpenid());
-        rootNode.putObject("settle_info").put("profit_sharing",true);
+        if("八字排盘".equals(goodsName)) {
+            rootNode.putObject("settle_info").put("profit_sharing", true);
+        }
         objectMapper.writeValue(bos, rootNode);
         objectMapper.writeValue(bos, rootNode);
         httpPost.setEntity(new StringEntity(rootNode.toString(), "utf-8"));
         httpPost.setEntity(new StringEntity(rootNode.toString(), "utf-8"));
         HttpResponse response = httpClient.execute(httpPost);
         HttpResponse response = httpClient.execute(httpPost);

+ 9 - 0
nbjk-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java

@@ -59,6 +59,7 @@ public class WxNotifyController {
     @Autowired
     @Autowired
     private IOrderInfoService orderInfoService;
     private IOrderInfoService orderInfoService;
 
 
+
     /**
     /**
      * 微信支付回调接口
      * 微信支付回调接口
      */
      */
@@ -208,6 +209,14 @@ public class WxNotifyController {
         wxOrder.setOrderStatus("2");
         wxOrder.setOrderStatus("2");
 
 
         orderInfoService.writeVipDataToDb(wxOrder,payType);
         orderInfoService.writeVipDataToDb(wxOrder,payType);
+
+        try {
+            wxOrderService.wxAddFenZhang();  //添加分账用户
+            wxOrderService.wxProfitsharing(wxOrder);  //进行分账
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
         wxOrderService.updateById(wxOrder);
         wxOrderService.updateById(wxOrder);
 
 
     }
     }

+ 57 - 0
nbjk-service/src/main/java/com/miaxis/order/domain/OrderSplit.java

@@ -0,0 +1,57 @@
+package com.miaxis.order.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import lombok.Data;
+/**
+ * 分账记录对象 order_split
+ *
+ * @author miaxis
+ * @date 2023-12-27
+ */
+@Data
+@TableName("order_split")
+@ApiModel(value = "OrderSplit", description = "分账记录对象 order_split")
+public class OrderSplit extends BaseBusinessEntity{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    /** 商户内部分账订单ID */
+    @Excel(name = "商户内部分账订单ID")
+    @TableField("out_split_no")
+    @ApiModelProperty(value = "商户内部分账订单ID")
+    private String outSplitNo;
+
+    /** 分账金额 */
+    @Excel(name = "分账金额")
+    @TableField("amount")
+    @ApiModelProperty(value = "分账金额")
+    private Integer amount;
+
+    /** 分账到openid或商户号 */
+    @Excel(name = "分账到openid或商户号")
+    @TableField("open_id")
+    @ApiModelProperty(value = "分账到openid或商户号")
+    private String openId;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    @TableField("description")
+    @ApiModelProperty(value = "描述")
+    private String description;
+
+
+}

+ 22 - 0
nbjk-service/src/main/java/com/miaxis/order/mapper/OrderSplitMapper.java

@@ -0,0 +1,22 @@
+package com.miaxis.order.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.order.domain.OrderSplit;
+
+/**
+ * 分账记录Mapper接口
+ *
+ * @author miaxis
+ * @date 2023-12-27
+ */
+public interface OrderSplitMapper extends BaseMapper<OrderSplit> {
+    /**
+     * 查询分账记录列表
+     *
+     * @param orderSplit 分账记录
+     * @return 分账记录集合
+     */
+    public List<OrderSplit> selectOrderSplitList(OrderSplit orderSplit);
+
+}

+ 21 - 0
nbjk-service/src/main/java/com/miaxis/order/service/IOrderSplitService.java

@@ -0,0 +1,21 @@
+package com.miaxis.order.service;
+
+import java.util.List;
+import com.miaxis.order.domain.OrderSplit;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 分账记录Service接口
+ *
+ * @author miaxis
+ * @date 2023-12-27
+ */
+public interface IOrderSplitService extends IService<OrderSplit>{
+    /**
+     * 查询分账记录列表
+     *
+     * @param orderSplit 分账记录
+     * @return 分账记录集合
+     */
+    public List<OrderSplit> selectOrderSplitList(OrderSplit orderSplit);
+}

+ 36 - 0
nbjk-service/src/main/java/com/miaxis/order/service/impl/OrderSplitServiceImpl.java

@@ -0,0 +1,36 @@
+package com.miaxis.order.service.impl;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.miaxis.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.apache.commons.lang3.StringUtils;
+import com.miaxis.order.mapper.OrderSplitMapper;
+import com.miaxis.order.domain.OrderSplit;
+import com.miaxis.order.service.IOrderSplitService;
+
+/**
+ * 分账记录Service业务层处理
+ *
+ * @author miaxis
+ * @date 2023-12-27
+ */
+@Service
+public class OrderSplitServiceImpl extends ServiceImpl<OrderSplitMapper, OrderSplit> implements IOrderSplitService {
+    @Autowired
+    private OrderSplitMapper orderSplitMapper;
+
+    /**
+     * 查询分账记录列表
+     *
+     * @param orderSplit 分账记录
+     * @return 分账记录
+     */
+    @Override
+    public List<OrderSplit> selectOrderSplitList(OrderSplit orderSplit){
+        return orderSplitMapper.selectOrderSplitList(orderSplit);
+    }
+}

+ 2 - 2
nbjk-service/src/main/java/com/miaxis/wx/service/IWxOrderService.java

@@ -14,9 +14,9 @@ import java.util.List;
 public interface IWxOrderService extends IService<WxOrder>{
 public interface IWxOrderService extends IService<WxOrder>{
 
 
 
 
-    String wxAddFenZhang() throws Exception;
+    void wxAddFenZhang() throws Exception;
 
 
-    String wxProfitsharing(WxOrder wxOrder) throws  Exception;
+    void wxProfitsharing(WxOrder wxOrder) throws  Exception;
 
 
     WxOrder getByOutTradeNo(String outTradeNo);
     WxOrder getByOutTradeNo(String outTradeNo);
 
 

+ 19 - 7
nbjk-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -15,7 +15,9 @@ import com.miaxis.common.utils.RSAUtils;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.common.utils.XmlUtil;
 import com.miaxis.common.utils.XmlUtil;
 import com.miaxis.order.domain.OrderInfo;
 import com.miaxis.order.domain.OrderInfo;
+import com.miaxis.order.domain.OrderSplit;
 import com.miaxis.order.service.IOrderInfoService;
 import com.miaxis.order.service.IOrderInfoService;
+import com.miaxis.order.service.IOrderSplitService;
 import com.miaxis.system.service.ISysConfigService;
 import com.miaxis.system.service.ISysConfigService;
 import com.miaxis.user.service.IUserInfoService;
 import com.miaxis.user.service.IUserInfoService;
 import com.miaxis.wx.domain.WxExtract;
 import com.miaxis.wx.domain.WxExtract;
@@ -61,6 +63,10 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     @Autowired
     @Autowired
     private IOrderInfoService orderInfoService;
     private IOrderInfoService orderInfoService;
 
 
+    @Autowired
+    private IOrderSplitService orderSplitService;
+
+
     @Autowired
     @Autowired
     private RSAUtils rsaUtils;
     private RSAUtils rsaUtils;
 
 
@@ -84,7 +90,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
 
 
     @Override
     @Override
     @Transactional
     @Transactional
-    public String wxAddFenZhang() throws Exception {
+    public void wxAddFenZhang() throws Exception {
         String url = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
         String url = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
 
 
         String nonceStr = RandomStringUtils.randomAlphanumeric(32);
         String nonceStr = RandomStringUtils.randomAlphanumeric(32);
@@ -114,7 +120,6 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
             throw new CustomException("微信添加分账出错");
             throw new CustomException("微信添加分账出错");
         }
         }
         System.out.println(xmlStr);
         System.out.println(xmlStr);
-        return null;
     }
     }
 
 
 
 
@@ -124,7 +129,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
      */
      */
     @Override
     @Override
     @Transactional
     @Transactional
-    public String wxProfitsharing(WxOrder wxOrder) throws Exception {
+    public void wxProfitsharing(WxOrder wxOrder) throws Exception {
         String url = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing";
         String url = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing";
         String nonceStr = RandomStringUtils.randomAlphanumeric(32);
         String nonceStr = RandomStringUtils.randomAlphanumeric(32);
         //用于签名
         //用于签名
@@ -156,14 +161,21 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
         sortMap.put("sign", sign);
         sortMap.put("sign", sign);
 
 
         WXPay pay = new WXPay(config);
         WXPay pay = new WXPay(config);
-        String xmlStr = pay.requestWithoutCert(url, sortMap, config.getHttpConnectTimeoutMs(), config.getHttpReadTimeoutMs());
-
+        String xmlStr = pay.requestWithCert(url, sortMap, config.getHttpConnectTimeoutMs(), config.getHttpReadTimeoutMs());
+        Map<String, String> resMap = XmlUtil.xmlToMap(xmlStr);
+        if (!"SUCCESS".equals(resMap.get("return_code")) || !"SUCCESS".equals(resMap.get("result_code"))) {
+            throw new CustomException("微信添加分账出错");
+        }
         //更新成交订单表
         //更新成交订单表
         OrderInfo orderInfo = orderInfoService.getByOutTradeNo(wxOrder.getOutTradeNo());
         OrderInfo orderInfo = orderInfoService.getByOutTradeNo(wxOrder.getOutTradeNo());
         orderInfo.setOutSplitNo(orderCode);
         orderInfo.setOutSplitNo(orderCode);
         orderInfoService.updateById(orderInfo);
         orderInfoService.updateById(orderInfo);
-
-        return null;
+        OrderSplit orderSplit = new OrderSplit();
+        orderSplit.setOutSplitNo(orderCode);
+        orderSplit.setAmount(amount);
+        orderSplit.setOpenId("o7N3j5XxUrgOKE4ulP-HseFpBCiM");
+        orderSplit.setDescription("分到个人");
+        orderSplitService.save(orderSplit);
     }
     }