| | |
| | | package com.yeshi.fanli.service.impl.dynamic;
|
| | |
|
| | | import java.io.InputStream;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | | import java.util.UUID;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.cache.annotation.Cacheable;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.web.multipart.MultipartFile;
|
| | | import org.yeshi.utils.DateUtil;
|
| | | import org.yeshi.utils.tencentcloud.COSManager;
|
| | |
|
| | | import com.yeshi.fanli.dao.dynamic.ArticleOfficialDao;
|
| | | import com.yeshi.fanli.entity.dynamic.ArticleOfficial;
|
| | | import com.yeshi.fanli.exception.dynamic.ArticleOfficialException;
|
| | | import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.vo.dynamic.ArticleVO;
|
| | |
|
| | | @Service
|
| | | public class ArticleOfficialServiceImpl implements ArticleOfficialService {
|
| | | |
| | | @Resource
|
| | | private ArticleOfficialDao articleOfficialDao;
|
| | |
|
| | |
|
| | | @Override
|
| | | public void save(MultipartFile file, ArticleOfficial record) throws ArticleOfficialException {
|
| | | Integer state = record.getState();
|
| | | if (state == null) {
|
| | | state = 0;
|
| | | } |
| | | |
| | | String tilte =record.getTitle();
|
| | | String content = record.getContent();
|
| | | if (StringUtil.isNullOrEmpty(tilte) || StringUtil.isNullOrEmpty(content)) {
|
| | | throw new ArticleOfficialException(1, "标题、内容不能为空");
|
| | | }
|
| | | |
| | | Integer readNum = record.getReadNum();
|
| | | if (readNum == null) {
|
| | | throw new ArticleOfficialException(1, "请输入浏览数量(虚拟)");
|
| | | }
|
| | | |
| | | String tags = record.getTags();
|
| | | if (!StringUtil.isNullOrEmpty(tags)) {
|
| | | String[] arrayTags = tags.trim().split("\\s+");
|
| | | String tagsColour = record.getTagsColour();
|
| | | if (!StringUtil.isNullOrEmpty(tagsColour)) {
|
| | | String[] arrayTagsColour = tagsColour.trim().split("\\s+");
|
| | | if (arrayTags.length != arrayTagsColour.length) {
|
| | | throw new ArticleOfficialException(1, "标签与标签颜色数量不匹配");
|
| | | }
|
| | | record.setTagsColour(tagsColour.trim());
|
| | | }
|
| | | record.setTags(tags.trim());
|
| | | }
|
| | | |
| | | String articlelink = record.getArticlelink();
|
| | | if (StringUtil.isNullOrEmpty(articlelink)) {
|
| | | throw new ArticleOfficialException(1, "文章链接不能为空");
|
| | | }
|
| | | |
| | | |
| | | try {
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
| | | String startTime_str = record.getStartTimeChar();
|
| | | if (!StringUtil.isNullOrEmpty(startTime_str)) {
|
| | | startTime_str = startTime_str.replaceAll("T", " ");
|
| | | record.setStartTime(format.parse(startTime_str));
|
| | | }
|
| | | |
| | | String endTime_str = record.getEndTimeChar();
|
| | | if (!StringUtil.isNullOrEmpty(endTime_str)) {
|
| | | endTime_str = endTime_str.replaceAll("T", " ");
|
| | | record.setEndTime(format.parse(endTime_str));
|
| | | }
|
| | | } catch (Exception e) {
|
| | | throw new ArticleOfficialException(1, "时间格式不正确");
|
| | | }
|
| | | |
| | | Date startTime = record.getStartTime();
|
| | | if (startTime == null) {
|
| | | record.setStartTime(new Date());
|
| | | }
|
| | | |
| | | Date endTime = record.getEndTime();
|
| | | if (endTime == null) {
|
| | | record.setEndTime(DateUtil.plusYears(new Date(), 100));
|
| | | }
|
| | | |
| | | Boolean videoContain = record.getVideoContain();
|
| | | if (videoContain == null) {
|
| | | videoContain = false;
|
| | | }
|
| | | |
| | | Double weight = record.getWeight();
|
| | | if (weight == null)
|
| | | record.setWeight(1.1);
|
| | | |
| | | String picture = null;
|
| | | if (file != null) {
|
| | | try { // 图片上传
|
| | | picture = uploadPicture(file);
|
| | | } catch (Exception e) {
|
| | | throw new ArticleOfficialException(1, "图片上传失败");
|
| | | }
|
| | | |
| | | if (!StringUtil.isNullOrEmpty(picture)) {
|
| | | record.setPicture(picture);
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | if (StringUtil.isNullOrEmpty(record.getId())) {
|
| | | record.setId(UUID.randomUUID().toString().replace("-", ""));
|
| | | } else {
|
| | | ArticleOfficial resultObj = articleOfficialDao.getById(record.getId());
|
| | | if (resultObj == null)
|
| | | throw new ArticleOfficialException(1, "修改内容已不存在");
|
| | | |
| | | if (!StringUtil.isNullOrEmpty(resultObj.getPicture())) {
|
| | | if (!StringUtil.isNullOrEmpty(picture)) {
|
| | | COSManager.getInstance().deleteFile(resultObj.getPicture());
|
| | | } else {
|
| | | record.setPicture(resultObj.getPicture());
|
| | | }
|
| | | }
|
| | | }
|
| | | articleOfficialDao.save(record);
|
| | | }
|
| | | |
| | | /**
|
| | | * 上传图片
|
| | | * |
| | | * @param file
|
| | | * @return
|
| | | * @throws Exception
|
| | | */
|
| | | public String uploadPicture(MultipartFile file) throws Exception {
|
| | | // 文件解析
|
| | | InputStream inputStream = file.getInputStream();
|
| | | String contentType = file.getContentType();
|
| | | String type = contentType.substring(contentType.indexOf("/") + 1);
|
| | |
|
| | | // 文件路径
|
| | | String filePath = "/img/article/" + UUID.randomUUID().toString().replace("-", "") + "." + type;
|
| | | // 执行上传
|
| | | String fileLink = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
|
| | |
|
| | | return fileLink;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void deleteBatchByPrimaryKey(List<String> list) {
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | | |
| | | for (String id: list) {
|
| | | articleOfficialDao.deleteById(id);
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public ArticleOfficial getById(String id) {
|
| | | return articleOfficialDao.getById(id);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public void updateReadNum(String id) {
|
| | | ArticleOfficial article = articleOfficialDao.getById(id);
|
| | | if (article != null) {
|
| | | Integer readNum = article.getReadNum();
|
| | | if (readNum == null) {
|
| | | readNum = 0;
|
| | | }
|
| | | article.setReadNum(readNum + 1);
|
| | | |
| | | Integer readNumReal = article.getReadNumReal();
|
| | | if (readNumReal == null) {
|
| | | readNumReal = 0;
|
| | | }
|
| | | article.setReadNumReal(readNumReal + 1);
|
| | | |
| | | articleOfficialDao.save(article);
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public List<ArticleOfficial> query(int start, int count, String key,Integer state) {
|
| | | return articleOfficialDao.query(start, count, key, state);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public long count(String key, Integer state) {
|
| | | return articleOfficialDao.count(key, state);
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "dynamicCache", key = "'queryValid-'+#start+'-'+#key")
|
| | | public List<ArticleVO> queryValid(int start, int count, String key) {
|
| | | return articleOfficialDao.queryValid(start, count, key);
|
| | | }
|
| | | |
| | | @Override
|
| | | public long countValid(String key) {
|
| | | return articleOfficialDao.countValid(key);
|
| | | }
|
| | | }
|
| | | package com.yeshi.fanli.service.impl.dynamic; |
| | | |
| | | import java.io.InputStream; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.yeshi.utils.DateUtil; |
| | | import org.yeshi.utils.tencentcloud.COSManager; |
| | | |
| | | import com.yeshi.fanli.dao.dynamic.ArticleOfficialDao; |
| | | import com.yeshi.fanli.entity.dynamic.ArticleOfficial; |
| | | import com.yeshi.fanli.exception.dynamic.ArticleOfficialException; |
| | | import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService; |
| | | import com.yeshi.fanli.util.FilePathEnum; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.vo.dynamic.ArticleVO; |
| | | |
| | | @Service |
| | | public class ArticleOfficialServiceImpl implements ArticleOfficialService { |
| | | |
| | | @Resource |
| | | private ArticleOfficialDao articleOfficialDao; |
| | | |
| | | |
| | | @Override |
| | | public void save(MultipartFile file, ArticleOfficial record) throws ArticleOfficialException { |
| | | Integer state = record.getState(); |
| | | if (state == null) { |
| | | state = 0; |
| | | } |
| | | |
| | | String tilte =record.getTitle(); |
| | | String content = record.getContent(); |
| | | if (StringUtil.isNullOrEmpty(tilte) || StringUtil.isNullOrEmpty(content)) { |
| | | throw new ArticleOfficialException(1, "标题、内容不能为空"); |
| | | } |
| | | |
| | | Integer readNum = record.getReadNum(); |
| | | if (readNum == null) { |
| | | throw new ArticleOfficialException(1, "请输入浏览数量(虚拟)"); |
| | | } |
| | | |
| | | String tags = record.getTags(); |
| | | if (!StringUtil.isNullOrEmpty(tags)) { |
| | | String[] arrayTags = tags.trim().split("\\s+"); |
| | | String tagsColour = record.getTagsColour(); |
| | | if (!StringUtil.isNullOrEmpty(tagsColour)) { |
| | | String[] arrayTagsColour = tagsColour.trim().split("\\s+"); |
| | | if (arrayTags.length != arrayTagsColour.length) { |
| | | throw new ArticleOfficialException(1, "标签与标签颜色数量不匹配"); |
| | | } |
| | | record.setTagsColour(tagsColour.trim()); |
| | | } |
| | | record.setTags(tags.trim()); |
| | | } |
| | | |
| | | String articlelink = record.getArticlelink(); |
| | | if (StringUtil.isNullOrEmpty(articlelink)) { |
| | | throw new ArticleOfficialException(1, "文章链接不能为空"); |
| | | } |
| | | |
| | | |
| | | try { |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String startTime_str = record.getStartTimeChar(); |
| | | if (!StringUtil.isNullOrEmpty(startTime_str)) { |
| | | startTime_str = startTime_str.replaceAll("T", " "); |
| | | record.setStartTime(format.parse(startTime_str)); |
| | | } |
| | | |
| | | String endTime_str = record.getEndTimeChar(); |
| | | if (!StringUtil.isNullOrEmpty(endTime_str)) { |
| | | endTime_str = endTime_str.replaceAll("T", " "); |
| | | record.setEndTime(format.parse(endTime_str)); |
| | | } |
| | | } catch (Exception e) { |
| | | throw new ArticleOfficialException(1, "时间格式不正确"); |
| | | } |
| | | |
| | | Date startTime = record.getStartTime(); |
| | | if (startTime == null) { |
| | | record.setStartTime(new Date()); |
| | | } |
| | | |
| | | Date endTime = record.getEndTime(); |
| | | if (endTime == null) { |
| | | record.setEndTime(DateUtil.plusYears(new Date(), 100)); |
| | | } |
| | | |
| | | Boolean videoContain = record.getVideoContain(); |
| | | if (videoContain == null) { |
| | | videoContain = false; |
| | | } |
| | | |
| | | Double weight = record.getWeight(); |
| | | if (weight == null) |
| | | record.setWeight(1.1); |
| | | |
| | | String picture = null; |
| | | if (file != null) { |
| | | try { // 图片上传 |
| | | picture = uploadPicture(file); |
| | | } catch (Exception e) { |
| | | throw new ArticleOfficialException(1, "图片上传失败"); |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(picture)) { |
| | | record.setPicture(picture); |
| | | } |
| | | } |
| | | |
| | | |
| | | if (StringUtil.isNullOrEmpty(record.getId())) { |
| | | record.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | } else { |
| | | ArticleOfficial resultObj = articleOfficialDao.getById(record.getId()); |
| | | if (resultObj == null) |
| | | throw new ArticleOfficialException(1, "修改内容已不存在"); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(resultObj.getPicture())) { |
| | | if (!StringUtil.isNullOrEmpty(picture)) { |
| | | COSManager.getInstance().deleteFile(resultObj.getPicture()); |
| | | } else { |
| | | record.setPicture(resultObj.getPicture()); |
| | | } |
| | | } |
| | | } |
| | | articleOfficialDao.save(record); |
| | | } |
| | | |
| | | /** |
| | | * 上传图片 |
| | | * |
| | | * @param file |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public String uploadPicture(MultipartFile file) throws Exception { |
| | | // 文件解析 |
| | | InputStream inputStream = file.getInputStream(); |
| | | String contentType = file.getContentType(); |
| | | String type = contentType.substring(contentType.indexOf("/") + 1); |
| | | |
| | | // 文件路径 |
| | | String filePath = FilePathEnum.article.getPath() + UUID.randomUUID().toString().replace("-", "") + "." + type; |
| | | // 执行上传 |
| | | String fileLink = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); |
| | | |
| | | return fileLink; |
| | | } |
| | | |
| | | @Override |
| | | public void deleteBatchByPrimaryKey(List<String> list) { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | for (String id: list) { |
| | | articleOfficialDao.deleteById(id); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void switchState(String id) throws ArticleOfficialException { |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | throw new ArticleOfficialException(1, "请传递正确参数"); |
| | | } |
| | | |
| | | ArticleOfficial resultObj = articleOfficialDao.getById(id); |
| | | if (resultObj == null) { |
| | | throw new ArticleOfficialException(1, "此内容已不存在"); |
| | | } |
| | | |
| | | Integer state = resultObj.getState(); |
| | | if (state == null || state == 0) { |
| | | state = 1; |
| | | } else { |
| | | state = 0; |
| | | } |
| | | articleOfficialDao.updateSatate(id, state); |
| | | } |
| | | |
| | | @Override |
| | | public ArticleOfficial getById(String id) { |
| | | return articleOfficialDao.getById(id); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void updateReadNum(String id) { |
| | | ArticleOfficial article = articleOfficialDao.getById(id); |
| | | if (article != null) { |
| | | Integer readNum = article.getReadNum(); |
| | | if (readNum == null) { |
| | | readNum = 0; |
| | | } |
| | | article.setReadNum(readNum + 1); |
| | | |
| | | Integer readNumReal = article.getReadNumReal(); |
| | | if (readNumReal == null) { |
| | | readNumReal = 0; |
| | | } |
| | | article.setReadNumReal(readNumReal + 1); |
| | | |
| | | articleOfficialDao.save(article); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<ArticleOfficial> query(int start, int count, String key,Integer state) { |
| | | return articleOfficialDao.query(start, count, key, state); |
| | | } |
| | | |
| | | @Override |
| | | public long count(String key, Integer state) { |
| | | return articleOfficialDao.count(key, state); |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "dynamicCache", key = "'queryValid-'+#start+'-'+#key") |
| | | public List<ArticleVO> queryValid(int start, int count, String key) { |
| | | return articleOfficialDao.queryValid(start, count, key); |
| | | } |
| | | |
| | | @Override |
| | | public long countValid(String key) { |
| | | return articleOfficialDao.countValid(key); |
| | | } |
| | | } |