feat(admin): 添加管理员用户算力点管理和日志功能

- 在管理员API中新增用户算力点调整功能和信用日志相关接口
- 实现后端用户算力点调整逻辑和信用日志的增删改查操作
- 在管理员界面用户管理页面添加算力点调整功能
- 新增独立的算力点日志管理页面,支持日志查看和编辑
- 添加算力点日志相关的数据模型和服务函数
- 更新数据库文档说明第三方资料存储结构
- 添加dayjs依赖用于时间格式化显示
This commit is contained in:
HouYunFei
2026-05-25 12:57:27 +08:00
parent fe3294ed60
commit fff7074218
15 changed files with 519 additions and 38 deletions
+43 -4
View File
@@ -26,12 +26,14 @@ type saveUserRequest struct {
Password string `json:"password"`
Email string `json:"email"`
DisplayName string `json:"displayName"`
AvatarURL string `json:"avatarUrl"`
Role model.UserRole `json:"role"`
Credits int `json:"credits"`
Status model.UserStatus `json:"status"`
}
type adjustUserCreditsRequest struct {
Credits int `json:"credits"`
}
func Register(w http.ResponseWriter, r *http.Request) {
var request registerRequest
_ = json.NewDecoder(r.Body).Decode(&request)
@@ -112,9 +114,7 @@ func AdminSaveUser(w http.ResponseWriter, r *http.Request) {
Username: request.Username,
Email: request.Email,
DisplayName: request.DisplayName,
AvatarURL: request.AvatarURL,
Role: request.Role,
Credits: request.Credits,
Status: request.Status,
}, request.Password)
if err != nil {
@@ -124,6 +124,45 @@ func AdminSaveUser(w http.ResponseWriter, r *http.Request) {
OK(w, user)
}
func AdminAdjustUserCredits(w http.ResponseWriter, r *http.Request, id string) {
var request adjustUserCreditsRequest
_ = json.NewDecoder(r.Body).Decode(&request)
user, err := service.AdjustUserCredits(id, request.Credits)
if err != nil {
FailError(w, err)
return
}
OK(w, user)
}
func AdminCreditLogs(w http.ResponseWriter, r *http.Request) {
logs, err := service.ListCreditLogs(parseQuery(r))
if err != nil {
FailError(w, err)
return
}
OK(w, logs)
}
func AdminSaveCreditLog(w http.ResponseWriter, r *http.Request) {
var log model.CreditLog
_ = json.NewDecoder(r.Body).Decode(&log)
result, err := service.SaveCreditLog(log)
if err != nil {
FailError(w, err)
return
}
OK(w, result)
}
func AdminDeleteCreditLog(w http.ResponseWriter, r *http.Request, id string) {
if err := service.DeleteCreditLog(id); err != nil {
FailError(w, err)
return
}
OK(w, true)
}
func loginRedirect(r *http.Request, redirect string, token string, message string) string {
values := url.Values{}
if strings.TrimSpace(token) != "" {