MisakaOJ项目,第七次记录内容
gofunc 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 许可协议。转载请注明出处!