Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-communication
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
xingmin
yd-communication
Commits
c0fdf132
Commit
c0fdf132
authored
Aug 31, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
aa7056c6
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
174 additions
and
13 deletions
+174
-13
yd-communication-api/src/main/java/com/yd/communication/api/controller/ApiCoSessionController.java
+23
-0
yd-communication-api/src/main/java/com/yd/communication/api/service/ApiCoSessionService.java
+4
-0
yd-communication-api/src/main/java/com/yd/communication/api/service/impl/ApiCoSessionServiceImpl.java
+62
-6
yd-communication-feign/src/main/java/com/yd/communication/feign/client/ApiCoSessionFeignClient.java
+20
-1
yd-communication-feign/src/main/java/com/yd/communication/feign/dto/RoomLinkDTO.java
+17
-0
yd-communication-feign/src/main/java/com/yd/communication/feign/enums/RedisEnum.java
+1
-1
yd-communication-feign/src/main/java/com/yd/communication/feign/fallback/ApiCoSessionFeignFallbackFactory.java
+5
-0
yd-communication-feign/src/main/java/com/yd/communication/feign/request/SetLinkFailureRequest.java
+11
-0
yd-communication-feign/src/main/java/com/yd/communication/feign/response/CreateResponse.java
+6
-5
yd-communication-feign/src/main/java/com/yd/communication/feign/response/GetLinkStatusResponse.java
+13
-0
yd-communication-feign/src/main/java/com/yd/communication/feign/response/SetLinkFailureResponse.java
+12
-0
No files found.
yd-communication-api/src/main/java/com/yd/communication/api/controller/ApiCoSessionController.java
View file @
c0fdf132
...
@@ -57,6 +57,29 @@ public class ApiCoSessionController implements ApiCoSessionFeignClient {
...
@@ -57,6 +57,29 @@ public class ApiCoSessionController implements ApiCoSessionFeignClient {
}
}
/**
/**
* 获取房间链接状态信息
*
* @param roomId 房间号
* @param roomPwd 房间密码
* @return
*/
@Override
public
Result
<
GetLinkStatusResponse
>
getLinkStatus
(
String
roomId
,
String
roomPwd
)
{
return
apiCoSessionService
.
getLinkStatus
(
roomId
,
roomPwd
);
}
/**
* 设置房间链接状态为失效
*
* @param request 加入会话请求
* @return 会话详情
*/
@Override
public
Result
<
SetLinkFailureResponse
>
setLinkFailure
(
SetLinkFailureRequest
request
)
{
return
apiCoSessionService
.
setLinkFailure
(
request
);
}
/**
* 判断资源创建者和参与者是否是同一个人(供参与者调用)
* 判断资源创建者和参与者是否是同一个人(供参与者调用)
*
*
* @param roomId 房间号
* @param roomId 房间号
...
...
yd-communication-api/src/main/java/com/yd/communication/api/service/ApiCoSessionService.java
View file @
c0fdf132
...
@@ -31,5 +31,9 @@ public interface ApiCoSessionService {
...
@@ -31,5 +31,9 @@ public interface ApiCoSessionService {
Result
<
SessionDetailResponse
>
get
(
String
roomId
,
String
roomPwd
);
Result
<
SessionDetailResponse
>
get
(
String
roomId
,
String
roomPwd
);
Result
<
GetLinkStatusResponse
>
getLinkStatus
(
String
roomId
,
String
roomPwd
);
Result
<
SetLinkFailureResponse
>
setLinkFailure
(
SetLinkFailureRequest
request
);
Result
<
Boolean
>
isMy
(
String
roomId
,
String
roomPwd
,
HttpServletRequest
httpRequest
);
Result
<
Boolean
>
isMy
(
String
roomId
,
String
roomPwd
,
HttpServletRequest
httpRequest
);
}
}
yd-communication-api/src/main/java/com/yd/communication/api/service/impl/ApiCoSessionServiceImpl.java
View file @
c0fdf132
...
@@ -13,6 +13,7 @@ import com.yd.common.utils.RedisUtil;
...
@@ -13,6 +13,7 @@ import com.yd.common.utils.RedisUtil;
import
com.yd.communication.api.service.ApiCoSessionService
;
import
com.yd.communication.api.service.ApiCoSessionService
;
import
com.yd.communication.api.utils.ClientInfoUtils
;
import
com.yd.communication.api.utils.ClientInfoUtils
;
import
com.yd.communication.api.utils.QRCodeUtils
;
import
com.yd.communication.api.utils.QRCodeUtils
;
import
com.yd.communication.feign.dto.RoomLinkDTO
;
import
com.yd.communication.feign.dto.RoomRedisInfoDTO
;
import
com.yd.communication.feign.dto.RoomRedisInfoDTO
;
import
com.yd.communication.feign.enums.CoSessionStatusEnum
;
import
com.yd.communication.feign.enums.CoSessionStatusEnum
;
import
com.yd.communication.feign.enums.ControlHolderTypeEnum
;
import
com.yd.communication.feign.enums.ControlHolderTypeEnum
;
...
@@ -183,6 +184,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
...
@@ -183,6 +184,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
// 获取 Token(调用 /user/generate/token)
// 获取 Token(调用 /user/generate/token)
String
token
=
null
;
String
token
=
null
;
String
name
=
null
;
GenerateTokenResponse
tokenResp
=
null
;
GenerateTokenResponse
tokenResp
=
null
;
try
{
try
{
GenerateTokenRequest
tokenRequest
=
new
GenerateTokenRequest
();
GenerateTokenRequest
tokenRequest
=
new
GenerateTokenRequest
();
...
@@ -210,6 +212,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
...
@@ -210,6 +212,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
if
(
data
!=
null
)
{
if
(
data
!=
null
)
{
tokenResp
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
data
),
GenerateTokenResponse
.
class
);
tokenResp
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
data
),
GenerateTokenResponse
.
class
);
token
=
tokenResp
.
getToken
();
token
=
tokenResp
.
getToken
();
name
=
tokenResp
.
getName
();
}
}
}
}
}
}
...
@@ -237,6 +240,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
...
@@ -237,6 +240,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
roomRedisInfoDTO
.
setControlHolderId
(
session
.
getControlHolderId
());
roomRedisInfoDTO
.
setControlHolderId
(
session
.
getControlHolderId
());
roomRedisInfoDTO
.
setRoomId
(
roomId
);
roomRedisInfoDTO
.
setRoomId
(
roomId
);
roomRedisInfoDTO
.
setRoomPwd
(
roomPwd
);
roomRedisInfoDTO
.
setRoomPwd
(
roomPwd
);
roomRedisInfoDTO
.
setName
(
name
);
redisUtil
.
setCacheObject
(
RedisEnum
.
ROOM
.
getPrefix
()
+
roomId
+
":"
+
roomPwd
,
roomRedisInfoDTO
,
redisUtil
.
setCacheObject
(
RedisEnum
.
ROOM
.
getPrefix
()
+
roomId
+
":"
+
roomPwd
,
roomRedisInfoDTO
,
RedisEnum
.
ROOM
.
getTimeout
(),
RedisEnum
.
ROOM
.
getTimeUnit
());
RedisEnum
.
ROOM
.
getTimeout
(),
RedisEnum
.
ROOM
.
getTimeUnit
());
log
.
info
(
"【创建会话-内部】Redis缓存已设置, key={}"
,
RedisEnum
.
ROOM
.
getPrefix
()
+
roomId
);
log
.
info
(
"【创建会话-内部】Redis缓存已设置, key={}"
,
RedisEnum
.
ROOM
.
getPrefix
()
+
roomId
);
...
@@ -335,11 +339,14 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
...
@@ -335,11 +339,14 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
session
.
setRoomLink
(
roomLink
);
session
.
setRoomLink
(
roomLink
);
iCoSessionService
.
saveOrUpdate
(
session
);
iCoSessionService
.
saveOrUpdate
(
session
);
// 设置房间链接失效时间(用于扫码和链接直接访问)
// 设置房间链接失效时间(用于扫码和链接直接访问,默认2小时)
// redisUtil.setCacheObject(RedisEnum.ROOM_LINK.getPrefix() + session.getRoomId() + ":" + session.getRoomPwd(),
RoomLinkDTO
roomLinkDTO
=
new
RoomLinkDTO
();
// session.getRoomLink(),
roomLinkDTO
.
setQrCodeRoomLink
(
qrCodeRoomLink
);
// RedisEnum.ROOM_LINK.getTimeout(),
roomLinkDTO
.
setRoomLink
(
roomLink
);
// RedisEnum.ROOM_LINK.getTimeUnit());
redisUtil
.
setCacheObject
(
RedisEnum
.
ROOM_LINK
.
getPrefix
()
+
session
.
getRoomId
()
+
":"
+
session
.
getRoomPwd
(),
roomLinkDTO
,
RedisEnum
.
ROOM_LINK
.
getTimeout
(),
RedisEnum
.
ROOM_LINK
.
getTimeUnit
());
// 计算链接失效时间点
// 计算链接失效时间点
long
expireMillis
=
RedisEnum
.
ROOM_LINK
.
getTimeUnit
().
toMillis
(
RedisEnum
.
ROOM_LINK
.
getTimeout
());
long
expireMillis
=
RedisEnum
.
ROOM_LINK
.
getTimeUnit
().
toMillis
(
RedisEnum
.
ROOM_LINK
.
getTimeout
());
...
@@ -353,7 +360,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
...
@@ -353,7 +360,7 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
response
.
setStatus
(
session
.
getStatus
());
response
.
setStatus
(
session
.
getStatus
());
response
.
setRoomLink
(
roomLink
);
response
.
setRoomLink
(
roomLink
);
response
.
setRoomQrCode
(
roomQrCodeUrl
);
response
.
setRoomQrCode
(
roomQrCodeUrl
);
//
response.setExpirationTime(expirationDate);
response
.
setExpirationTime
(
expirationDate
);
log
.
info
(
"【创建会话】成功,roomId={}, sessionBizId={}"
,
session
.
getRoomId
(),
session
.
getCoSessionBizId
());
log
.
info
(
"【创建会话】成功,roomId={}, sessionBizId={}"
,
session
.
getRoomId
(),
session
.
getCoSessionBizId
());
return
Result
.
success
(
response
);
return
Result
.
success
(
response
);
...
@@ -782,6 +789,55 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
...
@@ -782,6 +789,55 @@ public class ApiCoSessionServiceImpl implements ApiCoSessionService {
}
}
/**
/**
* 获取房间链接状态信息
*
* @param roomId 房间号
* @param roomPwd 房间密码
* @return
*/
@Override
public
Result
<
GetLinkStatusResponse
>
getLinkStatus
(
String
roomId
,
String
roomPwd
)
{
if
(
StringUtils
.
isBlank
(
roomId
))
{
throw
new
BusinessException
(
"房间号不能为空"
);
}
if
(
StringUtils
.
isBlank
(
roomPwd
))
{
throw
new
BusinessException
(
"房间密码不能为空"
);
}
RoomRedisInfoDTO
roomRedisInfoDTO
=
redisUtil
.
getCacheObject
(
RedisEnum
.
ROOM
.
getPrefix
()
+
roomId
+
":"
+
roomPwd
,
RoomRedisInfoDTO
.
class
);
GetLinkStatusResponse
response
=
new
GetLinkStatusResponse
();
response
.
setReportOwnerName
(
roomRedisInfoDTO
!=
null
?
roomRedisInfoDTO
.
getName
()
:
""
);
RoomLinkDTO
roomLinkDTO
=
redisUtil
.
getCacheObject
(
RedisEnum
.
ROOM_LINK
.
getPrefix
()
+
roomId
+
":"
+
roomPwd
,
RoomLinkDTO
.
class
);
if
(
roomLinkDTO
==
null
)
{
//访问链接已失效
return
Result
.
fail
(
ResultCode
.
LINK_INVALID
.
getCode
(),
ResultCode
.
LINK_INVALID
.
getMessage
(),
response
);
}
return
Result
.
success
(
response
);
}
/**
* 设置房间链接状态为失效
*
* @param request 加入会话请求
* @return 会话详情
*/
@Override
public
Result
<
SetLinkFailureResponse
>
setLinkFailure
(
SetLinkFailureRequest
request
)
{
if
(
StringUtils
.
isBlank
(
request
.
getRoomId
()))
{
throw
new
BusinessException
(
"房间号不能为空"
);
}
if
(
StringUtils
.
isBlank
(
request
.
getRoomPwd
()))
{
throw
new
BusinessException
(
"房间密码不能为空"
);
}
//删除
redisUtil
.
deleteObject
(
RedisEnum
.
ROOM_LINK
.
getPrefix
()
+
request
.
getRoomId
()
+
":"
+
request
.
getRoomPwd
());
RoomRedisInfoDTO
roomRedisInfoDTO
=
redisUtil
.
getCacheObject
(
RedisEnum
.
ROOM
.
getPrefix
()
+
request
.
getRoomId
()
+
":"
+
request
.
getRoomPwd
(),
RoomRedisInfoDTO
.
class
);
SetLinkFailureResponse
response
=
new
SetLinkFailureResponse
();
response
.
setReportOwnerName
(
roomRedisInfoDTO
!=
null
?
roomRedisInfoDTO
.
getName
()
:
""
);
return
Result
.
success
(
response
);
}
/**
* 判断资源创建者和参与者是否是同一个人
* 判断资源创建者和参与者是否是同一个人
*/
*/
@Override
@Override
...
...
yd-communication-feign/src/main/java/com/yd/communication/feign/client/ApiCoSessionFeignClient.java
View file @
c0fdf132
...
@@ -7,7 +7,6 @@ import com.yd.communication.feign.response.*;
...
@@ -7,7 +7,6 @@ import com.yd.communication.feign.response.*;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
...
@@ -50,6 +49,26 @@ public interface ApiCoSessionFeignClient {
...
@@ -50,6 +49,26 @@ public interface ApiCoSessionFeignClient {
@RequestParam
(
"roomPwd"
)
String
roomPwd
);
@RequestParam
(
"roomPwd"
)
String
roomPwd
);
/**
/**
* 获取房间链接状态信息
*
* @param roomId 房间号
* @param roomPwd 房间密码
* @return
*/
@GetMapping
(
"/link/status"
)
Result
<
GetLinkStatusResponse
>
getLinkStatus
(
@RequestParam
(
"roomId"
)
String
roomId
,
@RequestParam
(
"roomPwd"
)
String
roomPwd
);
/**
* 设置房间链接状态为失效
*
* @param request 加入会话请求
* @return 会话详情
*/
@PostMapping
(
"/set/link/failure"
)
Result
<
SetLinkFailureResponse
>
setLinkFailure
(
@Validated
@RequestBody
SetLinkFailureRequest
request
);
/**
* 判断资源创建者和参与者是否是同一个人(供参与者调用)
* 判断资源创建者和参与者是否是同一个人(供参与者调用)
*
*
* @param roomId 房间号
* @param roomId 房间号
...
...
yd-communication-feign/src/main/java/com/yd/communication/feign/dto/RoomLinkDTO.java
0 → 100644
View file @
c0fdf132
package
com
.
yd
.
communication
.
feign
.
dto
;
import
lombok.Data
;
@Data
public
class
RoomLinkDTO
{
/**
* 纯链接
*/
private
String
roomLink
;
/**
* 二维码里面的链接
*/
private
String
qrCodeRoomLink
;
}
yd-communication-feign/src/main/java/com/yd/communication/feign/enums/RedisEnum.java
View file @
c0fdf132
...
@@ -12,7 +12,7 @@ public enum RedisEnum {
...
@@ -12,7 +12,7 @@ public enum RedisEnum {
//协同房间缓存信息redis参数
//协同房间缓存信息redis参数
ROOM
(
RedisConstants
.
ROOM_KEY_PREFIX
,
1
,
TimeUnit
.
DAYS
),
ROOM
(
RedisConstants
.
ROOM_KEY_PREFIX
,
1
,
TimeUnit
.
DAYS
),
//房间链接缓存信息redis参数
//房间链接缓存信息redis参数
ROOM_LINK
(
RedisConstants
.
ROOM_LINK_KEY_PREFIX
,
120
,
TimeUnit
.
DAY
S
),
ROOM_LINK
(
RedisConstants
.
ROOM_LINK_KEY_PREFIX
,
120
,
TimeUnit
.
MINUTE
S
),
//code置换资源创建者token的缓存信息
//code置换资源创建者token的缓存信息
;
;
...
...
yd-communication-feign/src/main/java/com/yd/communication/feign/fallback/ApiCoSessionFeignFallbackFactory.java
View file @
c0fdf132
...
@@ -31,6 +31,11 @@ public class ApiCoSessionFeignFallbackFactory implements FallbackFactory<ApiCoSe
...
@@ -31,6 +31,11 @@ public class ApiCoSessionFeignFallbackFactory implements FallbackFactory<ApiCoSe
}
}
@Override
@Override
public
Result
<
GetLinkStatusResponse
>
getLinkStatus
(
String
roomId
,
String
roomPwd
)
{
return
null
;
}
@Override
public
Result
<
Boolean
>
isMy
(
String
roomId
,
String
roomPwd
,
HttpServletRequest
httpRequest
)
{
public
Result
<
Boolean
>
isMy
(
String
roomId
,
String
roomPwd
,
HttpServletRequest
httpRequest
)
{
return
null
;
return
null
;
}
}
...
...
yd-communication-feign/src/main/java/com/yd/communication/feign/request/SetLinkFailureRequest.java
0 → 100644
View file @
c0fdf132
package
com
.
yd
.
communication
.
feign
.
request
;
import
lombok.Data
;
@Data
public
class
SetLinkFailureRequest
{
private
String
roomId
;
private
String
roomPwd
;
}
yd-communication-feign/src/main/java/com/yd/communication/feign/response/CreateResponse.java
View file @
c0fdf132
...
@@ -41,9 +41,9 @@ public class CreateResponse {
...
@@ -41,9 +41,9 @@ public class CreateResponse {
*/
*/
private
String
roomLink
;
private
String
roomLink
;
//
/**
/**
//
* 链接失效时间
* 链接失效时间
//
*/
*/
//
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm"
,
timezone
=
"GMT+8"
)
//
private Date expirationTime;
private
Date
expirationTime
;
}
}
\ No newline at end of file
yd-communication-feign/src/main/java/com/yd/communication/feign/response/GetLinkStatusResponse.java
0 → 100644
View file @
c0fdf132
package
com
.
yd
.
communication
.
feign
.
response
;
import
lombok.Data
;
@Data
public
class
GetLinkStatusResponse
{
/**
* 报告归属人姓名
*/
private
String
reportOwnerName
;
}
yd-communication-feign/src/main/java/com/yd/communication/feign/response/SetLinkFailureResponse.java
0 → 100644
View file @
c0fdf132
package
com
.
yd
.
communication
.
feign
.
response
;
import
lombok.Data
;
@Data
public
class
SetLinkFailureResponse
{
/**
* 报告归属人姓名
*/
private
String
reportOwnerName
;
}
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