From fd45fcbd496bbeaf9ee18edd8f2f858cf9cebaf3 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 24 一月 2025 16:47:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java |  107 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 73 insertions(+), 34 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
index 2fbcf1b..0efbcaf 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
+++ b/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,30 +162,42 @@
                 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);
                     }
                 });
             }
         }
-        //手动处理分页
+        // 手动处理分页
         PageInfo<GoodsVO> pageInfo = new PageInfo<>();
         pageInfo.setSize(search.getPageSize());
         pageInfo.setTotal(list.size());
-        Integer pageSize = search.getPageSize();
-        Integer pageNum = (search.getPageCurr() - 1) * pageSize;
 
-        if(list.size() >= (pageNum + 1) * pageSize){
-            list = list.subList(pageNum, pageNum + pageSize);
-        }else if(pageNum < list.size() && list.size() < (pageNum + 1) * pageSize){
-            list = list.subList(pageNum, list.size());
-        }else{
-            list = new ArrayList<>();
+        int pageSize = search.getPageSize();
+        int pageCurr = search.getPageCurr();
+
+        // 计算起始索引
+        int pageNum = (pageCurr - 1) * pageSize;
+
+        // 检查 pageNum 是否合法
+        if (pageNum < 0 || pageNum >= list.size()) {
+            // 如果 pageNum 不合法,返回空列表
+            pageInfo.setRecords(new ArrayList<>());
+            return pageInfo;
         }
-        return pageInfo.setRecords(list);
+
+        // 计算结束索引
+        int endIndex = Math.min(pageNum + pageSize, list.size());
+
+        // 获取分页数据
+        List<GoodsVO> pageList = list.subList(pageNum, endIndex);
+
+        // 设置分页结果
+        pageInfo.setRecords(pageList);
+        return pageInfo;
     }
 
     @Override
-    public GoodsVO goodsDetail(Long goodsId, String longitude, String latitude) {
+    public GoodsVO goodsDetail(Long goodsId, Integer shopId, String longitude, String latitude) {
         if (goodsId == null || goodsId <= 0) {
             throw new NullPointerException("商品ID不能为空");
         }
@@ -216,7 +230,7 @@
         BeanUtils.copyBeanProp(goodsVO, goods);
         goodsVO.setGoodsId(goods.getId());
         goodsVO.setGoodsName(goods.getName());
-        Price price = getPrice(vipId, goods.getId(), null, 1, provinceCode, cityCode, districtCode);
+        Price price = getPrice(vipId, goods.getId(), shopId, 1, provinceCode, cityCode, districtCode);
         if(null != price){
             goodsVO.setPointPayment(price.getPointPayment() ? 1 : 0);
             goodsVO.setCashPayment(price.getCashPayment() ? 1 : 0);
@@ -260,8 +274,9 @@
         }
         Integer integer = orderClient.getGoodsSaleNum(goods.getId(), 1).getData();
         goodsVO.setSaleNum(integer);
-        GoodsEvaluate goodsEvaluate = goodsEvaluateService.lambdaQuery().eq(GoodsEvaluate::getGoodsId, goodsId)
-                .orderByDesc(GoodsEvaluate::getGrade).eq(GoodsEvaluate::getStatus, 2).eq(GoodsEvaluate::getDelFlag, 0).last(" limit 0, 1").one();
+        GoodsEvaluate goodsEvaluate = goodsEvaluateService.lambdaQuery().eq(GoodsEvaluate::getGoodsId, goodsId).ne(GoodsEvaluate::getComment, "")
+                .orderByDesc(GoodsEvaluate::getGrade).eq(GoodsEvaluate::getStatus, 2).isNotNull(GoodsEvaluate::getComment)
+                .eq(GoodsEvaluate::getDelFlag, 0).last(" limit 0, 1").one();
         if (null != goodsEvaluate) {
             AppUser appUserById = appUserClient.getAppUserById(goodsEvaluate.getAppUserId());
             if(null != appUserById){
@@ -278,9 +293,9 @@
     @Override
     public List<Goods> getGoodsListByShopId(PageInfo<Goods> pageInfo, Integer shopId) {
         Integer vipId = 0;
-        String provinceCode = null;
-        String cityCode = null;
-        String districtCode = null;
+        String provinceCode = "0";
+        String cityCode = "0";
+        String districtCode = "0";
         String token = SecurityUtils.getToken(ServletUtils.getRequest());
         if(StringUtils.isNotEmpty(token)){
             Long userid = tokenService.getLoginUserApplet().getUserid();
@@ -307,7 +322,12 @@
 
     @Override
     public IPage<Goods> getManageGoodsList(Page<Goods> page, Goods goods) {
-        return goodsMapper.selectManageGoodsList(page, goods);
+        IPage<Goods> goodsIPage = goodsMapper.selectManageGoodsList(page, goods);
+        goodsIPage.getRecords().forEach(goods1 -> {
+            Integer data = orderClient.getGoodsSaleNum(goods1.getId(), 1).getData();
+            goods1.setSaleNum(data);
+        });
+        return goodsIPage;
     }
 
     @Override
@@ -388,9 +408,10 @@
                     area.setProvinceCode(goodsArea.getProvinceCode());
                     area.setCityCode(goodsArea.getCityCode());
                     area.setDistrictsCode(goodsArea.getDistrictsCode());
-                    if(null != area.getSellingPrice() && null != area.getIntegral()){
-                        goodsAreaList2.add(area);
-                    }
+//                    if(null != area.getSellingPrice() || null != area.getIntegral()){
+//                        goodsAreaList2.add(area);
+//                    }
+                    goodsAreaList2.add(area);
                 }
                 goodsAreaService.saveBatch(goodsAreaList2);
             }
@@ -566,20 +587,37 @@
             if(null == bargainPriceDetail){
                 //没有门店特价,判断地区价格配置
                 LambdaQueryWrapper<GoodsArea> queryWrapper = new LambdaQueryWrapper<GoodsArea>().eq(GoodsArea::getGoodsId, goodsId).eq(GoodsArea::getVip, vip);
-                if(StringUtils.isNotEmpty(districtCode)){
-                    queryWrapper.eq(GoodsArea::getDistrictsCode, districtCode);
+                if(StringUtils.isNotEmpty(provinceCode)){
+                    queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
                 }
                 if(StringUtils.isNotEmpty(cityCode)){
                     queryWrapper.eq(GoodsArea::getCityCode, cityCode);
                 }
-                if(StringUtils.isNotEmpty(provinceCode)){
-                    queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
+                if(StringUtils.isNotEmpty(districtCode)){
+                    queryWrapper.eq(GoodsArea::getDistrictsCode, districtCode);
                 }
                 GoodsArea goodsArea = goodsAreaService.getOne(queryWrapper);
-                if(null == goodsArea){
+                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));
-                    if(null == goodsVip){
+                    if(null == goodsVip || (null == goodsVip.getCashPayment() && null == goodsVip.getPointPayment())){
                         //没有配置价格,直接使用原始基础价格
                         return null;
                     }else{
@@ -635,4 +673,5 @@
         }
         return price;
     }
+
 }

--
Gitblit v1.7.1