添加用户记录功能,在问题检查中记录用户答案,优化答题反馈机制

This commit is contained in:
keqingmoe 2024-12-30 22:23:23 +08:00
parent c0f8e4c4e6
commit fb4d7df519

View File

@ -1,4 +1,5 @@
#include "db/problems.h" #include "db/problems.h"
#include "db/records.h"
#include "jwt/jwt.h" #include "jwt/jwt.h"
#include "server/response.h" #include "server/response.h"
#include "server/study.h" #include "server/study.h"
@ -176,7 +177,7 @@ static void impl_modify(mg_connection* conn, problem_form_t* form)
res_200(conn, "success to modify the problem"); res_200(conn, "success to modify the problem");
} }
static void impl_check(mg_connection* conn, problem_form_t* form) static void impl_check(mg_connection* conn, problem_form_t* form, const char* user_id)
{ {
if (!form->has_id) { if (!form->has_id) {
res_need_xxx(conn, "problem id"); res_need_xxx(conn, "problem id");
@ -198,9 +199,15 @@ static void impl_check(mg_connection* conn, problem_form_t* form)
int flag = check_answer(form->id, form->answer, &result); int flag = check_answer(form->id, form->answer, &result);
if (!flag) { if (!flag) {
add_record_uke(user_id, form->id, form->answer);
res_500(conn, "fail to check the answer"); res_500(conn, "fail to check the answer");
return; return;
} }
if (result) {
add_record_ac(user_id, form->id, form->answer);
} else {
add_record_wa(user_id, form->id, form->answer);
}
res_check_answer(conn, result); res_check_answer(conn, result);
} }
@ -276,17 +283,14 @@ int problems_handler(mg_connection* conn, void* cbdata)
impl_modify(conn, &form); impl_modify(conn, &form);
} }
} else if (!strcmp(form.action, "check")) { } else if (!strcmp(form.action, "check")) {
impl_check(conn, &form); impl_check(conn, &form, user_id);
} else if (!strcmp(form.action, "all")) { } else if (!strcmp(form.action, "all")) {
if (result == 2) {
res_permission_denied(conn);
} else {
impl_all(conn, &form); impl_all(conn, &form);
}
} else { } else {
res_bad_action(conn); res_bad_action(conn);
} }
} }
free(user_id);
} }
problem_form_dtor(&form); problem_form_dtor(&form);