From 59411a551afeca8f627079a4224074617d38d875 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 30 May 2022 18:03:17 +0800
Subject: [PATCH] 20220527

---
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeArticleInfoVo.java                |   45 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/INavigationBarService.java           |   23 
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminNavigationBarVo.java                 |   33 +
 src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java                     |   30 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/IColumnService.java                  |   23 
 src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java                    |   60 ++
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminArticleVo.java                       |   51 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddColumnDto.java                   |   29 +
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java |   67 ++
 src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java                    |   16 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java            |   22 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java        |   66 ++
 src/main/java/com/xcong/farmer/cms/modules/system/entity/NavigationBarEntity.java              |   31 +
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java                 |   30 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/NavigationBarServiceImpl.java   |  202 +++++++
 src/main/resources/mapper/NavigationBarMapper.xml                                              |   29 +
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminArticleController.java       |   56 ++
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeBarInfoVo.java                    |   30 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateBarDto.java                   |   29 +
 src/main/resources/mapper/ArticleMapper.xml                                                    |   33 +
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminColumnVo.java                        |   31 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java          |  214 +++++++
 src/main/resources/mapper/ColumnMapper.xml                                                     |   29 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateColumnDto.java                |   31 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java                 |   21 
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminNavigationBarDto.java               |   16 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MenuServiceImpl.java            |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateArticleDto.java               |   47 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddArticleDto.java                  |   43 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminArticleDto.java                     |   22 
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddBarDto.java                      |   28 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminColumnDto.java                      |   16 
 src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java                     |   17 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java         |  179 ++++++
 src/main/java/com/xcong/farmer/cms/modules/system/mapper/NavigationBarMapper.java              |   17 
 35 files changed, 1,608 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminArticleController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminArticleController.java
new file mode 100644
index 0000000..427e3bb
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminArticleController.java
@@ -0,0 +1,56 @@
+package com.xcong.farmer.cms.modules.system.Controller;
+
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.*;
+import com.xcong.farmer.cms.modules.system.service.IArticleService;
+import com.xcong.farmer.cms.modules.system.vo.AdminArticleVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping(value = "/api/article")
+@Slf4j
+@Api(value = "文章", tags = "文章")
+public class AdminArticleController {
+
+    @Resource
+    private IArticleService iArticleService;
+
+    @ApiOperation(value = "文章分页列表", notes = "文章分页列表")
+    @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminArticleVo.class)})
+    @PostMapping(value = "/articleInPage")
+    public Result getArticleInPage(@RequestBody @Valid AdminArticleDto adminArticleDto) {
+        return iArticleService.getArticleInPage(adminArticleDto);
+    }
+
+    @ApiOperation(value = "添加文章", notes = "添加文章")
+    @PostMapping(value = "/addArticle")
+    public Result addArticle(@RequestBody @Valid AdminAddArticleDto adminAddArticleDto) {
+        return iArticleService.addArticle(adminAddArticleDto);
+    }
+
+    @ApiOperation(value = "删除文章", notes = "删除文章")
+    @GetMapping(value = "/deleteArticle/{id}")
+    public Result deleteArticle(@PathVariable(value = "id") Long id) {
+        return iArticleService.deleteArticle(id);
+    }
+
+    @ApiOperation(value = "查看文章", notes = "查看文章")
+    @GetMapping(value = "/seeArticleInfo/{id}")
+    public Result seeArticleInfo(@PathVariable(value = "id") Long id) {
+        return iArticleService.seeArticleInfo(id);
+    }
+
+    @ApiOperation(value = "更新文章", notes = "更新文章")
+    @PostMapping(value = "/updateArticle")
+    public Result updateArticle(@RequestBody @Valid AdminUpdateArticleDto adminUpdateArticleDto) {
+        return iArticleService.updateArticle(adminUpdateArticleDto);
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java
new file mode 100644
index 0000000..1d87867
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java
@@ -0,0 +1,66 @@
+package com.xcong.farmer.cms.modules.system.Controller;
+
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.*;
+import com.xcong.farmer.cms.modules.system.service.IColumnService;
+import com.xcong.farmer.cms.modules.system.vo.AdminColumnVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping(value = "/api/column")
+@Slf4j
+@Api(value = "栏目", tags = "栏目")
+public class AdminColumnController {
+
+    @Resource
+    private IColumnService iColumnService;
+
+    @ApiOperation(value = "栏目分页列表", notes = "栏目分页列表")
+    @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminColumnVo.class)})
+    @PostMapping(value = "/columnInPage")
+    public Result getColumnInPage(@RequestBody @Valid AdminColumnDto adminColumnDto) {
+        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
+        return iColumnService.getColumnInPage(adminColumnDto);
+    }
+
+    @ApiOperation(value = "栏目列表", notes = "栏目列表")
+    @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminColumnVo.class)})
+    @GetMapping(value = "/columnInList")
+    public Result columnInList() {
+        return iColumnService.getColumnInList();
+    }
+
+    @ApiOperation(value = "添加栏目", notes = "添加栏目")
+    @PostMapping(value = "/addColumn")
+    public Result addColumn(@RequestBody @Valid AdminAddColumnDto adminAddColumnDto) {
+        return iColumnService.addColumn(adminAddColumnDto);
+    }
+
+    @ApiOperation(value = "删除栏目", notes = "删除栏目")
+    @GetMapping(value = "/deleteColumn/{id}")
+    public Result deleteColumn(@PathVariable(value = "id") Long id) {
+        return iColumnService.deleteColumn(id);
+    }
+
+    @ApiOperation(value = "查看栏目", notes = "查看栏目")
+    @GetMapping(value = "/seeColumnInfo/{id}")
+    public Result seeColumnInfo(@PathVariable(value = "id") Long id) {
+        return iColumnService.seeColumnInfo(id);
+    }
+
+    @ApiOperation(value = "更新栏目", notes = "更新栏目")
+    @PostMapping(value = "/updateColumn")
+    public Result updateColumn(@RequestBody @Valid AdminUpdateColumnDto adminUpdateColumnDto) {
+        return iColumnService.updateColumn(adminUpdateColumnDto);
+    }
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java
new file mode 100644
index 0000000..89970dc
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java
@@ -0,0 +1,67 @@
+package com.xcong.farmer.cms.modules.system.Controller;
+
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.*;
+import com.xcong.farmer.cms.modules.system.service.INavigationBarService;
+import com.xcong.farmer.cms.modules.system.vo.AdminNavigationBarVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping(value = "/api/bar")
+@Slf4j
+@Api(value = "导航栏", tags = "导航栏")
+public class AdminNavigationBarController {
+
+    @Resource
+    private INavigationBarService iNavigationBarService;
+
+    @ApiOperation(value = "导航栏分页列表", notes = "导航栏分页列表")
+    @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminNavigationBarVo.class)})
+    @PostMapping(value = "/barInPage")
+    public Result getBarInPage(@RequestBody @Valid AdminNavigationBarDto adminNavigationBarDto) {
+        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
+        return iNavigationBarService.getBarInPage(adminNavigationBarDto);
+    }
+
+    @ApiOperation(value = "导航栏列表", notes = "导航栏列表")
+    @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminNavigationBarVo.class)})
+    @GetMapping(value = "/barInList")
+    public Result getBarInList() {
+        return iNavigationBarService.getBarInList();
+    }
+
+    @ApiOperation(value = "添加导航栏", notes = "添加导航栏")
+    @PostMapping(value = "/addBar")
+    public Result addBar(@RequestBody @Valid AdminAddBarDto adminAddBarDto) {
+        return iNavigationBarService.addBar(adminAddBarDto);
+    }
+
+    @ApiOperation(value = "删除导航栏", notes = "删除导航栏")
+    @GetMapping(value = "/deleteBar/{id}")
+    public Result deleteBar(@PathVariable(value = "id") Long id) {
+        return iNavigationBarService.deleteBar(id);
+    }
+
+    @ApiOperation(value = "查看导航栏", notes = "查看导航栏")
+    @GetMapping(value = "/seeBarInfo/{id}")
+    public Result seeBarInfo(@PathVariable(value = "id") Long id) {
+        return iNavigationBarService.seeBarInfo(id);
+    }
+
+    @ApiOperation(value = "更新导航栏", notes = "更新导航栏")
+    @PostMapping(value = "/updateBar")
+    public Result updateBar(@RequestBody @Valid AdminUpdateBarDto adminUpdateMenuDto) {
+        return iNavigationBarService.updateBar(adminUpdateMenuDto);
+    }
+
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddArticleDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddArticleDto.java
new file mode 100644
index 0000000..4ddf8a2
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddArticleDto.java
@@ -0,0 +1,43 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "AdminAddArticleDto", description = "参数接收类")
+public class AdminAddArticleDto {
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "标题")
+    private String childTitle;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "所属栏目ID")
+    private Long columnId;
+
+    @ApiModelProperty(value = "访问量")
+    private Integer visits;
+
+    @ApiModelProperty(value = "主图")
+    private String mainDiagram;
+
+    @ApiModelProperty(value = "图集")
+    private String atlas;
+
+    @ApiModelProperty(value = "发布时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date releaseTime;
+
+    @ApiModelProperty(value = "是否立即发布 0:否 1:是")
+    private Integer releaseStatus;
+
+    @ApiModelProperty(value = "文章详情")
+    private String articleDetails;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddBarDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddBarDto.java
new file mode 100644
index 0000000..8ad6a58
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddBarDto.java
@@ -0,0 +1,28 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminAddBarDto", description = "参数接收类")
+public class AdminAddBarDto {
+    //导航栏标题
+    @ApiModelProperty(value = "导航栏标题")
+    private String barName;
+    //链接地址
+    @ApiModelProperty(value = "链接地址")
+    private String linkUrl;
+    //描述
+    @ApiModelProperty(value = "描述")
+    private String describe;
+    //排序
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+    //图片
+    @ApiModelProperty(value = "图片")
+    private String pic;
+    //上级类目ID
+    @ApiModelProperty(value = "上级类目ID")
+    private Long parentId;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddColumnDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddColumnDto.java
new file mode 100644
index 0000000..0773cde
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddColumnDto.java
@@ -0,0 +1,29 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminAddColumnDto", description = "参数接收类")
+public class AdminAddColumnDto {
+
+    @ApiModelProperty(value = "栏目名称")
+    private String columnName;
+
+    @ApiModelProperty(value = "栏目编码")
+    private String columnCode;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+
+    @ApiModelProperty(value = "图片")
+    private String pic;
+
+    @ApiModelProperty(value = "上级类目ID")
+    private Long parentId;
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminArticleDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminArticleDto.java
new file mode 100644
index 0000000..a479fb2
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminArticleDto.java
@@ -0,0 +1,22 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminArticleDto", description = "参数接收类")
+public class AdminArticleDto {
+
+    @ApiModelProperty(value = "标题", example = "文章")
+    private String title;
+
+    @ApiModelProperty(value = "所属栏目ID", example = "2")
+    private Long columnId;
+
+    @ApiModelProperty(value = "每页条数", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "第几页", example = "1")
+    private Integer pageNum;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminColumnDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminColumnDto.java
new file mode 100644
index 0000000..d40d389
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminColumnDto.java
@@ -0,0 +1,16 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminColumnDto", description = "参数接收类")
+public class AdminColumnDto {
+
+    @ApiModelProperty(value = "每页条数", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "第几页", example = "1")
+    private Integer pageNum;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminNavigationBarDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminNavigationBarDto.java
new file mode 100644
index 0000000..bde1993
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminNavigationBarDto.java
@@ -0,0 +1,16 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminNavigationBarDto", description = "参数接收类")
+public class AdminNavigationBarDto {
+
+    @ApiModelProperty(value = "每页条数", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "第几页", example = "1")
+    private Integer pageNum;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateArticleDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateArticleDto.java
new file mode 100644
index 0000000..1a7f5f2
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateArticleDto.java
@@ -0,0 +1,47 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+@Data
+@ApiModel(value = "AdminUpdateArticleDto", description = "参数接收类")
+public class AdminUpdateArticleDto {
+
+    private Long id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "标题")
+    private String childTitle;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "所属栏目ID")
+    private Long columnId;
+
+    @ApiModelProperty(value = "访问量")
+    private Integer visits;
+
+    @ApiModelProperty(value = "主图")
+    private String mainDiagram;
+
+    @ApiModelProperty(value = "图集")
+    private String atlas;
+
+    @ApiModelProperty(value = "发布时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date releaseTime;
+
+    @ApiModelProperty(value = "是否立即发布 0:否 1:是")
+    private Integer releaseStatus;
+
+    @ApiModelProperty(value = "文章详情")
+    private String articleDetails;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateBarDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateBarDto.java
new file mode 100644
index 0000000..f17b25e
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateBarDto.java
@@ -0,0 +1,29 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminUpdateBarDto", description = "参数接收类")
+public class AdminUpdateBarDto {
+    private Long id;
+    //导航栏标题
+    @ApiModelProperty(value = "导航栏标题")
+    private String barName;
+    //链接地址
+    @ApiModelProperty(value = "链接地址")
+    private String linkUrl;
+    //描述
+    @ApiModelProperty(value = "描述")
+    private String describe;
+    //排序
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+    //图片
+    @ApiModelProperty(value = "图片")
+    private String pic;
+    //上级类目ID
+    @ApiModelProperty(value = "上级类目ID")
+    private Long parentId;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateColumnDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateColumnDto.java
new file mode 100644
index 0000000..4a3e09a
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateColumnDto.java
@@ -0,0 +1,31 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminUpdateColumnDto", description = "参数接收类")
+public class AdminUpdateColumnDto {
+
+    private Long id;
+
+    @ApiModelProperty(value = "栏目名称")
+    private String columnName;
+
+    @ApiModelProperty(value = "栏目编码")
+    private String columnCode;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+
+    @ApiModelProperty(value = "图片")
+    private String pic;
+
+    @ApiModelProperty(value = "上级类目ID")
+    private Long parentId;
+
+}
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
new file mode 100644
index 0000000..2ed6a95
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
@@ -0,0 +1,60 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xcong.farmer.cms.common.system.base.BaseEntity;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 文章表
+ */
+@Data
+@TableName("t_article")
+public class ArticleEntity extends BaseEntity {
+    /**
+     * 是否立即发布 1:是
+     */
+    public static final Integer RELEASE_STATUS_YES = 1;
+    /**
+     * 是否立即发布 0:否
+     */
+    public static final Integer RELEASE_STATUS_NO = 0;
+    /**
+     * 是否删除 1:未删除
+     */
+    public static final Integer DELETE_STATUS_NO = 1;
+    /**
+     * 是否删除 0:已删除
+     */
+    public static final Integer DELETE_STATUS_YES = 0;
+    /**
+     * 访问量
+     */
+    public static final Integer VISITS_DEFAULT = 0;
+
+    //标题
+    private String title;
+    //副标题
+    private String childTitle;
+    //描述
+    private String describe;
+    //所属栏目ID
+    private Long columnId;
+    //访问量
+    private Integer visits;
+    //主图
+    private String mainDiagram;
+    //图集
+    private String atlas;
+    //发布时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date releaseTime;
+    //是否立即发布 0:否 1:是
+    private Integer releaseStatus;
+    //文章详情
+    private String articleDetails;
+    //是否删除 0:已删除 1:未删除
+    private Integer delStatus;
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
new file mode 100644
index 0000000..0fed85b
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
@@ -0,0 +1,30 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.farmer.cms.common.system.base.BaseEntity;
+import lombok.Data;
+
+/**
+ * 栏目表
+ */
+@Data
+@TableName("t_column")
+public class ColumnEntity  extends BaseEntity {
+    /**
+     * 导航栏 - 默认上级类目ID
+     */
+    public static final Long PARENTID_DEFAULT = 0L;
+
+    //栏目名称
+    private String columnName;
+    //栏目编码
+    private String columnCode;
+    //描述
+    private String describe;
+    //排序
+    private Integer orderNum;
+    //图片
+    private String pic;
+    //上级类目ID
+    private Long parentId;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/NavigationBarEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/NavigationBarEntity.java
new file mode 100644
index 0000000..6a18509
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/NavigationBarEntity.java
@@ -0,0 +1,31 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.farmer.cms.common.system.base.BaseEntity;
+import lombok.Data;
+
+/**
+ * 导航栏表
+ */
+@Data
+@TableName("t_navigation_bar")
+public class NavigationBarEntity extends BaseEntity {
+    /**
+     * 导航栏 - 默认上级类目ID
+     */
+    public static final Long PARENTID_DEFAULT = 0L;
+
+    //导航栏标题
+    private String barName;
+    //链接地址
+    private String linkUrl;
+    //描述
+    private String describe;
+    //排序
+    private Integer orderNum;
+    //图片
+    private String pic;
+    //上级类目ID
+    private Long parentId;
+
+}
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
new file mode 100644
index 0000000..277dfb8
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java
@@ -0,0 +1,16 @@
+package com.xcong.farmer.cms.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
+import com.xcong.farmer.cms.modules.system.vo.AdminArticleVo;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo;
+import org.apache.ibatis.annotations.Param;
+
+public interface ArticleMapper extends BaseMapper<ArticleEntity> {
+
+    IPage<AdminArticleVo> selectAdminArticleInPage(Page<AdminArticleVo> page, @Param("record")ArticleEntity articleEntity);
+
+    AdminSeeArticleInfoVo selectAdminArticleByid(@Param("id")Long id);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
new file mode 100644
index 0000000..e23ce47
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
@@ -0,0 +1,17 @@
+package com.xcong.farmer.cms.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.modules.system.entity.ColumnEntity;
+import com.xcong.farmer.cms.modules.system.vo.AdminColumnVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ColumnMapper extends BaseMapper<ColumnEntity> {
+
+    IPage<AdminColumnVo> selectAdminColumnVoInPage(Page<AdminColumnVo> page, @Param("record")ColumnEntity columnEntity);
+
+    List<AdminColumnVo> selectColumnInListByParentId(@Param("parentId")Long parentidDefault);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/NavigationBarMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/NavigationBarMapper.java
new file mode 100644
index 0000000..9116878
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/NavigationBarMapper.java
@@ -0,0 +1,17 @@
+package com.xcong.farmer.cms.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.modules.system.entity.NavigationBarEntity;
+import com.xcong.farmer.cms.modules.system.vo.AdminNavigationBarVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface NavigationBarMapper extends BaseMapper<NavigationBarEntity> {
+
+    IPage<AdminNavigationBarVo> selectAdminNavigationBarVoInPage(Page<AdminNavigationBarVo> page, @Param("record")NavigationBarEntity navigationBarEntity);
+
+    List<AdminNavigationBarVo> selectAdminNavigationBarVoByParentId(@Param("parentId")Long parentidDefault);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
new file mode 100644
index 0000000..4c7838e
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
@@ -0,0 +1,21 @@
+package com.xcong.farmer.cms.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+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.AdminUpdateArticleDto;
+import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
+
+public interface IArticleService extends IService<ArticleEntity> {
+
+    Result getArticleInPage(AdminArticleDto adminArticleDto);
+
+    Result addArticle(AdminAddArticleDto adminAddArticleDto);
+
+    Result deleteArticle(Long id);
+
+    Result seeArticleInfo(Long id);
+
+    Result updateArticle(AdminUpdateArticleDto adminUpdateArticleDto);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IColumnService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IColumnService.java
new file mode 100644
index 0000000..1dc6fe5
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IColumnService.java
@@ -0,0 +1,23 @@
+package com.xcong.farmer.cms.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddColumnDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminColumnDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminUpdateColumnDto;
+import com.xcong.farmer.cms.modules.system.entity.ColumnEntity;
+
+public interface IColumnService extends IService<ColumnEntity> {
+
+    Result getColumnInPage(AdminColumnDto adminColumnDto);
+
+    Result addColumn(AdminAddColumnDto adminAddColumnDto);
+
+    Result deleteColumn(Long id);
+
+    Result seeColumnInfo(Long id);
+
+    Result updateColumn(AdminUpdateColumnDto adminUpdateColumnDto);
+
+    Result getColumnInList();
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/INavigationBarService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/INavigationBarService.java
new file mode 100644
index 0000000..4c43fdb
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/INavigationBarService.java
@@ -0,0 +1,23 @@
+package com.xcong.farmer.cms.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddBarDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminNavigationBarDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminUpdateBarDto;
+import com.xcong.farmer.cms.modules.system.entity.NavigationBarEntity;
+
+public interface INavigationBarService extends IService<NavigationBarEntity> {
+
+    Result getBarInPage(AdminNavigationBarDto adminNavigationBarDto);
+
+    Result addBar(AdminAddBarDto adminAddBarDto);
+
+    Result deleteBar(Long id);
+
+    Result seeBarInfo(Long id);
+
+    Result updateBar(AdminUpdateBarDto adminUpdateMenuDto);
+
+    Result getBarInList();
+}
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
new file mode 100644
index 0000000..406db92
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
@@ -0,0 +1,179 @@
+package com.xcong.farmer.cms.modules.system.service.Impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.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.mapper.ArticleMapper;
+import com.xcong.farmer.cms.modules.system.mapper.ColumnMapper;
+import com.xcong.farmer.cms.modules.system.service.IArticleService;
+import com.xcong.farmer.cms.modules.system.vo.AdminArticleVo;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+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;
+
+@Service
+@Slf4j
+public class ArticleServiceImpl extends ServiceImpl<ArticleMapper, ArticleEntity> implements IArticleService {
+
+    @Resource
+    private ColumnMapper columnMapper;
+
+    @Override
+    public Result getArticleInPage(AdminArticleDto adminArticleDto) {
+        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 title = adminArticleDto.getTitle();
+        if(StrUtil.isNotEmpty(title)){
+            articleEntity.setTitle(title);
+        }
+        IPage<AdminArticleVo> list = this.baseMapper.selectAdminArticleInPage(page,articleEntity);
+        return Result.ok(list);
+    }
+
+    @Override
+    @Transactional
+    public Result addArticle(AdminAddArticleDto adminAddArticleDto) {
+        ArticleEntity articleEntity = new ArticleEntity();
+        String title = adminAddArticleDto.getTitle();
+        if(StrUtil.isEmpty(title)){
+            return Result.fail("请输入文章标题");
+        }
+        articleEntity.setTitle(title);
+        String childTitle = adminAddArticleDto.getChildTitle();
+        if(StrUtil.isNotEmpty(childTitle)){
+            articleEntity.setChildTitle(childTitle);
+        }
+        String describe = adminAddArticleDto.getDescribe();
+        if(StrUtil.isNotEmpty(describe)){
+            articleEntity.setDescribe(describe);
+        }
+        long columnId = adminAddArticleDto.getColumnId() == null ? 0L : adminAddArticleDto.getColumnId();
+        if(columnId == 0L){
+            return Result.fail("请选择文章栏目");
+        }
+        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();
+        if(StrUtil.isNotEmpty(mainDiagram)){
+            articleEntity.setMainDiagram(mainDiagram);
+        }
+        String atlas = adminAddArticleDto.getAtlas();
+        if(StrUtil.isNotEmpty(atlas)){
+            articleEntity.setAtlas(atlas);
+        }
+        Date releaseTime = adminAddArticleDto.getReleaseTime();
+        if(ObjectUtil.isNotEmpty(releaseTime)){
+            articleEntity.setReleaseTime(releaseTime);
+        }
+        Integer releaseStatus = adminAddArticleDto.getReleaseStatus();
+        articleEntity.setReleaseStatus(releaseStatus);
+        String articleDetails = adminAddArticleDto.getArticleDetails();
+        if(StrUtil.isNotEmpty(articleDetails)){
+            articleEntity.setArticleDetails(articleDetails);
+        }
+
+        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("文章不存在");
+        }
+        String title = adminUpdateArticleDto.getTitle();
+        if(StrUtil.isEmpty(title)){
+            return Result.fail("请输入文章标题");
+        }
+        articleEntity.setTitle(title);
+        String childTitle = adminUpdateArticleDto.getChildTitle();
+        if(StrUtil.isNotEmpty(childTitle)){
+            articleEntity.setChildTitle(childTitle);
+        }
+        String describe = adminUpdateArticleDto.getDescribe();
+        if(StrUtil.isNotEmpty(describe)){
+            articleEntity.setDescribe(describe);
+        }
+        long columnId = adminUpdateArticleDto.getColumnId() == null ? 0L : adminUpdateArticleDto.getColumnId();
+        if(columnId == 0L){
+            return Result.fail("请选择文章栏目");
+        }
+        ColumnEntity columnEntity = columnMapper.selectById(columnId);
+        if(ObjectUtil.isEmpty(columnEntity)){
+            return Result.fail("请选择文章栏目");
+        }
+        articleEntity.setColumnId(columnId);
+        Integer visits = adminUpdateArticleDto.getVisits() == null ? 0 : adminUpdateArticleDto.getVisits();
+        articleEntity.setVisits(visits);
+        String mainDiagram = adminUpdateArticleDto.getMainDiagram();
+        if(StrUtil.isNotEmpty(mainDiagram)){
+            articleEntity.setMainDiagram(mainDiagram);
+        }
+        String atlas = adminUpdateArticleDto.getAtlas();
+        if(StrUtil.isNotEmpty(atlas)){
+            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();
+        if(StrUtil.isNotEmpty(articleDetails)){
+            articleEntity.setArticleDetails(articleDetails);
+        }
+        this.baseMapper.updateById(articleEntity);
+        return Result.ok("更新成功");
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
new file mode 100644
index 0000000..d0e66ee
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
@@ -0,0 +1,214 @@
+package com.xcong.farmer.cms.modules.system.service.Impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddColumnDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminColumnDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminUpdateColumnDto;
+import com.xcong.farmer.cms.modules.system.entity.ColumnEntity;
+import com.xcong.farmer.cms.modules.system.mapper.ColumnMapper;
+import com.xcong.farmer.cms.modules.system.service.IColumnService;
+import com.xcong.farmer.cms.modules.system.vo.AdminColumnVo;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeColumnInfoVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ObjectUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@Slf4j
+public class ColumnServiceImpl extends ServiceImpl<ColumnMapper, ColumnEntity> implements IColumnService {
+    @Override
+    public Result getColumnInPage(AdminColumnDto adminColumnDto) {
+        Page<AdminColumnVo> page = new Page<>(adminColumnDto.getPageNum(), adminColumnDto.getPageSize());
+        ColumnEntity columnEntity = new ColumnEntity();
+        columnEntity.setParentId(ColumnEntity.PARENTID_DEFAULT);
+        IPage<AdminColumnVo> list = this.baseMapper.selectAdminColumnVoInPage(page,columnEntity);
+        List<AdminColumnVo> records = list.getRecords();
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminColumnVo adminColumnVo : records){
+                Long id = adminColumnVo.getId();
+                QueryWrapper<ColumnEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("parent_id",id);
+                List<ColumnEntity> columnEntities = this.baseMapper.selectList(objectQueryWrapper);
+                List<AdminColumnVo> adminColumnVoChilds = new ArrayList<>();
+                if(CollUtil.isNotEmpty(columnEntities)){
+                    for(ColumnEntity columnEntityChild : columnEntities){
+                        AdminColumnVo child = new AdminColumnVo();
+                        child.setId(columnEntityChild.getId());
+                        child.setColumnName(columnEntityChild.getColumnName());
+                        child.setColumnCode(columnEntityChild.getColumnCode());
+                        child.setDescribe(columnEntityChild.getDescribe());
+                        child.setPic(columnEntityChild.getPic());
+                        child.setOrderNum(columnEntityChild.getOrderNum());
+                        adminColumnVoChilds.add(child);
+                    }
+                }
+                adminColumnVo.setChild(adminColumnVoChilds);
+            }
+        }
+        return Result.ok(list);
+    }
+
+    @Override
+    @Transactional
+    public Result addColumn(AdminAddColumnDto adminAddColumnDto) {
+        ColumnEntity columnEntity = new ColumnEntity();
+        String columnName = adminAddColumnDto.getColumnName();
+        if(StrUtil.isEmpty(columnName)){
+            return Result.fail("请输入栏目名称");
+        }
+        columnEntity.setColumnName(columnName);
+        String columnCode = adminAddColumnDto.getColumnCode();
+        if(StrUtil.isEmpty(columnCode)){
+            return Result.fail("请输入栏目编码");
+        }
+        QueryWrapper<ColumnEntity> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("column_code",columnCode);
+        List<ColumnEntity> columnEntities = this.baseMapper.selectList(objectQueryWrapper);
+        if(CollUtil.isNotEmpty(columnEntities)){
+            return Result.fail("栏目编码不能重复");
+        }
+        columnEntity.setColumnCode(columnCode);
+        String describe = adminAddColumnDto.getDescribe();
+        if(StrUtil.isNotEmpty(describe)){
+            columnEntity.setDescribe(describe);
+        }
+        String pic = adminAddColumnDto.getPic();
+        if(StrUtil.isNotEmpty(pic)){
+            columnEntity.setPic(pic);
+        }
+        Integer orderNum = adminAddColumnDto.getOrderNum();
+        if(ObjectUtil.isNotEmpty(orderNum)){
+            columnEntity.setOrderNum(orderNum);
+        }
+        Long parentId = adminAddColumnDto.getParentId();
+        if(ObjectUtil.isEmpty(parentId)){
+            columnEntity.setParentId(ColumnEntity.PARENTID_DEFAULT);
+        }else{
+            columnEntity.setParentId(parentId);
+        }
+        this.baseMapper.insert(columnEntity);
+        return Result.ok("添加成功");
+    }
+
+    @Override
+    @Transactional
+    public Result deleteColumn(Long id) {
+        ColumnEntity columnEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(columnEntity)){
+            return Result.fail("栏目不存在");
+        }
+        QueryWrapper<ColumnEntity> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("parent_id",id);
+        List<ColumnEntity> columnEntities = this.baseMapper.selectList(objectQueryWrapper);
+        if(CollUtil.isNotEmpty(columnEntities)){
+            return Result.fail("请先清空它的二级栏目");
+        }
+        this.baseMapper.deleteById(id);
+        return Result.ok("删除成功");
+    }
+
+    @Override
+    public Result seeColumnInfo(Long id) {
+        ColumnEntity columnEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(columnEntity)){
+            return Result.fail("栏目不存在");
+        }
+        AdminSeeColumnInfoVo adminSeeColumnInfoVo = new AdminSeeColumnInfoVo();
+        adminSeeColumnInfoVo.setId(columnEntity.getId());
+        adminSeeColumnInfoVo.setColumnName(columnEntity.getColumnName());
+        adminSeeColumnInfoVo.setColumnCode(columnEntity.getColumnCode());
+        adminSeeColumnInfoVo.setDescribe(columnEntity.getDescribe());
+        adminSeeColumnInfoVo.setParentId(columnEntity.getParentId());
+        adminSeeColumnInfoVo.setOrderNum(columnEntity.getOrderNum());
+        adminSeeColumnInfoVo.setPic(columnEntity.getPic());
+        return Result.ok(adminSeeColumnInfoVo);
+    }
+
+    @Override
+    @Transactional
+    public Result updateColumn(AdminUpdateColumnDto adminUpdateColumnDto) {
+        Long id = adminUpdateColumnDto.getId();
+        if(ObjectUtil.isEmpty(id)){
+            return Result.fail("栏目不存在");
+        }
+        ColumnEntity columnEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(columnEntity)){
+            return Result.fail("栏目不存在");
+        }
+        String columnName = adminUpdateColumnDto.getColumnName();
+        if(StrUtil.isEmpty(columnName)){
+            return Result.fail("请输入栏目名称");
+        }
+        columnEntity.setColumnName(columnName);
+        String columnCode = adminUpdateColumnDto.getColumnCode();
+        if(StrUtil.isEmpty(columnCode)){
+            return Result.fail("请输入栏目编码");
+        }
+        QueryWrapper<ColumnEntity> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("column_code",columnCode);
+        List<ColumnEntity> columnEntities = this.baseMapper.selectList(objectQueryWrapper);
+        if(CollUtil.isNotEmpty(columnEntities)){
+            return Result.fail("栏目编码不能重复");
+        }
+        columnEntity.setColumnCode(columnCode);
+        String describe = adminUpdateColumnDto.getDescribe();
+        if(StrUtil.isNotEmpty(describe)){
+            columnEntity.setDescribe(describe);
+        }
+        String pic = adminUpdateColumnDto.getPic();
+        if(StrUtil.isNotEmpty(pic)){
+            columnEntity.setPic(pic);
+        }
+        Integer orderNum = adminUpdateColumnDto.getOrderNum();
+        if(ObjectUtil.isNotEmpty(orderNum)){
+            columnEntity.setOrderNum(orderNum);
+        }
+        Long parentId = adminUpdateColumnDto.getParentId();
+        if(ObjectUtil.isEmpty(parentId)){
+            columnEntity.setParentId(ColumnEntity.PARENTID_DEFAULT);
+        }else{
+            columnEntity.setParentId(parentId);
+        }
+        this.baseMapper.updateById(columnEntity);
+        return Result.ok("更新成功");
+    }
+
+    @Override
+    public Result getColumnInList() {
+        List<AdminColumnVo> records = this.baseMapper.selectColumnInListByParentId(ColumnEntity.PARENTID_DEFAULT);
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminColumnVo adminColumnVo : records){
+                Long id = adminColumnVo.getId();
+                QueryWrapper<ColumnEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("parent_id",id);
+                List<ColumnEntity> columnEntities = this.baseMapper.selectList(objectQueryWrapper);
+                List<AdminColumnVo> adminColumnVoChilds = new ArrayList<>();
+                if(CollUtil.isNotEmpty(columnEntities)){
+                    for(ColumnEntity columnEntityChild : columnEntities){
+                        AdminColumnVo child = new AdminColumnVo();
+                        child.setId(columnEntityChild.getId());
+                        child.setColumnName(columnEntityChild.getColumnName());
+                        child.setColumnCode(columnEntityChild.getColumnCode());
+                        child.setDescribe(columnEntityChild.getDescribe());
+                        child.setPic(columnEntityChild.getPic());
+                        child.setOrderNum(columnEntityChild.getOrderNum());
+                        adminColumnVoChilds.add(child);
+                    }
+                }
+                adminColumnVo.setChild(adminColumnVoChilds);
+            }
+        }
+        return Result.ok(records);
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MenuServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MenuServiceImpl.java
index b148be8..6bc0efb 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MenuServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MenuServiceImpl.java
@@ -41,7 +41,6 @@
         menuEntity.setParentId(MenuEntity.PARENTID_DEFAULT);
         IPage<AdminMenuVo> list = this.baseMapper.selectAdminMenuVoInPage(page,menuEntity);
         List<AdminMenuVo> records = list.getRecords();
-        list.getTotal();
         if(CollUtil.isNotEmpty(records)){
             for(AdminMenuVo adminMenuVo : records){
                 Long id = adminMenuVo.getId();
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/NavigationBarServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/NavigationBarServiceImpl.java
new file mode 100644
index 0000000..a0f0c40
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/NavigationBarServiceImpl.java
@@ -0,0 +1,202 @@
+package com.xcong.farmer.cms.modules.system.service.Impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddBarDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminNavigationBarDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminUpdateBarDto;
+import com.xcong.farmer.cms.modules.system.entity.NavigationBarEntity;
+import com.xcong.farmer.cms.modules.system.mapper.NavigationBarMapper;
+import com.xcong.farmer.cms.modules.system.service.INavigationBarService;
+import com.xcong.farmer.cms.modules.system.vo.AdminNavigationBarVo;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeBarInfoVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ObjectUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+
+@Service
+@Slf4j
+public class NavigationBarServiceImpl extends ServiceImpl<NavigationBarMapper, NavigationBarEntity> implements INavigationBarService {
+
+    @Override
+    public Result getBarInPage(AdminNavigationBarDto adminNavigationBarDto) {
+        Page<AdminNavigationBarVo> page = new Page<>(adminNavigationBarDto.getPageNum(), adminNavigationBarDto.getPageSize());
+        NavigationBarEntity navigationBarEntity = new NavigationBarEntity();
+        navigationBarEntity.setParentId(NavigationBarEntity.PARENTID_DEFAULT);
+        IPage<AdminNavigationBarVo> list = this.baseMapper.selectAdminNavigationBarVoInPage(page,navigationBarEntity);
+        List<AdminNavigationBarVo> records = list.getRecords();
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminNavigationBarVo adminNavigationBarVo : records){
+                Long id = adminNavigationBarVo.getId();
+                QueryWrapper<NavigationBarEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("parent_id",id);
+                List<NavigationBarEntity> navigationBarEntities = this.baseMapper.selectList(objectQueryWrapper);
+                List<AdminNavigationBarVo> adminNavigationBarVoChilds = new ArrayList<>();
+                if(CollUtil.isNotEmpty(navigationBarEntities)){
+                    for(NavigationBarEntity navigationBarEntityChild : navigationBarEntities){
+                        AdminNavigationBarVo child = new AdminNavigationBarVo();
+                        child.setId(navigationBarEntityChild.getId());
+                        child.setBarName(navigationBarEntityChild.getBarName());
+                        child.setLinkUrl(navigationBarEntityChild.getLinkUrl());
+                        child.setDescribe(navigationBarEntityChild.getDescribe());
+                        child.setPic(navigationBarEntityChild.getPic());
+                        child.setOrderNum(navigationBarEntityChild.getOrderNum());
+                        adminNavigationBarVoChilds.add(child);
+                    }
+                }
+                adminNavigationBarVo.setChild(adminNavigationBarVoChilds);
+            }
+        }
+        return Result.ok(list);
+    }
+
+    @Override
+    @Transactional
+    public Result addBar(AdminAddBarDto adminAddBarDto) {
+        NavigationBarEntity navigationBarEntity = new NavigationBarEntity();
+        String barName = adminAddBarDto.getBarName();
+        if(StrUtil.isEmpty(barName)){
+            return Result.fail("请输入导航栏标题");
+        }
+        navigationBarEntity.setBarName(barName);
+        Long parentId = adminAddBarDto.getParentId();
+        if(ObjectUtil.isEmpty(parentId)){
+            navigationBarEntity.setParentId(NavigationBarEntity.PARENTID_DEFAULT);
+        }else{
+            navigationBarEntity.setParentId(parentId);
+        }
+        String linkUrl = adminAddBarDto.getLinkUrl();
+        if(StrUtil.isNotEmpty(linkUrl)){
+            navigationBarEntity.setLinkUrl(linkUrl);
+        }
+        Integer orderNum = adminAddBarDto.getOrderNum();
+        if(ObjectUtil.isNotEmpty(orderNum)){
+            navigationBarEntity.setOrderNum(orderNum);
+        }
+        String pic = adminAddBarDto.getPic();
+        if(StrUtil.isNotEmpty(pic)){
+            navigationBarEntity.setPic(pic);
+        }
+        String describe = adminAddBarDto.getDescribe();
+        if(StrUtil.isNotEmpty(describe)){
+            navigationBarEntity.setDescribe(describe);
+        }
+        this.baseMapper.insert(navigationBarEntity);
+        return Result.ok("添加成功");
+    }
+
+    @Override
+    @Transactional
+    public Result deleteBar(Long id) {
+        NavigationBarEntity navigationBarEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(navigationBarEntity)){
+            return Result.fail("导航栏不存在");
+        }
+        QueryWrapper<NavigationBarEntity> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("parent_id",id);
+        List<NavigationBarEntity> navigationBarEntities = this.baseMapper.selectList(objectQueryWrapper);
+        if(CollUtil.isNotEmpty(navigationBarEntities)){
+            return Result.fail("请先清空它的二级导航栏");
+        }
+        this.baseMapper.deleteById(id);
+        return Result.ok("删除成功");
+    }
+
+    @Override
+    public Result seeBarInfo(Long id) {
+        NavigationBarEntity navigationBarEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(navigationBarEntity)){
+            return Result.fail("导航栏不存在");
+        }
+        AdminSeeBarInfoVo adminSeeBarInfoVo = new AdminSeeBarInfoVo();
+        adminSeeBarInfoVo.setId(navigationBarEntity.getId());
+        adminSeeBarInfoVo.setBarName(navigationBarEntity.getBarName());
+        adminSeeBarInfoVo.setLinkUrl(navigationBarEntity.getLinkUrl());
+        adminSeeBarInfoVo.setDescribe(navigationBarEntity.getDescribe());
+        adminSeeBarInfoVo.setOrderNum(navigationBarEntity.getOrderNum());
+        adminSeeBarInfoVo.setPic(navigationBarEntity.getPic());
+        adminSeeBarInfoVo.setParentId(navigationBarEntity.getParentId());
+        return Result.ok(adminSeeBarInfoVo);
+    }
+
+    @Override
+    @Transactional
+    public Result updateBar(AdminUpdateBarDto adminUpdateMenuDto) {
+        Long id = adminUpdateMenuDto.getId();
+        if(ObjectUtil.isEmpty(id)){
+            return Result.fail("导航栏不存在");
+        }
+        NavigationBarEntity navigationBarEntity = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(navigationBarEntity)){
+            return Result.fail("导航栏不存在");
+        }
+        String barName = adminUpdateMenuDto.getBarName();
+        if(StrUtil.isEmpty(barName)){
+            return Result.fail("请输入导航栏标题");
+        }
+        navigationBarEntity.setBarName(barName);
+        Long parentId = adminUpdateMenuDto.getParentId();
+        if(ObjectUtil.isEmpty(parentId)){
+            navigationBarEntity.setParentId(NavigationBarEntity.PARENTID_DEFAULT);
+        }else{
+            navigationBarEntity.setParentId(parentId);
+        }
+        String linkUrl = adminUpdateMenuDto.getLinkUrl();
+        if(StrUtil.isNotEmpty(linkUrl)){
+            navigationBarEntity.setLinkUrl(linkUrl);
+        }
+        Integer orderNum = adminUpdateMenuDto.getOrderNum();
+        if(ObjectUtil.isNotEmpty(orderNum)){
+            navigationBarEntity.setOrderNum(orderNum);
+        }
+        String pic = adminUpdateMenuDto.getPic();
+        if(StrUtil.isNotEmpty(pic)){
+            navigationBarEntity.setPic(pic);
+        }
+        String describe = adminUpdateMenuDto.getDescribe();
+        if(StrUtil.isNotEmpty(describe)){
+            navigationBarEntity.setDescribe(describe);
+        }
+        this.baseMapper.updateById(navigationBarEntity);
+        return Result.ok("更新成功");
+    }
+
+    @Override
+    public Result getBarInList() {
+        List<AdminNavigationBarVo> records = this.baseMapper.selectAdminNavigationBarVoByParentId(NavigationBarEntity.PARENTID_DEFAULT);
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminNavigationBarVo adminNavigationBarVo : records){
+                Long id = adminNavigationBarVo.getId();
+                QueryWrapper<NavigationBarEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("parent_id",id);
+                List<NavigationBarEntity> navigationBarEntities = this.baseMapper.selectList(objectQueryWrapper);
+                List<AdminNavigationBarVo> adminNavigationBarVoChilds = new ArrayList<>();
+                if(CollUtil.isNotEmpty(navigationBarEntities)){
+                    for(NavigationBarEntity navigationBarEntityChild : navigationBarEntities){
+                        AdminNavigationBarVo child = new AdminNavigationBarVo();
+                        child.setId(navigationBarEntityChild.getId());
+                        child.setBarName(navigationBarEntityChild.getBarName());
+                        child.setLinkUrl(navigationBarEntityChild.getLinkUrl());
+                        child.setDescribe(navigationBarEntityChild.getDescribe());
+                        child.setPic(navigationBarEntityChild.getPic());
+                        child.setOrderNum(navigationBarEntityChild.getOrderNum());
+                        adminNavigationBarVoChilds.add(child);
+                    }
+                }
+                adminNavigationBarVo.setChild(adminNavigationBarVoChilds);
+            }
+        }
+        return Result.ok(records);
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
index 4078bbd..f95c35a 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
@@ -11,14 +11,8 @@
 import com.xcong.farmer.cms.modules.system.dto.AdminAddRoleDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminRoleDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminUpdateRoleDto;
-import com.xcong.farmer.cms.modules.system.entity.MenuEntity;
-import com.xcong.farmer.cms.modules.system.entity.RoleEntity;
-import com.xcong.farmer.cms.modules.system.entity.RoleMenuEntity;
-import com.xcong.farmer.cms.modules.system.entity.UserRoleEntity;
-import com.xcong.farmer.cms.modules.system.mapper.MenuMapper;
-import com.xcong.farmer.cms.modules.system.mapper.RoleMapper;
-import com.xcong.farmer.cms.modules.system.mapper.RoleMenuMapper;
-import com.xcong.farmer.cms.modules.system.mapper.UserRoleMapper;
+import com.xcong.farmer.cms.modules.system.entity.*;
+import com.xcong.farmer.cms.modules.system.mapper.*;
 import com.xcong.farmer.cms.modules.system.service.IRoleService;
 import com.xcong.farmer.cms.modules.system.vo.AdminMenuInfoVo;
 import com.xcong.farmer.cms.modules.system.vo.AdminRoleVo;
@@ -44,6 +38,8 @@
     private RoleMenuMapper roleMenuMapper;
     @Resource
     private UserRoleMapper userRoleMapper;
+    @Resource
+    private UserMapper userMapper;
     @Resource
     private MenuMapper menuMapper;
 
@@ -151,6 +147,16 @@
         if(StrUtil.isNotEmpty(menuIds)){
             saveRoleMenus(menuIds,id);
         }
+
+        QueryWrapper<UserEntity> userWrapper = new QueryWrapper<>();
+        userWrapper.eq("role_id",id);
+        List<UserEntity> userEntities = userMapper.selectList(userWrapper);
+        if(CollUtil.isNotEmpty(userEntities)){
+            for(UserEntity userEntity : userEntities){
+                userEntity.setRoleName(roleName);
+                userMapper.updateById(userEntity);
+            }
+        }
         return Result.ok("更新成功");
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminArticleVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminArticleVo.java
new file mode 100644
index 0000000..65888e3
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminArticleVo.java
@@ -0,0 +1,51 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "AdminArticleVo", description = "文章列表返回")
+public class AdminArticleVo {
+
+    private Long id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "标题")
+    private String childTitle;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "所属栏目ID")
+    private Long columnId;
+
+    @ApiModelProperty(value = "所属栏目名称")
+    private Long columnName;
+
+    @ApiModelProperty(value = "访问量")
+    private Integer visits;
+
+    @ApiModelProperty(value = "主图")
+    private String mainDiagram;
+
+    @ApiModelProperty(value = "图集")
+    private String atlas;
+
+    @ApiModelProperty(value = "发布时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date releaseTime;
+
+    @ApiModelProperty(value = "是否立即发布 0:否 1:是")
+    private Integer releaseStatus;
+
+    @ApiModelProperty(value = "文章详情")
+    private String articleDetails;
+
+    @ApiModelProperty(value = "是否删除 0:已删除 1:未删除")
+    private Integer delStatus;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminColumnVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminColumnVo.java
new file mode 100644
index 0000000..781ca0a
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminColumnVo.java
@@ -0,0 +1,31 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+@Data
+@ApiModel(value = "AdminColumnVo", description = "栏目列表返回")
+public class AdminColumnVo {
+
+    private Long id;
+
+    @ApiModelProperty(value = "栏目名称")
+    private String columnName;
+
+    @ApiModelProperty(value = "栏目编码")
+    private String columnCode;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+
+    @ApiModelProperty(value = "图片")
+    private String pic;
+
+    @ApiModelProperty(value = "子菜单")
+    private List<AdminColumnVo> child;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminNavigationBarVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminNavigationBarVo.java
new file mode 100644
index 0000000..fb04b5b
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminNavigationBarVo.java
@@ -0,0 +1,33 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "AdminNavigationBarVo", description = "导航栏列表返回")
+public class AdminNavigationBarVo {
+
+    private Long id;
+    //导航栏标题
+    @ApiModelProperty(value = "导航栏标题")
+    private String barName;
+    //链接地址
+    @ApiModelProperty(value = "链接地址")
+    private String linkUrl;
+    //描述
+    @ApiModelProperty(value = "描述")
+    private String describe;
+    //排序
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+    //图片
+    @ApiModelProperty(value = "图片")
+    private String pic;
+
+    @ApiModelProperty(value = "子菜单")
+    private List<AdminNavigationBarVo> child;
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeArticleInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeArticleInfoVo.java
new file mode 100644
index 0000000..8d4a54f
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeArticleInfoVo.java
@@ -0,0 +1,45 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "AdminSeeArticleInfoVo", description = "文章返回")
+public class AdminSeeArticleInfoVo {
+
+    private Long id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "标题")
+    private String childTitle;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "所属栏目ID")
+    private Long columnId;
+
+    @ApiModelProperty(value = "访问量")
+    private Integer visits;
+
+    @ApiModelProperty(value = "主图")
+    private String mainDiagram;
+
+    @ApiModelProperty(value = "图集")
+    private String atlas;
+
+    @ApiModelProperty(value = "发布时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date releaseTime;
+
+    @ApiModelProperty(value = "是否立即发布 0:否 1:是")
+    private Integer releaseStatus;
+
+    @ApiModelProperty(value = "文章详情")
+    private String articleDetails;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeBarInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeBarInfoVo.java
new file mode 100644
index 0000000..b6c8fd4
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeBarInfoVo.java
@@ -0,0 +1,30 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminSeeBarInfoVo", description = "导航栏返回")
+public class AdminSeeBarInfoVo {
+
+    private Long id;
+    //导航栏标题
+    @ApiModelProperty(value = "导航栏标题")
+    private String barName;
+    //链接地址
+    @ApiModelProperty(value = "链接地址")
+    private String linkUrl;
+    //描述
+    @ApiModelProperty(value = "描述")
+    private String describe;
+    //排序
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+    //图片
+    @ApiModelProperty(value = "图片")
+    private String pic;
+    //上级类目ID
+    @ApiModelProperty(value = "上级类目ID")
+    private Long parentId;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java
new file mode 100644
index 0000000..f39e370
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java
@@ -0,0 +1,30 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminSeeColumnInfoVo", description = "栏目返回")
+public class AdminSeeColumnInfoVo {
+
+    private Long id;
+
+    @ApiModelProperty(value = "栏目名称")
+    private String columnName;
+
+    @ApiModelProperty(value = "栏目编码")
+    private String columnCode;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+
+    @ApiModelProperty(value = "图片")
+    private String pic;
+
+    @ApiModelProperty(value = "上级类目ID")
+    private Long parentId;
+}
diff --git a/src/main/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml
new file mode 100644
index 0000000..c576f46
--- /dev/null
+++ b/src/main/resources/mapper/ArticleMapper.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xcong.farmer.cms.modules.system.mapper.ArticleMapper">
+
+    <select id="selectAdminArticleInPage" resultType="com.xcong.farmer.cms.modules.system.vo.AdminArticleVo">
+        SELECT
+        a.*,
+        b.column_name columnName
+        FROM
+        t_article a
+        left join t_column b on a.column_id = b.id
+        <where>
+            and a.del_status = 1
+            <if test="record != null" >
+                <if test="record.columnId != null">
+                    and a.column_id = #{record.columnId}
+                </if>
+                <if test="record.title!=null">
+                    and a.title like concat ('%',#{record.title},'%')
+                </if>
+            </if>
+        </where>
+        order by a.create_time desc
+    </select>
+
+    <select id="selectAdminArticleByid" resultType="com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo">
+        SELECT
+        a.*
+        FROM
+        t_article a where id = #{id}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/ColumnMapper.xml b/src/main/resources/mapper/ColumnMapper.xml
new file mode 100644
index 0000000..9aedea4
--- /dev/null
+++ b/src/main/resources/mapper/ColumnMapper.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xcong.farmer.cms.modules.system.mapper.ColumnMapper">
+
+    <select id="selectAdminColumnVoInPage" resultType="com.xcong.farmer.cms.modules.system.vo.AdminColumnVo">
+        SELECT
+        a.*
+        FROM
+        t_column a
+        <where>
+            <if test="record != null" >
+                <if test="record.parentId != null">
+                    and a.parent_id = #{record.parentId}
+                </if>
+            </if>
+        </where>
+        order by a.create_time desc
+    </select>
+
+    <select id="selectColumnInListByParentId" resultType="com.xcong.farmer.cms.modules.system.vo.AdminColumnVo">
+        SELECT
+        a.*
+        FROM
+        t_column a
+        where a.parent_id = #{parentId}
+        order by a.create_time desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/NavigationBarMapper.xml b/src/main/resources/mapper/NavigationBarMapper.xml
new file mode 100644
index 0000000..5dfa1cc
--- /dev/null
+++ b/src/main/resources/mapper/NavigationBarMapper.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xcong.farmer.cms.modules.system.mapper.NavigationBarMapper">
+
+    <select id="selectAdminNavigationBarVoInPage" resultType="com.xcong.farmer.cms.modules.system.vo.AdminNavigationBarVo">
+        SELECT
+        a.*
+        FROM
+        t_navigation_bar a
+        <where>
+            <if test="record != null" >
+                <if test="record.parentId != null">
+                    and a.parent_id = #{record.parentId}
+                </if>
+            </if>
+        </where>
+        order by a.create_time desc
+    </select>
+
+    <select id="selectAdminNavigationBarVoByParentId" resultType="com.xcong.farmer.cms.modules.system.vo.AdminNavigationBarVo">
+        SELECT
+        a.*
+        FROM
+        t_navigation_bar a
+        where a.parent_id = #{parentId}
+        order by a.create_time desc
+    </select>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1