package com.qlm.controller.jinzai; import cn.hutool.core.collection.CollUtil; import com.jfinal.aop.Clear; import com.jfinal.kit.HttpKit; import com.qlm.annotation.RequestUrl; import com.qlm.common.ApiResponse; import com.qlm.controller.common.CommonController; import com.qlm.dto.ItemExportDto; import com.qlm.dto.ProductDto; import com.qlm.dto.ProductExportDto; import com.qlm.oss.OssUtil; import com.qlm.service.IProductService; import com.qlm.service.impl.ProductServiceImpl; import com.qlm.tools.EasyExcelUtil; import com.qlm.tools.WxUtil; import com.alibaba.fastjson.JSON; import com.qlm.view.core.AdminView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.InputStream; import java.net.URLEncoder; import java.util.List; /** * @author wuyingjianwu * @date 2025/xx/xx * 产品信息管理 */ @RequestUrl("/productNew") public class ProductNewController extends CommonController { private static final Logger logger = LoggerFactory.getLogger(ProductNewController.class); private final IProductService productService = new ProductServiceImpl(); public void getProductList() { renderJsp("/page/jinzai/productList.jsp"); } /** * 保存产品信息 */ @Override public void save() { AdminView loginUser = getLoginUser(); ApiResponse apiResponse; try { // 使用HttpKit.readData获取请求Body String bodyData = HttpKit.readData(getRequest()); // 将JSON字符串转换为ProductDto对象 ProductDto productDto = JSON.parseObject(bodyData, ProductDto.class); // 数据验证 if (WxUtil.isNull(productDto.getProductName())) { apiResponse = ApiResponse.error("产品名称不能为空"); renderJson(apiResponse); return; } if (WxUtil.isNull(productDto.getProductNo())) { apiResponse = ApiResponse.error("产品编号不能为空"); renderJson(apiResponse); return; } if (productDto.getProductType() == null) { apiResponse = ApiResponse.error("产品分类不能为空"); renderJson(apiResponse); return; } // 调用Service层保存数据 apiResponse = productService.saveProduct(productDto,loginUser); } catch (Exception e) { logger.error("保存产品信息异常:", e); apiResponse = ApiResponse.error("系统异常:" + e.getMessage()); } renderJson(apiResponse); } /** * 更新产品信息 */ public void update() { AdminView loginUser = getLoginUser(); ApiResponse apiResponse; try { String bodyData = HttpKit.readData(getRequest()); ProductDto productDto = JSON.parseObject(bodyData, ProductDto.class); if (productDto.getId() == null) { apiResponse = ApiResponse.error("产品ID不能为空"); renderJson(apiResponse); return; } apiResponse = productService.updateProduct(productDto,loginUser); } catch (Exception e) { logger.error("更新产品信息异常:", e); apiResponse = ApiResponse.error("系统异常:" + e.getMessage()); } renderJson(apiResponse); } /** * 删除产品信息 */ public void delete() { ApiResponse apiResponse; try { Long id = getParaToLong("id"); if (id == null) { apiResponse = ApiResponse.error("产品ID不能为空"); renderJson(apiResponse); return; } apiResponse = productService.deleteProduct(id); } catch (Exception e) { logger.error("删除产品信息异常:", e); apiResponse = ApiResponse.error("系统异常:" + e.getMessage()); } renderJson(apiResponse); } /** * 根据ID获取产品信息 */ @Override public void getById() { ApiResponse apiResponse; try { Long id = getParaToLong("id"); if (id == null) { apiResponse = ApiResponse.error("产品ID不能为空"); renderJson(apiResponse); return; } apiResponse = productService.getProductById(id); } catch (Exception e) { logger.error("获取产品信息异常:", e); apiResponse = ApiResponse.error("系统异常:" + e.getMessage()); } renderJson(apiResponse); } /** * 产品列表查询 */ @Override public void list() { try { // 获取分页参数 int pageNumber = getParaToInt("pageNumber", 1); int pageSize = getParaToInt("pageSize", 10); // 获取查询条件 String productName = getPara("productName"); Integer productType = getParaToInt("categoryId"); Integer status = getParaToInt("status"); Integer brandId = getParaToInt("brandId"); // 调用Service层查询列表 renderJson(productService.listProducts(pageNumber, pageSize, productName, productType, status, brandId)); } catch (Exception e) { logger.error("查询产品列表异常:", e); renderJson(ApiResponse.error("系统异常:" + e.getMessage())); } } /** * 获取产品分类列表(用于下拉选择) */ public void getProductTypeList() { try { ApiResponse apiResponse = productService.getAllProductTypes(); renderJson(apiResponse); } catch (Exception e) { logger.error("获取产品分类列表异常:", e); renderJson(ApiResponse.error("系统异常:" + e.getMessage())); } } /** * 获取品牌列表(用于下拉选择) */ public void getBrandList() { try { ApiResponse apiResponse = productService.getAllBrands(); renderJson(apiResponse); } catch (Exception e) { logger.error("获取品牌列表异常:", e); renderJson(ApiResponse.error("系统异常:" + e.getMessage())); } } /** * 导出品相列表 */ @Clear public void exportProductList() { ApiResponse apiResponse = ApiResponse.success(); try { // 获取查询参数 String productName = getPara("productName"); Integer productType = getParaToInt("categoryId"); Integer status = getParaToInt("status"); Integer brandId = getParaToInt("brandId"); // 调用Service层获取导出数据 List dtos =productService.exportProductList(productName, productType, status, brandId); if (CollUtil.isEmpty(dtos)) { renderJson(ApiResponse.error("没有要导出的数据")); return; } // 使用EasyExcelUtil生成Excel文件流 InputStream inputStream = EasyExcelUtil.export(dtos, "产品列表", ProductExportDto.class); String fileName = URLEncoder.encode("产品列表.xlsx", "UTF-8"); String ossUrl = OssUtil.upload(inputStream, fileName); apiResponse = ApiResponse.success(ossUrl); } catch (Exception e) { logger.error("导出产品列表异常:", e); renderJson(ApiResponse.error("导出产品列表失败:" + e.getMessage())); } renderJson(apiResponse); } }