82 lines
2.8 KiB
Go
82 lines
2.8 KiB
Go
package api
|
|
|
|
import (
|
|
"reflect"
|
|
"time"
|
|
)
|
|
|
|
type Image struct {
|
|
ID int `json:"id" db:"id"`
|
|
Width int `json:"width" db:"width"`
|
|
Height int `json:"height" db:"height"`
|
|
Content string `json:"content" db:"content"`
|
|
Remark string `json:"remark" db:"remark"`
|
|
Description string `json:"description" db:"description"`
|
|
Tags string `json:"tags" db:"tags"`
|
|
Rank string `json:"rank" db:"rank"`
|
|
CommentNum int `json:"comment_num" db:"comment_num"`
|
|
ArticleCategoryTopId int `json:"article_category_top_id" db:"article_category_top_id"`
|
|
PraiseCount int `json:"praise_count" db:"praise_count"`
|
|
CollectCount int `json:"collect_count" db:"collect_count"`
|
|
ArticleID int `json:"article_id" db:"article_id"`
|
|
UserID int `json:"user_id" db:"user_id"`
|
|
User User `json:"user" db:"-"`
|
|
Article Article `json:"article" db:"-"`
|
|
CreateTime time.Time `json:"create_time" db:"create_time"`
|
|
UpdateTime time.Time `json:"update_time" db:"update_time"`
|
|
}
|
|
|
|
type User struct {
|
|
ID int `json:"id" db:"id"`
|
|
UserName *string `json:"user_name" db:"user_name"`
|
|
Avatar *string `json:"avatar" db:"avatar"`
|
|
Rank *string `json:"rank" db:"rank"`
|
|
CreateTime time.Time `json:"create_time" db:"create_time"`
|
|
UpdateTime time.Time `json:"update_time" db:"update_time"`
|
|
}
|
|
|
|
type Article struct {
|
|
ID int `json:"id" db:"id"`
|
|
Title string `json:"title" db:"title"`
|
|
Tags string `json:"tags" db:"tags"`
|
|
CreateTime time.Time `json:"create_time" db:"create_time"`
|
|
UpdateTime time.Time `json:"update_time" db:"update_time"`
|
|
}
|
|
|
|
// 利用反射获取每个结构体所有字段
|
|
func getFields(s interface{}) (fields []string) {
|
|
t := reflect.TypeOf(s)
|
|
for i := 0; i < t.NumField(); i++ {
|
|
fields = append(fields, t.Field(i).Name)
|
|
}
|
|
return fields
|
|
}
|
|
|
|
// 检查字段是否存在
|
|
func checkFields(fields []string, fields_list []string) bool {
|
|
for _, field := range fields {
|
|
if !contains(fields_list, field) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
// 判断字符串是否存在于字符串数组中
|
|
func contains(s []string, e string) bool {
|
|
for _, v := range s {
|
|
if v == e {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func QueryUserList(fields []string) (user_list []User) {
|
|
if !checkFields(fields, getFields(User{})) {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|