ProductNewController.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package com.qlm.controller.jinzai;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.jfinal.aop.Clear;
  4. import com.jfinal.kit.HttpKit;
  5. import com.qlm.annotation.RequestUrl;
  6. import com.qlm.common.ApiResponse;
  7. import com.qlm.controller.common.CommonController;
  8. import com.qlm.dto.ItemExportDto;
  9. import com.qlm.dto.ProductDto;
  10. import com.qlm.dto.ProductExportDto;
  11. import com.qlm.oss.OssUtil;
  12. import com.qlm.service.IProductService;
  13. import com.qlm.service.impl.ProductServiceImpl;
  14. import com.qlm.tools.EasyExcelUtil;
  15. import com.qlm.tools.WxUtil;
  16. import com.alibaba.fastjson.JSON;
  17. import com.qlm.view.core.AdminView;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import java.io.InputStream;
  21. import java.net.URLEncoder;
  22. import java.util.List;
  23. /**
  24. * @author wuyingjianwu
  25. * @date 2025/xx/xx
  26. * 产品信息管理
  27. */
  28. @RequestUrl("/productNew")
  29. public class ProductNewController extends CommonController {
  30. private static final Logger logger = LoggerFactory.getLogger(ProductNewController.class);
  31. private final IProductService productService = new ProductServiceImpl();
  32. public void getProductList() {
  33. renderJsp("/page/jinzai/productList.jsp");
  34. }
  35. /**
  36. * 保存产品信息
  37. */
  38. @Override
  39. public void save() {
  40. AdminView loginUser = getLoginUser();
  41. ApiResponse apiResponse;
  42. try {
  43. // 使用HttpKit.readData获取请求Body
  44. String bodyData = HttpKit.readData(getRequest());
  45. // 将JSON字符串转换为ProductDto对象
  46. ProductDto productDto = JSON.parseObject(bodyData, ProductDto.class);
  47. // 数据验证
  48. if (WxUtil.isNull(productDto.getProductName())) {
  49. apiResponse = ApiResponse.error("产品名称不能为空");
  50. renderJson(apiResponse);
  51. return;
  52. }
  53. if (WxUtil.isNull(productDto.getProductNo())) {
  54. apiResponse = ApiResponse.error("产品编号不能为空");
  55. renderJson(apiResponse);
  56. return;
  57. }
  58. if (productDto.getProductType() == null) {
  59. apiResponse = ApiResponse.error("产品分类不能为空");
  60. renderJson(apiResponse);
  61. return;
  62. }
  63. // 调用Service层保存数据
  64. apiResponse = productService.saveProduct(productDto,loginUser);
  65. } catch (Exception e) {
  66. logger.error("保存产品信息异常:", e);
  67. apiResponse = ApiResponse.error("系统异常:" + e.getMessage());
  68. }
  69. renderJson(apiResponse);
  70. }
  71. /**
  72. * 更新产品信息
  73. */
  74. public void update() {
  75. AdminView loginUser = getLoginUser();
  76. ApiResponse apiResponse;
  77. try {
  78. String bodyData = HttpKit.readData(getRequest());
  79. ProductDto productDto = JSON.parseObject(bodyData, ProductDto.class);
  80. if (productDto.getId() == null) {
  81. apiResponse = ApiResponse.error("产品ID不能为空");
  82. renderJson(apiResponse);
  83. return;
  84. }
  85. apiResponse = productService.updateProduct(productDto,loginUser);
  86. } catch (Exception e) {
  87. logger.error("更新产品信息异常:", e);
  88. apiResponse = ApiResponse.error("系统异常:" + e.getMessage());
  89. }
  90. renderJson(apiResponse);
  91. }
  92. /**
  93. * 删除产品信息
  94. */
  95. public void delete() {
  96. ApiResponse apiResponse;
  97. try {
  98. Long id = getParaToLong("id");
  99. if (id == null) {
  100. apiResponse = ApiResponse.error("产品ID不能为空");
  101. renderJson(apiResponse);
  102. return;
  103. }
  104. apiResponse = productService.deleteProduct(id);
  105. } catch (Exception e) {
  106. logger.error("删除产品信息异常:", e);
  107. apiResponse = ApiResponse.error("系统异常:" + e.getMessage());
  108. }
  109. renderJson(apiResponse);
  110. }
  111. /**
  112. * 根据ID获取产品信息
  113. */
  114. @Override
  115. public void getById() {
  116. ApiResponse apiResponse;
  117. try {
  118. Long id = getParaToLong("id");
  119. if (id == null) {
  120. apiResponse = ApiResponse.error("产品ID不能为空");
  121. renderJson(apiResponse);
  122. return;
  123. }
  124. apiResponse = productService.getProductById(id);
  125. } catch (Exception e) {
  126. logger.error("获取产品信息异常:", e);
  127. apiResponse = ApiResponse.error("系统异常:" + e.getMessage());
  128. }
  129. renderJson(apiResponse);
  130. }
  131. /**
  132. * 产品列表查询
  133. */
  134. @Override
  135. public void list() {
  136. try {
  137. // 获取分页参数
  138. int pageNumber = getParaToInt("pageNumber", 1);
  139. int pageSize = getParaToInt("pageSize", 10);
  140. // 获取查询条件
  141. String productName = getPara("productName");
  142. Integer productType = getParaToInt("categoryId");
  143. Integer status = getParaToInt("status");
  144. Integer brandId = getParaToInt("brandId");
  145. // 调用Service层查询列表
  146. renderJson(productService.listProducts(pageNumber, pageSize, productName, productType, status, brandId));
  147. } catch (Exception e) {
  148. logger.error("查询产品列表异常:", e);
  149. renderJson(ApiResponse.error("系统异常:" + e.getMessage()));
  150. }
  151. }
  152. /**
  153. * 获取产品分类列表(用于下拉选择)
  154. */
  155. public void getProductTypeList() {
  156. try {
  157. ApiResponse apiResponse = productService.getAllProductTypes();
  158. renderJson(apiResponse);
  159. } catch (Exception e) {
  160. logger.error("获取产品分类列表异常:", e);
  161. renderJson(ApiResponse.error("系统异常:" + e.getMessage()));
  162. }
  163. }
  164. /**
  165. * 获取品牌列表(用于下拉选择)
  166. */
  167. public void getBrandList() {
  168. try {
  169. ApiResponse apiResponse = productService.getAllBrands();
  170. renderJson(apiResponse);
  171. } catch (Exception e) {
  172. logger.error("获取品牌列表异常:", e);
  173. renderJson(ApiResponse.error("系统异常:" + e.getMessage()));
  174. }
  175. }
  176. /**
  177. * 导出品相列表
  178. */
  179. @Clear
  180. public void exportProductList() {
  181. ApiResponse apiResponse = ApiResponse.success();
  182. try {
  183. // 获取查询参数
  184. String productName = getPara("productName");
  185. Integer productType = getParaToInt("categoryId");
  186. Integer status = getParaToInt("status");
  187. Integer brandId = getParaToInt("brandId");
  188. // 调用Service层获取导出数据
  189. List<ProductExportDto> dtos =productService.exportProductList(productName, productType, status, brandId);
  190. if (CollUtil.isEmpty(dtos)) {
  191. renderJson(ApiResponse.error("没有要导出的数据"));
  192. return;
  193. }
  194. // 使用EasyExcelUtil生成Excel文件流
  195. InputStream inputStream = EasyExcelUtil.export(dtos, "产品列表", ProductExportDto.class);
  196. String fileName = URLEncoder.encode("产品列表.xlsx", "UTF-8");
  197. String ossUrl = OssUtil.upload(inputStream, fileName);
  198. apiResponse = ApiResponse.success(ossUrl);
  199. } catch (Exception e) {
  200. logger.error("导出产品列表异常:", e);
  201. renderJson(ApiResponse.error("导出产品列表失败:" + e.getMessage()));
  202. }
  203. renderJson(apiResponse);
  204. }
  205. }