-- 数据库建表脚本
-- 数据库: mall
-- 编码: UTF-8

-- 创建数据库
CREATE DATABASE IF NOT EXISTS mall DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE mall;

-- ----------------------------
-- 1. 用户表
-- ----------------------------
DROP TABLE IF EXISTS user;
CREATE TABLE user (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  username VARCHAR(50) NOT NULL COMMENT '用户名',
  password VARCHAR(100) NOT NULL COMMENT '密码',
  nickname VARCHAR(50) DEFAULT NULL COMMENT '昵称',
  avatar VARCHAR(255) DEFAULT NULL COMMENT '头像',
  phone VARCHAR(20) DEFAULT NULL COMMENT '手机号',
  email VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  gender TINYINT DEFAULT 0 COMMENT '性别: 0-未知, 1-男, 2-女',
  birthday DATE DEFAULT NULL COMMENT '生日',
  points INT DEFAULT 0 COMMENT '积分',
  balance DECIMAL(10,2) DEFAULT 0.00 COMMENT '余额',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-正常',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_username (username),
  UNIQUE KEY uk_phone (phone),
  UNIQUE KEY uk_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

-- ----------------------------
-- 2. 分类表
-- ----------------------------
DROP TABLE IF EXISTS category;
CREATE TABLE category (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '分类ID',
  name VARCHAR(50) NOT NULL COMMENT '分类名称',
  parent_id BIGINT DEFAULT 0 COMMENT '父分类ID',
  level INT DEFAULT 1 COMMENT '层级',
  sort INT DEFAULT 0 COMMENT '排序',
  icon VARCHAR(255) DEFAULT NULL COMMENT '图标',
  image VARCHAR(255) DEFAULT NULL COMMENT '图片',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_parent_id (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分类表';

-- ----------------------------
-- 3. 商品表
-- ----------------------------
DROP TABLE IF EXISTS product;
CREATE TABLE product (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '商品ID',
  category_id BIGINT NOT NULL COMMENT '分类ID',
  brand_id BIGINT DEFAULT NULL COMMENT '品牌ID',
  supplier_id BIGINT DEFAULT NULL COMMENT '供应商ID',
  name VARCHAR(200) NOT NULL COMMENT '商品名称',
  subtitle VARCHAR(500) DEFAULT NULL COMMENT '副标题',
  price DECIMAL(10,2) NOT NULL COMMENT '价格',
  original_price DECIMAL(10,2) DEFAULT NULL COMMENT '原价',
  cost_price DECIMAL(10,2) DEFAULT NULL COMMENT '成本价',
  stock INT DEFAULT 0 COMMENT '库存',
  sales INT DEFAULT 0 COMMENT '销量',
  main_image VARCHAR(255) DEFAULT NULL COMMENT '主图',
  images TEXT DEFAULT NULL COMMENT '图片列表(JSON)',
  description TEXT DEFAULT NULL COMMENT '商品描述',
  detail_content TEXT DEFAULT NULL COMMENT '详情内容(HTML)',
  tags VARCHAR(255) DEFAULT NULL COMMENT '标签',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-下架, 1-上架',
  is_recommend TINYINT DEFAULT 0 COMMENT '是否推荐',
  is_new TINYINT DEFAULT 0 COMMENT '是否新品',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_category_id (category_id),
  KEY idx_brand_id (brand_id),
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

-- ----------------------------
-- 4. SKU表(商品规格)
-- ----------------------------
DROP TABLE IF EXISTS sku;
CREATE TABLE sku (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT 'SKU ID',
  product_id BIGINT NOT NULL COMMENT '商品ID',
  specs VARCHAR(500) NOT NULL COMMENT '规格属性(JSON)',
  price DECIMAL(10,2) NOT NULL COMMENT '价格',
  stock INT DEFAULT 0 COMMENT '库存',
  image VARCHAR(255) DEFAULT NULL COMMENT '图片',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='SKU表';

-- ----------------------------
-- 5. 品牌表
-- ----------------------------
DROP TABLE IF EXISTS brand;
CREATE TABLE brand (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '品牌ID',
  name VARCHAR(100) NOT NULL COMMENT '品牌名称',
  logo VARCHAR(255) DEFAULT NULL COMMENT 'Logo',
  description VARCHAR(500) DEFAULT NULL COMMENT '描述',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='品牌表';

-- ----------------------------
-- 6. 供应商表
-- ----------------------------
DROP TABLE IF EXISTS supplier;
CREATE TABLE supplier (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '供应商ID',
  name VARCHAR(100) NOT NULL COMMENT '供应商名称',
  contact VARCHAR(50) DEFAULT NULL COMMENT '联系人',
  phone VARCHAR(20) DEFAULT NULL COMMENT '电话',
  address VARCHAR(255) DEFAULT NULL COMMENT '地址',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商表';

-- ----------------------------
-- 7. 订单表
-- ----------------------------
DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  order_no VARCHAR(32) NOT NULL COMMENT '订单编号',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  address_id BIGINT NOT NULL COMMENT '地址ID',
  total_amount DECIMAL(10,2) NOT NULL COMMENT '商品总金额',
  freight_amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '运费',
  discount_amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '优惠金额',
  pay_amount DECIMAL(10,2) NOT NULL COMMENT '实付金额',
  coupon_id BIGINT DEFAULT NULL COMMENT '优惠券ID',
  points_discount DECIMAL(10,2) DEFAULT 0.00 COMMENT '积分抵扣',
  pay_type TINYINT DEFAULT NULL COMMENT '支付方式: 1-微信, 2-支付宝, 3-余额',
  pay_time DATETIME DEFAULT NULL COMMENT '支付时间',
  status TINYINT DEFAULT 1 COMMENT '订单状态: 1-待付款, 2-待发货, 3-待收货, 4-已完成, 5-已取消, 6-已退款',
  remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_order_no (order_no),
  KEY idx_user_id (user_id),
  KEY idx_status (status),
  KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';

-- ----------------------------
-- 8. 订单商品表
-- ----------------------------
DROP TABLE IF EXISTS order_item;
CREATE TABLE order_item (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '订单商品ID',
  order_id BIGINT NOT NULL COMMENT '订单ID',
  product_id BIGINT NOT NULL COMMENT '商品ID',
  sku_id BIGINT DEFAULT NULL COMMENT 'SKU ID',
  product_name VARCHAR(200) NOT NULL COMMENT '商品名称',
  sku_specs VARCHAR(500) DEFAULT NULL COMMENT 'SKU规格',
  product_image VARCHAR(255) DEFAULT NULL COMMENT '商品图片',
  price DECIMAL(10,2) NOT NULL COMMENT '单价',
  quantity INT NOT NULL COMMENT '数量',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (id),
  KEY idx_order_id (order_id),
  KEY idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单商品表';

-- ----------------------------
-- 9. 收货地址表
-- ----------------------------
DROP TABLE IF EXISTS address;
CREATE TABLE address (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '地址ID',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  consignee_name VARCHAR(50) NOT NULL COMMENT '收货人姓名',
  consignee_phone VARCHAR(20) NOT NULL COMMENT '收货人电话',
  province_name VARCHAR(50) NOT NULL COMMENT '省份',
  city_name VARCHAR(50) NOT NULL COMMENT '城市',
  district_name VARCHAR(50) NOT NULL COMMENT '区县',
  detail_address VARCHAR(255) NOT NULL COMMENT '详细地址',
  is_default TINYINT DEFAULT 0 COMMENT '是否默认: 0-否, 1-是',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收货地址表';

-- ----------------------------
-- 10. 购物车表
-- ----------------------------
DROP TABLE IF EXISTS cart;
CREATE TABLE cart (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '购物车ID',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  product_id BIGINT NOT NULL COMMENT '商品ID',
  sku_id BIGINT DEFAULT NULL COMMENT 'SKU ID',
  quantity INT NOT NULL COMMENT '数量',
  selected TINYINT DEFAULT 1 COMMENT '是否选中: 0-否, 1-是',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_user_id (user_id),
  KEY idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车表';

-- ----------------------------
-- 11. 优惠券表
-- ----------------------------
DROP TABLE IF EXISTS coupon;
CREATE TABLE coupon (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '优惠券ID',
  name VARCHAR(100) NOT NULL COMMENT '优惠券名称',
  type TINYINT NOT NULL COMMENT '类型: 1-满减, 2-折扣',
  amount DECIMAL(10,2) DEFAULT NULL COMMENT '优惠金额/折扣',
  min_amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '使用门槛',
  total_count INT NOT NULL COMMENT '发放总量',
  remain_count INT NOT NULL COMMENT '剩余数量',
  per_limit INT DEFAULT 1 COMMENT '每人限领',
  start_time DATETIME NOT NULL COMMENT '开始时间',
  end_time DATETIME NOT NULL COMMENT '结束时间',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券表';

-- ----------------------------
-- 12. 用户优惠券表
-- ----------------------------
DROP TABLE IF EXISTS coupon_user;
CREATE TABLE coupon_user (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户优惠券ID',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  coupon_id BIGINT NOT NULL COMMENT '优惠券ID',
  order_id BIGINT DEFAULT NULL COMMENT '订单ID',
  status TINYINT DEFAULT 0 COMMENT '状态: 0-未使用, 1-已使用, 2-已过期',
  receive_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '领取时间',
  use_time DATETIME DEFAULT NULL COMMENT '使用时间',
  expire_time DATETIME NOT NULL COMMENT '过期时间',
  PRIMARY KEY (id),
  KEY idx_user_id (user_id),
  KEY idx_coupon_id (coupon_id),
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户优惠券表';

-- ----------------------------
-- 13. 商品收藏表
-- ----------------------------
DROP TABLE IF EXISTS favorite;
CREATE TABLE favorite (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  product_id BIGINT NOT NULL COMMENT '商品ID',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_user_product (user_id, product_id),
  KEY idx_user_id (user_id),
  KEY idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品收藏表';

-- ----------------------------
-- 14. 商品评价表
-- ----------------------------
DROP TABLE IF EXISTS comment;
CREATE TABLE comment (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '评价ID',
  order_id BIGINT NOT NULL COMMENT '订单ID',
  order_item_id BIGINT NOT NULL COMMENT '订单商品ID',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  product_id BIGINT NOT NULL COMMENT '商品ID',
  rating TINYINT NOT NULL COMMENT '评分(1-5)',
  content VARCHAR(500) DEFAULT NULL COMMENT '评价内容',
  images TEXT DEFAULT NULL COMMENT '评价图片(JSON)',
  reply VARCHAR(500) DEFAULT NULL COMMENT '商家回复',
  reply_time DATETIME DEFAULT NULL COMMENT '回复时间',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-隐藏, 1-显示',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_order_id (order_id),
  KEY idx_product_id (product_id),
  KEY idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品评价表';

-- ----------------------------
-- 15. 活动表
-- ----------------------------
DROP TABLE IF EXISTS activity;
CREATE TABLE activity (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '活动ID',
  name VARCHAR(100) NOT NULL COMMENT '活动名称',
  type TINYINT NOT NULL COMMENT '类型: 1-秒杀, 2-拼团, 3-满减',
  start_time DATETIME NOT NULL COMMENT '开始时间',
  end_time DATETIME NOT NULL COMMENT '结束时间',
  description VARCHAR(500) DEFAULT NULL COMMENT '描述',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动表';

-- ----------------------------
-- 16. 公告表
-- ----------------------------
DROP TABLE IF EXISTS notice;
CREATE TABLE notice (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '公告ID',
  title VARCHAR(200) NOT NULL COMMENT '标题',
  content TEXT DEFAULT NULL COMMENT '内容',
  type TINYINT DEFAULT 1 COMMENT '类型: 1-系统公告, 2-活动公告',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-下架, 1-上架',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告表';

-- ----------------------------
-- 17. 角色表
-- ----------------------------
DROP TABLE IF EXISTS role;
CREATE TABLE role (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
  name VARCHAR(50) NOT NULL COMMENT '角色名称',
  code VARCHAR(50) NOT NULL COMMENT '角色代码',
  description VARCHAR(255) DEFAULT NULL COMMENT '描述',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';

-- ----------------------------
-- 18. 权限表
-- ----------------------------
DROP TABLE IF EXISTS permission;
CREATE TABLE permission (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '权限ID',
  name VARCHAR(50) NOT NULL COMMENT '权限名称',
  code VARCHAR(100) NOT NULL COMMENT '权限代码',
  type TINYINT NOT NULL COMMENT '类型: 1-菜单, 2-按钮',
  parent_id BIGINT DEFAULT 0 COMMENT '父权限ID',
  path VARCHAR(255) DEFAULT NULL COMMENT '路径',
  icon VARCHAR(50) DEFAULT NULL COMMENT '图标',
  sort INT DEFAULT 0 COMMENT '排序',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_parent_id (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';

-- ----------------------------
-- 19. 用户角色表
-- ----------------------------
DROP TABLE IF EXISTS user_role;
CREATE TABLE user_role (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
  user_id BIGINT NOT NULL COMMENT '用户ID',
  role_id BIGINT NOT NULL COMMENT '角色ID',
  PRIMARY KEY (id),
  UNIQUE KEY uk_user_role (user_id, role_id),
  KEY idx_user_id (user_id),
  KEY idx_role_id (role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色表';

-- ----------------------------
-- 20. 角色权限表
-- ----------------------------
DROP TABLE IF EXISTS role_permission;
CREATE TABLE role_permission (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
  role_id BIGINT NOT NULL COMMENT '角色ID',
  permission_id BIGINT NOT NULL COMMENT '权限ID',
  PRIMARY KEY (id),
  UNIQUE KEY uk_role_perm (role_id, permission_id),
  KEY idx_role_id (role_id),
  KEY idx_permission_id (permission_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限表';

-- ----------------------------
-- 21. 数据字典表
-- ----------------------------
DROP TABLE IF EXISTS dictionary;
CREATE TABLE dictionary (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '字典ID',
  name VARCHAR(100) NOT NULL COMMENT '字典名称',
  code VARCHAR(100) NOT NULL COMMENT '字典代码',
  description VARCHAR(255) DEFAULT NULL COMMENT '描述',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据字典表';

-- ----------------------------
-- 22. 数据字典项表
-- ----------------------------
DROP TABLE IF EXISTS dictionary_item;
CREATE TABLE dictionary_item (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '字典项ID',
  dictionary_id BIGINT NOT NULL COMMENT '字典ID',
  label VARCHAR(100) NOT NULL COMMENT '标签',
  value VARCHAR(100) NOT NULL COMMENT '值',
  sort INT DEFAULT 0 COMMENT '排序',
  status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  KEY idx_dictionary_id (dictionary_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据字典项表';

-- ----------------------------
-- 23. 操作日志表
-- ----------------------------
DROP TABLE IF EXISTS log;
CREATE TABLE log (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  user_id BIGINT DEFAULT NULL COMMENT '用户ID',
  username VARCHAR(50) DEFAULT NULL COMMENT '用户名',
  operation VARCHAR(100) DEFAULT NULL COMMENT '操作',
  method VARCHAR(200) DEFAULT NULL COMMENT '方法',
  params TEXT DEFAULT NULL COMMENT '参数',
  ip VARCHAR(50) DEFAULT NULL COMMENT 'IP地址',
  location VARCHAR(255) DEFAULT NULL COMMENT '操作地点',
  result TEXT DEFAULT NULL COMMENT '返回结果',
  error_msg TEXT DEFAULT NULL COMMENT '错误信息',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (id),
  KEY idx_user_id (user_id),
  KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';

-- ----------------------------
-- 31. 退款记录表
-- ----------------------------
DROP TABLE IF EXISTS refund;
CREATE TABLE refund (
  id BIGINT NOT NULL AUTO_INCREMENT COMMENT '退款ID',
  order_id BIGINT NOT NULL COMMENT '订单ID',
  order_no VARCHAR(32) NOT NULL COMMENT '订单编号',
  refund_no VARCHAR(64) NOT NULL COMMENT '退款流水号',
  amount DECIMAL(10,2) NOT NULL COMMENT '退款金额',
  reason VARCHAR(500) DEFAULT NULL COMMENT '退款原因',
  status TINYINT DEFAULT 0 COMMENT '状态: 0-待处理, 1-处理中, 2-已退款, 3-拒绝退款',
  handle_time DATETIME DEFAULT NULL COMMENT '处理时间',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_refund_no (refund_no),
  KEY idx_order_id (order_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款记录表';

/**
 * @联系作者：16768118056
 * @描述：（此项目非免费分享）源码百分百可用，搞定毕设不发愁，支持远程调试安装、二次开发、定制、讲解、文档类。
 * @访问：https://www.notmaker.com/detail/8326a897119d4542896c863a69d7bbe7/gtt20260415，查看完整运行演示。
 */
