Spring Cloud Alibaba实践——项目初始化

项目目标

搭建一个由Spring Cloud Alibaba开发的包含投稿、分享、积分等功能的微服务项目。

创建数据库表结构

分为内容中心和用户中心两个数据库:

  1. 用户中心建表SQL

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    CREATE DATABASE user_center;
    USE `user_center`;
    
    -- -----------------------------------------------------
    -- Table `user`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `user` (
      `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Id',
      `wx_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信id',
      `wx_nickname` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信昵称',
      `roles` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '角色',
      `avatar_url` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '头像地址',
      `create_time` DATETIME NOT NULL COMMENT '创建时间',
      `update_time` DATETIME NOT NULL COMMENT '修改时间',
      `bonus` INT NOT NULL DEFAULT 300 COMMENT '积分',
      PRIMARY KEY (`id`))
    COMMENT = '分享';
    
    
    -- -----------------------------------------------------
    -- Table `bonus_event_log`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `bonus_event_log` (
      `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Id',
      `user_id` INT NULL COMMENT 'user.id',
      `value` INT NULL COMMENT '积分操作值',
      `event` VARCHAR(20) NULL COMMENT '发生的事件',
      `create_time` DATETIME NULL COMMENT '创建时间',
      `description` VARCHAR(100) NULL COMMENT '描述',
      PRIMARY KEY (`id`),
      INDEX `fk_bonus_event_log_user1_idx` (`user_id` ASC) )
    ENGINE = InnoDB
    COMMENT = '积分变更记录表';
    
  2. 内容中心建表SQL

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
    CREATE DATABASE content_center;
    USE `content_center`;
    
    -- -----------------------------------------------------
    -- Table `share`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `share` (
      `id` INT NOT NULL AUTO_INCREMENT COMMENT 'id',
      `user_id` INT NOT NULL DEFAULT 0 COMMENT '发布人id',
      `title` VARCHAR(80) NOT NULL DEFAULT '' COMMENT '标题',
      `create_time` DATETIME NOT NULL COMMENT '创建时间',
      `update_time` DATETIME NOT NULL COMMENT '修改时间',
      `is_original` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否原创 0:否 1:是',
      `author` VARCHAR(45) NOT NULL DEFAULT '' COMMENT '作者',
      `cover` VARCHAR(256) NOT NULL DEFAULT '' COMMENT '封面',
      `summary` VARCHAR(256) NOT NULL DEFAULT '' COMMENT '概要信息',
      `price` INT NOT NULL DEFAULT 0 COMMENT '价格(需要的积分)',
      `download_url` VARCHAR(256) NOT NULL DEFAULT '' COMMENT '下载地址',
      `buy_count` INT NOT NULL DEFAULT 0 COMMENT '下载数 ',
      `show_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否显示 0:否 1:是',
      `audit_status` VARCHAR(10) NOT NULL DEFAULT 0 COMMENT '审核状态 NOT_YET: 待审核 PASSED:审核通过 REJECTED:审核不通过',
      `reason` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '审核不通过原因',
      PRIMARY KEY (`id`))
    ENGINE = InnoDB
    COMMENT = '分享表';
    
    
    -- -----------------------------------------------------
    -- Table `mid_user_share`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mid_user_share` (
      `id` INT NOT NULL AUTO_INCREMENT,
      `share_id` INT NOT NULL COMMENT 'share.id',
      `user_id` INT NOT NULL COMMENT 'user.id',
      PRIMARY KEY (`id`),
      INDEX `fk_mid_user_share_share1_idx` (`share_id` ASC) ,
      INDEX `fk_mid_user_share_user1_idx` (`user_id` ASC) )
    ENGINE = InnoDB
    COMMENT = '用户-分享中间表【描述用户购买的分享】';
    
    
    -- -----------------------------------------------------
    -- Table `notice`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `notice` (
      `id` INT NOT NULL AUTO_INCREMENT COMMENT 'id',
      `content` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '内容',
      `show_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否显示 0:否 1:是',
      `create_time` DATETIME NOT NULL COMMENT '创建时间',
      PRIMARY KEY (`id`));
    

Spring Boot版本的项目雏形

一个很简单的单纯使用Spring Boot搭建的项目雏形,代码地址:Spring Boot Project

后续的有关Spring Cloud Alibaba的开发都基于这个雏形项目。