From 9a30a3a8d3862a9b2ce898535b7cb51c3ddac816 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 20 五月 2026 16:01:11 +0800
Subject: [PATCH] refactor(controller): 将控制器响应结果统一为R类型并继承BaseController

---
 src/main/java/com/ruoyi/basic/controller/ProductController.java |   79 ++++++++++++++++++++++++++++++++-------
 1 files changed, 65 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/controller/ProductController.java b/src/main/java/com/ruoyi/basic/controller/ProductController.java
index 1909c08..5109662 100644
--- a/src/main/java/com/ruoyi/basic/controller/ProductController.java
+++ b/src/main/java/com/ruoyi/basic/controller/ProductController.java
@@ -1,20 +1,29 @@
 package com.ruoyi.basic.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.dto.ProductDto;
 import com.ruoyi.basic.dto.ProductModelDto;
+import com.ruoyi.basic.dto.ProductModelExportDto;
 import com.ruoyi.basic.dto.ProductTreeDto;
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.basic.service.IProductModelService;
 import com.ruoyi.basic.service.IProductService;
+import com.ruoyi.basic.vo.ProductModelVo;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
-import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.service.ISalesLedgerProductService;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
@@ -23,10 +32,8 @@
 public class ProductController extends BaseController {
 
     private IProductService productService;
-
     private IProductModelService productModelService;
-
-
+    private ISalesLedgerProductService salesLedgerProductService;
     /**
      * 鏌ヨ浜у搧
      */
@@ -48,8 +55,9 @@
      */
     @Log(title = "浜у搧", businessType = BusinessType.INSERT)
     @PostMapping("/addOrEditProduct")
-    public AjaxResult addOrEditProduct(@RequestBody ProductDto productDto) {
-        return toAjax(productService.addOrEditProduct(productDto));
+    public R<?> addOrEditProduct(@RequestBody ProductDto productDto) {
+        productService.addOrEditProduct(productDto);
+        return R.ok();
     }
 
     /**
@@ -57,8 +65,9 @@
      */
     @Log(title = "浜у搧瑙勬牸鍨嬪彿", businessType = BusinessType.INSERT)
     @PostMapping("/addOrEditProductModel")
-    public AjaxResult addOrEditProductModel(@RequestBody ProductModelDto productModelDto) {
-        return toAjax(productModelService.addOrEditProductModel(productModelDto));
+    public R<?> addOrEditProductModel(@RequestBody ProductModelDto productModelDto) {
+        productModelService.addOrEditProductModel(productModelDto);
+        return R.ok();
     }
 
     /**
@@ -66,11 +75,19 @@
      */
     @Log(title = "浜у搧", businessType = BusinessType.DELETE)
     @DeleteMapping("/delProduct")
-    public AjaxResult remove(@RequestBody Long[] ids) {
+    public R<?> remove(@RequestBody Long[] ids) {
         if (ids == null || ids.length == 0) {
-            return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+            return R.fail("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
         }
-        return toAjax(productService.delProductByIds(ids));
+        // 妫�鏌ユ槸鍚︽湁閿�鍞晢鍝佽褰曞叧鑱旇浜у搧
+        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(SalesLedgerProduct::getProductId, ids);
+        List<SalesLedgerProduct> salesLedgerProductList = salesLedgerProductService.list(queryWrapper);
+        if (salesLedgerProductList.size() > 0) {
+            return R.fail("璇ヤ骇鍝佸瓨鍦ㄩ攢鍞�/閲囪喘璁板綍锛屼笉鑳藉垹闄�");
+        }
+        productService.delProductByIds(ids);
+        return R.ok();
     }
 
     /**
@@ -78,11 +95,19 @@
      */
     @Log(title = "浜у搧瑙勬牸鍨嬪彿", businessType = BusinessType.DELETE)
     @DeleteMapping("/delProductModel")
-    public AjaxResult delProductModel(@RequestBody Long[] ids) {
+    public R<?> delProductModel(@RequestBody Long[] ids) {
         if (ids == null || ids.length == 0) {
-            return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+            return R.fail("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
         }
-        return toAjax(productModelService.delProductModel(ids));
+        // 妫�鏌ユ槸鍚︽湁閿�鍞晢鍝佽褰曞叧鑱旇浜у搧瑙勬牸鍨嬪彿
+        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(SalesLedgerProduct::getProductModelId, ids);
+        List<SalesLedgerProduct> salesLedgerProductList = salesLedgerProductService.list(queryWrapper);
+        if (salesLedgerProductList.size() > 0) {
+            return R.fail("璇ヤ骇鍝佽鏍煎瀷鍙峰瓨鍦ㄩ攢鍞�/閲囪喘璁板綍锛屼笉鑳藉垹闄�");
+        }
+        productModelService.delProductModel(ids);
+        return R.ok();
     }
 
     /**
@@ -92,4 +117,30 @@
     public IPage<ProductModel> selectModelListPage(Page page, ProductDto productDto) {
         return productModelService.modelListPage(page, productDto);
     }
+
+    @Operation(summary = "鍒嗛〉鏌ヨ鎵�鏈変骇鍝佸瀷鍙�")
+    @GetMapping("/pageModel")
+    public IPage<ProductModelVo> listPageProductModel(Page<ProductModelVo> page, ProductModel productModel) {
+        return productService.listPageProductModel(page, productModel);
+    }
+
+    /**
+     * 瀵煎叆浜у搧
+     */
+    @PostMapping("/import")
+    @Log(title = "瀵煎叆浜у搧", businessType = BusinessType.IMPORT)
+    public R<?> importProductModel(@RequestParam("file") MultipartFile file, Integer productId) {
+        return productModelService.importProductModel(file, productId);
+    }
+
+    /**
+     * 浜у搧瀵煎叆妯℃澘
+     */
+    @GetMapping("/export")
+    @Operation(summary = "浜у搧瀵煎叆妯℃澘")
+    @Log(title = "浜у搧瀵煎叆妯℃澘", businessType = BusinessType.EXPORT)
+    public void importProduct(HttpServletResponse response) {
+        ExcelUtil<ProductModelExportDto> excelUtil = new ExcelUtil<>(ProductModelExportDto.class);
+        excelUtil.importTemplateExcel(response, "浜у搧瑙勬牸瀵煎叆妯℃澘");
+    }
 }

--
Gitblit v1.9.3