Sfoglia il codice sorgente

团购重构,推荐页面店铺新功能

jyc 1 giorno fa
parent
commit
8448eb863a

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreInfo.java

@@ -189,6 +189,10 @@ public class StoreInfo {
     @TableField("img_mode")
     private Integer ImgMode;
 
+    @ApiModelProperty(value = "收藏数")
+    @TableField("collect_num")
+    private Integer collectNum;
+
     @TableField(exist = false)
     private String dist;
 }

+ 26 - 4
alien-entity/src/main/java/shop/alien/entity/store/vo/ScreeningOfEightMajorCategoriesVO.java

@@ -9,10 +9,10 @@ public class ScreeningOfEightMajorCategoriesVO {
     @ApiModelProperty(value = "筛选ID,多个ID用逗号分隔")
     private String screeningId;
 
-    @ApiModelProperty(value = "经度")
+    @ApiModelProperty(value = "经度", required = true)
     private Double lon;
 
-    @ApiModelProperty(value = "纬度")
+    @ApiModelProperty(value = "纬度", required = true)
     private Double lat;
 
     @ApiModelProperty(value = "距离范围")
@@ -27,15 +27,37 @@ public class ScreeningOfEightMajorCategoriesVO {
     @ApiModelProperty(value = "营业时间自定义结束")
     private String endTime;
 
+    @ApiModelProperty(value = "门店名称")
+    private String storeName;
+
     @ApiModelProperty(value = "价格开始")
     private Double priceStr;
 
     @ApiModelProperty(value = "价格结束")
     private Double priceEnd;
 
-    @ApiModelProperty(value = "页码")
+    @ApiModelProperty(value = "页码", required = true)
     private Integer pageNum;
 
-    @ApiModelProperty(value = "页容")
+    @ApiModelProperty(value = "页容", required = true)
     private Integer pageSize;
+
+    @ApiModelProperty(value = "人气优先0否1是")
+    private Integer rqyx;
+
+    @ApiModelProperty(value = "好评优先0否1是")
+    private Integer hpyx;
+
+    @ApiModelProperty(value = "环境优先0否1是")
+    private Integer hjyx;
+
+    @ApiModelProperty(value = "服务优先0否1是")
+    private Integer fwyx;
+
+    @ApiModelProperty(value = "口味优先0否1是")
+    private Integer kwyx;
+
+    @ApiModelProperty(value = "美食筛选")
+    private String foodType;
+
 }

+ 2 - 2
alien-entity/src/main/java/shop/alien/mapper/StoreInfoMapper.java

@@ -93,6 +93,6 @@ public interface StoreInfoMapper extends BaseMapper<StoreInfo> {
     List<StoreInfo> getList(@Param(Constants.WRAPPER) LambdaQueryWrapper<StoreInfo> queryWrapper);
 
     @Select("select *," +
-            "            ROUND(ST_Distance_Sphere(ST_GeomFromText(CONCAT('POINT(', REPLACE(#{position}, ',', ' '), ')' )), ST_GeomFromText(CONCAT('POINT(', REPLACE(store_position, ',', ' '), ')' ))) / 1000, 2) AS dist from store_info ${ew.customSqlSegment}")
-    IPage<StoreInfo> getPageForDistance(@Param(Constants.WRAPPER) QueryWrapper<StoreInfo> queryWrapper, IPage<StoreInfo> page, @Param("position") String position);
+            "            ROUND(ST_Distance_Sphere(ST_GeomFromText(CONCAT('POINT(', REPLACE(#{position}, ',', ' '), ')' )), ST_GeomFromText(CONCAT('POINT(', REPLACE(store_position, ',', ' '), ')' ))) / 1000, 2) dist from store_info ${ew.customSqlSegment}")
+    IPage<StoreInfo> getPageForDistance(IPage<StoreInfo> page,@Param(Constants.WRAPPER) QueryWrapper<StoreInfo> queryWrapper,  @Param("position") String position);
 }

+ 11 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeCollectController.java

@@ -1,5 +1,6 @@
 package shop.alien.store.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -15,6 +16,7 @@ import shop.alien.entity.second.SecondGoods;
 import shop.alien.entity.store.LifeCollect;
 import shop.alien.entity.store.LifeCoupon;
 import shop.alien.entity.store.StoreImg;
+import shop.alien.entity.store.StoreInfo;
 import shop.alien.entity.store.vo.StoreInfoVo;
 import shop.alien.mapper.*;
 import shop.alien.mapper.second.SecondGoodsMapper;
@@ -215,6 +217,15 @@ public class LifeCollectController {
             lambdaUpdateWrapper.setSql("collect_count = collect_count + 1");
             secondGoodsMapper.update(null, lambdaUpdateWrapper);
         }
+
+        //同步店铺收藏数量
+        if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotEmpty(lifeCollect.getStoreId())) {
+            LambdaQueryWrapper<LifeCollect> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(LifeCollect::getStoreId, lifeCollect.getStoreId());
+            storeInfoMapper.update(null, new LambdaUpdateWrapper<StoreInfo>().eq(StoreInfo::getId, lifeCollect.getStoreId()).set(StoreInfo::getCollectNum, lifeCollectMapper.selectCount(queryWrapper)));
+        }
+
+
         if (num == 0) {
             return R.fail("收藏失败");
         }

+ 16 - 29
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -1391,9 +1391,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             throw new IllegalArgumentException("筛选参数不能为空");
         }
 
-        // 创建分页对象
-        IPage<StoreInfo> page = new Page<>(vo.getPageNum(), vo.getPageSize());
-
         // 获取筛选条件
         String screeningId = vo.getScreeningId();
         Double lon = vo.getLon();
@@ -1405,31 +1402,13 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         Double priceStr = vo.getPriceStr();
         Double priceEnd = vo.getPriceEnd();
 
-        String storeId = "";
-
-        /*// 验证经纬度和距离参数
-        if (flag != null && flag) {
-            if (lon == null || lat == null || distance == null) {
-                throw new IllegalArgumentException("启用距离筛选时,经纬度和距离参数不能为空");
-            }
-            if (distance <= 0) {
-                throw new IllegalArgumentException("距离参数必须大于0");
-            }
-        }
-
-        // 通过经纬度距离获取商家id
-        if (lat != null && lon != null && distance != null) {
-            List<NearMeDto> nearMeDtos = nearMeService.nearbyMerchants(lon, lat, distance, flag);
-            if (nearMeDtos != null && !nearMeDtos.isEmpty()) {
-                storeId = nearMeDtos.stream()
-                        .map(item -> String.valueOf(item.getConent()))
-                        .collect(Collectors.joining(","));
-            }
-        }*/
-
         if (lon == null || lat == null) {
             throw new IllegalArgumentException("经纬度参数不能为空");
         }
+        // 创建分页对象
+        IPage<StoreInfo> page = new Page<>(vo.getPageNum(), vo.getPageSize());
+
+        String storeId = "";
 
         // 通过筛选id获取商家id
         if (StringUtils.isNotEmpty(screeningId)) {
@@ -1448,7 +1427,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 
         // 通过商家id获取商家信息
         IPage<StoreInfo> storeInfoIPage = new Page<>();
-
+        QueryWrapper<StoreInfo> queryWrapper = new QueryWrapper<>();
         if (StringUtils.isNotEmpty(storeId)) {
             List<String> storeIds = Arrays.asList(storeId.split(","));
             if (StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)) {
@@ -1491,12 +1470,20 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
                         .collect(Collectors.toList());
             }
             if (!CollectionUtils.isEmpty(storeIds)) {
-                QueryWrapper<StoreInfo> queryWrapper = new QueryWrapper<>();
                 queryWrapper.in("id", storeIds);
-                queryWrapper.orderByAsc("dist");
-                storeInfoIPage = storeInfoMapper.getPageForDistance(queryWrapper, page, lon + "," + lat);
             }
         }
+
+        queryWrapper.like(StringUtils.isNotEmpty(vo.getFoodType()), "business_types_name", vo.getFoodType());
+        queryWrapper.like(StringUtils.isNotEmpty(vo.getStoreName()), "store_name", vo.getStoreName());
+
+        if (ObjectUtils.isNotEmpty(vo.getRqyx())) {
+            if (vo.getRqyx() == 1) {
+                queryWrapper.orderByDesc("collect_num");
+            }
+        }
+        queryWrapper.orderByAsc("dist");
+        storeInfoIPage = storeInfoMapper.getPageForDistance(page, queryWrapper, lon + "," + lat);
         return storeInfoIPage;
     }