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.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; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ObjectUtil; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @Service @Slf4j public class ArticleServiceImpl extends ServiceImpl implements IArticleService { @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 page = new Page<>(adminArticleDto.getPageNum(), adminArticleDto.getPageSize()); ArticleEntity articleEntity = new ArticleEntity(); String columnIdStrs = adminArticleDto.getColumnIdStr(); if(StrUtil.isNotEmpty(columnIdStrs)){ String[] columnIdStr = columnIdStrs.split(StringPool.COMMA); List 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 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); } @Override @Transactional public Result addArticle(AdminAddArticleDto adminAddArticleDto) { UserEntity userlogin = LoginUserUtil.getLoginUser(); long companyId = userlogin.getCompanyId() == null ? UserEntity.USER_BELONG_TOP : userlogin.getCompanyId(); ArticleEntity articleEntity = new ArticleEntity(); articleEntity.setCompanyId(companyId); String title = adminAddArticleDto.getTitle(); articleEntity.setTitle(title); String childTitle = adminAddArticleDto.getChildTitle(); articleEntity.setChildTitle(childTitle); String author = adminAddArticleDto.getAuthor(); articleEntity.setAuthor(author); String authorBelong = adminAddArticleDto.getAuthorBelong(); articleEntity.setAuthorBelong(authorBelong); String remark = adminAddArticleDto.getRemark(); articleEntity.setRemark(remark); long columnId = adminAddArticleDto.getColumnId() == null ? 0L : adminAddArticleDto.getColumnId(); ColumnEntity columnEntity = columnMapper.selectById(columnId); if(ObjectUtil.isEmpty(columnEntity)){ return Result.fail("请选择文章栏目"); } articleEntity.setColumnId(columnId); Integer visits = adminAddArticleDto.getVisits() == null ? 0 : adminAddArticleDto.getVisits(); articleEntity.setVisits(visits); String mainDiagram = adminAddArticleDto.getMainDiagram(); articleEntity.setMainDiagram(mainDiagram); 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("添加成功"); } @Override @Transactional public Result deleteArticle(Long id) { ArticleEntity articleEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(articleEntity)){ return Result.fail("文章不存在"); } articleEntity.setDelStatus(ArticleEntity.DELETE_STATUS_YES); this.baseMapper.updateById(articleEntity); return Result.ok("删除成功"); } @Override public Result seeArticleInfo(Long id) { ArticleEntity articleEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(articleEntity)){ return Result.fail("文章不存在"); } AdminSeeArticleInfoVo adminSeeArticleInfoVo = this.baseMapper.selectAdminArticleByid(id); return Result.ok(adminSeeArticleInfoVo); } @Override @Transactional public Result updateArticle(AdminUpdateArticleDto adminUpdateArticleDto) { Long id = adminUpdateArticleDto.getId(); ArticleEntity articleEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(articleEntity)){ return Result.fail("文章不存在"); } Integer isTop = adminUpdateArticleDto.getIsTop(); articleEntity.setIsTop(isTop); String title = adminUpdateArticleDto.getTitle(); articleEntity.setTitle(title); String childTitle = adminUpdateArticleDto.getChildTitle(); articleEntity.setChildTitle(childTitle); String author = adminUpdateArticleDto.getAuthor(); articleEntity.setAuthor(author); String remark = adminUpdateArticleDto.getRemark(); articleEntity.setRemark(remark); long columnId = adminUpdateArticleDto.getColumnId() == null ? 0L : adminUpdateArticleDto.getColumnId(); ColumnEntity columnEntity = columnMapper.selectById(columnId); 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(); articleEntity.setMainDiagram(mainDiagram); String atlas = adminUpdateArticleDto.getAtlas(); articleEntity.setAtlas(atlas); Date releaseTime = adminUpdateArticleDto.getReleaseTime(); 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("更新成功"); } @Override public Result delObjs(AdminDeleteDto adminDeleteDto) { String ids = adminDeleteDto.getIds(); if(StrUtil.isNotEmpty(ids)){ String[] articleIds = ids.split(StringPool.COMMA); for(String articleIdStr : articleIds){ Long articleId = Long.valueOf(articleIdStr); ArticleEntity articleEntity = this.baseMapper.selectById(articleId); articleEntity.setDelStatus(ArticleEntity.DELETE_STATUS_YES); this.baseMapper.updateById(articleEntity); } } return Result.ok("删除成功"); } @Override public Result updateStatusOff(Long id) { ArticleEntity articleEntity = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(articleEntity)){ return Result.fail("文章不存在"); } articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_NO); this.baseMapper.updateById(articleEntity); return Result.ok("操作成功"); } @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 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 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 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; } }