优化后的代码:

FreightPriceDto freightPriceDto = new FreightPriceDto(); //判断当前城市是否加运费 String key = TEMPLATE_REGION + tempId + ":" + cityId; YxShippingTemplatesRegion yxShippingTemplatesRegion = templateRegionLocalCache.get(key); if (yxShippingTemplatesRegion == null) { yxShippingTemplatesRegion = yxShippingTemplatesRegionMapper.selectOne( new LambdaQueryWrapper() .eq(YxShippingTemplatesRegion::getTempId, tempId) .eq(YxShippingTemplatesRegion::getCityId, cityId) .last("limit 1") ); //数据库不存在的数据进行标识 if (yxShippingTemplatesRegion == null) { yxShippingTemplatesRegion = new YxShippingTemplatesRegion(); yxShippingTemplatesRegion.setIsExist(false); } templateRegionLocalCache.setLocalCache(key, yxShippingTemplatesRegion); } //如果数据库查不到数据就是包邮 if (!yxShippingTemplatesRegion.getIsExist()) { freightPriceDto.setIsFreight(true); freightPriceDto.setFreightPrice(BigDecimal.ZERO); freightPriceDto.setRegionInfo(null); return freightPriceDto; } freightPriceDto.setIsFreight(false); BigDecimal quantity = new BigDecimal(productQuantity); //根据计费方式计算运费并且判断是否首件 BigDecimal typeValue = quantity; //判断是否首收件 if (typeValue.compareTo(yxShippingTemplatesRegion.getFirst()) < 0) { freightPriceDto.setFreightPrice(yxShippingTemplatesRegion.getFirstPrice()); return freightPriceDto; } //首件费用+续件件数*续件费用 int continues = (typeValue.subtract(yxShippingTemplatesRegion.getFirst())).divide(yxShippingTemplatesRegion.getContinues()).intValue(); BigDecimal freightPrice = yxShippingTemplatesRegion.getFirstPrice().add(new BigDecimal(continues).multiply(yxShippingTemplatesRegion.getContinuePrice())); freightPriceDto.setFreightPrice(freightPrice); return freightPriceDto;

优化细节说明:

  1. 使用 == null 替换 ObjectUtil.isEmpty()
  2. 删除不必要的 typeValue 变量
  3. 使用 < 0 替换 compareTo() == -1
  4. 使用 Lambda 表达式简化代码
  5. 删除无用的 BigDecimal.ZERO 和 null 赋值
  6. 删除不必要的注

原文地址: http://www.cveoy.top/t/topic/gAOS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录