# 2026/02/10
CREATE TABLE `pet_system`.`sys_tenant_categories`
(
    `id`          bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `name`        varchar(255)       NOT NULL COMMENT '分类名称',
    `sort`        bigint COMMENT '排序',
    `icon`        bigint COMMENT '图标',
    `status`      tinyint            NOT NULL DEFAULT 0 COMMENT '状态',
    `del_flag`    char(1)                     DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept` bigint(20) COMMENT '创建部门',
    `create_by`   bigint(20) COMMENT '创建者',
    `create_time` datetime COMMENT '创建时间',
    `update_by`   bigint(20) COMMENT '更新者',
    `update_time` datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '商户分类表';

# 2026/02/24
CREATE TABLE `pet_system`.`sys_store`
(
    `id`                  bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `logo`                bigint COMMENT 'LOGO',
    `business_license`    bigint             NOT NULL COMMENT '营业执照',
    `name`                varchar(64)        NOT NULL COMMENT '门店名称',
    `tenant_catergories`  bigint             NOT NULL COMMENT '商户分类',
    `start_business_time` time               NOT NULL COMMENT '开始营业时间',
    `end_business_time`   time               NOT NULL COMMENT '结束营业时间',
    `contact`             varchar(64)        NOT NULL COMMENT '联系人',
    `contact_number`      varchar(32)        NOT NULL COMMENT '联系电话',
    `validity`            date               NOT NULL COMMENT '有效期至',
    `site`                bigint COMMENT '归属站点',
    `detail_address`      varchar(255) COMMENT '详细地址',
    `status`              tinyint            NOT NULL DEFAULT 0 COMMENT '状态',
    `longitude`           decimal(20, 4) COMMENT '经度',
    `latitude`            decimal(20, 4) COMMENT '维度',
    `del_flag`            char(1)                     DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `tenant_id`           varchar(20)        NOT NULL COMMENT '租户编号',
    `create_dept`         bigint(20) COMMENT '创建部门',
    `create_by`           bigint(20) COMMENT '创建者',
    `create_time`         datetime COMMENT '创建时间',
    `update_by`           bigint(20) COMMENT '更新者',
    `update_time`         datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '门店表';

# 2026/02/25
CREATE TABLE `pet_system`.`sys_service`
(
    `id`          bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `name`        varchar(64)        NOT NULL COMMENT '服务名称',
    `icon`        bigint             NOT NULL COMMENT '服务图标',
    `mode`        tinyint            NOT NULL COMMENT '服务模式',
    `sort`        bigint  DEFAULT 0 COMMENT '排序权重',
    `remark`      varchar(255) COMMENT '备注说明',
    `del_flag`    char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept` bigint(20) COMMENT '创建部门',
    `create_by`   bigint(20) COMMENT '创建者',
    `create_time` datetime COMMENT '创建时间',
    `update_by`   bigint(20) COMMENT '更新者',
    `update_time` datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '服务项目表';

CREATE TABLE `pet_system`.`sys_area_station`
(
    `id`            bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `name`          varchar(100)       NOT NULL COMMENT '区域名称',
    `parent_id`     bigint(20) DEFAULT 0 COMMENT '父级ID',
    `code`          varchar(50) COMMENT '省市编码',
    `sort`          bigint     DEFAULT 0 COMMENT '排序权重',
    `address`       varchar(255) COMMENT '详细地址',
    `leader_name`   varchar(64) COMMENT '站长姓名',
    `contact_phone` varchar(32) COMMENT '联系电话',
    `longitude`     decimal(20, 6) COMMENT '经度',
    `latitude`      decimal(20, 6) COMMENT '纬度',
    `type`          tinyint            NOT NULL COMMENT '类型',
    `status`        tinyint    DEFAULT 0 COMMENT '状态 (0:启用, 1:禁用)',
    `del_flag`      char(1)    DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept`   bigint(20) COMMENT '创建部门',
    `create_by`     bigint(20) COMMENT '创建者',
    `create_time`   datetime COMMENT '创建时间',
    `update_by`     bigint(20) COMMENT '更新者',
    `update_time`   datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '区域站点表';

# 2026/02/26
CREATE TABLE `pet_system`.`sys_store_service`
(
    `store_id`   bigint NOT NULL COMMENT '门店ID',
    `service_id` bigint NOT NULL COMMENT '服务ID',
    PRIMARY KEY (`store_id`, `service_id`)
) ENGINE = innoDB COMMENT = '门店服务关系表';

CREATE TABLE `pet_system`.`sys_sms_config`
(
    `id`                bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `supplier`          varchar(64)        NOT NULL COMMENT '供应商',
    `access_key_id`     varchar(128)       NOT NULL COMMENT 'AccessKey',
    `access_key_secret` varchar(128)       NOT NULL COMMENT 'AccessKeySecret',
    `signature`         varchar(255)       NOT NULL COMMENT '短信签名',
    `sdk_app_id`        varchar(255)       NOT NULL COMMENT 'sdk-app-id',
    `template_id`       varchar(128)       NOT NULL COMMENT '模板ID',
    `status`            tinyint DEFAULT 0 COMMENT '状态',
    `create_dept`       bigint(20) COMMENT '创建部门',
    `create_by`         bigint(20) COMMENT '创建者',
    `create_time`       datetime COMMENT '创建时间',
    `update_by`         bigint(20) COMMENT '更新者',
    `update_time`       datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '短信配置表';

# 2026/02/28
CREATE TABLE `pet_system`.`sys_user_store`
(
    `user_id`  bigint NOT NULL COMMENT '用户ID',
    `store_id` bigint NOT NULL COMMENT '门店ID',
    PRIMARY KEY (`user_id`, `store_id`)
) ENGINE = innoDB COMMENT = '用户门店关系表';

# 2026/03/03
CREATE TABLE `pet_system`.`sys_order`
(
    `id`                          bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `code`                        varchar(255)       NOT NULL COMMENT '订单号',

    # 门店信息
    `store`                       bigint             NOT NULL COMMENT '所属门店ID',
    `store_site`                  varchar(128)       NOT NULL COMMENT '所属门店站点',

    # 下单人
    `order_placer`                bigint             NOT NULL COMMENT '下单人',

    # 客户以及宠物等信息
    `usr_customer`                bigint             NOT NULL COMMENT '宠物主',
    `usr_pet`                     bigint             NOT NULL COMMENT '宠物',

    # 其它信息
    `service`                     bigint             NOT NULL COMMENT '服务项目',
    `group_purchase_package_name` varchar(64) COMMENT '团购套餐',
    `remark`                      varchar(512) COMMENT '备注',
    `platform_id`                 tinyint            NOT NULL COMMENT '下单平台',
    `status`                      tinyint DEFAULT 0 COMMENT '状态',
    `tenant_id`                   varchar(20)        NOT NULL COMMENT '租户编号',
    `del_flag`                    char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept`                 bigint(20) COMMENT '创建部门',
    `create_by`                   bigint(20) COMMENT '创建者',
    `create_time`                 datetime COMMENT '创建时间',
    `update_by`                   bigint(20) COMMENT '更新者',
    `update_time`                 datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '订单表';

CREATE TABLE `pet_system`.`sys_sub_order`
(
    `id`                          bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `code`                        varchar(255)       NOT NULL COMMENT '订单号',
    `order_id`                    bigint             NOT NULL COMMENT '订单ID',

    -- 查询冗余
    # 门店信息
    `store`                       bigint             NOT NULL COMMENT '所属门店ID',
    `store_site`                  varchar(128)       NOT NULL COMMENT '所属门店站点',

    # 下单人
    `order_placer`                bigint             NOT NULL COMMENT '下单人',

    # 客户以及宠物等信息
    `usr_customer`                bigint             NOT NULL COMMENT '宠物主',
    `usr_pet`                     bigint             NOT NULL COMMENT '宠物',

    `service`                     bigint             NOT NULL COMMENT '服务项目',

    -- 冗余结束

    # 接送单信息
    `mode`                        tinyint COMMENT '接送模式(仅接送单有)',
    `type`                        tinyint COMMENT '0接/1送(仅接送单有)',

    # 关于联系
    `contact`                     varchar(255)       NOT NULL COMMENT '联系人',
    `contact_phone_number`        varchar(32)        NOT NULL COMMENT '联系电话',

    # 关于时间
    `service_time`                datetime           NOT NULL COMMENT '起始服务时间(仅服务单有)',
    `end_service_time`            datetime           NOT NULL COMMENT '结束服务时间',

    # 地址
    `from_code`                   varchar(128)       NOT NULL COMMENT '起点地址编号(仅接送单有)',
    `from_address`                varchar(255)       NOT NULL COMMENT '起点详细地址(仅接送单有)',
    `to_code`                     varchar(128)       NOT NULL COMMENT '终点地址编号',
    `to_address`                  varchar(255)       NOT NULL COMMENT '终点详细地址',

    `price`                       bigint COMMENT '价格(分)',

    `fulfiller`                   bigint COMMENT '履约者',

    `group_purchase_package_name` varchar(64) COMMENT '团购套餐',
    `remark`                      varchar(512) COMMENT '备注',
    `service_remark`              varchar(512) COMMENT '服务备注',
    `platform_id`                 tinyint            NOT NULL COMMENT '下单平台',
    `status`                      tinyint DEFAULT 0  NOT NULL COMMENT '状态',
    `tenant_id`                   varchar(20)        NOT NULL COMMENT '租户编号',
    `del_flag`                    char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept`                 bigint(20) COMMENT '创建部门',
    `create_by`                   bigint(20) COMMENT '创建者',
    `create_time`                 datetime COMMENT '创建时间',
    `update_by`                   bigint(20) COMMENT '更新者',
    `update_time`                 datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '子订单表';

CREATE TABLE `pet_system`.`sys_sub_order_log`
(
    `id`            bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `sub_order_id`  bigint             NOT NULL COMMENT '子订单ID',
    `actioner`      bigint             NOT NULL COMMENT '操作人',
    `actioner_type` tinyint            NOT NULL COMMENT '操作人类型',
    `log_type`      tinyint            NOT NULL COMMENT '日志类型',
    `action_type`   tinyint            NOT NULL COMMENT '操作类型',
    `title`         varchar(64)        NOT NULL COMMENT '标题',
    `content`       varchar(512)       NOT NULL COMMENT '内容',
    `photos`        varchar(512) COMMENT '上传图片',
    `tenant_id`     varchar(20)        NOT NULL COMMENT '租户编号',
    `del_flag`      char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept`   bigint(20) COMMENT '创建部门',
    `create_by`     bigint(20) COMMENT '创建者',
    `create_time`   datetime COMMENT '创建时间',
    `update_by`     bigint(20) COMMENT '更新者',
    `update_time`   datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '订单操作日志表';

CREATE TABLE `pet_system`.`flf_anamaly`
(
    `id`          bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `fulfiller`   bigint             NOT NULL COMMENT '履约者',
    `order_id`    bigint             NOT NULL COMMENT '关联订单',
    `type`        char(1)            NOT NULL COMMENT '异常类型',
    `content`     text               NOT NULL COMMENT '上报内容',
    `photos`      varchar(512) COMMENT '上报图片',
    `status`      tinyint            NOT NULL DEFAULT 0 COMMENT '审核状态',
    `tenant_id`   varchar(20)        NOT NULL COMMENT '租户编号',
    `del_flag`    char(1)                     DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept` bigint(20) COMMENT '创建部门',
    `create_by`   bigint(20) COMMENT '创建者',
    `create_time` datetime COMMENT '创建时间',
    `update_by`   bigint(20) COMMENT '更新者',
    `update_time` datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '异常信息表';

# 2026/03/18
CREATE TABLE `pet_system`.`flf_complaint_log`
(
    `id`          bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `fulfiller`   bigint             NOT NULL COMMENT '履约者',
    `order_id`    bigint             NOT NULL COMMENT '关联订单',
    `reason`      varchar(512) COMMENT '投诉原因',
    `tenant_id`   varchar(20)        NOT NULL COMMENT '租户编号',
    `del_flag`    char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept` bigint(20) COMMENT '创建部门',
    `create_by`   bigint(20) COMMENT '创建者',
    `create_time` datetime COMMENT '创建时间',
    `update_by`   bigint(20) COMMENT '更新者',
    `update_time` datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '投诉信息表';

CREATE TABLE `pet_system`.`flf_violation_log`
(
    `id`             bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `fulfiller`      bigint             NOT NULL COMMENT '履约者',
    `count`          int                NOT NULL COMMENT '违规次数',
    `violation_time` datetime           NOT NULL COMMENT '违规时间',
    `reason`         varchar(512) COMMENT '原因',
    `tenant_id`      varchar(20)        NOT NULL COMMENT '租户编号',
    `del_flag`       char(1) DEFAULT '0' COMMENT '删除标志（0代表存在 1代表删除）',
    `create_dept`    bigint(20) COMMENT '创建部门',
    `create_by`      bigint(20) COMMENT '创建者',
    `create_time`    datetime COMMENT '创建时间',
    `update_by`      bigint(20) COMMENT '更新者',
    `update_time`    datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '违规信息表';

CREATE TABLE `pet_system`.`flf_level_rights`
(
    `id`          bigint PRIMARY KEY   NOT NULL COMMENT '序号',
    `name`        varchar(64)          NOT NULL COMMENT '名称',
    `icon`        bigint COMMENT '图标',
    `status`      boolean DEFAULT true NOT NULL COMMENT '状态',
    `statement`   varchar(255) COMMENT '权益说明',
    `create_dept` bigint(20) COMMENT '创建部门',
    `create_by`   bigint(20) COMMENT '创建者',
    `create_time` datetime COMMENT '创建时间',
    `update_by`   bigint(20) COMMENT '更新者',
    `update_time` datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '等级权益信息表';

CREATE TABLE `pet_system`.`flf_level_config`
(
    `id`                                   bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `lv_no`                                int                NOT NULL COMMENT '等级数值',
    `name`                                 varchar(64)        NOT NULL COMMENT '等级名称',
    `icon`                                 bigint COMMENT '等级图标',
    `background`                           bigint COMMENT '背景图片',
    `holiday_bonus`                        int                NOT NULL DEFAULT 100 COMMENT '节假日加成',

    # 升级要求
    `upgrade_complete_order_quality`       int                NOT NULL DEFAULT 1 COMMENT '完成单量',
    `upgrade_ontime_rate`                  int                NOT NULL DEFAULT 0 COMMENT '上门准时率',
    `upgrade_complaint_rate`               int                NOT NULL DEFAULT 0 COMMENT '投诉率',
    `upgrade_violations_count`             int                NOT NULL DEFAULT 0 COMMENT '违规次数',
    `upgrade_points`                       int                NOT NULL COMMENT '积分升级门槛',

    # 降级要求
    `degrade_points`                       int                NOT NULL COMMENT '积分降级门槛',

    # 扣分配置
    `degrade_ontime_rate`                  int                NOT NULL DEFAULT 0 COMMENT '自然月内上门准时率低于%',
    `degrade_ontime_rate_score`            int                NOT NULL DEFAULT 0 COMMENT '自然月内上门准时率低于a%，自动扣罚积分',
    `degrade_complete_order_quality`       int                NOT NULL DEFAULT 0 COMMENT '自然月内完成订单小于等于',
    `degrade_complete_order_quality_score` int                NOT NULL DEFAULT 0 COMMENT '自然月内完成订单为y，自动扣罚积分',
    `degrade_violations_score`             int                NOT NULL DEFAULT 0 COMMENT '违规一次，人工扣罚',
    `degrade_complaint_count`              int                NOT NULL DEFAULT 0 COMMENT '自然月内投诉率达到%',
    `degrade_complaint_count_score`        int                NOT NULL DEFAULT 0 COMMENT '自然月内投诉率达到a%，自动扣罚积分',

    `create_dept`                          bigint(20) COMMENT '创建部门',
    `create_by`                            bigint(20) COMMENT '创建者',
    `create_time`                          datetime COMMENT '创建时间',
    `update_by`                            bigint(20) COMMENT '更新者',
    `update_time`                          datetime COMMENT '更新时间'
) ENGINE = innoDB COMMENT = '等级配置信息表';

CREATE TABLE `pet_system`.`flf_level_config_rights`
(
    `config_id` bigint NOT NULL COMMENT '配置ID',
    `rights_id` bigint NOT NULL COMMENT '权益ID',
    PRIMARY KEY (`config_id`, `rights_id`)
) ENGINE = innoDB COMMENT = '等级配置权益关联表';

CREATE TABLE `pet_system`.`sys_user_area_station`
(
    `sys_user_id`     bigint NOT NULL COMMENT '系统用户ID',
    `area_station_id` bigint NOT NULL COMMENT '区域站点ID',
    PRIMARY KEY (`sys_user_id`, `area_station_id`)
) ENGINE = innoDB COMMENT = '等级配置权益关联表';

CREATE TABLE `pet_system`.`sys_agreement`
(
    `id`                            bigint PRIMARY KEY NOT NULL COMMENT '序号',
    `user_agreement_title`          varchar(64)        NOT NULL DEFAULT '' COMMENT '用户协议标题',
    `user_agreement_content`        text               NOT NULL COMMENT '用户协议内容',
    `privacy_policy_title`          varchar(64)        NOT NULL DEFAULT '' COMMENT '隐私政策标题',
    `privacy_policy_content`        text               NOT NULL COMMENT '隐私政策内容',
    `fulfiller_explanation_title`   varchar(64)        NOT NULL DEFAULT '' COMMENT '履约者说明标题',
    `fulfiller_explanation_content` text               NOT NULL COMMENT '履约者说明内容'
) ENGINE = innoDB COMMENT = '等级配置信息表';
