Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
62bca310
authored
Mar 13, 2024
by
CaIon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: support shorten
parent
fc07acd9
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
51 additions
and
301 deletions
+51
-301
Midjourney.md
+10
-267
constant/midjourney.go
+1
-0
controller/midjourney.go
+4
-0
controller/relay.go
+3
-0
dto/midjourney.go
+6
-0
model/midjourney.go
+1
-0
relay/constant/relay_mode.go
+1
-0
relay/relay-mj.go
+22
-34
router/relay-router.go
+1
-0
web/src/components/MjLogsTable.js
+2
-0
No files found.
Midjourney.md
View file @
62bca310
...
@@ -11,281 +11,24 @@
...
@@ -11,281 +11,24 @@
"mj_variation"
:
0.1
,
"mj_variation"
:
0.1
,
"mj_reroll"
:
0.1
,
"mj_reroll"
:
0.1
,
"mj_blend"
:
0.1
,
"mj_blend"
:
0.1
,
"mj_inpaint"
:
0.1
,
"mj_zoom"
:
0.1
,
"mj_inpaint_pre"
:
0
,
"mj_describe"
:
0.05
,
"mj_describe"
:
0.05
,
"mj_upscale"
:
0.05
"mj_upscale"
:
0.05
,
"swap_face"
:
0.05
}
}
```
```
## 渠道设置
## 渠道设置
### 对接 midjourney-proxy
### 对接 midjourney-proxy
(plus)
1.
部署Midjourney-Proxy,并配置好midjourney账号等(强烈建议设置密钥),
[
项目地址
](
https://github.com/novicezk/midjourney-proxy
)
1.
部署Midjourney-Proxy,并配置好midjourney账号等(强烈建议设置密钥),
[
项目地址
](
https://github.com/novicezk/midjourney-proxy
)
2.
在渠道管理中添加渠道,渠道类型选择
Midjourney Proxy,模型选择midjourney
2.
在渠道管理中添加渠道,渠道类型选择
**Midjourney Proxy**
,如果是plus版本选择
**Midjourney Proxy Plus**
,模型选择midjourney,如果有换脸模型,可以选择swap_face
3.
地址填写midjourney-proxy部署的地址,例如:http://localhost:8080
3.
地址填写midjourney-proxy部署的地址,例如:http://localhost:8080
4.
密钥填写midjourney-proxy的密钥,如果没有设置密钥,可以随便填
4.
密钥填写midjourney-proxy的密钥,如果没有设置密钥,可以随便填
### 对接上游new api
### 对接上游new api
1.
在渠道管理中添加渠道,渠道类型选择
Midjourney Proxy,模型选择midjourney
1.
在渠道管理中添加渠道,渠道类型选择
**Midjourney Proxy Plus**
,模型选择midjourney,如果有换脸模型,可以选择swap_face
2.
地址填写上游new api的地址,例如:http://localhost:
808
0
2.
地址填写上游new api的地址,例如:http://localhost:
300
0
3.
密钥填写上游new api的密钥
3.
密钥填写上游new api的密钥
\ No newline at end of file
## 任务提交
### 绘图变化
**接口地址**
:
`/mj/submit/change`
**请求方式**
:
`POST`
**请求数据类型**
:
`application/json`
**响应数据类型**
:
`*/*`
**接口描述**
:
**请求示例**
:
```
javascript
{
"action"
:
"UPSCALE"
,
"index"
:
1
,
"notifyHook"
:
""
,
"state"
:
""
,
"taskId"
:
"1320098173412546"
}
```
**请求参数**
:
| 参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema |
|------------------------|-----------------------------------------------------------------------|------|-------|----------------|----------|
| changeDTO | changeDTO | body | true | 变化任务提交参数 | 变化任务提交参数 |
|
  
action | UPSCALE(放大); VARIATION(变换); REROLL(重新生成),可用值:UPSCALE,VARIATION,REROLL | | true | string | |
|
  
index | 序号(1~4), action为UPSCALE,VARIATION时必传 | | false | integer(int32) | |
|
  
notifyHook | 回调地址, 为空时使用全局notifyHook | | false | string | |
|
  
state | 自定义参数 | | false | string | |
|
  
taskId | 任务ID | | true | string | |
**响应状态**
:
| 状态码 | 说明 | schema |
|-----|--------------|--------|
| 200 | OK | 提交结果 |
| 201 | Created | |
| 401 | Unauthorized | |
| 403 | Forbidden | |
| 404 | Not Found | |
**响应参数**
:
| 参数名称 | 参数说明 | 类型 | schema |
|-------------|-------------------------------------------|----------------|----------------|
| code | 状态码: 1(提交成功), 21(已存在), 22(排队中), other(错误) | integer(int32) | integer(int32) |
| description | 描述 | string | |
| properties | 扩展字段 | object | |
| result | 任务ID | string | |
**响应示例**
:
```
javascript
{
"code"
:
1
,
"description"
:
"提交成功"
,
"properties"
:
{
}
,
"result"
:
1320098173412546
}
```
### 提交Imagine任务
**接口地址**
:
`/mj/submit/imagine`
**请求方式**
:
`POST`
**请求数据类型**
:
`application/json`
**响应数据类型**
:
`*/*`
**接口描述**
:
**请求示例**
:
```
javascript
{
"base64"
:
""
,
"notifyHook"
:
""
,
"prompt"
:
"Cat"
,
"state"
:
""
}
```
**请求参数**
:
| 参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema |
|------------------------|-------------------------|------|-------|-------------|-------------|
| imagineDTO | imagineDTO | body | true | Imagine提交参数 | Imagine提交参数 |
|
  
base64 | 垫图base64 | | false | string | |
|
  
notifyHook | 回调地址, 为空时使用全局notifyHook | | false | string | |
|
  
prompt | 提示词 | | true | string | |
|
  
state | 自定义参数 | | false | string | |
**响应状态**
:
| 状态码 | 说明 | schema |
|-----|--------------|--------|
| 200 | OK | 提交结果 |
| 201 | Created | |
| 401 | Unauthorized | |
| 403 | Forbidden | |
| 404 | Not Found | |
**响应参数**
:
| 参数名称 | 参数说明 | 类型 | schema |
|-------------|-------------------------------------------|----------------|----------------|
| code | 状态码: 1(提交成功), 21(已存在), 22(排队中), other(错误) | integer(int32) | integer(int32) |
| description | 描述 | string | |
| properties | 扩展字段 | object | |
| result | 任务ID | string | |
**响应示例**
:
```
javascript
{
"code"
:
1
,
"description"
:
"提交成功"
,
"properties"
:
{
}
,
"result"
:
1320098173412546
}
```
## 任务查询
### 指定ID获取任务
**接口地址**
:
`/mj/task/{id}/fetch`
**请求方式**
:
`GET`
**请求数据类型**
:
`application/x-www-form-urlencoded`
**响应数据类型**
:
`*/*`
**接口描述**
:
**请求参数**
:
| 参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema |
|------|------|------|-------|--------|--------|
| id | 任务ID | path | false | string | |
**响应状态**
:
| 状态码 | 说明 | schema |
|-----|--------------|--------|
| 200 | OK | 任务 |
| 401 | Unauthorized | |
| 403 | Forbidden | |
| 404 | Not Found | |
**响应参数**
:
| 参数名称 | 参数说明 | 类型 | schema |
|-------------|----------------------------------------------------------|----------------|----------------|
| action | 可用值:IMAGINE,UPSCALE,VARIATION,REROLL,DESCRIBE,BLEND | string | |
| description | 任务描述 | string | |
| failReason | 失败原因 | string | |
| finishTime | 结束时间 | integer(int64) | integer(int64) |
| id | 任务ID | string | |
| imageUrl | 图片url | string | |
| progress | 任务进度 | string | |
| prompt | 提示词 | string | |
| promptEn | 提示词-英文 | string | |
| startTime | 开始执行时间 | integer(int64) | integer(int64) |
| state | 自定义参数 | string | |
| status | 任务状态,可用值:NOT_START,SUBMITTED,IN_PROGRESS,FAILURE,SUCCESS | string | |
| submitTime | 提交时间 | integer(int64) | integer(int64) |
**响应示例**
:
```
javascript
{
"action"
:
""
,
"description"
:
""
,
"failReason"
:
""
,
"finishTime"
:
0
,
"id"
:
""
,
"imageUrl"
:
""
,
"progress"
:
""
,
"prompt"
:
""
,
"promptEn"
:
""
,
"startTime"
:
0
,
"state"
:
""
,
"status"
:
""
,
"submitTime"
:
0
}
```
\ No newline at end of file
constant/midjourney.go
View file @
62bca310
...
@@ -14,4 +14,5 @@ const (
...
@@ -14,4 +14,5 @@ const (
MjActionInPaint
=
"INPAINT"
MjActionInPaint
=
"INPAINT"
MjActionInPaintPre
=
"INPAINT_PRE"
MjActionInPaintPre
=
"INPAINT_PRE"
MjActionZoom
=
"ZOOM"
MjActionZoom
=
"ZOOM"
MjActionShorten
=
"SHORTEN"
)
)
controller/midjourney.go
View file @
62bca310
...
@@ -263,6 +263,10 @@ func UpdateMidjourneyTaskBulk() {
...
@@ -263,6 +263,10 @@ func UpdateMidjourneyTaskBulk() {
task
.
ImageUrl
=
responseItem
.
ImageUrl
task
.
ImageUrl
=
responseItem
.
ImageUrl
task
.
Status
=
responseItem
.
Status
task
.
Status
=
responseItem
.
Status
task
.
FailReason
=
responseItem
.
FailReason
task
.
FailReason
=
responseItem
.
FailReason
if
responseItem
.
Properties
!=
nil
{
propertiesStr
,
_
:=
json
.
Marshal
(
responseItem
.
Properties
)
task
.
Properties
=
string
(
propertiesStr
)
}
if
responseItem
.
Buttons
!=
nil
{
if
responseItem
.
Buttons
!=
nil
{
buttonStr
,
_
:=
json
.
Marshal
(
responseItem
.
Buttons
)
buttonStr
,
_
:=
json
.
Marshal
(
responseItem
.
Buttons
)
task
.
Buttons
=
string
(
buttonStr
)
task
.
Buttons
=
string
(
buttonStr
)
...
...
controller/relay.go
View file @
62bca310
...
@@ -68,6 +68,9 @@ func RelayMidjourney(c *gin.Context) {
...
@@ -68,6 +68,9 @@ func RelayMidjourney(c *gin.Context) {
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/modal"
)
{
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/modal"
)
{
// midjourney plus
// midjourney plus
relayMode
=
relayconstant
.
RelayModeMidjourneyModal
relayMode
=
relayconstant
.
RelayModeMidjourneyModal
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/shorten"
)
{
// midjourney plus
relayMode
=
relayconstant
.
RelayModeMidjourneyShorten
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/imagine"
)
{
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/imagine"
)
{
relayMode
=
relayconstant
.
RelayModeMidjourneyImagine
relayMode
=
relayconstant
.
RelayModeMidjourneyImagine
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/blend"
)
{
}
else
if
strings
.
HasPrefix
(
c
.
Request
.
URL
.
Path
,
"/mj/submit/blend"
)
{
...
...
dto/midjourney.go
View file @
62bca310
...
@@ -39,6 +39,7 @@ type MidjourneyDto struct {
...
@@ -39,6 +39,7 @@ type MidjourneyDto struct {
FailReason
string
`json:"failReason"`
FailReason
string
`json:"failReason"`
Buttons
any
`json:"buttons"`
Buttons
any
`json:"buttons"`
MaskBase64
string
`json:"maskBase64"`
MaskBase64
string
`json:"maskBase64"`
Properties
*
Properties
`json:"properties"`
}
}
type
MidjourneyStatus
struct
{
type
MidjourneyStatus
struct
{
...
@@ -70,3 +71,8 @@ type ActionButton struct {
...
@@ -70,3 +71,8 @@ type ActionButton struct {
Type
any
`json:"type"`
Type
any
`json:"type"`
Style
any
`json:"style"`
Style
any
`json:"style"`
}
}
type
Properties
struct
{
FinalPrompt
string
`json:"finalPrompt"`
FinalZhPrompt
string
`json:"finalZhPrompt"`
}
model/midjourney.go
View file @
62bca310
...
@@ -20,6 +20,7 @@ type Midjourney struct {
...
@@ -20,6 +20,7 @@ type Midjourney struct {
ChannelId
int
`json:"channel_id"`
ChannelId
int
`json:"channel_id"`
Quota
int
`json:"quota"`
Quota
int
`json:"quota"`
Buttons
string
`json:"buttons"`
Buttons
string
`json:"buttons"`
Properties
string
`json:"properties"`
}
}
// TaskQueryParams 用于包含所有搜索条件的结构体,可以根据需求添加更多字段
// TaskQueryParams 用于包含所有搜索条件的结构体,可以根据需求添加更多字段
...
...
relay/constant/relay_mode.go
View file @
62bca310
...
@@ -23,6 +23,7 @@ const (
...
@@ -23,6 +23,7 @@ const (
RelayModeAudioTranslation
RelayModeAudioTranslation
RelayModeMidjourneyAction
RelayModeMidjourneyAction
RelayModeMidjourneyModal
RelayModeMidjourneyModal
RelayModeMidjourneyShorten
)
)
func
Path2RelayMode
(
path
string
)
int
{
func
Path2RelayMode
(
path
string
)
int
{
...
...
relay/relay-mj.go
View file @
62bca310
...
@@ -31,6 +31,7 @@ var DefaultModelPrice = map[string]float64{
...
@@ -31,6 +31,7 @@ var DefaultModelPrice = map[string]float64{
"mj_inpaint_pre"
:
0
,
"mj_inpaint_pre"
:
0
,
"mj_describe"
:
0.05
,
"mj_describe"
:
0.05
,
"mj_upscale"
:
0.05
,
"mj_upscale"
:
0.05
,
"swap_face"
:
0.05
,
}
}
func
RelayMidjourneyImage
(
c
*
gin
.
Context
)
{
func
RelayMidjourneyImage
(
c
*
gin
.
Context
)
{
...
@@ -140,6 +141,13 @@ func coverMidjourneyTaskDto(c *gin.Context, originTask *model.Midjourney) (midjo
...
@@ -140,6 +141,13 @@ func coverMidjourneyTaskDto(c *gin.Context, originTask *model.Midjourney) (midjo
midjourneyTask
.
Buttons
=
buttons
midjourneyTask
.
Buttons
=
buttons
}
}
}
}
if
originTask
.
Properties
!=
""
{
var
properties
dto
.
Properties
err
:=
json
.
Unmarshal
([]
byte
(
originTask
.
Properties
),
&
properties
)
if
err
==
nil
{
midjourneyTask
.
Properties
=
&
properties
}
}
return
return
}
}
...
@@ -260,9 +268,11 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
...
@@ -260,9 +268,11 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
if
midjRequest
.
Prompt
==
""
{
if
midjRequest
.
Prompt
==
""
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjRequestError
,
"prompt_is_required"
)
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjRequestError
,
"prompt_is_required"
)
}
}
midjRequest
.
Action
=
"IMAGINE"
midjRequest
.
Action
=
constant
.
MjActionImagine
}
else
if
relayMode
==
relayconstant
.
RelayModeMidjourneyDescribe
{
//按图生文任务,此类任务可重复
}
else
if
relayMode
==
relayconstant
.
RelayModeMidjourneyDescribe
{
//按图生文任务,此类任务可重复
midjRequest
.
Action
=
"DESCRIBE"
midjRequest
.
Action
=
constant
.
MjActionDescribe
}
else
if
relayMode
==
relayconstant
.
RelayModeMidjourneyShorten
{
//缩短任务,此类任务可重复,plus only
midjRequest
.
Action
=
constant
.
MjActionShorten
}
else
if
relayMode
==
relayconstant
.
RelayModeMidjourneyBlend
{
//绘画任务,此类任务可重复
}
else
if
relayMode
==
relayconstant
.
RelayModeMidjourneyBlend
{
//绘画任务,此类任务可重复
midjRequest
.
Action
=
"BLEND"
midjRequest
.
Action
=
"BLEND"
}
else
if
midjRequest
.
TaskId
!=
""
{
//放大、变换任务,此类任务,如果重复且已有结果,远端api会直接返回最终结果
}
else
if
midjRequest
.
TaskId
!=
""
{
//放大、变换任务,此类任务,如果重复且已有结果,远端api会直接返回最终结果
...
@@ -292,7 +302,7 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
...
@@ -292,7 +302,7 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjRequestError
,
"mask_base64_is_required"
)
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjRequestError
,
"mask_base64_is_required"
)
}
}
mjId
=
midjRequest
.
TaskId
mjId
=
midjRequest
.
TaskId
midjRequest
.
Action
=
"INPAINT"
midjRequest
.
Action
=
constant
.
MjActionInPaint
}
}
originTask
:=
model
.
GetByMJId
(
userId
,
mjId
)
originTask
:=
model
.
GetByMJId
(
userId
,
mjId
)
...
@@ -418,25 +428,16 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
...
@@ -418,25 +428,16 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
defer
cancel
()
defer
cancel
()
resp
,
err
:=
service
.
GetHttpClient
()
.
Do
(
req
)
resp
,
err
:=
service
.
GetHttpClient
()
.
Do
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
return
&
dto
.
MidjourneyResponse
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"do_request_failed"
)
Code
:
5
,
Description
:
"do_request_failed"
,
}
}
}
err
=
req
.
Body
.
Close
()
err
=
req
.
Body
.
Close
()
if
err
!=
nil
{
if
err
!=
nil
{
return
&
dto
.
MidjourneyResponse
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"close_request_body_failed"
)
Code
:
5
,
Description
:
"close_request_body_failed"
,
}
}
}
err
=
c
.
Request
.
Body
.
Close
()
err
=
c
.
Request
.
Body
.
Close
()
if
err
!=
nil
{
if
err
!=
nil
{
return
&
dto
.
MidjourneyResponse
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"close_request_body_failed"
)
Code
:
5
,
Description
:
"close_request_body_failed"
,
}
}
}
var
midjResponse
dto
.
MidjourneyResponse
var
midjResponse
dto
.
MidjourneyResponse
...
@@ -464,33 +465,20 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
...
@@ -464,33 +465,20 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
responseBody
,
err
:=
io
.
ReadAll
(
resp
.
Body
)
responseBody
,
err
:=
io
.
ReadAll
(
resp
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
return
&
dto
.
MidjourneyResponse
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"read_response_body_failed"
)
Code
:
4
,
Description
:
"read_response_body_failed"
,
}
}
}
err
=
resp
.
Body
.
Close
()
err
=
resp
.
Body
.
Close
()
if
err
!=
nil
{
if
err
!=
nil
{
return
&
dto
.
MidjourneyResponse
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"close_response_body_failed"
)
Code
:
4
,
Description
:
"close_response_body_failed"
,
}
}
if
resp
.
StatusCode
!=
200
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"unexpected_response_status"
)
}
}
err
=
json
.
Unmarshal
(
responseBody
,
&
midjResponse
)
err
=
json
.
Unmarshal
(
responseBody
,
&
midjResponse
)
log
.
Printf
(
"responseBody: %s"
,
string
(
responseBody
))
log
.
Printf
(
"responseBody: %s"
,
string
(
responseBody
))
log
.
Printf
(
"midjResponse: %v"
,
midjResponse
)
log
.
Printf
(
"midjResponse: %v"
,
midjResponse
)
if
resp
.
StatusCode
!=
200
{
return
&
dto
.
MidjourneyResponse
{
Code
:
4
,
Description
:
"fail_to_fetch_midjourney status_code: "
+
strconv
.
Itoa
(
resp
.
StatusCode
),
}
}
if
err
!=
nil
{
if
err
!=
nil
{
return
&
dto
.
MidjourneyResponse
{
return
service
.
MidjourneyErrorWrapper
(
constant
.
MjErrorUnknown
,
"unmarshal_response_body_failed"
)
Code
:
4
,
Description
:
"unmarshal_response_body_failed"
,
}
}
}
// 文档:https://github.com/novicezk/midjourney-proxy/blob/main/docs/api.md
// 文档:https://github.com/novicezk/midjourney-proxy/blob/main/docs/api.md
...
@@ -651,7 +639,7 @@ func coverPlusActionToNormalAction(midjRequest *dto.MidjourneyRequest) *dto.Midj
...
@@ -651,7 +639,7 @@ func coverPlusActionToNormalAction(midjRequest *dto.MidjourneyRequest) *dto.Midj
}
else
if
strings
.
Contains
(
action
,
"pan"
)
{
}
else
if
strings
.
Contains
(
action
,
"pan"
)
{
midjRequest
.
Action
=
constant
.
MjActionVariation
midjRequest
.
Action
=
constant
.
MjActionVariation
midjRequest
.
Index
=
1
midjRequest
.
Index
=
1
}
else
if
action
==
"Outpaint"
||
strings
.
Contains
(
action
,
"CustomZoom"
)
{
}
else
if
action
==
"Outpaint"
||
action
==
"CustomZoom"
{
midjRequest
.
Action
=
constant
.
MjActionZoom
midjRequest
.
Action
=
constant
.
MjActionZoom
midjRequest
.
Index
=
1
midjRequest
.
Index
=
1
}
else
if
action
==
"Inpaint"
{
}
else
if
action
==
"Inpaint"
{
...
...
router/relay-router.go
View file @
62bca310
...
@@ -48,6 +48,7 @@ func SetRelayRouter(router *gin.Engine) {
...
@@ -48,6 +48,7 @@ func SetRelayRouter(router *gin.Engine) {
relayMjRouter
.
Use
(
middleware
.
TokenAuth
(),
middleware
.
Distribute
())
relayMjRouter
.
Use
(
middleware
.
TokenAuth
(),
middleware
.
Distribute
())
{
{
relayMjRouter
.
POST
(
"/submit/action"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/action"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/shorten"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/modal"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/modal"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/imagine"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/imagine"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/change"
,
controller
.
RelayMidjourney
)
relayMjRouter
.
POST
(
"/submit/change"
,
controller
.
RelayMidjourney
)
...
...
web/src/components/MjLogsTable.js
View file @
62bca310
...
@@ -35,6 +35,8 @@ function renderType(type) {
...
@@ -35,6 +35,8 @@ function renderType(type) {
return
<
Tag
color
=
"yellow"
size
=
'large'
>
图生文
<
/Tag>
;
return
<
Tag
color
=
"yellow"
size
=
'large'
>
图生文
<
/Tag>
;
case
'BLEAND'
:
case
'BLEAND'
:
return
<
Tag
color
=
"lime"
size
=
'large'
>
图混合
<
/Tag>
;
return
<
Tag
color
=
"lime"
size
=
'large'
>
图混合
<
/Tag>
;
case
'SHORTEN'
:
return
<
Tag
color
=
"pink"
size
=
'large'
>
缩词
<
/Tag>
;
case
'REROLL'
:
case
'REROLL'
:
return
<
Tag
color
=
"indigo"
size
=
'large'
>
重绘
<
/Tag>
;
return
<
Tag
color
=
"indigo"
size
=
'large'
>
重绘
<
/Tag>
;
case
'INPAINT'
:
case
'INPAINT'
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment