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
45a0897d
Commit
45a0897d
authored
Feb 24, 2022
by
Future
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
非sdk
parent
01e55a5d
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
132 additions
and
25 deletions
+132
-25
bootstrap/src/test/java/io/geekidea/springbootplus/test/LoginTest.java
+2
-2
core/src/main/java/com/wecloud/im/entity/ImClient.java
+8
-0
core/src/main/java/com/wecloud/im/enums/PlatformEnum.java
+2
-2
core/src/main/java/com/wecloud/im/param/add/ImClientNicknameUpdate.java
+26
-0
core/src/main/java/com/wecloud/im/service/ImClientService.java
+14
-1
core/src/main/java/com/wecloud/im/service/impl/ImClientServiceImpl.java
+13
-13
core/src/main/java/com/wecloud/im/user/param/UserLoginParam.java
+14
-0
core/src/main/java/com/wecloud/im/user/service/UserService.java
+47
-3
core/src/main/resources/mapper/ImClientBlacklistMapper.xml
+3
-3
docs/db/feature-cluster增量.sql
+3
-1
No files found.
bootstrap/src/test/java/io/geekidea/springbootplus/test/LoginTest.java
View file @
45a0897d
...
...
@@ -5,7 +5,7 @@ import cn.hutool.crypto.digest.MD5;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.enums.PlatformE
un
m
;
import
com.wecloud.im.enums.PlatformE
nu
m
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.ws.utils.RedisUtils
;
...
...
@@ -85,7 +85,7 @@ public class LoginTest {
}
// 生成token
String
generateToken
=
JwtUtil
.
generateToken
(
clientId
,
appKey
,
imApplication
.
getAppSecret
(),
Duration
.
ofDays
(
99999
),
PlatformE
un
m
.
WEB
.
getCode
());
String
generateToken
=
JwtUtil
.
generateToken
(
clientId
,
appKey
,
imApplication
.
getAppSecret
(),
Duration
.
ofDays
(
99999
),
PlatformE
nu
m
.
WEB
.
getCode
());
// 保存redis
redisTemplate
.
opsForValue
().
set
(
"client:"
+
imApplication
.
getAppKey
()
+
":"
+
clientId
,
generateToken
);
...
...
core/src/main/java/com/wecloud/im/entity/ImClient.java
View file @
45a0897d
...
...
@@ -61,4 +61,12 @@ public class ImClient extends BaseEntity {
private
String
headPortrait
;
@ApiModelProperty
(
"主昵称"
)
private
String
nickname
;
/**
* 客户端平台
* @see com.wecloud.im.enums.PlatformEnum
*/
@NotNull
(
message
=
"平台不可为空"
)
@ApiModelProperty
(
"客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs"
)
private
Integer
platform
;
}
core/src/main/java/com/wecloud/im/enums/PlatformE
un
m.java
→
core/src/main/java/com/wecloud/im/enums/PlatformE
nu
m.java
View file @
45a0897d
...
...
@@ -2,7 +2,7 @@ package com.wecloud.im.enums;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
public
enum
PlatformE
un
m
implements
BaseEnum
{
public
enum
PlatformE
nu
m
implements
BaseEnum
{
WEB
(
1
,
"web端"
),
ANDROID
(
2
,
"安卓端"
),
...
...
@@ -13,7 +13,7 @@ public enum PlatformEunm implements BaseEnum {
private
final
Integer
code
;
private
final
String
desc
;
PlatformE
un
m
(
Integer
code
,
String
desc
)
{
PlatformE
nu
m
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
...
...
core/src/main/java/com/wecloud/im/param/add/ImClientNicknameUpdate.java
0 → 100644
View file @
45a0897d
package
com
.
wecloud
.
im
.
param
.
add
;
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
;
/**
* @Author wenzhida
* @Date 2022/2/24 18:46
* @Description 修改头像昵称
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"ImClientNicknameUpdate"
)
public
class
ImClientNicknameUpdate
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
-
921593100534519109L
;
@ApiModelProperty
(
"主昵称"
)
private
String
nickname
;
}
core/src/main/java/com/wecloud/im/service/ImClientService.java
View file @
45a0897d
...
...
@@ -10,6 +10,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import
com.wecloud.im.param.add.ImClientHeadPortraitAdd
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.param.add.ImClientNicknameUpdate
;
import
com.wecloud.im.vo.ClientInfoVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.MyInfoVo
;
...
...
@@ -34,7 +35,19 @@ public interface ImClientService extends BaseService<ImClient> {
*/
MyInfoVo
getMyInfo
();
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
throws
Exception
;
/**
* 更新头像
* @param imClientHeadPortraitAdd
* @return
*/
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
);
/**
* 修改昵称
* @param imClientNicknameUpdate
* @return
*/
boolean
updateNickname
(
ImClientNicknameUpdate
imClientNicknameUpdate
);
boolean
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
);
...
...
core/src/main/java/com/wecloud/im/service/impl/ImClientServiceImpl.java
View file @
45a0897d
...
...
@@ -23,6 +23,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import
com.wecloud.im.param.add.ImClientHeadPortraitAdd
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.param.add.ImClientNicknameUpdate
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientService
;
...
...
@@ -62,6 +63,7 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Autowired
private
ImClientMapper
imClientMapper
;
@Autowired
private
ImApplicationService
imApplicationService
;
...
...
@@ -85,15 +87,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
throws
Exception
{
public
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
{
ImClient
curentClient
=
getCurentClient
();
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurentJwtToken
();
// 根据appKey查询appid
// ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
curentClient
.
setHeadPortrait
(
imClientHeadPortraitAdd
.
getHeadPortrait
());
imClientMapper
.
updateById
(
curentClient
);
...
...
@@ -104,15 +99,20 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
boolean
update
HeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAnd
NicknameUpdate
)
{
public
boolean
update
Nickname
(
ImClientNicknameUpdate
imClient
NicknameUpdate
)
{
ImClient
curentClient
=
getCurentClient
();
curentClient
.
setNickname
(
imClientNicknameUpdate
.
getNickname
());
imClientMapper
.
updateById
(
curentClient
);
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurentJwtToken
();
// 根据appKey查询appid
// ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
// 清除client的redis缓存
deleteCacheImClient
(
curentClient
.
getFkAppid
(),
curentClient
.
getClientId
());
return
true
;
}
@Override
public
boolean
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
)
{
ImClient
curentClient
=
getCurentClient
();
curentClient
.
setHeadPortrait
(
imClientHeadPortraitAndNicknameUpdate
.
getHeadPortrait
());
curentClient
.
setNickname
(
imClientHeadPortraitAndNicknameUpdate
.
getNickname
());
imClientMapper
.
updateById
(
curentClient
);
...
...
core/src/main/java/com/wecloud/im/user/param/UserLoginParam.java
View file @
45a0897d
...
...
@@ -30,4 +30,18 @@ public class UserLoginParam implements Serializable {
@ApiModelProperty
(
"密码"
)
private
String
password
;
@NotNull
(
message
=
"appKey不可为空"
)
@ApiModelProperty
(
"appKey"
)
private
String
appKey
;
/**
* 客户端平台
* @see com.wecloud.im.enums.PlatformEnum
*/
@NotNull
(
message
=
"平台不可为空"
)
@ApiModelProperty
(
"客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs"
)
private
Integer
platform
;
@ApiModelProperty
(
"设备推送token"
)
private
String
deviceToken
;
}
core/src/main/java/com/wecloud/im/user/service/UserService.java
View file @
45a0897d
package
com
.
wecloud
.
im
.
user
.
service
;
import
cn.hutool.core.lang.Snowflake
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.enums.FriendStateEnum
;
import
com.wecloud.im.enums.RelationEnum
;
import
com.wecloud.im.enums.VerifySceneEnum
;
import
com.wecloud.im.friend.entity.ImFriend
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAdd
;
import
com.wecloud.im.param.add.ImClientNicknameUpdate
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.user.constant.RedisKeyPrefixConstant
;
...
...
@@ -34,6 +39,7 @@ import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Date
;
...
...
@@ -50,6 +56,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
private
RedisUtils
redisUtils
;
@Autowired
private
ImApplicationService
imApplicationService
;
@Autowired
private
ImClientService
imClientService
;
@Autowired
...
...
@@ -58,6 +67,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
@Autowired
private
ImClientBlacklistService
imClientBlacklistService
;
/**
* 校验手机号码是否可使用
* @param param
...
...
@@ -99,6 +109,11 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
* @param param
*/
public
LoginSuccessDto
loginUser
(
UserLoginParam
param
)
{
// 根据appKey从数据库查询密钥
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
param
.
getAppKey
());
if
(
imApplication
==
null
)
{
throw
new
BusinessException
(
"查无应用信息"
);
}
User
user
=
this
.
getOne
(
new
QueryWrapper
<
User
>().
lambda
()
.
eq
(
User:
:
getPhone
,
param
.
getPhone
()));
if
(
user
==
null
)
{
...
...
@@ -107,6 +122,26 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
if
(!
param
.
getPassword
().
equals
(
AesUtil
.
decrypt
(
user
.
getPassword
())))
{
throw
new
BusinessException
(
"账户或密码错误"
);
}
// 判断client是否存在
ImClient
imClient
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImClient:
:
getPlatform
,
param
.
getPlatform
())
.
eq
(
ImClient:
:
getClientId
,
user
.
getId
()));
if
(
imClient
==
null
)
{
imClient
=
new
ImClient
();
imClient
.
setId
(
new
Snowflake
(
1L
,
1L
).
nextId
());
imClient
.
setFkAppid
(
imApplication
.
getId
());
imClient
.
setClientId
(
user
.
getId
().
toString
());
imClient
.
setHeadPortrait
(
user
.
getHeadPortrait
());
imClient
.
setNickname
(
user
.
getNickname
());
imClient
.
setPlatform
(
param
.
getPlatform
());
imClientService
.
save
(
imClient
);
}
else
{
imClient
.
setPlatform
(
param
.
getPlatform
());
imClientService
.
updateById
(
imClient
);
}
LoginSuccessDto
loginSuccessDto
=
new
LoginSuccessDto
();
BeanUtils
.
copyProperties
(
user
,
loginSuccessDto
);
loginSuccessDto
.
setUserId
(
user
.
getId
().
toString
());
...
...
@@ -176,7 +211,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
*/
public
UserBaseDto
findUser
(
FindUserParam
param
)
{
User
user
=
this
.
getOne
(
new
QueryWrapper
<
User
>().
lambda
()
.
eq
(
User:
:
getPhone
,
param
.
getQueryStr
()));
.
eq
(
User:
:
getPhone
,
param
.
getQueryStr
())
.
or
()
.
eq
(
User:
:
getIdNumber
,
param
.
getQueryStr
()));
if
(
user
==
null
)
{
throw
new
BusinessException
(
"账号不存在"
);
}
...
...
@@ -229,6 +266,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
* 修改头像
* @param param
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
modifyHeadPortrait
(
ModifyHeadPortraitParam
param
)
{
User
user
=
this
.
getById
(
param
.
getUserId
());
if
(
user
==
null
)
{
...
...
@@ -236,12 +274,16 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
}
user
.
setHeadPortrait
(
param
.
getHeadPortrait
());
this
.
updateById
(
user
);
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
=
new
ImClientHeadPortraitAdd
();
imClientHeadPortraitAdd
.
setHeadPortrait
(
param
.
getHeadPortrait
());
imClientService
.
updateHeadPortrait
(
imClientHeadPortraitAdd
);
}
/**
* 修改昵称
* @param param
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
modifyNickname
(
ModifyNicknameParam
param
)
{
User
user
=
this
.
getById
(
param
.
getUserId
());
if
(
user
==
null
)
{
...
...
@@ -249,6 +291,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
}
user
.
setNickname
(
param
.
getNickname
());
this
.
updateById
(
user
);
ImClientNicknameUpdate
imClientNicknameUpdate
=
new
ImClientNicknameUpdate
();
imClientNicknameUpdate
.
setNickname
(
param
.
getNickname
());
imClientService
.
updateNickname
(
imClientNicknameUpdate
);
}
/**
...
...
@@ -261,7 +306,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
throw
new
BusinessException
(
"查无用户"
);
}
User
userByLando
=
this
.
getByLandouNo
(
param
.
getLandouNo
());
if
(
userByLando
=
=
null
)
{
if
(
userByLando
!
=
null
)
{
throw
new
BusinessException
(
"该蓝豆号已被使用,请更换"
);
}
user
.
setIdNumber
(
param
.
getLandouNo
());
...
...
@@ -319,5 +364,4 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
}
while
(
true
);
return
landouNo
;
}
}
core/src/main/resources/mapper/ImClientBlacklistMapper.xml
View file @
45a0897d
...
...
@@ -5,7 +5,7 @@
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id
, create_time, update_time, fk_appid,
fk_client_id_prevent, fk_
client_id_be_prevent
, create_time, update_time, fk_appid,
client_id_prevent,
client_id_be_prevent
</sql>
<select
id=
"getImClientBlacklistById"
resultType=
"com.wecloud.im.param.ImClientBlacklistQueryVo"
>
...
...
@@ -17,8 +17,8 @@
<select
id=
"getImClientBlacklistPageList"
resultType=
"com.wecloud.im.param.ImClientBlacklistQueryVo"
>
SELECT im_client.client_id AS clientIdBePrevent
FROM im_client_blacklist
INNER JOIN im_client ON im_client.id = im_client_blacklist.
fk_
client_id_be_prevent
WHERE im_client_blacklist.
fk_
client_id_prevent = #{clientId}
INNER JOIN im_client ON im_client.id = im_client_blacklist.client_id_be_prevent
WHERE im_client_blacklist.client_id_prevent = #{clientId}
ORDER BY im_client_blacklist.create_time DESC
</select>
...
...
docs/db/feature-cluster增量.sql
View file @
45a0897d
-- 在f
eature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
-- 在f
eature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
...
...
@@ -78,6 +78,8 @@ ALTER TABLE im_conversation_members ADD COLUMN `client_id` varchar(200) DEFAULT
ALTER
TABLE
im_client_blacklist
CHANGE
fk_client_id_prevent
client_id_prevent
varchar
(
32
)
DEFAULT
NULL
COMMENT
'拉黑者'
;
ALTER
TABLE
im_client_blacklist
CHANGE
fk_client_id_be_prevent
client_id_be_prevent
varchar
(
32
)
DEFAULT
NULL
COMMENT
'被拉黑'
;
ALTER
TABLE
im_client
ADD
COLUMN
`platform`
int
DEFAULT
NULL
COMMENT
'平台编码:客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs'
;
CREATE
TABLE
`im_user`
(
`id`
bigint
NOT
NULL
COMMENT
'主键id'
,
...
...
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