|
|
@@ -0,0 +1,419 @@
|
|
|
+-- ========================================
|
|
|
+-- 洒渔镇苹果产业供需对接平台 - 数据库建表脚本
|
|
|
+-- 数据库: crrc (UTF8MB4)
|
|
|
+-- 创建时间: 2026-05-30
|
|
|
+-- ========================================
|
|
|
+
|
|
|
+-- 设置字符集
|
|
|
+SET NAMES utf8mb4;
|
|
|
+SET FOREIGN_KEY_CHECKS = 0;
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 1. sys_user - 用户基础表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sys_user`;
|
|
|
+CREATE TABLE `sys_user` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `openid` VARCHAR(64) DEFAULT NULL COMMENT '微信openid',
|
|
|
+ `phone` VARCHAR(255) DEFAULT NULL COMMENT '手机号(AES加密存储)',
|
|
|
+ `phone_hash` VARCHAR(64) DEFAULT NULL COMMENT '手机号SHA256哈希(查询用)',
|
|
|
+ `nickname` VARCHAR(50) DEFAULT NULL COMMENT '微信昵称',
|
|
|
+ `avatar` VARCHAR(255) DEFAULT NULL COMMENT '微信头像URL',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0禁用 1正常',
|
|
|
+ `last_active_time` DATETIME DEFAULT NULL COMMENT '最后活跃时间',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_openid` (`openid`),
|
|
|
+ UNIQUE KEY `uk_phone_hash` (`phone_hash`),
|
|
|
+ KEY `idx_status` (`status`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户基础表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 2. user_identity - 身份关联表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `user_identity`;
|
|
|
+CREATE TABLE `user_identity` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `user_id` BIGINT NOT NULL COMMENT '关联sys_user.id',
|
|
|
+ `identity_type` VARCHAR(20) NOT NULL COMMENT 'GROWER/WORKER/BUYER/SUPPLIER',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '0禁用 1正常',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_identity_type` (`identity_type`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='身份关联表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 3. grower_profile - 果农档案表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `grower_profile`;
|
|
|
+CREATE TABLE `grower_profile` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `user_identity_id` BIGINT NOT NULL COMMENT '关联user_identity.id',
|
|
|
+ `name` VARCHAR(50) DEFAULT NULL COMMENT '姓名',
|
|
|
+ `varieties` VARCHAR(200) DEFAULT NULL COMMENT '苹果品种(JSON数组)',
|
|
|
+ `yield_amount` DECIMAL(10,2) DEFAULT NULL COMMENT '产量(斤)',
|
|
|
+ `expected_price` DECIMAL(8,2) DEFAULT NULL COMMENT '预期价格(元/斤)',
|
|
|
+ `address` VARCHAR(200) DEFAULT NULL COMMENT '果园地址',
|
|
|
+ `latitude` DECIMAL(10,7) DEFAULT NULL COMMENT '纬度',
|
|
|
+ `longitude` DECIMAL(10,7) DEFAULT NULL COMMENT '经度',
|
|
|
+ `video_url` VARCHAR(255) DEFAULT NULL COMMENT '果园视频URL(本地存储)',
|
|
|
+ `photos` TEXT COMMENT '照片URL(JSON数组,本地存储)',
|
|
|
+ `audit_status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待审 1通过 2驳回',
|
|
|
+ `audit_remark` VARCHAR(200) DEFAULT NULL COMMENT '驳回原因',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_identity_id` (`user_identity_id`),
|
|
|
+ KEY `idx_audit_status` (`audit_status`),
|
|
|
+ KEY `idx_lat_lng` (`latitude`, `longitude`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='果农档案表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 4. worker_profile - 工人档案表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `worker_profile`;
|
|
|
+CREATE TABLE `worker_profile` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `user_identity_id` BIGINT NOT NULL COMMENT '关联user_identity.id',
|
|
|
+ `name` VARCHAR(50) DEFAULT NULL COMMENT '姓名',
|
|
|
+ `skills` VARCHAR(100) DEFAULT NULL COMMENT '技能(JSON数组)',
|
|
|
+ `price` DECIMAL(8,2) DEFAULT NULL COMMENT '报价',
|
|
|
+ `price_unit` VARCHAR(10) DEFAULT NULL COMMENT 'DAY/PIECE',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '0忙碌 1空闲',
|
|
|
+ `status_updated_at` DATETIME DEFAULT NULL COMMENT '状态更新时间',
|
|
|
+ `complaint_count` INT NOT NULL DEFAULT 0 COMMENT '投诉次数',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_identity_id` (`user_identity_id`),
|
|
|
+ KEY `idx_status` (`status`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工人档案表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 5. buyer_profile - 客商档案表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `buyer_profile`;
|
|
|
+CREATE TABLE `buyer_profile` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `user_identity_id` BIGINT NOT NULL COMMENT '关联user_identity.id',
|
|
|
+ `name` VARCHAR(50) DEFAULT NULL COMMENT '姓名/公司名',
|
|
|
+ `varieties` VARCHAR(200) DEFAULT NULL COMMENT '收购品种(JSON数组)',
|
|
|
+ `price_range` VARCHAR(50) DEFAULT NULL COMMENT '价格区间',
|
|
|
+ `total_amount` DECIMAL(10,2) DEFAULT NULL COMMENT '收购总量(斤)',
|
|
|
+ `standards` VARCHAR(200) DEFAULT NULL COMMENT '收购标准',
|
|
|
+ `address` VARCHAR(200) DEFAULT NULL COMMENT '收购点地址',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_identity_id` (`user_identity_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客商档案表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 6. supplier_shop - 农资店铺表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `supplier_shop`;
|
|
|
+CREATE TABLE `supplier_shop` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `user_identity_id` BIGINT NOT NULL COMMENT '关联user_identity.id',
|
|
|
+ `shop_name` VARCHAR(50) DEFAULT NULL COMMENT '店铺名称',
|
|
|
+ `owner_name` VARCHAR(50) DEFAULT NULL COMMENT '店主姓名',
|
|
|
+ `categories` VARCHAR(200) DEFAULT NULL COMMENT '主营种类(JSON数组)',
|
|
|
+ `address` VARCHAR(200) DEFAULT NULL COMMENT '详细地址',
|
|
|
+ `phone` VARCHAR(20) DEFAULT NULL COMMENT '联系电话',
|
|
|
+ `has_online_order` TINYINT NOT NULL DEFAULT 0 COMMENT '预留:是否支持在线下单',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_identity_id` (`user_identity_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='农资店铺表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 7. recruit_info - 招工信息表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `recruit_info`;
|
|
|
+CREATE TABLE `recruit_info` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `user_identity_id` BIGINT NOT NULL COMMENT '发布者身份ID',
|
|
|
+ `work_types` VARCHAR(100) DEFAULT NULL COMMENT '工种(JSON数组)',
|
|
|
+ `price` DECIMAL(8,2) DEFAULT NULL COMMENT '价格',
|
|
|
+ `price_unit` VARCHAR(10) DEFAULT NULL COMMENT 'DAY/PIECE',
|
|
|
+ `worker_count` INT DEFAULT NULL COMMENT '需要人数',
|
|
|
+ `days` INT DEFAULT NULL COMMENT '天数',
|
|
|
+ `location` VARCHAR(200) DEFAULT NULL COMMENT '工作地点',
|
|
|
+ `latitude` DECIMAL(10,7) DEFAULT NULL COMMENT '纬度',
|
|
|
+ `longitude` DECIMAL(10,7) DEFAULT NULL COMMENT '经度',
|
|
|
+ `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '0下架 1发布中',
|
|
|
+ `keyword_flag` TINYINT NOT NULL DEFAULT 0 COMMENT '0正常 1待复核',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_identity_id` (`user_identity_id`),
|
|
|
+ KEY `idx_status` (`status`),
|
|
|
+ KEY `idx_keyword_flag` (`keyword_flag`),
|
|
|
+ KEY `idx_lat_lng` (`latitude`, `longitude`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招工信息表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 8. worker_apply - 工人报名表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `worker_apply`;
|
|
|
+CREATE TABLE `worker_apply` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `worker_identity_id` BIGINT NOT NULL COMMENT '工人身份ID',
|
|
|
+ `recruit_id` BIGINT NOT NULL COMMENT '招工信息ID',
|
|
|
+ `farmer_identity_id` BIGINT NOT NULL COMMENT '果农身份ID',
|
|
|
+ `sms_sent` TINYINT NOT NULL DEFAULT 0 COMMENT '短信是否已发送',
|
|
|
+ `apply_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_worker_identity_id` (`worker_identity_id`),
|
|
|
+ KEY `idx_recruit_id` (`recruit_id`),
|
|
|
+ KEY `idx_farmer_identity_id` (`farmer_identity_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工人报名表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 9. phone_unlock_record - 联系授权记录表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `phone_unlock_record`;
|
|
|
+CREATE TABLE `phone_unlock_record` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `buyer_identity_id` BIGINT NOT NULL COMMENT '客商身份ID',
|
|
|
+ `grower_identity_id` BIGINT NOT NULL COMMENT '果农身份ID',
|
|
|
+ `batch_id` BIGINT DEFAULT NULL COMMENT '苹果批次ID',
|
|
|
+ `unlock_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '解锁时间',
|
|
|
+ `expire_time` DATETIME NOT NULL COMMENT '过期时间(+7天)',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_buyer_identity_id` (`buyer_identity_id`),
|
|
|
+ KEY `idx_grower_identity_id` (`grower_identity_id`),
|
|
|
+ KEY `idx_expire_time` (`expire_time`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联系授权记录表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 10. call_log - 拨号日志表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `call_log`;
|
|
|
+CREATE TABLE `call_log` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `caller_identity_id` BIGINT NOT NULL COMMENT '拨号方身份ID',
|
|
|
+ `callee_identity_id` BIGINT NOT NULL COMMENT '被拨方身份ID',
|
|
|
+ `call_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '拨号时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_caller_identity_id` (`caller_identity_id`),
|
|
|
+ KEY `idx_callee_identity_id` (`callee_identity_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='拨号日志表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 11. sms_daily_limit - 短信限流表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sms_daily_limit`;
|
|
|
+CREATE TABLE `sms_daily_limit` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `worker_identity_id` BIGINT NOT NULL COMMENT '工人身份ID',
|
|
|
+ `farmer_identity_id` BIGINT NOT NULL COMMENT '果农身份ID',
|
|
|
+ `sms_date` DATE NOT NULL COMMENT '发送日期(自然日)',
|
|
|
+ `sms_count` INT NOT NULL DEFAULT 0 COMMENT '当日发送次数',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_worker_farmer_date` (`worker_identity_id`, `farmer_identity_id`, `sms_date`),
|
|
|
+ KEY `idx_sms_date` (`sms_date`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='短信限流表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 12. market_price - 今日行情表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `market_price`;
|
|
|
+CREATE TABLE `market_price` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `variety` VARCHAR(50) NOT NULL COMMENT '苹果品种',
|
|
|
+ `price_min` DECIMAL(8,2) DEFAULT NULL COMMENT '最低价(元/斤)',
|
|
|
+ `price_max` DECIMAL(8,2) DEFAULT NULL COMMENT '最高价(元/斤)',
|
|
|
+ `trend` TINYINT NOT NULL DEFAULT 0 COMMENT '0持平 1涨价 2降价',
|
|
|
+ `update_date` DATE NOT NULL COMMENT '更新日期',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_variety` (`variety`),
|
|
|
+ KEY `idx_update_date` (`update_date`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='今日行情表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 13. audit_log - 审核日志表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `audit_log`;
|
|
|
+CREATE TABLE `audit_log` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `operator_id` BIGINT NOT NULL COMMENT '操作员ID',
|
|
|
+ `target_type` VARCHAR(50) NOT NULL COMMENT '审核对象类型',
|
|
|
+ `target_id` BIGINT NOT NULL COMMENT '审核对象ID',
|
|
|
+ `action` VARCHAR(20) NOT NULL COMMENT 'APPROVE/REJECT',
|
|
|
+ `remark` VARCHAR(200) DEFAULT NULL COMMENT '备注/驳回原因',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_operator_id` (`operator_id`),
|
|
|
+ KEY `idx_target` (`target_type`, `target_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审核日志表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 14. operation_log - 操作日志表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `operation_log`;
|
|
|
+CREATE TABLE `operation_log` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `operator_id` BIGINT DEFAULT NULL COMMENT '操作员ID',
|
|
|
+ `action` VARCHAR(50) NOT NULL COMMENT '操作类型',
|
|
|
+ `target` VARCHAR(100) DEFAULT NULL COMMENT '操作对象',
|
|
|
+ `detail` TEXT COMMENT '操作详情',
|
|
|
+ `ip` VARCHAR(50) DEFAULT NULL COMMENT '操作IP',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_operator_id` (`operator_id`),
|
|
|
+ KEY `idx_action` (`action`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 15. complaint - 投诉表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `complaint`;
|
|
|
+CREATE TABLE `complaint` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `complainant_id` BIGINT NOT NULL COMMENT '投诉人身份ID',
|
|
|
+ `respondent_id` BIGINT NOT NULL COMMENT '被投诉人身份ID',
|
|
|
+ `complaint_type` VARCHAR(50) NOT NULL COMMENT '投诉类型',
|
|
|
+ `description` TEXT COMMENT '投诉描述',
|
|
|
+ `evidence` VARCHAR(500) DEFAULT NULL COMMENT '证据(图片URL)',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待处理 1已处理 2已驳回',
|
|
|
+ `result` VARCHAR(200) DEFAULT NULL COMMENT '处理结果',
|
|
|
+ `handler_id` BIGINT DEFAULT NULL COMMENT '处理人ID',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '投诉时间',
|
|
|
+ `handled_at` DATETIME DEFAULT NULL COMMENT '处理时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_complainant_id` (`complainant_id`),
|
|
|
+ KEY `idx_respondent_id` (`respondent_id`),
|
|
|
+ KEY `idx_status` (`status`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='投诉表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 16. sys_role - 角色表(RBAC)
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sys_role`;
|
|
|
+CREATE TABLE `sys_role` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `role_code` VARCHAR(50) NOT NULL COMMENT '角色编码',
|
|
|
+ `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
|
|
|
+ `description` VARCHAR(200) DEFAULT NULL COMMENT '角色描述',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '0禁用 1正常',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_role_code` (`role_code`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 17. sys_permission - 权限表(RBAC)
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sys_permission`;
|
|
|
+CREATE TABLE `sys_permission` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `permission_code` VARCHAR(100) NOT NULL COMMENT '权限编码',
|
|
|
+ `permission_name` VARCHAR(50) NOT NULL COMMENT '权限名称',
|
|
|
+ `description` VARCHAR(200) DEFAULT NULL COMMENT '权限描述',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_permission_code` (`permission_code`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 18. sys_role_permission - 角色权限关联表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sys_role_permission`;
|
|
|
+CREATE TABLE `sys_role_permission` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `role_id` BIGINT NOT NULL COMMENT '角色ID',
|
|
|
+ `permission_id` BIGINT NOT NULL COMMENT '权限ID',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_role_permission` (`role_id`, `permission_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 19. sys_user_role - 用户角色关联表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sys_user_role`;
|
|
|
+CREATE TABLE `sys_user_role` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `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`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
|
|
|
+
|
|
|
+-- ----------------------------------------
|
|
|
+-- 20. sys_dict - 字典表
|
|
|
+-- ----------------------------------------
|
|
|
+DROP TABLE IF EXISTS `sys_dict`;
|
|
|
+CREATE TABLE `sys_dict` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `dict_type` VARCHAR(50) NOT NULL COMMENT '字典类型',
|
|
|
+ `dict_code` VARCHAR(50) NOT NULL COMMENT '字典编码',
|
|
|
+ `dict_name` VARCHAR(100) NOT NULL COMMENT '字典名称',
|
|
|
+ `sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '0禁用 1正常',
|
|
|
+ `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_type_code` (`dict_type`, `dict_code`),
|
|
|
+ KEY `idx_dict_type` (`dict_type`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表';
|
|
|
+
|
|
|
+SET FOREIGN_KEY_CHECKS = 1;
|
|
|
+
|
|
|
+-- ========================================
|
|
|
+-- 初始数据
|
|
|
+-- ========================================
|
|
|
+
|
|
|
+-- 超级管理员账号 (密码: admin123, 需要BCrypt加密)
|
|
|
+INSERT INTO `sys_user` (`id`, `openid`, `phone`, `phone_hash`, `nickname`, `avatar`, `status`) VALUES
|
|
|
+(1, NULL, NULL, NULL, '系统管理员', NULL, 1);
|
|
|
+
|
|
|
+-- 默认角色
|
|
|
+INSERT INTO `sys_role` (`id`, `role_code`, `role_name`, `description`) VALUES
|
|
|
+(1, 'SUPER_ADMIN', '超级管理员', '系统超级管理员,拥有所有权限'),
|
|
|
+(2, 'INPUTTER', '录入员', '数据录入人员'),
|
|
|
+(3, 'AUDITOR', '审核员', '数据审核人员'),
|
|
|
+(4, 'OPERATOR', '运维人员', '系统运维人员');
|
|
|
+
|
|
|
+-- 超级管理员角色关联
|
|
|
+INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1);
|
|
|
+
|
|
|
+-- 字典数据:苹果品种
|
|
|
+INSERT INTO `sys_dict` (`dict_type`, `dict_code`, `dict_name`, `sort_order`) VALUES
|
|
|
+('APPLE_VARIETY', 'FUJI', '红富士', 1),
|
|
|
+('APPLE_VARIETY', 'GALA', '嘎啦', 2),
|
|
|
+('APPLE_VARIETY', 'HUAWEI', '花牛', 3),
|
|
|
+('APPLE_VARIETY', 'QINGGUAN', '青冠', 4),
|
|
|
+('APPLE_VARIETY', 'GUOGUANG', '国光', 5),
|
|
|
+('APPLE_VARIETY', 'JINSHI', '金帅', 6);
|
|
|
+
|
|
|
+-- 字典数据:工种类型
|
|
|
+INSERT INTO `sys_dict` (`dict_type`, `dict_code`, `dict_name`, `sort_order`) VALUES
|
|
|
+('WORK_TYPE', 'PICKING', '采摘工', 1),
|
|
|
+('WORK_TYPE', 'PACKING', '分拣工', 2),
|
|
|
+('WORK_TYPE', 'LOADING', '装卸工', 3),
|
|
|
+('WORK_TYPE', 'SPRAYING', '喷药工', 4),
|
|
|
+('WORK_TYPE', 'PRUNING', '修剪工', 5),
|
|
|
+('WORK_TYPE', 'FERTILIZING', '施肥工', 6);
|
|
|
+
|
|
|
+-- 字典数据:农资种类
|
|
|
+INSERT INTO `sys_dict` (`dict_type`, `dict_code`, `dict_name`, `sort_order`) VALUES
|
|
|
+('SUPPLIER_CATEGORY', 'FERTILIZER', '化肥', 1),
|
|
|
+('SUPPLIER_CATEGORY', 'PESTICIDE', '农药', 2),
|
|
|
+('SUPPLIER_CATEGORY', 'TOOL', '农具', 3),
|
|
|
+('SUPPLIER_CATEGORY', 'SEED', '种子', 4),
|
|
|
+('SUPPLIER_CATEGORY', 'FILM', '地膜', 5);
|
|
|
+
|
|
|
+-- 字典数据:行政区划(洒渔镇下辖村)
|
|
|
+INSERT INTO `sys_dict` (`dict_type`, `dict_code`, `dict_name`, `sort_order`) VALUES
|
|
|
+('VILLAGE', 'SYYC', '洒渔镇', 0),
|
|
|
+('VILLAGE', 'HX', '黄兴村', 1),
|
|
|
+('VILLAGE', 'LJ', '柳家村', 2),
|
|
|
+('VILLAGE', 'XH', '新华村', 3),
|
|
|
+('VILLAGE', 'TL', '桃李村', 4),
|
|
|
+('VILLAGE', 'JG', '居乐村', 5),
|
|
|
+('VILLAGE', 'PH', '联合村', 6),
|
|
|
+('VILLAGE', 'XY', '新迎村', 7),
|
|
|
+('VILLAGE', 'HX2', '红讯村', 8),
|
|
|
+('VILLAGE', 'QS', '青胜村', 9),
|
|
|
+('VILLAGE', 'XY2', '新义村', 10);
|
|
|
+
|
|
|
+-- 初始行情数据
|
|
|
+INSERT INTO `market_price` (`variety`, `price_min`, `price_max`, `trend`, `update_date`) VALUES
|
|
|
+('红富士', 3.50, 4.50, 0, CURDATE()),
|
|
|
+('嘎啦', 2.80, 3.50, 1, CURDATE()),
|
|
|
+('花牛', 3.00, 4.00, 0, CURDATE());
|