Jelajahi Sumber

新增用户端店铺详情接口

zhangchen 2 minggu lalu
induk
melakukan
8deb616a92

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreInfoVo.java

@@ -217,4 +217,7 @@ public class StoreInfoVo extends StoreInfo {
 
     @ApiModelProperty(value = "推荐列表距离(米)")
     private double distance3;
+
+    @ApiModelProperty(value = "店铺头图(多图列表)")
+    private List<String> storeAlbumUrlList;
 }

+ 6 - 5
alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java

@@ -792,12 +792,13 @@ public class StoreInfoController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "lon", value = "经度", dataType = "double", paramType = "query", required = true),
             @ApiImplicitParam(name = "lat", value = "纬度", dataType = "double", paramType = "query", required = true),
-            @ApiImplicitParam(name = "subcategory", value = "二级分类", dataType = "int", paramType = "query"),
-            @ApiImplicitParam(name = "threeLevelClassification", value = "三级分类", dataType = "int", paramType = "query")
+            @ApiImplicitParam(name = "category", value = "一级分类", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "subCategory", value = "二级分类", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "threeCategory", value = "二级分类", dataType = "int", paramType = "query")
     })
-    public R<List<StoreInfoVo>> getMoreRecommendedStores(Double lon , Double lat, int subcategory, int threeLevelClassification) {
-        log.info("StoreInfoController.getMoreRecommendedStores?lon={},lat={},subcategory={},threeLevelClassification={}", lon,lat, subcategory, threeLevelClassification);
-        return R.data(storeInfoService.getMoreRecommendedStores(lon,lat, subcategory, threeLevelClassification));
+    public R<List<StoreInfoVo>> getMoreRecommendedStores(Double lon , Double lat, int category, int subCategory, int threeCategory) {
+        log.info("StoreInfoController.getMoreRecommendedStores?lon={},lat={},category={},subCategory={}", lon,lat, subCategory, threeCategory);
+        return R.data(storeInfoService.getMoreRecommendedStores(lon,lat, category, subCategory, threeCategory));
 
     }
     /**

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/StoreInfoService.java

@@ -291,7 +291,7 @@ public interface StoreInfoService extends IService<StoreInfo> {
 
      * @return IPage<StoreInfoVo>
      */
-    List<StoreInfoVo> getMoreRecommendedStores(Double lon , Double lat, int subcategory, int threeLevelClassification);
+    List<StoreInfoVo> getMoreRecommendedStores(Double lon , Double lat, int category, int subcategory, int threeCategory);
 
 
     /**

+ 109 - 163
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -148,6 +148,8 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 
     private final RestTemplate restTemplate;
 
+    private final StoreImgService storeImgService;
+
     @Resource
     private StoreIncomeDetailsRecordService storeIncomeDetailsRecordService;
 
@@ -2894,7 +2896,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
      * @return IPage<StoreInfoVo>
      */
     @Override
-    public List<StoreInfoVo> getMoreRecommendedStores(Double lon , Double lat, int subcategory, int threeLevelClassification) {
+    public List<StoreInfoVo> getMoreRecommendedStores(Double lon , Double lat, int category, int subcategory, int threeCategory) {
         QueryWrapper<StoreInfoVo> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("a.delete_flag", 0).eq("b.delete_flag", 0).orderByDesc("a.created_time");
         //如果查询未过期
@@ -3121,41 +3123,41 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             result.setStoreUserName(storeUser.getName());
             result.setIdCard(storeUser.getIdCard());
         }
-        //存入执照图片地址
-        List<StoreImg> storeImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 14));
-        List<String> storeImgPaths = new ArrayList<>();
-        for (StoreImg storeImg : storeImgs) {
-            storeImgPaths.add(storeImg.getImgUrl());
-        }
-        result.setBusinessLicenseAddress(storeImgPaths);
-        //存入合同图片地址
-        List<StoreImg> storeContractImageImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 15));
-        List<String> storeContractImagePathImgs = new ArrayList<>();
-        for (StoreImg storeImg : storeContractImageImgs) {
-            storeContractImagePathImgs.add(storeImg.getImgUrl());
-        }
-        result.setContractImageList(storeContractImagePathImgs);
-        //存入续签合同地址
-        List<StoreImg> renewContractImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 22));
-        List<String> renewContractImagePathImgs = new ArrayList<>();
-        for (StoreImg storeImg : renewContractImgs) {
-            renewContractImagePathImgs.add(storeImg.getImgUrl());
-        }
-        result.setRenewContractImageList(renewContractImagePathImgs);
-        //存入经营许可证通过地址
-        List<StoreImg> foodLicenceImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 25));
-        List<String> foodLicenceImgsPathImgs = new ArrayList<>();
-        for (StoreImg storeImg : foodLicenceImgs) {
-            foodLicenceImgsPathImgs.add(storeImg.getImgUrl());
-        }
-        result.setFoodLicenceImageList(foodLicenceImgsPathImgs);
-        //存入经营许可证未通过地址
-        List<StoreImg> notPassFoodLicenceImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 24));
-        List<String> notPassFoodLicenceList = new ArrayList<>();
-        for (StoreImg storeImg : notPassFoodLicenceImgs) {
-            notPassFoodLicenceList.add(storeImg.getImgUrl());
-        }
-        result.setNotPassFoodLicenceImageList(notPassFoodLicenceList);
+//        //存入执照图片地址
+//        List<StoreImg> storeImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 14));
+//        List<String> storeImgPaths = new ArrayList<>();
+//        for (StoreImg storeImg : storeImgs) {
+//            storeImgPaths.add(storeImg.getImgUrl());
+//        }
+//        result.setBusinessLicenseAddress(storeImgPaths);
+//        //存入合同图片地址
+//        List<StoreImg> storeContractImageImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 15));
+//        List<String> storeContractImagePathImgs = new ArrayList<>();
+//        for (StoreImg storeImg : storeContractImageImgs) {
+//            storeContractImagePathImgs.add(storeImg.getImgUrl());
+//        }
+//        result.setContractImageList(storeContractImagePathImgs);
+//        //存入续签合同地址
+//        List<StoreImg> renewContractImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 22));
+//        List<String> renewContractImagePathImgs = new ArrayList<>();
+//        for (StoreImg storeImg : renewContractImgs) {
+//            renewContractImagePathImgs.add(storeImg.getImgUrl());
+//        }
+//        result.setRenewContractImageList(renewContractImagePathImgs);
+//        //存入经营许可证通过地址
+//        List<StoreImg> foodLicenceImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 25));
+//        List<String> foodLicenceImgsPathImgs = new ArrayList<>();
+//        for (StoreImg storeImg : foodLicenceImgs) {
+//            foodLicenceImgsPathImgs.add(storeImg.getImgUrl());
+//        }
+//        result.setFoodLicenceImageList(foodLicenceImgsPathImgs);
+//        //存入经营许可证未通过地址
+//        List<StoreImg> notPassFoodLicenceImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 24));
+//        List<String> notPassFoodLicenceList = new ArrayList<>();
+//        for (StoreImg storeImg : notPassFoodLicenceImgs) {
+//            notPassFoodLicenceList.add(storeImg.getImgUrl());
+//        }
+//        result.setNotPassFoodLicenceImageList(notPassFoodLicenceList);
         // 存放商家入口图
         List<StoreImg> storeEntranceImageImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 1));
         if (!storeEntranceImageImgs.isEmpty()) {
@@ -3171,6 +3173,15 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             result.setImgUrl("null");
         }
 
+        // 获取店铺相册
+        List<StoreImg> storeAlbumList =  storeImgService.getStoreImg(Integer.parseInt(storeId), 21);
+        if(!CollectionUtils.isEmpty(storeAlbumList)){
+            List<String> storeAlbumUrlList = storeAlbumList.stream().map(StoreImg::getImgUrl)  // 假设 StoreImg 有 getStoreUrl() 方法
+                    .filter(url -> url != null && !url.trim().isEmpty())  // 过滤空值
+                    .collect(Collectors.toList());
+            result.setStoreAlbumUrlList(storeAlbumUrlList);
+        }
+
         // 设置经纬度
         result.setStorePositionLongitude(result.getStorePosition().split(",")[0]);
         result.setStorePositionLatitude(result.getStorePosition().split(",")[1]);
@@ -3209,64 +3220,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         } else {
             result.setCollection(1);
         }
-        // 获取店铺代金券列表
-        LambdaUpdateWrapper<LifeCoupon> quanWrapper = new LambdaUpdateWrapper<>();
-        quanWrapper.eq(LifeCoupon::getStoreId, storeId).eq(LifeCoupon::getStatus, CouponStatusEnum.ONGOING.getCode()).eq(LifeCoupon::getType, 1);
-        List<LifeCoupon> quanList = lifeCouponMapper.selectList(quanWrapper);
-        List<LifeCouponVo> quanVoList = new ArrayList<>();
-        List<String> collect = quanList.stream().map(LifeCoupon::getId).collect(Collectors.toList());
-        // 设置已售数量
-        // 定义需要的订单状态集合
-        Set<Integer> excludeStatuses = new HashSet<>(Arrays.asList(
-                OrderStatusEnum.WAIT_PAY.getStatus(),
-                OrderStatusEnum.WAIT_USE.getStatus(),
-                OrderStatusEnum.USED.getStatus()
-        ));
-        if (!collect.isEmpty()) {
-            List<LifeUserOrderVo> quanCount = lifeUserOrderMapper.getQuanCount(new QueryWrapper<LifeUserOrderVo>()
-                    .eq("luo.store_id", storeId)
-                    .eq("luo.coupon_type", CouponTypeEnum.COUPON.getCode())
-                    .eq("luo.delete_flag", 0)
-                    .in("ocm.status", excludeStatuses)
-                    .groupBy("ocm.coupon_id"));
-            quanList.forEach(a -> {
-                LifeCouponVo lifeCouponVo = new LifeCouponVo();
-                BeanUtils.copyProperties(a, lifeCouponVo);
-                quanCount.forEach(item -> {
-                    if (a.getId().equals(item.getCouponId().toString())) {
-                        lifeCouponVo.setCount(item.getCount());
-                    }
-                });
-                quanVoList.add(lifeCouponVo);
-            });
-        }
-        result.setCouponList(quanVoList);
-
-        // 获取店铺团购
-        LambdaUpdateWrapper<LifeGroupBuyMain> tuangouWrapper = new LambdaUpdateWrapper<>();
-        tuangouWrapper.eq(LifeGroupBuyMain::getStoreId, storeId).eq(LifeGroupBuyMain::getStatus, CouponStatusEnum.ONGOING.getCode()).orderByDesc(LifeGroupBuyMain::getCreatedTime);
-        List<LifeGroupBuyMain> tuangouList = lifeGroupBuyMainMapper.selectList(tuangouWrapper);
-        List<LifeGroupBuyMainVo> tuangouVOList = new ArrayList<>();
-        for (LifeGroupBuyMain lifeGroupBuyMain : tuangouList) {
-            LifeGroupBuyMainVo lifeGroupBuyMainVo = new LifeGroupBuyMainVo();
-            BeanUtils.copyProperties(lifeGroupBuyMain, lifeGroupBuyMainVo);
-            if (StringUtils.isNotEmpty(lifeGroupBuyMain.getImageId())) {
-                List<String> ids = Arrays.stream(lifeGroupBuyMain.getImageId().split(",")).map(String::trim).collect(Collectors.toList());
-                List<StoreImg> imgList = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().in(StoreImg::getId, ids));
-                if (imgList != null) {
-                    String imgs = imgList.stream().map(StoreImg::getImgUrl).collect(Collectors.joining(","));
-                    lifeGroupBuyMainVo.setImageId(imgs);
-                }
-            }
-            tuangouVOList.add(lifeGroupBuyMainVo);
-        }
-        result.setTuangouList(tuangouVOList);
-
-        // 获取员工列表
-        LambdaQueryWrapper<StoreStaffConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(StoreStaffConfig::getStoreId, storeId);
-        List<StoreStaffConfig> storeStaffConfigs = storeStaffConfigMapper.selectList(lambdaQueryWrapper);
-        result.setEmployeeList(storeStaffConfigs);
 
         // 该用户的打卡记录
         LambdaQueryWrapper<StoreClockIn> clockInWrapper = new LambdaQueryWrapper<>();
@@ -3289,11 +3242,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             result.setClockInStoreToday(0);
         }
 
-        // 店铺平均分
-        /*Map<Object, List<Map<String, Object>>> avgScoreMap = storeEvaluationMapper.allStoreAvgScore().stream().collect(Collectors.groupingBy(o -> o.get("store_id")));
-        if (avgScoreMap.containsKey(String.valueOf(result.getId()))) {
-            result.setScore(Double.parseDouble(avgScoreMap.get(String.valueOf(result.getId())).get(0).get("avg_score").toString()));
-        }*/
 
         Map<String, Object> commitCountAndScore = storeCommentService.getCommitCountAndScore(null, 5, Integer.parseInt(storeId), null, null);
         result.setScore(Double.parseDouble(commitCountAndScore.get("score").toString()));
@@ -3307,77 +3255,75 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         int clockInNum = (int) clockInList.stream().map(StoreClockIn::getStoreId).distinct().count();
         result.setClockInNum(clockInNum);
 
-        // 获取店铺动态列表
-        QueryWrapper<LifeUserDynamics> dynamicsWrapper = new QueryWrapper<>();
-        dynamicsWrapper.eq("phone_id", "store_" + result.getStorePhone()).orderByDesc("lud.created_time");
-        dynamicsWrapper.eq("lud.delete_flag", 0);
-        //List<LifeUserDynamicsVo> storeDynamicslist = lifeUserDynamicsMapper.getStoreDynamicslist(userId, dynamicsWrapper);
-
-        LambdaQueryWrapper<LifeBlacklist> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper1.eq(LifeBlacklist :: getBlockerId, userId);
-        lambdaQueryWrapper1.eq(LifeBlacklist :: getBlockedPhoneId, "store_" + result.getStorePhone());
-        LifeBlacklist blacklist = lifeBlacklistMapper.selectOne(lambdaQueryWrapper1);
-        List<LifeUserDynamicsVo> storeDynamicslist = new ArrayList<>();
-
-        //判断没有拉黑当前门店账户 查出门店动态
-        if(blacklist == null){
-            storeDynamicslist = lifeUserDynamicsMapper.getStoreDynamicslist(userId, "store_" + result.getStorePhone());
-        }
-
-        List<String> followList = new ArrayList<>();
-        List<String> fansList = new ArrayList<>();
-
-        if (StringUtils.isNotEmpty(userId)) {
-            LifeUser lifeUser = lifeUserMapper.selectById(userId);
-            if (lifeUser != null && StringUtils.isNotEmpty(lifeUser.getUserPhone())) {
-                // 查询我的关注信息,构建关注者ID列表
-                LambdaQueryWrapper<LifeFans> lifeFansWrapper = new LambdaQueryWrapper<>();
-                lifeFansWrapper.eq(LifeFans::getFansId, "user_" + result.getStorePhone());
-                List<LifeFans> lifeFansList = lifeFansMapper.selectList(lifeFansWrapper);
-                if (!CollectionUtils.isEmpty(lifeFansList)) {
-                    followList = lifeFansList.stream().map(LifeFans::getFollowedId).collect(Collectors.toList());
-                }
-
-                // 查询我的粉丝信息,构建粉丝ID列表
-                lifeFansWrapper = new LambdaQueryWrapper<>();
-                lifeFansWrapper.eq(LifeFans::getFollowedId, "user_" + result.getStorePhone());
-                lifeFansList = lifeFansMapper.selectList(lifeFansWrapper);
-                if (!CollectionUtils.isEmpty(lifeFansList)) {
-                    fansList = lifeFansList.stream().map(LifeFans::getFansId).collect(Collectors.toList());
-                }
-            }
-        }
-
-        for (LifeUserDynamicsVo vo : storeDynamicslist) {
-            if (followList.contains(vo.getPhoneId())) {
-                vo.setIsFollowThis("1");
-            } else {
-                vo.setIsFollowThis("0");
-            }
-            if (fansList.contains(vo.getPhoneId())) {
-                vo.setIsFollowMe("1");
-            } else {
-                vo.setIsFollowMe("0");
-            }
-        }
-
-        // 返回动态最新的5条
-        List<LifeUserDynamicsVo> storeDynamicslist2 = storeDynamicslist.stream()
-                .limit(5).collect(Collectors.toList());
-        result.setDynamicsList(storeDynamicslist2);
-        //设置动态条数
-        Integer dynamicsNum = storeDynamicslist2.size();
-        result.setDynamicsNum(dynamicsNum);
+//        // 获取店铺动态列表
+//        QueryWrapper<LifeUserDynamics> dynamicsWrapper = new QueryWrapper<>();
+//        dynamicsWrapper.eq("phone_id", "store_" + result.getStorePhone()).orderByDesc("lud.created_time");
+//        dynamicsWrapper.eq("lud.delete_flag", 0);
+//
+//        LambdaQueryWrapper<LifeBlacklist> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+//        lambdaQueryWrapper1.eq(LifeBlacklist :: getBlockerId, userId);
+//        lambdaQueryWrapper1.eq(LifeBlacklist :: getBlockedPhoneId, "store_" + result.getStorePhone());
+//        LifeBlacklist blacklist = lifeBlacklistMapper.selectOne(lambdaQueryWrapper1);
+//        List<LifeUserDynamicsVo> storeDynamicslist = new ArrayList<>();
+
+//        //判断没有拉黑当前门店账户 查出门店动态
+//        if(blacklist == null){
+//            storeDynamicslist = lifeUserDynamicsMapper.getStoreDynamicslist(userId, "store_" + result.getStorePhone());
+//        }
+//
+//        List<String> followList = new ArrayList<>();
+//        List<String> fansList = new ArrayList<>();
+
+//        if (StringUtils.isNotEmpty(userId)) {
+//            LifeUser lifeUser = lifeUserMapper.selectById(userId);
+//            if (lifeUser != null && StringUtils.isNotEmpty(lifeUser.getUserPhone())) {
+//                // 查询我的关注信息,构建关注者ID列表
+//                LambdaQueryWrapper<LifeFans> lifeFansWrapper = new LambdaQueryWrapper<>();
+//                lifeFansWrapper.eq(LifeFans::getFansId, "user_" + result.getStorePhone());
+//                List<LifeFans> lifeFansList = lifeFansMapper.selectList(lifeFansWrapper);
+//                if (!CollectionUtils.isEmpty(lifeFansList)) {
+//                    followList = lifeFansList.stream().map(LifeFans::getFollowedId).collect(Collectors.toList());
+//                }
+//
+//                // 查询我的粉丝信息,构建粉丝ID列表
+//                lifeFansWrapper = new LambdaQueryWrapper<>();
+//                lifeFansWrapper.eq(LifeFans::getFollowedId, "user_" + result.getStorePhone());
+//                lifeFansList = lifeFansMapper.selectList(lifeFansWrapper);
+//                if (!CollectionUtils.isEmpty(lifeFansList)) {
+//                    fansList = lifeFansList.stream().map(LifeFans::getFansId).collect(Collectors.toList());
+//                }
+//            }
+//        }
 
-        // 获取店铺动态总数
-        result.setTotalDynamicsNum(storeDynamicslist.size());
+//        for (LifeUserDynamicsVo vo : storeDynamicslist) {
+//            if (followList.contains(vo.getPhoneId())) {
+//                vo.setIsFollowThis("1");
+//            } else {
+//                vo.setIsFollowThis("0");
+//            }
+//            if (fansList.contains(vo.getPhoneId())) {
+//                vo.setIsFollowMe("1");
+//            } else {
+//                vo.setIsFollowMe("0");
+//            }
+//        }
+
+//        // 返回动态最新的5条
+//        List<LifeUserDynamicsVo> storeDynamicslist2 = storeDynamicslist.stream()
+//                .limit(5).collect(Collectors.toList());
+//        result.setDynamicsList(storeDynamicslist2);
+//        //设置动态条数
+//        Integer dynamicsNum = storeDynamicslist2.size();
+//        result.setDynamicsNum(dynamicsNum);
+//
+//        // 获取店铺动态总数
+//        result.setTotalDynamicsNum(storeDynamicslist.size());
 
         //营业时间
         List<StoreBusinessInfo> storeBusinessInfos = storeBusinessInfoMapper.selectList(new LambdaQueryWrapper<StoreBusinessInfo>().eq(StoreBusinessInfo::getStoreId, storeId).eq(StoreBusinessInfo::getDeleteFlag, 0));
         if (ObjectUtils.isNotEmpty(storeBusinessInfos)) {
             result.setStoreBusinessInfo(storeBusinessInfos.get(0));
             result.setStoreBusinessInfos(storeBusinessInfos);
-            //StoreBusinessInfo storeBusinessInfo = result.getStoreBusinessInfo();
             StoreBusinessInfo storeBusinessInfo = result.getStoreBusinessInfos().stream().filter(item -> item.getBusinessType() == 1).findFirst().orElse(null);
             if (ObjectUtils.isNotEmpty(storeBusinessInfo)) {