Bläddra i källkod

分帐BUG列表等

zhangbin 1 år sedan
förälder
incheckning
1f37b8d802

+ 1 - 1
nbjk-admin/src/main/java/com/miaxis/pc/controller/PcOrderInfoController.java

@@ -63,7 +63,7 @@ public class PcOrderInfoController extends BaseController {
             @PathVariable("outTradeNo") String outTradeNo) throws Exception {
         OrderInfo orderInfo = orderInfoService.getByOutTradeNo(outTradeNo);
 
-        if (orderInfo.getTradeType()==1) {
+        if (orderInfo.getTradeType()!=1) {
             Response response = new Response(200, "非支付成功的订单,无法分账。");
             return response;
         }

+ 2 - 2
nbjk-admin/src/main/java/com/miaxis/pc/controller/PcOrderSplitController.java

@@ -48,7 +48,7 @@ public class PcOrderSplitController extends BaseController {
 
     /**
      * 获取分账记录详细信息
-     */
+
     @GetMapping(value = "/{id}")
     @ApiOperation("获取分账记录详细信息")
     public Response<OrderSplit> getInfo(
@@ -57,6 +57,6 @@ public class PcOrderSplitController extends BaseController {
     ) {
         return Response.success(orderSplitService.getById(id));
     }
-
+     */
 
 }

+ 7 - 2
nbjk-service/src/main/java/com/miaxis/order/domain/OrderSplit.java

@@ -31,14 +31,12 @@ public class OrderSplit extends BaseBusinessEntity{
     @ApiModelProperty(value = "商户内部分账订单ID")
     private String outSplitNo;
 
-
     /** 商户内部订单ID */
     @Excel(name = "商户内部订单ID")
     @TableField("out_trade_no")
     @ApiModelProperty(value = "商户内部订单ID")
     private String outTradeNo;
 
-
     /** 分账金额 */
     @Excel(name = "分账金额")
     @TableField("amount")
@@ -51,6 +49,13 @@ public class OrderSplit extends BaseBusinessEntity{
     @ApiModelProperty(value = "分账到openid或商户号")
     private String openId;
 
+    /** 前端类型 1:app 2:小程序 3:公众号 */
+    @Excel(name = "前端类型 1:app 2:小程序 3:公众号")
+    @TableField("open_id_type")
+    @ApiModelProperty(value = "前端类型 1:app 2:小程序 3:公众号")
+    private Integer openIdType;
+
+
     /** 描述 */
     @Excel(name = "描述")
     @TableField("description")

+ 2 - 2
nbjk-service/src/main/java/com/miaxis/order/dto/OrderInfoDto.java

@@ -40,8 +40,8 @@ public class OrderInfoDto {
     @ApiModelProperty(value = "退款订单号")
     private String outRefundNo;
 
-    /** 分账状态 0 不分帐 1待分账  2分账失败  3分账完成 */
-    @ApiModelProperty(value = "分账状态 0 不分帐 1待分账  2分账失败  3分账完成")
+    /** 分账状态 0 不分帐 1待分账  2分账成功  3分账失败 */
+    @ApiModelProperty(value = "分账状态 0 不分帐 1待分账  2分账成功  3分账失败")
     private Integer profitSharing;
 
     /** 订单总金额 */

+ 52 - 0
nbjk-service/src/main/java/com/miaxis/order/vo/OrderSplitVo.java

@@ -0,0 +1,52 @@
+package com.miaxis.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 分账记录对象 order_split
+ *
+ * @author miaxis
+ * @date 2024-01-31
+ */
+@Data
+public class OrderSplitVo {
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    /** 商户内部分账订单ID */
+    @ApiModelProperty(value = "商户内部分账订单ID")
+    private String outSplitNo;
+
+
+    /** 商户内部订单ID */
+    @ApiModelProperty(value = "商户内部订单ID")
+    private String outTradeNo;
+
+
+    /** 分账金额 */
+    @ApiModelProperty(value = "分账金额")
+    private Integer amount;
+
+    /** 分账到openid或商户号 */
+    @ApiModelProperty(value = "分账到openid或商户号")
+    private String openId;
+
+    /** 前端类型 1:app 2:小程序 3:公众号 */
+    @ApiModelProperty(value = "前端类型 1:app 2:小程序 3:公众号")
+    private Integer openIdType;
+
+
+    /** 描述 */
+    @ApiModelProperty(value = "描述")
+    private String description;
+
+    /** 昵称 */
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+
+}

+ 41 - 20
nbjk-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
@@ -96,7 +97,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     @Transactional
     public boolean wxAddFenZhang(OrderInfo orderInfo) throws Exception {
         //查询上级
-        String account = getAccount(orderInfo);
+        Map<String, Object> accountMap = getAccount(orderInfo);
         String url = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
 
         String nonceStr = RandomStringUtils.randomAlphanumeric(32);
@@ -108,11 +109,16 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
         sortMap.put("sign_type", "HMAC-SHA256");
         Map<String, String> receiverMap = new TreeMap<String, String>();
         receiverMap.put("type", "PERSONAL_OPENID");
-        if(StringUtils.isNotEmpty(account)) {  //如果存在上级,分给上给
-            receiverMap.put("account", account);
-        } else {                               //如果不存在上级,分给固定的
-            receiverMap.put("account", "o7N3j5XxUrgOKE4ulP-HseFpBCiM");
+
+        if (accountMap != null) {
+            String account = (String) accountMap.get("account");
+            if (StringUtils.isNotEmpty(account)) {  //如果存在上级,分给上给
+                receiverMap.put("account", account);
+            } else {                               //如果不存在上级,分给固定的
+                receiverMap.put("account", "o7N3j5XxUrgOKE4ulP-HseFpBCiM");
+            }
         }
+
         receiverMap.put("relation_type", "SERVICE_PROVIDER");  //合作合伙
         ObjectMapper objectMapper = new ObjectMapper();
         String receiverMapJson = objectMapper.writeValueAsString(receiverMap);
@@ -127,7 +133,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
 
         Map<String, String> resMap = XmlUtil.xmlToMap(xmlStr);
         if (!"SUCCESS".equals(resMap.get("return_code")) || !"SUCCESS".equals(resMap.get("result_code"))) {
-           // throw new CustomException("微信添加分账出错");
+            // throw new CustomException("微信添加分账出错");
             log.info("微信添加分账出错");
             log.info(resMap.toString());
             return false;
@@ -138,8 +144,6 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     }
 
 
-
-
     /**
      * @return
      * @throws Exception
@@ -147,8 +151,6 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     @Override
     @Transactional
     public boolean wxProfitsharing(OrderInfo orderInfo) throws Exception {
-        //查询上级
-        String account = getAccount(orderInfo);
         String url = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing";
         String nonceStr = RandomStringUtils.randomAlphanumeric(32);
         //用于签名
@@ -161,16 +163,22 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
         String orderCode = getOrderCode(orderInfo.getUserId()); //商户分账单号
         sortMap.put("out_order_no", orderCode);
 
-
         //扣除手续费后
         double commission = orderInfo.getTotal() * 0.01;
         double total = orderInfo.getTotal() - commission;
         int amount = (int) Math.floor(total * 0.3);
-
         Map<String, Object> receiverMap = new TreeMap<String, Object>();
         receiverMap.put("type", "PERSONAL_OPENID");
 
-        if(StringUtils.isNotEmpty(account)) {  //如果存在上级,分给上给
+        //获取上级
+        Map<String, Object> accountMap = getAccount(orderInfo);
+        String account = null;
+        Integer openIdType = null;
+        if (accountMap != null) {
+            account = (String) accountMap.get("account");
+            openIdType = (Integer) accountMap.get("openIdType");
+        }
+        if (StringUtils.isNotEmpty(account)) {  //如果存在上级,分给上给
             receiverMap.put("account", account);
         } else {                               //如果不存在上级,分给固定的
             receiverMap.put("account", "o7N3j5XxUrgOKE4ulP-HseFpBCiM");
@@ -198,15 +206,19 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
             return false;
         }
         //更新成交订单表
-       // OrderInfo orderInfo = orderInfoService.getByOutTradeNo(wxOrder.getOutTradeNo());
         orderInfo.setProfitSharing(2);
         orderInfoService.updateById(orderInfo);
+
         OrderSplit orderSplit = new OrderSplit();
         orderSplit.setOutSplitNo(orderCode);
         orderSplit.setOutTradeNo(orderInfo.getOutTradeNo());
         orderSplit.setAmount(amount);
-
         orderSplit.setOpenId(account);
+        if (openIdType!=null) {
+            orderSplit.setOpenIdType(openIdType);
+        } else {
+            orderSplit.setOpenIdType(2);
+        }
         orderSplit.setDescription("分到个人");
         return orderSplitService.save(orderSplit);
     }
@@ -328,14 +340,15 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     }
 
 
-
-
     /**
      * 查询出上级unionId
+     *
      * @param orderInfo
      * @return
      */
-    private String getAccount(OrderInfo orderInfo) {
+    private Map<String, Object> getAccount(OrderInfo orderInfo) {
+        Map<String, Object> resultMap = new HashMap<String, Object>();
+
         String account = null;
         UserInfo userInfo = sysUserService.getStudentByUnionId(orderInfo.getUnionId());
         UserInfo pUserInfo = null;
@@ -344,14 +357,22 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
         }
         if (pUserInfo != null) {
             if (StringUtils.isNotEmpty(pUserInfo.getXcxOpenid())) {
-                account =  pUserInfo.getXcxOpenid();
+                account = pUserInfo.getXcxOpenid();
+                resultMap.put("account", account);
+                resultMap.put("openIdType", 2);
             } else if (StringUtils.isNotEmpty(pUserInfo.getGzhOpenid())) {
                 account = pUserInfo.getGzhOpenid();
+                resultMap.put("account", account);
+                resultMap.put("openIdType", 3);
             } else if (StringUtils.isNotEmpty(pUserInfo.getAppOpenid())) {
                 account = pUserInfo.getAppOpenid();
+                resultMap.put("account", account);
+                resultMap.put("openIdType", 1);
+            } else {
+                return null;
             }
         }
-        return account;
+        return resultMap;
     }
 
 

+ 8 - 7
nbjk-service/src/main/resources/mapper/order/OrderSplitMapper.xml

@@ -20,14 +20,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
 
 
-    <select id="selectOrderSplitList" parameterType="OrderSplit" resultMap="OrderSplitResult">
-        <include refid="selectOrderSplitVo"/>
+    <select id="selectOrderSplitList" parameterType="OrderSplit" resultType="com.miaxis.order.vo.OrderSplitVo">
+        select s.*,u.nick_name from order_split s join user_info u on s.open_id = u.xcx_openid
+        or s.open_id = u.app_openid or s.open_id = u.gzh_openid
         <where>
-            <if test="outSplitNo != null  and outSplitNo != ''"> and out_split_no = #{outSplitNo}</if>
-            <if test="outTradeNo != null  and outTradeNo != ''"> and out_trade_no = #{outTradeNo}</if>
-            <if test="amount != null "> and amount = #{amount}</if>
-            <if test="openId != null  and openId != ''"> and open_id = #{openId}</if>
-            <if test="description != null  and description != ''"> and description = #{description}</if>
+            <if test="outSplitNo != null  and outSplitNo != ''"> and s.out_split_no = #{outSplitNo}</if>
+            <if test="outTradeNo != null  and outTradeNo != ''"> and s.out_trade_no = #{outTradeNo}</if>
+            <if test="amount != null "> s.and amount = #{amount}</if>
+            <if test="openId != null  and openId != ''"> and s.open_id = #{openId}</if>
+            <if test="description != null  and description != ''"> and s.description = #{description}</if>
         </where>
     </select>