From 347909bae241fff128b628ea6d12992d7e5b4b10 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Fri, 30 May 2025 18:35:43 +0800
Subject: [PATCH] 响应信息主体

---
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java |  135 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 135 insertions(+), 0 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java
new file mode 100644
index 0000000..f576684
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCategoryMerchantController.java
@@ -0,0 +1,135 @@
+package com.oying.modules.pc.store.rest;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNodeConfig;
+import cn.hutool.core.lang.tree.TreeUtil;
+import cn.hutool.core.util.BooleanUtil;
+import com.oying.annotation.Log;
+import com.oying.utils.R;
+import com.oying.modules.pc.store.domain.StoreCategory;
+import com.oying.modules.pc.store.domain.dto.*;
+import com.oying.modules.pc.store.service.StoreCategoryService;
+import com.oying.modules.pc.store.view.StoreCategoryMerchantView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author lzp
+ * @date 2025-04-24
+ **/
+@Api(tags = "店铺类目(商户端)")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/pc/merchant/store/{storeId}/category")
+public class StoreCategoryMerchantController {
+
+    private final StoreCategoryService storeCategoryService;
+
+    @GetMapping(value = "/list")
+    @ApiOperation("查询店铺类目")
+    //@PreAuthorize("@el.check('merchant:storeCategory:list')" +
+    //        " and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> getList(@PathVariable Long storeId,
+                                     @RequestParam(value = "recursive", required = false) Boolean recursive) {
+
+        StoreCategoryQueryCriteria criteria = new StoreCategoryQueryCriteria();
+        criteria.setStoreId(storeId);
+        List<StoreCategory> storeCategoryList = storeCategoryService.queryAll(criteria);
+        List<StoreCategoryMerchantView> viewList = Optional.ofNullable(storeCategoryList).orElse(ListUtil.empty()).stream().map(i -> {
+            StoreCategoryMerchantView view = new StoreCategoryMerchantView();
+            BeanUtils.copyProperties(i, view);
+            return view;
+        }).collect(Collectors.toList());
+
+        if (BooleanUtil.isFalse(recursive)) {
+            return ResponseEntity.ok(R.success(viewList));
+        }
+
+        TreeNodeConfig config = new TreeNodeConfig();
+        config.setIdKey("categoryId");
+        config.setWeightKey("sortWeight");
+        //config.setDeep(3);
+
+        List<Tree<Long>> tree = TreeUtil.build(viewList, 0L, config, (c, treeNode) -> {
+            treeNode.setId(c.getCategoryId());
+            treeNode.setParentId(c.getParentId());
+            treeNode.setName(c.getName());
+            treeNode.setWeight(c.getSortWeight());
+        });
+
+        return ResponseEntity.ok(R.success(tree));
+    }
+
+    @GetMapping(value = "/{categoryId}")
+    @ApiOperation("查询店铺类目")
+    //@PreAuthorize("@el.check('merchant:storeCategory:list')" +
+    //        " and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> getById(@PathVariable Long categoryId,
+                                     @RequestParam(value = "recursive", required = false) Boolean recursive) {
+
+        StoreCategory storeCategory = storeCategoryService.getById(categoryId);
+        StoreCategoryMerchantView view = new StoreCategoryMerchantView();
+        BeanUtils.copyProperties(storeCategory, view);
+
+        /*LambdaQueryWrapper<StoreCategory> wrapper = new LambdaQueryWrapper<StoreCategory>()
+                .eq(StoreCategory::getParentId, categoryId);
+        List<StoreCategory> subStoreCategoryList = storeCategoryService.list(wrapper);*/
+
+        return ResponseEntity.ok(R.success(view));
+    }
+
+    @PostMapping
+    @Log("新增店铺类目")
+    @ApiOperation("新增店铺类目")
+    //@PreAuthorize("@el.check('storeCategory:add')" +
+    //        " and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> createStoreCategory(@PathVariable Long storeId,
+                                                 @Validated @RequestBody StoreCategoryMerchantCreateRequest request) {
+
+        StoreCategory resources = new StoreCategory();
+        BeanUtils.copyProperties(request, resources);
+        resources.setStoreId(storeId);
+        storeCategoryService.create(resources);
+        return ResponseEntity.status(HttpStatus.CREATED).build();
+    }
+
+    @PutMapping(value = "/{categoryId}")
+    @Log("修改店铺类目")
+    @ApiOperation("修改店铺类目")
+    //@PreAuthorize("@el.check('storeCategory:edit')" +
+    //        " and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> updateStoreCategory(@PathVariable Long storeId,
+                                                 @PathVariable Long categoryId,
+                                                 @Validated @RequestBody StoreCategoryMerchantUpdateRequest request) {
+
+        StoreCategory resources = new StoreCategory();
+        BeanUtils.copyProperties(request, resources);
+        resources.setCategoryId(categoryId);
+        resources.setStoreId(storeId);
+        storeCategoryService.update(resources);
+        return ResponseEntity.noContent().build();
+    }
+
+    @DeleteMapping
+    @Log("删除店铺类目")
+    @ApiOperation("删除店铺类目")
+    @PreAuthorize("@el.check('storeCategory:del')" +
+            " and @storeMerchantOwnershipService.check(#storeId)")
+    public ResponseEntity<?> deleteStoreCategory(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        storeCategoryService.deleteAll(ids);
+        return ResponseEntity.noContent().build();
+    }
+}

--
Gitblit v1.9.3