在電商平臺的后端系統(tǒng)中,品牌管理模塊是商品管理體系的核心組成部分,負責維護品牌信息、關聯(lián)商品分類、管理品牌資質等業(yè)務。該模塊通常涉及品牌信息的增刪改查、品牌與類目的綁定、品牌狀態(tài)管理、以及品牌相關文件(如商標注冊證、授權書)的上傳與管理等功能。
品牌管理的核心實體為 Brand,其數(shù)據(jù)庫表結構通常包含以下字段:
id:主鍵,唯一標識。name:品牌名稱,需唯一。logo_url:品牌Logo圖片的存儲地址。description:品牌描述。first_letter:品牌首字母,用于按字母排序或檢索。status:狀態(tài)(如:0-禁用,1-啟用)。sort_order:排序權重。is_hot:是否為熱門品牌。create_time:創(chuàng)建時間。update_time:更新時間。通常還需要一張關聯(lián)表 brand<em>category</em>relation 來處理品牌與商品類目的多對多關系。
典型的品牌管理后端代碼遵循分層架構:
Brand:對應數(shù)據(jù)庫表的實體類。BrandDTO / BrandVO:用于前后端數(shù)據(jù)傳輸?shù)囊晥D對象,可能包含關聯(lián)的類目ID列表等擴展信息。BrandQueryParam:用于封裝品牌列表查詢條件的參數(shù)對象。`java
// Controller示例
@RestController
@RequestMapping("/brand")
public class BrandController {
@Autowired
private BrandService brandService;
@GetMapping("/list")
public ApiResult
Page
return ApiResult.success(page);
}
}
// Service實現(xiàn)示例
@Service
public class BrandServiceImpl implements BrandService {
@Autowired
private BrandMapper brandMapper;
@Override
public Page
// 構建查詢條件(例如:根據(jù)名稱模糊查詢、狀態(tài)過濾)
LambdaQueryWrapper
wrapper.like(StringUtils.isNotBlank(param.getName()), Brand::getName, param.getName());
wrapper.eq(param.getStatus() != null, Brand::getStatus, param.getStatus());
wrapper.orderByAsc(Brand::getSortOrder);
// 分頁查詢
Page
// 轉換為VO,并可能填充關聯(lián)的類目信息
return brandPage.convert(this::convertToVO);
}
}`
創(chuàng)建品牌時,需處理品牌Logo文件上傳(通常通過獨立的文件服務接口),并維護品牌-類目關聯(lián)關系。
@PostMapping
public ApiResult<Long> createBrand(@Valid @RequestBody BrandCreateDTO createDTO) {
// 1. 校驗品牌名稱唯一性
if (brandService.checkNameExists(createDTO.getName())) {
throw new BusinessException("品牌名稱已存在");
}
// 2. DTO轉Entity,設置基礎信息
Brand brand = new Brand();
BeanUtils.copyProperties(createDTO, brand);
brand.setStatus(1); // 默認啟用
brand.setCreateTime(new Date());
// 3. 保存品牌基本信息
brandMapper.insert(brand);
// 4. 保存品牌與類目的關聯(lián)關系
if (CollectionUtils.isNotEmpty(createDTO.getCategoryIds())) {
brandCategoryRelationService.saveRelations(brand.getId(), createDTO.getCategoryIds());
}
return ApiResult.success(brand.getId());
}
更新操作需處理部分字段的更新,以及關聯(lián)類目的全量更新(先刪除舊關聯(lián),再插入新關聯(lián))。
刪除品牌前,需進行業(yè)務校驗,例如檢查是否有商品正在使用該品牌(存在外鍵關聯(lián))。通常采用邏輯刪除(update status = 0 或設置 deleted 標志位)而非物理刪除,以保證數(shù)據(jù)可追溯性。
@DeleteMapping("/{id}")
public ApiResult<Void> deleteBrand(@PathVariable Long id) {
// 1. 業(yè)務校驗:是否存在關聯(lián)商品
if (productService.countByBrandId(id) > 0) {
throw new BusinessException("該品牌下存在商品,無法刪除");
}
// 2. 邏輯刪除
Brand brand = new Brand();
brand.setId(id);
brand.setStatus(0); // 設置為禁用狀態(tài)
brand.setUpdateTime(new Date());
brandMapper.updateById(brand);
return ApiResult.success();
}
@Transactional 保證數(shù)據(jù)一致性。品牌管理后端代碼的設計需緊緊圍繞業(yè)務需求,確保數(shù)據(jù)的準確性、一致性和可維護性。通過清晰的分層架構、嚴謹?shù)臉I(yè)務校驗、合理的緩存策略以及完善的異常處理,可以構建出穩(wěn)定高效的品牌管理服務,為電商平臺的商品體系提供堅實的基礎支撐。
如若轉載,請注明出處:http://m.hankuntec.cn/product/26.html
更新時間:2026-06-01 11:17:17