修补bug
This commit is contained in:
parent
f84df652d9
commit
3d1a1c9711
@ -9,15 +9,59 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"server/models"
|
"server/models"
|
||||||
"server/services"
|
"server/pkg/jwtutil"
|
||||||
|
|
||||||
|
beego "github.com/beego/beego/v2/server/web"
|
||||||
"github.com/qiniu/go-sdk/v7/auth/qbox"
|
"github.com/qiniu/go-sdk/v7/auth/qbox"
|
||||||
"github.com/qiniu/go-sdk/v7/storage"
|
"github.com/qiniu/go-sdk/v7/storage"
|
||||||
)
|
)
|
||||||
|
|
||||||
// QiniuUploadController 七牛云上传控制器
|
// QiniuUploadController 七牛云上传控制器
|
||||||
type QiniuUploadController struct {
|
type QiniuUploadController struct {
|
||||||
BaseController
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
// platformClaims 获取平台端 JWT claims
|
||||||
|
func (c *QiniuUploadController) platformClaims() (*jwtutil.Claims, error) {
|
||||||
|
auth := c.Ctx.Request.Header.Get("Authorization")
|
||||||
|
if auth == "" {
|
||||||
|
return nil, fmt.Errorf("未登录")
|
||||||
|
}
|
||||||
|
parts := strings.Split(auth, " ")
|
||||||
|
if len(parts) != 2 || parts[0] != "Bearer" {
|
||||||
|
return nil, fmt.Errorf("token 格式错误")
|
||||||
|
}
|
||||||
|
claims, err := jwtutil.ParseToken(parts[1])
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("token 无效")
|
||||||
|
}
|
||||||
|
return claims, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// effectiveTid 获取有效的租户 ID
|
||||||
|
func (c *QiniuUploadController) effectiveTid(claims *jwtutil.Claims) uint64 {
|
||||||
|
if claims.TenantID != nil && *claims.TenantID > 0 {
|
||||||
|
return *claims.TenantID
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// jsonErr 返回错误响应
|
||||||
|
func (c *QiniuUploadController) jsonErr(httpStatus, bizCode int, msg string) {
|
||||||
|
c.Ctx.Output.SetStatus(httpStatus)
|
||||||
|
c.Data["json"] = map[string]interface{}{"code": bizCode, "msg": msg}
|
||||||
|
_ = c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// jsonOK 返回成功响应
|
||||||
|
func (c *QiniuUploadController) jsonOK(data interface{}) {
|
||||||
|
c.Data["json"] = map[string]interface{}{"code": 200, "data": data}
|
||||||
|
_ = c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseJSON 解析 JSON 请求体
|
||||||
|
func (c *QiniuUploadController) ParseJSON(v interface{}) error {
|
||||||
|
return c.Ctx.Input.Bind(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUploadToken 获取上传凭证
|
// GetUploadToken 获取上传凭证
|
||||||
@ -143,8 +187,8 @@ func (c *QiniuUploadController) SaveFileRecord() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 检测文件类型
|
// 检测文件类型
|
||||||
ext := getFileExt(req.Name)
|
ext := getQiniuFileExt(req.Name)
|
||||||
fileType := detectFileType(ext)
|
fileType := detectQiniuFileType(ext)
|
||||||
|
|
||||||
// 保存文件记录
|
// 保存文件记录
|
||||||
adminID := uint64(claims.UserID)
|
adminID := uint64(claims.UserID)
|
||||||
@ -177,7 +221,7 @@ func (c *QiniuUploadController) SaveFileRecord() {
|
|||||||
// GetStorageConfig 获取存储配置(前端用于判断上传方式)
|
// GetStorageConfig 获取存储配置(前端用于判断上传方式)
|
||||||
// GET /platform/storage/config
|
// GET /platform/storage/config
|
||||||
func (c *QiniuUploadController) GetStorageConfig() {
|
func (c *QiniuUploadController) GetStorageConfig() {
|
||||||
claims, err := c.platformClaims()
|
_, err := c.platformClaims()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.jsonErr(401, 401, err.Error())
|
c.jsonErr(401, 401, err.Error())
|
||||||
return
|
return
|
||||||
@ -219,8 +263,8 @@ func getQiniuUploadURL(region string) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// getFileExt 获取文件扩展名
|
// getQiniuFileExt 获取文件扩展名
|
||||||
func getFileExt(filename string) string {
|
func getQiniuFileExt(filename string) string {
|
||||||
parts := strings.Split(filename, ".")
|
parts := strings.Split(filename, ".")
|
||||||
if len(parts) > 1 {
|
if len(parts) > 1 {
|
||||||
return strings.ToLower(parts[len(parts)-1])
|
return strings.ToLower(parts[len(parts)-1])
|
||||||
@ -228,8 +272,8 @@ func getFileExt(filename string) string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// detectFileType 检测文件类型
|
// detectQiniuFileType 检测文件类型
|
||||||
func detectFileType(ext string) uint8 {
|
func detectQiniuFileType(ext string) uint8 {
|
||||||
imageExts := map[string]bool{
|
imageExts := map[string]bool{
|
||||||
"jpg": true, "jpeg": true, "png": true, "gif": true, "bmp": true,
|
"jpg": true, "jpeg": true, "png": true, "gif": true, "bmp": true,
|
||||||
"webp": true, "svg": true, "ico": true,
|
"webp": true, "svg": true, "ico": true,
|
||||||
|
|||||||
19
scripts/quick-restart.sh
Normal file
19
scripts/quick-restart.sh
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 快速重启脚本
|
||||||
|
echo "停止服务..."
|
||||||
|
systemctl stop go-api
|
||||||
|
pkill -f "go run main.go"
|
||||||
|
|
||||||
|
echo "启动服务..."
|
||||||
|
systemctl start go-api
|
||||||
|
|
||||||
|
echo "等待服务启动..."
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
echo "查看服务状态..."
|
||||||
|
systemctl status go-api --no-pager
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "查看最近日志..."
|
||||||
|
tail -n 20 /www/wwwroot/api.yunzer.cn/go.log
|
||||||
Loading…
Reference in New Issue
Block a user