修改: 1、发送消息给不存在的用户时捕获错误
2、补充数据库初始化脚本
This commit is contained in:
parent
4fd53fe434
commit
766004fa0a
83
docs/z_im-mysql.sql
Normal file
83
docs/z_im-mysql.sql
Normal file
@ -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);
|
||||||
|
|
136
docs/z_im-postgresql.sql
Normal file
136
docs/z_im-postgresql.sql
Normal file
@ -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);
|
||||||
|
|
7
pom.xml
7
pom.xml
@ -14,6 +14,7 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
<!-- https://nexus.1216.top/repo/ -->
|
||||||
<repository>
|
<repository>
|
||||||
<id>maven-release</id>
|
<id>maven-release</id>
|
||||||
<name>maven-nexus</name>
|
<name>maven-nexus</name>
|
||||||
@ -56,6 +57,12 @@
|
|||||||
<groupId>net.tccn</groupId>
|
<groupId>net.tccn</groupId>
|
||||||
<artifactId>zhub-client-redkale</artifactId>
|
<artifactId>zhub-client-redkale</artifactId>
|
||||||
<version>x.22.0</version>
|
<version>x.22.0</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>redkale</artifactId>
|
||||||
|
<groupId>org.redkale</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--<dependency>
|
<!--<dependency>
|
||||||
|
@ -211,6 +211,9 @@ public class ImChatService extends BaseService {
|
|||||||
|
|
||||||
public int getUserid(String appid, String guserid) {
|
public int getUserid(String appid, String guserid) {
|
||||||
ImUser user = zimSource.find(ImUser.class, FilterNode.create("appid", appid).and("guserid", guserid));
|
ImUser user = zimSource.find(ImUser.class, FilterNode.create("appid", appid).and("guserid", guserid));
|
||||||
|
if (user == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return user.getUserid();
|
return user.getUserid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,6 +100,10 @@ public class ImChatWebSocket extends WebSocket {
|
|||||||
String mck = extmap.get("mck");
|
String mck = extmap.get("mck");
|
||||||
|
|
||||||
int targetguserid = chatService.getUserid(appid, guserid);
|
int targetguserid = chatService.getUserid(appid, guserid);
|
||||||
|
if (targetguserid == 0) {
|
||||||
|
sendTip("用户不存在", mck, 4001);
|
||||||
|
return;
|
||||||
|
}
|
||||||
FriendMessage message = FriendMessage.buildFriendMessage(bean.get("content"), userid, targetguserid);
|
FriendMessage message = FriendMessage.buildFriendMessage(bean.get("content"), userid, targetguserid);
|
||||||
|
|
||||||
// 禁言检查
|
// 禁言检查
|
||||||
|
Loading…
Reference in New Issue
Block a user