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
2b4e9a5e
Commit
2b4e9a5e
authored
Sep 01, 2022
by
南千昊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vip和非vip发送消息数量控制 加好友数量控制
parent
5d51f967
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
66 deletions
+74
-66
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
+22
-38
core/src/main/java/com/wecloud/im/friend/controller/ImFriendController.java
+52
-28
No files found.
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
View file @
2b4e9a5e
package
com
.
wecloud
.
im
.
action
;
package
com
.
wecloud
.
im
.
action
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.netty.channel.Channel
;
import
io.netty.channel.socket.nio.NioSocketChannel
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
@@ -30,12 +7,7 @@ import com.google.common.collect.Lists;
...
@@ -30,12 +7,7 @@ import com.google.common.collect.Lists;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.dispatch.common.BaseRequest
;
import
com.wecloud.dispatch.common.BaseRequest
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.*
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.friend.entity.ImFriend
;
import
com.wecloud.im.friend.entity.ImFriend
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.mq.MqSender
;
import
com.wecloud.im.mq.MqSender
;
...
@@ -47,13 +19,7 @@ import com.wecloud.im.sdk.enums.ChatTypeEnum;
...
@@ -47,13 +19,7 @@ import com.wecloud.im.sdk.enums.ChatTypeEnum;
import
com.wecloud.im.sdk.enums.FriendStateEnum
;
import
com.wecloud.im.sdk.enums.FriendStateEnum
;
import
com.wecloud.im.sdk.enums.GroupRoleEnum
;
import
com.wecloud.im.sdk.enums.GroupRoleEnum
;
import
com.wecloud.im.sdk.enums.MutedEnum
;
import
com.wecloud.im.sdk.enums.MutedEnum
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.*
;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.service.ImConversationService
;
import
com.wecloud.im.service.ImInboxService
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.WsResponse
;
...
@@ -62,6 +28,22 @@ import com.wecloud.pushserver.client.model.constant.MqConstant;
...
@@ -62,6 +28,22 @@ import com.wecloud.pushserver.client.model.constant.MqConstant;
import
com.wecloud.pushserver.client.model.dto.PushDTO
;
import
com.wecloud.pushserver.client.model.dto.PushDTO
;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.SnowflakeUtil
;
import
com.wecloud.utils.SnowflakeUtil
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.netty.channel.Channel
;
import
io.netty.channel.socket.nio.NioSocketChannel
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.*
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
/**
/**
* @Description 普通聊天
* @Description 普通聊天
...
@@ -430,6 +412,7 @@ public class NormalChatAction {
...
@@ -430,6 +412,7 @@ public class NormalChatAction {
imMessageService
.
count
(
Wrappers
.<
ImMessage
>
lambdaQuery
().
eq
(
ImMessage:
:
getFkConversationId
,
imMessageService
.
count
(
Wrappers
.<
ImMessage
>
lambdaQuery
().
eq
(
ImMessage:
:
getFkConversationId
,
conversationId
).
eq
(
ImMessage:
:
getSender
,
imClientSender
.
getId
()).
between
(
ImMessage:
:
getCreateTime
,
getStartTime
(),
getEndTime
()));
conversationId
).
eq
(
ImMessage:
:
getSender
,
imClientSender
.
getId
()).
between
(
ImMessage:
:
getCreateTime
,
getStartTime
(),
getEndTime
()));
if
(!
isVip
)
{
if
(!
isVip
)
{
// 非vip发送消息
// 判断消息发送数量
// 判断消息发送数量
if
(
sendCount
>=
3
)
{
if
(
sendCount
>=
3
)
{
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
...
@@ -441,12 +424,13 @@ public class NormalChatAction {
...
@@ -441,12 +424,13 @@ public class NormalChatAction {
return
false
;
return
false
;
}
}
}
else
{
}
else
{
// vip发送
// 判断消息发送数量
// 判断消息发送数量
if
(
sendCount
>=
3
0
)
{
if
(
sendCount
>=
1
0
)
{
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
ApiCode
.
EXCEED_VIP_QUANTITY_LIMIT
.
getCode
());
responseModel
.
setCode
(
ApiCode
.
EXCEED_VIP_QUANTITY_LIMIT
.
getCode
());
responseModel
.
setMsg
(
"和对方还不是好友,只能发送
三
十条消息"
);
responseModel
.
setMsg
(
"和对方还不是好友,只能发送十条消息"
);
responseModel
.
setReqId
(
reqId
);
responseModel
.
setReqId
(
reqId
);
channelSender
.
sendMsgLocal
((
NioSocketChannel
)
channel
,
responseModel
);
channelSender
.
sendMsgLocal
((
NioSocketChannel
)
channel
,
responseModel
);
return
false
;
return
false
;
...
...
core/src/main/java/com/wecloud/im/friend/controller/ImFriendController.java
View file @
2b4e9a5e
package
com
.
wecloud
.
im
.
friend
.
controller
;
package
com
.
wecloud
.
im
.
friend
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.friend.param.*
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.sdk.enums.FriendStateEnum
;
import
com.wecloud.im.service.ImClientService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
...
@@ -12,36 +19,13 @@ import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils;
...
@@ -12,36 +19,13 @@ import io.geekidea.springbootplus.framework.shiro.util.SecurityUtils;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
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.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.alibaba.fastjson.JSON
;
import
java.util.List
;
import
com.wecloud.im.entity.ImClient
;
import
java.util.Optional
;
import
com.wecloud.im.friend.param.FriendRemarkParam
;
import
com.wecloud.im.friend.param.ImCreateRecommendParam
;
import
com.wecloud.im.friend.param.ImDeleteFriendParam
;
import
com.wecloud.im.friend.param.ImDeleteRecommendParam
;
import
com.wecloud.im.friend.param.ImFriendApplyDto
;
import
com.wecloud.im.friend.param.ImFriendApplyParam
;
import
com.wecloud.im.friend.param.ImFriendApproveParam
;
import
com.wecloud.im.friend.param.ImFriendBaseDto
;
import
com.wecloud.im.friend.param.ImFriendBaseParam
;
import
com.wecloud.im.friend.param.ImFriendPageParam
;
import
com.wecloud.im.friend.param.ImFriendRecommendDto
;
import
com.wecloud.im.friend.param.UnfriendParam
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.sdk.enums.FriendStateEnum
;
import
com.wecloud.im.service.ImClientService
;
/**
/**
* @author lixiaozhong
* @author lixiaozhong
...
@@ -91,9 +75,9 @@ public class ImFriendController extends BaseController {
...
@@ -91,9 +75,9 @@ public class ImFriendController extends BaseController {
if
(
param
==
null
)
{
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
}
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 判断是否为vip
Boolean
isVip
=
getIsVip
(
currentClient
);
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
}
...
@@ -104,11 +88,24 @@ public class ImFriendController extends BaseController {
...
@@ -104,11 +88,24 @@ public class ImFriendController extends BaseController {
if
(
currentClient
.
getId
().
equals
(
friendClient
.
getId
()))
{
if
(
currentClient
.
getId
().
equals
(
friendClient
.
getId
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
}
List
<
ImFriendBaseDto
>
friends
=
imFriendService
.
getFriends
(
currentClient
);
if
(
isVip
){
// 是vip
if
(
friends
.
size
()>=
10
){
throw
new
BusinessException
(
"vip最多只能加10个好友"
);
}
}
else
{
// 不是vip
if
(
friends
.
size
()>=
3
){
throw
new
BusinessException
(
"非vip最多只能加3个好友"
);
}
}
imFriendService
.
applyFriend
(
currentClient
,
friendClient
,
param
.
getFriendName
(),
param
.
getRequestRemark
());
imFriendService
.
applyFriend
(
currentClient
,
friendClient
,
param
.
getFriendName
(),
param
.
getRequestRemark
());
log
.
info
(
"申请添加好友逻辑完成"
);
log
.
info
(
"申请添加好友逻辑完成"
);
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
/**
/**
* 申请添加好友
* 申请添加好友
*/
*/
...
@@ -130,6 +127,19 @@ public class ImFriendController extends BaseController {
...
@@ -130,6 +127,19 @@ public class ImFriendController extends BaseController {
if
(
currentClient
.
getId
().
equals
(
friendClient
.
getId
()))
{
if
(
currentClient
.
getId
().
equals
(
friendClient
.
getId
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
}
Boolean
isVip
=
getIsVip
(
currentClient
);
List
<
ImFriendBaseDto
>
friends
=
imFriendService
.
getFriends
(
currentClient
);
if
(
isVip
){
// 是vip
if
(
friends
.
size
()>=
10
){
throw
new
BusinessException
(
"vip最多只能加10个好友"
);
}
}
else
{
// 不是vip
if
(
friends
.
size
()>=
3
){
throw
new
BusinessException
(
"非vip最多只能加3个好友"
);
}
}
imFriendService
.
applyFriend
(
currentClient
,
friendClient
,
param
.
getFriendName
(),
param
.
getRequestRemark
());
imFriendService
.
applyFriend
(
currentClient
,
friendClient
,
param
.
getFriendName
(),
param
.
getRequestRemark
());
if
(!
param
.
getNeedVerify
())
{
if
(!
param
.
getNeedVerify
())
{
imFriendService
.
approveFriend
(
friendClient
,
currentClient
,
true
,
""
);
imFriendService
.
approveFriend
(
friendClient
,
currentClient
,
true
,
""
);
...
@@ -138,6 +148,20 @@ public class ImFriendController extends BaseController {
...
@@ -138,6 +148,20 @@ public class ImFriendController extends BaseController {
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
private
Boolean
getIsVip
(
ImClient
currentClient
)
{
String
senderAttributesStr
=
currentClient
.
getAttributes
();
JSONObject
senderAttributes
=
new
JSONObject
();
if
(
StringUtils
.
isNotBlank
(
senderAttributesStr
))
{
try
{
senderAttributes
=
JSONObject
.
parseObject
(
senderAttributesStr
);
}
catch
(
Exception
e
)
{
// do nothing is ok
}
}
boolean
isVip
=
Optional
.
ofNullable
(
senderAttributes
.
getBoolean
(
"isVip"
)).
orElse
(
Boolean
.
FALSE
);
return
isVip
;
}
/**
/**
* 待接受的好友请求列表,最多只返回1000个
* 待接受的好友请求列表,最多只返回1000个
*/
*/
...
...
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