From cf566cbe51e917833f3e4e9820b8656b9c7c6a7c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 11 Jul 2022 11:21:30 +0800
Subject: [PATCH] fix

---
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java |  143 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 130 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
index 1cb5399..6fb640a 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
@@ -1,29 +1,32 @@
 package com.xcong.farmer.cms.modules.system.service.Impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.farmer.cms.common.contants.AppContants;
 import com.xcong.farmer.cms.common.response.Result;
-import com.xcong.farmer.cms.modules.system.dto.AdminAddArticleDto;
-import com.xcong.farmer.cms.modules.system.dto.AdminArticleDto;
-import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto;
-import com.xcong.farmer.cms.modules.system.dto.AdminUpdateArticleDto;
-import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
-import com.xcong.farmer.cms.modules.system.entity.ColumnEntity;
-import com.xcong.farmer.cms.modules.system.entity.UserEntity;
-import com.xcong.farmer.cms.modules.system.entity.UserRoleEntity;
+import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
+import com.xcong.farmer.cms.modules.system.dto.*;
+import com.xcong.farmer.cms.modules.system.entity.*;
 import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper;
 import com.xcong.farmer.cms.modules.system.mapper.ColumnMapper;
+import com.xcong.farmer.cms.modules.system.mapper.CompanyMapper;
 import com.xcong.farmer.cms.modules.system.service.IArticleService;
+import com.xcong.farmer.cms.modules.system.service.IReleaseService;
 import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
 import com.xcong.farmer.cms.modules.system.vo.AdminArticleVo;
 import com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo;
+import com.xcong.farmer.cms.modules.system.vo.WebArticleVo;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Date;
 
@@ -32,6 +35,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 
 @Service
 @Slf4j
@@ -40,24 +44,44 @@
     @Resource
     private ColumnMapper columnMapper;
 
+    @Resource
+    private CompanyMapper companyMapper;
+
+    @Autowired
+    private IReleaseService releaseService;
+
     @Override
     public Result getArticleInPage(AdminArticleDto adminArticleDto) {
         UserEntity userlogin = LoginUserUtil.getLoginUser();
         long companyId = userlogin.getCompanyId() == null ? UserEntity.USER_BELONG_TOP : userlogin.getCompanyId();
         Page<AdminArticleVo> page = new Page<>(adminArticleDto.getPageNum(), adminArticleDto.getPageSize());
         ArticleEntity articleEntity = new ArticleEntity();
-        Long columnId = adminArticleDto.getColumnId() == null ? 0L : adminArticleDto.getColumnId();
-        if(columnId != 0L){
-            articleEntity.setColumnId(columnId);
+        String columnIdStrs = adminArticleDto.getColumnIdStr();
+        if(StrUtil.isNotEmpty(columnIdStrs)){
+            String[] columnIdStr = columnIdStrs.split(StringPool.COMMA);
+            List<Long> columnList = new ArrayList<>();
+            for(String columnIdString : columnIdStr){
+                columnList.add(Long.valueOf(columnIdString));
+            }
+            articleEntity.setColumnList(columnList);
         }
         String title = adminArticleDto.getTitle();
         if(StrUtil.isNotEmpty(title)){
             articleEntity.setTitle(title);
         }
+
         if(UserEntity.USER_BELONG_TOP != companyId){
             articleEntity.setCompanyId(companyId);
         }
         IPage<AdminArticleVo> list = this.baseMapper.selectAdminArticleInPage(page,articleEntity);
+        if (CollUtil.isNotEmpty(list.getRecords())) {
+            for (AdminArticleVo record : list.getRecords()) {
+                // 站内
+                if (record.getType() == 1) {
+                    record.setArticleUrl(record.getBaseUrl() + record.getPath() + "/" + record.getId() + ".html");
+                }
+            }
+        }
         return Result.ok(list);
     }
 
@@ -91,13 +115,22 @@
         String atlas = adminAddArticleDto.getAtlas();
             articleEntity.setAtlas(atlas);
         Date releaseTime = adminAddArticleDto.getReleaseTime();
+        if (releaseTime == null) {
+            releaseTime = new Date();
+        }
             articleEntity.setReleaseTime(releaseTime);
+        Integer isTop = adminAddArticleDto.getIsTop();
+        articleEntity.setIsTop(isTop);
         Integer releaseStatus = adminAddArticleDto.getReleaseStatus();
         articleEntity.setReleaseStatus(releaseStatus);
         String articleDetails = adminAddArticleDto.getArticleDetails();
             articleEntity.setArticleDetails(articleDetails);
         String uploadFile = adminAddArticleDto.getUploadFile();
             articleEntity.setUploadFile(uploadFile);
+
+        articleEntity.setArticleUrl(adminAddArticleDto.getArticleUrl());
+        articleEntity.setType(adminAddArticleDto.getType());
+        articleEntity.setContentType(adminAddArticleDto.getContentType());
         this.baseMapper.insert(articleEntity);
         return Result.ok("添加成功");
     }
@@ -132,8 +165,8 @@
         if(ObjectUtil.isEmpty(articleEntity)){
             return Result.fail("文章不存在");
         }
-        Integer releaseStatus = adminUpdateArticleDto.getReleaseStatus();
-        articleEntity.setReleaseStatus(releaseStatus);
+        Integer isTop = adminUpdateArticleDto.getIsTop();
+        articleEntity.setIsTop(isTop);
         String title = adminUpdateArticleDto.getTitle();
         articleEntity.setTitle(title);
         String childTitle = adminUpdateArticleDto.getChildTitle();
@@ -148,7 +181,12 @@
         if(ObjectUtil.isEmpty(columnEntity)){
             return Result.fail("请选择文章栏目");
         }
+
+        if (!articleEntity.getColumnId().equals(columnId) && articleEntity.getBeforeColumnId() == null) {
+            articleEntity.setBeforeColumnId(articleEntity.getColumnId());
+        }
         articleEntity.setColumnId(columnId);
+
         Integer visits = adminUpdateArticleDto.getVisits() == null ? 0 : adminUpdateArticleDto.getVisits();
         articleEntity.setVisits(visits);
         String mainDiagram = adminUpdateArticleDto.getMainDiagram();
@@ -159,11 +197,20 @@
         if(ObjectUtil.isNotEmpty(releaseTime)){
             articleEntity.setReleaseTime(releaseTime);
         }
+        Integer releaseStatus = adminUpdateArticleDto.getReleaseStatus();
         articleEntity.setReleaseStatus(releaseStatus);
         String articleDetails = adminUpdateArticleDto.getArticleDetails();
         articleEntity.setArticleDetails(articleDetails);
         String uploadFile = adminUpdateArticleDto.getUploadFile();
         articleEntity.setUploadFile(uploadFile);
+
+        articleEntity.setArticleUrl(adminUpdateArticleDto.getArticleUrl());
+        articleEntity.setType(adminUpdateArticleDto.getType());
+        articleEntity.setContentType(adminUpdateArticleDto.getContentType());
+        articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_NO);
+
+        String authorBelong = adminUpdateArticleDto.getAuthorBelong();
+        articleEntity.setAuthorBelong(authorBelong);
         this.baseMapper.updateById(articleEntity);
         return Result.ok("更新成功");
     }
@@ -196,13 +243,83 @@
     }
 
     @Override
+    public Result updateIstop(Long id) {
+        ArticleEntity articleEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(articleEntity)){
+            return Result.fail("文章不存在");
+        }
+        articleEntity.setIsTop(ArticleEntity.ISTOP_YES);
+        this.baseMapper.updateById(articleEntity);
+        return Result.ok("操作成功");
+    }
+
+    @Override
+    public Result updateIstopOff(Long id) {
+        ArticleEntity articleEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(articleEntity)){
+            return Result.fail("文章不存在");
+        }
+        articleEntity.setIsTop(ArticleEntity.ISTOP_NO);
+        this.baseMapper.updateById(articleEntity);
+        return Result.ok("操作成功");
+    }
+
+    @Override
+    public Result webArticleInPage(HttpServletRequest request, WebArticleInPageDto webArticleInPageDto) {
+        String website = request.getHeader(AppContants.WEBSITE_HEADER);
+        Long companyId = getCompanyIdFromWebsite(website);
+
+        Page<WebArticleVo> page = new Page<>(webArticleInPageDto.getPageNum(), webArticleInPageDto.getPageSize());
+        ArticleEntity articleEntity = new ArticleEntity();
+        Long columnId = webArticleInPageDto.getColumnId() == null ? 0L : webArticleInPageDto.getColumnId();
+        if(columnId != 0L){
+            articleEntity.setColumnId(columnId);
+        }
+        String author = webArticleInPageDto.getAuthor();
+        if(StrUtil.isNotEmpty(author)){
+            articleEntity.setAuthor(author);
+        }
+        String queryKey = webArticleInPageDto.getQueryKey();
+        if(StrUtil.isNotEmpty(queryKey)){
+            articleEntity.setTitle(queryKey);
+        }
+        if(UserEntity.USER_BELONG_TOP != companyId){
+            articleEntity.setCompanyId(companyId);
+        }
+        String timeType = webArticleInPageDto.getTimeType();
+        if(StrUtil.isNotEmpty(timeType)){
+            articleEntity.setTimeType(timeType);
+        }
+        IPage<WebArticleVo> list = this.baseMapper.selectWebArticleInPage(page,articleEntity);
+        return Result.ok(list);
+    }
+
+    @Override
     public Result updateStatusOn(Long id) {
+        Long companyId = LoginUserUtil.getCompanyId();
         ArticleEntity articleEntity = this.baseMapper.selectById(id);
         if(ObjectUtil.isEmpty(articleEntity)){
             return Result.fail("文章不存在");
         }
         articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_YES);
+        articleEntity.setBeforeColumnId(null);
         this.baseMapper.updateById(articleEntity);
+
+        releaseService.releaseArticle(articleEntity.getId(), companyId);
         return Result.ok("操作成功");
     }
+
+    private Long getCompanyIdFromWebsite(String website){
+        List<CompanyEntity> companyEntities = companyMapper.selectList(new QueryWrapper<>());
+        Long companyId = 0L;
+        if(CollUtil.isNotEmpty(companyEntities)){
+            for(CompanyEntity companyEntity : companyEntities){
+                boolean contains = StrUtil.contains(companyEntity.getWebAddress(), website);
+                if(contains){
+                    companyId = companyEntity.getId();
+                }
+            }
+        }
+        return companyId;
+    }
 }

--
Gitblit v1.9.1