按时间筛选
This commit is contained in:
		@@ -388,8 +388,8 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
				"collect_count": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中收藏数等于指定值的"},
 | 
			
		||||
				"article_id":    &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中属于指定文章ID的"},
 | 
			
		||||
				"user_id":       &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中属于指定用户ID的"},
 | 
			
		||||
				"create_time":   &graphql.ArgumentConfig{Type: graphql.DateTime, Description: "筛选图像中创建时间等于指定值的"},
 | 
			
		||||
				"update_time":   &graphql.ArgumentConfig{Type: graphql.DateTime, Description: "筛选图像中更新时间等于指定值的"},
 | 
			
		||||
				"create_time":   &graphql.ArgumentConfig{Type: graphql.String, Description: "筛选图像中创建时间等于指定值的"},
 | 
			
		||||
				"update_time":   &graphql.ArgumentConfig{Type: graphql.String, Description: "筛选图像中更新时间等于指定值的"},
 | 
			
		||||
				"first":         &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中的前n個元素)"},
 | 
			
		||||
				"last":          &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中的最後n個元素)"},
 | 
			
		||||
				"after":         &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中指定遊標之後的元素)"},
 | 
			
		||||
@@ -409,9 +409,13 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					Orientation string
 | 
			
		||||
					Sort        string
 | 
			
		||||
					Order       string
 | 
			
		||||
					CreateTime  string `json:"create_time"`
 | 
			
		||||
					UpdateTime  string
 | 
			
		||||
				}
 | 
			
		||||
				mapstructure.Decode(p.Args, &args)
 | 
			
		||||
 | 
			
		||||
				fmt.Println("args.CreateTime:", args.CreateTime)
 | 
			
		||||
 | 
			
		||||
				// 限制长度防止全表扫描
 | 
			
		||||
				var limit = 10
 | 
			
		||||
				if args.First != 0 {
 | 
			
		||||
@@ -425,7 +429,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
				var query = db.Limit(limit)
 | 
			
		||||
 | 
			
		||||
				// 参数映射
 | 
			
		||||
				var argFormat = []string{"id", "width", "height", "content", "remark", "description", "tags", "rank", "comment_num", "praise_count", "collect_count", "article_id", "user_id", "create_time", "update_time"}
 | 
			
		||||
				var argFormat = []string{"id", "width", "height", "content", "remark", "description", "tags", "rank", "comment_num", "praise_count", "collect_count", "article_id", "user_id"}
 | 
			
		||||
 | 
			
		||||
				// 筛选条件
 | 
			
		||||
				for _, format := range argFormat {
 | 
			
		||||
@@ -519,6 +523,24 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					id_list = append(id_list, ids)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 筛选:时间段
 | 
			
		||||
				applyTimeCondition := func(name string, str string) {
 | 
			
		||||
					parts := strings.Split(str, "-")
 | 
			
		||||
					query = query.Where(fmt.Sprintf("YEAR(%s) = ?", name), parts[0])
 | 
			
		||||
					if len(parts) > 1 {
 | 
			
		||||
						query = query.Where(fmt.Sprintf("MONTH(%s) = ?", name), parts[1])
 | 
			
		||||
					}
 | 
			
		||||
					if len(parts) > 2 {
 | 
			
		||||
						query = query.Where(fmt.Sprintf("DAY(%s) = ?", name), parts[2])
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if createTime, ok := p.Args["create_time"].(string); ok && createTime != "" {
 | 
			
		||||
					applyTimeCondition("create_time", createTime)
 | 
			
		||||
				} else if updateTime, ok := p.Args["update_time"].(string); ok && updateTime != "" {
 | 
			
		||||
					applyTimeCondition("update_time", updateTime)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 数据库中筛选:横屏纵屏
 | 
			
		||||
				if args.Orientation != "" {
 | 
			
		||||
					query.Where("article_orientation = ?", args.Orientation)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user