/*
* post检查答案正确与否,先检查是否登录,答案正确写入记录表中 本方法是大规模阉割了数据结构的,业务逻辑如此,看到看不懂的地方肯定是我删掉了,你自己填写你的逻辑和数据源即可
*/
public function check()
{
// 1. 传入答题和答案的序列
$result = json_decode(input('data'), true);
// 2. 从数据库中加载正确的答题列表和答案
$exam = ????
if (time() > $exam['endtime']) {
return json([
'code' => - 1,
'msg' => '本次答题活动已结束'
]);
}
$items = ????此处查询考题出来
if ($items == null) {
return json([
'code' => - 1,
'msg' => '考题都还没出呢'
]);
}
// 3. 对比两个序列,把不匹配的项目列出来
$list = [];
foreach ($items as $item) {
foreach ($result as $child) {
if ($item['id'] == $child['itemid']) {
if ($item['rightanswer'] == $child['selected']) {
$item['selected'] = $child['selected'];
$list[] = $item;
}
}
}
}
// 4. 计算分值 正确数量占比
$score = count($list) * 100 / count($items);
// 5. 分值和错误答案的正确选择,并返回奖励序列号,写入result
$msg = '';
if ($exam['examor'] == 0 && $exam['mark'] <= $score) {
$msg = '真厉害,共您答对' . count($list) . '道题,得分' . $score . '分!';
if ($exam['havegit'] === 1) {
//此处发送短信
}
}
if ($exam['examor'] == 0 && $exam['mark'] > $score) {
$msg = '真抱歉,共您答对' . count($list) . '道题,得分' . $score . '分!';
}
if ($exam['examor'] == 1) {
$msg = '感謝您参与本次调查活动';
if ($exam['havegit'] === 1) {
//此处发短信
}
}
}
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。