From cee43c11fe6772305e19e7ddee1e8276060046d6 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 05 Jul 2022 16:15:37 +0800 Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/farmer-cms --- src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java | 5 + src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java | 124 ++++++++++++++++++++++++ src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java | 22 ++++ src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java | 24 ++++ src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java | 4 src/main/resources/mapper/ArticleMapper.xml | 19 +++ src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java | 9 + src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java | 17 ++ src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java | 58 +++++++++-- src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java | 6 + 10 files changed, 268 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java b/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java new file mode 100644 index 0000000..cdb6610 --- /dev/null +++ b/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java @@ -0,0 +1,24 @@ +package com.xcong.farmer.cms.conversion; + +import com.xcong.farmer.cms.core.tag.data.ArticleData; +import com.xcong.farmer.cms.modules.system.entity.ArticleEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +/** + * @author wzy + * @date 2022-07-05 + **/ +@Mapper +public abstract class ArticleConversion { + public static ArticleConversion INSTANCE = Mappers.getMapper(ArticleConversion.class); + + @Mapping(source = "childTitle", target = "subTitle") + @Mapping(source = "visits", target = "views") + @Mapping(source = "mainDiagram", target = "thumb") + @Mapping(source = "releaseTime", target = "createTime") + @Mapping(source = "articleDetails", target = "content") + @Mapping(source = "uploadFile", target = "filePath") + public abstract ArticleData entityToData(ArticleEntity article); +} diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java index acfed60..61ecde7 100644 --- a/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java +++ b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java @@ -1,6 +1,17 @@ package com.xcong.farmer.cms.core.handler; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xcong.farmer.cms.conversion.ArticleConversion; import com.xcong.farmer.cms.core.node.AttrNode; +import com.xcong.farmer.cms.core.tag.data.ArticleData; +import com.xcong.farmer.cms.core.tag.model.Articles; +import com.xcong.farmer.cms.modules.system.entity.ArticleEntity; +import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper; +import com.xcong.farmer.cms.utils.SpringContextHolder; +import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.HashMap; @@ -11,23 +22,48 @@ * @author wzy * @date 2022-06-24 **/ +@Slf4j public class ArticlesDataParserHandler implements DataParserHandler { + private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class); + private String BASE_URL = "http://192.168.0.1"; @Override public void dataParser(AttrNode node) { - System.out.println("ArticlesDataParserHandler"); - List<Map<String, Object>> list = new ArrayList<>(); - Map<String, Object> map = new HashMap<>(); - map.put("path", "这是链接1"); - map.put("title", "这是标题1"); - list.add(map); + log.info("文章列表解析"); + Long companyId = (Long) node.getSystemDataValue("companyId"); + Articles param = (Articles) node.getParam(); - Map<String, Object> map2 = new HashMap<>(); - map2.put("path", "这是链接2"); - map2.put("title", "这是标题2"); - list.add(map2); + if (StrUtil.isEmpty(param.getColId())) { + Page<ArticleEntity> page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit())); - node.setData(list); + ArticleEntity article = new ArticleEntity(); + article.setColumnCode(param.getCode()); + article.setCompanyId(companyId); + IPage<ArticleEntity> listPage = articleMapper.selectArticleInPage(page, article); + + List<ArticleData> list = new ArrayList<>(); + for (ArticleEntity record : listPage.getRecords()) { + ArticleData articleData = entityToData(record); + list.add(articleData); + } + + node.setData(list); + } else { + + } + } + + public ArticleData entityToData(ArticleEntity article) { + ArticleData articleData = ArticleConversion.INSTANCE.entityToData(article); + + if (article.getType() == 2) { + articleData.setUrl(article.getArticleUrl()); + } else { + articleData.setUrl(BASE_URL + article.getPath() + "/" + article.getId() + ".html"); + } + + + return articleData; } } diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java index db0ebb5..7a742e7 100644 --- a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java +++ b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java @@ -25,7 +25,7 @@ private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class); private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class); - private String BASE_URL = "http://192.168.0.1/"; + private String BASE_URL = "http://192.168.0.1"; @Override public void dataParser(AttrNode attrNode) { @@ -55,13 +55,14 @@ public ColumnData columnToData(ColumnEntity column) { ColumnData columnData = ColumnConversion.INSTANCE.entityToData(column); - columnData.setUrl(BASE_URL + columnData.getCode()); + columnData.setUrl(BASE_URL + column.getPath()); if (column.getType() == 2) { if (column.getTargetType() == 1) { ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl())); - columnData.setUrl(BASE_URL + article.getColumnCode() + "/" + article.getId() + ".html"); + columnData.setUrl(BASE_URL + article.getPath() + "/" + article.getId() + ".html"); } else if (column.getTargetType() == 2) { - columnData.setUrl(BASE_URL + column.getTargetUrl()); + ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId()); + columnData.setUrl(BASE_URL + columnEntity.getPath()); } else { columnData.setUrl(column.getTargetUrl()); } diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java index 48ed2c0..ab64db2 100644 --- a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java +++ b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java @@ -27,7 +27,7 @@ private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class); private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class); - private String BASE_URL = "http://192.168.0.1/"; + private String BASE_URL = "http://192.168.0.1"; @Override public void dataParser(AttrNode node) { log.info("导航栏解析"); @@ -40,6 +40,13 @@ } List<NavData> list = new ArrayList<>(); + + NavData index = new NavData(); + index.setTitle("首页"); + index.setUrl(BASE_URL); + index.setCode("index"); + list.add(index); + for (ColumnEntity column : columns) { NavData navData = columnToNav(column); @@ -50,6 +57,7 @@ } list.add(navData); } + node.setData(list); } @@ -65,13 +73,14 @@ public NavData columnToNav(ColumnEntity column) { NavData navData = ColumnConversion.INSTANCE.columnToNav(column); - navData.setUrl(BASE_URL + navData.getCode()); + navData.setUrl(BASE_URL + column.getPath()); if (column.getType() == 2) { if (column.getTargetType() == 1) { ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl())); - navData.setUrl(BASE_URL + article.getColumnCode() + "/" + article.getId() + ".html"); + navData.setUrl(BASE_URL + article.getPath() + "/" + article.getId() + ".html"); } else if (column.getTargetType() == 2) { - navData.setUrl(BASE_URL + column.getTargetUrl()); + ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId()); + navData.setUrl(BASE_URL + columnEntity.getPath()); } else { navData.setUrl(column.getTargetUrl()); } diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java b/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java new file mode 100644 index 0000000..d0d345d --- /dev/null +++ b/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java @@ -0,0 +1,124 @@ +package com.xcong.farmer.cms.core.tag.data; + +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * @author wzy + * @date 2022-07-05 + **/ +public class ArticleData { + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private Long id; + + private String title; + + private String subTitle; + + private String thumb; + + private String content; + + private String author; + + private String views; + + private String filePath; + + private List<String> images; + + private String url; + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getSubTitle() { + return subTitle; + } + + public void setSubTitle(String subTitle) { + this.subTitle = subTitle; + } + + public String getThumb() { + return thumb; + } + + public void setThumb(String thumb) { + this.thumb = thumb; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public List<String> getImages() { + return images; + } + + public void setImages(List<String> images) { + this.images = images; + } + + public String getViews() { + return views; + } + + public void setViews(String views) { + this.views = views; + } +} diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java index 002f9ce..509e369 100644 --- a/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java +++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java @@ -6,10 +6,24 @@ **/ public class Articles { + /** + * 栏目ID,可colID=1或者colId=[1,2,3] + */ private String colId; + /** + * 栏目code, code=lm + */ + private String code; + + /** + * 页码 + */ private String page; + /** + * 每页数量 + */ private String limit; private String field; @@ -38,6 +52,14 @@ this.limit = limit; } + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + public String getField() { return field; } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java index 5403f5b..d258867 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java @@ -91,6 +91,11 @@ @TableField(exist = false) private String columnName; + /** + * 栏目目录 + */ + @TableField(exist = false) + private String path; @TableField(exist = false) private List<Long> columnIds; diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java index 3ced7bd..05ab4bd 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java @@ -9,6 +9,8 @@ import io.swagger.models.auth.In; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface ArticleMapper extends BaseMapper<ArticleEntity> { IPage<AdminArticleVo> selectAdminArticleInPage(Page<AdminArticleVo> page, @Param("record")ArticleEntity articleEntity); @@ -18,4 +20,6 @@ ArticleEntity selectPrevOrNextArticle(@Param("id") Long id, @Param("columnId") Long columnId, @Param("type") Integer type); ArticleEntity selectArticleById(@Param("id") Long id); + + IPage<ArticleEntity> selectArticleInPage(Page<ArticleEntity> page, @Param("record") ArticleEntity article); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java index 89ad1d8..12f1d89 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java @@ -44,6 +44,12 @@ Map<String, Object> map = new HashMap<>(); map.put("id", columnEntity.getId()); map.put("code", columnEntity.getColumnCode()); + if (columnEntity.getParentId() == 0L) { + map.put("parentCode", columnEntity.getColumnCode()); + } else { + ColumnEntity parent = columnMapper.selectById(columnEntity.getParentId()); + map.put("parentCode", parent.getColumnCode()); + } cmsCoreService.columnProcess(map, columnEntity.getListTemplate(), article); } diff --git a/src/main/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml index 43ec8e5..aa86fa6 100644 --- a/src/main/resources/mapper/ArticleMapper.xml +++ b/src/main/resources/mapper/ArticleMapper.xml @@ -55,8 +55,25 @@ </select> <select id="selectArticleById" resultType="com.xcong.farmer.cms.modules.system.entity.ArticleEntity"> - select a.*, b.column_code, b.column_name + select a.*, b.column_code, b.column_name, b.path from t_article a, t_column b where a.column_id=b.id and a.id=#{id} </select> + + <select id="selectArticleInPage" resultType="com.xcong.farmer.cms.modules.system.entity.ArticleEntity"> + select + a.*, + b.column_code, + b.column_name, + b.path + from t_article a + inner join t_column b on a.column_id=b.id + inner join t_column c on b.parent_id=c.id or c.id=b.id + <where> + a.company_id=#{record.companyId} + <if test="record.columnCode != null and record.columnCode != ''"> + and c.column_code=#{record.columnCode} + </if> + </where> + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1