zoukankan      html  css  js  c++  java
  • 一柱擎天-单体架构

    1、项目会使用maven来构建一个聚合的分层项目。分层后的项目结构如下: 

     1)聚合工程里可以分为顶级项目(顶级工程、父工程)与子工程,这两者的关系其实就是父子继承的关系,子工程在maven里称之为模块(module),模块之间是平级,是可以相互依赖的。

    2)子模块可以使用顶级工程里所有的资源(依赖),子模块之间如果要使用资源,必须构建依赖(构建关系)
    3)一个顶级工程是可以由多个不同的子工程共同组合而成。

     

         api -> service -> mapper -> pojo -> common
    api可以使用service、mapper、pojo与common中相应的方法的

    2、数据库设计,使用PDMan来设计数据库

    create table carousel
    (
        id varchar(64) not null comment '主键'
            primary key,
        image_url varchar(128) not null comment '图片 图片地址',
        background_color varchar(32) null comment '背景色',
        item_id varchar(64) null comment '商品id 商品id',
        cat_id varchar(64) null comment '商品分类id 商品分类id',
        type int not null comment '轮播图类型 轮播图类型,用于判断,可以根据商品id或者分类进行页面跳转,1:商品 2:分类',
        sort int not null comment '轮播图展示顺序',
        is_show int not null comment '是否展示',
        create_time datetime not null comment '创建时间 创建时间',
        update_time datetime not null comment '更新时间 更新'
    )
    comment '轮播图 ' charset=utf8mb4;
    
    create table category
    (
        id int auto_increment comment '主键'
            primary key,
        name varchar(32) not null comment '分类名称',
        type int not null comment '分类类型',
        father_id int not null comment '父id',
        logo varchar(64) null comment '图标',
        slogan varchar(64) null comment '口号',
        cat_image varchar(64) null comment '分类图',
        bg_color varchar(32) null comment '背景颜色'
    )
    comment '商品分类 ' charset=utf8mb4;
    
    create table items
    (
        id varchar(64) not null comment '商品主键id'
            primary key,
        item_name varchar(32) not null comment '商品名称 商品名称',
        cat_id int not null comment '分类外键id 分类id',
        root_cat_id int not null comment '一级分类外键id',
        sell_counts int not null comment '累计销售 累计销售',
        on_off_status int not null comment '上下架状态 上下架状态,1:上架 2:下架',
        content text not null comment '商品内容 商品内容',
        created_time datetime not null comment '创建时间',
        updated_time datetime not null comment '更新时间'
    )
    comment '商品表 商品信息相关表:分类表,商品图片表,商品规格表,商品参数表' charset=utf8mb4;
    
    create table items_comments
    (
        id varchar(64) not null comment 'id主键'
            primary key,
        user_id varchar(64) null comment '用户id 用户名须脱敏',
        item_id varchar(64) not null comment '商品id',
        item_name varchar(64) null comment '商品名称',
        item_spec_id varchar(64) null comment '商品规格id 可为空',
        sepc_name varchar(32) null comment '规格名称 可为空',
        comment_level int not null comment '评价等级 1:好评 2:中评 3:差评',
        content varchar(128) not null comment '评价内容',
        created_time datetime null comment '创建时间',
        updated_time datetime null comment '更新时间'
    )
    comment '商品评价表 ' charset=utf8mb4;
    
    create table items_img
    (
        id varchar(64) not null comment '图片主键'
            primary key,
        item_id varchar(64) not null comment '商品外键id 商品外键id',
        url varchar(128) not null comment '图片地址 图片地址',
        sort int not null comment '顺序 图片顺序,从小到大',
        is_main int not null comment '是否主图 是否主图,1:是,0:否',
        created_time datetime not null comment '创建时间',
        updated_time datetime not null comment '更新时间'
    )
    comment '商品图片 ' charset=utf8mb4;
    
    create table items_param
    (
        id varchar(64) not null comment '商品参数id'
            primary key,
        item_id varchar(32) not null comment '商品外键id',
        produc_place varchar(32) not null comment '产地 产地,例:中国江苏',
        foot_period varchar(32) not null comment '保质期 保质期,例:180天',
        brand varchar(32) not null comment '品牌名 品牌名,例:三只大灰狼',
        factory_name varchar(32) not null comment '生产厂名 生产厂名,例:大灰狼工厂',
        factory_address varchar(32) not null comment '生产厂址 生产厂址,例:大灰狼生产基地',
        packaging_method varchar(32) not null comment '包装方式 包装方式,例:袋装',
        weight varchar(32) not null comment '规格重量 规格重量,例:35g',
        storage_method varchar(32) not null comment '存储方法 存储方法,例:常温5~25°',
        eat_method varchar(32) not null comment '食用方式 食用方式,例:开袋即食',
        created_time datetime not null comment '创建时间',
        updated_time datetime not null comment '更新时间'
    )
    comment '商品参数 ' charset=utf8mb4;
    
    create table items_spec
    (
        id varchar(64) not null comment '商品规格id'
            primary key,
        item_id varchar(64) not null comment '商品外键id',
        name varchar(32) not null comment '规格名称',
        stock int not null comment '库存',
        discounts decimal(4,2) not null comment '折扣力度',
        price_discount int not null comment '优惠价',
        price_normal int not null comment '原价',
        created_time datetime not null comment '创建时间',
        updated_time datetime not null comment '更新时间'
    )
    comment '商品规格 每一件商品都有不同的规格,不同的规格又有不同的价格和优惠力度,规格表为此设计' charset=utf8mb4;
    
    create table order_items
    (
        id varchar(64) not null comment '主键id'
            primary key,
        order_id varchar(64) not null comment '归属订单id',
        item_id varchar(64) not null comment '商品id',
        item_img varchar(128) not null comment '商品图片',
        item_name varchar(32) not null comment '商品名称',
        item_spec_id varchar(32) not null comment '规格id',
        item_spec_name varchar(32) not null comment '规格名称',
        price int not null comment '成交价格',
        buy_counts int not null comment '购买数量'
    )
    comment '订单商品关联表 ' charset=utf8mb4;
    
    create table order_status
    (
        order_id varchar(64) not null comment '订单ID;对应订单表的主键id'
            primary key,
        order_status int not null comment '订单状态',
        created_time datetime null comment '订单创建时间;对应[10:待付款]状态',
        pay_time datetime null comment '支付成功时间;对应[20:已付款,待发货]状态',
        deliver_time datetime null comment '发货时间;对应[30:已发货,待收货]状态',
        success_time datetime null comment '交易成功时间;对应[40:交易成功]状态',
        close_time datetime null comment '交易关闭时间;对应[50:交易关闭]状态',
        comment_time datetime null comment '留言时间;用户在交易成功后的留言时间'
    )
    comment '订单状态表;订单的每个状态更改都需要进行记录
    10:待付款  20:已付款,待发货  30:已发货,待收货(7天自动确认)  40:交易成功(此时可以评价)50:交易关闭(待付款时,用户取消 或 长时间未付款,系统识别后自动关闭)
    退货/退货,此分支流程不做,所以不加入' charset=utf8mb4;
    
    create table orders
    (
        id varchar(64) not null comment '订单主键;同时也是订单编号'
            primary key,
        user_id varchar(64) not null comment '用户id',
        receiver_name varchar(32) not null comment '收货人快照',
        receiver_mobile varchar(32) not null comment '收货人手机号快照',
        receiver_address varchar(128) not null comment '收货地址快照',
        total_amount int not null comment '订单总价格',
        real_pay_amount int not null comment '实际支付总价格',
        post_amount int not null comment '邮费;默认可以为零,代表包邮',
        pay_method int not null comment '支付方式',
        left_msg varchar(128) null comment '买家留言',
        extand varchar(32) null comment '扩展字段',
        is_comment int not null comment '买家是否评价;1:已评价,0:未评价',
        is_delete int not null comment '逻辑删除状态;1: 删除 0:未删除',
        created_time datetime not null comment '创建时间(成交时间)',
        updated_time datetime not null comment '更新时间'
    )
    comment '订单表;' charset=utf8mb4;
    
    create table user_address
    (
        id varchar(64) not null comment '地址主键id'
            primary key,
        user_id varchar(64) not null comment '关联用户id',
        receiver varchar(32) not null comment '收件人姓名',
        mobile varchar(32) not null comment '收件人手机号',
        province varchar(32) not null comment '省份',
        city varchar(32) not null comment '城市',
        district varchar(32) not null comment '区县',
        detail varchar(128) not null comment '详细地址',
        extand varchar(128) null comment '扩展字段',
        is_default int null comment '是否默认地址',
        created_time datetime not null comment '创建时间',
        updated_time datetime not null comment '更新时间'
    )
    comment '用户地址表 ' charset=utf8mb4;
    
    create table users
    (
        id varchar(64) not null comment '主键id 用户id'
            primary key,
        username varchar(32) not null comment '用户名 用户名',
        password varchar(64) not null comment '密码 密码',
        nickname varchar(32) null comment '昵称 昵称',
        realname varchar(128) null comment '真实姓名',
        face varchar(1024) not null comment '头像',
        mobile varchar(32) null comment '手机号 手机号',
        email varchar(32) null comment '邮箱地址 邮箱地址',
        sex int null comment '性别 性别 1:男  0:女  2:保密',
        birthday date null comment '生日 生日',
        created_time datetime not null comment '创建时间 创建时间',
        updated_time datetime not null comment '更新时间 更新时间'
    )
    comment '用户表 ' charset=utf8mb4;
    数据库脚本

    功能模块分为如下:

    4、单体架构的部署图

    1)项目发布包,文件系统以及数据库都部署在同一台云服务器,这样只需要一台云服务器
    2) 如果成本允许,则项目发布包,文件系统以及数据库可以分别放在三台不同的云服务器

  • 相关阅读:
    Java openrasp学习记录(一)
    Java ASM3学习(3)
    Java ASM3学习(2)
    Java Instrumentation插桩技术学习
    Java ASM3学习(1)
    从JDK源码学习HashSet和HashTable
    从JDK源码学习HashMap
    从JDK源码学习ArrayList
    Java XXE漏洞典型场景分析
    CVE-2020-7961 Liferay Portal 复现分析
  • 原文地址:https://www.cnblogs.com/callbin/p/14464956.html
Copyright © 2011-2022 走看看