Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
admin-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
admin-backend
Commits
d6274045
Commit
d6274045
authored
Mar 29, 2024
by
brent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify version and favorite
parent
c41d218a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
158 additions
and
58 deletions
+158
-58
default.go
controllers/default.go
+1
-1
favorite.go
controllers/favorite.go
+16
-15
task.go
controllers/task.go
+82
-38
version.go
controllers/version.go
+57
-2
task.go
models/task.go
+2
-2
No files found.
controllers/default.go
View file @
d6274045
...
@@ -51,7 +51,7 @@ func (server *MainController) respond(code int, message string, data ...interfac
...
@@ -51,7 +51,7 @@ func (server *MainController) respond(code int, message string, data ...interfac
func
(
server
*
MainController
)
Check
()
(
*
models
.
JwtPayload
,
error
)
{
func
(
server
*
MainController
)
Check
()
(
*
models
.
JwtPayload
,
error
)
{
token
:=
server
.
Ctx
.
Input
.
Header
(
"Authorization"
)
token
:=
server
.
Ctx
.
Input
.
Header
(
"Authorization"
)
if
token
==
""
{
if
token
==
""
||
token
==
"null"
||
token
==
"undefined"
{
return
nil
,
errors
.
New
(
"error: login expire"
)
return
nil
,
errors
.
New
(
"error: login expire"
)
}
}
// token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwianNvbiI6ImdhbmdhbiIsImV4cCI6MTU3ODU1NDMyOCwiaWF0IjoxNTc4NTUzNzI4LCJpc3MiOiJnYW5nYW4ifQ.jOlMlfLMFBJvyrJTLagrwQx2931LzM7Z0EVMFZ75xYI"
// token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwianNvbiI6ImdhbmdhbiIsImV4cCI6MTU3ODU1NDMyOCwiaWF0IjoxNTc4NTUzNzI4LCJpc3MiOiJnYW5nYW4ifQ.jOlMlfLMFBJvyrJTLagrwQx2931LzM7Z0EVMFZ75xYI"
...
...
controllers/favorite.go
View file @
d6274045
...
@@ -35,13 +35,14 @@ func (server *FavoriteController) Add() {
...
@@ -35,13 +35,14 @@ func (server *FavoriteController) Add() {
return
return
}
}
checkFavorite
:=
&
models
.
Favorite
{
UserId
:
info
.
UserID
,
TaskTypeId
:
appRequest
.
TaskTypeId
}
checkFavorite
:=
&
models
.
Favorite
{
UserId
:
info
.
UserID
,
TaskTypeId
:
appRequest
.
TaskTypeId
,
Deleted
:
0
}
err
=
mysql
.
GetMysqlInstace
()
.
Ormer
.
Read
(
checkFavorite
,
"user_id"
,
"task_type_id"
)
err
=
mysql
.
GetMysqlInstace
()
.
Ormer
.
Read
(
checkFavorite
,
"user_id"
,
"task_type_id"
,
"deleted"
)
if
err
==
nil
{
if
err
==
nil
{
server
.
respond
(
models
.
BusinessFailed
,
"You have already followed this model"
)
server
.
respond
(
models
.
BusinessFailed
,
"You have already followed this model"
)
return
return
}
}
timestamp
:=
time
.
Now
()
timestamp
:=
time
.
Now
()
appRequest
.
UserId
=
info
.
UserID
appRequest
.
CreatedTime
=
timestamp
appRequest
.
CreatedTime
=
timestamp
appRequest
.
UpdatedTime
=
timestamp
appRequest
.
UpdatedTime
=
timestamp
appRequest
.
Deleted
=
0
appRequest
.
Deleted
=
0
...
@@ -72,8 +73,8 @@ func (server *FavoriteController) Cancel() {
...
@@ -72,8 +73,8 @@ func (server *FavoriteController) Cancel() {
server
.
respond
(
models
.
MissingParameter
,
"Missing task_type_id parameter"
)
server
.
respond
(
models
.
MissingParameter
,
"Missing task_type_id parameter"
)
return
return
}
}
checkFavorite
:=
&
models
.
Favorite
{
UserId
:
info
.
UserID
,
TaskTypeId
:
appRequest
.
TaskTypeId
}
checkFavorite
:=
&
models
.
Favorite
{
UserId
:
info
.
UserID
,
TaskTypeId
:
appRequest
.
TaskTypeId
,
Deleted
:
0
}
err
=
mysql
.
GetMysqlInstace
()
.
Ormer
.
Read
(
checkFavorite
,
"user_id"
,
"task_type_id"
)
err
=
mysql
.
GetMysqlInstace
()
.
Ormer
.
Read
(
checkFavorite
,
"user_id"
,
"task_type_id"
,
"deleted"
)
if
err
!=
nil
{
if
err
!=
nil
{
server
.
respond
(
models
.
BusinessFailed
,
"You have not followed this model"
)
server
.
respond
(
models
.
BusinessFailed
,
"You have not followed this model"
)
return
return
...
@@ -112,8 +113,8 @@ func (server *FavoriteController) IsFavorite() {
...
@@ -112,8 +113,8 @@ func (server *FavoriteController) IsFavorite() {
}{
}{
IsFavorite
:
false
,
IsFavorite
:
false
,
}
}
checkFavorite
:=
&
models
.
Favorite
{
UserId
:
info
.
UserID
,
TaskTypeId
:
appRequest
.
TaskTypeId
}
checkFavorite
:=
&
models
.
Favorite
{
UserId
:
info
.
UserID
,
TaskTypeId
:
appRequest
.
TaskTypeId
,
Deleted
:
0
}
err
=
mysql
.
GetMysqlInstace
()
.
Ormer
.
Read
(
checkFavorite
,
"user_id"
,
"task_type_id"
)
err
=
mysql
.
GetMysqlInstace
()
.
Ormer
.
Read
(
checkFavorite
,
"user_id"
,
"task_type_id"
,
"deleted"
)
if
err
!=
nil
{
if
err
!=
nil
{
server
.
respond
(
http
.
StatusOK
,
""
,
responseData
)
server
.
respond
(
http
.
StatusOK
,
""
,
responseData
)
return
return
...
@@ -123,11 +124,11 @@ func (server *FavoriteController) IsFavorite() {
...
@@ -123,11 +124,11 @@ func (server *FavoriteController) IsFavorite() {
}
}
func
(
server
*
FavoriteController
)
Lists
()
{
func
(
server
*
FavoriteController
)
Lists
()
{
//
info, err := server.Check()
info
,
err
:=
server
.
Check
()
//
if err != nil {
if
err
!=
nil
{
//
server.respond(http.StatusUnauthorized, err.Error())
server
.
respond
(
http
.
StatusUnauthorized
,
err
.
Error
())
//
return
return
//
}
}
body
:=
server
.
Ctx
.
Input
.
RequestBody
body
:=
server
.
Ctx
.
Input
.
RequestBody
appRequest
:=
models
.
AppRequest
{}
appRequest
:=
models
.
AppRequest
{}
_
=
json
.
Unmarshal
(
body
,
&
appRequest
)
//解析body中数据
_
=
json
.
Unmarshal
(
body
,
&
appRequest
)
//解析body中数据
...
@@ -164,10 +165,10 @@ func (server *FavoriteController) Lists() {
...
@@ -164,10 +165,10 @@ func (server *FavoriteController) Lists() {
InnerJoin
(
"task_type"
)
.
On
(
"favorite.task_type_id = task_type.id"
)
InnerJoin
(
"task_type"
)
.
On
(
"favorite.task_type_id = task_type.id"
)
countQB
.
Where
(
"favorite.deleted = 0"
)
countQB
.
Where
(
"favorite.deleted = 0"
)
queryQB
.
Where
(
"favorite.deleted = 0"
)
queryQB
.
Where
(
"favorite.deleted = 0"
)
//
if !(info.Role == 1 || info.Role == 2) {
if
!
(
info
.
Role
==
1
||
info
.
Role
==
2
)
{
//
countQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
countQB
.
And
(
fmt
.
Sprintf
(
"user_id = '%d'"
,
info
.
UserID
))
//
queryQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
queryQB
.
And
(
fmt
.
Sprintf
(
"user_id = '%d'"
,
info
.
UserID
))
//
}
}
if
appRequest
.
Keyword
!=
""
{
if
appRequest
.
Keyword
!=
""
{
keyword
:=
"%"
+
appRequest
.
Keyword
+
"%"
keyword
:=
"%"
+
appRequest
.
Keyword
+
"%"
countQB
.
And
(
fmt
.
Sprintf
(
"name like '%s'"
,
keyword
))
countQB
.
And
(
fmt
.
Sprintf
(
"name like '%s'"
,
keyword
))
...
...
controllers/task.go
View file @
d6274045
...
@@ -2393,20 +2393,37 @@ func (server *TaskController) Models() {
...
@@ -2393,20 +2393,37 @@ func (server *TaskController) Models() {
countQB
.
Select
(
"count(*) AS total"
)
.
countQB
.
Select
(
"count(*) AS total"
)
.
From
(
"task_type"
)
.
Where
(
"deleted = 0"
)
From
(
"task_type"
)
.
Where
(
"deleted = 0"
)
queryQB
.
Select
(
"task_type.id"
,
info
,
_
:=
server
.
Check
()
"task_type.name AS tit"
,
if
info
!=
nil
{
"task_type.type"
,
cond
:=
fmt
.
Sprintf
(
"favorite.task_type_id = task_type.id and user_id = %d and favorite.deleted = 0"
,
info
.
UserID
)
"task_type.desc AS content"
,
queryQB
.
Select
(
"task_type.id"
,
"task_type.sort"
,
"task_type.name AS tit"
,
"task_type.tags"
,
"task_type.type"
,
"task_type.category"
,
"task_type.desc AS content"
,
"task_type.base_model"
,
"task_type.sort"
,
"task_type.model"
,
"task_type.tags"
,
"task_type.access_status"
,
"task_type.category"
,
"task_type.publish_status"
,
"task_type.base_model"
,
"favorite.id AS is_favorite"
)
.
"task_type.model"
,
From
(
"task_type"
)
.
"task_type.access_status"
,
LeftJoin
(
"favorite"
)
.
On
(
"favorite.task_type_id = task_type.id and favorite.deleted = 0"
)
"task_type.publish_status"
,
"favorite.id AS is_favorite"
)
.
From
(
"task_type"
)
.
LeftJoin
(
"favorite"
)
.
On
(
cond
)
}
else
{
queryQB
.
Select
(
"task_type.id"
,
"task_type.name AS tit"
,
"task_type.type"
,
"task_type.desc AS content"
,
"task_type.sort"
,
"task_type.tags"
,
"task_type.category"
,
"task_type.base_model"
,
"task_type.model"
,
"task_type.access_status"
,
"task_type.publish_status"
)
.
From
(
"task_type"
)
}
queryQB
.
Where
(
"task_type.deleted = 0"
)
queryQB
.
Where
(
"task_type.deleted = 0"
)
if
appRequest
.
Id
!=
0
{
if
appRequest
.
Id
!=
0
{
...
@@ -2534,30 +2551,57 @@ func (server *TaskController) ModelById() {
...
@@ -2534,30 +2551,57 @@ func (server *TaskController) ModelById() {
queryQB
,
_
:=
orm
.
NewQueryBuilder
(
"mysql"
)
queryQB
,
_
:=
orm
.
NewQueryBuilder
(
"mysql"
)
queryQB
.
Select
(
"task_type.id"
,
info
,
_
:=
server
.
Check
()
"task_type.name AS tit"
,
if
info
!=
nil
{
"task_type.type"
,
cond
:=
fmt
.
Sprintf
(
"favorite.task_type_id = task_type.id and user_id = %d and favorite.deleted = 0"
,
info
.
UserID
)
"task_type.desc AS content"
,
queryQB
.
Select
(
"task_type.id"
,
"task_type.sort"
,
"task_type.name AS tit"
,
"task_type.tags"
,
"task_type.type"
,
"task_type.estimat_exe_time"
,
"task_type.desc AS content"
,
"task_type.price"
,
"task_type.sort"
,
"task_type.unit"
,
"task_type.tags"
,
"task_type.examples"
,
"task_type.estimat_exe_time"
,
"task_type.codes"
,
"task_type.price"
,
"task_type.base_model"
,
"task_type.unit"
,
"task_type.model"
,
"task_type.examples"
,
"task_type.api_path"
,
"task_type.codes"
,
"task_type.api_doc_url"
,
"task_type.base_model"
,
"task_type.api_doc_content"
,
"task_type.model"
,
"task_type.version"
,
"task_type.api_path"
,
"task_type.category"
,
"task_type.api_doc_url"
,
"task_type.form"
,
"task_type.api_doc_content"
,
"task_type.access_status"
,
"task_type.version"
,
"task_type.publish_status"
,
"task_type.category"
,
"favorite.id AS is_favorite"
)
.
"task_type.form"
,
From
(
"task_type"
)
.
"task_type.access_status"
,
LeftJoin
(
"favorite"
)
.
On
(
"favorite.task_type_id = task_type.id and favorite.deleted = 0"
)
"task_type.publish_status"
,
"favorite.id AS is_favorite"
)
.
From
(
"task_type"
)
.
LeftJoin
(
"favorite"
)
.
On
(
cond
)
}
else
{
queryQB
.
Select
(
"task_type.id"
,
"task_type.name AS tit"
,
"task_type.type"
,
"task_type.desc AS content"
,
"task_type.sort"
,
"task_type.tags"
,
"task_type.estimat_exe_time"
,
"task_type.price"
,
"task_type.unit"
,
"task_type.examples"
,
"task_type.codes"
,
"task_type.base_model"
,
"task_type.model"
,
"task_type.api_path"
,
"task_type.api_doc_url"
,
"task_type.api_doc_content"
,
"task_type.version"
,
"task_type.category"
,
"task_type.form"
,
"task_type.access_status"
,
"task_type.publish_status"
)
.
From
(
"task_type"
)
}
queryQB
.
Where
(
"task_type.deleted = 0"
)
.
queryQB
.
Where
(
"task_type.deleted = 0"
)
.
And
(
fmt
.
Sprintf
(
"task_type.id = '%d'"
,
appRequest
.
Id
))
And
(
fmt
.
Sprintf
(
"task_type.id = '%d'"
,
appRequest
.
Id
))
...
...
controllers/version.go
View file @
d6274045
...
@@ -4,8 +4,11 @@ import (
...
@@ -4,8 +4,11 @@ import (
"ai_developer_admin/libs/mysql"
"ai_developer_admin/libs/mysql"
"ai_developer_admin/models"
"ai_developer_admin/models"
"encoding/json"
"encoding/json"
"fmt"
"github.com/beego/beego/v2/core/logs"
"github.com/beego/beego/v2/core/logs"
"net/http"
"net/http"
"sort"
"strings"
"time"
"time"
)
)
...
@@ -148,11 +151,63 @@ func (server *VersionController) Lists() {
...
@@ -148,11 +151,63 @@ func (server *VersionController) Lists() {
}
}
qs
:=
mysql
.
GetMysqlInstace
()
.
Ormer
.
QueryTable
(
"task_type_version"
)
.
qs
:=
mysql
.
GetMysqlInstace
()
.
Ormer
.
QueryTable
(
"task_type_version"
)
.
Filter
(
"deleted"
,
0
)
.
Filter
(
"task_type_id"
,
appRequest
.
TaskTypeId
)
.
GroupBy
(
"version
"
)
Filter
(
"deleted"
,
0
)
.
Filter
(
"task_type_id"
,
appRequest
.
TaskTypeId
)
.
OrderBy
(
"-created_time
"
)
count
,
err
:=
qs
.
Count
()
count
,
err
:=
qs
.
Count
()
var
lists
[]
*
models
.
TaskTypeVersion
var
lists
[]
*
models
.
TaskTypeVersion
if
count
>
0
{
if
count
>
0
{
qs
.
All
(
&
lists
)
qs
.
All
(
&
lists
)
}
}
server
.
respond
(
http
.
StatusOK
,
""
,
lists
)
temp
:=
make
(
map
[
string
][]
*
models
.
TaskTypeVersion
)
for
_
,
value
:=
range
lists
{
temp
[
value
.
Version
]
=
append
(
temp
[
value
.
Version
],
value
)
}
keys
:=
make
([]
string
,
0
,
len
(
temp
))
for
key
:=
range
temp
{
keys
=
append
(
keys
,
key
)
}
sort
.
Slice
(
keys
,
func
(
i
,
j
int
)
bool
{
return
compareVersion
(
keys
[
i
],
keys
[
j
])
>
0
})
group
:=
make
(
map
[
string
][]
*
models
.
TaskTypeVersion
)
for
_
,
value
:=
range
keys
{
group
[
value
]
=
temp
[
value
]
}
server
.
respond
(
http
.
StatusOK
,
""
,
group
)
}
func
compareVersion
(
v1
,
v2
string
)
int
{
// 将版本号字符串按 "." 分割为切片
v1Parts
:=
strings
.
Split
(
v1
,
"."
)
v2Parts
:=
strings
.
Split
(
v2
,
"."
)
// 比较每个部分的数字大小
for
i
:=
0
;
i
<
len
(
v1Parts
)
&&
i
<
len
(
v2Parts
);
i
++
{
part1
:=
v1Parts
[
i
]
part2
:=
v2Parts
[
i
]
num1
:=
parseInt
(
part1
)
num2
:=
parseInt
(
part2
)
if
num1
<
num2
{
return
-
1
}
else
if
num1
>
num2
{
return
1
}
}
// 如果两个版本号相同,但长度不同,则长度较长的版本号更大
if
len
(
v1Parts
)
<
len
(
v2Parts
)
{
return
-
1
}
else
if
len
(
v1Parts
)
>
len
(
v2Parts
)
{
return
1
}
// 版本号相同
return
0
}
func
parseInt
(
s
string
)
int
{
var
result
int
fmt
.
Sscanf
(
s
,
"%d"
,
&
result
)
return
result
}
}
models/task.go
View file @
d6274045
...
@@ -61,9 +61,9 @@ type TaskTypeVersion struct {
...
@@ -61,9 +61,9 @@ type TaskTypeVersion struct {
Version
string
`json:"version";orm:"column(version)"`
Version
string
`json:"version";orm:"column(version)"`
VersionCode
string
`json:"version_code";orm:"column(version_code)"`
VersionCode
string
`json:"version_code";orm:"column(version_code)"`
Desc
string
`json:"desc";orm:"column(desc)"`
Desc
string
`json:"desc";orm:"column(desc)"`
Hash
int
`json:"hash";orm:"column(hash)"`
Hash
string
`json:"hash";orm:"column(hash)"`
TaskTypeId
int
`json:"task_type_id";orm:"column(task_type_id)"`
TaskTypeId
int
`json:"task_type_id";orm:"column(task_type_id)"`
Os
int
`json:"os";orm:"column(os)"`
Os
string
`json:"os";orm:"column(os)"`
CreatedTime
time
.
Time
`json:"created_time";orm:"column(created_time);type(datetime)"`
CreatedTime
time
.
Time
`json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime
time
.
Time
`json:"updated_time";orm:"column(updated_time);type(datetime)"`
UpdatedTime
time
.
Time
`json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted
int
`json:"deleted";orm:"column(deleted)"`
Deleted
int
`json:"deleted";orm:"column(deleted)"`
...
...
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