diff --git a/CHANGELOG.md b/CHANGELOG.md index 54d6cda0..695b0cd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ - 功能优化:支持 GPT-4o 图片编辑功能。 - 功能新增:对话页面支持 AI 输出语音播报(TTS)。 - 功能优化:替换瀑布流组件,优化用户体验。 -- 功能优化:生成思维导图时候自动缓存上一次的结果 +- 功能优化:生成思维导图时候自动缓存上一次的结果。 +- 功能优化:优化 MJ 绘图页面,增加 MJ-V7 模型支持。 ## v4.2.1 diff --git a/api/handler/admin/user_handler.go b/api/handler/admin/user_handler.go index f15274bc..6f8a59fa 100644 --- a/api/handler/admin/user_handler.go +++ b/api/handler/admin/user_handler.go @@ -20,6 +20,7 @@ import ( "time" "github.com/go-redis/redis/v8" + "github.com/golang-jwt/jwt/v5" "github.com/gin-gonic/gin" "gorm.io/gorm" @@ -320,3 +321,36 @@ func (h *UserHandler) LoginLog(c *gin.Context) { resp.SUCCESS(c, vo.NewPage(total, page, pageSize, logs)) } + +// GenLoginLink 生成登录链接 +func (h *UserHandler) GenLoginLink(c *gin.Context) { + id := c.Query("id") + if id == "" { + resp.ERROR(c, types.InvalidArgs) + return + } + var user model.User + if err := h.DB.Where("id = ?", id).First(&user).Error; err != nil { + resp.ERROR(c, "用户不存在") + return + } + + // 创建 token + token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "user_id": user.Id, + "expired": time.Now().Add(time.Second * time.Duration(h.App.Config.Session.MaxAge)).Unix(), + }) + tokenString, err := token.SignedString([]byte(h.App.Config.Session.SecretKey)) + if err != nil { + resp.ERROR(c, "Failed to generate token, "+err.Error()) + return + } + // 保存到 redis + sessionKey := fmt.Sprintf("users/%d", user.Id) + if _, err = h.redis.Set(c, sessionKey, tokenString, 0).Result(); err != nil { + resp.ERROR(c, "error with save token: "+err.Error()) + return + } + + resp.SUCCESS(c, tokenString) +} \ No newline at end of file diff --git a/api/main.go b/api/main.go index 729b4cef..47910b97 100644 --- a/api/main.go +++ b/api/main.go @@ -331,6 +331,7 @@ func main() { group.POST("save", h.Save) group.GET("remove", h.Remove) group.GET("loginLog", h.LoginLog) + group.GET("genLoginLink", h.GenLoginLink) group.POST("resetPass", h.ResetPass) }), fx.Invoke(func(s *core.AppServer, h *admin.ChatAppHandler) { diff --git a/api/service/dalle/service.go b/api/service/dalle/service.go index dbd97794..2306f446 100644 --- a/api/service/dalle/service.go +++ b/api/service/dalle/service.go @@ -35,15 +35,13 @@ type Service struct { uploadManager *oss.UploaderManager taskQueue *store.RedisQueue userService *service.UserService - wsService *service.WebsocketService } -func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, userService *service.UserService, wsService *service.WebsocketService) *Service { +func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, userService *service.UserService) *Service { return &Service{ httpClient: req.C().SetTimeout(time.Minute * 3), db: db, taskQueue: store.NewRedisQueue("DallE_Task_Queue", redisCli), - wsService: wsService, uploadManager: manager, userService: userService, } diff --git a/api/service/mj/service.go b/api/service/mj/service.go index d692ce9f..532b82fd 100644 --- a/api/service/mj/service.go +++ b/api/service/mj/service.go @@ -28,17 +28,15 @@ type Service struct { client *Client // MJ Client taskQueue *store.RedisQueue db *gorm.DB - wsService *service.WebsocketService uploaderManager *oss.UploaderManager userService *service.UserService } -func NewService(redisCli *redis.Client, db *gorm.DB, client *Client, manager *oss.UploaderManager, wsService *service.WebsocketService, userService *service.UserService) *Service { +func NewService(redisCli *redis.Client, db *gorm.DB, client *Client, manager *oss.UploaderManager, userService *service.UserService) *Service { return &Service{ db: db, taskQueue: store.NewRedisQueue("MidJourney_Task_Queue", redisCli), client: client, - wsService: wsService, uploaderManager: manager, userService: userService, } diff --git a/api/service/sd/service.go b/api/service/sd/service.go index ef6c4e8a..2047923e 100644 --- a/api/service/sd/service.go +++ b/api/service/sd/service.go @@ -33,16 +33,14 @@ type Service struct { taskQueue *store.RedisQueue db *gorm.DB uploadManager *oss.UploaderManager - wsService *service.WebsocketService userService *service.UserService } -func NewService(db *gorm.DB, manager *oss.UploaderManager, levelDB *store.LevelDB, redisCli *redis.Client, wsService *service.WebsocketService, userService *service.UserService) *Service { +func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, userService *service.UserService) *Service { return &Service{ httpClient: req.C(), taskQueue: store.NewRedisQueue("StableDiffusion_Task_Queue", redisCli), db: db, - wsService: wsService, uploadManager: manager, userService: userService, } diff --git a/api/service/suno/service.go b/api/service/suno/service.go index 685153da..14e36e88 100644 --- a/api/service/suno/service.go +++ b/api/service/suno/service.go @@ -35,18 +35,16 @@ type Service struct { uploadManager *oss.UploaderManager taskQueue *store.RedisQueue notifyQueue *store.RedisQueue - wsService *service.WebsocketService userService *service.UserService } -func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, wsService *service.WebsocketService, userService *service.UserService) *Service { +func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, userService *service.UserService) *Service { return &Service{ httpClient: req.C().SetTimeout(time.Minute * 3), db: db, taskQueue: store.NewRedisQueue("Suno_Task_Queue", redisCli), notifyQueue: store.NewRedisQueue("Suno_Notify_Queue", redisCli), uploadManager: manager, - wsService: wsService, userService: userService, } } diff --git a/api/service/video/video.go b/api/service/video/video.go index 6e83c7c2..42628c13 100644 --- a/api/service/video/video.go +++ b/api/service/video/video.go @@ -36,16 +36,14 @@ type Service struct { db *gorm.DB uploadManager *oss.UploaderManager taskQueue *store.RedisQueue - wsService *service.WebsocketService userService *service.UserService } -func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, wsService *service.WebsocketService, userService *service.UserService) *Service { +func NewService(db *gorm.DB, manager *oss.UploaderManager, redisCli *redis.Client, userService *service.UserService) *Service { return &Service{ httpClient: req.C().SetTimeout(time.Minute * 3), db: db, taskQueue: store.NewRedisQueue("Video_Task_Queue", redisCli), - wsService: wsService, uploadManager: manager, userService: userService, } diff --git a/web/public/images/mj/mj-v7.png b/web/public/images/mj/mj-v7.png new file mode 100644 index 00000000..4d9aa371 Binary files /dev/null and b/web/public/images/mj/mj-v7.png differ diff --git a/web/src/assets/css/common.styl b/web/src/assets/css/common.styl index 7701983e..7faea9eb 100644 --- a/web/src/assets/css/common.styl +++ b/web/src/assets/css/common.styl @@ -125,6 +125,7 @@ //.el-message-box .el-message-box{ --el-messagebox-border-radius: 10px + --el-messagebox-padding-primary: 24px } .el-message-box__container{ //border-top: 1px solid #dbd3f4; diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue index aa19bee7..4d946412 100644 --- a/web/src/views/Home.vue +++ b/web/src/views/Home.vue @@ -58,7 +58,9 @@ - {{ item.name }} + {{ + item.name + }} @@ -77,7 +79,7 @@ - {{ loginUser.nickname }} + 账户信息
  • @@ -108,7 +110,12 @@
    - 登录 + 登录
    @@ -123,7 +130,9 @@
    @@ -133,33 +142,33 @@