mirror of
https://github.com/yangjian102621/geekai.git
synced 2026-09-17 18:57:13 +00:00
feat: 迁移 geekai-plus v4.3.1 到开源版
- 同步 Plus v4.3.1 功能源并移除商业 License 闭环 - 更新开源镜像命名、Docker 部署版本和 geekai 数据库配置 - 补充前端 ESLint 检查配置并修复存量解析与模板问题 - 保留 JWT、管理员权限、API Key 和 OAuth 等正常鉴权机制
This commit is contained in:
@@ -60,7 +60,7 @@ func (s *Service) PushTask(task types.SunoTask) {
|
||||
func (s *Service) Run() {
|
||||
// 将数据库中未提交的人物加载到队列
|
||||
var jobs []model.SunoJob
|
||||
s.db.Where("task_id", "").Where("progress", 0).Find(&jobs)
|
||||
s.db.Where("task_id", "").Where("status IN ?", []string{model.ImageStatusPending, model.ImageStatusInProgress}).Find(&jobs)
|
||||
for _, v := range jobs {
|
||||
// 从 Params 中提取字段构建 task
|
||||
task := types.SunoTask{
|
||||
@@ -91,6 +91,11 @@ func (s *Service) Run() {
|
||||
logger.Errorf("taking task with error: %v", err)
|
||||
continue
|
||||
}
|
||||
s.db.Model(&model.SunoJob{Id: task.Id}).UpdateColumns(map[string]any{
|
||||
"status": model.ImageStatusInProgress,
|
||||
"progress": 1,
|
||||
"err_msg": "",
|
||||
})
|
||||
var r RespVo
|
||||
if task.Type == 3 && task.SongId != "" { // 歌曲拼接
|
||||
r, err = s.Merge(task)
|
||||
@@ -103,7 +108,8 @@ func (s *Service) Run() {
|
||||
logger.Errorf("create task with error: %v", err)
|
||||
s.db.Model(&model.SunoJob{Id: task.Id}).UpdateColumns(map[string]interface{}{
|
||||
"err_msg": err.Error(),
|
||||
"progress": service.FailTaskProgress,
|
||||
"status": model.ImageStatusFailed,
|
||||
"progress": 101,
|
||||
})
|
||||
continue
|
||||
}
|
||||
@@ -112,8 +118,10 @@ func (s *Service) Run() {
|
||||
|
||||
// 更新任务信息
|
||||
s.db.Model(&model.SunoJob{Id: task.Id}).UpdateColumns(map[string]interface{}{
|
||||
"task_id": r.Data,
|
||||
"channel": r.Channel,
|
||||
"task_id": r.Data,
|
||||
"channel": r.Channel,
|
||||
"status": model.ImageStatusInProgress,
|
||||
"progress": 1,
|
||||
})
|
||||
}
|
||||
}()
|
||||
@@ -281,7 +289,7 @@ func (s *Service) DownloadFiles() {
|
||||
go func() {
|
||||
var items []model.SunoJob
|
||||
for {
|
||||
res := s.db.Where("progress", 102).Find(&items)
|
||||
res := s.db.Where("status", model.ImageStatusDownloading).Find(&items)
|
||||
if res.Error != nil {
|
||||
continue
|
||||
}
|
||||
@@ -304,6 +312,7 @@ func (s *Service) DownloadFiles() {
|
||||
v.CoverURL = coverURL
|
||||
v.AudioURL = audioURL
|
||||
v.Progress = 100
|
||||
v.Status = model.ImageStatusSuccess
|
||||
s.db.Updates(&v)
|
||||
}
|
||||
|
||||
@@ -317,7 +326,7 @@ func (s *Service) SyncTaskProgress() {
|
||||
go func() {
|
||||
var jobs []model.SunoJob
|
||||
for {
|
||||
res := s.db.Where("progress < ?", 100).Where("task_id <> ?", "").Find(&jobs)
|
||||
res := s.db.Where("status IN ?", []string{model.ImageStatusPending, model.ImageStatusInProgress, model.ImageStatusDownloading}).Where("task_id <> ?", "").Find(&jobs)
|
||||
if res.Error != nil {
|
||||
continue
|
||||
}
|
||||
@@ -342,7 +351,8 @@ func (s *Service) SyncTaskProgress() {
|
||||
tx := s.db.Begin()
|
||||
for _, v := range task.Data.Data {
|
||||
job.Id = 0
|
||||
job.Progress = 102 // 102 表示资源未下载完成
|
||||
job.Progress = 100
|
||||
job.Status = model.ImageStatusDownloading // 资源待下载
|
||||
job.Title = v.Title
|
||||
job.SongId = v.Id
|
||||
job.Duration = int(v.Metadata.Duration)
|
||||
@@ -384,20 +394,21 @@ func (s *Service) SyncTaskProgress() {
|
||||
}
|
||||
tx.Commit()
|
||||
} else if task.Data.FailReason != "" {
|
||||
job.Progress = service.FailTaskProgress
|
||||
job.Status = model.ImageStatusFailed
|
||||
job.Progress = 101
|
||||
job.ErrMsg = task.Data.FailReason
|
||||
s.db.Updates(&job)
|
||||
}
|
||||
}
|
||||
|
||||
// 找出失败的任务,并恢复其扣减算力
|
||||
// 找出失败的任务,并恢复其扣减积分
|
||||
s.db.Select("id", "user_id", "power", "task_id", "err_msg", "params").
|
||||
Where("progress", service.FailTaskProgress).Where("power > ?", 0).Find(&jobs)
|
||||
Where("status", model.ImageStatusFailed).Where("power > ?", 0).Find(&jobs)
|
||||
for _, job := range jobs {
|
||||
err := s.userService.IncreasePower(job.UserId, job.Power, model.PowerLog{
|
||||
Type: types.PowerRefund,
|
||||
Model: job.Params.Model,
|
||||
Remark: fmt.Sprintf("Suno 任务失败,退回算力。任务ID:%s,Err:%s", job.TaskId, job.ErrMsg),
|
||||
Remark: fmt.Sprintf("Suno 任务失败,退回积分。任务ID:%s,Err:%s", job.TaskId, job.ErrMsg),
|
||||
})
|
||||
if err != nil {
|
||||
continue
|
||||
Reference in New Issue
Block a user