From 766004fa0a69545a753db87b97aabe2771d295da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Sat, 21 Jun 2025 13:41:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9:=201=E3=80=81=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=B6=88=E6=81=AF=E7=BB=99=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E6=97=B6=E6=8D=95=E8=8E=B7=E9=94=99?= =?UTF-8?q?=E8=AF=AF=20=20=20=20=20=202=E3=80=81=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=88=9D=E5=A7=8B=E5=8C=96=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/z_im-mysql.sql | 83 ++++++++++++++++ docs/z_im-postgresql.sql | 136 ++++++++++++++++++++++++++ pom.xml | 7 ++ src/com/zchd/zim/ImChatService.java | 3 + src/com/zchd/zim/ImChatWebSocket.java | 4 + 5 files changed, 233 insertions(+) create mode 100644 docs/z_im-mysql.sql create mode 100644 docs/z_im-postgresql.sql diff --git a/docs/z_im-mysql.sql b/docs/z_im-mysql.sql new file mode 100644 index 0000000..ae02775 --- /dev/null +++ b/docs/z_im-mysql.sql @@ -0,0 +1,83 @@ + +CREATE TABLE `appinfo` ( + `appid` varchar(64) NOT NULL DEFAULT '' COMMENT '[平台标识]', + `appname` varchar(64) NOT NULL DEFAULT '' COMMENT '[平台名称]', + `appsecret` varchar(64) NOT NULL DEFAULT '' COMMENT '[校验码]', + `createtime` bigint NOT NULL DEFAULT '0' COMMENT '[创建时间]', + `updatetime` bigint NOT NULL DEFAULT '0' COMMENT '[修改时间]', + `status` smallint NOT NULL DEFAULT '10' COMMENT '[状态]10正常, 40停用,80删除', + `checkfriend` smallint NOT NULL DEFAULT '0' COMMENT '[是否检查好友关系,1是,0否]', + `checkblack` smallint NOT NULL DEFAULT '0' COMMENT '[是否检查拉黑关系,1是,0否]', + `machineretract` smallint NOT NULL DEFAULT '0' COMMENT '[是否需要机审撤回处理,1是,0否]', + `hasnext` smallint NOT NULL DEFAULT '0' COMMENT '[是否有下一步流程,1是,0否]', + PRIMARY KEY (`appid`) +) ENGINE=InnoDB COMMENT='平台信息表'; + +CREATE TABLE `channelmessage` ( + `messageid` varchar(64) NOT NULL DEFAULT '' COMMENT '[消息ID]', + `content` text NOT NULL COMMENT '[消息内容]', + `appid` varchar(8) NOT NULL DEFAULT '' COMMENT '[平台ID]', + `channeltype` varchar(15) NOT NULL DEFAULT '' COMMENT '[平台频道类型]', + `channelvalue` varchar(64) NOT NULL DEFAULT '' COMMENT '[平台频道ID]', + `senduserid` int NOT NULL DEFAULT '0' COMMENT '[发送人]', + `createtime` bigint NOT NULL DEFAULT '0' COMMENT '[创建时间]', + `status` smallint NOT NULL DEFAULT '10' COMMENT '[状态]80删除', + `type` varchar(255) NOT NULL DEFAULT '' COMMENT '[消息类型]', + `title` varchar(255) NOT NULL DEFAULT '' COMMENT '[消息标题]', + `attachment` varchar(2048) NOT NULL DEFAULT '' COMMENT '[消息附加信息]', + PRIMARY KEY (`messageid`) USING BTREE +) ENGINE=InnoDB COMMENT='频道内容表'; + +CREATE TABLE `channeluser` ( + `cuid` varchar(64) NOT NULL DEFAULT '' COMMENT '[用户组ID]', + `appid` varchar(64) NOT NULL DEFAULT '' COMMENT '[平台ID]', + `channeltype` varchar(15) NOT NULL DEFAULT '' COMMENT '[平台频道类型]', + `channelvalue` varchar(64) NOT NULL DEFAULT '' COMMENT '[平台频道ID]', + `userid` int NOT NULL DEFAULT '0' COMMENT '[订阅用户]', + `createtime` bigint NOT NULL DEFAULT '0' COMMENT '[创建时间]', + `lastaccepttime` bigint NOT NULL DEFAULT '0' COMMENT '[最后接收时间]', + `status` smallint NOT NULL DEFAULT '10' COMMENT '[状态]10正常,42禁言', + `identitytype` smallint NOT NULL DEFAULT '10' COMMENT '[用户身份,0游客,10成员,20管理员,30群主]', + PRIMARY KEY (`cuid`) +) ENGINE=InnoDB COMMENT='用户组信息表'; + +CREATE TABLE `friendmessage` ( + `messageid` varchar(64) NOT NULL DEFAULT '' COMMENT '[私聊ID]发送人-时间戳', + `messagetype` varchar(32) NOT NULL DEFAULT '' COMMENT '[消息类型]', + `content` text NOT NULL COMMENT '[私聊内容]', + `senduserid` int NOT NULL DEFAULT '0' COMMENT '[发送人]', + `receiveuserid` int NOT NULL DEFAULT '0' COMMENT '[接收人]', + `createtime` bigint NOT NULL DEFAULT '0' COMMENT '[创建时间]', + `status` smallint NOT NULL DEFAULT '20' COMMENT '[状态]10已发送,20未发送,21仅在线发送', + `type` varchar(255) NOT NULL DEFAULT '' COMMENT '[消息类型]', + `title` varchar(255) NOT NULL DEFAULT '' COMMENT '[消息标题]', + `attachment` varchar(2048) NOT NULL DEFAULT '' COMMENT '[消息附加信息]', +傻 `newField` varchar(255) NOT NULL DEFAULT '' COMMENT '[新字段描述]', + PRIMARY KEY (`messageid`) +) ENGINE=InnoDB COMMENT='私聊内容表'; + +CREATE TABLE `imuser` ( + `userid` int NOT NULL COMMENT '[用户标识]', + `guserid` varchar(64) NOT NULL DEFAULT '' COMMENT '[平台自用用户标识]', + `appid` varchar(8) NOT NULL DEFAULT '' COMMENT '[关联平台标识]', + `gender` smallint NOT NULL DEFAULT '0' COMMENT '[性别]', + `nickname` varchar(32) NOT NULL DEFAULT '' COMMENT '[昵称]', + `face` varchar(128) NOT NULL DEFAULT '' COMMENT '[头像]', + `createtime` bigint NOT NULL DEFAULT '0' COMMENT '[创建时间]', + `imtoken` varchar(125) DEFAULT '' COMMENT '[用户认证]', + `updatetime` bigint NOT NULL DEFAULT '0' COMMENT '[修改时间]', + `lastaccepttime` bigint NOT NULL DEFAULT '0' COMMENT '[接收时间]', + `status` smallint NOT NULL DEFAULT '10' COMMENT '[状态]10正常,40停用,80删除', + PRIMARY KEY (`userid`) +) ENGINE=InnoDB COMMENT='IM用户'; + + +-- +INSERT INTO z_im.appinfo (appid, appname, appsecret, createtime, updatetime, status, checkfriend, checkblack, machineretract, hasnext) VALUES +('krlq2lp4', '应用A-开发服', '108319232efb4880bcb4f3323829692c', 0, 0, 10, 0, 0, 0, 0), +('xrkqglth', '应用A-测试服', '108319232efb4880bcb4f3323829692d', 0, 0, 10, 0, 0, 0, 0); + +INSERT INTO imuser (userid, guserid, appid, gender, nickname, face, createtime, imtoken, updatetime, lastaccepttime, status) VALUES +(10001, '1784509137732849665', 'xrkqglth', 0, '', '', 1721373487374, 'c75ab6feda394d8c8b28371cda45ec12', 1748780429, 1748780429, 10), +(10002, '1784421470808907778', 'xrkqglth', 0, '', '', 1721377122233, '69ca1dcbebc645b78f84a9e88287382d', 1748780432, 1748780432, 10); + diff --git a/docs/z_im-postgresql.sql b/docs/z_im-postgresql.sql new file mode 100644 index 0000000..71fd4f1 --- /dev/null +++ b/docs/z_im-postgresql.sql @@ -0,0 +1,136 @@ +CREATE TABLE appinfo ( + appid VARCHAR(64) NOT NULL DEFAULT '', + appname VARCHAR(64) NOT NULL DEFAULT '', + appsecret VARCHAR(64) NOT NULL DEFAULT '', + createtime BIGINT NOT NULL DEFAULT 0, + updatetime BIGINT NOT NULL DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 10, + checkfriend SMALLINT NOT NULL DEFAULT 0, + checkblack SMALLINT NOT NULL DEFAULT 0, + machineretract SMALLINT NOT NULL DEFAULT 0, + hasnext SMALLINT NOT NULL DEFAULT 0, + PRIMARY KEY (appid) +); +COMMENT ON TABLE appinfo IS '平台信息表'; +COMMENT ON COLUMN appinfo.appid IS '[平台标识]'; +COMMENT ON COLUMN appinfo.appname IS '[平台名称]'; +COMMENT ON COLUMN appinfo.appsecret IS '[校验码]'; +COMMENT ON COLUMN appinfo.createtime IS '[创建时间]'; +COMMENT ON COLUMN appinfo.updatetime IS '[修改时间]'; +COMMENT ON COLUMN appinfo.status IS '[状态]10正常, 40停用,80删除'; +COMMENT ON COLUMN appinfo.checkfriend IS '[是否检查好友关系,1是,0否]'; +COMMENT ON COLUMN appinfo.checkblack IS '[是否检查拉黑关系,1是,0否]'; +COMMENT ON COLUMN appinfo.machineretract IS '[是否需要机审撤回处理,1是,0否]'; +COMMENT ON COLUMN appinfo.hasnext IS '[是否有下一步流程,1是,0否]'; + +CREATE TABLE channelmessage ( + messageid VARCHAR(64) NOT NULL DEFAULT '', + content TEXT NOT NULL, + appid VARCHAR(8) NOT NULL DEFAULT '', + channeltype VARCHAR(15) NOT NULL DEFAULT '', + channelvalue VARCHAR(64) NOT NULL DEFAULT '', + senduserid INT NOT NULL DEFAULT 0, + createtime BIGINT NOT NULL DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 10, + type VARCHAR(255) NOT NULL DEFAULT '', + title VARCHAR(255) NOT NULL DEFAULT '', + attachment VARCHAR(2048) NOT NULL DEFAULT '', + PRIMARY KEY (messageid) +); +COMMENT ON TABLE channelmessage IS '频道内容表'; +COMMENT ON COLUMN channelmessage.messageid IS '[消息ID]'; +COMMENT ON COLUMN channelmessage.content IS '[消息内容]'; +COMMENT ON COLUMN channelmessage.appid IS '[平台ID]'; +COMMENT ON COLUMN channelmessage.channeltype IS '[平台频道类型]'; +COMMENT ON COLUMN channelmessage.channelvalue IS '[平台频道ID]'; +COMMENT ON COLUMN channelmessage.senduserid IS '[发送人]'; +COMMENT ON COLUMN channelmessage.createtime IS '[创建时间]'; +COMMENT ON COLUMN channelmessage.status IS '[状态]80删除'; +COMMENT ON COLUMN channelmessage.type IS '[消息类型]'; +COMMENT ON COLUMN channelmessage.title IS '[消息标题]'; +COMMENT ON COLUMN channelmessage.attachment IS '[消息附加信息]'; + +CREATE TABLE channeluser ( + cuid VARCHAR(64) NOT NULL DEFAULT '', + appid VARCHAR(64) NOT NULL DEFAULT '', + channeltype VARCHAR(15) NOT NULL DEFAULT '', + channelvalue VARCHAR(64) NOT NULL DEFAULT '', + userid INT NOT NULL DEFAULT 0, + createtime BIGINT NOT NULL DEFAULT 0, + lastaccepttime BIGINT NOT NULL DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 10, + identitytype SMALLINT NOT NULL DEFAULT 10, + PRIMARY KEY (cuid) +); +COMMENT ON TABLE channeluser IS '用户组信息表'; +COMMENT ON COLUMN channeluser.cuid IS '[用户组ID]'; +COMMENT ON COLUMN channeluser.appid IS '[平台ID]'; +COMMENT ON COLUMN channeluser.channeltype IS '[平台频道类型]'; +COMMENT ON COLUMN channeluser.channelvalue IS '[平台频道ID]'; +COMMENT ON COLUMN channeluser.userid IS '[订阅用户]'; +COMMENT ON COLUMN channeluser.createtime IS '[创建时间]'; +COMMENT ON COLUMN channeluser.lastaccepttime IS '[最后接收时间]'; +COMMENT ON COLUMN channeluser.status IS '[状态]10正常,42禁言'; +COMMENT ON COLUMN channeluser.identitytype IS '[用户身份,0游客,10成员,20管理员,30群主]'; + +CREATE TABLE friendmessage ( + messageid VARCHAR(64) NOT NULL DEFAULT '', + messagetype VARCHAR(32) NOT NULL DEFAULT '', + content TEXT NOT NULL, + senduserid INT NOT NULL DEFAULT 0, + receiveuserid INT NOT NULL DEFAULT 0, + createtime BIGINT NOT NULL DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 20, + type VARCHAR(255) NOT NULL DEFAULT '', + title VARCHAR(255) NOT NULL DEFAULT '', + attachment VARCHAR(2048) NOT NULL DEFAULT '', + PRIMARY KEY (messageid) +); +COMMENT ON TABLE friendmessage IS '私聊内容表'; +COMMENT ON COLUMN friendmessage.messageid IS '[私聊ID]发送人-时间戳'; +COMMENT ON COLUMN friendmessage.messagetype IS '[消息类型]'; +COMMENT ON COLUMN friendmessage.content IS '[私聊内容]'; +COMMENT ON COLUMN friendmessage.senduserid IS '[发送人]'; +COMMENT ON COLUMN friendmessage.receiveuserid IS '[接收人]'; +COMMENT ON COLUMN friendmessage.createtime IS '[创建时间]'; +COMMENT ON COLUMN friendmessage.status IS '[状态]10已发送,20未发送,21仅在线发送'; +COMMENT ON COLUMN friendmessage.type IS '[消息类型]'; +COMMENT ON COLUMN friendmessage.title IS '[消息标题]'; +COMMENT ON COLUMN friendmessage.attachment IS '[消息附加信息]'; + +CREATE TABLE imuser ( + userid INT NOT NULL, + guserid VARCHAR(64) NOT NULL DEFAULT '', + appid VARCHAR(8) NOT NULL DEFAULT '', + gender SMALLINT NOT NULL DEFAULT 0, + nickname VARCHAR(32) NOT NULL DEFAULT '', + face VARCHAR(128) NOT NULL DEFAULT '', + createtime BIGINT NOT NULL DEFAULT 0, + imtoken VARCHAR(125) DEFAULT '', + updatetime BIGINT NOT NULL DEFAULT 0, + lastaccepttime BIGINT NOT NULL DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 10, + PRIMARY KEY (userid) +); +COMMENT ON TABLE imuser IS 'IM用户'; +COMMENT ON COLUMN imuser.userid IS '[用户标识]'; +COMMENT ON COLUMN imuser.guserid IS '[平台自用用户标识]'; +COMMENT ON COLUMN imuser.appid IS '[关联平台标识]'; +COMMENT ON COLUMN imuser.gender IS '[性别]'; +COMMENT ON COLUMN imuser.nickname IS '[昵称]'; +COMMENT ON COLUMN imuser.face IS '[头像]'; +COMMENT ON COLUMN imuser.createtime IS '[创建时间]'; +COMMENT ON COLUMN imuser.imtoken IS '[用户认证]'; +COMMENT ON COLUMN imuser.updatetime IS '[修改时间]'; +COMMENT ON COLUMN imuser.lastaccepttime IS '[接收时间]'; +COMMENT ON COLUMN imuser.status IS '[状态]10正常,40停用,80删除'; + +-- +INSERT INTO z_im.appinfo (appid, appname, appsecret, createtime, updatetime, status, checkfriend, checkblack, machineretract, hasnext) VALUES +('krlq2lp4', '应用A-开发服', '108319232efb4880bcb4f3323829692c', 0, 0, 10, 0, 0, 0, 0), +('xrkqglth', '应用A-测试服', '108319232efb4880bcb4f3323829692d', 0, 0, 10, 0, 0, 0, 0); + +INSERT INTO imuser (userid, guserid, appid, gender, nickname, face, createtime, imtoken, updatetime, lastaccepttime, status) VALUES +(10001, '1784509137732849665', 'xrkqglth', 0, '', '', 1721373487374, 'c75ab6feda394d8c8b28371cda45ec12', 1748780429, 1748780429, 10), +(10002, '1784421470808907778', 'xrkqglth', 0, '', '', 1721377122233, '69ca1dcbebc645b78f84a9e88287382d', 1748780432, 1748780432, 10); + diff --git a/pom.xml b/pom.xml index 0f15232..4fef5e3 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ + maven-release maven-nexus @@ -56,6 +57,12 @@ net.tccn zhub-client-redkale x.22.0 + + + redkale + org.redkale + +