============= 后端_数据模型 ============= 1 数据库表 1.1 文章表 CREATE TABLE `ysdblogdb`.`t_article` ( `id` bigint(0) NOT NULL AUTO_INCREMENT, `comment_count` int(0) NULL DEFAULT NULL COMMENT '评论数', `create_date` bigint(0) NULL DEFAULT NULL COMMENT '创建时间', `summary` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介', `title` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题', `view_count` int(0) NULL DEFAULT NULL COMMENT '阅读数', `weight` int(0) NOT NULL COMMENT '是否置顶', `author_id` bigint(0) NULL DEFAULT NULL COMMENT '作者id', `content_id` bigint(0) NULL DEFAULT NULL COMMENT '内容id', `category_id` bigint(0) NULL DEFAULT NULL COMMENT '分类id', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 1.2 标签表 CREATE TABLE `ysdblogdb`.`t_tag` ( `id` bigint(0) NOT NULL AUTO_INCREMENT, `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, `tag_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 1.3 文章标签关联表 CREATE TABLE `ysdblogdb`.`t_article_tag` ( `id` bigint(0) NOT NULL AUTO_INCREMENT, `article_id` bigint(0) NOT NULL, `tag_id` bigint(0) NOT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `article_id`(`article_id`) USING BTREE, INDEX `tag_id`(`tag_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 1.4 用户表 CREATE TABLE `ysdblogdb`.`t_user` ( `id` bigint(0) NOT NULL AUTO_INCREMENT, `account` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '账号', `admin` bit(1) NULL DEFAULT NULL COMMENT '是否管理员', `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像', `create_date` bigint(0) NULL DEFAULT NULL COMMENT '注册时间', `deleted` bit(1) NULL DEFAULT NULL COMMENT '是否删除', `email` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', `last_login` bigint(0) NULL DEFAULT NULL COMMENT '最后登录时间', `mobile_phone_number` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称', `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', `salt` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '加密盐', `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 2 实体类 2.1 文章实体类 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/pojo/Article.java: @Data public class Article { private Long id; private Integer commentCount; private Long createDate; private String summary; private String title; private Integer viewCount; private Integer weight; private Long authorId; private Long contentId; private Long categoryId; } 2.2 标签实体类 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/pojo/Tag.java: @Data public class Tag { private Long id; private String avatar; private String tagName; } 2.3 用户实体类 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/pojo/User.java: @Data public class User { // 插入记录时自动生成用户ID字段的值,默认采用基于雪花算法的分布式ID // 如需使用自增ID,可通过TableId(type=IdType.AUTO)注解显式指明 private Long id; private String account; private Integer admin; private String avatar; private Long createDate; private Integer deleted; private String email; private Long lastLogin; private String mobilePhoneNumber; private String nickname; private String password; private String salt; private String status; } 3 数据访问接口 3.1 文章数据访问接口 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/mapper/ArticleMapper.java: public interface ArticleMapper extends BaseMapper
{ } 3.2 标签数据访问接口 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/mapper/TagMapper.java: public interface TagMapper extends BaseMapper { } 3.3 用户数据访问接口 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/mapper/UserMapper.java: public interface UserMapper extends BaseMapper { } 4 视图对象 4.1 页参数视图对象 /ysdblog-api/src/main/java/com/weihome/ysdblog/vo/param/PageParam.java: @Data public class PageParam { private Integer page; private Integer pageSize; } 4.2 标签视图对象 /ysdblog-api/src/main/java/com/weihome/ysdblog/vo/TagVo.java: @Data public class TagVo { private Long id; private String tagName; } 4.3 文章视图对象 /ysdblog-api/src/main/java/com/weihome/ysdblog/vo/ArticleVo.java: @Data public class ArticleVo { // 基于雪花算法自动生成的分布式ID可能很大 // 在Json中以数值形式表示可能导致前端损失精度 // 加此注解显式指明该属性在Json中以字符串形式表达 private Long id; private Integer commentCount; private String createDate; private String summary; private String title; private Integer viewCount; private Integer weight; private String author; private ContentVo content; private CategoryVo category; private List tags; } 4.4 结果视图对象 /ysdblog-api/src/main/java/com/weihome/ysdblog/vo/Result.java: @Data @AllArgsConstructor @NoArgsConstructor public class Result { private boolean success; private Integer code; private String msg; private Object data; public static Result success(Object data) { return new Result(true, 200, "success", data); } public static Result fail(Integer code, String msg) { return new Result(false, code, msg, null); } }