Commit d6274045 authored by brent's avatar brent

modify version and favorite

parent c41d218a
......@@ -51,7 +51,7 @@ func (server *MainController) respond(code int, message string, data ...interfac
func (server *MainController) Check() (*models.JwtPayload, error) {
token := server.Ctx.Input.Header("Authorization")
if token == "" {
if token == "" || token == "null" || token == "undefined" {
return nil, errors.New("error: login expire")
}
// token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwianNvbiI6ImdhbmdhbiIsImV4cCI6MTU3ODU1NDMyOCwiaWF0IjoxNTc4NTUzNzI4LCJpc3MiOiJnYW5nYW4ifQ.jOlMlfLMFBJvyrJTLagrwQx2931LzM7Z0EVMFZ75xYI"
......
......@@ -35,13 +35,14 @@ func (server *FavoriteController) Add() {
return
}
checkFavorite := &models.Favorite{UserId: info.UserID, TaskTypeId: appRequest.TaskTypeId}
err = mysql.GetMysqlInstace().Ormer.Read(checkFavorite, "user_id", "task_type_id")
checkFavorite := &models.Favorite{UserId: info.UserID, TaskTypeId: appRequest.TaskTypeId, Deleted: 0}
err = mysql.GetMysqlInstace().Ormer.Read(checkFavorite, "user_id", "task_type_id", "deleted")
if err == nil {
server.respond(models.BusinessFailed, "You have already followed this model")
return
}
timestamp := time.Now()
appRequest.UserId = info.UserID
appRequest.CreatedTime = timestamp
appRequest.UpdatedTime = timestamp
appRequest.Deleted = 0
......@@ -72,8 +73,8 @@ func (server *FavoriteController) Cancel() {
server.respond(models.MissingParameter, "Missing task_type_id parameter")
return
}
checkFavorite := &models.Favorite{UserId: info.UserID, TaskTypeId: appRequest.TaskTypeId}
err = mysql.GetMysqlInstace().Ormer.Read(checkFavorite, "user_id", "task_type_id")
checkFavorite := &models.Favorite{UserId: info.UserID, TaskTypeId: appRequest.TaskTypeId, Deleted: 0}
err = mysql.GetMysqlInstace().Ormer.Read(checkFavorite, "user_id", "task_type_id", "deleted")
if err != nil {
server.respond(models.BusinessFailed, "You have not followed this model")
return
......@@ -112,8 +113,8 @@ func (server *FavoriteController) IsFavorite() {
}{
IsFavorite: false,
}
checkFavorite := &models.Favorite{UserId: info.UserID, TaskTypeId: appRequest.TaskTypeId}
err = mysql.GetMysqlInstace().Ormer.Read(checkFavorite, "user_id", "task_type_id")
checkFavorite := &models.Favorite{UserId: info.UserID, TaskTypeId: appRequest.TaskTypeId, Deleted: 0}
err = mysql.GetMysqlInstace().Ormer.Read(checkFavorite, "user_id", "task_type_id", "deleted")
if err != nil {
server.respond(http.StatusOK, "", responseData)
return
......@@ -123,11 +124,11 @@ func (server *FavoriteController) IsFavorite() {
}
func (server *FavoriteController) Lists() {
//info, err := server.Check()
//if err != nil {
// server.respond(http.StatusUnauthorized, err.Error())
// return
//}
info, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
_ = json.Unmarshal(body, &appRequest) //解析body中数据
......@@ -164,10 +165,10 @@ func (server *FavoriteController) Lists() {
InnerJoin("task_type").On("favorite.task_type_id = task_type.id")
countQB.Where("favorite.deleted = 0")
queryQB.Where("favorite.deleted = 0")
//if !(info.Role == 1 || info.Role == 2) {
// countQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
// queryQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
//}
if !(info.Role == 1 || info.Role == 2) {
countQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
queryQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
}
if appRequest.Keyword != "" {
keyword := "%" + appRequest.Keyword + "%"
countQB.And(fmt.Sprintf("name like '%s'", keyword))
......
......@@ -2393,20 +2393,37 @@ func (server *TaskController) Models() {
countQB.Select("count(*) AS total").
From("task_type").Where("deleted = 0")
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",
"favorite.id AS is_favorite").
From("task_type").
LeftJoin("favorite").On("favorite.task_type_id = task_type.id and favorite.deleted = 0")
info, _ := server.Check()
if info != nil {
cond := fmt.Sprintf("favorite.task_type_id = task_type.id and user_id = %d and favorite.deleted = 0", info.UserID)
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",
"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")
if appRequest.Id != 0 {
......@@ -2534,30 +2551,57 @@ func (server *TaskController) ModelById() {
queryQB, _ := orm.NewQueryBuilder("mysql")
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",
"favorite.id AS is_favorite").
From("task_type").
LeftJoin("favorite").On("favorite.task_type_id = task_type.id and favorite.deleted = 0")
info, _ := server.Check()
if info != nil {
cond := fmt.Sprintf("favorite.task_type_id = task_type.id and user_id = %d and favorite.deleted = 0", info.UserID)
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",
"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").
And(fmt.Sprintf("task_type.id = '%d'", appRequest.Id))
......
......@@ -4,8 +4,11 @@ import (
"ai_developer_admin/libs/mysql"
"ai_developer_admin/models"
"encoding/json"
"fmt"
"github.com/beego/beego/v2/core/logs"
"net/http"
"sort"
"strings"
"time"
)
......@@ -148,11 +151,63 @@ func (server *VersionController) Lists() {
}
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()
var lists []*models.TaskTypeVersion
if count > 0 {
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
}
......@@ -61,9 +61,9 @@ type TaskTypeVersion struct {
Version string `json:"version";orm:"column(version)"`
VersionCode string `json:"version_code";orm:"column(version_code)"`
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)"`
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)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted)"`
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment