package com.designhub.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.designhub.entity.*; import com.designhub.mapper.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; /** * 配置管理Service */ @Service @RequiredArgsConstructor public class ConfigService { private final DemandTypeMapper demandTypeMapper; private final BrandMapper brandMapper; private final PlatformMapper platformMapper; private final CategoryMapper categoryMapper; // ============ 需求类型管理 ============ /** * 获取所有需求类型(包括禁用的,用于管理页面)- 平铺列表 */ public List getAllDemandTypes() { List list = demandTypeMapper.selectList( new LambdaQueryWrapper() .orderByAsc(DemandType::getParentId) .orderByAsc(DemandType::getSortOrder) ); // 填充父分类名称 for (DemandType dt : list) { if (dt.getParentId() != null) { DemandType parent = demandTypeMapper.selectById(dt.getParentId()); if (parent != null) { dt.setParentName(parent.getName()); } } } return list; } /** * 获取所有需求类型(树形结构) */ public List getDemandTypesTree() { List allTypes = demandTypeMapper.selectList( new LambdaQueryWrapper() .orderByAsc(DemandType::getSortOrder) ); // 构建树形结构 return buildDemandTypeTree(allTypes); } /** * 获取所有大分类(parentId为null的) */ public List getParentDemandTypes() { return demandTypeMapper.selectList( new LambdaQueryWrapper() .isNull(DemandType::getParentId) .orderByAsc(DemandType::getSortOrder) ); } /** * 根据父ID获取子分类 */ public List getDemandTypesByParentId(Long parentId) { return demandTypeMapper.selectList( new LambdaQueryWrapper() .eq(DemandType::getParentId, parentId) .orderByAsc(DemandType::getSortOrder) ); } /** * 获取所有启用的需求类型(用于下拉选择)- 树形结构 */ public List getEnabledDemandTypes() { List allTypes = demandTypeMapper.selectList( new LambdaQueryWrapper() .eq(DemandType::getIsEnabled, 1) .orderByAsc(DemandType::getSortOrder) ); return buildDemandTypeTree(allTypes); } /** * 获取所有启用的需求类型(平铺列表,用于表单选择) */ public List getEnabledDemandTypesList() { List list = demandTypeMapper.selectList( new LambdaQueryWrapper() .eq(DemandType::getIsEnabled, 1) .orderByAsc(DemandType::getParentId) .orderByAsc(DemandType::getSortOrder) ); // 填充父分类名称 for (DemandType dt : list) { if (dt.getParentId() != null) { DemandType parent = demandTypeMapper.selectById(dt.getParentId()); if (parent != null) { dt.setParentName(parent.getName()); } } } return list; } /** * 构建需求类型树形结构 */ private List buildDemandTypeTree(List allTypes) { // 获取所有根节点(parentId为null) List roots = allTypes.stream() .filter(dt -> dt.getParentId() == null) .collect(java.util.stream.Collectors.toList()); // 为每个根节点填充子节点 for (DemandType root : roots) { List children = allTypes.stream() .filter(dt -> root.getId().equals(dt.getParentId())) .collect(java.util.stream.Collectors.toList()); root.setChildren(children); } return roots; } /** * 根据ID获取需求类型 */ public DemandType getDemandTypeById(Long id) { DemandType dt = demandTypeMapper.selectById(id); if (dt != null && dt.getParentId() != null) { DemandType parent = demandTypeMapper.selectById(dt.getParentId()); if (parent != null) { dt.setParentName(parent.getName()); } } return dt; } /** * 创建需求类型 */ public DemandType createDemandType(DemandType demandType) { demandTypeMapper.insert(demandType); return demandType; } /** * 更新需求类型 */ public boolean updateDemandType(DemandType demandType) { return demandTypeMapper.updateById(demandType) > 0; } /** * 删除需求类型(如果是大分类,同时删除所有子分类) */ public boolean deleteDemandType(Long id) { // 先删除所有子分类 demandTypeMapper.delete( new LambdaQueryWrapper() .eq(DemandType::getParentId, id) ); // 再删除自身 return demandTypeMapper.deleteById(id) > 0; } // ============ 品牌管理 ============ /** * 获取所有品牌(包括禁用的,用于管理页面) */ public List getAllBrands() { return brandMapper.selectList( new LambdaQueryWrapper() .orderByAsc(Brand::getSortOrder) ); } /** * 获取所有启用的品牌(用于下拉选择) */ public List getEnabledBrands() { return brandMapper.selectList( new LambdaQueryWrapper() .eq(Brand::getIsEnabled, 1) .orderByAsc(Brand::getSortOrder) ); } /** * 根据ID获取品牌 */ public Brand getBrandById(Long id) { return brandMapper.selectById(id); } /** * 创建品牌 */ public Brand createBrand(Brand brand) { brandMapper.insert(brand); return brand; } /** * 更新品牌 */ public boolean updateBrand(Brand brand) { return brandMapper.updateById(brand) > 0; } /** * 删除品牌 */ public boolean deleteBrand(Long id) { return brandMapper.deleteById(id) > 0; } // ============ 平台管理 ============ /** * 获取所有平台(包括禁用的,用于管理页面) */ public List getAllPlatforms() { return platformMapper.selectList( new LambdaQueryWrapper() .orderByAsc(Platform::getSortOrder) ); } /** * 获取所有启用的平台(用于下拉选择) */ public List getEnabledPlatforms() { return platformMapper.selectList( new LambdaQueryWrapper() .eq(Platform::getIsEnabled, 1) .orderByAsc(Platform::getSortOrder) ); } /** * 根据ID获取平台 */ public Platform getPlatformById(Long id) { return platformMapper.selectById(id); } /** * 创建平台 */ public Platform createPlatform(Platform platform) { platformMapper.insert(platform); return platform; } /** * 更新平台 */ public boolean updatePlatform(Platform platform) { return platformMapper.updateById(platform) > 0; } /** * 删除平台 */ public boolean deletePlatform(Long id) { return platformMapper.deleteById(id) > 0; } // ============ 类目管理 ============ /** * 获取所有叶子类目(包括禁用的,用于管理页面) */ public List getAllLeafCategories() { return categoryMapper.selectList( new LambdaQueryWrapper() .eq(Category::getIsLeaf, 1) .orderByAsc(Category::getSortOrder) ); } /** * 获取所有类目(包括禁用的,用于管理页面) */ public List getAllCategories() { return categoryMapper.selectList( new LambdaQueryWrapper() .orderByAsc(Category::getSortOrder) ); } /** * 获取所有启用的类目(树形结构) */ public List getEnabledCategories() { return categoryMapper.selectList( new LambdaQueryWrapper() .eq(Category::getIsEnabled, 1) .orderByAsc(Category::getSortOrder) ); } /** * 获取所有启用的叶子类目(用于下拉选择) */ public List getEnabledLeafCategories() { return categoryMapper.selectList( new LambdaQueryWrapper() .eq(Category::getIsEnabled, 1) .eq(Category::getIsLeaf, 1) .orderByAsc(Category::getSortOrder) ); } /** * 根据父ID获取子类目 */ public List getCategoriesByParentId(Long parentId) { return categoryMapper.selectList( new LambdaQueryWrapper() .eq(Category::getParentId, parentId) .eq(Category::getIsEnabled, 1) .orderByAsc(Category::getSortOrder) ); } /** * 根据ID获取类目 */ public Category getCategoryById(Long id) { return categoryMapper.selectById(id); } /** * 创建类目 */ public Category createCategory(Category category) { categoryMapper.insert(category); return category; } /** * 更新类目 */ public boolean updateCategory(Category category) { return categoryMapper.updateById(category) > 0; } /** * 删除类目 */ public boolean deleteCategory(Long id) { return categoryMapper.deleteById(id) > 0; } }