From 8d2ee7f39032ed214db4a3c9f2d55f8037f132ae Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 21 五月 2024 17:11:58 +0800
Subject: [PATCH] 1.提交【管理后台】商品分类管理、商品香型管理、商品系列管理接口 2.提交 文件微服务华为云OBS文件上传接口

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java |   53 ++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeQuery.java     |   23 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/Order.java                                  |    8 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java                      |   24 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java            |   38 +++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryQuery.java       |   22 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java              |   43 +++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeDTO.java       |   27 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandDTO.java            |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryDTO.java         |   26 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesQuery.java         |   22 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java                 |    4 
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java                         |   49 ++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java   |   56 ++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java             |    3 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesDTO.java           |   27 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java     |   54 ++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java                    |   25 ++
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java                                  |   79 +++++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java                |   37 +++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java        |    3 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java                        |   26 ++
 22 files changed, 631 insertions(+), 20 deletions(-)

diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
index 45f86b0..acf6aaa 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
@@ -1,15 +1,20 @@
 package com.ruoyi.file.controller;
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.file.FileUtils;
+import com.ruoyi.file.service.ISysFileService;
+import com.ruoyi.file.utils.HuaWeiOBSUtil;
+import com.ruoyi.system.api.domain.SysFile;
+import io.swagger.annotations.ApiOperation;
+import java.util.ArrayList;
+import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestPart;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.file.FileUtils;
-import com.ruoyi.file.service.ISysFileService;
-import com.ruoyi.system.api.domain.SysFile;
 
 /**
  * 文件请求处理
@@ -45,4 +50,40 @@
             return R.fail(e.getMessage());
         }
     }
+
+    /**
+     * 文件上传请求
+     */
+    @ApiOperation(value = "obs文件上传", notes = "obs文件上传")
+    @PostMapping("/obs/upload")
+    public R<String> obsUpload(@RequestPart("file") MultipartFile file) {
+        try {
+            // 上传并返回访问地址
+            String url = HuaWeiOBSUtil.obsUpload(file);
+            return R.ok(url);
+        } catch (Exception e) {
+            log.error("上传文件失败", e);
+            return R.fail(e.getMessage());
+        }
+    }
+
+    /**
+     * 文件上传请求
+     */
+    @ApiOperation(value = "obs文件批量上传", notes = "obs文件批量上传")
+    @PostMapping("/obs/upload-batch")
+    public R<List<String>> obsUploadBatch(@RequestPart("file") MultipartFile[] file) {
+        List<String> urls = new ArrayList<>();
+        try {
+            for (MultipartFile multipartFile : file) {
+                String url = HuaWeiOBSUtil.obsUpload(multipartFile);
+                urls.add(url);
+            }
+            // 上传并返回访问地址
+            return R.ok(urls);
+        } catch (Exception e) {
+            log.error("上传文件失败", e);
+            return R.fail(e.getMessage());
+        }
+    }
 }
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java
new file mode 100644
index 0000000..13e5417
--- /dev/null
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java
@@ -0,0 +1,79 @@
+package com.ruoyi.file.utils;
+
+import com.obs.services.ObsClient;
+import com.obs.services.model.ObjectMetadata;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.UUID;
+import org.springframework.web.multipart.MultipartFile;
+
+public class HuaWeiOBSUtil {
+
+    //TODO 修改配置文件
+    //OBS图片访问域名
+    public static String endPoint = "obs.cn-southwest-2.myhuaweicloud.com";
+    public static String accessKeyId = "IZB26ZHC7C5MWIOH1TGE";
+    public static String accessKeySecret = "y5PXhFMDOHiPH0nnQMz4gkvA63oqKAC621zXzOPk";
+    public static String bucketName = "mimishejiao";
+    public static String oss_domain = "https://mimishejiao.obs.cn-southwest-2.myhuaweicloud.com/";
+
+    // 创建ObsClient实例
+    public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint);
+
+    public static String obsUpload(MultipartFile file)
+            throws IOException {
+        //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile;
+        String fileName = "";
+        if (file != null && !"".equals(file.getOriginalFilename())
+                && file.getOriginalFilename() != null) {
+            InputStream content = file.getInputStream();//获得指定文件的输入流
+            ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
+            meta.setContentLength(file.getSize());  // 必须设置ContentLength
+            String originalFilename = file.getOriginalFilename();
+            fileName =
+                    UUID.randomUUID().toString().replaceAll("-", "") + originalFilename.subSequence(
+                            originalFilename.lastIndexOf("."), originalFilename.length());
+            obsClient.putObject(bucketName, fileName, content, meta);// 上传Object.
+            if (fileName != null && !"".equals(fileName)) {
+                System.out.println(fileName);
+                fileName = oss_domain + fileName;
+            }
+        }
+        return fileName;
+    }
+
+    /**
+     * 删除某个Object
+     *
+     * @param bucketUrl
+     * @return
+     */
+    public static boolean deleteObject(String bucketUrl) {
+        try {
+            bucketUrl = bucketUrl.replace(oss_domain, "");
+            // 删除Object.
+            obsClient.deleteObject(bucketName, bucketUrl);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        } finally {
+//            obsClient.shutdown();
+        }
+        return true;
+    }
+
+//	 public static void createBucket(String bucketName)
+//     {
+//         //初始化 OSSClient
+////          ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
+//
+//         // 新建一个Bucket
+//         Bucket bucket = ossClient.createBucket(bucketName);
+//         System.out.println(bucket.getName());
+//         System.out.println(bucket.getCreationDate());
+//     }
+//
+//	 public static void main(String[] args) {
+//		 OssUploadUtil.createBucket("ssfdfsd");
+//	}
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandDTO.java
index b7185a3..4341d3e 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandDTO.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsBrandDTO.java
@@ -17,7 +17,7 @@
 
     private static final long serialVersionUID = -286811516688205647L;
 
-    @ApiModelProperty(value = "商品品牌标题id", notes = "更新必传,新增不传")
+    @ApiModelProperty(value = "商品品牌id", notes = "更新必传,新增不传")
     private Long id;
 
     @ApiModelProperty(value = "品牌名称")
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryDTO.java
new file mode 100644
index 0000000..44a30b0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryDTO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.goods.controller.mamagement.DTO;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/5/21
+ */
+@Data
+@ApiModel(value = "商品分类数据传输对象", description = "商品分类数据传输对象")
+public class GoodsCategoryDTO implements Serializable {
+
+    private static final long serialVersionUID = -340456108914762488L;
+    
+    @ApiModelProperty(value = "商品分类id", notes = "更新必传,新增不传")
+    private Long id;
+
+    @ApiModelProperty(value = "分类名称")
+    @NotBlank(message = "分类名称不能为空")
+    private String categoryName;
+
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryQuery.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryQuery.java
new file mode 100644
index 0000000..4090ea1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsCategoryQuery.java
@@ -0,0 +1,22 @@
+package com.ruoyi.goods.controller.mamagement.DTO;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/5/21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "商品分类查询对象", description = "商品分类查询对象")
+public class GoodsCategoryQuery extends BasePage {
+
+    private static final long serialVersionUID = 2265520959737199709L;
+
+    @ApiModelProperty(value = "分类名称")
+    private String categoryName;
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeDTO.java
new file mode 100644
index 0000000..3f04b38
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeDTO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.goods.controller.mamagement.DTO;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/5/20
+ */
+@Data
+@ApiModel(value = "商品香型传输对象", description = "商品香型数据传输对象")
+public class GoodsFlavorTypeDTO implements Serializable {
+
+
+    private static final long serialVersionUID = -286811516688205647L;
+
+    @ApiModelProperty(value = "商品香型id", notes = "更新必传,新增不传")
+    private Long id;
+
+    @ApiModelProperty(value = "香型名称")
+    @NotBlank(message = "香型名称不能为空")
+    private String flavorTypeName;
+
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeQuery.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeQuery.java
new file mode 100644
index 0000000..e2f4cb9
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsFlavorTypeQuery.java
@@ -0,0 +1,23 @@
+package com.ruoyi.goods.controller.mamagement.DTO;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/5/20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "商品香型查询对象", description = "商品香型查询对象")
+public class GoodsFlavorTypeQuery extends BasePage {
+
+
+    private static final long serialVersionUID = -196269784492900797L;
+    
+    @ApiModelProperty(value = "香型名称")
+    private String flavorTypeName;
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesDTO.java
new file mode 100644
index 0000000..0c4c0d3
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesDTO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.goods.controller.mamagement.DTO;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/5/20
+ */
+@Data
+@ApiModel(value = "商品系列数据传输对象", description = "商品系列数据传输对象")
+public class GoodsSeriesDTO implements Serializable {
+
+
+    private static final long serialVersionUID = -286811516688205647L;
+
+    @ApiModelProperty(value = "商品系列id", notes = "更新必传,新增不传")
+    private Long id;
+
+    @ApiModelProperty(value = "系列名称")
+    @NotBlank(message = "系列名称不能为空")
+    private String seriesName;
+
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesQuery.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesQuery.java
new file mode 100644
index 0000000..c038952
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/DTO/GoodsSeriesQuery.java
@@ -0,0 +1,22 @@
+package com.ruoyi.goods.controller.mamagement.DTO;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/5/21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "商品系列查询对象", description = "商品系列查询对象")
+public class GoodsSeriesQuery extends BasePage {
+
+    private static final long serialVersionUID = 2265520959737199709L;
+
+    @ApiModelProperty(value = "系列名称")
+    private String seriesName;
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java
index 0b26af1..72c5007 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsCategoryController.java
@@ -1,9 +1,21 @@
 package com.ruoyi.goods.controller.mamagement;
 
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryQuery;
+import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO;
+import com.ruoyi.goods.service.IGoodsCategoryService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -16,10 +28,50 @@
  * @since 2024-05-16
  */
 @Slf4j
-@RequiredArgsConstructor
-@Api(value = "管理后台商品分类相关接口", tags = {"管理后台接口"})
 @RestController
+@RequiredArgsConstructor
 @RequestMapping("/mgt/goods-category")
+@Api(value = "管理后台商品分类相关接口", tags = {"管理后台接口"})
 public class MgtGoodsCategoryController {
 
+    private final IGoodsCategoryService goodsCategoryService;
+
+    /**
+     * 获取商品分类列表的分页数据
+     *
+     * @param query 商品分类查询条件,通过RequestBody接收前端传来的查询参数。
+     * @return 返回一个包含商品分类分页数据的结果对象,其中数据部分为PageDTO<GoodsCategoryVO>类型。
+     */
+    @ApiOperation(value = " 获取商品分类列表的分页数据", notes = " 获取商品分类列表的分页数据")
+    @PostMapping("/page")
+    public R<PageDTO<GoodsCategoryVO>> getGoodsCategoryPage(
+            @Validated @RequestBody GoodsCategoryQuery query) {
+        return R.ok(goodsCategoryService.getGoodsCategoryPage(query));
+    }
+
+    /**
+     * 新增/编辑商品分类。 该接口用于接收前端发送的商品分类数据,通过商品分类数据传输对象(GoodsCategoryDTO)来新增或编辑商品分类信息。
+     *
+     * @param dto 商品分类数据传输对象,包含商品分类的详细信息,通过RequestBody接收。 使用@Validated注解进行参数验证,确保数据的完整性和正确性。
+     * @return 返回操作结果,使用R<Void>作为返回类型,其中R是自定义的结果封装类,Void表示操作不返回具体数据。 如果操作成功,返回R.ok(),表示操作成功。
+     */
+    @ApiOperation(value = "新增/编辑 商品分类", notes = "新增/编辑 商品分类")
+    @PostMapping("/save")
+    public R<Void> saveGoodsCategory(@Validated @RequestBody GoodsCategoryDTO dto) {
+        goodsCategoryService.saveGoodsCategory(dto);
+        return R.ok();
+    }
+
+    /**
+     * 删除商品分类
+     *
+     * @param id 商品分类的唯一标识符
+     * @return 返回操作结果,如果操作成功,则返回一个成功的标识
+     */
+    @ApiOperation(value = "删除商品分类", notes = "删除商品分类")
+    @DeleteMapping("/{id}")
+    public R<Void> deleteGoodsCategory(@Validated @PathVariable("id") Long id) {
+        goodsCategoryService.removeById(id);
+        return R.ok();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java
index 9c0a41d..3b46386 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsFlavorTypeController.java
@@ -1,9 +1,21 @@
 package com.ruoyi.goods.controller.mamagement;
 
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeQuery;
+import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO;
+import com.ruoyi.goods.service.IGoodsFlavorTypeService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -22,4 +34,45 @@
 @Api(value = "管理后台商品香型相关接口", tags = {"管理后台接口"})
 public class MgtGoodsFlavorTypeController {
 
+    private final IGoodsFlavorTypeService goodsFlavorTypeService;
+
+    /**
+     * 获取商品香型列表的分页数据
+     *
+     * @param query 商品香型查询条件,通过验证的请求体参数
+     * @return 返回商品香型列表的分页数据,封装在R对象中,其中PageDTO包含分页信息和香型数据列表
+     */
+    @ApiOperation(value = "获取商品香型列表的分页数据", notes = "获取商品香型列表的分页数据")
+    @PostMapping("/page")
+    public R<PageDTO<GoodsFlavorTypeVO>> getGoodsFlavorTypePage(
+            @Validated @RequestBody GoodsFlavorTypeQuery query) {
+        return R.ok(goodsFlavorTypeService.getGoodsFlavorTypePage(query));
+    }
+
+    /**
+     * 添加/编辑 商品香型
+     *
+     * @param dto 商品香型数据传输对象,通过验证的请求体参数
+     * @return 返回添加/编辑操作的结果,封装在R对象中
+     */
+    @ApiOperation(value = "添加/编辑 商品香型", notes = "添加/编辑 商品香型")
+    @PostMapping("/save")
+    public R<Void> saveGoodsFlavorType(@Validated @RequestBody GoodsFlavorTypeDTO dto) {
+        goodsFlavorTypeService.saveGoodsFlavorType(dto);
+        return R.ok();
+    }
+
+    /**
+     * 删除商品香型
+     *
+     * @param id 商品香型的ID,用于指定要删除的具体商品香型
+     * @return 返回操作结果,如果删除成功,则返回一个成功的响应码
+     */
+    @ApiOperation(value = "删除商品香型", notes = "删除商品香型")
+    @DeleteMapping("/{id}")
+    public R<Void> deleteGoodsFlavorType(@PathVariable("id") Long id) {
+        goodsFlavorTypeService.removeById(id);
+        return R.ok();
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java
index b7452d2..aec1815 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSeriesController.java
@@ -1,9 +1,21 @@
 package com.ruoyi.goods.controller.mamagement;
 
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesQuery;
+import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO;
+import com.ruoyi.goods.service.IGoodsSeriesService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -19,7 +31,47 @@
 @RestController
 @RequiredArgsConstructor
 @RequestMapping("/mgt/goods-series")
-@Api(value = "管理后台商品秒杀相关接口", tags = {"管理后台接口"})
+@Api(value = "管理后台商品系列相关接口", tags = {"管理后台接口"})
 public class MgtGoodsSeriesController {
 
+    private final IGoodsSeriesService goodsSeriesService;
+
+    /**
+     * 获取商品系列列表的分页数据
+     *
+     * @param query 商品系列查询条件,用于筛选和排序等操作
+     * @return 返回商品系列的分页数据,包含分页信息和商品系列列表
+     */
+    @ApiOperation(value = "获取商品系列列表的分页数据", notes = "获取商品系列列表的分页数据")
+    @PostMapping("/page")
+    public R<PageDTO<GoodsSeriesVO>> getGoodsSeriesPage(
+            @Validated @RequestBody GoodsSeriesQuery query) {
+        return R.ok(goodsSeriesService.getGoodsSeriesPage(query));
+    }
+
+    /**
+     * 新增/编辑商品系列。 该接口用于通过接收商品系列数据对象(GoodsSeriesDTO),来新增或编辑商品系列信息。
+     *
+     * @param dto 商品系列数据传输对象,包含商品系列的详细信息,通过RequestBody接收。 需要进行合法性验证(@Validated)以确保数据的完整性和正确性。
+     * @return R<Void> 返回一个结果对象,表示操作是否成功。如果操作成功,返回状态码200。
+     */
+    @ApiOperation(value = "新增/编辑 商品系列", notes = "新增/编辑 商品系列")
+    @PostMapping("/save")
+    public R<Void> saveGoodsSeries(@Validated @RequestBody GoodsSeriesDTO dto) {
+        goodsSeriesService.saveGoodsSeries(dto);
+        return R.ok();
+    }
+
+    /**
+     * 删除商品香型
+     *
+     * @param id 商品香型的ID,用于指定要删除的具体商品香型
+     * @return 返回操作结果,如果删除成功,则返回一个成功响应码
+     */
+    @ApiOperation(value = "删除商品香型", notes = "删除商品香型")
+    @DeleteMapping("/{id}")
+    public R<Void> deleteGoodsSeries(@PathVariable("id") Long id) {
+        goodsSeriesService.removeById(id);
+        return R.ok();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java
index d2c33ef..00945dc 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/mamagement/MgtGoodsSkuController.java
@@ -99,6 +99,7 @@
      *
      * @return R<List < GoodsFlavorTypeVO>> 包含商品香型列表的响应对象。
      */
+    @ApiOperation(value = "获取商品香型列表", notes = "获取商品香型列表")
     @GetMapping("/flavor/list")
     public R<List<GoodsFlavorTypeVO>> getGoodsFlavorTypeList() {
         return R.ok(goodsFlavorTypeService.getGoodsFlavorTypeList());
@@ -155,7 +156,7 @@
      * @param dto 包含需要更新状态的商品信息的数据传输对象,类型为 ListStatusDTO。
      * @return 返回一个表示操作结果的 R<Void> 对象,如果操作成功,则 R<Void>.ok() 方法返回一个成功标记。
      */
-    @ApiOperation(value = "下架/上架 商品")
+    @ApiOperation(value = "下架/上架 商品", notes = "下架/上架 商品")
     @PutMapping("/upd-status")
     public R<Void> updStatus(@RequestBody ListStatusDTO dto) {
         goodsSkuService.updStatus(dto);
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java
index 70f787e..25b281c 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsCategoryService.java
@@ -1,6 +1,9 @@
 package com.ruoyi.goods.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryQuery;
 import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO;
 import com.ruoyi.goods.domain.pojo.GoodsCategory;
 import java.util.List;
@@ -15,5 +18,26 @@
  */
 public interface IGoodsCategoryService extends IService<GoodsCategory> {
 
+    /**
+     * 获取商品类别列表。
+     * <p>此方法不接受任何参数,它会调用 {@code list()} 方法获取当前类别列表的副本,并将其转换为 {@code GoodsCategoryVO} 类型的列表后返回。</p>
+     *
+     * @return 返回一个 {@code List<GoodsCategoryVO>},包含当前商品类别的所有信息的副本。
+     */
     List<GoodsCategoryVO> getGoodsCategoryList();
+
+    /**
+     * 获取商品类别的分页信息
+     *
+     * @param query 查询条件,包含页码、页大小和分类名称
+     * @return 分页后的商品类别数据,包装在PageDTO中
+     */
+    PageDTO<GoodsCategoryVO> getGoodsCategoryPage(GoodsCategoryQuery query);
+
+    /**
+     * 保存或更新商品类别信息。
+     *
+     * @param dto 商品类别数据传输对象,包含商品类别的信息。 如果dto中的id为空,则认为是新纪录,执行保存操作; 如果id不为空,则认为是更新现有纪录。
+     */
+    void saveGoodsCategory(GoodsCategoryDTO dto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java
index 05d76d5..be9ef70 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsFlavorTypeService.java
@@ -1,6 +1,9 @@
 package com.ruoyi.goods.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeQuery;
 import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO;
 import com.ruoyi.goods.domain.pojo.GoodsFlavorType;
 import java.util.List;
@@ -15,5 +18,27 @@
  */
 public interface IGoodsFlavorTypeService extends IService<GoodsFlavorType> {
 
+    /**
+     * 获取商品口味类型的列表。
+     * <p>此方法通过调用 {@code list()} 方法获取原始列表,并使用 {@code BeanUtils.copyList} 方法将每个元素转换为
+     * {@code GoodsFlavorTypeVO} 类型,最终返回转换后的列表。</p>
+     *
+     * @return 返回一个 {@code List<GoodsFlavorTypeVO>},包含转换后的商品口味类型信息。
+     */
     List<GoodsFlavorTypeVO> getGoodsFlavorTypeList();
+
+    /**
+     * 获取商品口味类型分页数据
+     *
+     * @param query 查询条件,包含页码、页大小和口味类型名称等
+     * @return 返回口味类型分页数据传输对象(PageDTO),其中包含了分页信息和转换后的口味类型视图对象(GoodsFlavorTypeVO)列表
+     */
+    PageDTO<GoodsFlavorTypeVO> getGoodsFlavorTypePage(GoodsFlavorTypeQuery query);
+
+    /**
+     * 保存或更新商品口味类型信息。
+     *
+     * @param dto 商品口味类型数据传输对象,包含要保存或更新的信息。 如果dto中的id为空,则认为是新纪录,执行保存操作; 如果id不为空,则认为是更新现有纪录。
+     */
+    void saveGoodsFlavorType(GoodsFlavorTypeDTO dto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java
index 9b61f09..8a02677 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeriesService.java
@@ -1,6 +1,9 @@
 package com.ruoyi.goods.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesQuery;
 import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO;
 import com.ruoyi.goods.domain.pojo.GoodsSeries;
 import java.util.List;
@@ -15,5 +18,28 @@
  */
 public interface IGoodsSeriesService extends IService<GoodsSeries> {
 
+    /**
+     * 获取商品系列列表的视图对象。
+     *
+     * <p>此方法不接受任何参数,它会调用 {@code list()} 方法获取原始列表,
+     * 然后使用 {@code BeanUtils.copyList} 将这些实体转换为视图对象。</p>
+     *
+     * @return 返回一个 {@link List} 类型的商品系列视图对象列表。每个视图对象代表一个商品系列的简要信息。
+     */
     List<GoodsSeriesVO> getGoodsSeriesList();
+
+    /**
+     * 获取商品系列的分页信息
+     *
+     * @param query 包含分页参数和查询条件的查询对象
+     * @return 返回商品系列的分页数据传输对象(DTO),包含分页信息和商品系列列表
+     */
+    PageDTO<GoodsSeriesVO> getGoodsSeriesPage(GoodsSeriesQuery query);
+
+    /**
+     * 保存或更新商品系列信息。
+     *
+     * @param dto 商品系列数据传输对象,包含商品系列的详细信息。 如果商品系列ID为空,则视为新记录,进行保存; 如果商品系列ID不为空,则视为更新记录,进行更新。
+     */
+    void saveGoodsSeries(GoodsSeriesDTO dto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java
index c3356b1..5955dd4 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsBrandServiceImpl.java
@@ -51,7 +51,9 @@
                 .like(StringUtils.isNotEmpty(query.getBrandName()), GoodsBrand::getBrandName,
                         query.getBrandName())
                 .page(new Page<GoodsBrand>(query.getPageCurr(), query.getPageSize()));
-
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page.getTotal(), page.getPages());
+        }
         // 将查询结果转换为VO类的分页DTO
         return PageDTO.of(page, GoodsBrandVO.class);
     }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java
index 30ec1dd..fb7191b 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsCategoryServiceImpl.java
@@ -1,7 +1,12 @@
 package com.ruoyi.goods.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsCategoryQuery;
 import com.ruoyi.goods.controller.mamagement.VO.GoodsCategoryVO;
 import com.ruoyi.goods.domain.pojo.GoodsCategory;
 import com.ruoyi.goods.mapper.GoodsCategoryMapper;
@@ -21,10 +26,10 @@
 public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper, GoodsCategory> implements IGoodsCategoryService {
 
     /**
-     * 获取商品类别列表的副本。
-     * <p>此方法不接受任何参数,它会调用 {@code list()} 方法获取当前类别列表的副本,并将其转换为 {@code GoodsCategoryVO} 类型的列表后返回。</p>
+     * 获取商品类别列表。
+     * <p>此方法不接受任何参数,它会调用 {@code list()} 方法获取当前类别列表,并将其转换为 {@code GoodsCategoryVO} 类型的列表后返回。</p>
      *
-     * @return 返回一个 {@code List<GoodsCategoryVO>},包含当前商品类别的所有信息的副本。
+     * @return 返回一个 {@code List<GoodsCategoryVO>},包含当前商品类别的所有信息。
      */
     @Override
     public List<GoodsCategoryVO> getGoodsCategoryList() {
@@ -32,4 +37,36 @@
         return BeanUtils.copyList(this.list(), GoodsCategoryVO.class);
     }
 
+    /**
+     * 获取商品类别的分页信息
+     *
+     * @param query 查询条件,包含页码、页大小和分类名称
+     * @return 分页后的商品类别数据,包装在PageDTO中
+     */
+    @Override
+    public PageDTO<GoodsCategoryVO> getGoodsCategoryPage(GoodsCategoryQuery query) {
+        Page<GoodsCategory> page = this.lambdaQuery()
+                .like(StringUtils.isNotEmpty(query.getCategoryName()),
+                        GoodsCategory::getCategoryName, query.getCategoryName())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page.getTotal(), page.getPages());
+        }
+        return PageDTO.of(page, GoodsCategoryVO.class);
+    }
+
+    /**
+     * 保存或更新商品类别信息。
+     *
+     * @param dto 商品类别数据传输对象,包含商品类别的信息。 如果dto中的id为空,则认为是新纪录,执行保存操作; 如果id不为空,则认为是更新现有纪录。
+     */
+    @Override
+    public void saveGoodsCategory(GoodsCategoryDTO dto) {
+        GoodsCategory goodsCategory = BeanUtils.copyBean(dto, GoodsCategory.class);
+        if (StringUtils.isNull(dto.getId())) {
+            this.save(goodsCategory);
+        } else {
+            this.updateById(goodsCategory);
+        }
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java
index f869e76..c286b6d 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsFlavorTypeServiceImpl.java
@@ -1,7 +1,12 @@
 package com.ruoyi.goods.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsFlavorTypeQuery;
 import com.ruoyi.goods.controller.mamagement.VO.GoodsFlavorTypeVO;
 import com.ruoyi.goods.domain.pojo.GoodsFlavorType;
 import com.ruoyi.goods.mapper.GoodsFlavorTypeMapper;
@@ -31,4 +36,37 @@
     public List<GoodsFlavorTypeVO> getGoodsFlavorTypeList() {
         return BeanUtils.copyList(this.list(), GoodsFlavorTypeVO.class);
     }
+
+    /**
+     * 获取商品口味类型分页数据
+     *
+     * @param query 查询条件,包含页码、页大小和口味类型名称等
+     * @return 返回口味类型分页数据传输对象(PageDTO),其中包含了分页信息和转换后的口味类型视图对象(GoodsFlavorTypeVO)列表
+     */
+    @Override
+    public PageDTO<GoodsFlavorTypeVO> getGoodsFlavorTypePage(GoodsFlavorTypeQuery query) {
+        Page<GoodsFlavorType> page = this.lambdaQuery()
+                .like(StringUtils.isNotEmpty(query.getFlavorTypeName()),
+                        GoodsFlavorType::getFlavorTypeName, query.getFlavorTypeName())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page.getTotal(), page.getPages());
+        }
+        return PageDTO.of(page, GoodsFlavorTypeVO.class);
+    }
+
+    /**
+     * 保存或更新商品口味类型信息。
+     *
+     * @param dto 商品口味类型数据传输对象,包含要保存或更新的信息。 如果dto中的id为空,则认为是新纪录,执行保存操作; 如果id不为空,则认为是更新现有纪录。
+     */
+    @Override
+    public void saveGoodsFlavorType(GoodsFlavorTypeDTO dto) {
+        GoodsFlavorType goodsFlavorType = BeanUtils.copyBean(dto, GoodsFlavorType.class);
+        if (StringUtils.isNull(dto.getId())) {
+            this.save(goodsFlavorType);
+        } else {
+            this.updateById(goodsFlavorType);
+        }
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java
index b2a43dc..48a64d2 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsInfoTitleServiceImpl.java
@@ -37,6 +37,9 @@
                 .like(StringUtils.isNotEmpty(query.getTitleName()), GoodsInfoTitle::getTitleName,
                         query.getTitleName())
                 .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page.getTotal(), page.getPages());
+        }
         // 将查询结果转换为VO对象的分页DTO返回
         return PageDTO.of(page, GoodsInfoTitleVO.class);
     }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java
index 59d40a2..8dea9e6 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeriesServiceImpl.java
@@ -1,7 +1,12 @@
 package com.ruoyi.goods.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesDTO;
+import com.ruoyi.goods.controller.mamagement.DTO.GoodsSeriesQuery;
 import com.ruoyi.goods.controller.mamagement.VO.GoodsSeriesVO;
 import com.ruoyi.goods.domain.pojo.GoodsSeries;
 import com.ruoyi.goods.mapper.GoodsSeriesMapper;
@@ -34,4 +39,36 @@
         return BeanUtils.copyList(this.list(), GoodsSeriesVO.class);
     }
 
+    /**
+     * 获取商品系列的分页信息
+     *
+     * @param query 包含分页参数和查询条件的查询对象
+     * @return 返回商品系列的分页数据传输对象(DTO),包含分页信息和商品系列列表
+     */
+    @Override
+    public PageDTO<GoodsSeriesVO> getGoodsSeriesPage(GoodsSeriesQuery query) {
+        Page<GoodsSeries> page = this.lambdaQuery()
+                .like(StringUtils.isNotEmpty(query.getSeriesName()), GoodsSeries::getSeriesName,
+                        query.getSeriesName())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page.getTotal(), page.getPages());
+        }
+        return PageDTO.of(page, GoodsSeriesVO.class);
+    }
+
+    /**
+     * 保存或更新商品系列信息。
+     *
+     * @param dto 商品系列数据传输对象,包含商品系列的详细信息。 如果商品系列ID为空,则视为新记录,进行保存; 如果商品系列ID不为空,则视为更新记录,进行更新。
+     */
+    @Override
+    public void saveGoodsSeries(GoodsSeriesDTO dto) {
+        GoodsSeries goodsSeries = BeanUtils.copyBean(dto, GoodsSeries.class);
+        if (StringUtils.isNull(goodsSeries.getId())) {
+            this.save(goodsSeries);
+        } else {
+            this.updateById(goodsSeries);
+        }
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/Order.java
index 5316b96..b7fe899 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/Order.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/Order.java
@@ -54,13 +54,7 @@
 
     @ApiModelProperty(value = "会员id")
     private Long memberId;
-
-    @ApiModelProperty(value = "会员姓名")
-    private String memberName;
-
-    @ApiModelProperty(value = "联系方式")
-    private String phoneNumber;
-
+    
     @ApiModelProperty(value = "支付方式 1=微信 2=支付宝")
     private PaymentMethodEnum paymentMethod;
 

--
Gitblit v1.7.1