Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
4095b386
Commit
4095b386
authored
May 06, 2021
by
giaogiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
消息接收, 保存离线消息,保存消息收件箱表
parent
9271c171
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
511 additions
and
74 deletions
+511
-74
common/src/main/java/com/wecloud/im/controller/ImInboxController.java
+97
-0
common/src/main/java/com/wecloud/im/entity/ImInbox.java
+62
-0
common/src/main/java/com/wecloud/im/enums/PlainTypeStatusEnum.java
+0
-28
common/src/main/java/com/wecloud/im/mapper/ImInboxMapper.java
+40
-0
common/src/main/java/com/wecloud/im/param/ImInboxPageParam.java
+23
-0
common/src/main/java/com/wecloud/im/param/ImInboxQueryVo.java
+52
-0
common/src/main/java/com/wecloud/im/service/ImInboxService.java
+62
-0
common/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
+62
-0
common/src/main/java/com/wecloud/im/tillo/app_ws/WsHandler.java
+1
-33
common/src/main/java/com/wecloud/im/tillo/app_ws/receive/ReadWsData.java
+4
-10
common/src/main/java/com/wecloud/im/tillo/app_ws/sender/WsWriter.java
+11
-0
common/src/main/java/com/wecloud/im/tillo/app_ws/strategy/AbstractReceiveStrategy.java
+1
-1
common/src/main/java/com/wecloud/im/tillo/app_ws/strategy/ReceiveStrategyProcessor.java
+1
-1
common/src/main/java/com/wecloud/im/tillo/app_ws/strategy/concrete/SingleConcreteReceiveStrategy.java
+71
-1
common/src/main/resources/mapper/ImInboxMapper.xml
+24
-0
No files found.
common/src/main/java/com/wecloud/im/controller/ImInboxController.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
controller
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.param.ImInboxPageParam
;
import
com.wecloud.im.param.ImInboxQueryVo
;
import
com.wecloud.im.service.ImInboxService
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Add
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Update
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 消息收件箱表 控制器
*
* @author wei
* @since 2021-05-06
*/
@Slf4j
@RestController
@RequestMapping
(
"/imInbox"
)
@Api
(
value
=
"消息收件箱表API"
,
tags
=
{
"消息收件箱表"
})
public
class
ImInboxController
extends
BaseController
{
@Autowired
private
ImInboxService
imInboxService
;
/**
* 添加消息收件箱表
*/
@PostMapping
(
"/add"
)
@OperationLog
(
name
=
"添加消息收件箱表"
,
type
=
OperationLogType
.
ADD
)
@ApiOperation
(
value
=
"添加消息收件箱表"
)
public
ApiResult
<
Boolean
>
addImInbox
(
@Validated
(
Add
.
class
)
@RequestBody
ImInbox
imInbox
)
throws
Exception
{
boolean
flag
=
imInboxService
.
saveImInbox
(
imInbox
);
return
ApiResult
.
result
(
flag
);
}
/**
* 修改消息收件箱表
*/
@PostMapping
(
"/update"
)
@OperationLog
(
name
=
"修改消息收件箱表"
,
type
=
OperationLogType
.
UPDATE
)
@ApiOperation
(
value
=
"修改消息收件箱表"
)
public
ApiResult
<
Boolean
>
updateImInbox
(
@Validated
(
Update
.
class
)
@RequestBody
ImInbox
imInbox
)
throws
Exception
{
boolean
flag
=
imInboxService
.
updateImInbox
(
imInbox
);
return
ApiResult
.
result
(
flag
);
}
/**
* 删除消息收件箱表
*/
@PostMapping
(
"/delete/{id}"
)
@OperationLog
(
name
=
"删除消息收件箱表"
,
type
=
OperationLogType
.
DELETE
)
@ApiOperation
(
value
=
"删除消息收件箱表"
)
public
ApiResult
<
Boolean
>
deleteImInbox
(
@PathVariable
(
"id"
)
Long
id
)
throws
Exception
{
boolean
flag
=
imInboxService
.
deleteImInbox
(
id
);
return
ApiResult
.
result
(
flag
);
}
/**
* 获取消息收件箱表详情
*/
@GetMapping
(
"/info/{id}"
)
@OperationLog
(
name
=
"消息收件箱表详情"
,
type
=
OperationLogType
.
INFO
)
@ApiOperation
(
value
=
"消息收件箱表详情"
)
public
ApiResult
<
ImInboxQueryVo
>
getImInbox
(
@PathVariable
(
"id"
)
Long
id
)
throws
Exception
{
ImInboxQueryVo
imInboxQueryVo
=
imInboxService
.
getImInboxById
(
id
);
return
ApiResult
.
ok
(
imInboxQueryVo
);
}
/**
* 消息收件箱表分页列表
*/
@PostMapping
(
"/getPageList"
)
@OperationLog
(
name
=
"消息收件箱表分页列表"
,
type
=
OperationLogType
.
PAGE
)
@ApiOperation
(
value
=
"消息收件箱表分页列表"
)
public
ApiResult
<
Paging
<
ImInboxQueryVo
>>
getImInboxPageList
(
@Validated
@RequestBody
ImInboxPageParam
imInboxPageParam
)
throws
Exception
{
Paging
<
ImInboxQueryVo
>
paging
=
imInboxService
.
getImInboxPageList
(
imInboxPageParam
);
return
ApiResult
.
ok
(
paging
);
}
}
common/src/main/java/com/wecloud/im/entity/ImInbox.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.geekidea.springbootplus.framework.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.util.Date
;
/**
* 消息收件箱表
*
* @author wei
* @since 2021-05-06
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"im_Inbox"
)
@ApiModel
(
value
=
"ImInbox对象"
)
public
class
ImInbox
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@NotNull
(
message
=
"收件id不能为空"
)
@ApiModelProperty
(
"收件id"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
INPUT
)
private
Long
id
;
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
"修改时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"接收时间"
)
private
Date
receiverDate
;
@NotNull
(
message
=
"应用appid不能为空"
)
@ApiModelProperty
(
"应用appid"
)
private
Long
fkAppid
;
@NotNull
(
message
=
"接收客户端id不能为空"
)
@ApiModelProperty
(
"接收客户端id"
)
private
Long
receiver
;
@NotNull
(
message
=
"消息id不能为空"
)
@ApiModelProperty
(
"消息id"
)
private
Long
fkMsgId
;
@ApiModelProperty
(
"0未读; 1已读"
)
private
Integer
readMsg
;
@ApiModelProperty
(
"会话id"
)
private
Long
fkConversationId
;
}
common/src/main/java/com/wecloud/im/enums/PlainTypeStatusEnum.java
deleted
100644 → 0
View file @
9271c171
package
com
.
wecloud
.
im
.
enums
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 状态,0-审核中,1-进行中,2-已完成,99-取消
*/
@Getter
@AllArgsConstructor
public
enum
PlainTypeStatusEnum
implements
BaseEnum
{
OK
(
0
,
"正常"
),
DISABLE
(
1
,
"禁用"
),
CANCEL
(
99
,
"删除"
);
/**
* 编号
*/
private
final
Integer
code
;
/**
* 名称
*/
private
final
String
desc
;
}
common/src/main/java/com/wecloud/im/mapper/ImInboxMapper.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.param.ImInboxPageParam
;
import
com.wecloud.im.param.ImInboxQueryVo
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.io.Serializable
;
/**
* 消息收件箱表 Mapper 接口
*
* @author wei
* @since 2021-05-06
*/
@Repository
public
interface
ImInboxMapper
extends
BaseMapper
<
ImInbox
>
{
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImInboxQueryVo
getImInboxById
(
Serializable
id
);
/**
* 获取分页对象
*
* @param page
* @param imInboxPageParam
* @return
*/
IPage
<
ImInboxQueryVo
>
getImInboxPageList
(
@Param
(
"page"
)
Page
page
,
@Param
(
"param"
)
ImInboxPageParam
imInboxPageParam
);
}
common/src/main/java/com/wecloud/im/param/ImInboxPageParam.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
param
;
import
io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* <pre>
* 消息收件箱表 分页参数对象
* </pre>
*
* @author wei
* @date 2021-05-06
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"消息收件箱表分页参数"
)
public
class
ImInboxPageParam
extends
BasePageOrderParam
{
private
static
final
long
serialVersionUID
=
1L
;
}
common/src/main/java/com/wecloud/im/param/ImInboxQueryVo.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <pre>
* 消息收件箱表 查询结果对象
* </pre>
*
* @author wei
* @date 2021-05-06
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"ImInboxQueryVo对象"
)
public
class
ImInboxQueryVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"收件id"
)
private
Long
id
;
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
"修改时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"接收时间"
)
private
Date
receiverDate
;
@ApiModelProperty
(
"应用appid"
)
private
Long
fkAppid
;
@ApiModelProperty
(
"接收客户端id"
)
private
Long
receiver
;
@ApiModelProperty
(
"消息id"
)
private
Long
fkMsgId
;
@ApiModelProperty
(
"0未读; 1已读"
)
private
Boolean
read
;
@ApiModelProperty
(
"会话id"
)
private
Long
fkConversationId
;
}
\ No newline at end of file
common/src/main/java/com/wecloud/im/service/ImInboxService.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
service
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.param.ImInboxPageParam
;
import
com.wecloud.im.param.ImInboxQueryVo
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
/**
* 消息收件箱表 服务类
*
* @author wei
* @since 2021-05-06
*/
public
interface
ImInboxService
extends
BaseService
<
ImInbox
>
{
/**
* 保存
*
* @param imInbox
* @return
* @throws Exception
*/
boolean
saveImInbox
(
ImInbox
imInbox
)
throws
Exception
;
/**
* 修改
*
* @param imInbox
* @return
* @throws Exception
*/
boolean
updateImInbox
(
ImInbox
imInbox
)
throws
Exception
;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean
deleteImInbox
(
Long
id
)
throws
Exception
;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
ImInboxQueryVo
getImInboxById
(
Long
id
)
throws
Exception
;
/**
* 获取分页对象
*
* @param imInboxPageParam
* @return
* @throws Exception
*/
Paging
<
ImInboxQueryVo
>
getImInboxPageList
(
ImInboxPageParam
imInboxPageParam
)
throws
Exception
;
}
common/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.mapper.ImInboxMapper
;
import
com.wecloud.im.param.ImInboxPageParam
;
import
com.wecloud.im.param.ImInboxQueryVo
;
import
com.wecloud.im.service.ImInboxService
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* 消息收件箱表 服务实现类
*
* @author wei
* @since 2021-05-06
*/
@Slf4j
@Service
public
class
ImInboxServiceImpl
extends
BaseServiceImpl
<
ImInboxMapper
,
ImInbox
>
implements
ImInboxService
{
@Autowired
private
ImInboxMapper
imInboxMapper
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
saveImInbox
(
ImInbox
imInbox
)
throws
Exception
{
return
super
.
save
(
imInbox
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
updateImInbox
(
ImInbox
imInbox
)
throws
Exception
{
return
super
.
updateById
(
imInbox
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
deleteImInbox
(
Long
id
)
throws
Exception
{
return
super
.
removeById
(
id
);
}
@Override
public
ImInboxQueryVo
getImInboxById
(
Long
id
)
throws
Exception
{
return
imInboxMapper
.
getImInboxById
(
id
);
}
@Override
public
Paging
<
ImInboxQueryVo
>
getImInboxPageList
(
ImInboxPageParam
imInboxPageParam
)
throws
Exception
{
Page
<
ImInboxQueryVo
>
page
=
new
PageInfo
<>(
imInboxPageParam
,
OrderItem
.
desc
(
getLambdaColumn
(
ImInbox:
:
getCreateTime
)));
IPage
<
ImInboxQueryVo
>
iPage
=
imInboxMapper
.
getImInboxPageList
(
page
,
imInboxPageParam
);
return
new
Paging
<
ImInboxQueryVo
>(
iPage
);
}
}
common/src/main/java/com/wecloud/im/tillo/app_ws/WsHandler.java
View file @
4095b386
package
com
.
wecloud
.
im
.
tillo
.
app_ws
;
import
cn.hutool.core.thread.ThreadFactoryBuilder
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.tillo.app_ws.model.WsConstants
;
import
com.wecloud.im.tillo.app_ws.receive.ReadWsData
;
import
com.wecloud.im.tillo.app_ws.service.MangerChannelService
;
...
...
@@ -9,7 +9,6 @@ import io.netty.channel.ChannelHandlerContext;
import
io.netty.channel.SimpleChannelInboundHandler
;
import
io.netty.handler.codec.http.websocketx.TextWebSocketFrame
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
...
...
@@ -30,8 +29,6 @@ import java.util.concurrent.TimeUnit;
public
class
WsHandler
extends
SimpleChannelInboundHandler
<
TextWebSocketFrame
>
{
@Autowired
private
ImMessageService
imMessageService
;
@Resource
private
ReadWsData
readWsData
;
...
...
@@ -54,35 +51,6 @@ public class WsHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
protected
void
channelRead0
(
ChannelHandlerContext
ctx
,
TextWebSocketFrame
msg
)
{
String
data
=
msg
.
text
();
// ImMessage imMessage = new ImMessage();
// imMessage.setId(new Snowflake(1L, 1L).nextId());
//
// imMessage.setCreateTime(new Date());
// imMessage.setWithdrawTime(new Date());
// imMessage.setUpdateDate(new Date());
// imMessage.setFkAppid(0L);
// imMessage.setSender(0L);
// imMessage.setContent(data);
// imMessage.setWithdraw(false);
// imMessage.setEvent(false);
// imMessage.setSystem(false);
// imMessage.setAt("");
// imMessage.setSendStatus(0);
// imMessage.setFkConversationId(0L);
//
// imMessageService.save(imMessage);
//
// JsonMapper jsonMapper = new JsonMapper();
//
// try {
// JsonNode jsonNode = jsonMapper.readTree(data);
// int i = 0;
// } catch (JsonProcessingException e) {
// e.printStackTrace();
// }
// ChannelFuture channelFuture = ctx.writeAndFlush(new TextWebSocketFrame(data));
try
{
if
(
data
.
isEmpty
())
{
return
;
...
...
common/src/main/java/com/wecloud/im/tillo/app_ws/receive/ReadWsData.java
View file @
4095b386
...
...
@@ -53,7 +53,6 @@ public class ReadWsData {
// ReceiveModel requestModel = JSON.parseObject(data, ReceiveModel.class);
JsonMapper
jsonMapper
=
new
JsonMapper
();
ReceiveModel
receiveModel
=
null
;
...
...
@@ -67,8 +66,10 @@ public class ReadWsData {
}
try
{
// User user = userService.findById(userId);
this
.
doProcess
(
language
,
receiveModel
,
ctx
);
WsRequestCmdEnum
wsRequestUriPathEnum
=
WsRequestCmdEnum
.
getByCode
(
receiveModel
.
getCmd
());
// 使用策略模式, 根据不同类型请求调用不同实现类
AbstractReceiveStrategy
receiveStrategy
=
receiveStrategyContext
.
getStrategy
(
wsRequestUriPathEnum
);
receiveStrategy
.
process
(
receiveModel
,
language
,
ctx
,
data
);
}
catch
(
Exception
e
)
{
log
.
error
(
"系统繁忙:"
+
data
+
",appKey:"
+
appKey
+
",clientId:"
+
clientId
,
e
);
...
...
@@ -77,12 +78,5 @@ public class ReadWsData {
}
private
void
doProcess
(
String
language
,
ReceiveModel
requestModel
,
ChannelHandlerContext
ctx
)
{
WsRequestCmdEnum
wsRequestUriPathEnum
=
WsRequestCmdEnum
.
getByCode
(
requestModel
.
getCmd
());
// 使用策略模式, 根据不同类型请求调用不同实现类
AbstractReceiveStrategy
receiveStrategy
=
receiveStrategyContext
.
getStrategy
(
wsRequestUriPathEnum
);
receiveStrategy
.
process
(
requestModel
,
language
,
ctx
);
}
}
common/src/main/java/com/wecloud/im/tillo/app_ws/sender/WsWriter.java
0 → 100644
View file @
4095b386
package
com
.
wecloud
.
im
.
tillo
.
app_ws
.
sender
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
@Service
@Slf4j
public
class
WsWriter
{
}
common/src/main/java/com/wecloud/im/tillo/app_ws/strategy/AbstractReceiveStrategy.java
View file @
4095b386
...
...
@@ -19,5 +19,5 @@ public abstract class AbstractReceiveStrategy {
* @param language
* @throws Exception
*/
abstract
public
void
process
(
ReceiveModel
requestModel
,
String
language
,
ChannelHandlerContext
ctx
);
abstract
public
void
process
(
ReceiveModel
requestModel
,
String
language
,
ChannelHandlerContext
ctx
,
String
data
);
}
common/src/main/java/com/wecloud/im/tillo/app_ws/strategy/ReceiveStrategyProcessor.java
View file @
4095b386
...
...
@@ -25,7 +25,7 @@ import java.util.Set;
public
class
ReceiveStrategyProcessor
implements
BeanFactoryPostProcessor
{
// 扫码注解的包路径
private
static
final
String
STRATEGY_PACK
=
"com.
sql.tillo.app_ws.strategy,com.sql.tillo.app_ws.process
"
;
private
static
final
String
STRATEGY_PACK
=
"com.
wecloud.im.tillo.app_ws.strategy.concrete
"
;
@Override
public
void
postProcessBeanFactory
(
ConfigurableListableBeanFactory
configurableListableBeanFactory
)
throws
BeansException
{
...
...
common/src/main/java/com/wecloud/im/tillo/app_ws/strategy/concrete/SingleConcreteReceiveStrategy.java
View file @
4095b386
package
com
.
wecloud
.
im
.
tillo
.
app_ws
.
strategy
.
concrete
;
import
cn.hutool.core.lang.Snowflake
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.json.JsonMapper
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImInboxService
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.tillo.app_ws.annotation.ReceiveTypeAnnotation
;
import
com.wecloud.im.tillo.app_ws.enums.WsRequestCmdEnum
;
import
com.wecloud.im.tillo.app_ws.model.request.ReceiveModel
;
import
com.wecloud.im.tillo.app_ws.service.MangerChannelService
;
import
com.wecloud.im.tillo.app_ws.strategy.AbstractReceiveStrategy
;
import
io.netty.channel.ChannelHandlerContext
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
/**
* @Description 处理app单聊消息
*/
...
...
@@ -16,9 +30,65 @@ import org.springframework.stereotype.Service;
@Slf4j
public
class
SingleConcreteReceiveStrategy
extends
AbstractReceiveStrategy
{
@Autowired
private
ImMessageService
imMessageService
;
@Autowired
private
ImInboxService
imInboxService
;
@Autowired
private
ImApplicationService
imApplicationService
;
@Override
public
void
process
(
ReceiveModel
requestModel
,
String
language
,
ChannelHandlerContext
ctx
)
{
public
void
process
(
ReceiveModel
requestModel
,
String
language
,
ChannelHandlerContext
ctx
,
String
data
)
{
String
appKey
=
ctx
.
channel
().
attr
(
MangerChannelService
.
APP_KEY
).
get
();
String
clientId
=
ctx
.
channel
().
attr
(
MangerChannelService
.
CLIENT_ID
).
get
();
ImApplication
imApplication
=
imApplicationService
.
getOne
(
new
QueryWrapper
<
ImApplication
>().
lambda
()
.
eq
(
ImApplication:
:
getAppKey
,
appKey
));
JsonMapper
jsonMapper
=
new
JsonMapper
();
String
content
=
null
;
Long
toConversation
=
Long
.
valueOf
(
requestModel
.
getData
().
get
(
"toConversation"
).
toString
());
long
messageId
=
new
Snowflake
(
1L
,
1L
).
nextId
();
long
imInboxId
=
new
Snowflake
(
1L
,
1L
).
nextId
();
try
{
content
=
jsonMapper
.
writeValueAsString
(
requestModel
.
getData
());
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
// 保存离线消息
ImMessage
imMessage
=
new
ImMessage
();
imMessage
.
setId
(
messageId
);
imMessage
.
setCreateTime
(
new
Date
());
// imMessage.setWithdrawTime(new Date());
// imMessage.setUpdateDate(new Date());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
0L
);
imMessage
.
setContent
(
content
);
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
false
);
imMessage
.
setSystem
(
false
);
// imMessage.setAt("");
imMessage
.
setSendStatus
(
0
);
imMessage
.
setFkConversationId
(
toConversation
);
imMessageService
.
save
(
imMessage
);
// 向接收方推送
// ChannelFuture channelFuture = ctx.writeAndFlush(new TextWebSocketFrame(data));
ImInbox
imInbox
=
new
ImInbox
();
imInbox
.
setId
(
imInboxId
);
imInbox
.
setCreateTime
(
new
Date
());
// imInbox.setUpdateTime(new Date());
// imInbox.setReceiverDate(new Date());
imInbox
.
setFkAppid
(
123L
);
imInbox
.
setReceiver
(
12L
);
imInbox
.
setFkMsgId
(
messageId
);
imInbox
.
setReadMsg
(
0
);
imInbox
.
setFkConversationId
(
toConversation
);
imInboxService
.
save
(
imInbox
);
}
}
common/src/main/resources/mapper/ImInboxMapper.xml
0 → 100644
View file @
4095b386
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.wecloud.im.mapper.ImInboxMapper"
>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id
, create_time, update_time, receiver_date, fk_appid, receiver, fk_msg_id, read, fk_conversation_id
</sql>
<select
id=
"getImInboxById"
resultType=
"com.wecloud.im.param.ImInboxQueryVo"
>
select
<include
refid=
"Base_Column_List"
/>
from im_Inbox where id = #{id}
</select>
<select
id=
"getImInboxPageList"
parameterType=
"com.wecloud.im.param.ImInboxPageParam"
resultType=
"com.wecloud.im.param.ImInboxQueryVo"
>
select
<include
refid=
"Base_Column_List"
/>
from im_Inbox
</select>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment