123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- package com.jkcredit.sysnews.service.photo;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.jkcredit.sysnews.enums.PhotoStatusEnum;
- 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.transaction.annotation.Transactional;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import java.io.File;
- import java.io.IOException;
- import java.util.*;
- /**
- * @description:
- * @author: xusonglin
- * @create: 2020/3/1 0:26
- * @version: V1.0
- **/
- @Slf4j
- @Service
- @Transactional(readOnly = true)
- public class PhotoServiceImpl extends BaseService implements PhotoService {
- @Value("${photo.uploadPath}")
- private String uploadPath;
- @Value("${photo.accessPath}")
- private String accessPath;
- @Value("${photo.accessResource}")
- private String accessResource;
- @Resource
- PhotoMapper photoMapper;
- @Override
- @Transactional(rollbackFor = ServiceException.class)
- public String upload(MultipartFile photo) {
- String fileName = UUID.randomUUID().toString().replace("-","") + "-" +
- photo.getOriginalFilename();
- Calendar cal = Calendar.getInstance();
- int month = cal.get(Calendar.MONTH) + 1;
- int year = cal.get(Calendar.YEAR);
- String directoryName = year+"-"+month;
- String filePath = uploadPath + directoryName + File.separator + fileName;
- try {
- UploadUtil.upload(photo, filePath);
- } catch (IOException ioe) {
- log.error("图片上传失败,失败原因:{}", ioe.getMessage());
- throw new ServiceException("图片上传失败");
- }
- try {
- PhotoPo photoPo = new PhotoPo();
- photoPo.setCreateTime(new Date());
- photoPo.setStatus(PhotoStatusEnum.UPLOAD_SUCCESS_NOT_USE.getValue());
- photoPo.setUrl(File.separator+ directoryName + File.separator + fileName);
- photoMapper.insert(photoPo);
- } catch (Exception e) {
- log.error("图片上传-新增图片失败, 图片地址:{}", filePath);
- log.error("图片上传-新增图片失败,失败原因:{}", e.getMessage());
- throw new ServiceException("图片上传-新增图片失败");
- }
- return accessPath + accessResource + File.separator + directoryName + File.separator + fileName;
- }
- @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);
- return vo;
- }
- @Override
- @Transactional(rollbackFor = ServiceException.class)
- public PhotoVo savePhoto(PhotoDto photoDto) {
- validate(photoDto);
- String fileName = UUID.randomUUID().toString().replace("-","") + "-" +
- photoDto.getPhoto().getOriginalFilename();
- Calendar cal = Calendar.getInstance();
- int month = cal.get(Calendar.MONTH) + 1;
- int year = cal.get(Calendar.YEAR);
- String directoryName = year+"-"+month;
- String filePath = uploadPath + File.separator + directoryName + File.separator + fileName;
- try {
- UploadUtil.upload(photoDto.getPhoto(), filePath);
- } catch (IOException ioe) {
- log.error("图片上传失败,失败原因:{}", ioe.getMessage());
- throw new ServiceException("图片上传失败");
- }
- File dest = new File(filePath);
- if (!dest.getParentFile().exists()) {
- log.error("图片上传失败,失败原因:服务器图片不存在");
- throw new ServiceException("图片上传失败");
- }
- photoDto.setUrl(File.separator+ directoryName + File.separator + fileName);
- PhotoPo photoPo = new PhotoPo();
- BeanUtil.copyProperties(photoPo, photoDto);
- photoPo.setCreateTime(new Date());
- try {
- photoMapper.insert(photoPo);
- PhotoVo photoVo = new PhotoVo();
- BeanUtil.copyProperties(photoVo, photoPo);
- photoVo.setStatus(2);
- return photoVo;
- } catch (Exception e) {
- log.error("新增图片数据失败,失败原因:{}", e.getMessage());
- throw new ServiceException("新增图片数据失败");
- }
- }
- @Override
- @Transactional(rollbackFor = ServiceException.class)
- 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());
- }
- if (photoDto.getType() != null) {
- photoPo.setType(photoDto.getType());
- }
- if (photoDto.getGoPageUrl() != null) {
- photoPo.setGoPageUrl(photoDto.getGoPageUrl());
- }
- photoPo.setUpdateTime(new Date());
- try {
- photoMapper.updateById(photoPo);
- } catch (Exception e) {
- log.error("修改图片数据失败,失败原因:{}", e.getMessage());
- throw new ServiceException("修改图片数据异常");
- }
- }
- @Override
- @Transactional(rollbackFor = ServiceException.class)
- public void deletePhoto(Long id) {
- PhotoPo photoPo = photoMapper.selectById(id);
- AssertUtils.assertNotNull(photoPo, CommonConstant.PHOTO_NOT_EXIST);
- String url = uploadPath + photoPo.getUrl();
- File file = new File(url);
- 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);
- if (photoPo.getUrl() != null) {
- String url = accessPath + accessResource + photoPo.getUrl().replace("/","");
- photoVo.setUrl(url);
- }
- return photoVo;
- }
- @Override
- public PhotoPo getPhotoByUrl(String url) {
- return photoMapper.getPhotoByUrl(url);
- }
- @Override
- public JSONObject getPhotosForHomePage() {
- JSONObject result = new JSONObject();
- PhotoPo middlePhoto = photoMapper.getHomePageMiddlePhoto();
- PhotoVo middlePhotoVo = new PhotoVo();
- if (middlePhoto != null) {
- BeanUtil.copyProperties(middlePhotoVo, middlePhoto);
- if (middlePhoto.getUrl() != null) {
- String url = accessPath + accessResource + middlePhoto.getUrl().replace("/","");
- middlePhotoVo.setUrl(url);
- }
- }
- List<PhotoPo> homePageMainPhotos = photoMapper.getHomePageMainPhotos();
- List<PhotoVo> mainPhotos = new ArrayList<>();
- for (PhotoPo po : homePageMainPhotos) {
- PhotoVo vo = new PhotoVo();
- BeanUtil.copyProperties(vo, po);
- if (po.getUrl() != null) {
- String url = accessPath + accessResource + po.getUrl().replace("/","");
- vo.setUrl(url);
- }
- mainPhotos.add(vo);
- }
- result.put("1", mainPhotos);
- result.put("2", middlePhotoVo);
- return result;
- }
- }
|