附加用户信息
This commit is contained in:
58
bin/main.go
58
bin/main.go
@@ -37,6 +37,21 @@ func LogComponent(startTime int64, r *http.Request) {
|
||||
log.Println(r.Method, r.URL.Path, endTime)
|
||||
}
|
||||
|
||||
type User struct {
|
||||
Id int `json:"id"`
|
||||
UserName string `json:"user_name"`
|
||||
CreateTime time.Time `json:"create_time"`
|
||||
UpdateTime time.Time `json:"update_time"`
|
||||
}
|
||||
|
||||
type Article struct {
|
||||
Id int `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Tags string `json:"tags"`
|
||||
CreateTime time.Time `json:"create_time"`
|
||||
UpdateTime time.Time `json:"update_time"`
|
||||
}
|
||||
|
||||
type Image struct {
|
||||
Id int `json:"id"`
|
||||
Width int `json:"width"`
|
||||
@@ -44,6 +59,8 @@ type Image struct {
|
||||
Content string `json:"content"`
|
||||
CreateTime time.Time `json:"create_time"`
|
||||
UpdateTime time.Time `json:"update_time"`
|
||||
User User `json:"user"`
|
||||
Article Article `json:"article"`
|
||||
}
|
||||
|
||||
type Tag struct {
|
||||
@@ -173,7 +190,7 @@ func main() {
|
||||
var images ListView
|
||||
var image_list []Image
|
||||
images.Page, images.PageSize = stringToInt(r.URL.Query().Get("page"), 1), stringToInt(r.URL.Query().Get("pageSize"), 10)
|
||||
rows, err := mysqlConnection.Database.Query("SELECT id, width, height, content, update_time, create_time FROM web_images"+conditions+" LIMIT ?, ?", (images.Page-1)*images.PageSize, images.PageSize)
|
||||
rows, err := mysqlConnection.Database.Query("SELECT id, width, height, content, update_time, create_time, user_id FROM web_images"+conditions+" LIMIT ?, ?", (images.Page-1)*images.PageSize, images.PageSize)
|
||||
if err != nil {
|
||||
log.Println("获取图片列表失败", err)
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
@@ -182,7 +199,7 @@ func main() {
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var image Image
|
||||
rows.Scan(&image.Id, &image.Width, &image.Height, &image.Content, &image.UpdateTime, &image.CreateTime)
|
||||
rows.Scan(&image.Id, &image.Width, &image.Height, &image.Content, &image.UpdateTime, &image.CreateTime, &image.User.Id)
|
||||
image.UpdateTime = image.UpdateTime.UTC()
|
||||
image.CreateTime = image.CreateTime.UTC()
|
||||
image.Content = regexp.MustCompile(`http:`).ReplaceAllString(image.Content, "https:")
|
||||
@@ -202,6 +219,43 @@ func main() {
|
||||
image_list = image_list_sorted
|
||||
}
|
||||
|
||||
// 附加用户信息(第一步: 获取用户ID列表)
|
||||
var user_ids []int
|
||||
for _, image := range image_list {
|
||||
user_ids = append(user_ids, image.User.Id)
|
||||
}
|
||||
|
||||
// 附加用户信息(第二步: 获取用户信息)
|
||||
var users []User
|
||||
if len(user_ids) > 0 {
|
||||
// 使用逗号分隔的用户ID列表查询用户信息 strings.Join(strings.Fields(fmt.Sprint(user_ids)), ",")
|
||||
user_ids_str := strings.Trim(strings.Replace(fmt.Sprint(user_ids), " ", ",", -1), "[]")
|
||||
fmt.Println(user_ids_str)
|
||||
rows, err := mysqlConnection.Database.Query("SELECT id, user_name, update_time, create_time FROM web_member WHERE id IN (" + user_ids_str + ")")
|
||||
if err != nil {
|
||||
log.Println("获取用户列表失败", err)
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var user User
|
||||
rows.Scan(&user.Id, &user.UserName, &user.UpdateTime, &user.CreateTime)
|
||||
user.UpdateTime = user.UpdateTime.UTC()
|
||||
user.CreateTime = user.CreateTime.UTC()
|
||||
users = append(users, user)
|
||||
}
|
||||
}
|
||||
|
||||
// 附加用户信息(第三步: 将用户信息附加到图片信息中)
|
||||
for i, image := range image_list {
|
||||
for _, user := range users {
|
||||
if image.User.Id == user.Id {
|
||||
image_list[i].User = user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 将 []Image 转换为 []interface{}
|
||||
images.List = make([]interface{}, len(image_list))
|
||||
for i, v := range image_list {
|
||||
|
Reference in New Issue
Block a user