PhotoServiceImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. package com.jkcredit.sysnews.service.photo;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.jkcredit.sysnews.enums.PhotoStatusEnum;
  6. import com.jkcredit.sysnews.mapper.PhotoMapper;
  7. import com.jkcredit.sysnews.model.dto.photo.PhotoDto;
  8. import com.jkcredit.sysnews.model.po.photo.PhotoPo;
  9. import com.jkcredit.sysnews.model.vo.photo.PhotoVo;
  10. import com.jkcredit.sysnews.service.base.BaseService;
  11. import com.jkcredit.sysnews.spi.lang.constant.CommonConstant;
  12. import com.jkcredit.sysnews.spi.lang.exception.ServiceException;
  13. import com.jkcredit.sysnews.util.AssertUtils;
  14. import com.jkcredit.sysnews.util.BeanUtil;
  15. import com.jkcredit.sysnews.util.UploadUtil;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.web.multipart.MultipartFile;
  23. import javax.annotation.Resource;
  24. import java.io.File;
  25. import java.io.IOException;
  26. import java.util.*;
  27. /**
  28. * @description:
  29. * @author: xusonglin
  30. * @create: 2020/3/1 0:26
  31. * @version: V1.0
  32. **/
  33. @Slf4j
  34. @Service
  35. @Transactional(readOnly = true)
  36. public class PhotoServiceImpl extends BaseService implements PhotoService {
  37. @Value("${photo.uploadPath}")
  38. private String uploadPath;
  39. @Value("${photo.accessPath}")
  40. private String accessPath;
  41. @Value("${photo.accessResource}")
  42. private String accessResource;
  43. @Resource
  44. PhotoMapper photoMapper;
  45. @Override
  46. @Transactional(rollbackFor = ServiceException.class)
  47. public String upload(MultipartFile photo) {
  48. String fileName = UUID.randomUUID().toString().replace("-","") + "-" +
  49. photo.getOriginalFilename();
  50. Calendar cal = Calendar.getInstance();
  51. int month = cal.get(Calendar.MONTH) + 1;
  52. int year = cal.get(Calendar.YEAR);
  53. String directoryName = year+"-"+month;
  54. String filePath = uploadPath + directoryName + File.separator + fileName;
  55. try {
  56. UploadUtil.upload(photo, filePath);
  57. } catch (IOException ioe) {
  58. log.error("图片上传失败,失败原因:{}", ioe.getMessage());
  59. throw new ServiceException("图片上传失败");
  60. }
  61. try {
  62. PhotoPo photoPo = new PhotoPo();
  63. photoPo.setCreateTime(new Date());
  64. photoPo.setStatus(PhotoStatusEnum.UPLOAD_SUCCESS_NOT_USE.getValue());
  65. photoPo.setUrl(File.separator+ directoryName + File.separator + fileName);
  66. photoMapper.insert(photoPo);
  67. } catch (Exception e) {
  68. log.error("图片上传-新增图片失败, 图片地址:{}", filePath);
  69. log.error("图片上传-新增图片失败,失败原因:{}", e.getMessage());
  70. throw new ServiceException("图片上传-新增图片失败");
  71. }
  72. return accessPath + accessResource + File.separator + directoryName + File.separator + fileName;
  73. }
  74. @Override
  75. public IPage<PhotoVo> getPhotos(Page page, PhotoDto photoDto) {
  76. IPage<PhotoPo> photoPoIPage = photoMapper.getPhotos(page, photoDto);
  77. return photoPoIPage.convert(this::convert);
  78. }
  79. private PhotoVo convert(PhotoPo po) {
  80. PhotoVo vo = new PhotoVo();
  81. BeanUtils.copyProperties(po, vo);
  82. return vo;
  83. }
  84. @Override
  85. @Transactional(rollbackFor = ServiceException.class)
  86. public PhotoVo savePhoto(PhotoDto photoDto) {
  87. validate(photoDto);
  88. String fileName = UUID.randomUUID().toString().replace("-","") + "-" +
  89. photoDto.getPhoto().getOriginalFilename();
  90. Calendar cal = Calendar.getInstance();
  91. int month = cal.get(Calendar.MONTH) + 1;
  92. int year = cal.get(Calendar.YEAR);
  93. String directoryName = year+"-"+month;
  94. String filePath = uploadPath + File.separator + directoryName + File.separator + fileName;
  95. try {
  96. UploadUtil.upload(photoDto.getPhoto(), filePath);
  97. } catch (IOException ioe) {
  98. log.error("图片上传失败,失败原因:{}", ioe.getMessage());
  99. throw new ServiceException("图片上传失败");
  100. }
  101. File dest = new File(filePath);
  102. if (!dest.getParentFile().exists()) {
  103. log.error("图片上传失败,失败原因:服务器图片不存在");
  104. throw new ServiceException("图片上传失败");
  105. }
  106. photoDto.setUrl(File.separator+ directoryName + File.separator + fileName);
  107. PhotoPo photoPo = new PhotoPo();
  108. BeanUtil.copyProperties(photoPo, photoDto);
  109. photoPo.setCreateTime(new Date());
  110. try {
  111. photoMapper.insert(photoPo);
  112. PhotoVo photoVo = new PhotoVo();
  113. BeanUtil.copyProperties(photoVo, photoPo);
  114. photoVo.setStatus(2);
  115. return photoVo;
  116. } catch (Exception e) {
  117. log.error("新增图片数据失败,失败原因:{}", e.getMessage());
  118. throw new ServiceException("新增图片数据失败");
  119. }
  120. }
  121. @Override
  122. @Transactional(rollbackFor = ServiceException.class)
  123. public void editPhoto(PhotoDto photoDto) {
  124. validate(photoDto);
  125. PhotoPo photoPo = photoMapper.selectById(photoDto.getId());
  126. AssertUtils.assertNotNull(photoPo, CommonConstant.PHOTO_NOT_EXIST);
  127. if (!StringUtils.isBlank(photoDto.getName())) {
  128. photoPo.setName(photoDto.getName());
  129. }
  130. if (photoDto.getStatus() != null) {
  131. photoPo.setStatus(photoDto.getStatus());
  132. }
  133. if (photoDto.getType() != null) {
  134. photoPo.setType(photoDto.getType());
  135. }
  136. if (photoDto.getGoPageUrl() != null) {
  137. photoPo.setGoPageUrl(photoDto.getGoPageUrl());
  138. }
  139. photoPo.setUpdateTime(new Date());
  140. try {
  141. photoMapper.updateById(photoPo);
  142. } catch (Exception e) {
  143. log.error("修改图片数据失败,失败原因:{}", e.getMessage());
  144. throw new ServiceException("修改图片数据异常");
  145. }
  146. }
  147. @Override
  148. @Transactional(rollbackFor = ServiceException.class)
  149. public void deletePhoto(Long id) {
  150. PhotoPo photoPo = photoMapper.selectById(id);
  151. AssertUtils.assertNotNull(photoPo, CommonConstant.PHOTO_NOT_EXIST);
  152. String url = uploadPath + photoPo.getUrl();
  153. File file = new File(url);
  154. boolean deleteResult = false;
  155. if (file.exists()) {
  156. deleteResult = file.delete();
  157. }
  158. if (deleteResult) {
  159. photoPo.setActivated(CommonConstant.ACTIVATED_DELETED);
  160. photoPo.setUpdateTime(new Date());
  161. try {
  162. photoMapper.updateById(photoPo);
  163. } catch (Exception e) {
  164. log.error("删除图片失败,失败原因:{}", e.getMessage());
  165. throw new ServiceException("删除图片失败");
  166. }
  167. } else {
  168. throw new ServiceException("删除图片失败");
  169. }
  170. }
  171. @Override
  172. public PhotoVo getPhotoById(Long id) {
  173. PhotoPo photoPo = photoMapper.selectById(id);
  174. PhotoVo photoVo = new PhotoVo();
  175. BeanUtil.copyProperties(photoVo, photoPo);
  176. if (photoPo.getUrl() != null) {
  177. String url = accessPath + accessResource + photoPo.getUrl().replace("/","");
  178. photoVo.setUrl(url);
  179. }
  180. return photoVo;
  181. }
  182. @Override
  183. public PhotoPo getPhotoByUrl(String url) {
  184. return photoMapper.getPhotoByUrl(url);
  185. }
  186. @Override
  187. public JSONObject getPhotosForHomePage() {
  188. JSONObject result = new JSONObject();
  189. PhotoPo middlePhoto = photoMapper.getHomePageMiddlePhoto();
  190. PhotoVo middlePhotoVo = new PhotoVo();
  191. if (middlePhoto != null) {
  192. BeanUtil.copyProperties(middlePhotoVo, middlePhoto);
  193. if (middlePhoto.getUrl() != null) {
  194. String url = accessPath + accessResource + middlePhoto.getUrl().replace("/","");
  195. middlePhotoVo.setUrl(url);
  196. }
  197. }
  198. List<PhotoPo> homePageMainPhotos = photoMapper.getHomePageMainPhotos();
  199. List<PhotoVo> mainPhotos = new ArrayList<>();
  200. for (PhotoPo po : homePageMainPhotos) {
  201. PhotoVo vo = new PhotoVo();
  202. BeanUtil.copyProperties(vo, po);
  203. if (po.getUrl() != null) {
  204. String url = accessPath + accessResource + po.getUrl().replace("/","");
  205. vo.setUrl(url);
  206. }
  207. mainPhotos.add(vo);
  208. }
  209. result.put("1", mainPhotos);
  210. result.put("2", middlePhotoVo);
  211. return result;
  212. }
  213. }