mirror of
https://github.com/flipped-aurora/gin-vue-admin.git
synced 2026-09-23 21:08:09 +00:00
* feat: ai相关调用调整 * feat: ai请求模式变更 * feat: ai自动化完善 * feat: 添加环境变量支持,条件渲染开发环境特定元素 * feat: 2.5版本插件,不再冗余进主项目,可以做到完全自动安装。 * feat: 添加插件管理功能,包括获取插件列表和删除插件的API接口 * feat: 同步测试插件的id调整 * feat: 增加插件相关初始化api * feat: 增加登录日志 * feat: 增加签发token功能 * feat: 更安全的目录清理功能,确保仅在无Go文件时删除目录 * feat: 增加skills定义能力 * feat: 优化技能管理界面,增强用户体验和视觉效果 * feat: 更新授权链接,确保用户获取最新的授权信息 * feat: 修改技能定义器名称为“Skills管理”,并重命名文件为sys_skills.go * feat: 增加全局约束的获取和保存功能,更新相关API和前端实现 * feat: 增加skills全局约束管理 * feat: 添加 vite-check-multiple-dom 插件,支持路由多根检测 (#2173) --------- Co-authored-by: piexlMax(奇淼 <qimiaojiangjizhao@gmail.com> Co-authored-by: Azir-11 <2075125282@qq.com> Co-authored-by: 青菜白玉汤 <79054161+Azir-11@users.noreply.github.com>
82 lines
2.1 KiB
Go
82 lines
2.1 KiB
Go
package system
|
|
|
|
import (
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
|
|
sysReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
|
|
"github.com/gin-gonic/gin"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type ApiTokenApi struct{}
|
|
|
|
// CreateApiToken 签发Token
|
|
func (s *ApiTokenApi) CreateApiToken(c *gin.Context) {
|
|
var req struct {
|
|
UserID uint `json:"userId"`
|
|
AuthorityID uint `json:"authorityId"`
|
|
Days int `json:"days"` // -1为永久, 其他为天数
|
|
Remark string `json:"remark"`
|
|
}
|
|
err := c.ShouldBindJSON(&req)
|
|
if err != nil {
|
|
response.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
token := system.SysApiToken{
|
|
UserID: req.UserID,
|
|
AuthorityID: req.AuthorityID,
|
|
Remark: req.Remark,
|
|
}
|
|
|
|
jwtStr, err := apiTokenService.CreateApiToken(token, req.Days)
|
|
if err != nil {
|
|
global.GVA_LOG.Error("签发失败!", zap.Error(err))
|
|
response.FailWithMessage("签发失败: "+err.Error(), c)
|
|
return
|
|
}
|
|
|
|
response.OkWithDetailed(gin.H{"token": jwtStr}, "签发成功", c)
|
|
}
|
|
|
|
// GetApiTokenList 获取列表
|
|
func (s *ApiTokenApi) GetApiTokenList(c *gin.Context) {
|
|
var pageInfo sysReq.SysApiTokenSearch
|
|
err := c.ShouldBindJSON(&pageInfo)
|
|
if err != nil {
|
|
response.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
list, total, err := apiTokenService.GetApiTokenList(pageInfo)
|
|
if err != nil {
|
|
global.GVA_LOG.Error("获取失败!", zap.Error(err))
|
|
response.FailWithMessage("获取失败", c)
|
|
return
|
|
}
|
|
response.OkWithDetailed(response.PageResult{
|
|
List: list,
|
|
Total: total,
|
|
Page: pageInfo.Page,
|
|
PageSize: pageInfo.PageSize,
|
|
}, "获取成功", c)
|
|
}
|
|
|
|
// DeleteApiToken 作废Token
|
|
func (s *ApiTokenApi) DeleteApiToken(c *gin.Context) {
|
|
var req system.SysApiToken
|
|
err := c.ShouldBindJSON(&req)
|
|
if err != nil {
|
|
response.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
err = apiTokenService.DeleteApiToken(req.ID)
|
|
if err != nil {
|
|
global.GVA_LOG.Error("作废失败!", zap.Error(err))
|
|
response.FailWithMessage("作废失败", c)
|
|
return
|
|
}
|
|
response.OkWithMessage("作废成功", c)
|
|
}
|