Browse Source

修改bug, 优化代码

ssk 3 weeks ago
parent
commit
e52d8220b8

+ 2 - 1
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeCouponVo.java

@@ -21,7 +21,6 @@ import java.util.List;
 @ApiModel(value = "LifeCouponVo对象", description = "套餐")
 public class LifeCouponVo extends LifeCoupon {
 
-
     @TableId(value = "id", type = IdType.AUTO)
     private String id;
 
@@ -571,4 +570,6 @@ public class LifeCouponVo extends LifeCoupon {
     private String imgs;
     @ApiModelProperty(value = "团购子表")
     private List<StoreGroupInfo> storeGroupInfos;
+
+    private Integer count;
 }

+ 1 - 1
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeUserDynamicsVo.java

@@ -32,7 +32,7 @@ public class LifeUserDynamicsVo extends LifeUserDynamics {
     private String isLike;
 
     @ApiModelProperty(value = "评论数量")
-    private long commentCount;
+    private Integer commentCount;
 
     @ApiModelProperty(value = "商家或用户id")
     private String storeOrUserId;

+ 2 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeUserOrderVo.java

@@ -57,6 +57,8 @@ public class LifeUserOrderVo {
 
     private Date refundTime;
 
+    private Integer count;
+
     @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
     @TableField("delete_flag")
     @TableLogic

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

@@ -135,7 +135,7 @@ public class StoreInfoVo extends StoreInfo {
     private Integer collection;
 
     @ApiModelProperty(value = "优惠券列表")
-    private List<LifeCoupon> couponList;
+    private List<LifeCouponVo> couponList;
 
     @ApiModelProperty(value = "优惠券列表")
     private List<LifeCouponVo> tuangouList;

+ 8 - 1
alien-entity/src/main/java/shop/alien/mapper/LifeUserOrderMapper.java

@@ -1,9 +1,13 @@
 package shop.alien.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import shop.alien.entity.store.LifeUserOrder;
+import shop.alien.entity.store.vo.LifeUserOrderVo;
 
 import java.util.List;
 import java.util.Map;
@@ -17,5 +21,8 @@ public interface LifeUserOrderMapper extends BaseMapper<LifeUserOrder> {
             "from life_user_order uorder \n" +
             "where uorder.status = '1' and uorder.delete_flag = 0\n" +
             "group by store_id")
-    List<Map<String,Object>> allStoreAvgPrice();
+    List<Map<String, Object>> allStoreAvgPrice();
+
+    @Select("SELECT quan_id quanId, count(id) count FROM life_user_order ${ew.customSqlSegment}")
+    List<LifeUserOrderVo> getQuanCount(@Param(Constants.WRAPPER) QueryWrapper<LifeUserOrderVo> queryWrapper);
 }

+ 50 - 9
alien-entity/src/main/java/shop/alien/mapper/StoreCommentMapper.java

@@ -13,6 +13,7 @@ import shop.alien.entity.store.vo.StoreCommentVo;
 import shop.alien.entity.store.vo.StoreCommitPercentVo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 评论表 Mapper 接口
@@ -41,13 +42,54 @@ public interface StoreCommentMapper extends BaseMapper<StoreComment> {
      */
     @Select("SELECT a.*, IF(INSTR( a.phone_id, 'user' ) > 0, b.user_name, c.store_name ) user_name, " +
             " IF(INSTR( a.phone_id, 'user' ) > 0, b.user_image, e.img_url ) user_image  FROM store_comment a "
-            + "left join life_user b on a.user_id = b.id and b.delete_flag =0 "
-            + "left join store_info c on a.store_id = c.id and c.delete_flag =0 "
-            + "left join store_user d on d.store_id = c.id and d.delete_flag =0 "
-            + "left join store_img e on d.store_id = e.id and e.delete_flag =0 ${ew.customSqlSegment}")
+            + "left join life_user b on a.user_id = b.id and b.delete_flag = 0 "
+            + "left join store_info c on a.store_id = c.id and c.delete_flag = 0 "
+            + "left join store_user d on d.store_id = c.id and d.delete_flag = 0 "
+            + "left join store_img e on a.store_id = e.store_id and e.img_type = 10 and e.delete_flag = 0 ${ew.customSqlSegment}")
     List<StoreCommentVo> getCommentList(@Param(Constants.WRAPPER) QueryWrapper<StoreCommentVo> queryWrapper);
 
     /**
+     * 评论数和评分
+     *
+     * @param businessId   业务id
+     * @param businessType 业务类型
+     * @param storeId      门店id
+     * @return Map<String, String>
+     */
+    @Select("SELECT SUM((SELECT count( id ) FROM store_comment WHERE business_type = #{businessType} AND reply_id IS NULL " +
+            "AND (#{businessId} IS NULL OR business_id = #{businessId}) AND (#{storeId} IS NULL OR store_id = #{storeId})) + " +
+            "(SELECT count( id ) FROM store_comment WHERE business_type = #{businessType} AND reply_id IN " +
+            "(SELECT id FROM store_comment WHERE business_type = #{businessType} AND reply_id IS NULL " +
+            "AND (#{businessId} IS NULL OR business_id = #{businessId})) AND (#{storeId} IS NULL OR store_id = #{storeId}))) AS count, " +
+            "(SELECT count( id ) FROM store_comment WHERE business_type = #{businessType} AND reply_id IS NULL " +
+            "AND (#{businessId} IS NULL OR business_id = #{businessId}) AND (#{storeId} IS NULL OR store_id = #{storeId})) AS rootCount, " +
+            "(SELECT IF(SUM( score ) ,SUM( score ) ,0) FROM store_comment WHERE business_type = #{businessType} " +
+            "AND reply_id IS NULL AND (#{businessId} IS NULL OR business_id = #{businessId}) AND (#{storeId} IS NULL OR store_id = #{storeId})) AS score")
+    Map<String, Object> getCommentCountAndScore(@Param("businessId") Integer businessId, @Param("businessType") Integer businessType, @Param("storeId") Integer storeId);
+
+    /**
+     * 根据业务id分组获取根评论
+     *
+     * @param businessType 业务类型
+     * @param storeId      门店id
+     * @return List<StoreCommentCountVo>
+     */
+    @Select("SELECT count( id ) commitCount, business_id as businessId, id FROM store_comment WHERE business_type = #{businessType} " +
+            "AND reply_id IS NULL AND (#{storeId} IS NULL OR store_id = #{storeId}) GROUP BY business_id")
+    List<StoreCommentVo> getRootCommitCount(@Param("businessType") Integer businessType, @Param("storeId") Integer storeId);
+
+    /**
+     * 根据回复id分组获取子评论
+     *
+     * @param businessType 业务类型
+     * @param storeId      门店id
+     * @return List<StoreCommentCountVo>
+     */
+    @Select("SELECT count( id ) commitCount, reply_id as replyId, id FROM store_comment WHERE business_type = #{businessType} " +
+            "AND reply_id IS NOT NULL AND (#{storeId} IS NULL OR store_id = #{storeId}) GROUP BY reply_id")
+    List<StoreCommentVo> getSonCommitCount(@Param("businessType") Integer businessType, @Param("storeId") Integer storeId);
+
+    /**
      * 评价分页查询
      *
      * @param page         分页参数
@@ -55,13 +97,12 @@ public interface StoreCommentMapper extends BaseMapper<StoreComment> {
      * @return IPage<StoreCommentVo>
      */
     @Select("SELECT a.*, COALESCE(b.user_name, c.store_name)  user_name, IF(a.user_id is null, e.img_url, b.user_image) user_image FROM store_comment a "
-            + "left join life_user b on a.user_id = b.id and b.delete_flag =0 "
-            + "left join store_info c on a.store_id = c.id and c.delete_flag =0 "
-            + "left join store_user d on d.store_id = c.id and d.delete_flag =0 "
-            + "left join store_img e on d.store_id = e.id and e.delete_flag =0 ${ew.customSqlSegment}")
+            + "left join life_user b on a.user_id = b.id and b.delete_flag = 0 "
+            + "left join store_info c on a.store_id = c.id and c.delete_flag = 0 "
+            + "left join store_user d on d.store_id = c.id and d.delete_flag = 0 "
+            + "left join store_img e on a.store_id = e.store_id and e.img_type = 10 and e.delete_flag = 0 ${ew.customSqlSegment}")
     IPage<StoreCommentVo> getCommentPage(IPage<StoreCommentVo> page, @Param(Constants.WRAPPER) QueryWrapper<StoreCommentVo> queryWrapper);
 
-
     /**
      * 获取评论相关数据
      *

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

@@ -67,7 +67,7 @@ public interface StoreInfoMapper extends BaseMapper<StoreInfo> {
             " where eval.store_id = a.id and eval.delete_flag = 0 " +
             ") score " +
             "from store_info a " +
-            "left join store_user b on a.id = b.store_id " +
+            "left join store_user b on a.id = b.store_id and a.delete_flag = 0 and b.delete_flag = 0 " +
             "left join store_img img on img.store_id = a.id and img.img_type = 1 and img.delete_flag = 0 " +
             "left join store_dictionary c on a.store_status = c.dict_id and c.type_name = 'storeState' and c.delete_flag = 0 " +
             "left join store_dictionary d on a.business_status = d.dict_id and d.type_name = 'businessStatus' and d.delete_flag = 0 " +

+ 1 - 2
alien-store/pom.xml

@@ -9,7 +9,7 @@
     </parent>
 
     <artifactId>alien-store</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>1.0.0</version>
     <name>alien-store</name>
     <description>爱丽恩二期项目</description>
 
@@ -329,5 +329,4 @@
             </plugin>
         </plugins>
     </build>
-
 </project>

+ 1 - 1
alien-store/src/main/java/shop/alien/store/controller/LifeUserDynamicsController.java

@@ -49,7 +49,7 @@ public class LifeUserDynamicsController {
                                                         @RequestParam(required = false) String type,
                                                         @RequestParam(required = false) String isfollowed,
                                                         @RequestParam(required = false) String phoneId) {
-        log.info("LifeUserDynamicsController.getUserDynamics?page={},size={},myself={},type={},isfollowed={},phoneId={}", page, size, myself, type, isfollowed, phoneId);
+        log.info("LifeUserDynamicsController.getUserDynamics?page={}&size={}&myself={}&type={}&isfollowed={}&phoneId={}", page, size, myself, type, isfollowed, phoneId);
         List<LifeUserDynamicsVo> stores = lifeUserDynamicsService.getUserDynamics(myself, type, isfollowed, phoneId);
         return R.data(ListToPage.setPage(stores, page, size));
     }

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

@@ -82,7 +82,7 @@ public class StoreInfoController {
     @ApiOperation("新增门店草稿")
     @ApiOperationSupport(order = 3)
     @PostMapping("/saveStoreInfoDraft")
-    public R<Boolean> saveStoreInfoDraft(@RequestBody StoreInfoDraft storeInfoDraft) throws Exception {
+    public R<Boolean> saveStoreInfoDraft(@RequestBody StoreInfoDraft storeInfoDraft) {
         log.info("StoreInfoController.saveStoreInfoDraft?storeInfoDraft={}", storeInfoDraft);
         int num = storeInfoService.saveStoreInfoDraft(storeInfoDraft);
         if (num > 0) {

+ 71 - 51
alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

@@ -14,6 +14,7 @@ import org.springframework.util.StringUtils;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.LifePinglunVo;
 import shop.alien.entity.store.vo.LifeUserDynamicsVo;
+import shop.alien.entity.store.vo.StoreCommentVo;
 import shop.alien.mapper.*;
 
 import java.util.*;
@@ -46,6 +47,8 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
 
     private final StoreImgMapper storeImgMapper;
 
+    private final StoreCommentMapper storeCommentMapper;
+
     public int addLiulanCount(String id) {
         LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.eq(LifeUserDynamics::getId, id);
@@ -99,44 +102,60 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         return lifePinglunVos.stream().collect(Collectors.groupingBy(LifePinglunVo::getHuifuId));
     }
 
+    //
+    // 生成用户动态信息
+    // 该方法用于获取并处理用户的动态数据,包括过滤、排序和设置相关状态信息
+    //
+    // 参数:
+    //   myself - "1"表示查询自己的动态,其他值表示非本人动态
+    //   type - 动态类型,为空时返回所有类型
+    //   isFollowed - "1"表示查询关注用户的动态
+    //   phoneId - 用户标识,用于关联粉丝、点赞和黑名单信息
+    // 返回值:
+    //   List<LifeUserDynamicsVo> - 处理后的用户动态列表,包含状态信息如是否关注、是否点赞等
+    //
     public List<LifeUserDynamicsVo> getUserDynamics(String myself, String type, String isFollowed, String phoneId) {
-        // 查询动态数据
+        // 查询动态数据并按类型过滤
         List<LifeUserDynamicsVo> lifeUserDynamicsVoList = lifeUserDynamicsMapper.getLifeUserDynamicsList();
         if (!StringUtils.isEmpty(type)) {
             lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream().filter(item -> type.equals(item.getType())).collect(Collectors.toList());
         }
 
-        // 查询我的关注
+        // 查询我的关注信息,构建关注者ID列表
         LambdaQueryWrapper<LifeFans> lifeFansWrapper = new LambdaQueryWrapper<>();
         lifeFansWrapper.eq(LifeFans::getFansId, phoneId);
         List<LifeFans> lifeFansList = lifeFansMapper.selectList(lifeFansWrapper);
         List<String> followList = lifeFansList.stream().map(LifeFans::getFollowedId).collect(Collectors.toList());
 
-        // 查询我的粉丝
+        // 查询我的粉丝信息,构建粉丝ID列表
         lifeFansWrapper = new LambdaQueryWrapper<>();
         lifeFansWrapper.eq(LifeFans::getFollowedId, phoneId);
         lifeFansList = lifeFansMapper.selectList(lifeFansWrapper);
         List<String> fansList = lifeFansList.stream().map(LifeFans::getFansId).collect(Collectors.toList());
 
-        // 查询我的点赞
+        // 查询我的点赞记录,构建点赞ID列表
         LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
         likeWrapper.eq(LifeLikeRecord::getDianzanId, phoneId);
         likeWrapper.eq(LifeLikeRecord::getType, "2");
         List<LifeLikeRecord> lifeLikeList = lifeLikeRecordMapper.selectList(likeWrapper);
         List<String> likeList = lifeLikeList.stream().map(LifeLikeRecord::getHuifuId).collect(Collectors.toList());
 
-        // 我自己的动态
+        // 根据myself参数过滤动态:自己或非本人动态
         if ("1".equals(myself)) {
             lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream().filter(item -> item.getPhoneId().equals(phoneId)).collect(Collectors.toList());
         } else {
             lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream().filter(item -> item.getDraft() == 0).collect(Collectors.toList());
         }
 
-        // 我的关注动态
+        // 如果isFollowed为"1",进一步过滤出关注用户的动态
         if ("1".equals(isFollowed)) {
             lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream().filter(item -> followList.contains(item.getPhoneId())).collect(Collectors.toList());
         }
 
+        List<StoreCommentVo> rootCommitCount = storeCommentMapper.getRootCommitCount(2, null);
+        List<StoreCommentVo> sonCommitCount = storeCommentMapper.getSonCommitCount(2, null);
+
+        // 设置动态对象的状态信息:是否关注对方、是否被关注、是否点赞及评论数量
         for (LifeUserDynamicsVo vo : lifeUserDynamicsVoList) {
             if (followList.contains(vo.getPhoneId())) {
                 vo.setIsFollowThis("1");
@@ -153,11 +172,23 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
             } else {
                 vo.setIsLike("0");
             }
-            vo.setCommentCount(Integer.parseInt(storeCommentService.getCommitCountAndScore(vo.getId(), 2, null).get("commitCount")));
+            List<StoreCommentVo> rootList = rootCommitCount.stream().filter(item -> Objects.equals(item.getBusinessId(), vo.getId())).collect(Collectors.toList());
+            if (rootList.isEmpty()) {
+                vo.setCommentCount(0);
+            } else {
+                Integer count = rootList.size();
+                for (StoreCommentVo storeCommentVo : rootList) {
+                    List<StoreCommentVo> sonList = sonCommitCount.stream().filter(item -> Objects.equals(item.getReplyId(), storeCommentVo.getId())).collect(Collectors.toList());
+                    if (!sonList.isEmpty()) {
+                        count += sonList.get(0).getCommitCount();
+                    }
+                }
+                vo.setCommentCount(count);
+            }
         }
 
+        // 如果phoneId不为空,处理黑名单逻辑,过滤掉被拉黑用户的动态
         if (!StringUtils.isEmpty(phoneId)) {
-            // 过滤被拉黑的用户动态
             // 通过phoneId查询userId
             LifeUser myLifeUser = new LifeUser();
             StoreUser myStoreUser = new StoreUser();
@@ -169,7 +200,7 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
                 myStoreUser = storeUserService.getUserByPhone(myselfStorePhone);
             }
 
-            //查询拉黑的对象
+            // 查询拉黑的对象
             LambdaQueryWrapper<LifeBlacklist> myLifeBlacklistWrapper = new LambdaQueryWrapper<>();
 
             if (null != myLifeUser.getId()) {
@@ -181,39 +212,29 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
             }
             List<LifeBlacklist> lifeBlacklists = lifeBlacklistMapper.selectList(myLifeBlacklistWrapper);
 
-
             // 按类型分组的黑名单用户ID映射(1: 商户, 2: 用户)
-            Map<String, Set<String>> blockedUserIdsByType = lifeBlacklists.stream()
-                    .collect(Collectors.groupingBy(
-                            LifeBlacklist::getBlockedType,
-                            Collectors.mapping(LifeBlacklist::getBlockedId, Collectors.toSet())
-                    ));
+            Map<String, Set<String>> blockedUserIdsByType = lifeBlacklists.stream().collect(Collectors.groupingBy(LifeBlacklist::getBlockedType, Collectors.mapping(LifeBlacklist::getBlockedId, Collectors.toSet())));
 
             // 过滤掉发布者在黑名单中的动态
-            lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream()
-                    .filter(dynamics -> {
-                        String blackPhoneId = dynamics.getPhoneId();
-                        String userId = dynamics.getStoreOrUserId();
-
-                        // 确定用户类型(根据phoneId前缀)
-                        String userType = blackPhoneId.startsWith("store") ? "1" :
-                                (blackPhoneId.startsWith("user") ? "2" : "0");
-
-                        // 如果无法识别类型或不在黑名单中,保留该动态
-                        if ("0".equals(userType) || !blockedUserIdsByType.containsKey(userType)) {
-                            return true;
-                        }
-
-                        // 检查用户是否在对应类型的黑名单中
-                        return !blockedUserIdsByType.get(userType).contains(userId);
-                    })
-                    .collect(Collectors.toList());
-        }
+            lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream().filter(dynamics -> {
+                String blackPhoneId = dynamics.getPhoneId();
+                String userId = dynamics.getStoreOrUserId();
 
+                // 确定用户类型(根据phoneId前缀)
+                String userType = blackPhoneId.startsWith("store") ? "1" : (blackPhoneId.startsWith("user") ? "2" : "0");
 
-        lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream()
-                .sorted(Comparator.comparing(LifeUserDynamicsVo::getCreatedTime).reversed())
-                .collect(Collectors.toList());
+                // 如果无法识别类型或不在黑名单中,保留该动态
+                if ("0".equals(userType) || !blockedUserIdsByType.containsKey(userType)) {
+                    return true;
+                }
+
+                // 检查用户是否在对应类型的黑名单中
+                return !blockedUserIdsByType.get(userType).contains(userId);
+            }).collect(Collectors.toList());
+        }
+
+        // 最后按照创建时间倒序排序
+        lifeUserDynamicsVoList = lifeUserDynamicsVoList.stream().sorted(Comparator.comparing(LifeUserDynamicsVo::getCreatedTime).reversed()).collect(Collectors.toList());
 
         return lifeUserDynamicsVoList;
     }
@@ -273,8 +294,7 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
 
         // 判断 targetPhone 是否在 fansList 中 1 已关注 0 未关注
         // 处理 fansList
-        fansList = lifeFansList.stream()
-                .map(LifeFans::getFansId)
+        fansList = lifeFansList.stream().map(LifeFans::getFansId)
 //                .map(id -> id.split("_")[id.split("_").length - 1])
                 .collect(Collectors.toList());
 
@@ -296,6 +316,15 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         LifeUser lifeUser = new LifeUser();
         StoreUser storeUser = new StoreUser();
 
+        String[] split = myselfPhoneId.split("_");
+//        if ("store".equals(split[0])) {
+//            // 添加商户用户头像
+//            StoreUser storeUserByPhone = storeUserService.getUserByPhone(split[1]);
+//            StoreImg storeImg = storeImgMapper.selectOne(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeUserByPhone.getId()).eq(StoreImg::getImgType, "10").eq(StoreImg::getDeleteFlag, "0"));
+//            if (storeImg != null) {
+//                resultMap.put("storeUserImg", storeImg.getImgUrl());
+//            }
+//        }
         if ("user".equals(phoneId.split("_")[0])) {
             String userPhone = phoneId.split("_")[1];
             lifeUser = lifeUserService.getUserByPhone(userPhone);
@@ -304,15 +333,9 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
             String storePhone = phoneId.split("_")[1];
             storeUser = storeUserService.getUserByPhone(storePhone);
             resultMap.put("storeUser", storeUser);
-            // 添加商户用户头像
-            StoreImg storeImg = storeImgMapper.selectOne(new LambdaQueryWrapper<StoreImg>()
-                    .eq(StoreImg::getStoreId, storeUser.getStoreId())
-                    .eq(StoreImg::getImgType, "10")
-                    .eq(StoreImg::getDeleteFlag, "0"));
-            if (storeImg != null) {
-                resultMap.put("storeUserImg", storeImg.getImgUrl());
-            }
         }
+
+
         //查询是否已拉黑
         LambdaQueryWrapper<LifeBlacklist> lifeBlacklistWrapper = new LambdaQueryWrapper<>();
 
@@ -365,10 +388,7 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
                 dynamicsVo.setIsLike("0");
             }
             // 根据store_comment 表 business_id 查询评论数量
-            int commentCount = storeCommentService.count(new QueryWrapper<StoreComment>()
-                    .eq("business_id", dynamicsVo.getId())
-                    .eq("delete_flag", "0")
-                    .eq("comment_type", "1"));
+            int commentCount = storeCommentService.count(new QueryWrapper<StoreComment>().eq("business_id", dynamicsVo.getId()).eq("delete_flag", "0").eq("comment_type", "1"));
             dynamicsVo.setCommentCount(commentCount);
             String phoneId1 = dynamicsVo.getPhoneId();
             String storeUserId = "";

+ 18 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java

@@ -292,6 +292,24 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             BigDecimal score = new BigDecimal(sumScore).divide(new BigDecimal(storeCommentVoList.size()), 2, BigDecimal.ROUND_HALF_UP);
             map.put("score", score.toString());
         }
+
+//        Map<String, Object> commentCountAndScore = storeCommentMapper.getCommentCountAndScore(businessId, businessType, storeId);
+//        Object scoreObj = commentCountAndScore.get("score");
+//        double scoreDouble = 0.0;
+//        if (scoreObj != null) {
+//            if (scoreObj instanceof Number) {
+//                scoreDouble = ((Number) scoreObj).doubleValue();
+//            } else if (scoreObj instanceof String) {
+//                scoreDouble = Double.parseDouble((String) scoreObj);
+//            }
+//        }
+//        if (scoreDouble == 0) {
+//            map.put("score", "0");
+//        } else {
+//            BigDecimal scoreBigDecimal = new BigDecimal(String.valueOf(scoreDouble)).divide(new BigDecimal(commentCountAndScore.get("rootCount").toString()), 2, BigDecimal.ROUND_HALF_UP);
+//            map.put("score", scoreBigDecimal.toString());
+//        }
+//        map.put("commitCount", commentCountAndScore.get("count").toString());
         return map;
     }
 

+ 47 - 13
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -31,6 +31,7 @@ import shop.alien.entity.store.vo.*;
 import shop.alien.mapper.*;
 import shop.alien.store.config.BaseRedisService;
 import shop.alien.store.config.GaoDeMapUtil;
+import shop.alien.store.service.LifeUserOrderService;
 import shop.alien.store.service.NearMeService;
 import shop.alien.store.service.StoreInfoService;
 import shop.alien.store.util.FileUploadUtil;
@@ -101,6 +102,8 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 
     private final StoreInfoDraftMapper storeInfoDraftMapper;
 
+    private final LifeUserOrderService lifeUserOrderService;
+
     @Value("${spring.web.resources.excel-path}")
     private String excelPath;
 
@@ -214,8 +217,7 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
                 .eq(StringUtils.isNotEmpty(businessSection), "a.business_section", businessSection)
                 .eq(StringUtils.isNotEmpty(storeStatus), "a.store_status", storeStatus)
                 .like(StringUtils.isNotEmpty(id), "a.id", id)
-                .eq("a.delete_flag", 0)
-                .eq("b.delete_flag", 0)
+                .in("a.business_status", Arrays.asList(0, 2))
                 .orderByDesc("a.created_time");
         //如果查询未过期
         // 获取当前时刻
@@ -548,15 +550,33 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
     @Override
     public int saveStoreInfoDraft(StoreInfoDraft storeInfoDraft) {
         //处理一下行政区域信息
-        EssentialCityCode essentialCityCode1 =
-                essentialCityCodeMapper.selectOne(new LambdaQueryWrapper<EssentialCityCode>().eq(EssentialCityCode::getAreaCode, storeInfoDraft.getAdministrativeRegionProvinceAdcode()));
-        storeInfoDraft.setAdministrativeRegionProvinceName(essentialCityCode1.getAreaName());
-        EssentialCityCode essentialCityCode2 =
-                essentialCityCodeMapper.selectOne(new LambdaQueryWrapper<EssentialCityCode>().eq(EssentialCityCode::getAreaCode, storeInfoDraft.getAdministrativeRegionCityAdcode()));
-        storeInfoDraft.setAdministrativeRegionCityName(essentialCityCode2.getAreaName());
-        EssentialCityCode essentialCityCode3 =
-                essentialCityCodeMapper.selectOne(new LambdaQueryWrapper<EssentialCityCode>().eq(EssentialCityCode::getAreaCode, storeInfoDraft.getAdministrativeRegionDistrictAdcode()));
-        storeInfoDraft.setAdministrativeRegionDistrictName(essentialCityCode3.getAreaName());
+        if (storeInfoDraft.getAdministrativeRegionProvinceAdcode() != null) {
+            EssentialCityCode essentialCityCode1 =
+                    essentialCityCodeMapper.selectOne(new LambdaQueryWrapper<EssentialCityCode>().eq(EssentialCityCode::getAreaCode, storeInfoDraft.getAdministrativeRegionProvinceAdcode()));
+            if (null != essentialCityCode1) {
+                storeInfoDraft.setAdministrativeRegionProvinceName(essentialCityCode1.getAreaName());
+            }
+        }
+        if (storeInfoDraft.getAdministrativeRegionCityAdcode() != null) {
+            EssentialCityCode essentialCityCode2 =
+                    essentialCityCodeMapper.selectOne(new LambdaQueryWrapper<EssentialCityCode>().eq(EssentialCityCode::getAreaCode, storeInfoDraft.getAdministrativeRegionCityAdcode()));
+            if (null != essentialCityCode2) {
+                storeInfoDraft.setAdministrativeRegionCityName(essentialCityCode2.getAreaName());
+            }
+        }
+        if (storeInfoDraft.getAdministrativeRegionDistrictAdcode() != null) {
+            EssentialCityCode essentialCityCode3 =
+                    essentialCityCodeMapper.selectOne(new LambdaQueryWrapper<EssentialCityCode>().eq(EssentialCityCode::getAreaCode, storeInfoDraft.getAdministrativeRegionDistrictAdcode()));
+            if (null != essentialCityCode3) {
+                storeInfoDraft.setAdministrativeRegionDistrictName(essentialCityCode3.getAreaName());
+            }
+        }
+        if (storeInfoDraft.getBusinessLicenseUrl().isEmpty()) {
+            storeInfoDraft.setBusinessLicenseUrl(null);
+        }
+        if (storeInfoDraft.getContractUrl().isEmpty()) {
+            storeInfoDraft.setContractUrl(null);
+        }
         return storeInfoDraftMapper.insert(storeInfoDraft);
     }
 
@@ -878,7 +898,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         LifeCollect shouCang = lifeCollectMapper.selectOne(shouCangWrapper);
         if (null == shouCang) {
             result.setCollection(0);
-        } else {
             result.setCollection(1);
         }
 
@@ -888,7 +907,22 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
                 .eq(LifeCoupon::getStatus, 1)
                 .eq(LifeCoupon::getType, 1);
         List<LifeCoupon> quanList = lifeCouponMapper.selectList(quanWrapper);
-        result.setCouponList(quanList);
+        List<LifeCouponVo> quanVoList = new ArrayList<>();
+        List<String> collect = quanList.stream().map(LifeCoupon::getId).collect(Collectors.toList());
+        if (!collect.isEmpty()) {
+            List<LifeUserOrderVo> quanCount = lifeUserOrderMapper.getQuanCount(new QueryWrapper<LifeUserOrderVo>().in("quan_id", collect).eq("delete_flag", 0).groupBy("quan_id"));
+            quanList.forEach(a -> {
+                LifeCouponVo lifeCouponVo = new LifeCouponVo();
+                BeanUtils.copyProperties(a, lifeCouponVo);
+                quanCount.forEach(item -> {
+                    if (a.getId().equals(item.getQuanId())) {
+                        lifeCouponVo.setCount(item.getCount());
+                    }
+                });
+                quanVoList.add(lifeCouponVo);
+            });
+        }
+        result.setCouponList(quanVoList);
 
         // 获取店铺团购
         LambdaUpdateWrapper<LifeCoupon> tuangouWrapper = new LambdaUpdateWrapper<>();

+ 17 - 17
pom.xml

@@ -344,24 +344,24 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <version>2.3.2.RELEASE</version>
-                <configuration>
-                    <fork>true</fork>
-                    <addResources>true</addResources>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>8</source>
-                    <target>8</target>
-                    <basedir/>
-                    <buildDirectory/>
-                    <mainOutputDirectory/>
-                    <outputDirectory/>
-                    <projectArtifact/>
-                </configuration>
+<!--                <configuration>-->
+<!--                    <fork>true</fork>-->
+<!--                    <addResources>true</addResources>-->
+<!--                </configuration>-->
             </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-compiler-plugin</artifactId>-->
+<!--                <configuration>-->
+<!--                    <source>8</source>-->
+<!--                    <target>8</target>-->
+<!--                    <basedir/>-->
+<!--                    <buildDirectory/>-->
+<!--                    <mainOutputDirectory/>-->
+<!--                    <outputDirectory/>-->
+<!--                    <projectArtifact/>-->
+<!--                </configuration>-->
+<!--            </plugin>-->
         </plugins>
     </build>
 </project>