Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cmeeting
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
翟斌
cmeeting
Commits
53c8bb27
提交
53c8bb27
authored
8月 19, 2025
作者:
洪东保
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.删除无用代码
2.智能体授权用户查看和保存接口-aigc服务使用
父级
ab6710f3
显示空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
189 行增加
和
16 行删除
+189
-16
src/main/java/com/cmeeting/ad/config/RobotWebSecurityConfig.java
+1
-3
src/main/java/com/cmeeting/ad/filter/RobotJwtAuthenticationTokenFilter.java
+2
-1
src/main/java/com/cmeeting/controller/AgentAuthController.java
+114
-7
src/main/java/com/cmeeting/job/CmeetingJob.java
+1
-4
src/main/java/com/cmeeting/mapper/primary/SysUserSyncCategoryMapper.java
+14
-0
src/main/java/com/cmeeting/mapper/primary/SysUserSyncMapper.java
+3
-0
src/main/java/com/cmeeting/service/ISysUserSyncCategoryService.java
+2
-0
src/main/java/com/cmeeting/service/SysUserSyncService.java
+2
-0
src/main/java/com/cmeeting/service/impl/SysUserSyncCategoryServiceImpl.java
+5
-0
src/main/java/com/cmeeting/service/impl/SysUserSyncServiceImpl.java
+5
-0
src/main/java/com/cmeeting/vo/AgentAuthVO.java
+27
-0
src/main/resources/mapper/primary/AuthMapper.xml
+1
-1
src/main/resources/mapper/primary/SysUserSyncMapper.xml
+12
-0
没有找到文件。
src/main/java/com/cmeeting/ad/config/RobotWebSecurityConfig.java
浏览文件 @
53c8bb27
...
...
@@ -79,8 +79,6 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter {
*/
@Override
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
// 白名单 智能体授权相关
String
[]
api
=
{
"/agent/auth/**"
};
httpSecurity
// 由于使用的是JWT,我们这里不需要csrf
.
csrf
().
disable
()
...
...
@@ -90,7 +88,7 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter {
.
authorizeRequests
()
// 对于登录login 图标 要允许匿名访问
// .antMatchers(customApi).access("@robotJwtCustomTokenFilter.checkToken(request)")
.
antMatchers
(
api
).
anonymous
()
.
antMatchers
(
"/agent/auth/**"
).
anonymous
()
.
antMatchers
(
HttpMethod
.
GET
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/**/*.map"
)
.
permitAll
()
...
...
src/main/java/com/cmeeting/ad/filter/RobotJwtAuthenticationTokenFilter.java
浏览文件 @
53c8bb27
...
...
@@ -47,7 +47,8 @@ public class RobotJwtAuthenticationTokenFilter extends OncePerRequestFilter {
// 定义白名单路径(无需JWT验证的接口)
private
static
final
List
<
String
>
WHITE_LIST
=
Arrays
.
asList
(
"/user/**"
// 登录接口
"/user/**"
,
// 登录接口
"/agent/auth/**"
// 登录接口
);
// 判断路径是否在白名单中(支持Ant风格路径匹配)
...
...
src/main/java/com/cmeeting/controller/AgentAuthController.java
浏览文件 @
53c8bb27
package
com
.
cmeeting
.
controller
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.cmeeting.ad.entity.SysUserSync
;
import
com.cmeeting.constant.CategoryConstant
;
import
com.cmeeting.pojo.CoreModulePermissions
;
import
com.cmeeting.pojo.SysUserSyncCategory
;
import
com.cmeeting.service.IAgentAuthService
;
import
com.cmeeting.service.ISysUserSyncCategoryService
;
import
com.cmeeting.service.SysUserSyncService
;
import
com.cmeeting.util.R
;
import
com.cmeeting.vo.AgentAuthVO
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@RestController
@RequestMapping
(
"/agent/auth"
)
...
...
@@ -15,20 +28,114 @@ public class AgentAuthController {
@Resource
private
IAgentAuthService
iAgentAuthService
;
@Resource
private
SysUserSyncService
sysUserSyncService
;
@Resource
private
ISysUserSyncCategoryService
iSysUserSyncCategoryService
;
@PostMapping
(
"/authedList"
)
public
R
list
(
@RequestBody
@Validated
AgentAuthVO
.
AuthedList
vo
)
{
Page
<
CoreModulePermissions
>
page
=
iAgentAuthService
.
page
(
new
Page
<>(
vo
.
getCurrent
(),
vo
.
getSize
()),
new
LambdaQueryWrapper
<
CoreModulePermissions
>()
.
eq
(
CoreModulePermissions:
:
getTenantId
,
vo
.
getTenantId
()));
List
<
CoreModulePermissions
>
records
=
page
.
getRecords
();
if
(
CollUtil
.
isEmpty
(
records
))
{
return
R
.
ok
();
}
List
<
JSONObject
>
ret
=
new
ArrayList
<>();
Map
<
String
,
String
>
deptMap
=
new
HashMap
<>();
Map
<
String
,
SysUserSync
>
userMap
=
new
HashMap
<>();
List
<
String
>
deptIdList
=
records
.
stream
().
filter
(
e
->
e
.
getType
()
==
0
).
map
(
CoreModulePermissions:
:
getRelId
).
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isNotEmpty
(
deptIdList
))
{
List
<
SysUserSyncCategory
>
deptList
=
iSysUserSyncCategoryService
.
list
(
new
LambdaQueryWrapper
<
SysUserSyncCategory
>()
.
in
(
SysUserSyncCategory:
:
getDeptId
,
deptIdList
)
);
deptMap
=
deptList
.
stream
().
collect
(
Collectors
.
toMap
(
SysUserSyncCategory:
:
getDeptId
,
SysUserSyncCategory:
:
getName
));
}
List
<
String
>
userIdList
=
records
.
stream
().
filter
(
e
->
e
.
getType
()
==
1
).
map
(
CoreModulePermissions:
:
getRelId
).
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isNotEmpty
(
userIdList
))
{
List
<
SysUserSync
>
userList
=
sysUserSyncService
.
listByUserIds
(
userIdList
);
userMap
=
userList
.
stream
().
collect
(
Collectors
.
toMap
(
SysUserSync:
:
getUserId
,
e
->
e
));
}
for
(
CoreModulePermissions
record
:
records
)
{
JSONObject
object
=
JSONUtil
.
parseObj
(
record
);
if
(
record
.
getType
()
==
0
)
{
if
(
deptMap
.
containsKey
(
record
.
getRelId
()))
{
object
.
putOpt
(
"name"
,
deptMap
.
get
(
record
.
getRelId
()));
object
.
putOpt
(
"deptName"
,
deptMap
.
get
(
record
.
getRelId
()));
}
}
else
if
(
record
.
getType
()
==
1
)
{
if
(
userMap
.
containsKey
(
record
.
getRelId
()))
{
object
.
putOpt
(
"name"
,
userMap
.
get
(
record
.
getRelId
()).
getName
());
object
.
putOpt
(
"deptName"
,
userMap
.
get
(
record
.
getRelId
()).
getDepartment
());
}
}
ret
.
add
(
object
);
}
return
R
.
ok
(
ret
);
}
@PostMapping
(
"/userList"
)
public
R
list
(
@RequestBody
@Validated
AgentAuthVO
.
UserList
vo
)
{
List
<
CoreModulePermissions
>
list
=
iAgentAuthService
.
list
(
new
LambdaQueryWrapper
<
CoreModulePermissions
>()
.
eq
(
CoreModulePermissions:
:
getTenantId
,
vo
.
getTenantId
()));
Set
<
String
>
userIdList
=
new
HashSet
<>();
Set
<
String
>
deptIdList
=
new
HashSet
<>();
if
(
CollUtil
.
isNotEmpty
(
list
))
{
deptIdList
=
list
.
stream
().
filter
(
e
->
e
.
getType
()
==
0
).
map
(
CoreModulePermissions:
:
getRelId
).
collect
(
Collectors
.
toSet
());
userIdList
=
list
.
stream
().
filter
(
e
->
e
.
getType
()
==
1
).
map
(
CoreModulePermissions:
:
getRelId
).
collect
(
Collectors
.
toSet
());
}
List
<
SysUserSyncCategory
>
categories
=
new
ArrayList
<>();
List
<
SysUserSync
>
userSyncs
=
new
ArrayList
<>();
if
(
vo
.
getCategoryId
().
equals
(
CategoryConstant
.
ROOT
))
{
categories
=
iSysUserSyncCategoryService
.
selectParentIdNoInId
(
vo
.
getSearch
());
}
else
{
categories
=
iSysUserSyncCategoryService
.
list
(
new
LambdaQueryWrapper
<
SysUserSyncCategory
>()
.
eq
(
SysUserSyncCategory:
:
getParentId
,
vo
.
getCategoryId
())
.
like
(
StrUtil
.
isNotBlank
(
vo
.
getSearch
()),
SysUserSyncCategory:
:
getName
,
vo
.
getSearch
())
.
select
(
SysUserSyncCategory:
:
getDeptId
,
SysUserSyncCategory:
:
getName
)
);
userSyncs
=
sysUserSyncService
.
list
(
new
LambdaQueryWrapper
<
SysUserSync
>()
.
eq
(
SysUserSync:
:
getDeptId
,
vo
.
getCategoryId
())
.
like
(
StrUtil
.
isNotBlank
(
vo
.
getSearch
()),
SysUserSync:
:
getName
,
vo
.
getSearch
())
.
select
(
SysUserSync:
:
getUserId
,
SysUserSync:
:
getName
)
);
}
List
<
JSONObject
>
cateObjects
=
new
ArrayList
<>();
if
(
CollUtil
.
isNotEmpty
(
categories
))
{
for
(
SysUserSyncCategory
category
:
categories
)
{
JSONObject
o
=
new
JSONObject
();
o
.
putOpt
(
"id"
,
category
.
getDeptId
());
o
.
putOpt
(
"name"
,
category
.
getName
());
o
.
putOpt
(
"checked"
,
deptIdList
.
contains
(
category
.
getDeptId
()));
cateObjects
.
add
(
o
);
}
}
List
<
JSONObject
>
userObjects
=
new
ArrayList
<>();
if
(
CollUtil
.
isNotEmpty
(
userSyncs
))
{
for
(
SysUserSync
sysUserSync
:
userSyncs
)
{
JSONObject
o
=
new
JSONObject
();
o
.
putOpt
(
"id"
,
sysUserSync
.
getUserId
());
o
.
putOpt
(
"name"
,
sysUserSync
.
getName
());
o
.
putOpt
(
"checked"
,
userIdList
.
contains
(
sysUserSync
.
getUserId
()));
userObjects
.
add
(
o
);
}
}
@GetMapping
(
"/list"
)
public
R
list
(
String
tenantId
){
ret
urn
R
.
ok
(
iAgentAuthService
.
list
(
new
LambdaQueryWrapper
<
CoreModulePermissions
>()
.
eq
(
CoreModulePermissions:
:
getTenantId
,
tenantId
))
);
JSONObject
ret
=
new
JSONObject
();
ret
.
putOpt
(
"categoryList"
,
cateObjects
);
ret
.
putOpt
(
"userList"
,
userObjects
);
return
R
.
ok
(
ret
);
}
@PostMapping
(
"/save"
)
public
R
save
(
@RequestBody
List
<
CoreModulePermissions
>
data
){
public
R
save
(
@RequestBody
List
<
CoreModulePermissions
>
data
)
{
return
R
.
ok
(
iAgentAuthService
.
saveBatch
(
data
));
}
@GetMapping
(
"/remove"
)
public
R
remove
(
String
id
){
public
R
remove
(
String
id
)
{
return
R
.
ok
(
iAgentAuthService
.
removeById
(
id
));
}
...
...
src/main/java/com/cmeeting/job/CmeetingJob.java
浏览文件 @
53c8bb27
...
...
@@ -76,7 +76,6 @@ public class CmeetingJob {
}
try
{
log
.
info
(
"-------企微人员定时同步任务开始-------"
);
log
.
info
(
"当前时间: "
+
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ISO_LOCAL_DATE
));
weComService
.
doUsers
();
log
.
info
(
"-------企微人员定时同步任务结束--------"
);
...
...
@@ -100,7 +99,6 @@ public class CmeetingJob {
}
try
{
log
.
info
(
"-------腾讯会议人员定时同步任务开始-------"
);
log
.
info
(
"当前时间: "
+
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ISO_LOCAL_DATE
));
tencentMeetingService
.
doUsers
();
log
.
info
(
"-------腾讯会议人员定时同步任务结束--------"
);
...
...
@@ -124,7 +122,6 @@ public class CmeetingJob {
}
try
{
log
.
info
(
"-------关联企微腾会人员定时任务开始-------"
);
log
.
info
(
"当前时间: "
+
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ISO_LOCAL_DATE
));
weComService
.
userBind
();
log
.
info
(
"-------关联企微腾会人员定时任务结束--------"
);
}
catch
(
Exception
e
)
{
...
...
@@ -145,6 +142,7 @@ public class CmeetingJob {
if
(!
redisUtils
.
setnx
(
"Scheduled-All"
,
"Scheduled-All"
,
18
*
60
))
{
return
;
}
log
.
info
(
"-------生成纪要定时任务开始-------"
);
try
{
//查出企微id和腾会id的关联关系
List
<
UserId
>
userIdRelations
=
userIdMapper
.
selectList
(
null
);
...
...
@@ -195,7 +193,6 @@ public class CmeetingJob {
}
try
{
log
.
info
(
"-------生成纪要重试定时任务开始-------"
);
log
.
info
(
"当前时间: "
+
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ISO_LOCAL_DATE
));
//查出所有早于一小时前的,生成失败且未重试过的会议
// 不能用status筛选,因为可能线程执行一般服务终止,status状态没变
...
...
src/main/java/com/cmeeting/mapper/primary/SysUserSyncCategoryMapper.java
浏览文件 @
53c8bb27
...
...
@@ -2,6 +2,20 @@ package com.cmeeting.mapper.primary;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.cmeeting.pojo.SysUserSyncCategory
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.List
;
public
interface
SysUserSyncCategoryMapper
extends
BaseMapper
<
SysUserSyncCategory
>
{
@Select
(
"<script>"
+
" SELECT d1.dept_id,d1.name\n"
+
" FROM sys_user_sync_category d1\n"
+
" LEFT JOIN sys_user_sync_category d2 ON d1.parent_id = d2.dept_id\n"
+
" WHERE d2.dept_id IS NULL \n"
+
" <if test=\"search != null and search != ''\">\n"
+
" and d1.name like concat('%', #{search}, '%')\n"
+
" </if>"
+
"</script>"
)
List
<
SysUserSyncCategory
>
selectParentIdNoInId
(
@Param
(
"search"
)
String
search
);
}
src/main/java/com/cmeeting/mapper/primary/SysUserSyncMapper.java
浏览文件 @
53c8bb27
...
...
@@ -51,4 +51,7 @@ public interface SysUserSyncMapper extends BaseMapper<SysUserSync> {
@MapKey
(
"userId"
)
List
<
Map
<
String
,
String
>>
selectParamByUserIdList
(
@Param
(
"searchValue"
)
String
searchValue
,
@Param
(
"userIdList"
)
List
<
String
>
userIdList
);
List
<
SysUserSync
>
listByUserIds
(
@Param
(
"ids"
)
List
<
String
>
userIdList
);
}
src/main/java/com/cmeeting/service/ISysUserSyncCategoryService.java
浏览文件 @
53c8bb27
...
...
@@ -18,4 +18,6 @@ public interface ISysUserSyncCategoryService extends IService<SysUserSyncCategor
String
getPath
(
String
deptId
,
Map
<
String
,
String
>
map
);
List
<
Tree
<
String
>>
tree
(
String
tenantId
);
List
<
SysUserSyncCategory
>
selectParentIdNoInId
(
String
search
);
}
src/main/java/com/cmeeting/service/SysUserSyncService.java
浏览文件 @
53c8bb27
...
...
@@ -42,4 +42,6 @@ public interface SysUserSyncService extends IService<SysUserSync> {
List
<
PermissionCheckedDTO
.
User
>
findByParam
(
List
<
String
>
userIds
,
List
<
String
>
notInCateIds
,
List
<
String
>
shareCateIds
,
String
search
,
String
categoryId
);
Page
<
SysUserSyncDTO
>
selectPage
(
Integer
current
,
Integer
size
,
String
categoryId
,
String
search
);
List
<
SysUserSync
>
listByUserIds
(
List
<
String
>
userIdList
);
}
src/main/java/com/cmeeting/service/impl/SysUserSyncCategoryServiceImpl.java
浏览文件 @
53c8bb27
...
...
@@ -53,4 +53,9 @@ public class SysUserSyncCategoryServiceImpl extends ServiceImpl<SysUserSyncCateg
CategoryTreeUtil
<
SysUserSyncCategory
>
util
=
new
CategoryTreeUtil
<>();
return
util
.
build
(
sysUserSyncCategories
);
}
@Override
public
List
<
SysUserSyncCategory
>
selectParentIdNoInId
(
String
search
)
{
return
baseMapper
.
selectParentIdNoInId
(
search
);
}
}
src/main/java/com/cmeeting/service/impl/SysUserSyncServiceImpl.java
浏览文件 @
53c8bb27
...
...
@@ -246,6 +246,11 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUs
return
retPage
;
}
@Override
public
List
<
SysUserSync
>
listByUserIds
(
List
<
String
>
userIdList
)
{
return
baseMapper
.
listByUserIds
(
userIdList
);
}
private
List
<
String
>
getChildren
(
Map
<
String
,
List
<
String
>>
collect
,
String
deptId
)
{
List
<
String
>
ids
=
new
ArrayList
<>();
if
(
collect
.
containsKey
(
deptId
))
{
...
...
src/main/java/com/cmeeting/vo/AgentAuthVO.java
0 → 100644
浏览文件 @
53c8bb27
package
com
.
cmeeting
.
vo
;
import
lombok.Data
;
@Data
public
class
AgentAuthVO
{
/**
* 已授权用户查询入参
*/
@Data
public
static
class
AuthedList
{
private
Integer
current
;
private
Integer
size
;
private
String
search
;
private
String
tenantId
;
}
/**
* 授权用户查询入参
*/
@Data
public
static
class
UserList
{
private
String
categoryId
;
private
String
search
;
private
String
tenantId
;
}
}
src/main/resources/mapper/primary/AuthMapper.xml
浏览文件 @
53c8bb27
...
...
@@ -14,7 +14,7 @@
target_id AS targetId,
tenant_id AS tenantId
FROM
core_module_permission
s
core_module_permission
WHERE
user_type = 2
and target_id = #{targetId}
...
...
src/main/resources/mapper/primary/SysUserSyncMapper.xml
浏览文件 @
53c8bb27
...
...
@@ -157,4 +157,15 @@
</if>
</where>
</select>
<select
id=
"listByUserIds"
resultType=
"com.cmeeting.ad.entity.SysUserSync"
>
select t1.user_id, t1.name, t2.name as department
from sys_user_sync t1
left join sys_user_sync_category t2 on t1.dept_id = t2.dept_id
<where>
t1.user_id in
<foreach
collection=
"ids"
separator=
","
item=
"id"
close=
")"
open=
"("
>
#{id}
</foreach>
</where>
</select>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论