From 609a1931953b2298016bd2b0d6b410666b5ad7b9 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 02 七月 2026 09:19:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/3.0.1' into 3.0.1

---
 server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |  100 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 73 insertions(+), 27 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..68a49e9 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
@@ -391,6 +391,7 @@
         homeResponse.setTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_NOTICE).getCode());
         homeResponse.setLeaseVideoUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode());
         homeResponse.setStopServeTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_TIPS).getCode());
+        homeResponse.setDouyinExchangeTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.DOUYIN_EXCHANGE_TIPS).getCode());
         homeResponse.setIsStopServe(this.checkTemporaryStop()?1:0);
         homeResponse.setIsBusiness(this.checkBusiness()?0:1);
         homeResponse.setUnBusinessTips("钀ヤ笟鏃堕棿涓�"+ systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.BUSINESS_STARTTIME).getCode() +" ~ "+systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.BUSINESS_ENDTIME).getCode()+"锛岃鍦ㄨ惀涓氭椂闂村唴浣跨敤鏈郴缁�");
@@ -481,6 +482,13 @@
                 }
             }
         }
+        // 褰撳墠浼氬憳鏈夋晥濂楅(status=0 姝e父 + isdeleted=0),鎸夎幏寰楁椂闂�(createDate)鍊掑簭,鏈�澶�10鏉�
+        homeResponse.setValidDiscountList(discountMemberMapper.selectList(new QueryWrapper<DiscountMember>().lambda()
+                .eq(DiscountMember::getMemberId, memberId)
+                .eq(DiscountMember::getStatus, Constants.ZERO)
+                .eq(DiscountMember::getIsdeleted, Constants.ZERO)
+                .orderByDesc(DiscountMember::getCreateDate)
+                .last(" limit 10 ")));
         return homeResponse;
     }
 
@@ -701,8 +709,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());
@@ -795,7 +819,8 @@
         if(type == 0|| type ==1 || type==2){
             //濡傛灉鏄樁娈甸��娆�
             Goodsorder goodsorder = goodsorderMapper.selectById(refund.getObjId());
-            closeGoodsorderDoneNoRefund(goodsorder,type,refund.getMoney(),refund.getId(),null);
+            List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId());//鎵撹溅楠戣璁板綍
+            closeGoodsorderDoneNoRefund(goodsorder,type,refund.getMoney(),refund.getId(),memberRides);
         }
      }
 
@@ -839,14 +864,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 +916,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);
         //璁$畻鎶垫墸閲戦
@@ -930,24 +983,17 @@
     }
 
     @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;
+    public void backGoodsorder(GoodsorderBackDTO goodsorderBackDTO) {
+        // platform 绔�:鐧诲綍浜轰粠 Shiro 涓婁笅鏂囧彇,濮旀墭缁欏甫 creator 鐨勯噸杞芥柟娉�
+        LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if (Objects.isNull(principal) || StringUtils.isBlank(principal.getId())) {
+            throw new BusinessException(ResponseStatus.BE_OVERDUE);
+        }
+        backGoodsorder(goodsorderBackDTO, principal.getId());
     }
 
     @Override
-    public void backGoodsorder(GoodsorderBackDTO goodsorderBackDTO) {
-        LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+    public void backGoodsorder(GoodsorderBackDTO goodsorderBackDTO, String creator) {
         if(Objects.isNull(goodsorderBackDTO)
         || StringUtils.isBlank(goodsorderBackDTO.getOrderId())
                 || Objects.isNull(goodsorderBackDTO.getBackType())
@@ -983,7 +1029,7 @@
             refundDTO.setRefundAmount(goodsorderBackDTO.getMoney().multiply(new BigDecimal(100)));
             refundDTO.setTotalAmount(goodsorder.getMoney());
             refundDTO.setMemberId(goodsorder.getMemberId());
-            refundDTO.setCreator(principal.getId());
+            refundDTO.setCreator(creator);
             refundDTO.setReason(goodsorderBackDTO.getReason());
             refundDTO.setType(Constants.REFUND_TYPE.BACK.getKey());
             //閫�璐ч��娆� 鏌ョ湅濂楅璁㈠崟鐘舵�� 鏇存柊璁㈠崟淇℃伅
@@ -1003,7 +1049,7 @@
                     //鎿嶄綔鏃ュ織
                     DiscountLog discountLog = new DiscountLog();
                     discountLog.setIsdeleted(Constants.ZERO);
-                    discountLog.setCreator(principal.getId());
+                    discountLog.setCreator(creator);
                     discountLog.setCreateDate(new Date());
                     discountLog.setDiscountMemberId(discountMember.getId());
                     discountLog.setType(Constants.ONE);
@@ -1114,7 +1160,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
@@ -1331,7 +1377,7 @@
         request.setOutTradeNo(goodsorder.getId());
         request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//杩欎釜鍥炶皟url蹇呴』鏄痟ttps寮�澶寸殑
         Amount amount = new Amount();
-        amount.setTotal(goodsorder.getMoney().intValue());
+        amount.setTotal(1);//goodsorder.getMoney().intValue());
         request.setAmount(amount);
 //        PrepayResponse res = WxMiniConfig.wxPayService.prepay(request);
             // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁�
@@ -1716,10 +1762,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