package com.qxueyou.scc.portal.information.service.impl; import com.fasterxml.jackson.databind.ObjectMapper; //import com.qxueyou.appraisal.console.article.dto.ArticleDTO; //import com.qxueyou.appraisal.console.article.dto.ArticleInfoDTO; //import com.qxueyou.appraisal.console.article.service.IArticleService; //import com.qxueyou.appraisal.console.article.vo.ListArticleVO; //import com.qxueyou.appraisal.console.article.vo.SaveArticleVO; //import com.qxueyou.appraisal.console.article.vo.UpdateArticleVO; //import com.qxueyou.entity.article.ArticleDO; //import com.qxueyou.model.Result; import com.qxueyou.scc.base.model.Pager; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.impl.CommonAppService; //import com.qxueyou.service.CommonMongoService; //import com.qxueyou.util.TraceMongoUtils; import com.qxueyou.scc.base.util.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.portal.information.dto.ArticleInfoDTO; import com.qxueyou.scc.portal.information.model.Information; import com.qxueyou.scc.portal.information.service.IInformationService; import com.qxueyou.scc.portal.information.vo.ListArticleVO; import com.qxueyou.scc.portal.information.vo.SaveArticleVO; import com.qxueyou.scc.portal.information.vo.UpdateArticleVO; import com.qxueyou.scc.user.model.UserTeacher; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Sort; //import org.springframework.data.mongodb.core.query.Criteria; //import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.time.LocalDateTime; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; /** * @author angy * @created by 2021/3/1 */ @Service public class InformationService extends CommonAppService implements IInformationService { private ObjectMapper objectMapper = new ObjectMapper(); /** * 获取资讯总条数 */ @Override public int findInformationCount(String type,String title,String status) { String hql = "from Information where type like :type and title like :title and status like :status and deleteFlag=0"; return findCountByComplexHql(hql, CollectionUtils.newObjectMap("type", type + "%","title", title + "%","status",status+"%")); } @Override public Result listArticle(ListArticleVO vo) { String type = StringUtils.isEmpty(vo.getType()) ? "" : vo.getType(); String title = StringUtils.isEmpty(vo.getKeyword()) ? "" : vo.getKeyword(); String hql = "from Information where deleteFlag=0 and type like ? and title like ? order by createTime desc"; List list = findList(hql, new Pager(vo.getSize(), vo.getPage()), CollectionUtils.newList(type.concat("%"), title.concat("%")), Information.class); int count =findInformationCount(type,title,"");//资讯总条数 return new Result(true,"success", CollectionUtils.newObjectMap("list", list, "count", count)); } @Override public Result save(SaveArticleVO vo) { Information articleDO = new Information(); BeanUtils.copyProperties(vo, articleDO); articleDO.setBrowseCount(0); articleDO.setDeleteFlag(0); articleDO.setCreateTime(new Date()); articleDO.setUpdateTime(new Date()); articleDO.setStatus(Information.DRAFT_STATUS); if (StringUtils.isNotBlank(vo.getAttachment())) { // try { //List> attachment = objectMapper.readValue(vo.getAttachment(), List.class); articleDO.setAttachment(vo.getAttachment()); // } catch (IOException e) { // log.error("文章附件json转换出错,json content : {}", vo.getAttachment()); // } } if (vo.getVideoUrl()!=null) { // String videoUrl=""; // try { // List> attachment = objectMapper.readValue(vo.getVideoUrl(), List.class); // for (Map map : attachment) { // videoUrl=map.get("videoUrl"); // } articleDO.setVideoUrl(vo.getVideoUrl()); // } catch (IOException e) { // log.error("文章附件json转换出错,json content : {}", vo.getVideoUrl()); // } } // TraceMongoUtils.setCreateTrace(articleDO); save(articleDO); return Result.SUCCESS; } @Override public Result delete(String id) { Result result = new Result(true); String[] arrStr = id.split(","); if (arrStr != null && arrStr.length > 0) { String hql = "update Information set deleteFlag = 1 where Id=?"; result = bulkUpdateInLoop(hql, arrStr); } // andIn(condition, "id", idLst); // // Update update = Update.update("deleteFlag", true); // update.set("updateTime", LocalDateTime.now()); // template.updateMulti(Query.query(condition), update, ArticleDO.class); // return result; // } @Override public Result update(UpdateArticleVO vo) { // Information articleDO = read(Information.class, vo.getId()); // if (StringUtils.equals(articleDO.getStatus(), Information.UP_STATUS)) { return new Result(true, "不能对发布状态的文章进行修改!"); } // BeanUtils.copyProperties(vo, articleDO); // if (StringUtils.isNotBlank(vo.getAttachment())) { // try { // List> attachment = objectMapper.readValue(vo.getAttachment(), List.class); articleDO.setAttachment(vo.getAttachment()); // } catch (IOException e) { // log.error("文章附件json转换出错,json content : {}", vo.getAttachment()); // } } if (StringUtils.isNotBlank(vo.getVideoUrl())) { String videoUrl=""; // try { // List> attachment = objectMapper.readValue(vo.getVideoUrl(), List.class); // for (Map map : attachment) { // videoUrl=map.get("videoUrl"); // } articleDO.setVideoUrl(vo.getVideoUrl()); // } catch (IOException e) { // log.error("文章附件json转换出错,json content : {}", vo.getVideoUrl()); // } } // // TraceMongoUtils.setUpdateTrace(articleDO); save(articleDO); return Result.SUCCESS; } // @Override public Result getArticleById(String id) { Information articleDO = read(Information.class, id); ArticleInfoDTO articleInfoDTO = new ArticleInfoDTO(); BeanUtils.copyProperties(articleDO, articleInfoDTO); return new Result(true, "articleInfoDTO",articleInfoDTO); // } @Override public Result upById(String id) { Information articleDO = read(Information.class, id); if (StringUtils.isNotBlank(articleDO.getTitle())) { int count = findInformationCount("", articleDO.getTitle(),Information.UP_STATUS); if (count > 0) { return new Result(true, "该标题文章已发布,请勿发布相同的标题文章!"); } } articleDO.setStatus(Information.UP_STATUS); // TraceMongoUtils.setUpdateTrace(articleDO); save(articleDO); return Result.SUCCESS; } // @Override public Result downById(String id) { Result result = new Result(true); // Criteria condition = condition(); String[] arrStr = id.split(","); // List idLst = Arrays.asList(arrStr); // andIn(condition, "id", idLst); // Update update = Update.update("status", Information.DOWN_STATUS); // update.set("updateTime", LocalDateTime.now()); // template.updateMulti(Query.query(condition), update, ArticleDO.class); String hql = "update Information set updateTime=now() ,status = 'down' where Id=?"; result = bulkUpdateInLoop(hql, arrStr); return result; } }