From 0b79b0426586a0fad0247ed13cb6eac1a61bfe13 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 24 八月 2024 11:06:12 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 75 +++++++++++++++++++++++++++++++------ 1 files changed, 62 insertions(+), 13 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java index 8011eb8..979620c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java @@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.vo.StrategyPriceVO; @@ -10,16 +12,20 @@ import com.ruoyi.chargingPile.mapper.TAccountingStrategyMapper; import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalTime; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * <p> @@ -36,7 +42,10 @@ private TAccountingStrategyMapper accountingStrategyMapper; @Autowired private VipClient vipClient; - + @Autowired + private TokenService tokenService; + @Autowired + private AppUserClient appUserClient; @Override public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) { return this.baseMapper.queryAccountingStrategyDetailByStrategyId(strategyId); @@ -51,18 +60,40 @@ throw new ServiceException("未查询到计费策略"); } List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId()); - // 获取当前时间段的计费策略明细 - TAccountingStrategyDetailVO accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) - .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); - accountingStrategyDetailVO.setDiscount(accountingStrategy.getDiscount()); - // 获取后一次的计费策略明细 - TAccountingStrategyDetailVO accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) - .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); - accountingStrategyDetailNext.setDiscount(accountingStrategy.getDiscount()); - list = new ArrayList<>(); - list.add(accountingStrategyDetailVO); - list.add(accountingStrategyDetailNext); - return list; + // 获取当前登录用户id + Long userId = tokenService.getLoginUserApplet().getUserId(); + // 根据id查询用户信息 + TAppUser appUser = appUserClient.getUserById(userId).getData(); + if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){ + // 查询会员信息 + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); + TAccountingStrategyDetailVO accountingStrategyDetailVO; + TAccountingStrategyDetailVO accountingStrategyDetailNext; + if(Objects.nonNull(vip) && vip.getType() == 2){ + // 获取当前时间段的计费策略明细 + accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) + .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); + accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(vip.getDiscount())); + // 获取后一次的计费策略明细 + accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) + .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); + accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(vip.getDiscount())); + }else { + // 获取当前时间段的计费策略明细 + accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) + .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); + accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(accountingStrategy.getDiscount())); + // 获取后一次的计费策略明细 + accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) + .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); + accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(accountingStrategy.getDiscount())); + } + list = new ArrayList<>(); + list.add(accountingStrategyDetailVO); + list.add(accountingStrategyDetailNext); + return list; + } + return new ArrayList<>(); } @Override @@ -93,4 +124,22 @@ strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount()); return strategyPriceVO; } + + @Override + public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) { + String START_OF_DAY = "00:00:00"; + String END_OF_DAY = "24:00:00"; + List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream() + .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)) + .collect(Collectors.toList()); + + boolean isFirstElementValid = sortedDetails.isEmpty() || !START_OF_DAY.equals(sortedDetails.get(0).getStartTime()); + boolean isLastElementValid = sortedDetails.isEmpty() || !END_OF_DAY.equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime()); + + boolean isTimeContinuous = sortedDetails.stream() + .skip(1) + .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime())); + + return isFirstElementValid || isLastElementValid || !isTimeContinuous; + } } -- Gitblit v1.7.1