package com.zt.life.modules.sysPictureBase.controller; import com.spire.xls.Workbook; import com.zt.common.annotation.LogOperation; import com.zt.common.constant.Constant; import com.zt.common.annotation.QueryParam; import com.zt.common.db.query.QueryFilter; import com.zt.common.servlet.Result; import com.zt.common.servlet.PageResult; import com.zt.common.validator.AssertUtils; import com.zt.common.validator.ValidatorUtils; import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; import com.zt.life.modules.sysPictureBase.model.SysPictureBase; import com.zt.life.modules.sysPictureBase.service.SysPictureBaseService; import com.zt.life.sys.dto.OssDto; import com.zt.life.sys.service.SysOssConfigService; import com.zt.modules.oss.enums.CloudChannel; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; /** * sys_picture_base * * @author zt generator * @since 1.0.0 2024-02-27 */ @RestController @RequestMapping("/sysPictureBase/") @Api(tags = "sys_picture_base") public class SysPictureBaseController { @Autowired private SysPictureBaseService sysPictureBaseService; @Autowired private SysOssConfigService sysOssConfigService; @Value("${zt.oss.local-path}") private String localPath; @GetMapping("page") @ApiOperation("分页") @ApiImplicitParams({ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING), @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING), @ApiImplicitParam(name = "contentType", value = "检索关键字", dataType = Constant.QT.STRING, format = "CONTENT_TYPE^LK"), @ApiImplicitParam(name = "systemMark", value = "系统标识", dataType = Constant.QT.STRING, format = "SYSTEM_MARK^LK")}) public PageResult page(@ApiIgnore @QueryParam QueryFilter queryFilter) { return PageResult.ok(sysPictureBaseService.page(queryFilter)); } @GetMapping("{id}") @ApiOperation("信息") public Result get(@PathVariable("id") Long id) { SysPictureBase data = sysPictureBaseService.get(id); return Result.ok(data); } @PostMapping("save") @ApiOperation("保存") @LogOperation("保存") public Result save(@RequestBody MultipartFile file, Long id, String type, String subType, String name, String contentType, String systemMark, Integer sortNo, String remark) { SysPictureBase sysPictureBase; if (id != null) { sysPictureBase = sysPictureBaseService.get(id); sysPictureBase.setType(type); sysPictureBase.setSubType(subType); sysPictureBase.setName(name); sysPictureBase.setContentType(contentType); sysPictureBase.setSystemMark(systemMark); sysPictureBase.setSortNo(sortNo); sysPictureBase.setRemark(remark); sysPictureBaseService.update(sysPictureBase); } else { sysPictureBase = new SysPictureBase(); sysPictureBase.setType(type); sysPictureBase.setSubType(subType); sysPictureBase.setName(name); sysPictureBase.setContentType(contentType); sysPictureBase.setSystemMark(systemMark); Integer no = sysPictureBaseService.getNo(); sysPictureBase.setSortNo(no + 1); sysPictureBase.setRemark(remark); sysPictureBaseService.insert(sysPictureBase); } if (file != null) { BufferedImage bufferedImage = null; try { String fileName = file.getOriginalFilename(); String[] arr = fileName.split("\\."); String suffixName = arr[arr.length - 1].toLowerCase(); bufferedImage = ImageIO.read(file.getInputStream()); // 宽度 int width = bufferedImage.getWidth(); sysPictureBase.setWidth(width); // 高度 int height = bufferedImage.getHeight(); sysPictureBase.setHeight(height); sysPictureBaseService.update(sysPictureBase); String tempUploadDir = localPath + "/product_img/"; File dir = new File(tempUploadDir); if (!dir.exists()) { dir.mkdirs(); } ImageIO.write(bufferedImage, suffixName, new File(tempUploadDir + sysPictureBase.getId().toString())); } catch (IOException e) { e.printStackTrace(); } } return Result.ok(); } @RequestMapping("/getProductImg") public void getProductImg(HttpServletResponse response, Long id) { try { String tempUploadDir = localPath + "/product_img/" + id; File file = new File(tempUploadDir); //读取指定路径下面的文件 InputStream in = new FileInputStream(file); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); //创建存放文件内容的数组 byte[] buff = new byte[1024]; //所读取的内容使用n来接收 int n; //当没有读取完时,继续读取,循环 while ((n = in.read(buff)) != -1) { //将字节数组的数据全部写入到输出流中 outputStream.write(buff, 0, n); } //强制将缓存区的数据进行输出 outputStream.flush(); //关流 outputStream.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } @DeleteMapping @ApiOperation("删除") @LogOperation("删除") public Result delete(@RequestBody Long[] ids) { //效验数据 AssertUtils.isArrayEmpty(ids, "id"); sysPictureBaseService.delete(ids); return Result.ok(); } }