fix
Helius
2022-07-11 02b6979e6e7680c85ed0911109d182c9a235162f
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,6 +115,9 @@
        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);
@@ -100,6 +127,10 @@
            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("添加成功");
    }
@@ -136,8 +167,6 @@
        }
        Integer isTop = adminUpdateArticleDto.getIsTop();
        articleEntity.setIsTop(isTop);
        Integer releaseStatus = adminUpdateArticleDto.getReleaseStatus();
        articleEntity.setReleaseStatus(releaseStatus);
        String title = adminUpdateArticleDto.getTitle();
        articleEntity.setTitle(title);
        String childTitle = adminUpdateArticleDto.getChildTitle();
@@ -152,7 +181,12 @@
        if(ObjectUtil.isEmpty(columnEntity)){
            return Result.fail("请选择文章栏目");
        }
        if (!articleEntity.getColumnId().equals(columnId) && articleEntity.getBeforeColumnId() == -1) {
            articleEntity.setBeforeColumnId(articleEntity.getColumnId());
        }
        articleEntity.setColumnId(columnId);
        Integer visits = adminUpdateArticleDto.getVisits() == null ? 0 : adminUpdateArticleDto.getVisits();
        articleEntity.setVisits(visits);
        String mainDiagram = adminUpdateArticleDto.getMainDiagram();
@@ -163,11 +197,19 @@
        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());
        String authorBelong = adminUpdateArticleDto.getAuthorBelong();
        articleEntity.setAuthorBelong(authorBelong);
        this.baseMapper.updateById(articleEntity);
        return Result.ok("更新成功");
    }
@@ -196,6 +238,8 @@
        }
        articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_NO);
        this.baseMapper.updateById(articleEntity);
        releaseService.releaseColumn(articleEntity.getColumnId(), 2, articleEntity.getCompanyId());
        return Result.ok("操作成功");
    }
@@ -222,13 +266,61 @@
    }
    @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;
    }
}