浏览代码

feat:新增运动设施保存图片接口

penghao 1 周之前
父节点
当前提交
9badcee01d

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

@@ -21,6 +21,9 @@ public class SportsEquipmentFacilityCategoryVo implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(value = "门店ID")
+    private Integer storeId;
+
     @ApiModelProperty(value = "设施分类(1:有氧区, 2:力量区, 3:单功能机械区)")
     private Integer facilityCategory;
 

+ 18 - 0
alien-store/src/main/java/shop/alien/store/controller/SportsEquipmentFacilityController.java

@@ -190,5 +190,23 @@ public class SportsEquipmentFacilityController {
         log.info("SportsEquipmentFacilityController.getstoreCategorySummary?storeId={}", storeId);
         return R.data(facilityService.getstoreCategorySummary(storeId));
     }
+
+    @ApiOperation("保存分类下的实景图片(商户端)- 设施列表通过添加接口已保存,此接口仅保存图片")
+    @ApiOperationSupport(order = 10)
+    @PostMapping("/saveCategoryImages")
+    public R<Boolean> saveCategoryImages(@RequestBody SportsEquipmentFacilityCategoryVo vo) {
+        log.info("SportsEquipmentFacilityController.saveCategoryImages?storeId={},facilityCategory={},imageList={}", 
+                vo.getStoreId(), vo.getFacilityCategory(), vo.getImageList());
+        try {
+            boolean result = facilityService.saveCategoryImages(vo.getStoreId(), vo.getFacilityCategory(), vo.getImageList());
+            if (result) {
+                return R.success("保存成功");
+            }
+            return R.fail("保存失败");
+        } catch (Exception e) {
+            log.error("SportsEquipmentFacilityController.saveCategoryImages异常", e);
+            return R.fail(e.getMessage());
+        }
+    }
 }
 

+ 11 - 0
alien-store/src/main/java/shop/alien/store/service/SportsEquipmentFacilityService.java

@@ -82,5 +82,16 @@ public interface SportsEquipmentFacilityService extends IService<SportsEquipment
     SportsEquipmentFacilityVo getStoreDetail(Integer id);
 
     List<SportsEquipmentFacilityCategoryVo> getstoreCategorySummary(Integer storeId);
+
+    /**
+     * 保存分类下的图片
+     * 设施列表通过添加接口已保存,此接口仅保存该分类的实景图片
+     *
+     * @param storeId          门店ID
+     * @param facilityCategory 设施分类(1:有氧区, 2:力量区, 3:单功能机械区)
+     * @param imageList        图片列表
+     * @return boolean
+     */
+    boolean saveCategoryImages(Integer storeId, Integer facilityCategory, List<String> imageList);
 }
 

+ 30 - 0
alien-store/src/main/java/shop/alien/store/service/impl/SportsEquipmentFacilityServiceImpl.java

@@ -303,5 +303,35 @@ public class SportsEquipmentFacilityServiceImpl extends ServiceImpl<SportsEquipm
 
         return result;
     }
+
+    @Override
+    public boolean saveCategoryImages(Integer storeId, Integer facilityCategory, List<String> imageList) {
+        // 参数校验
+        if (storeId == null) {
+            throw new RuntimeException("门店ID不能为空");
+        }
+        if (facilityCategory == null) {
+            throw new RuntimeException("设施分类不能为空");
+        }
+
+        // 校验图片数量(最多20张)
+        if (!CollectionUtils.isEmpty(imageList) && imageList.size() > 20) {
+            throw new RuntimeException("实景图片最多上传20张");
+        }
+
+        // 1. 删除该分类下的旧图片
+        LambdaQueryWrapper<StoreImg> deleteImageWrapper = new LambdaQueryWrapper<>();
+        deleteImageWrapper.eq(StoreImg::getStoreId, storeId)
+                .eq(StoreImg::getBusinessId, facilityCategory)
+                .eq(StoreImg::getImgType, IMG_TYPE_SPORTS_EQUIPMENT);
+        storeImgMapper.delete(deleteImageWrapper);
+
+        // 2. 保存新图片(如果有)
+        if (!CollectionUtils.isEmpty(imageList)) {
+            saveImages(facilityCategory, storeId, imageList);
+        }
+
+        return true;
+    }
 }