From 281c6016ab0ea5b2eeecb9167d9ee690b6fdac1f Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 04 七月 2025 17:17:06 +0800
Subject: [PATCH] 三方对接

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java |  146 +++++++++++++++++++++++++++++++++---------------
 1 files changed, 100 insertions(+), 46 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java
index bc54bd5..2761b95 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java
@@ -12,31 +12,26 @@
 import com.github.binarywang.wxpay.service.WxPayService;
 import com.ruoyi.common.utils.OrderUtil;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.dto.AddBuyerCompanyInfoDto;
 import com.ruoyi.system.mapper.TbOrderMapper;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.MyOrderListQuery;
-import com.ruoyi.system.service.TbOrderService;
-import com.ruoyi.system.service.TbSystemConfigService;
-import com.ruoyi.system.service.TbUserService;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.utils.wx.WxProperties;
 import com.ruoyi.system.vo.MyPushCompanyListVo;
 import lombok.extern.slf4j.Slf4j;
-import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.annotation.OrderUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.InetAddress;
-import java.net.MalformedURLException;
 import java.util.Date;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.List;
 
 /**
  * <p>
@@ -57,12 +52,17 @@
     @Resource
     private WxPayService wxPayService;
 
-
     @Autowired
     private TbSystemConfigService configService;
 
     @Autowired
     private TbUserService userService;
+
+    @Autowired
+    private TbCompanyService companyService;
+
+    @Autowired
+    private TbMessageService messageService;
 
 
     @Override
@@ -73,7 +73,8 @@
 
     @Override
     public WxPayMpOrderResult payOrder(TbOrder tbOrder, Long userId) {
-        WxPayMpOrderResult result = this.createWxOrderToWxService(tbOrder.getUserId(),tbOrder.getOrderNo(),tbOrder.getPrice(),"购买商品", "");
+        TbUser user = userService.getById(userId);
+        WxPayMpOrderResult result = this.createWxOrderToWxService(user.getOpenId(),tbOrder.getOrderNo(),tbOrder.getPrice(),"购买商品", "");
         return result;
     }
 
@@ -86,40 +87,10 @@
         tbOrder.setOrderNo( OrderUtil.getOrderNoForPrefix("ZSX"));
         tbOrder.setStatus(2);
         tbOrder.setPrice(company.getSaleMoney());
-
-        // 生成记录  看是否分佣 金额
-        TbUser user = userService.getById(company.getUserId());
-        TbSystemConfig config = configService.getOne(new LambdaQueryWrapper<TbSystemConfig>().eq(TbSystemConfig::getType, 3));
-
-        if(config!=null){
-            JSONObject jsonObject = JSONObject.parseObject(config.getContent());
-            BigDecimal platformCommission = new BigDecimal(jsonObject.get("platform").toString());
-            BigDecimal userCommission = new BigDecimal(jsonObject.get("user").toString());
-            BigDecimal price = tbOrder.getPrice();
-            BigDecimal divide = platformCommission.divide(new BigDecimal("100"));
-            BigDecimal platformCommissionMoney = divide.multiply(price).setScale(2, RoundingMode.HALF_UP);
-            if(StringUtils.isNotEmpty(user.getInviteId()) && user.getInviteNum()>0){
-                BigDecimal divide1 = userCommission.divide(new BigDecimal("100"));
-                BigDecimal userCommissionMoney = divide1.multiply(price).setScale(2, RoundingMode.HALF_UP);
-                tbOrder.setCommissionPrice(userCommissionMoney);
-            }
-            tbOrder.setShare_user_id(user.getInviteId());
-            tbOrder.setCommissionPlatform(platformCommissionMoney);
-        }
         tbOrder.insert();
 
-
-        // 生成记录
-        TbAccountDetail tbAccountDetail = new TbAccountDetail();
-        tbAccountDetail.setUserId(company.getUserId());
-        tbAccountDetail.setType(1);
-        tbAccountDetail.setCategory(2);
-        tbAccountDetail.setStatus(1);
-        BigDecimal subtract = tbOrder.getPrice().subtract(tbOrder.getCommissionPrice()).subtract(tbOrder.getCommissionPlatform());
-        tbAccountDetail.setMoney(subtract);
-        tbAccountDetail.setOrderId(tbOrder.getId());
-        tbAccountDetail.insert();
-
+        company.setStatus(4);
+        company.updateById();
     }
 
     @Override
@@ -133,20 +104,68 @@
         if (order!=null) {
             order.setStatus(4);
             order.setPayTime(new Date());
+            order.setOutTradeNo(notifyResult.getOutTradeNo());
+            order.setTransactionId(notifyResult.getTransactionId());
+            TbCompany company = companyService.getById(order.getCompanyId());
+            // 生成记录  看是否分佣 金额
+            TbUser user = userService.getById(company.getUserId());
+            TbSystemConfig config = configService.getOne(new LambdaQueryWrapper<TbSystemConfig>().eq(TbSystemConfig::getType, 3));
+            if(config!=null){
+                JSONObject jsonObject = JSONObject.parseObject(config.getContent());
+                BigDecimal platformCommission = new BigDecimal(jsonObject.get("platform").toString());
+                BigDecimal userCommission = new BigDecimal(jsonObject.get("user").toString());
+                BigDecimal price = order.getPrice();
+                BigDecimal divide = platformCommission.divide(new BigDecimal("100"));
+                BigDecimal platformCommissionMoney = divide.multiply(price).setScale(2, RoundingMode.HALF_UP);
+                if(StringUtils.isNotEmpty(user.getInviteId()) && user.getInviteNum()>0){
+                    BigDecimal divide1 = userCommission.divide(new BigDecimal("100"));
+                    BigDecimal userCommissionMoney = divide1.multiply(price).setScale(2, RoundingMode.HALF_UP);
+                    order.setCommissionPrice(userCommissionMoney);
+                }
+                order.setShareUserId(user.getInviteId());
+                order.setCommissionPlatform(platformCommissionMoney);
+            }
             order.updateById();
+
+            // 生成记录
+            TbAccountDetail tbAccountDetail = new TbAccountDetail();
+            tbAccountDetail.setUserId(company.getUserId());
+            tbAccountDetail.setType(1);
+            tbAccountDetail.setCategory(2);
+            tbAccountDetail.setStatus(1);
+            BigDecimal subtract = order.getPrice().subtract(order.getCommissionPrice()).subtract(order.getCommissionPlatform());
+            tbAccountDetail.setMoney(subtract);
+            tbAccountDetail.setOrderId(order.getId());
+            tbAccountDetail.insert();
+
+            // 生成记录
+            TbAccountDetail tbAccountDetail1 = new TbAccountDetail();
+            tbAccountDetail1.setUserId(order.getUserId());
+            tbAccountDetail1.setType(2);
+            tbAccountDetail1.setCategory(5);
+            tbAccountDetail1.setStatus(2);
+            tbAccountDetail1.setMoney(order.getPrice());
+            tbAccountDetail1.setOrderId(order.getId());
+            tbAccountDetail1.insert();
+
+
+            messageService.addMessage("下单成功,请及时发送快递", order.getUserId(),order.getId());
+            messageService.addMessage("您发布的订单买家已支付,请尽快处理!", company.getUserId(),order.getId());
+            return "<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>";
         }
-        return "<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>";
+        return null;
+
+
     }
 
     @Override
     public void commission(TbOrder order,String userId) {
-        String shareUserId = order.getShare_user_id();
+        String shareUserId = order.getShareUserId();
         if(StringUtils.isNotEmpty(shareUserId)){
             TbUser shareUser = userService.getById(shareUserId);
             BigDecimal add = shareUser.getBalance().add(order.getCommissionPrice());
             shareUser.setBalance(add);
             shareUser.updateById();
-
 
             TbAccountDetail accountDetail = new TbAccountDetail();
             accountDetail.setUserId(shareUserId);
@@ -166,7 +185,41 @@
         user.setBalance(add);
         user.updateById();
 
+    }
 
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public void lastPayOrderData(TbOrder tbOrder, AddBuyerCompanyInfoDto dto, Long userId,TbCompany company) {
+        TbBuyerCompanyInfo tbBuyerCompanyInfo = new TbBuyerCompanyInfo();
+        BeanUtils.copyProperties(dto,tbBuyerCompanyInfo);
+        tbBuyerCompanyInfo.setOrderId(tbOrder.getId());
+        List<TbShareholder> shareholders = dto.getShareholders();
+
+        BigDecimal addMoney=BigDecimal.ZERO;
+        int addDay=0;
+        // 判断是否需要支付改名费 迁区费
+        if(dto.getNeedRename()==1){
+            addMoney = company.getRenameMoney();
+            addDay=company.getRenameDay();
+        }
+        if(dto.getNewDistrict()==1){
+            addMoney = addMoney.add(company.getRelocationAreaMoney());
+            addDay = addDay+company.getRelocationAreaDay();
+        }
+        // 更新订单金额
+        if(addMoney.compareTo(BigDecimal.ZERO)>0){
+            BigDecimal add = tbOrder.getPrice().add(addMoney);
+            tbOrder.setPrice(add);
+            tbOrder.updateById();
+        }
+        if(addDay>0){
+            tbBuyerCompanyInfo.setAddDay(addDay);
+        }
+        tbBuyerCompanyInfo.insert();
+        for (TbShareholder shareholder : shareholders) {
+            shareholder.setOrderId(tbOrder.getId());
+            shareholder.insert();
+        }
     }
 
 
@@ -189,6 +242,7 @@
             wxPayUnifiedOrderRequest.setBody("购买商品");
             wxPayUnifiedOrderRequest.setOutTradeNo(outTradeNo);
             wxPayUnifiedOrderRequest.setTotalFee(amountInFen);// 元转成分
+            wxPayUnifiedOrderRequest.setOpenid(openId);
             wxPayUnifiedOrderRequest.setSpbillCreateIp(
                     InetAddress.getLoopbackAddress().getHostAddress());
             wxPayUnifiedOrderRequest.setTradeType("JSAPI");

--
Gitblit v1.7.1