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