Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-auth
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-auth
Commits
f270c419
提交
f270c419
authored
3月 27, 2025
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
勤策登录接口
上级
3078caab
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
143 行增加
和
20 行删除
+143
-20
QcTokenController.java
src/main/java/com/sfa/auth/controller/QcTokenController.java
+35
-0
LoginBody.java
src/main/java/com/sfa/auth/form/LoginBody.java
+20
-20
QinCeUtil.java
src/main/java/com/sfa/auth/util/QinCeUtil.java
+88
-0
没有找到文件。
src/main/java/com/sfa/auth/controller/QcTokenController.java
0 → 100644
浏览文件 @
f270c419
package
com
.
sfa
.
auth
.
controller
;
import
com.sfa.auth.service.SysLoginService
;
import
com.sfa.auth.util.QinCeUtil
;
import
com.sfa.common.security.service.TokenService
;
import
com.sfa.system.api.model.LoginUser
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
/**
* @author : liqiulin
* @date : 2025-03-25 17
* @describe : 勤策登录
*/
@RestController
public
class
QcTokenController
{
@Autowired
private
TokenService
tokenService
;
@Autowired
private
QinCeUtil
qinCeUtil
;
@Autowired
private
SysLoginService
sysLoginService
;
@GetMapping
(
"/qc/login"
)
public
Map
<
String
,
Object
>
login
(
String
code
){
String
accessToken
=
qinCeUtil
.
getAccessToken
();
String
employeeNo
=
qinCeUtil
.
getUserInfo
(
accessToken
,
code
);
LoginUser
loginUser
=
sysLoginService
.
fsLogin
(
employeeNo
);
return
tokenService
.
createToken
(
loginUser
);
}
}
src/main/java/com/sfa/auth/form/LoginBody.java
浏览文件 @
f270c419
...
...
@@ -26,27 +26,27 @@ public class LoginBody
/**
* 飞书免登code
* 飞书 / 勤策
* 免登code
*/
private
String
code
;
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
/**
* 勤策登录-固定值:STATE
*/
private
String
state
;
/**
* 勤策登录 tenant_id
*/
private
String
tenantId
;
/**
* 勤策登录 app_id
*/
private
String
appId
;
}
src/main/java/com/sfa/auth/util/QinCeUtil.java
0 → 100644
浏览文件 @
f270c419
package
com
.
sfa
.
auth
.
util
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.lark.oapi.okhttp.*
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.exception.auth.NotLoginException
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.HashMap
;
/**
* @author : liqiulin
* @date : 2025-03-26 11
* @describe :
*/
@Component
public
class
QinCeUtil
{
private
static
final
String
QINCE_OSS_URL
=
"https://sso.qince.com/service/oauth"
;
private
static
final
String
APP_ID
=
"app1742881477251"
;
private
static
final
String
APP_SECRET
=
"wr87Ozn7Dp10rR656xRCxfuxOxYs9OR0"
;
private
static
final
String
TENANT_ID
=
"6035565720566270399"
;
public
String
getAccessToken
()
{
try
{
String
ossUrl
=
QINCE_OSS_URL
+
"/token"
;
HashMap
<
String
,
String
>
bodyMap
=
new
HashMap
<>();
bodyMap
.
put
(
"app_id"
,
APP_ID
);
bodyMap
.
put
(
"app_secret"
,
APP_SECRET
);
bodyMap
.
put
(
"tenant_id"
,
TENANT_ID
);
OkHttpClient
client
=
new
OkHttpClient
();
RequestBody
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
JSONObject
.
toJSONString
(
bodyMap
));
Request
request
=
new
Request
.
Builder
().
url
(
ossUrl
).
post
(
body
).
build
();
Response
execute
=
client
.
newCall
(
request
).
execute
();
JSONObject
rj
=
JSONObject
.
parseObject
(
execute
.
body
().
string
());
Integer
returnCode
=
rj
.
getInteger
(
"return_code"
);
if
(
returnCode
!=
0
){
throw
new
NotLoginException
(
ECode
.
QC_ACCESS_TOKEN_ERROR
);
}
return
rj
.
getJSONObject
(
"return_data"
).
getString
(
"access_token"
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* 获取当前登录人的登录账号
* @param accessToken
* @param code
* @return
*/
public
String
getUserInfo
(
String
accessToken
,
String
code
)
{
try
{
String
ossUrl
=
QINCE_OSS_URL
+
"/userinfo?access_token="
+
accessToken
+
"&code="
+
code
;
OkHttpClient
client
=
new
OkHttpClient
();
Request
request
=
new
Request
.
Builder
().
url
(
ossUrl
).
get
().
build
();
Response
execute
=
client
.
newCall
(
request
).
execute
();
JSONObject
rj
=
JSONObject
.
parseObject
(
execute
.
body
().
string
());
Integer
returnCode
=
rj
.
getInteger
(
"return_code"
);
if
(
returnCode
!=
0
){
throw
new
NotLoginException
(
ECode
.
QC_ACCESS_TOKEN_ERROR
);
}
return
rj
.
getJSONObject
(
"return_data"
).
getString
(
"code"
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论