package com.izouma.awesomeadmin.web; import com.izouma.awesomeadmin.constant.AppConstant; import com.izouma.awesomeadmin.dto.Page; import com.izouma.awesomeadmin.dto.Result; import com.izouma.awesomeadmin.model.ImageUploadLog; import com.izouma.awesomeadmin.model.OrderImage; import com.izouma.awesomeadmin.model.UserOrder; import com.izouma.awesomeadmin.service.ImageUploadLogService; import com.izouma.awesomeadmin.service.OSSFileService; import com.izouma.awesomeadmin.service.OrderImageService; import com.izouma.awesomeadmin.service.UserOrderService; import com.izouma.awesomeadmin.util.ExportExcelUtil; import com.izouma.awesomeadmin.util.ImagesUtil; import com.izouma.awesomeadmin.util.PropertiesFileLoader; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.imageio.ImageIO; import javax.imageio.stream.ImageInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.math.BigDecimal; import java.util.*; import java.util.List; /** * controller类 */ @Controller @RequestMapping("/orderImage") public class OrderImageController { /** * 日志对象zipFilesDown */ private static Logger logger = Logger.getLogger(OrderImageController.class); @Autowired private OrderImageService orderImageService; @Autowired private UserOrderService userOrderService; @Autowired private OSSFileService OSSFileService; @Autowired private ImageUploadLogService imageUploadLogService; /** *

获取全部记录。

*/ @RequiresAuthentication @RequestMapping(value = "/all", method = RequestMethod.GET) @ResponseBody public Result all(OrderImage record) { List pp = orderImageService.getOrderImageList(record); return new Result(true, pp); } /** *

根据Id。

*/ @RequestMapping(value = "/getOrderImage", method = RequestMethod.GET) @ResponseBody public Result getOrderImage(@RequestParam(required = false, value = "id") String id) { OrderImage data = orderImageService.getOrderImageById(id); return new Result(true, data); } /** *

根据条件获取。

*/ @RequestMapping(value = "/getOne", method = RequestMethod.GET) @ResponseBody public Result getOne(OrderImage record) { OrderImage data = orderImageService.getOrderImage(record); return new Result(true, data); } /** *

分页查询。

*/ @RequestMapping(value = "/page", method = RequestMethod.GET) @ResponseBody public Result page(Page page, OrderImage record) { Map result = new HashMap<>(); List pp = orderImageService.getOrderImageByPage(page, record); result.put(AppConstant.PAGE, page); result.put("pp", pp); return new Result(true, result); } /** *

保存。

*/ @RequestMapping(value = "/save", method = RequestMethod.POST) @ResponseBody public Result save(OrderImage record) { boolean num = orderImageService.createOrderImage(record); if (num) { return new Result(true, record.getId()); } return new Result(false, "保存异常"); } /** *

更新信息。

*/ @RequestMapping(value = "/update", method = RequestMethod.POST) @ResponseBody public Result updateOrderImage(OrderImage record) { boolean num = orderImageService.updateOrderImage(record); if (num) { return new Result(true, "保存成功"); } return new Result(false, "保存异常"); } /** *

删除。

*/ @RequestMapping(value = "/del", method = RequestMethod.POST) @ResponseBody public Result deleteOrderImage(@RequestParam(required = true, value = "id") String id) { boolean num = orderImageService.deleteOrderImage(id); if (num) { return new Result(true, "删除成功"); } return new Result(false, "删除异常"); } /** * 导出Excel * * @param request * @param response * @param record * @throws Exception */ @RequestMapping(value = "/exportExcel", method = RequestMethod.GET) @ResponseBody public void exportExcel(HttpServletRequest request, HttpServletResponse response, OrderImage record) throws Exception { List orderImages = orderImageService.getOrderImageList(record); String sheetName = "order_image"; String titleName = "订单图片数据表"; String fileName = "订单图片表"; int columnNumber = 16; int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}; String[] columnName = {"", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "订单", "用户", "店铺", "原片地址", "原片大小", "成片地址", "成片大小", "修图人", "状态", "备注"}; String[][] dataList = new String[orderImages.size()][16]; for (int i = 0; i < orderImages.size(); i++) { dataList[i][0] = String.valueOf(orderImages.get(i).getId()); dataList[i][1] = String.valueOf(orderImages.get(i).getDelFlag()); dataList[i][2] = String.valueOf(orderImages.get(i).getUpdateTime()); dataList[i][3] = String.valueOf(orderImages.get(i).getUpdateUser()); dataList[i][4] = String.valueOf(orderImages.get(i).getCreateTime()); dataList[i][5] = String.valueOf(orderImages.get(i).getCreateUser()); dataList[i][6] = String.valueOf(orderImages.get(i).getOrderId()); dataList[i][7] = String.valueOf(orderImages.get(i).getUserId()); dataList[i][8] = String.valueOf(orderImages.get(i).getStoreId()); dataList[i][9] = String.valueOf(orderImages.get(i).getOriginalImage()); dataList[i][10] = String.valueOf(orderImages.get(i).getOriginalSize()); dataList[i][11] = String.valueOf(orderImages.get(i).getFinishedImage()); dataList[i][12] = String.valueOf(orderImages.get(i).getFinishedSize()); dataList[i][13] = String.valueOf(orderImages.get(i).getDealUser()); dataList[i][14] = String.valueOf(orderImages.get(i).getStatusFlag()); dataList[i][15] = String.valueOf(orderImages.get(i).getRemark()); } ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName, columnNumber, columnWidth, columnName, dataList, response); } /** *

返修。

*/ @RequestMapping(value = "/repair", method = RequestMethod.POST) @ResponseBody public Result repair(OrderImage record) { boolean num = orderImageService.repair(record); if (num) { return new Result(true, "保存成功"); } return new Result(false, "保存异常"); } @RequestMapping(value = "/uploadFileForOrder") @ResponseBody public Result uploadFile(HttpServletRequest request, String storeId, String orderId, String userId, String typeFlag) { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if (multipartResolver.isMultipart(request)) { MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator it = multiRequest.getFileNames(); List paths = new ArrayList<>(); while (it.hasNext()) { MultipartFile file = multiRequest.getFile(it.next().toString()); if (file != null) { try { String originalFilename = file.getOriginalFilename(); long srcSize = file.getSize(); String uploadPath = storeId + "/" + orderId + "/" + typeFlag + "/" + originalFilename; String path = OSSFileService.upload(file.getInputStream(), uploadPath); ImageUploadLog imageUploadLog = new ImageUploadLog(); imageUploadLog.setStoreId(storeId); imageUploadLog.setOrderId(orderId); imageUploadLog.setTypeFlag(typeFlag); imageUploadLog.setUserId(userId); imageUploadLog.setImageName(originalFilename); imageUploadLog.setUrl(path); imageUploadLog.setArtworkUrl(path); imageUploadLog.setImageSize(BigDecimal.valueOf(file.getSize())); int bigSize = 2 * 1024 * 1024; if (srcSize > bigSize) { String minPath = storeId + "/" + orderId + "/" + typeFlag + "/" + "min/" + originalFilename; String min = OSSFileService.upload(ImagesUtil.changeMinPhoto( file.getInputStream(), originalFilename.split("[.]")[1], 2000, 1), minPath); imageUploadLog.setUrl(min); } imageUploadLogService.createImageUploadLog(imageUploadLog); paths.add(imageUploadLog); } catch (IOException e) { logger.error("上传订单图片失败", e); return new Result(false, "上传失败"); } } } return new Result(true, paths); } return new Result(false, "上传失败"); } /** * 清空未使用图片 * * @param orderId * @return */ @RequestMapping(value = "/delOssImage", method = RequestMethod.POST) @ResponseBody public Result delOssImage(@RequestParam(required = true, value = "orderId") String orderId) { List imageUploadLogs = imageUploadLogService.queryDelOssImage(orderId); for (ImageUploadLog imageUploadLog : imageUploadLogs) { String imageName = imageUploadLog.getUrl().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); OSSFileService.deleteObject(imageName); if (StringUtils.isNotEmpty(imageUploadLog.getArtworkUrl()) && !imageUploadLog.getUrl().equals(imageUploadLog.getArtworkUrl())) { String artwork = imageUploadLog.getArtworkUrl().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); OSSFileService.deleteObject(artwork); } } return new Result(true, "删除成功"); } /** * 批量更新成片 * * @param orderId * @param imageIds * @return */ @RequestMapping(value = "/updateFinishedImages", method = RequestMethod.POST) @ResponseBody public Result updateFinishedImages(@RequestParam(required = true, value = "orderId") String orderId, @RequestParam(required = true, value = "imageIds") String imageIds) { ImageUploadLog record = new ImageUploadLog(); record.setOrderId(orderId); record.setIdStr(imageIds); List imageUploadLogs = imageUploadLogService.getImageUploadLogList(record); for (ImageUploadLog imageUploadLog : imageUploadLogs) { OrderImage orderImage = new OrderImage(); orderImage.setOrderId(orderId); orderImage.setImageName(imageUploadLog.getImageName()); orderImage = orderImageService.getOrderImage(orderImage); if (orderImage != null) { if (orderImage.getStatusFlag() != 1) { orderImage.setStatusFlag(0); orderImage.setFinishedImage(imageUploadLog.getUrl()); orderImage.setFinishedSize(imageUploadLog.getImageSize()); orderImage.setFinishedArtwork(imageUploadLog.getArtworkUrl()); orderImageService.updateOrderImage(orderImage); } } } return new Result(true, "保存成功"); } /** * 获取店铺存储情况 * * @param record * @return */ @RequestMapping(value = "/getMemorySize", method = RequestMethod.GET) @ResponseBody public Result getMemorySize(OrderImage record) { OrderImage data = orderImageService.getMemorySize(record); return new Result(true, data); } /** * 下载压缩包 * * @param orderId 订单ID * @param typeFlag 类型 original / finished * @param request * @param response * @return */ @RequestMapping(value = "/zipFilesDown", method = RequestMethod.GET) @ResponseBody public void zipFilesDown(@RequestParam(required = true, value = "orderId") String orderId, @RequestParam(required = true, value = "typeFlag") String typeFlag, HttpServletRequest request, HttpServletResponse response) { try { OrderImage record = new OrderImage(); record.setOrderId(orderId); List orderImageList = orderImageService.getOrderImageList(record); if (orderImageList.size() > 0) { UserOrder userOrder = userOrderService.getUserOrderById(orderId); if (userOrder != null) { List keyList = new ArrayList<>(); String zipName = userOrder.getOrderCode() + "_" + typeFlag; for (OrderImage orderImage : orderImageList) { if ("original".equals(typeFlag)) { if (StringUtils.isNotEmpty(orderImage.getOriginalImage())) { if (StringUtils.isNotEmpty(orderImage.getOriginalArtwork())) { String imageName = orderImage.getOriginalArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); keyList.add(imageName); } else { String imageName = orderImage.getOriginalImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); keyList.add(imageName); } } } else if ("finished".equals(typeFlag)) { if (StringUtils.isNotEmpty(orderImage.getFinishedImage())) { if (StringUtils.isNotEmpty(orderImage.getFinishedArtwork())) { String imageName = orderImage.getFinishedArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); keyList.add(imageName); } else { String imageName = orderImage.getFinishedImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); keyList.add(imageName); } //更新成已下载 orderImage.setDownloadFlag("Y"); orderImageService.updateOrderImage(orderImage); } } } if (keyList.size() > 0) { OSSFileService.zipFilesDown(keyList, zipName, request, response); } } } } catch (Exception e) { logger.error("zipFilesDown,批量下载异常", e); } } /** * 单张下载 * * @param id orderImage id * @param typeFlag 类型 original / finished * @param request * @param response */ @RequestMapping(value = "/singleFileDown", method = RequestMethod.GET) @ResponseBody public void singleFileDown(@RequestParam(required = true, value = "id") String id, @RequestParam(required = true, value = "typeFlag") String typeFlag, HttpServletRequest request, HttpServletResponse response) { try { OrderImage orderImage = orderImageService.getOrderImageById(id); if (orderImage != null) { if ("original".equals(typeFlag)) { if (StringUtils.isNotEmpty(orderImage.getOriginalImage())) { if (StringUtils.isNotEmpty(orderImage.getOriginalArtwork())) { String imageName = orderImage.getOriginalArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); OSSFileService.singleFileDown(imageName, request, response); } else { String imageName = orderImage.getOriginalImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); OSSFileService.singleFileDown(imageName, request, response); } } } else if ("finished".equals(typeFlag)) { if (StringUtils.isNotEmpty(orderImage.getFinishedImage())) { if (StringUtils.isNotEmpty(orderImage.getFinishedArtwork())) { String imageName = orderImage.getFinishedArtwork().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); OSSFileService.singleFileDown(imageName, request, response); } else { String imageName = orderImage.getFinishedImage().replace(PropertiesFileLoader.getProperties("aliImageSever") + "/", ""); OSSFileService.singleFileDown(imageName, request, response); } //更新成已下载 orderImage.setDownloadFlag("Y"); orderImageService.updateOrderImage(orderImage); } } } } catch (Exception e) { logger.error("singleFileDown,单张下载异常", e); } } @RequestMapping(value = "/autoCleanOrderImage", method = RequestMethod.GET) @ResponseBody public Result autoCleanOrderImage() { return orderImageService.autoCleanOrderImage(null); } }