From db9900074fa83021a7e3b1445eaf28ab56e675ab Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 17 四月 2025 08:41:30 +0800 Subject: [PATCH] add 分类管理 --- src/main/java/com/mzl/flower/domain/CategoryConfig.java | 15 +++ src/main/java/com/mzl/flower/service/customer/CategoryConfigServiceImpl.java | 67 ++++++++++++++++ src/main/java/com/mzl/flower/domain/CategoryConfigDO.java | 29 +++++++ src/main/java/com/mzl/flower/web/customer/CategoryConfigController.java | 27 ++++++ src/main/java/com/mzl/flower/domain/CategoryConfigSync.java | 15 +++ src/main/java/com/mzl/flower/mapper/CategoryConfigMapper.java | 27 ++++++ src/main/java/com/mzl/flower/service/customer/CategoryConfigService.java | 11 ++ 7 files changed, 191 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/mzl/flower/domain/CategoryConfig.java b/src/main/java/com/mzl/flower/domain/CategoryConfig.java new file mode 100644 index 0000000..846f6ba --- /dev/null +++ b/src/main/java/com/mzl/flower/domain/CategoryConfig.java @@ -0,0 +1,15 @@ +package com.mzl.flower.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CategoryConfig { + private Integer id; + private String name; + private Integer order; + private Boolean isEnabled; +} \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/domain/CategoryConfigDO.java b/src/main/java/com/mzl/flower/domain/CategoryConfigDO.java new file mode 100644 index 0000000..da23a1f --- /dev/null +++ b/src/main/java/com/mzl/flower/domain/CategoryConfigDO.java @@ -0,0 +1,29 @@ +package com.mzl.flower.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.mzl.flower.base.BaseAutoEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("category_config") +public class CategoryConfigDO extends BaseAutoEntity { + + @TableField("user_id") + private String userId; + + @TableField("category_id") + private Integer categoryId; + + private String name; + + @TableField("`order`") + private Integer order; + + @TableField("is_enabled") + private Boolean isEnabled; +} \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/domain/CategoryConfigSync.java b/src/main/java/com/mzl/flower/domain/CategoryConfigSync.java new file mode 100644 index 0000000..55c4398 --- /dev/null +++ b/src/main/java/com/mzl/flower/domain/CategoryConfigSync.java @@ -0,0 +1,15 @@ +package com.mzl.flower.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CategoryConfigSync { + private String userId; + private List<CategoryConfig> categories; +} \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/mapper/CategoryConfigMapper.java b/src/main/java/com/mzl/flower/mapper/CategoryConfigMapper.java new file mode 100644 index 0000000..7f6333f --- /dev/null +++ b/src/main/java/com/mzl/flower/mapper/CategoryConfigMapper.java @@ -0,0 +1,27 @@ +package com.mzl.flower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mzl.flower.domain.CategoryConfigDO; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CategoryConfigMapper extends BaseMapper<CategoryConfigDO> { + +// @Insert("INSERT INTO category_config( user_id, category_id, name, `order`, is_enabled) " + "VALUES( #{userId}, #{categoryId}, #{name}, #{order}, #{isEnabled})") +// void insert(CategoryConfigDO categoryConfigDO); +// +// @Update("UPDATE category_config SET name = #{name}, `order` = #{order}, " + "is_enabled = #{isEnabled} WHERE id = #{id}") +// void update(CategoryConfigDO categoryConfigDO); + +// @Select("SELECT * FROM category_config WHERE id = #{id}") +// CategoryConfigDO findById(Long id); + + @Select("SELECT * FROM category_config WHERE user_id = #{userId}") + List<CategoryConfigDO> findByUserId(String userId); + + @Delete("DELETE FROM category_config WHERE user_id = #{userId}") + void deleteByUserId(String userId); +} \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/service/customer/CategoryConfigService.java b/src/main/java/com/mzl/flower/service/customer/CategoryConfigService.java new file mode 100644 index 0000000..698bf18 --- /dev/null +++ b/src/main/java/com/mzl/flower/service/customer/CategoryConfigService.java @@ -0,0 +1,11 @@ +package com.mzl.flower.service.customer; + +import com.mzl.flower.domain.CategoryConfig; +import com.mzl.flower.domain.CategoryConfigSync; + +import java.util.List; + +public interface CategoryConfigService { + void saveOrUpdateCategoryConfig(CategoryConfigSync categoryConfigSync); + List<CategoryConfig> getCategoryConfigsByUserId(String userId); +} \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/service/customer/CategoryConfigServiceImpl.java b/src/main/java/com/mzl/flower/service/customer/CategoryConfigServiceImpl.java new file mode 100644 index 0000000..e6949b3 --- /dev/null +++ b/src/main/java/com/mzl/flower/service/customer/CategoryConfigServiceImpl.java @@ -0,0 +1,67 @@ +package com.mzl.flower.service.customer; + +import com.mzl.flower.domain.CategoryConfig; +import com.mzl.flower.domain.CategoryConfigDO; +import com.mzl.flower.domain.CategoryConfigSync; +import com.mzl.flower.mapper.CategoryConfigMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class CategoryConfigServiceImpl implements CategoryConfigService { + + @Autowired + private CategoryConfigMapper categoryConfigMapper; + + @Override + @Transactional + public void saveOrUpdateCategoryConfig(CategoryConfigSync categoryConfigSync) { + if (categoryConfigSync == null || categoryConfigSync.getUserId() == null) { + throw new IllegalArgumentException("用户ID不能为空"); + } + + // 先删除该用户之前的所有分类配置 + categoryConfigMapper.deleteByUserId(categoryConfigSync.getUserId()); + + // 然后插入新的分类配置 + if (categoryConfigSync.getCategories() != null && !categoryConfigSync.getCategories().isEmpty()) { + for (CategoryConfig clientCategory : categoryConfigSync.getCategories()) { + CategoryConfigDO dbCategory = new CategoryConfigDO(); + dbCategory.setUserId(categoryConfigSync.getUserId()); + dbCategory.setCategoryId(clientCategory.getId()); + dbCategory.setName(clientCategory.getName()); + dbCategory.setOrder(clientCategory.getOrder()); + dbCategory.setIsEnabled(clientCategory.getIsEnabled()); + categoryConfigMapper.insert(dbCategory); + } + } + } + + @Override + public List<CategoryConfig> getCategoryConfigsByUserId(String userId) { + if (userId == null) { + throw new IllegalArgumentException("用户ID不能为空"); + } + + List<CategoryConfigDO> dbCategories = categoryConfigMapper.findByUserId(userId); + if (dbCategories == null || dbCategories.isEmpty()) { + return new ArrayList<>(); + } + + List<CategoryConfig> clientCategories = new ArrayList<>(); + for (CategoryConfigDO dbCategory : dbCategories) { + CategoryConfig clientCategory = new CategoryConfig(); + clientCategory.setId(dbCategory.getCategoryId()); + clientCategory.setName(dbCategory.getName()); + clientCategory.setOrder(dbCategory.getOrder()); + clientCategory.setIsEnabled(dbCategory.getIsEnabled()); + clientCategories.add(clientCategory); + } + + return clientCategories; + } +} \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/web/customer/CategoryConfigController.java b/src/main/java/com/mzl/flower/web/customer/CategoryConfigController.java new file mode 100644 index 0000000..0551ab4 --- /dev/null +++ b/src/main/java/com/mzl/flower/web/customer/CategoryConfigController.java @@ -0,0 +1,27 @@ +package com.mzl.flower.web.customer; + +import com.mzl.flower.domain.CategoryConfig; +import com.mzl.flower.domain.CategoryConfigSync; +import com.mzl.flower.service.customer.CategoryConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/categoryConfig") +public class CategoryConfigController { + + @Autowired + private CategoryConfigService categoryConfigService; + + @PostMapping("/saveOrUpdate") + public void saveOrUpdateCategoryConfig(@RequestBody CategoryConfigSync categoryConfigSync) { + categoryConfigService.saveOrUpdateCategoryConfig(categoryConfigSync); + } + + @GetMapping("/getByUserId/{userId}") + public List<CategoryConfig> getCategoryConfigsByUserId(@PathVariable String userId) { + return categoryConfigService.getCategoryConfigsByUserId(userId); + } +} \ No newline at end of file -- Gitblit v1.9.3