# douyin_mall **Repository Path**: luoshizhen0621/douyin_mall ## Basic Information - **Project Name**: douyin_mall - **Description**: 简易抖音商城项目 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2025-02-04 - **Last Updated**: 2025-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # douyin_mall ## 介绍 简易抖音商城项目 ## 软件架构 软件架构说明 ```txt douyin_mall [dymall] ├── dymall-cart-service || -- # 购物车服务模块 ├── dymall-common || -- # 公共组件模块 ├── dymall-gateway || -- # 网关服务模块 ├── dymall-order-service || -- # 订单服务模块 ├── dymall-payment-service || -- # 支付服务模块 ├── dymall-product-service || -- # 商品服务模块 └── dymall-user-service || -- # 用户服务模块 ``` ```txt config # 配置类,如Spring Boot配置 controller # 控制器层,负责接收HTTP请求并返回响应 dto # 数据传输对象,用于封装请求/响应数据 enums # 枚举类型,通常用于表示固定集合的状态或类型 mapper # MyBatis Mapper接口,用于数据库操作 service.impl # 服务实现层,具体业务逻辑实现 utils # 工具类,提供辅助功能,比如日期处理、字符串操作等 ``` ## 数据库设计文档 ### 数据库命名规范 - 数据库名:`mall`(整合所有模块) - 表名:`t_<模块>_<功能>`(模块前缀替代原业务前缀) - 主键:`id`(BIGINT 自增) - 外键:`<目标表名>_id`(如 `user_info_id`) - 其他字段规范保持不变 --- ### 1. 用户模块 #### 1.1 用户信息表 (`t_user_info`) | 字段名 | 类型 | 描述 | | ------------ | ------------ | -------------------------------- | | id | BIGINT | 主键 | | user_uid | VARCHAR(32) | 用户唯一标识(业务ID,唯一索引) | | username | VARCHAR(64) | 用户名 | | password | VARCHAR(128) | 加密密码 | | phone | VARCHAR(11) | 手机号 | | email | VARCHAR(64) | 邮箱 | | status | TINYINT | 状态(0=正常) | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | #### 1.2 用户地址表 (`t_user_address`) | 字段名 | 类型 | 描述 | | ------------ | ------------ | -------------------- | | id | BIGINT | 主键 | | user_info_id | BIGINT | 外键->t_user_info.id | | receiver | VARCHAR(64) | 收货人 | | province | VARCHAR(32) | 省份 | | city | VARCHAR(32) | 市 | | area | VARCHAR(32) | 区县 | | address | VARCHAR(255) | 详细地址 | | mobile | VARCHAR(11) | 联系电话 | | is_default | BOOLEAN | 是否默认地址 | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | (其他用户模块表类似调整外键命名) --- ### 2. 商品模块 #### 2.1 商品信息表 (`t_goods_info`) | 字段名 | 类型 | 描述 | | ----------------- | ------------- | ------------------------- | | id | BIGINT | 主键 | | goods_uid | VARCHAR(32) | 商品唯一标识(业务ID) | | goods_name | VARCHAR(128) | 商品名称 | | goods_category_id | BIGINT | 外键->t_goods_category.id | | price | DECIMAL(10,2) | 价格 | | description | TEXT | 描述 | | image_url | VARCHAR(255) | 图片地址 | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | #### 2.2 商品分类表 (`t_goods_category`) | 字段名 | 类型 | 描述 | | ------------- | ----------- | ------------------ | | id | BIGINT | 主键 | | category_name | VARCHAR(64) | 分类名称 | | parent_id | BIGINT | 父分类ID(自关联) | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | --- ### 3. 订单模块 #### 3.1 订单主表 (`t_order_info`) | 字段名 | 类型 | 描述 | | --------------- | ------------- | ----------------------- | | id | BIGINT | 主键 | | order_uid | VARCHAR(32) | 订单唯一标识(业务ID) | | user_info_id | BIGINT | 外键->t_user_info.id | | total_amount | DECIMAL(10,2) | 订单总额 | | payment_status | TINYINT | 支付状态(0=未支付) | | delivery_status | TINYINT | 物流状态(0=未发货) | | user_address_id | BIGINT | 外键->t_user_address.id | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | #### 3.2 订单明细表 (`t_order_detail`) | 字段名 | 类型 | 描述 | | ------------- | ------------- | --------------------- | | id | BIGINT | 主键 | | order_info_id | BIGINT | 外键->t_order_info.id | | goods_info_id | BIGINT | 外键->t_goods_info.id | | quantity | INT | 购买数量 | | price | DECIMAL(10,2) | 成交单价 | | gmt_create | DATETIME | 创建时间 | ### 4. 购物车模块 #### 4.1 购物车信息表 (`t_cart_info`) | 字段名 | 类型 | 描述 | | ------------- | ----------- | ------------------------ | | id | BIGINT | 主键 | | user_info_id | BIGINT | 外键->t_user_info.id | | goods_info_id | BIGINT | 外键->t_goods_info.id | | quantity | INT | 商品数量 | | session_id | VARCHAR(64) | 会话ID(用于未登录用户) | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | ### 5. 支付模块 #### 5.1 支付信息表 (`t_payment_info`) | 字段名 | 类型 | 描述 | | -------------- | ------------- | -------------------------- | | id | BIGINT | 主键 | | order_info_id | BIGINT | 外键->t_order_info.id | | payment_status | TINYINT | 支付状态(0=未支付) | | payment_method | VARCHAR(32) | 支付方式(如支付宝、微信) | | amount | DECIMAL(10,2) | 支付金额 | | transaction_id | VARCHAR(64) | 第三方交易流水号 | | callback_url | VARCHAR(255) | 支付回调URL | | payment_time | DATETIME | 支付完成时间 | | gmt_create | DATETIME | 创建时间 | | gmt_modified | DATETIME | 修改时间 | #### 5.2 支付日志表 (`t_payment_log`) | 字段名 | 类型 | 描述 | | --------------- | -------- | ---------------------------------------------- | | id | BIGINT | 主键 | | payment_info_id | BIGINT | 外键->t_payment_info.id | | log_type | TINYINT | 日志类型(0=支付成功,1=支付失败,2=回调成功) | | message | TEXT | 日志信息 | | gmt_create | DATETIME | 创建时间 | ### 以下是为简易抖音商城项目生成的MySQL创建语句: ```sql -- 用户模块 -- 用户信息表 CREATE TABLE t_user_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_uid VARCHAR(32) UNIQUE NOT NULL, username VARCHAR(64) NOT NULL, password VARCHAR(128) NOT NULL, phone VARCHAR(11), email VARCHAR(64), status TINYINT DEFAULT 0, gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 用户地址表 CREATE TABLE t_user_address ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_info_id BIGINT NOT NULL, receiver VARCHAR(64) NOT NULL, province VARCHAR(32) NOT NULL, city VARCHAR(32) NOT NULL, area VARCHAR(32) NOT NULL, address VARCHAR(255) NOT NULL, mobile VARCHAR(11) NOT NULL, is_default BOOLEAN DEFAULT FALSE, gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL, FOREIGN KEY (user_info_id) REFERENCES t_user_info(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 商品模块 -- 商品分类表 CREATE TABLE t_goods_category ( id BIGINT AUTO_INCREMENT PRIMARY KEY, category_name VARCHAR(64) NOT NULL, parent_id BIGINT, gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL, FOREIGN KEY (parent_id) REFERENCES t_goods_category(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 商品信息表 CREATE TABLE t_goods_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, goods_uid VARCHAR(32) UNIQUE NOT NULL, goods_name VARCHAR(128) NOT NULL, goods_category_id BIGINT NOT NULL, price DECIMAL(10,2) NOT NULL, description TEXT, image_url VARCHAR(255), gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL, FOREIGN KEY (goods_category_id) REFERENCES t_goods_category(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 订单模块 -- 订单主表 CREATE TABLE t_order_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, order_uid VARCHAR(32) UNIQUE NOT NULL, user_info_id BIGINT NOT NULL, total_amount DECIMAL(10,2) NOT NULL, payment_status TINYINT DEFAULT 0, delivery_status TINYINT DEFAULT 0, user_address_id BIGINT NOT NULL, gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL, FOREIGN KEY (user_info_id) REFERENCES t_user_info(id), FOREIGN KEY (user_address_id) REFERENCES t_user_address(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 订单明细表 CREATE TABLE t_order_detail ( id BIGINT AUTO_INCREMENT PRIMARY KEY, order_info_id BIGINT NOT NULL, goods_info_id BIGINT NOT NULL, quantity INT DEFAULT 1, price DECIMAL(10,2) NOT NULL, gmt_create DATETIME NOT NULL, FOREIGN KEY (order_info_id) REFERENCES t_order_info(id), FOREIGN KEY (goods_info_id) REFERENCES t_goods_info(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 购物车模块 -- 购物车信息表 CREATE TABLE t_cart_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_info_id BIGINT NOT NULL, goods_info_id BIGINT NOT NULL, quantity INT DEFAULT 1, session_id VARCHAR(64), gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL, FOREIGN KEY (user_info_id) REFERENCES t_user_info(id), FOREIGN KEY (goods_info_id) REFERENCES t_goods_info(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 支付模块 -- 支付信息表 CREATE TABLE t_payment_info ( id BIGINT AUTO_INCREMENT PRIMARY KEY, order_info_id BIGINT NOT NULL, payment_status TINYINT DEFAULT 0, payment_method VARCHAR(32) NOT NULL, amount DECIMAL(10,2) NOT NULL, transaction_id VARCHAR(64), callback_url VARCHAR(255), payment_time DATETIME, gmt_create DATETIME NOT NULL, gmt_modified DATETIME NOT NULL, FOREIGN KEY (order_info_id) REFERENCES t_order_info(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 支付日志表 CREATE TABLE t_payment_log ( id BIGINT AUTO_INCREMENT PRIMARY KEY, payment_info_id BIGINT NOT NULL, log_type TINYINT NOT NULL, message TEXT, gmt_create DATETIME NOT NULL, FOREIGN KEY (payment_info_id) REFERENCES t_payment_info(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ```