OrderImageController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. package com.izouma.awesomeadmin.web;
  2. import com.izouma.awesomeadmin.constant.AppConstant;
  3. import com.izouma.awesomeadmin.dto.Page;
  4. import com.izouma.awesomeadmin.dto.Result;
  5. import com.izouma.awesomeadmin.model.ImageUploadLog;
  6. import com.izouma.awesomeadmin.model.OrderImage;
  7. import com.izouma.awesomeadmin.model.UserOrder;
  8. import com.izouma.awesomeadmin.service.ImageUploadLogService;
  9. import com.izouma.awesomeadmin.service.OSSFileService;
  10. import com.izouma.awesomeadmin.service.OrderImageService;
  11. import com.izouma.awesomeadmin.service.UserOrderService;
  12. import com.izouma.awesomeadmin.util.ExportExcelUtil;
  13. import com.izouma.awesomeadmin.util.ImagesUtil;
  14. import com.izouma.awesomeadmin.util.PropertiesFileLoader;
  15. import org.apache.commons.lang.StringUtils;
  16. import org.apache.log4j.Logger;
  17. import org.apache.shiro.authz.annotation.RequiresAuthentication;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Controller;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestMethod;
  22. import org.springframework.web.bind.annotation.RequestParam;
  23. import org.springframework.web.bind.annotation.ResponseBody;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import org.springframework.web.multipart.MultipartHttpServletRequest;
  26. import org.springframework.web.multipart.commons.CommonsMultipartResolver;
  27. import javax.imageio.ImageIO;
  28. import javax.imageio.stream.ImageInputStream;
  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.servlet.http.HttpServletResponse;
  31. import java.awt.*;
  32. import java.awt.image.BufferedImage;
  33. import java.io.IOException;
  34. import java.math.BigDecimal;
  35. import java.util.*;
  36. import java.util.List;
  37. /**
  38. * controller类
  39. */
  40. @Controller
  41. @RequestMapping("/orderImage")
  42. public class OrderImageController {
  43. /**
  44. * 日志对象zipFilesDown
  45. */
  46. private static Logger logger = Logger.getLogger(OrderImageController.class);
  47. @Autowired
  48. private OrderImageService orderImageService;
  49. @Autowired
  50. private UserOrderService userOrderService;
  51. @Autowired
  52. private OSSFileService OSSFileService;
  53. @Autowired
  54. private ImageUploadLogService imageUploadLogService;
  55. /**
  56. * <p>获取全部记录。</p>
  57. */
  58. @RequiresAuthentication
  59. @RequestMapping(value = "/all", method = RequestMethod.GET)
  60. @ResponseBody
  61. public Result all(OrderImage record) {
  62. List<OrderImage> pp = orderImageService.getOrderImageList(record);
  63. return new Result(true, pp);
  64. }
  65. /**
  66. * <p>根据Id。</p>
  67. */
  68. @RequestMapping(value = "/getOrderImage", method = RequestMethod.GET)
  69. @ResponseBody
  70. public Result getOrderImage(@RequestParam(required = false, value = "id") String id) {
  71. OrderImage data = orderImageService.getOrderImageById(id);
  72. return new Result(true, data);
  73. }
  74. /**
  75. * <p>根据条件获取。</p>
  76. */
  77. @RequestMapping(value = "/getOne", method = RequestMethod.GET)
  78. @ResponseBody
  79. public Result getOne(OrderImage record) {
  80. OrderImage data = orderImageService.getOrderImage(record);
  81. return new Result(true, data);
  82. }
  83. /**
  84. * <p>分页查询。</p>
  85. */
  86. @RequestMapping(value = "/page", method = RequestMethod.GET)
  87. @ResponseBody
  88. public Result page(Page page, OrderImage record) {
  89. Map<String, Object> result = new HashMap<>();
  90. List<OrderImage> pp = orderImageService.getOrderImageByPage(page, record);
  91. result.put(AppConstant.PAGE, page);
  92. result.put("pp", pp);
  93. return new Result(true, result);
  94. }
  95. /**
  96. * <p>保存。</p>
  97. */
  98. @RequestMapping(value = "/save", method = RequestMethod.POST)
  99. @ResponseBody
  100. public Result save(OrderImage record) {
  101. boolean num = orderImageService.createOrderImage(record);
  102. if (num) {
  103. return new Result(true, record.getId());
  104. }
  105. return new Result(false, "保存异常");
  106. }
  107. /**
  108. * <p>更新信息。</p>
  109. */
  110. @RequestMapping(value = "/update", method = RequestMethod.POST)
  111. @ResponseBody
  112. public Result updateOrderImage(OrderImage record) {
  113. boolean num = orderImageService.updateOrderImage(record);
  114. if (num) {
  115. return new Result(true, "保存成功");
  116. }
  117. return new Result(false, "保存异常");
  118. }
  119. /**
  120. * <p>删除。</p>
  121. */
  122. @RequestMapping(value = "/del", method = RequestMethod.POST)
  123. @ResponseBody
  124. public Result deleteOrderImage(@RequestParam(required = true, value = "id") String id) {
  125. boolean num = orderImageService.deleteOrderImage(id);
  126. if (num) {
  127. return new Result(true, "删除成功");
  128. }
  129. return new Result(false, "删除异常");
  130. }
  131. /**
  132. * 导出Excel
  133. *
  134. * @param request
  135. * @param response
  136. * @param record
  137. * @throws Exception
  138. */
  139. @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
  140. @ResponseBody
  141. public void exportExcel(HttpServletRequest request, HttpServletResponse response, OrderImage record) throws Exception {
  142. List<OrderImage> orderImages = orderImageService.getOrderImageList(record);
  143. String sheetName = "order_image";
  144. String titleName = "订单图片数据表";
  145. String fileName = "订单图片表";
  146. int columnNumber = 16;
  147. int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
  148. String[] columnName = {"", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "订单", "用户", "店铺", "原片地址", "原片大小", "成片地址", "成片大小", "修图人", "状态", "备注"};
  149. String[][] dataList = new String[orderImages.size()][16];
  150. for (int i = 0; i < orderImages.size(); i++) {
  151. dataList[i][0] = String.valueOf(orderImages.get(i).getId());
  152. dataList[i][1] = String.valueOf(orderImages.get(i).getDelFlag());
  153. dataList[i][2] = String.valueOf(orderImages.get(i).getUpdateTime());
  154. dataList[i][3] = String.valueOf(orderImages.get(i).getUpdateUser());
  155. dataList[i][4] = String.valueOf(orderImages.get(i).getCreateTime());
  156. dataList[i][5] = String.valueOf(orderImages.get(i).getCreateUser());
  157. dataList[i][6] = String.valueOf(orderImages.get(i).getOrderId());
  158. dataList[i][7] = String.valueOf(orderImages.get(i).getUserId());
  159. dataList[i][8] = String.valueOf(orderImages.get(i).getStoreId());
  160. dataList[i][9] = String.valueOf(orderImages.get(i).getOriginalImage());
  161. dataList[i][10] = String.valueOf(orderImages.get(i).getOriginalSize());
  162. dataList[i][11] = String.valueOf(orderImages.get(i).getFinishedImage());
  163. dataList[i][12] = String.valueOf(orderImages.get(i).getFinishedSize());
  164. dataList[i][13] = String.valueOf(orderImages.get(i).getDealUser());
  165. dataList[i][14] = String.valueOf(orderImages.get(i).getStatusFlag());
  166. dataList[i][15] = String.valueOf(orderImages.get(i).getRemark());
  167. }
  168. ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
  169. columnNumber, columnWidth, columnName, dataList, response);
  170. }
  171. /**
  172. * <p>返修。</p>
  173. */
  174. @RequestMapping(value = "/repair", method = RequestMethod.POST)
  175. @ResponseBody
  176. public Result repair(OrderImage record) {
  177. boolean num = orderImageService.repair(record);
  178. if (num) {
  179. return new Result(true, "保存成功");
  180. }
  181. return new Result(false, "保存异常");
  182. }
  183. @RequestMapping(value = "/uploadFileForOrder")
  184. @ResponseBody
  185. public Result uploadFile(HttpServletRequest request, String storeId, String orderId, String userId, String typeFlag) {
  186. CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
  187. if (multipartResolver.isMultipart(request)) {
  188. MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
  189. Iterator it = multiRequest.getFileNames();
  190. List<ImageUploadLog> paths = new ArrayList<>();
  191. while (it.hasNext()) {
  192. MultipartFile file = multiRequest.getFile(it.next().toString());
  193. if (file != null) {
  194. try {
  195. String originalFilename = file.getOriginalFilename();
  196. long srcSize = file.getSize();
  197. String uploadPath = storeId + "/" + orderId + "/" + typeFlag + "/" + originalFilename;
  198. String path = OSSFileService.upload(file.getInputStream(), uploadPath);
  199. ImageUploadLog imageUploadLog = new ImageUploadLog();
  200. imageUploadLog.setStoreId(storeId);
  201. imageUploadLog.setOrderId(orderId);
  202. imageUploadLog.setTypeFlag(typeFlag);
  203. imageUploadLog.setUserId(userId);
  204. imageUploadLog.setImageName(originalFilename);
  205. imageUploadLog.setUrl(path);
  206. imageUploadLog.setArtworkUrl(path);
  207. imageUploadLog.setImageSize(BigDecimal.valueOf(file.getSize()));
  208. int bigSize = 2 * 1024 * 1024;
  209. if (srcSize > bigSize) {
  210. String minPath = storeId + "/" + orderId + "/" + typeFlag + "/" + "min/" + originalFilename;
  211. String min = OSSFileService.upload(ImagesUtil.changeMinPhoto(
  212. file.getInputStream(),
  213. originalFilename.split("[.]")[1],
  214. 2000, 1), minPath);
  215. imageUploadLog.setUrl(min);
  216. }
  217. imageUploadLogService.createImageUploadLog(imageUploadLog);
  218. paths.add(imageUploadLog);
  219. } catch (IOException e) {
  220. logger.error("上传订单图片失败", e);
  221. return new Result(false, "上传失败");
  222. }
  223. }
  224. }
  225. return new Result(true, paths);
  226. }
  227. return new Result(false, "上传失败");
  228. }
  229. /**
  230. * 清空未使用图片
  231. *
  232. * @param orderId
  233. * @return
  234. */
  235. @RequestMapping(value = "/delOssImage", method = RequestMethod.POST)
  236. @ResponseBody
  237. public Result delOssImage(@RequestParam(required = true, value = "orderId") String orderId) {
  238. List<ImageUploadLog> imageUploadLogs = imageUploadLogService.queryDelOssImage(orderId);
  239. for (ImageUploadLog imageUploadLog : imageUploadLogs) {
  240. String imageName = imageUploadLog.getUrl().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  241. OSSFileService.deleteObject(imageName);
  242. if (StringUtils.isNotEmpty(imageUploadLog.getArtworkUrl()) && !imageUploadLog.getUrl().equals(imageUploadLog.getArtworkUrl())) {
  243. String artwork = imageUploadLog.getArtworkUrl().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  244. OSSFileService.deleteObject(artwork);
  245. }
  246. }
  247. return new Result(true, "删除成功");
  248. }
  249. /**
  250. * 批量更新成片
  251. *
  252. * @param orderId
  253. * @param imageIds
  254. * @return
  255. */
  256. @RequestMapping(value = "/updateFinishedImages", method = RequestMethod.POST)
  257. @ResponseBody
  258. public Result updateFinishedImages(@RequestParam(required = true, value = "orderId") String orderId, @RequestParam(required = true, value = "imageIds") String imageIds) {
  259. ImageUploadLog record = new ImageUploadLog();
  260. record.setOrderId(orderId);
  261. record.setIdStr(imageIds);
  262. List<ImageUploadLog> imageUploadLogs = imageUploadLogService.getImageUploadLogList(record);
  263. for (ImageUploadLog imageUploadLog : imageUploadLogs) {
  264. OrderImage orderImage = new OrderImage();
  265. orderImage.setOrderId(orderId);
  266. orderImage.setImageName(imageUploadLog.getImageName());
  267. orderImage = orderImageService.getOrderImage(orderImage);
  268. if (orderImage != null) {
  269. if (orderImage.getStatusFlag() != 1) {
  270. orderImage.setStatusFlag(0);
  271. orderImage.setFinishedImage(imageUploadLog.getUrl());
  272. orderImage.setFinishedSize(imageUploadLog.getImageSize());
  273. orderImage.setFinishedArtwork(imageUploadLog.getArtworkUrl());
  274. orderImageService.updateOrderImage(orderImage);
  275. }
  276. }
  277. }
  278. return new Result(true, "保存成功");
  279. }
  280. /**
  281. * 获取店铺存储情况
  282. *
  283. * @param record
  284. * @return
  285. */
  286. @RequestMapping(value = "/getMemorySize", method = RequestMethod.GET)
  287. @ResponseBody
  288. public Result getMemorySize(OrderImage record) {
  289. OrderImage data = orderImageService.getMemorySize(record);
  290. return new Result(true, data);
  291. }
  292. /**
  293. * 下载压缩包
  294. *
  295. * @param orderId 订单ID
  296. * @param typeFlag 类型 original / finished
  297. * @param request
  298. * @param response
  299. * @return
  300. */
  301. @RequestMapping(value = "/zipFilesDown", method = RequestMethod.GET)
  302. @ResponseBody
  303. public void zipFilesDown(@RequestParam(required = true, value = "orderId") String orderId,
  304. @RequestParam(required = true, value = "typeFlag") String typeFlag,
  305. HttpServletRequest request, HttpServletResponse response) {
  306. try {
  307. OrderImage record = new OrderImage();
  308. record.setOrderId(orderId);
  309. List<OrderImage> orderImageList = orderImageService.getOrderImageList(record);
  310. if (orderImageList.size() > 0) {
  311. UserOrder userOrder = userOrderService.getUserOrderById(orderId);
  312. if (userOrder != null) {
  313. List<String> keyList = new ArrayList<>();
  314. String zipName = userOrder.getOrderCode() + "_" + typeFlag;
  315. for (OrderImage orderImage : orderImageList) {
  316. if ("original".equals(typeFlag)) {
  317. if (StringUtils.isNotEmpty(orderImage.getOriginalImage())) {
  318. if (StringUtils.isNotEmpty(orderImage.getOriginalArtwork())) {
  319. String imageName = orderImage.getOriginalArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  320. keyList.add(imageName);
  321. } else {
  322. String imageName = orderImage.getOriginalImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  323. keyList.add(imageName);
  324. }
  325. }
  326. } else if ("finished".equals(typeFlag)) {
  327. if (StringUtils.isNotEmpty(orderImage.getFinishedImage())) {
  328. if (StringUtils.isNotEmpty(orderImage.getFinishedArtwork())) {
  329. String imageName = orderImage.getFinishedArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  330. keyList.add(imageName);
  331. } else {
  332. String imageName = orderImage.getFinishedImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  333. keyList.add(imageName);
  334. }
  335. //更新成已下载
  336. orderImage.setDownloadFlag("Y");
  337. orderImageService.updateOrderImage(orderImage);
  338. }
  339. }
  340. }
  341. if (keyList.size() > 0) {
  342. OSSFileService.zipFilesDown(keyList, zipName, request, response);
  343. }
  344. }
  345. }
  346. } catch (Exception e) {
  347. logger.error("zipFilesDown,批量下载异常", e);
  348. }
  349. }
  350. /**
  351. * 单张下载
  352. *
  353. * @param id orderImage id
  354. * @param typeFlag 类型 original / finished
  355. * @param request
  356. * @param response
  357. */
  358. @RequestMapping(value = "/singleFileDown", method = RequestMethod.GET)
  359. @ResponseBody
  360. public void singleFileDown(@RequestParam(required = true, value = "id") String id,
  361. @RequestParam(required = true, value = "typeFlag") String typeFlag,
  362. HttpServletRequest request, HttpServletResponse response) {
  363. try {
  364. OrderImage orderImage = orderImageService.getOrderImageById(id);
  365. if (orderImage != null) {
  366. if ("original".equals(typeFlag)) {
  367. if (StringUtils.isNotEmpty(orderImage.getOriginalImage())) {
  368. if (StringUtils.isNotEmpty(orderImage.getOriginalArtwork())) {
  369. String imageName = orderImage.getOriginalArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  370. OSSFileService.singleFileDown(imageName, request, response);
  371. } else {
  372. String imageName = orderImage.getOriginalImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  373. OSSFileService.singleFileDown(imageName, request, response);
  374. }
  375. }
  376. } else if ("finished".equals(typeFlag)) {
  377. if (StringUtils.isNotEmpty(orderImage.getFinishedImage())) {
  378. if (StringUtils.isNotEmpty(orderImage.getFinishedArtwork())) {
  379. String imageName = orderImage.getFinishedArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  380. OSSFileService.singleFileDown(imageName, request, response);
  381. } else {
  382. String imageName = orderImage.getFinishedImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", "");
  383. OSSFileService.singleFileDown(imageName, request, response);
  384. }
  385. //更新成已下载
  386. orderImage.setDownloadFlag("Y");
  387. orderImageService.updateOrderImage(orderImage);
  388. }
  389. }
  390. }
  391. } catch (Exception e) {
  392. logger.error("singleFileDown,单张下载异常", e);
  393. }
  394. }
  395. @RequestMapping(value = "/autoCleanOrderImage", method = RequestMethod.GET)
  396. @ResponseBody
  397. public Result autoCleanOrderImage() {
  398. return orderImageService.autoCleanOrderImage(null);
  399. }
  400. }