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.modules.pc.store.domain.enums.StoreCategoryEnum;
|
import com.oying.utils.R;
|
import com.oying.modules.pc.store.domain.StoreCategory;
|
import com.oying.modules.pc.store.domain.dto.StoreCategoryQueryCriteria;
|
import com.oying.modules.pc.store.service.StoreCategoryService;
|
import com.oying.modules.pc.store.view.CustomerStoreCategoryView;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.http.ResponseEntity;
|
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/customer/store/{storeId}/category")
|
public class StoreCategoryCustomerController {
|
|
private final StoreCategoryService storeCategoryService;
|
|
@GetMapping(value = "/list")
|
@ApiOperation("查询店铺类目")
|
public ResponseEntity<?> getList(@PathVariable("storeId") Long storeId,
|
@RequestParam(value = "recursive", required = false) Boolean recursive) {
|
|
StoreCategoryQueryCriteria criteria = new StoreCategoryQueryCriteria();
|
criteria.setStoreId(storeId);
|
criteria.setActive(StoreCategoryEnum.YES.getValue());
|
List<StoreCategory> categoryList = storeCategoryService.queryAll(criteria);
|
|
List<CustomerStoreCategoryView> categoryViewList = Optional.ofNullable(categoryList).orElse(ListUtil.empty()).stream().map(i -> {
|
CustomerStoreCategoryView view = new CustomerStoreCategoryView();
|
view.setCategoryId(i.getCategoryId());
|
view.setParentId(i.getParentId());
|
view.setName(i.getName());
|
view.setSortWeight(i.getSortWeight());
|
return view;
|
}).collect(Collectors.toList());
|
|
if (BooleanUtil.isFalse(recursive)) {
|
return ResponseEntity.ok(R.success(categoryViewList));
|
}
|
|
TreeNodeConfig config = new TreeNodeConfig();
|
config.setIdKey("categoryId");
|
config.setWeightKey("sortWeight");
|
//config.setDeep(3);
|
|
List<Tree<Long>> tree = TreeUtil.build(categoryViewList, 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));
|
}
|
}
|