
/* Drop Indexes */

DROP INDEX IF EXISTS SYS_APPCODE_INDEX;
DROP INDEX IF EXISTS SYS_DEPARTMENT_INDEX;
DROP INDEX IF EXISTS SYS_LOGIN_INDEX;
DROP INDEX IF EXISTS SYS_MENU_INDEX;
DROP INDEX IF EXISTS SYS_ROLE_INDEX;
DROP INDEX IF EXISTS SYS_USER_INDEX;



/* Drop Tables */

DROP TABLE IF EXISTS SYS_APPCODE;
DROP TABLE IF EXISTS SYS_DEPARTMENT;
DROP TABLE IF EXISTS SYS_FUNCTION;
DROP TABLE IF EXISTS SYS_LOGIN;
DROP TABLE IF EXISTS SYS_MENU;
DROP TABLE IF EXISTS SYS_ROLE;
DROP TABLE IF EXISTS SYS_USER;




/* Create Tables */

-- 标准数据类型 : 标准数据类型
CREATE TABLE SYS_APPCODE
(
	-- 编码ID : 编码ID
	CODE_ID VARCHAR(64) NOT NULL,
	-- 系统ID : 系统ID
	SYSID VARCHAR(32) NOT NULL,
	-- 类型编码 : 类型编码 : 类型编码 : 类型编码
	CODE_TYPE VARCHAR(64) NOT NULL,
	-- 编码名称 : 编码名称 : 编码名称 : 编码名称
	CODE_NAME VARCHAR(128) NOT NULL,
	-- 编 码 值 : 编 码 值 : 编 码 值 : 编 码 值
	CODE_VALUE VARCHAR(128) NOT NULL,
	-- 描述信息 : 描述信息 : 描述信息 : 描述信息
	CODE_DESC VARCHAR(1024),
	-- 顺序号 : 顺序号
	CODE_ORDER INT DEFAULT 0,
	PRIMARY KEY (CODE_ID)
) WITHOUT OIDS;


-- 机构表 : 机构表
CREATE TABLE SYS_DEPARTMENT
(
	-- ID : 唯一ID
	ID VARCHAR(32) NOT NULL,
	-- 机构编码 : 机构编码
	DEPTCODE VARCHAR(32) NOT NULL UNIQUE,
	-- 机构名称
	DEPTNAME VARCHAR(128) NOT NULL,
	-- 上级机构 : 上级机构
	PARENT VARCHAR(32),
	-- 机构类型 : 1公证处，0运营
	DEPTTYPE VARCHAR(8),
	-- 联系人
	DEPTCONN VARCHAR(64) NOT NULL,
	-- 地址
	DEPTADDR VARCHAR(256) NOT NULL,
	-- 电话
	DEPTTELL VARCHAR(64) NOT NULL,
	-- 备注 : 备注
	REMARKS VARCHAR(2048),
	PRIMARY KEY (ID)
) WITHOUT OIDS;


-- 功能信息表 : 功能信息表
CREATE TABLE SYS_FUNCTION
(
	-- 功能id : 功能id
	FUNCTIONID VARCHAR(64) NOT NULL,
	-- 分类名称 : 功能分类id
	CLASSNAME VARCHAR(64) NOT NULL,
	-- 功能名称 : 功能名称
	FUNCTIONNAME VARCHAR(128) NOT NULL,
	-- 功能描述 : 功能描述
	FUNCTIONDESC VARCHAR(256),
	PRIMARY KEY (FUNCTIONID)
) WITHOUT OIDS;


-- 登录日志 : 登录日志
CREATE TABLE SYS_LOGIN
(
	-- 记录流水 : 主键
	ID VARCHAR(64) NOT NULL,
	-- 渠道编号 : 渠道编号
	CHANNELNO VARCHAR(64),
	-- 是否成功 : 是否成功(0成功，1失败）
	LOGINTYPE INT,
	-- 用户编码 : 用户编码
	USERID VARCHAR(64),
	-- IP地址
	CLIENTIP VARCHAR(64),
	-- 服务器IP
	SERVERIP VARCHAR(64),
	-- 登录URI : 登录URI
	CONTEXT VARCHAR(256),
	-- 通讯时间 : 通讯时间
	OCCURTIME VARCHAR(64),
	-- 其它信息 : 其它信息
	OTHERDESC TEXT,
	PRIMARY KEY (ID)
) WITHOUT OIDS;


-- 菜单信息表 : 菜单信息表
CREATE TABLE SYS_MENU
(
	-- 菜单id : 菜单id
	MENUID VARCHAR(64) NOT NULL,
	-- 菜单父ID : 菜单父ID
	MENUPID VARCHAR(64),
	-- 菜单名称 : 菜单名称
	MENUNAME VARCHAR(128) NOT NULL,
	-- 菜单描述 : 菜单描述
	MENUDESC VARCHAR(128),
	-- 菜单地址 : 菜单地址
	MENUURL VARCHAR(256),
	-- 菜单图片 : 菜单图片
	MENUIMAGE VARCHAR(256),
	-- 登陆标识 : 是否是登陆后才能显示
	FLAG VARCHAR(256),
	-- 菜单索引 : 菜单索引
	MENUINDEX DECIMAL(18,2) DEFAULT 0 NOT NULL,
	PRIMARY KEY (MENUID)
) WITHOUT OIDS;


-- 角色信息表 : 角色信息表
CREATE TABLE SYS_ROLE
(
	-- 角色ID : 角色ID
	ROLEID VARCHAR(64) NOT NULL,
	-- 名称 : 名称
	NAME VARCHAR(128) NOT NULL,
	-- 功能列表 : 功能列表
	FUNCIDS VARCHAR(2048),
	-- 菜单列表 : 多个菜单id用，号分割
	MENUIDS VARCHAR(2048),
	-- 角色描述 : 角色描述
	ROLEDESC VARCHAR(256),
	PRIMARY KEY (ROLEID)
) WITHOUT OIDS;


-- 用户表 : 用户表
CREATE TABLE SYS_USER
(
	-- 人员ID
	USERID VARCHAR(64) NOT NULL,
	-- 用户类型 : 用户类型
	USERTYPE INT NOT NULL,
	-- 所属机构 : 所属机构
	ORGNAME VARCHAR(64) NOT NULL,
	-- 用户状态 : 用户状态
	USERSTATE INT DEFAULT 0 NOT NULL,
	-- 登录密码 : 登录密码
	USERPWD VARCHAR(1024),
	-- 人员名称 : 人员名称
	USERNAME VARCHAR(128) NOT NULL,
	-- 用户DN : 用户DN
	USERDN TEXT,
	-- 需要证书 : 需要证书
	USERDNFLAG INT,
	-- 昵称 : 昵称
	NICKNAME VARCHAR(64),
	-- 人员性别 : 0,表示男1,表示女
	USERSEX DECIMAL(2,0) NOT NULL,
	-- 邮箱 : 邮箱
	USEREMAIL VARCHAR(128),
	-- 电话 : 电话
	USERTELNUM VARCHAR(128),
	-- 手机
	USERMOBNUB VARCHAR(11),
	-- 角色ID列表 : 角色ID列表
	ROLEIDS TEXT,
	-- 用户样式 : 用户样式
	STYLENAME VARCHAR(64),
	-- 描述 : 描述
	USERDESC VARCHAR(256),
	PRIMARY KEY (USERID)
) WITHOUT OIDS;



/* Create Indexes */

-- 标准数据索引
CREATE INDEX SYS_APPCODE_INDEX ON SYS_APPCODE (SYSID, CODE_TYPE, CODE_VALUE);
-- 机构索引
CREATE UNIQUE INDEX SYS_DEPARTMENT_INDEX ON SYS_DEPARTMENT USING BTREE (DEPTCODE, DEPTNAME, PARENT, DEPTTYPE);
-- 登录信息索引
CREATE INDEX SYS_LOGIN_INDEX ON SYS_LOGIN (USERID, OCCURTIME);
-- 菜单索引
CREATE INDEX SYS_MENU_INDEX ON SYS_MENU USING BTREE (MENUPID, MENUID, MENUNAME, FLAG);
-- 角色索引
CREATE INDEX SYS_ROLE_INDEX ON SYS_ROLE USING BTREE (ROLEID, FUNCIDS, MENUIDS);
-- 用户表索引
CREATE INDEX SYS_USER_INDEX ON SYS_USER USING BTREE (USERTYPE, USERNAME, USERPWD, NICKNAME);



/* Comments */

COMMENT ON TABLE SYS_APPCODE IS '标准数据类型 : 标准数据类型';
COMMENT ON COLUMN SYS_APPCODE.CODE_ID IS '编码ID : 编码ID';
COMMENT ON COLUMN SYS_APPCODE.SYSID IS '系统ID : 系统ID';
COMMENT ON COLUMN SYS_APPCODE.CODE_TYPE IS '类型编码 : 类型编码 : 类型编码 : 类型编码';
COMMENT ON COLUMN SYS_APPCODE.CODE_NAME IS '编码名称 : 编码名称 : 编码名称 : 编码名称';
COMMENT ON COLUMN SYS_APPCODE.CODE_VALUE IS '编 码 值 : 编 码 值 : 编 码 值 : 编 码 值';
COMMENT ON COLUMN SYS_APPCODE.CODE_DESC IS '描述信息 : 描述信息 : 描述信息 : 描述信息';
COMMENT ON COLUMN SYS_APPCODE.CODE_ORDER IS '顺序号 : 顺序号';
COMMENT ON TABLE SYS_DEPARTMENT IS '机构表 : 机构表';
COMMENT ON COLUMN SYS_DEPARTMENT.ID IS 'ID : 唯一ID';
COMMENT ON COLUMN SYS_DEPARTMENT.DEPTCODE IS '机构编码 : 机构编码';
COMMENT ON COLUMN SYS_DEPARTMENT.DEPTNAME IS '机构名称';
COMMENT ON COLUMN SYS_DEPARTMENT.PARENT IS '上级机构 : 上级机构';
COMMENT ON COLUMN SYS_DEPARTMENT.DEPTTYPE IS '机构类型 : 1公证处，0运营';
COMMENT ON COLUMN SYS_DEPARTMENT.DEPTCONN IS '联系人';
COMMENT ON COLUMN SYS_DEPARTMENT.DEPTADDR IS '地址';
COMMENT ON COLUMN SYS_DEPARTMENT.DEPTTELL IS '电话';
COMMENT ON COLUMN SYS_DEPARTMENT.REMARKS IS '备注 : 备注';
COMMENT ON TABLE SYS_FUNCTION IS '功能信息表 : 功能信息表';
COMMENT ON COLUMN SYS_FUNCTION.FUNCTIONID IS '功能id : 功能id';
COMMENT ON COLUMN SYS_FUNCTION.CLASSNAME IS '分类名称 : 功能分类id';
COMMENT ON COLUMN SYS_FUNCTION.FUNCTIONNAME IS '功能名称 : 功能名称';
COMMENT ON COLUMN SYS_FUNCTION.FUNCTIONDESC IS '功能描述 : 功能描述';
COMMENT ON TABLE SYS_LOGIN IS '登录日志 : 登录日志';
COMMENT ON COLUMN SYS_LOGIN.ID IS '记录流水 : 主键';
COMMENT ON COLUMN SYS_LOGIN.CHANNELNO IS '渠道编号 : 渠道编号';
COMMENT ON COLUMN SYS_LOGIN.LOGINTYPE IS '是否成功 : 是否成功(0成功，1失败）';
COMMENT ON COLUMN SYS_LOGIN.USERID IS '用户编码 : 用户编码';
COMMENT ON COLUMN SYS_LOGIN.CLIENTIP IS 'IP地址';
COMMENT ON COLUMN SYS_LOGIN.SERVERIP IS '服务器IP';
COMMENT ON COLUMN SYS_LOGIN.CONTEXT IS '登录URI : 登录URI';
COMMENT ON COLUMN SYS_LOGIN.OCCURTIME IS '通讯时间 : 通讯时间';
COMMENT ON COLUMN SYS_LOGIN.OTHERDESC IS '其它信息 : 其它信息';
COMMENT ON TABLE SYS_MENU IS '菜单信息表 : 菜单信息表';
COMMENT ON COLUMN SYS_MENU.MENUID IS '菜单id : 菜单id';
COMMENT ON COLUMN SYS_MENU.MENUPID IS '菜单父ID : 菜单父ID';
COMMENT ON COLUMN SYS_MENU.MENUNAME IS '菜单名称 : 菜单名称';
COMMENT ON COLUMN SYS_MENU.MENUDESC IS '菜单描述 : 菜单描述';
COMMENT ON COLUMN SYS_MENU.MENUURL IS '菜单地址 : 菜单地址';
COMMENT ON COLUMN SYS_MENU.MENUIMAGE IS '菜单图片 : 菜单图片';
COMMENT ON COLUMN SYS_MENU.FLAG IS '登陆标识 : 是否是登陆后才能显示';
COMMENT ON COLUMN SYS_MENU.MENUINDEX IS '菜单索引 : 菜单索引';
COMMENT ON TABLE SYS_ROLE IS '角色信息表 : 角色信息表';
COMMENT ON COLUMN SYS_ROLE.ROLEID IS '角色ID : 角色ID';
COMMENT ON COLUMN SYS_ROLE.NAME IS '名称 : 名称';
COMMENT ON COLUMN SYS_ROLE.FUNCIDS IS '功能列表 : 功能列表';
COMMENT ON COLUMN SYS_ROLE.MENUIDS IS '菜单列表 : 多个菜单id用，号分割';
COMMENT ON COLUMN SYS_ROLE.ROLEDESC IS '角色描述 : 角色描述';
COMMENT ON TABLE SYS_USER IS '用户表 : 用户表';
COMMENT ON COLUMN SYS_USER.USERID IS '人员ID';
COMMENT ON COLUMN SYS_USER.USERTYPE IS '用户类型 : 用户类型';
COMMENT ON COLUMN SYS_USER.ORGNAME IS '所属机构 : 所属机构';
COMMENT ON COLUMN SYS_USER.USERSTATE IS '用户状态 : 用户状态';
COMMENT ON COLUMN SYS_USER.USERPWD IS '登录密码 : 登录密码';
COMMENT ON COLUMN SYS_USER.USERNAME IS '人员名称 : 人员名称';
COMMENT ON COLUMN SYS_USER.USERDN IS '用户DN : 用户DN';
COMMENT ON COLUMN SYS_USER.USERDNFLAG IS '需要证书 : 需要证书';
COMMENT ON COLUMN SYS_USER.NICKNAME IS '昵称 : 昵称';
COMMENT ON COLUMN SYS_USER.USERSEX IS '人员性别 : 0,表示男1,表示女';
COMMENT ON COLUMN SYS_USER.USEREMAIL IS '邮箱 : 邮箱';
COMMENT ON COLUMN SYS_USER.USERTELNUM IS '电话 : 电话';
COMMENT ON COLUMN SYS_USER.USERMOBNUB IS '手机';
COMMENT ON COLUMN SYS_USER.ROLEIDS IS '角色ID列表 : 角色ID列表';
COMMENT ON COLUMN SYS_USER.STYLENAME IS '用户样式 : 用户样式';
COMMENT ON COLUMN SYS_USER.USERDESC IS '描述 : 描述';



