first commit

This commit is contained in:
何昌清
2026-03-26 22:13:03 +08:00
parent bbe1faa363
commit a2685f7f1e
51 changed files with 11244 additions and 0 deletions

112
middle/middle_service.go Normal file
View File

@@ -0,0 +1,112 @@
// Package middle/middle_service.go
package middle
import (
"Quincy_admin/schemas"
"fmt"
"github.com/jmoiron/sqlx"
)
type MService struct {
db *sqlx.DB
}
func NewMiddleService(db *sqlx.DB) *MService {
return &MService{db: db}
}
// GetUserID 验证令牌并返回用户信息
//func (s *MService) GetUserID(scode string) (*schemas.UserInfo, error) {
// // 从Redis获取用户信息
// InitRedis := utils.GetRedis()
// ctx := utils.GetContext()
//
// // 尝试从Redis获取用户会话信息
// userInfoStr, err := InitRedis.Get(ctx, scode).Result()
// if err != nil {
// // Redis中未找到会话信息视为登录过期
// return nil, fmt.Errorf("登录已过期")
// }
//
// // 解析Redis中的用户信息
// var user schemas.UserInfo
// err = json.Unmarshal([]byte(userInfoStr), &user)
// if err != nil {
// return nil, fmt.Errorf("会话信息解析失败")
// }
//
// return &user, nil
//}
// GetUserID 验证令牌并返回用户ID
func (s *MService) GetUserID(scode string) (*schemas.UserInfo, error) {
// 实现令牌验证逻辑
query := `
SELECT
tb1.id,
COALESCE(tb2.role_id, 0) AS rolecode,
tb1.sessioncode,
tb1.username,
tb1.password,
tb1.nickname,
tb1.email,
tb1.avatar,
tb1.status,
tb1.register_time,
tb1.last_login_time
FROM
admin_user tb1
JOIN admin_user_role tb2 ON tb1.id = tb2.user_id
WHERE
sessioncode = ?
ORDER BY
tb1.id
LIMIT 1;
`
user := &schemas.UserInfo{}
err := s.db.Get(user, query, scode)
if err != nil {
return nil, err
}
return user, nil
}
// HasPermission 检查用户是否有特定权限
func (s *MService) HasPermission(userID int, permission string) error {
query := `
SELECT
COUNT(*) > 0 AS has_permission
FROM
admin_user au
JOIN admin_user_role aur ON au.id = aur.user_id
JOIN admin_role ar ON aur.role_id = ar.id
JOIN admin_role_permission arp ON ar.id = arp.role_id
JOIN admin_permission ap ON arp.permission_id = ap.id
WHERE
au.id = ?
AND ap.name = ?
`
var hasPermission bool
err := s.db.Get(&hasPermission, query, userID, permission)
if err != nil {
return err
}
fmt.Println(hasPermission)
// 根据权限检查结果返回相应错误
if !hasPermission {
return fmt.Errorf("user %d does not have permission %s", userID, permission)
}
return nil
}
// IsSuperAdmin 检查是否为超级管理员
func (s *MService) IsSuperAdmin(userID int) bool {
return userID == 1
}