开源-基于SpringBoot+Vue的活动管理系统!

5/24/2023

前面有个粉丝找到孟哥,说遇到了困难!让我开发一个基于springboot的活动管理系统!

他非常的着急,事情比较突然。

好吧,我去买了咖啡,熬了两个通宵给赶制出来了!

后来小伙伴用完系统后,他说可以开源给大家一起学习!

果然人人为我,我为人人!强烈建议收藏,不然以后找不到了。更多干货孟哥持续分享!

源码见文章底部!

当然前面也分享了很多优质的项目:

1,基于springboot的医药管理系统 (opens new window)

2,基于springboot+vue的校园招聘系统 (opens new window)

3,基于ssm+小程序的物业管理系统 (opens new window)

4,基于SpringCloud的微服务项目【源码+视频教程】 (opens new window)

目录

1,系统功能及源码下载地址 (opens new window)

2,系统教程: (opens new window)

3,系统环境 (opens new window)

4,系统演示 (opens new window)

4.1 小程序端演示 (opens new window)

4.2 后端演示 (opens new window)

5,系统核心代码 (opens new window)

6,数据表设计 (opens new window)

7,赠人玫瑰,手留余香 (opens new window)

基于springboot的小程序系统,前台是小程序,后台用springboot开发的,源码 (opens new window)进行开源。

系统和奈斯,前台面向的是用户,可以进行登录、注册、在线预约活动、公告查看、活动分类查看等

管理员端可以进行用户的管理,活动的管理,活动分类管理。大家拿到源码后可以自己跑一下。自己可以二次开发或者学习使用,不可商用。

# 1,系统功能及源码下载地址

该系统 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。在线定时任务配置;支持集群,支持多数据源。本项目又在RuoYi的基础上增加了很多功能,比如百度AI、OSS等。

文章底部分享

# 2,系统教程:

对系统的模块进行了大体的介绍,帮你了解每个模块是干啥的。

具体的视频教程在文章底。

1

# 3,系统环境

系统开发平台:

JDK1.8+Maven3.6.1

框架:Springboot2.X+Bootstrap

数据库和工具:MySql5.7 Navicat

开发工具: Intellij Idea

浏览器:Chrome

涉及到的技术:MySql、Springboot、MyBatisPlus、Thymeleaf、Shiro、jquery、element 2

# 4,系统演示

# 4.1 小程序端演示

3

4

5

# 4.2 后端演示

6

7

8

# 5,系统核心代码

BlogController

/**
 * 广告位Controller
 *
 * @author v:kaifaizixun
 * @date 2021-08-16
 */
@Controller
@RequestMapping("/blog")
public class BlogController extends BaseController
{
    private static final String prefix = "blog/theme";
    //private static final String theme="/pnews";
    //private static final String theme="/pblog";
    //private static final String theme="/avatar";

    @Autowired
    private IArticleService articleService;

    @Autowired
    private IAlbumService albumService;
    @Autowired
    private ICommentService commentService;

    @Autowired
    private ITagsService tagsService;
    @Autowired
    private ICategoryService categoryService;
    @Autowired
    private IResourceService resourceService;
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private ILinkTypeService linkTypeService;
    @Autowired
    private ILinkService linkService;
    @Autowired
    private IBlogThemeService blogThemeService;

    private static Cache<String,Integer> articleViewCache= CacheUtil.newLRUCache(1000,1000*60*60);
    private static Cache<String,Integer> articleUpVoteCache= CacheUtil.newLRUCache(1000,1000*60*60);
    private static Cache<String,Integer> commentUpVoteCache= CacheUtil.newLRUCache(1000,1000*60*60);
    private static Cache<String,Map> bannerCache= CacheUtil.newTimedCache(1000*60*60);

    private static Cache<String,Object> blogCache= CacheUtil.newTimedCache(1000*60*60*3);

    private String getTheme(){
        return configService.selectConfigByKey(CmsConstants.KEY_BLOG_THEME);
    }
    /**
     * 首页
     *
     * @param model
     * @return
     */
    @GetMapping({"/","","/index"})
    public String index(Model model) {
        model.addAttribute("pageUrl", "blog/index");
        model.addAttribute("categoryId", "index");

        Article form = new Article();
        startPage();
        List<Article> articles = articleService.selectArticlesRegionNotNull(form);
        model.addAttribute("pageNo", new PageInfo(articles).getPageNum());
        model.addAttribute("pageSize", new PageInfo(articles).getPageSize());
        model.addAttribute("totalPages", new PageInfo(articles).getPages());
        model.addAttribute("articleList",articles);
        return prefix+"/" + getTheme() + "/index";
    }

    /**
     * 获取一个专辑以及其关联的素材
     */
    @PostMapping( "/getIndexBanner")
    @ResponseBody
    public AjaxResult getAlbum(String code)
    {
        if(StringUtils.isEmpty(code)){
            return AjaxResult.error("参数code不能为空!");
        }
        Map data= bannerCache.get(code,false);
        if(data==null){
            data= albumService.getAlbum(code);
            bannerCache.put(code,data);
        }
        return AjaxResult.success(data);
    }


    /**
     * 文章详情
     *
     * @param model
     * @param articleId
     * @return
     */
    @GetMapping("/article/{articleId}")
    public String article(HttpServletRequest request, Model model, @PathVariable("articleId") String articleId) {
        Article article = articleService.selectArticleById(articleId);
        if (article == null) {
            throw new BusinessException("该文章不存在!");
        }
        model.addAttribute("article", article);
        model.addAttribute("categoryId", article.getCategoryId());
        return prefix+"/" + getTheme() + "/article";
    }
    /**
     * 分类列表
     *
     * @param model
     * @return
     */
    @GetMapping("/category")
    public String category(Model model) {
        model.addAttribute("categoryId", "category");
        Article form = new Article();
        startPage();
        List<Article> articles = articleService.selectArticleList(form);
        PageInfo pageInfo=new PageInfo(articles);
        model.addAttribute("total", pageInfo.getTotal());
        model.addAttribute("pageNo", pageInfo.getPageNum());
        model.addAttribute("pageSize", pageInfo.getPageSize());
        model.addAttribute("totalPages", pageInfo.getPages());
        model.addAttribute("hasPrevious", pageInfo.isHasPreviousPage());
        model.addAttribute("hasNext", pageInfo.isHasNextPage());
        model.addAttribute("currentPage", pageInfo.getPageNum());
        model.addAttribute("prePage", pageInfo.getPrePage());
        model.addAttribute("nextPage", pageInfo.getNextPage());
        model.addAttribute("navNums", pageInfo.getNavigatepageNums());
        model.addAttribute("articleList",articles);
        return prefix+"/" + getTheme() + "/category_article";
    }
    /**
     * 分类列表
     *
     * @param categoryId
     * @param model
     * @return
     */
    @GetMapping("/category/{categoryId}")
    public String categoryBy(@PathVariable("categoryId") String categoryId, Model model) {
        Category category=categoryService.selectCategoryById(Long.valueOf(categoryId));
        if(category!=null){
            model.addAttribute("categoryName", category.getCategoryName());
        }
        Article form = new Article();
        form.setCategoryId(categoryId);
        model.addAttribute("categoryId", categoryId);
        startPage();
        List<Article> articles = articleService.selectArticleList(form);
        PageInfo pageInfo=new PageInfo(articles);
        model.addAttribute("total", pageInfo.getTotal());
        model.addAttribute("pageNo", pageInfo.getPageNum());
        model.addAttribute("pageSize", pageInfo.getPageSize());
        model.addAttribute("totalPages", pageInfo.getPages());
        model.addAttribute("hasPrevious", pageInfo.isHasPreviousPage());
        model.addAttribute("hasNext", pageInfo.isHasNextPage());
        model.addAttribute("currentPage", pageInfo.getPageNum());
        model.addAttribute("prePage", pageInfo.getPrePage());
        model.addAttribute("nextPage", pageInfo.getNextPage());
        model.addAttribute("navNums", pageInfo.getNavigatepageNums());
        model.addAttribute("articleList",articles);
        return prefix+"/" + getTheme() + "/category";
    }

    /**
     * 分类列表
     *
     * @param model
     * @return
     */
    @GetMapping("/resource/list")
    public String resourceList(Model model) {
        model.addAttribute("categoryId", "resource");
        Resource form = new Resource();
        form.setStatus(CmsConstants.STATUS_NORMAL);
        form.setAuditState(CmsConstants.AUDIT_STATE_AGREE.toString());
        startPage();
        List<Resource> resources = resourceService.selectResourceList(form);
        PageInfo pageInfo=new PageInfo(resources);
        model.addAttribute("total", pageInfo.getTotal());
        model.addAttribute("pageNo", pageInfo.getPageNum());
        model.addAttribute("pageSize", pageInfo.getPageSize());
        model.addAttribute("totalPages", pageInfo.getPages());
        model.addAttribute("hasPrevious", pageInfo.isHasPreviousPage());
        model.addAttribute("hasNext", pageInfo.isHasNextPage());
        model.addAttribute("currentPage", pageInfo.getPageNum());
        model.addAttribute("prePage", pageInfo.getPrePage());
        model.addAttribute("nextPage", pageInfo.getNextPage());
        model.addAttribute("navNums", pageInfo.getNavigatepageNums());
        model.addAttribute("resourceList",resources);
        return prefix+"/" + getTheme() + "/list_resource";
    }
    /**
     * 资源详情
     *
     * @param model
     * @param id
     * @return
     */
    @GetMapping("/resource/{id}")
    public String resource(HttpServletRequest request, Model model, @PathVariable("id") String id) {
        Resource resource = resourceService.selectResourceById(id);
        if (resource == null) {
            throw new BusinessException("该资源不存在!");
        }
        model.addAttribute("resource", resource);
        model.addAttribute("categoryId","resource");
        return prefix+"/" + getTheme() + "/resource";
    }
    /**
     * 搜索内容
     * 目前仅支持文章标题模糊搜索
     *
     * @param content
     * @param model
     * @return
     */
    @GetMapping("/search")
    public String search(String content, Model model) {
        model.addAttribute("content", content);
        Article form = new Article();
        form.setTitle(content.trim());
        startPage();
        List<Article> articles = articleService.selectArticleList(form);
        PageInfo pageInfo=new PageInfo(articles);
        model.addAttribute("total", pageInfo.getTotal());
        model.addAttribute("pageNo", pageInfo.getPageNum());
        model.addAttribute("pageSize", pageInfo.getPageSize());
        model.addAttribute("totalPages", pageInfo.getPages());
        model.addAttribute("hasPrevious", pageInfo.isHasPreviousPage());
        model.addAttribute("hasNext", pageInfo.isHasNextPage());
        model.addAttribute("currentPage", pageInfo.getPageNum());
        model.addAttribute("prePage", pageInfo.getPrePage());
        model.addAttribute("nextPage", pageInfo.getNextPage());
        model.addAttribute("navNums", pageInfo.getNavigatepageNums());
        model.addAttribute("articleList",articles);
        return prefix+"/" + getTheme() + "/search";
    }
    /**
     * 标签列表
     *
     * @param tagId
     * @param model
     * @return
     */
    @GetMapping("/tag/{tagId}")
    public String tag(@PathVariable("tagId") String tagId, Model model) {
        model.addAttribute("tagId", tagId);
        Tags tag=tagsService.selectTagsById(Long.valueOf(tagId));
        if(tag!=null){
            model.addAttribute("tagName", tag.getTagName());
        }
        Article form = new Article();
        form.setTag(tagId);
        model.addAttribute("pageUrl", "blog/tag/" + tagId);
        startPage();
        List<Article> articles = articleService.selectArticleList(form);
        PageInfo pageInfo=new PageInfo(articles);
        model.addAttribute("total", pageInfo.getTotal());
        model.addAttribute("pageNo", pageInfo.getPageNum());
        model.addAttribute("pageSize", pageInfo.getPageSize());
        model.addAttribute("totalPages", pageInfo.getPages());
        model.addAttribute("hasPrevious", pageInfo.isHasPreviousPage());
        model.addAttribute("hasNext", pageInfo.isHasNextPage());
        model.addAttribute("currentPage", pageInfo.getPageNum());
        model.addAttribute("prePage", pageInfo.getPrePage());
        model.addAttribute("nextPage", pageInfo.getNextPage());
        model.addAttribute("navNums", pageInfo.getNavigatepageNums());
        model.addAttribute("articleList",articles);
        return prefix+"/" + getTheme() + "/tag";
    }
    /**
     * 留言
     *
     * @param model
     * @return
     */
    @GetMapping("/siteMsg")
    public String comment(Model model) {
        model.addAttribute("categoryId", "siteMsg");
        return prefix+"/" + getTheme() + "/siteMsg";
    }
    @PostMapping("/article/view")
    @ResponseBody
    public AjaxResult articleView(HttpServletRequest request,String articleId){
        if(StringUtils.isEmpty(articleId)){
            return AjaxResult.error("系统错误!");
        }
        String ip= IpUtils.getIpAddr(request);
        Integer n=articleViewCache.get(ip+"|"+articleId);
        if(n==null||n==0){
            articleService.articleLook(articleId);
            articleViewCache.put(ip+"|"+articleId,1);
            return AjaxResult.success("浏览数+1");
        }else{
            articleViewCache.put(ip+"|"+articleId,n++);
            return  AjaxResult.error("系统错误!");
        }
    }
    @PostMapping("/article/upVote")
    @ResponseBody
    public AjaxResult articleUpVote(HttpServletRequest request,String articleId){
        if(StringUtils.isEmpty(articleId)){
            return AjaxResult.error("系统错误!");
        }
        String ip= IpUtils.getIpAddr(request);
        Integer n=articleUpVoteCache.get(ip+"|"+articleId);
        if(n==null||n==0){
            articleService.upVote(articleId);
            articleUpVoteCache.put(ip+"|"+articleId,1);
            return AjaxResult.success("点赞数+1");
        }else{
            articleUpVoteCache.put(ip+"|"+articleId,n++);
            return  AjaxResult.success("已经点赞");
        }
    }

ArticleController

/**
 * 文章管理Controller
 *
 * @author v:kaifaizixun
 * @date 2021-08-16
 */
@Controller
@RequestMapping("/cms/article")
public class ArticleController extends BaseController
{
    private String prefix = "cms/article";

    @Autowired
    private IArticleService articleService;
    @Autowired
    private ITagsService tagsService;

    @Autowired
    private ISysConfigService configService;

    private String getEditorType(){
        return configService.selectConfigByKey(CmsConstants.KEY_EDITOR_TYPE);
    }

    @RequiresPermissions("cms:article:view")
    @GetMapping()
    public String article()
    {
        return prefix + "/article";
    }

    /**
     * 查询文章管理列表
     */
    @RequiresPermissions("cms:article:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(Article article)
    {
        startPage();
        List<Article> list = articleService.selectArticleList(article);
        return getDataTable(list);
    }

    /**
     * 导出文章管理列表
     */
    @RequiresPermissions("cms:article:export")
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(Article article)
    {
        List<Article> list = articleService.selectArticleList(article);
        ExcelUtil<Article> util = new ExcelUtil<Article>(Article.class);
        return util.exportExcel(list, "article");
    }

ResourceController

/**
 * 资源Controller
 *
 * @author wujiyue
 * @date 2019-11-23
 */
@Controller
@RequestMapping("/cms/resource")
public class ResourceController extends BaseController
{
    private String prefix = "cms/resource";

    @Autowired
    private IResourceService resourceService;

    @RequiresPermissions("cms:resource:view")
    @GetMapping()
    public String resource()
    {
        return prefix + "/resource";
    }

    /**
     * 查询资源列表
     */
    @RequiresPermissions("cms:resource:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(Resource resource)
    {
        startPage();
        List<Resource> list = resourceService.selectResourceList(resource);
        return getDataTable(list);
    }

    /**
     * 导出资源列表
     */
    @RequiresPermissions("cms:resource:export")
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(Resource resource)
    {
        List<Resource> list = resourceService.selectResourceList(resource);
        ExcelUtil<Resource> util = new ExcelUtil<Resource>(Resource.class);
        return util.exportExcel(list, "resource");
    }

# 6,数据表设计

系统核心数据表的设计如下所示:

/*
 Date: 21/04/2020 12:02:53
author:menggge
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for blog_theme
-- ----------------------------
DROP TABLE IF EXISTS `blog_theme`;
CREATE TABLE `blog_theme`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '主题名称',
  `code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '主题代码',
  `cover_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '封面图片',
  `create_time` datetime(0) DEFAULT NULL COMMENT '创建时间',
  `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of blog_theme
-- ----------------------------
INSERT INTO `blog_theme` VALUES (1, 'Avatar响应式博客模版主题', 'avatar', '/images/cover/1561132050443308.jpg', '2019-12-21 08:55:00', 'ry');
INSERT INTO `blog_theme` VALUES (2, '葡萄资讯模板主题,葡萄内容管理系统模板主题', 'pnews', '/images/cover/201903051436106979.jpg', '2019-12-21 08:55:31', 'ry');
INSERT INTO `blog_theme` VALUES (3, '“pblog”个性博客模版主题,PT-CMS模版主题,免费下载', 'pblog', '/images/cover/pblog.jpg', '2019-12-21 08:55:58', 'ry');

-- ----------------------------
-- Table structure for cms_ad
-- ----------------------------
DROP TABLE IF EXISTS `cms_ad`;
CREATE TABLE `cms_ad`  (
  `ad_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '广告位ID',
  `ad_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '广告位编码',
  `ad_name` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '广告位名称',
  `width` smallint(6) DEFAULT NULL COMMENT '宽度',
  `height` smallint(6) DEFAULT NULL COMMENT '高度',
  `status` smallint(6) DEFAULT NULL COMMENT '状态',
  `user_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建人ID',
  `dept_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '部门ID',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述',
  `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建人',
  `create_time` datetime(0) DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`ad_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cms_ad
-- ----------------------------
INSERT INTO `cms_ad` VALUES (1, 'main', '首页顶部', 1280, 38, 0, '1', '103', '测试', NULL, '2019-11-16 20:26:57');

-- ----------------------------
-- Table structure for cms_ad_material
-- ----------------------------
DROP TABLE IF EXISTS `cms_ad_material`;
CREATE TABLE `cms_ad_material`  (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `ad_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '广告位ID',
  `material_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '广告素材ID',
  `link` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '链接',
  `sort` smallint(6) DEFAULT 255 COMMENT '排序',
  `hit` int(11) DEFAULT 0 COMMENT '点击数',
  `start_time` datetime(0) DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime(0) DEFAULT NULL COMMENT '结束时间',
  `status` smallint(6) DEFAULT NULL COMMENT '状态',
  `use_his_id` int(11) DEFAULT NULL COMMENT '使用记录表ID',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for cms_album
-- ----------------------------
DROP TABLE IF EXISTS `cms_album`;
CREATE TABLE `cms_album`  (
  `album_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '相册ID',
  `album_name` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '相册名称',
  `user_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建人ID',
  `dept_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '部门ID',
  `album_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '相册类型',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述',
  `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建人',
  `create_time` datetime(0) DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `audit_state` smallint(6) DEFAULT 0 COMMENT '审核状态',
  `code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '编码',
  `width` smallint(6) DEFAULT NULL COMMENT '宽度',
  `height` smallint(6) DEFAULT NULL COMMENT '高度',
  PRIMARY KEY (`album_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cms_album
-- ----------------------------
INSERT INTO `cms_album` VALUES ('2019111014175065994146', '首页banner', '3', '103', 'banner', NULL, 'yf', '2019-11-10 14:17:51', 1, 'main', 960, 320);
INSERT INTO `cms_album` VALUES ('2019111014175065994147', '博客首页banner', '3', '103', 'banner', NULL, 'yf', '2019-11-19 10:47:24', 1, 'blog_index', 798, 256);

-- ----------------------------
-- Table structure for cms_album_material
-- ----------------------------
DROP TABLE IF EXISTS `cms_album_material`;
CREATE TABLE `cms_album_material`  (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `album_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '专辑ID',
  `material_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '素材ID',
  `link` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '链接',
  `sort` smallint(6) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 69 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cms_album_material
-- ----------------------------
INSERT INTO `cms_album_material` VALUES (57, '2019111014175065994146', '2019111009322629296151', NULL, 1);
INSERT INTO `cms_album_material` VALUES (58, '2019111014175065994146', '2019111009381073394848', NULL, 2);
INSERT INTO `cms_album_material` VALUES (63, '2019111014175065994147', '2019111009322629296151', NULL, 1);
INSERT INTO `cms_album_material` VALUES (64, '2019111014175065994147', '2019111009381073394848', NULL, 2);
INSERT INTO `cms_album_material` VALUES (67, '2019111014175065994147', '2019111009382058929539', NULL, 1);
INSERT INTO `cms_album_material` VALUES (68, '2019111014175065994146', '2019111009382058929539', NULL, 1);

-- ----------------------------
-- Table structure for cms_article
-- ----------------------------
DROP TABLE IF EXISTS `cms_article`;
CREATE TABLE `cms_article`  (
  `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键,文章ID',
  `yhid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者',
  `article_region` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '1' COMMENT '推荐到哪个专区。比如:头条、精选、最新、热门、评论最多等',
  `author` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '原文作者',
  `publish_time` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '发布时间',
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文章标题',
  `keywords` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '关键词',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '摘要',
  `cover_image` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '封面图片',
  `article_model` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文章模型',
  `copy_flag` smallint(6) DEFAULT 0 COMMENT '转载标志',
  `category_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '频道栏目ID',
  `personal_category` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '个人分类,多个用逗号分隔',
  `link` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '原始链接',
  `static_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '静态化后url',
  `tags` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标签',
  `hit` int(11) DEFAULT 0 COMMENT '点击数',
  `reply_num` int(11) DEFAULT 0 COMMENT '回复数',
  `up_vote` int(11) DEFAULT 0 COMMENT '点赞数',
  `down_vote` int(11) DEFAULT 0 COMMENT '差评数',
  `hot_flag` smallint(6) DEFAULT 0 COMMENT '热点标志',
  `new_flag` smallint(6) DEFAULT 0 COMMENT '新增标志',
  `comment_flag` smallint(6) DEFAULT 0 COMMENT '是否开启评论',
  `top_flag` smallint(6) DEFAULT 0 COMMENT '置顶标志',
  `favourite` int(11) DEFAULT 0 COMMENT '收藏数',
  `mission_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '趴取任务的ID',
  `template_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '生成静态页面的模板(cms_template表中的name)',
  `create_time` datetime(0) DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime(0) DEFAULT NULL COMMENT '更新时间',
  `available` smallint(6) DEFAULT 1 COMMENT '状态标志',
  `deleted` smallint(6) DEFAULT 0 COMMENT '删除标志',
  `extra1` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '附加字段1',
  `extra2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '附加字段2',
  `extra3` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '附加字段3',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `index_title`(`title`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

# 7,赠人玫瑰,手留余香

前面还整理了大量的优质的项目,帮助小伙伴快速学习。总有你需要的。

9

10

本文章系统完整的源码和大量优质项目源码获取:

1,关注下方公众号

2,回复:活动

微信图片_20230511155445