From 25a25f620b016505a629b9c7565ea1c01864adab Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 04 九月 2025 18:35:15 +0800
Subject: [PATCH] Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/parkBike into 2.0.1

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

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 4d9ad97..74ead5c 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -701,8 +701,24 @@
         }catch (Exception e){
         }
         //鏈�楂樹环鏍艰溅鍨嬬殑楠戣璁板綍
-        MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,true);
-
+        //MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,true);
+        MemberRides topRides =null;
+        for(MemberRides rides : memberRides){
+            if ( true && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+            }
+            durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
+            if(durationSum-freeTime > 0 ){//鍙畻瓒呭嚭鍏嶈垂鏃堕暱鐨勬暟鎹�
+                if(topRides == null ||( Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())
+                        && Constants.formatIntegerNum(rides.getDuration())>0)){
+                    topRides = rides;
+                }
+            }
+        }
+        //鏃犺秴杩囧厤璐规椂闀跨殑楠戣璁板綍 鏌ヨ鏈�鍚庝竴鏉¤褰�
+        if(Objects.isNull(topRides)){
+             topRides = memberRidesJoinMapper.selectOne(new QueryWrapper<MemberRides>().lambda().eq(MemberRides::getOrdreId,goodsorder.getId()).orderByDesc(MemberRides::getCreateDate).last("limit 1"));
+        }
 //        BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney()));
         //閫�娆句箰琛�
 //       int type =Constants.formatIntegerNum(refund.getType());
@@ -839,14 +855,42 @@
         transactionsMapper.insert(transactions);
     }
 
+    @Override
+    public List<MemberRides> getMemberRidesForClose(String id) {
+        MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>();
+        wrapper.eq(MemberRides::getOrdreId,id);
+        wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
+        wrapper.selectAll(MemberRides.class)
+                .selectAs(BaseParam::getSortnum, MemberRides::getSortnum)
+                .selectAs(BaseParam::getName, MemberRides::getParamName);
+        wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
+        wrapper.orderByDesc(BaseParam::getSortnum);
+        //鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗�
+        //鏌ヨ鎵�鏈夐獞琛岃褰�
+        List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,wrapper);
+        return memberRides;
+    }
+
     private RidesDetailResponse  getCloseMoneyByRides(List<MemberRides> memberRides,int freeTime,boolean isClose,BigDecimal yjMoney,String memberId,Boolean unOver) {
         RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
         ridesDetailResponse.setHaveDisCount(Constants.ZERO);
         BigDecimal closeMoney = new BigDecimal(0.00);
         int durationSum = 0;
         //鏈�楂樹环鏍艰溅鍨嬬殑楠戣璁板綍
-        MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,isClose);
-
+        //MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,isClose);
+        MemberRides topRides =null;
+        for(MemberRides rides : memberRides){
+            if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+            }
+            durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
+            if(durationSum-freeTime > 0 ){//鍙畻瓒呭嚭鍏嶈垂鏃堕暱鐨勬暟鎹�
+                if(topRides == null ||( Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())
+                        && Constants.formatIntegerNum(rides.getDuration())>0)){
+                    topRides = rides;
+                }
+            }
+        }
         //璁$畻搴斾粯閲戦
         if( topRides != null){
             int baseTime =Constants.formatIntegerNum(topRides.getBaseTime());
@@ -863,7 +907,7 @@
             topRides.setActualPrice(closeMoney);
             //2025骞�3鏈�18鏃�11:28:38 杩斿洖楠戣浠锋牸鏈�楂樼殑杞﹀瀷
             ridesDetailResponse.setParamId(topRides.getParamId());
-        } 
+        }
         //鏌ヨ鏄惁瀛樺湪濂楅淇℃伅
         DiscountMember discountMember = this.getUseDiscount(memberId,durationSum,Objects.nonNull(topRides)?topRides.getType():null);
         //璁$畻鎶垫墸閲戦
@@ -927,22 +971,6 @@
         ridesDetailResponse.setAmount(closeMoney);
         ridesDetailResponse.setBikeType(topRides!=null?topRides.getParamName():"-");
         return ridesDetailResponse;
-    }
-
-    @Override
-    public List<MemberRides> getMemberRidesForClose(String id) {
-        MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>();
-        wrapper.eq(MemberRides::getOrdreId,id);
-        wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
-        wrapper.selectAll(MemberRides.class)
-                .selectAs(BaseParam::getSortnum, MemberRides::getSortnum)
-                .selectAs(BaseParam::getName, MemberRides::getParamName);
-        wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
-        wrapper.orderByDesc(BaseParam::getSortnum);
-        //鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗�
-        //鏌ヨ鎵�鏈夐獞琛岃褰�
-        List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,wrapper);
-        return memberRides;
     }
 
     @Override
@@ -1114,7 +1142,7 @@
             model.setRefundNum(Constants.formatIntegerNum(refund.getCountNum()));
             model.setRefundMoney(Constants.translateMoney(Constants.formatDecimalNum(refund.getMoney())));
         }
-        model.setClosedMoney(model.getPayMoney().subtract(model.getRefundMoney()).subtract(model.getUnClosedMoney()));
+        model.setClosedMoney(model.getPayMoney().add(model.getDiscountMoney()).subtract(model.getRefundMoney()).subtract(model.getUnClosedMoney()));
         return  model;
     }
     @Override
@@ -1716,10 +1744,10 @@
                 BigDecimal amount = goodsorderList.stream()
                         .filter(i->StringUtils.isNotBlank(i.getParamId())&&DateUtil.getShortDateStr(date).equals(DateUtil.getShortDateStr(i.getCreateDate()))&&baseParam.getId().equals(i.getParamId()))
                         .map(i->i.getCloseMoney()).reduce(BigDecimal.ZERO,BigDecimal::add);
-                dataChildList.add(amount.divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP).toString());
+                amount = amount.divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP);
+                dataChildList.add(amount.toString());
                 totalAmount  = amount.add(totalAmount);
             }
-            BikeIncomeDetailReportVO detail = new BikeIncomeDetailReportVO();
             dataChildList.add("锟�"+totalAmount);
             parentList.add(dataChildList);
         }

--
Gitblit v1.9.3