111
k94314517
2025-03-20 8b536f150e233b9bbd756b999254a58468a6bc5c
111
已修改1个文件
74 ■■■■■ 文件已修改
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
@@ -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);
        }