FileServiceImpl.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. package com.caimei.service.impl;
  2. import com.caimei.mapper.FileMapper;
  3. import com.caimei.model.ResponseJson;
  4. import com.caimei.model.po.AuthImageDataPo;
  5. import com.caimei.model.po.FilePo;
  6. import com.caimei.model.vo.FileListVo;
  7. import com.caimei.model.vo.WxFileListVo;
  8. import com.caimei.service.FileService;
  9. import com.github.pagehelper.PageHelper;
  10. import com.github.pagehelper.PageInfo;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.stereotype.Service;
  15. import javax.annotation.Resource;
  16. import java.io.*;
  17. import java.net.HttpURLConnection;
  18. import java.net.MalformedURLException;
  19. import java.net.URL;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.UUID;
  23. import java.util.zip.ZipEntry;
  24. import java.util.zip.ZipOutputStream;
  25. import static com.caimei.service.impl.UploadServiceImpl.inputStreamToFile;
  26. /**
  27. * Description
  28. *
  29. * @author : Aslee
  30. * @date : 2021/7/9
  31. */
  32. @Slf4j
  33. @Service
  34. public class FileServiceImpl implements FileService {
  35. @Resource
  36. private FileMapper fileMapper;
  37. @Value("${aliyunConfig.accessKeyId}")
  38. private String accessKeyId;
  39. @Value("${aliyunConfig.accessKeySecret}")
  40. private String accessKeySecret;
  41. @Value("${aliyunConfig.bucketName}")
  42. private String bucketName;
  43. @Value("${aliyunConfig.endpoint}")
  44. private String endpoint;
  45. @Value("${spring.profiles.active}")
  46. private String active;
  47. @Override
  48. public ResponseJson<PageInfo<FileListVo>> getFileList(Integer listType, Integer authUserId, String fileTitle, Integer auditStatus, Integer status, Integer pageNum, Integer pageSize) {
  49. if (null == authUserId) {
  50. return ResponseJson.error("参数异常,请输入供应商用户id", null);
  51. }
  52. listType = null == listType ? 1 : listType;
  53. PageHelper.startPage(pageNum, pageSize);
  54. List<FileListVo> fileList = fileMapper.getFileList(listType, authUserId, fileTitle, auditStatus, status);
  55. PageInfo<FileListVo> pageData = new PageInfo<>(fileList);
  56. return ResponseJson.success(pageData);
  57. }
  58. @Override
  59. public ResponseJson saveFile(Integer fileId, Integer authUserId, String fileTitle, String fileName, String filePreviewUrl, String fileDownloadUrl) {
  60. if (null == fileId && null == authUserId) {
  61. return ResponseJson.error("参数异常,请输入供应商用户id");
  62. }
  63. if (StringUtils.isEmpty(fileTitle)) {
  64. return ResponseJson.error("参数异常,请输入文件标题");
  65. }
  66. if (StringUtils.isEmpty(fileName)) {
  67. return ResponseJson.error("参数异常,请输入文件名称");
  68. }
  69. if (null == filePreviewUrl || null == fileDownloadUrl) {
  70. return ResponseJson.error("参数异常,请上传文件");
  71. }
  72. /*
  73. 组装文件数据
  74. */
  75. FilePo dataFile = new FilePo();
  76. dataFile.setTitle(fileTitle);
  77. dataFile.setPreviewUrl(filePreviewUrl);
  78. dataFile.setDownloadUrl(fileDownloadUrl);
  79. dataFile.setName(fileName);
  80. // 上线状态默认为“待上线”,审核状态为“待审核”
  81. dataFile.setStatus(2);
  82. dataFile.setAuditStatus(2);
  83. if (null != fileId) {
  84. /*
  85. 更新文件
  86. */
  87. dataFile.setId(fileId);
  88. fileMapper.updateFileSelective(dataFile);
  89. } else {
  90. /*
  91. 新增文件
  92. */
  93. dataFile.setAuthUserId(authUserId);
  94. dataFile.setCreateTime(new Date());
  95. fileMapper.insertFile(dataFile);
  96. }
  97. return ResponseJson.success("保存文件成功");
  98. }
  99. @Override
  100. public ResponseJson updateFileStatus(Integer fileId, Integer status) {
  101. if (null == fileId) {
  102. return ResponseJson.error("请输入文件id");
  103. }
  104. if (null == status) {
  105. return ResponseJson.error("请输入要更新的状态值");
  106. }
  107. fileMapper.updateFileStatusByFileId(fileId, status);
  108. if (0 == status) {
  109. return ResponseJson.success("下线文件成功");
  110. } else {
  111. return ResponseJson.success("上线文件成功");
  112. }
  113. }
  114. @Override
  115. public ResponseJson deleteFile(Integer fileId) {
  116. if (null == fileId) {
  117. return ResponseJson.error("参数异常,请输入文件id");
  118. }
  119. // 删除文件
  120. fileMapper.deleteFileByFileId(fileId);
  121. return ResponseJson.success("删除文件成功");
  122. }
  123. @Override
  124. public ResponseJson auditFile(Integer fileId, Integer auditStatus, String invalidReason, Integer auditBy) {
  125. if (null == fileId) {
  126. return ResponseJson.error("请输入文件id");
  127. }
  128. if (null == auditStatus) {
  129. return ResponseJson.error("请输入审核结果");
  130. }
  131. if (0 == auditStatus && StringUtils.isEmpty(invalidReason)) {
  132. return ResponseJson.error("请输入审核不通过的原因");
  133. }
  134. if (null == auditBy) {
  135. return ResponseJson.error("请输入审核人用户id");
  136. }
  137. Date auditTime = new Date();
  138. // 授权状态更新
  139. Integer status = null;
  140. if (0 == auditStatus) {
  141. // 审核不通过,下线文件
  142. status = 0;
  143. } else {
  144. // 审核通过,上线文件
  145. status = 1;
  146. }
  147. fileMapper.updateFileAuditStatus(fileId, status, auditStatus, invalidReason, auditBy, auditTime);
  148. return ResponseJson.success("审核文件成功");
  149. }
  150. @Override
  151. public ResponseJson<PageInfo<WxFileListVo>> getWxFileList(Integer authUserId, String fileTitle, Integer pageNum, Integer pageSize) {
  152. if (null == authUserId) {
  153. return ResponseJson.error("参数异常,供应商用户id不能为空", null);
  154. }
  155. PageHelper.startPage(pageNum, pageSize);
  156. List<WxFileListVo> fileList = fileMapper.getWxFileList(authUserId, fileTitle);
  157. PageInfo<WxFileListVo> pageData = new PageInfo<>(fileList);
  158. return ResponseJson.success(pageData);
  159. }
  160. @Override
  161. public void download() {
  162. String filePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/atuhImage/";
  163. List<AuthImageDataPo> authImageList = fileMapper.getAuthImageData();
  164. authImageList.forEach(authImage->{
  165. try {
  166. String imageUrl = authImage.getAuthImage();
  167. HttpURLConnection httpUrl = (HttpURLConnection) new URL(imageUrl).openConnection();
  168. httpUrl.connect();
  169. //通过输入流获取图片数据
  170. InputStream inStream = httpUrl.getInputStream();
  171. //得到图片的二进制数据,以二进制封装得到数据,具有通用性
  172. byte[] data = readInputStream(inStream);
  173. //new一个文件对象用来保存图片,默认保存当前工程根目录
  174. File imageFile = new File(filePath + authImage.getAuthParty() + "-" + authImage.getSnCode() + ".jpg");
  175. //创建输出流
  176. FileOutputStream outStream = new FileOutputStream(imageFile);
  177. //写入数据
  178. outStream.write(data);
  179. //关闭输出流
  180. outStream.close();
  181. } catch (FileNotFoundException e) {
  182. e.printStackTrace();
  183. } catch (MalformedURLException e) {
  184. e.printStackTrace();
  185. } catch (IOException e) {
  186. e.printStackTrace();
  187. } catch (Exception e) {
  188. e.printStackTrace();
  189. }
  190. });
  191. }
  192. private byte[] readInputStream(InputStream inStream) throws Exception{
  193. ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  194. //创建一个Buffer字符串
  195. byte[] buffer = new byte[1024];
  196. //每次读取的字符串长度,如果为-1,代表全部读取完毕
  197. int len = 0;
  198. //使用一个输入流从buffer里把数据读取出来
  199. while( (len=inStream.read(buffer)) != -1 ){
  200. //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
  201. outStream.write(buffer, 0, len);
  202. }
  203. //关闭输入流
  204. inStream.close();
  205. //把outStream里的数据写入内存
  206. return outStream.toByteArray();
  207. }
  208. }