xiaoyong931011
2022-05-30 59411a551afeca8f627079a4224074617d38d875
20220527
33 files added
2 files modified
1617 ■■■■■ changed files
src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminArticleController.java 56 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java 66 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java 67 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddArticleDto.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddBarDto.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddColumnDto.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminArticleDto.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminColumnDto.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminNavigationBarDto.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateArticleDto.java 47 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateBarDto.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateColumnDto.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java 60 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java 30 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/entity/NavigationBarEntity.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/mapper/NavigationBarMapper.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/IColumnService.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/INavigationBarService.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java 179 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java 214 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MenuServiceImpl.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/NavigationBarServiceImpl.java 202 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminArticleVo.java 51 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminColumnVo.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminNavigationBarVo.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeArticleInfoVo.java 45 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeBarInfoVo.java 30 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java 30 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/ArticleMapper.xml 33 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/ColumnMapper.xml 29 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/NavigationBarMapper.xml 29 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminArticleController.java
New file
@@ -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);
    }
}
src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java
New file
@@ -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);
    }
}
src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java
New file
@@ -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);
    }
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddArticleDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddBarDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddColumnDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminArticleDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminColumnDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminNavigationBarDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateArticleDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateBarDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateColumnDto.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/entity/NavigationBarEntity.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java
New file
@@ -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);
}
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
New file
@@ -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);
}
src/main/java/com/xcong/farmer/cms/modules/system/mapper/NavigationBarMapper.java
New file
@@ -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);
}
src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
New file
@@ -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);
}
src/main/java/com/xcong/farmer/cms/modules/system/service/IColumnService.java
New file
@@ -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();
}
src/main/java/com/xcong/farmer/cms/modules/system/service/INavigationBarService.java
New file
@@ -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();
}
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
New file
@@ -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("更新成功");
    }
}
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
New file
@@ -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);
    }
}
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();
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/NavigationBarServiceImpl.java
New file
@@ -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);
    }
}
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("更新成功");
    }
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminArticleVo.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminColumnVo.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminNavigationBarVo.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeArticleInfoVo.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeBarInfoVo.java
New file
@@ -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;
}
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java
New file
@@ -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;
}
src/main/resources/mapper/ArticleMapper.xml
New file
@@ -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>
src/main/resources/mapper/ColumnMapper.xml
New file
@@ -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>
src/main/resources/mapper/NavigationBarMapper.xml
New file
@@ -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>