Browse Source

代码优化

ldz 3 tháng trước cách đây
mục cha
commit
248a7b8e50

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

@@ -80,4 +80,8 @@ public class StoreImg extends Model<StoreImg> {
     @ApiModelProperty(value = "业务ID")
     @TableField("business_id")
     private Integer businessId;
+
+    @ApiModelProperty(value = "相册名称")
+    @TableField(exist = false)
+    private String albumName;
 }

+ 28 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreImgMapper.java

@@ -53,4 +53,32 @@ public interface StoreImgMapper extends BaseMapper<StoreImg> {
             "FROM store_img ${ew.customSqlSegment}")
     List<StoreImg> getByCover(@Param(Constants.WRAPPER) QueryWrapper<StoreImg> queryWrapper);
 
+    /**
+     * 通过连表查询获取官方相册图片列表(包含相册名称)
+     * 连接条件:store_img.business_id = store_official_album.id
+     *
+     * @param storeId 门店ID
+     * @param imgType 图片类型
+     * @param albumIds 相册ID列表
+     * @return 图片列表(包含相册名称)
+     */
+    @Select("<script>" +
+            "SELECT si.*, soa.album_name as albumName " +
+            "FROM store_img si " +
+            "LEFT JOIN store_official_album soa ON si.business_id = soa.id " +
+            "WHERE si.store_id = #{storeId} " +
+            "AND si.img_type = #{imgType} " +
+            "AND si.delete_flag = 0 " +
+            "<if test='albumIds != null and albumIds.size() > 0'>" +
+            "AND si.business_id IN " +
+            "<foreach collection='albumIds' item='albumId' open='(' separator=',' close=')'>" +
+            "#{albumId}" +
+            "</foreach>" +
+            "</if>" +
+            "ORDER BY si.img_sort ASC" +
+            "</script>")
+    List<StoreImg> selectOfficialAlbumImgWithName(@Param("storeId") Integer storeId,
+                                                   @Param("imgType") Integer imgType,
+                                                   @Param("albumIds") List<Integer> albumIds);
+
 }

+ 17 - 8
alien-store/src/main/java/shop/alien/store/service/impl/StoreOfficialAlbumServiceImpl.java

@@ -187,14 +187,23 @@ public class StoreOfficialAlbumServiceImpl extends ServiceImpl<StoreOfficialAlbu
             log.debug("查询到符合条件的相册数量:{},相册ID列表:{}", albumList.size(), albumIds);
 
             // 查询这些相册下的所有图片(imgType = 2 表示官方相册)
-            LambdaQueryWrapper<StoreImg> imgQueryWrapper = new LambdaQueryWrapper<>();
-            imgQueryWrapper.eq(StoreImg::getStoreId, storeId)
-                    .eq(StoreImg::getImgType, CommonConstant.STORE_IMG_ALBUM) // imgType = 2 表示官方相册
-                    .in(StoreImg::getBusinessId, albumIds) // business_id 关联到相册ID
-                    .eq(StoreImg::getDeleteFlag, CommonConstant.DELETE_FLAG_UNDELETE)
-                    .orderByAsc(StoreImg::getImgSort);
-
-            List<StoreImg> imgList = storeImgMapper.selectList(imgQueryWrapper);
+//            LambdaQueryWrapper<StoreImg> imgQueryWrapper = new LambdaQueryWrapper<>();
+//            imgQueryWrapper.eq(StoreImg::getStoreId, storeId)
+//                    .eq(StoreImg::getImgType, CommonConstant.STORE_IMG_ALBUM) // imgType = 2 表示官方相册
+//                    .in(StoreImg::getBusinessId, albumIds) // business_id 关联到相册ID
+//                    .eq(StoreImg::getDeleteFlag, CommonConstant.DELETE_FLAG_UNDELETE)
+//                    .orderByAsc(StoreImg::getImgSort);
+//
+//            List<StoreImg> imgList = storeImgMapper.selectList(imgQueryWrapper);
+
+            // 使用连表查询获取图片列表(包含相册名称)
+            // 连接条件:store_img.business_id = store_official_album.id
+            List<StoreImg> imgList = storeImgMapper.selectOfficialAlbumImgWithName(
+                    storeId,
+                    CommonConstant.STORE_IMG_ALBUM, // imgType = 2 表示官方相册
+                    albumIds
+            );
+
             // 构建返回结果
             StoreOfficialAlbumImgVo result = new StoreOfficialAlbumImgVo();
             result.setImgList(imgList);