create database license;
use license;
--创建用户
CREATE TABLE lic_USER (
    id INT IDENTITY(10,1) PRIMARY KEY,         -- 自增主键，从10开始，每次递增1
    UNIQUEID VARCHAR(36) NOT NULL UNIQUE,     -- 唯一值ID
    Username VARCHAR(255) NOT NULL UNIQUE DEFAULT '访客',     -- 用户名，不能为空且唯一
    Account VARCHAR(255) NOT NULL UNIQUE,  --账号
    PassWord VARCHAR(255) NOT NULL ,            -- 密码，不能为空
    TELEPHONE VARCHAR(20) NOT NULL UNIQUE,                     -- 电话号码
    EMAIL VARCHAR(100) NOT NULL UNIQUE,        -- 电子邮件，不能为空且唯一，长度调整为100
    Role VARCHAR(20) NOT NULL DEFAULT 'guest',   -- 角色，不能为空，默认值为 'user'
    DelTime DATETIME COMMENT '删除或失效的时间',
    groupId int COMMENT '组'
);
insert into lic_user(uniqueid,username,account,password,telephone,email,role) values('aaf07a1e6eae','admin','admin'
,'$2a$10$Cr9JI/kMnOHM7ocatyNfz.EVt0imnjM.7KNRFaXdVs3E7lr/5Aywm','17381566011','346614231@qq','admin');
     


--创表用户权限
CREATE  TABLE RolePermissions (
    ID INT IDENTITY(1,1) PRIMARY KEY,
	   name VARCHAR(24) COMMENT '角色名', 
	   permissions VARCHAR COMMENT '权限列表'
);

--这个表用于存储上次同步的时间。
CREATE TABLE sync_metadata (
    id INTEGER  IDENTITY(1,1) PRIMARY KEY,               -- 主键ID
    table_name VARCHAR(255) NOT NULL,     -- 表名
    last_sync_time TIMESTAMP NOT NULL     -- 上次同步的时间
);

-- 初始化插入一条记录
INSERT INTO sync_metadata ( table_name,last_sync_time) VALUES ('target_OA_license', '1970-01-01 00:00:00');





-- 创建目标表
CREATE TABLE target_OA_license (
    id INTEGER IDENTITY(1,1) PRIMARY KEY COMMENT '自增主键，从1开始，每次递增1',
    Unique_ID VARCHAR(36) UNIQUE  NOT NULL   COMMENT '每行数据的唯一值ID，理论上有oa的REQUESTID就可以了',
    OA_ID INTEGER COMMENT 'oa 一行的ID',
    OA_REQUESTID INTEGER COMMENT 'oa里的申请单请求ID',
    OA_REQUESTNAME VARCHAR(255) COMMENT '请求名称',
    OA_REQUESTNAMENEW VARCHAR(255) COMMENT '新请求名称',
    OA_REQUESTNAMEHTMLNEW VARCHAR(255) COMMENT '新请求名称（HTML格式）',
    OA_GLXMID  INTEGER COMMENT 'oa 关联项目ID (formtable_main_146.glxm)',
    OA_GLXMNAME VARCHAR  COMMENT 'oa 关联项目名字 (PRJ_PROJECTINFO.name)',
    OA_SQSJ VARCHAR COMMENT '申请时间',
    OA_SALESPERSONNAME VARCHAR(255) COMMENT '销售人员名称',
    OA_XSJSYX VARCHAR(255) COMMENT '销售邮箱',
    OA_OPERATIONSPERSONNAME VARCHAR(255) COMMENT '运维人员名称',
    OA_JFJSYX VARCHAR(255) COMMENT '运维邮箱',
    OA_SYDW VARCHAR(255) COMMENT '使用单位',
    OA_XMXXMS TEXT COMMENT '项目详细描述',
    OA_JDS INTEGER COMMENT '节点数',
    OA_NODECOUNT INTEGER COMMENT '总节点数',
    OA_PRODUCTCODE VARCHAR COMMENT '产品编号',
    OA_PRODUCTNAME VARCHAR COMMENT '产品名称',
    OA_PRODUCTVERSION VARCHAR COMMENT '产品版本',
    OA_CPU VARCHAR COMMENT 'CPU 信息',
    OA_OPERATINGSYSTEM VARCHAR COMMENT '操作系统信息',
    OA_MAINMAC VARCHAR COMMENT '主 MAC 地址',
    OA_SECONDMAC VARCHAR COMMENT '副 MAC 地址',
    OA_CREATIONDATE VARCHAR COMMENT '创建日期',
    OA_CREATIONTIME VARCHAR COMMENT '创建时间',
    OA_LASTOPERATEDATE VARCHAR COMMENT '最后操作日期',
    OA_LASTOPERATETIME VARCHAR COMMENT '最后操作时间',
    capture_Time DATETIME COMMENT '抓取时间，用于记录数据抓取的时间',
    del_Time  DATETIME COMMENT '该表的行删除时间，非oa表中的删除',
    LAST_OPERATE_TIME   DATETIME COMMENT '该表的行最后操作时间，非oa表中的最后操作时间'
);
-- 创建 LicenseGenerateInfo 表
CREATE TABLE License_generate_Info (
    ID INT IDENTITY(1,1),
    OA_ID INTEGER COMMENT 'oa 一行的ID',
    License_UniqueID VARCHAR(36) COMMENT 'LicenseApplication表的唯一值ID',
    License_Flage VARCHAR(255) COMMENT 'License分发状态',
    lic1 VARCHAR COMMENT '主License',
    lic2 VARCHAR COMMENT '副License',
    Creator_generate DATETIME COMMENT '生成时间',
    CONSTRAINT FK_LicenseUniqueID FOREIGN KEY (License_UniqueID)
    REFERENCES target_OA_license (Unique_ID)
);

--创建license分发记录表
CREATE TABLE licenseRecordToUser (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    OA_REQUESTID VARCHAR(36) COMMENT 'oa里的申请单请求ID',
    License_UniqueID VARCHAR(36)  COMMENT '申请单里一条licUid,支撑库里的唯一值ID',
    user_UNIQUEID VARCHAR(255),
    User_Account VARCHAR(255),
    operator_UniqueID VARCHAR(255),
    up_Time DATETIME,
    Del_Time DATETIME COMMENT '删除或失效的时间',
    CONSTRAINT FK_LicenseUniqueID FOREIGN KEY (License_UniqueID)
    REFERENCES target_OA_license (Unique_ID)
);

--创建license分发记录表
CREATE TABLE licenseRecordToEmails (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    OA_REQUESTID INTEGER COMMENT 'oa里的申请单请求ID',
    License_UniqueID VARCHAR(36),
    emails VARCHAR(255),
    operator_UniqueID VARCHAR(255),
    up_Time DATETIME,
    Del_Time DATETIME COMMENT '删除或失效的时间',
    CONSTRAINT FK_LicenseUniqueID FOREIGN KEY (License_UniqueID)
    REFERENCES target_OA_license (Unique_ID)
);