Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
Radiant
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wuzekai
Radiant
Commits
41558bdb
Commit
41558bdb
authored
Nov 19, 2025
by
gaozhaochen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(data):
1、[新增功能] 企业级集成:Token鉴权 + 环境变量 + 自动加载
parent
4c0f7562
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
79 additions
and
0 deletions
+79
-0
server.R
radiant.data/inst/app/server.R
+79
-0
No files found.
radiant.data/inst/app/server.R
View file @
41558bdb
...
@@ -13,6 +13,85 @@ shinyServer(function(input, output, session) {
...
@@ -13,6 +13,85 @@ shinyServer(function(input, output, session) {
source
(
file
,
encoding
=
enc
,
local
=
TRUE
)
source
(
file
,
encoding
=
enc
,
local
=
TRUE
)
}
}
# ============================================================
# [新增功能] 企业级集成:Token鉴权 + 环境变量 + 自动加载
# ============================================================
observe
({
# 1. 解析 URL 参数
query
<-
parseQueryString
(
session
$
clientData
$
url_search
)
dataset_id
<-
query
[[
'datasetId'
]]
token
<-
query
[[
'token'
]]
# 2. 仅当 ID 和 Token 均存在时执行
if
(
!
is.null
(
dataset_id
)
&&
!
is.null
(
token
))
{
# 定义 Radiant 内部使用的数据集名称 (例如: data_10086)
# 如果 URL 传了 name 参数就用 name,否则用 id 拼接
ds_name
<-
if
(
!
is.null
(
query
[[
'name'
]]))
query
[[
'name'
]]
else
paste0
(
"data_"
,
dataset_id
)
# 3. 检查数据是否已存在 (防止重复加载)
if
(
is.null
(
r_data
[[
ds_name
]]))
{
withProgress
(
message
=
'正在从业务系统同步数据...'
,
value
=
0.2
,
{
# 4. 获取环境变量中的 API 基地址
api_base
<-
Sys.getenv
(
"HOST_API_BASE"
,
"http://127.0.0.1:11999"
)
# 5. 拼接完整 API 路径
target_url
<-
paste0
(
api_base
,
"/disease-data/data/export/apply/apply/case?applyId="
,
dataset_id
)
# 6. 创建临时文件 (明确 .xlsx 后缀)
tmp_file
<-
tempfile
(
fileext
=
".xlsx"
)
tryCatch
({
incProgress
(
0.3
,
detail
=
"正在鉴权并下载..."
)
# 7. 发起带 Token 的 HTTP 请求
response
<-
httr
::
POST
(
url
=
target_url
,
# 添加 Bearer Token (或根据你的接口要求修改 Header)
httr
::
add_headers
(
Authorization
=
paste
(
"Bearer"
,
token
)),
# 将结果写入磁盘
httr
::
write_disk
(
tmp_file
,
overwrite
=
TRUE
)
)
# 检查 HTTP 状态码
if
(
httr
::
status_code
(
response
)
!=
200
)
{
stop
(
paste
(
"下载失败,请手动导入,HTTP状态码:"
,
httr
::
status_code
(
response
)))
}
incProgress
(
0.7
,
detail
=
"解析并导入 Radiant..."
)
# 8. 复用 Radiant 核心加载函数 (manage_ui.R 中定义)
# 这会自动完成读取、转因子、生成R代码、注册到下拉框等所有动作
load_user_data
(
fname
=
paste0
(
ds_name
,
".xlsx"
),
# 虚拟文件名
uFile
=
tmp_file
,
# 实际文件路径
ext
=
"xlsx"
,
xlsx_sheet
=
1
,
xlsx_header
=
TRUE
,
man_str_as_factor
=
TRUE
)
# 9. 界面联动:选中数据并跳转到视图
updateSelectInput
(
session
,
"dataset"
,
selected
=
ds_name
)
updateTabsetPanel
(
session
,
"nav_radiant"
,
selected
=
"Data"
)
updateTabsetPanel
(
session
,
"tabs_data"
,
selected
=
"View"
)
# 或者 "Visualize"
showNotification
(
paste
(
"数据集"
,
ds_name
,
"加载成功!"
),
type
=
"message"
)
},
error
=
function
(
e
)
{
showNotification
(
paste
(
"数据同步失败,请手动导入数据:"
,
e
$
message
),
type
=
"error"
,
duration
=
10
)
#调试打印 print(e)
})
})
}
}
})
# ============================================================
# dataviewer_proxy <- DT::dataTableProxy("dataviewer", session)
# dataviewer_proxy <- DT::dataTableProxy("dataviewer", session)
# observe(session$setCurrentTheme(
# observe(session$setCurrentTheme(
...
...
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