luodangjia
2025-01-24 c90a8ac772937f8f084356ea1f04c5dba1d9e5d5
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -92,6 +92,8 @@
    @Override
    public PageInfo<GoodsVO> goodsList(Goods search) {
        Integer vipId = 0;
@@ -127,13 +129,13 @@
                    @Override
                    public int compare(GoodsVO o1, GoodsVO o2) {
                        if(null != o1.getSellingPrice() && null != o2.getSellingPrice()){
                            return o1.getSellingPrice().compareTo(o2.getSellingPrice()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                            return o1.getSellingPrice().compareTo(o2.getSellingPrice()) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                        }
                        if(null == o1.getSellingPrice() && null != o2.getSellingPrice()){
                            return BigDecimal.ZERO.compareTo(o2.getSellingPrice()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                            return BigDecimal.ZERO.compareTo(o2.getSellingPrice()) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                        }
                        if(null != o1.getSellingPrice() && null == o2.getSellingPrice()){
                            return o1.getSellingPrice().compareTo(BigDecimal.ZERO) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                            return o1.getSellingPrice().compareTo(BigDecimal.ZERO) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                        }
                        return 0;
                    }
@@ -144,13 +146,13 @@
                    @Override
                    public int compare(GoodsVO o1, GoodsVO o2) {
                        if(null != o1.getIntegral() && null != o2.getIntegral()){
                            return o1.getIntegral().compareTo(o2.getIntegral()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                            return o1.getIntegral().compareTo(o2.getIntegral()) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                        }
                        if(null == o1.getIntegral() && null != o2.getIntegral()){
                            return Integer.valueOf(0).compareTo(o2.getIntegral()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                            return Integer.valueOf(0).compareTo(o2.getIntegral()) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                        }
                        if(null != o1.getIntegral() && null == o2.getIntegral()){
                            return o1.getIntegral().compareTo(Integer.valueOf(0)) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                            return o1.getIntegral().compareTo(Integer.valueOf(0)) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                        }
                        return 0;
                    }
@@ -160,7 +162,7 @@
                list.sort(new Comparator<GoodsVO>() {
                    @Override
                    public int compare(GoodsVO o1, GoodsVO o2) {
                        return o1.getSaleNum().compareTo(o2.getSaleNum()) * (StringUtils.isNotEmpty(search.getIsAsc()) ? -1 : 1);
                        return o1.getSaleNum().compareTo(o2.getSaleNum()) * ("desc".equals(search.getIsAsc()) ? -1 : 1);
                    }
                });
            }
@@ -589,12 +591,29 @@
                    queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
                }
                if(StringUtils.isNotEmpty(cityCode)){
                    queryWrapper.and(i -> i.eq(GoodsArea::getCityCode, cityCode).or().isNull(GoodsArea::getCityCode));
                    queryWrapper.eq(GoodsArea::getCityCode, cityCode);
                }
                if(StringUtils.isNotEmpty(districtCode)){
                    queryWrapper.and(i -> i.eq(GoodsArea::getDistrictsCode, districtCode).or().isNull(GoodsArea::getDistrictsCode));
                    queryWrapper.eq(GoodsArea::getDistrictsCode, districtCode);
                }
                GoodsArea goodsArea = goodsAreaService.getOne(queryWrapper);
                if(goodsArea == null){
                    queryWrapper = new LambdaQueryWrapper<GoodsArea>().eq(GoodsArea::getGoodsId, goodsId).eq(GoodsArea::getVip, vip);
                    if(StringUtils.isNotEmpty(provinceCode)){
                        queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
                    }
                    if(StringUtils.isNotEmpty(cityCode)){
                        queryWrapper.eq(GoodsArea::getCityCode, cityCode);
                    }
                    goodsArea = goodsAreaService.getOne(queryWrapper);
                }
                if(goodsArea == null){
                    queryWrapper = new LambdaQueryWrapper<GoodsArea>().eq(GoodsArea::getGoodsId, goodsId).eq(GoodsArea::getVip, vip);
                    if(StringUtils.isNotEmpty(provinceCode)){
                        queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
                    }
                    goodsArea = goodsAreaService.getOne(queryWrapper);
                }
                if(null == goodsArea || (null == goodsArea.getCashPayment() && null == goodsArea.getPointPayment())){
                    //没有地区价格,则使用会员价格
                    GoodsVip goodsVip = goodsVipService.getOne(new LambdaQueryWrapper<GoodsVip>().eq(GoodsVip::getGoodsId, goodsId).eq(GoodsVip::getVip, vip));
@@ -654,4 +673,5 @@
        }
        return price;
    }
}