|
@@ -0,0 +1,149 @@
|
|
|
+package com.jkcredit.sysnews.service.photo;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.jkcredit.sysnews.mapper.PhotoMapper;
|
|
|
+import com.jkcredit.sysnews.model.dto.photo.PhotoDto;
|
|
|
+import com.jkcredit.sysnews.model.po.photo.PhotoPo;
|
|
|
+import com.jkcredit.sysnews.model.vo.photo.PhotoVo;
|
|
|
+import com.jkcredit.sysnews.service.base.BaseService;
|
|
|
+import com.jkcredit.sysnews.spi.lang.constant.CommonConstant;
|
|
|
+import com.jkcredit.sysnews.spi.lang.exception.ServiceException;
|
|
|
+import com.jkcredit.sysnews.util.AssertUtils;
|
|
|
+import com.jkcredit.sysnews.util.BeanUtil;
|
|
|
+import com.jkcredit.sysnews.util.UploadUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.io.File;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description:
|
|
|
+ * @author: xusonglin
|
|
|
+ * @create: 2020/3/1 0:26
|
|
|
+ * @version: V1.0
|
|
|
+ **/
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class PhotoServiceImpl extends BaseService implements PhotoService {
|
|
|
+ @Value("${photo.absolutePath}")
|
|
|
+ private String absolutePath;
|
|
|
+ @Value("${photo.relativePath}")
|
|
|
+ private String relativePath;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ PhotoMapper photoMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String upload(MultipartFile photo) {
|
|
|
+ String filePath = absolutePath + relativePath;
|
|
|
+ String realPath = UploadUtil.upload(photo, filePath);
|
|
|
+ if (!StringUtils.isBlank(realPath)) {
|
|
|
+ return realPath;
|
|
|
+ } else {
|
|
|
+ log.error("图片上传失败");
|
|
|
+ throw new ServiceException("图片上传失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<PhotoVo> getPhotos(Page page, PhotoDto photoDto) {
|
|
|
+ IPage<PhotoPo> photoPoIPage = photoMapper.getPhotos(page, photoDto);
|
|
|
+ return photoPoIPage.convert(this::convert);
|
|
|
+ }
|
|
|
+
|
|
|
+ private PhotoVo convert(PhotoPo po) {
|
|
|
+ PhotoVo vo = new PhotoVo();
|
|
|
+ BeanUtils.copyProperties(po, vo);
|
|
|
+ vo.setUrl(absolutePath + vo.getUrl());
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void savePhoto(PhotoDto photoDto) {
|
|
|
+ validate(photoDto);
|
|
|
+
|
|
|
+ String photoPath = photoDto.getUrl();
|
|
|
+ String[] photoPathArgs = photoPath.split("/");
|
|
|
+ String url = "/" +photoPathArgs[photoPathArgs.length-3] + "/" + photoPathArgs[photoPathArgs.length-2]
|
|
|
+ + "/" + photoPathArgs[photoPathArgs.length-1];
|
|
|
+ photoDto.setUrl(url);
|
|
|
+
|
|
|
+ PhotoPo photoPo = new PhotoPo();
|
|
|
+ BeanUtil.copyProperties(photoPo, photoDto);
|
|
|
+
|
|
|
+ photoPo.setCreateTime(new Date());
|
|
|
+
|
|
|
+ try {
|
|
|
+ photoMapper.insert(photoPo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("新增图片数据失败,失败原因:{}", e.getMessage());
|
|
|
+ throw new ServiceException("新增图片数据失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void editPhoto(PhotoDto photoDto) {
|
|
|
+ validate(photoDto);
|
|
|
+
|
|
|
+ PhotoPo photoPo = photoMapper.selectById(photoDto.getId());
|
|
|
+ AssertUtils.assertNotNull(photoPo, CommonConstant.PHOTO_NOT_EXIST);
|
|
|
+
|
|
|
+ if (!StringUtils.isBlank(photoDto.getName())) {
|
|
|
+ photoPo.setName(photoDto.getName());
|
|
|
+ }
|
|
|
+ if (photoDto.getStatus() != null) {
|
|
|
+ photoPo.setStatus(photoDto.getStatus());
|
|
|
+ }
|
|
|
+ photoPo.setUpdateTime(new Date());
|
|
|
+ try {
|
|
|
+ photoMapper.updateById(photoPo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("修改图片数据失败,失败原因:{}", e.getMessage());
|
|
|
+ throw new ServiceException("修改图片数据异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deletePhoto(Long id) {
|
|
|
+ PhotoPo photoPo = photoMapper.selectById(id);
|
|
|
+ AssertUtils.assertNotNull(photoPo, CommonConstant.PHOTO_NOT_EXIST);
|
|
|
+
|
|
|
+ String url = photoPo.getUrl();
|
|
|
+ String realPath = absolutePath + url;
|
|
|
+ File file = new File(realPath);
|
|
|
+
|
|
|
+ boolean deleteResult = false;
|
|
|
+ if (file.exists()) {
|
|
|
+ deleteResult = file.delete();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (deleteResult) {
|
|
|
+ photoPo.setActivated(CommonConstant.ACTIVATED_DELETED);
|
|
|
+ photoPo.setUpdateTime(new Date());
|
|
|
+ try {
|
|
|
+ photoMapper.updateById(photoPo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("删除图片失败,失败原因:{}", e.getMessage());
|
|
|
+ throw new ServiceException("删除图片失败");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("删除图片失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PhotoVo getPhotoById(Long id) {
|
|
|
+ PhotoPo photoPo = photoMapper.selectById(id);
|
|
|
+ PhotoVo photoVo = new PhotoVo();
|
|
|
+ BeanUtil.copyProperties(photoVo, photoPo);
|
|
|
+ photoVo.setUrl(absolutePath + photoVo.getUrl());
|
|
|
+ return photoVo;
|
|
|
+ }
|
|
|
+}
|