2024-09-06
Go & 后端
00

目录

1 将分类信息更新进Redis里

MisakaOJ项目,第七次记录内容

1 将分类信息更新进Redis里

go
func RefreshCategoryIdAndName() { categories := make([]*models.Category, 0) e := models.GetCategoryByColumn("", nil).Find(&categories).Error if e != nil { zap.L().Error("Cron", zap.Error(e), ) return } for i := range categories { e = models.RDB.HSet(context.Background(), "CategoryIdAndName", categories[i].Name, strconv.Itoa(int(categories[i].ID))).Err() if e != nil { zap.L().Error("Redis-Write", zap.String("method", "HSet"), zap.String("key", "CategoryIdAndName"), zap.String("field", categories[i].Name), zap.Any("value", strconv.Itoa(int(categories[i].ID))), zap.Error(e), ) return } } }

在对应的 Handler 里面更新写法:

go
// AddQuestion // @Tags 管理员接口 // @Summary 提交新的题目 // @Param authorization header string true "authorization" // @Param title formData string true "title" // @Param content formData string true "content" // @Param max_runtime formData int true "max_runtime" // @Param max_mem formData int true "max_mem" // @Param categories formData []string true "categories" collectionFormat(multi) // @Param test_cases formData []string true "test_cases" collectionFormat(multi) // @Success 200 {data} json "{"code": "200", "message": ""}" // @Router /admin/add_question [post] func AddQuestion(c *gin.Context) { ... // 先查分类 把分类id拿到 并且写成QuestionCategory类型的 questionCategoryArray := make([]*models.QuestionCategory, 0) var questionCategory *models.QuestionCategory var categoryIdString string var categoryId int for i := range categoryArrayFromUser { // 初始化 questionCategory = &models.QuestionCategory{} // 查询 categoryIdString, e = models.RDB.HGet(context.Background(), "CategoryIdAndName", categoryArrayFromUser[i]).Result() if e != nil { ErrorHandler(c, errors.Join(constants.RedisHGetErr, e).Error()) return } categoryId, e = strconv.Atoi(categoryIdString) if e != nil { ErrorHandler(c, e.Error()) return } // 放结果 questionCategory.CategoryId = uint(categoryId) questionCategoryArray = append(questionCategoryArray, questionCategory) } ... }

本文作者:御坂19327号

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!