From bd491c37218b0b3d9b518e4814967d814e781c02 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 19 一月 2026 18:07:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |   41 ++++++++++++++++++++++++-----------------
 1 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index f2bb0e8..0753bde 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
@@ -24,6 +25,7 @@
 import com.doumee.dao.web.request.*;
 import com.doumee.dao.web.request.goods.*;
 import com.doumee.dao.web.response.HomeInfoResponse;
+import com.doumee.dao.web.response.MailConfigResponse;
 import com.doumee.dao.web.response.MyPageResponse;
 import com.doumee.dao.web.response.goods.*;
 import com.doumee.service.business.AreasService;
@@ -801,8 +803,7 @@
         goodsorder.setPrice(orderPayConfirmResponse.getPayAmount());
         goodsorder.setTotalPrice(orderPayConfirmResponse.getAmount());
         goodsorder.setUseIntegral(orderPayConfirmResponse.getDeductIntegral());
-        goodsorder.setIntegral(goodsorder.getUseIntegral());
-        goodsorder.setIntegralPrice(orderPayConfirmResponse.getIntegralAmount());
+        goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount());
         goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount());
         goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE);
         if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
@@ -815,6 +816,8 @@
                     .eq(MemberCoupon::getId,orderPayConfirmResponse.getMemberCoupon().getId())
             );
         }
+        goodsorder.setReturnCustomerIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ONE));
+        goodsorder.setReturnMemberIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ZERO));
         goodsorderMapper.insert(goodsorder);
         List<OrderGoodsCalculateResponse> goodsCalculateList  = orderPayConfirmResponse.getGoodsCalculateList();
         if(CollectionUtils.isEmpty(goodsCalculateList)){
@@ -1390,6 +1393,7 @@
         //閭垂閲戦
         if(Objects.nonNull(request.getReceiveType())){
             if(Constants.equalsInteger(request.getReceiveType(),Constants.ZERO)){
+                MailConfigResponse mailConfigResponse = systemDictDataBiz.getMailConfig();
                 if(Objects.nonNull(request.getAddressId())){
                     Addr addr = addrMapper.selectById(request.getAddressId());
                     if(Objects.isNull(addr)){
@@ -1403,27 +1407,30 @@
                     );
                     if(Objects.nonNull(areas)){
                         Labels  labels = labelsMapper.selectById(areas.getYunFeeId());
-
-
+                        if(Objects.nonNull(labels)&&StringUtils.isNotBlank(labels.getParam())){
+                            //{weight0:10,fee0:10,weight1:10,fee1:10},{棣栭噸:10,棣栭噸杩愯垂锛�10,缁噸锛�10,缁噸璐癸細10}
+                            mailConfigResponse = JSONObject.parseObject(labels.getParam(),MailConfigResponse.class);
+                        }
                     }
-
-
-
                 }
-
-
-
-                //TODO  鏍规嵁鏀惰揣鍦板潃 鏌ヨ杩愯垂閰嶇疆
-
-
-
+                //鏍规嵁鏀惰揣鍦板潃 鏌ヨ杩愯垂閰嶇疆
                 //璁$畻鍟嗗搧淇℃伅鎬婚噸閲�
                 BigDecimal totalWeight = goodsCalculateList.stream().map(i->
                         i.getWeight().multiply(new BigDecimal(i.getGoodsNum().toString()))
                 ).reduce(BigDecimal.ZERO,BigDecimal::add);
-                //TODO 鏆傛椂鏃犺繍璐归噾棰�
-                mailAmount = BigDecimal.ZERO;
-
+                if(totalWeight.compareTo(mailConfigResponse.getWeight0())>=Constants.ZERO){
+                    mailAmount = mailConfigResponse.getFee0();
+                }else{
+                    //瓒呴噸閲嶉噺
+                    BigDecimal overWeight = totalWeight.subtract(mailConfigResponse.getWeight0());
+                    if (overWeight.compareTo(mailConfigResponse.getWeight1()) >= Constants.ZERO) {
+                        mailAmount = mailConfigResponse.getFee0().add(
+                                mailConfigResponse.getFee1()
+                                .multiply(overWeight.divide(mailConfigResponse.getWeight1(),2,RoundingMode.HALF_UP)));
+                    }else{
+                        mailAmount = mailConfigResponse.getFee0().add(mailConfigResponse.getFee1());
+                    }
+                }
                 amount = amount.add(mailAmount);
             }
         }

--
Gitblit v1.9.3