基于springboot的小程序系统,前台是小程序,后台用springboot开发的,源码进行开源。
系统和奈斯,前台面向的是用户,可以进行登录、注册、在线预约活动、公告查看、活动分类查看等
管理员端可以进行用户的管理,活动的管理,活动分类管理。大家拿到源码后可以自己跑一下。自己可以二次开发或者学习使用,不可商用。
1,系统功能及源码下载地址
该系统 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。在线定时任务配置;支持集群,支持多数据源。本项目又在RuoYi的基础上增加了很多功能,比如百度AI、OSS等。
文章底部分享
2,系统教程:
对系统的模块进行了大体的介绍,帮你了解每个模块是干啥的。
具体的视频教程在文章底。
3,系统环境
系统开发平台:
JDK1.8+Maven3.6.1
框架:Springboot2.X+Bootstrap
数据库和工具:MySql5.7 Navicat
开发工具: Intellij Idea
浏览器:Chrome
涉及到的技术:MySql、Springboot、MyBatisPlus、Thymeleaf、Shiro、jquery、element
4,系统演示
4.1 小程序端演示
4.2 后端演示
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,赠人玫瑰,手留余香
前面还整理了大量的优质的项目,帮助小伙伴快速学习。总有你需要的。