附加用户信息
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)
 | 
						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 {
 | 
					type Image struct {
 | 
				
			||||||
	Id         int       `json:"id"`
 | 
						Id         int       `json:"id"`
 | 
				
			||||||
	Width      int       `json:"width"`
 | 
						Width      int       `json:"width"`
 | 
				
			||||||
@@ -44,6 +59,8 @@ type Image struct {
 | 
				
			|||||||
	Content    string    `json:"content"`
 | 
						Content    string    `json:"content"`
 | 
				
			||||||
	CreateTime time.Time `json:"create_time"`
 | 
						CreateTime time.Time `json:"create_time"`
 | 
				
			||||||
	UpdateTime time.Time `json:"update_time"`
 | 
						UpdateTime time.Time `json:"update_time"`
 | 
				
			||||||
 | 
						User       User      `json:"user"`
 | 
				
			||||||
 | 
						Article    Article   `json:"article"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Tag struct {
 | 
					type Tag struct {
 | 
				
			||||||
@@ -173,7 +190,7 @@ func main() {
 | 
				
			|||||||
		var images ListView
 | 
							var images ListView
 | 
				
			||||||
		var image_list []Image
 | 
							var image_list []Image
 | 
				
			||||||
		images.Page, images.PageSize = stringToInt(r.URL.Query().Get("page"), 1), stringToInt(r.URL.Query().Get("pageSize"), 10)
 | 
							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 {
 | 
							if err != nil {
 | 
				
			||||||
			log.Println("获取图片列表失败", err)
 | 
								log.Println("获取图片列表失败", err)
 | 
				
			||||||
			http.Error(w, err.Error(), http.StatusBadRequest)
 | 
								http.Error(w, err.Error(), http.StatusBadRequest)
 | 
				
			||||||
@@ -182,7 +199,7 @@ func main() {
 | 
				
			|||||||
		defer rows.Close()
 | 
							defer rows.Close()
 | 
				
			||||||
		for rows.Next() {
 | 
							for rows.Next() {
 | 
				
			||||||
			var image Image
 | 
								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.UpdateTime = image.UpdateTime.UTC()
 | 
				
			||||||
			image.CreateTime = image.CreateTime.UTC()
 | 
								image.CreateTime = image.CreateTime.UTC()
 | 
				
			||||||
			image.Content = regexp.MustCompile(`http:`).ReplaceAllString(image.Content, "https:")
 | 
								image.Content = regexp.MustCompile(`http:`).ReplaceAllString(image.Content, "https:")
 | 
				
			||||||
@@ -202,6 +219,43 @@ func main() {
 | 
				
			|||||||
			image_list = image_list_sorted
 | 
								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{}
 | 
							// 将 []Image 转换为 []interface{}
 | 
				
			||||||
		images.List = make([]interface{}, len(image_list))
 | 
							images.List = make([]interface{}, len(image_list))
 | 
				
			||||||
		for i, v := range image_list {
 | 
							for i, v := range image_list {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user