作者 开飞机的舒克

扫码加分问题优化

<?php
namespace app\common\model;
use think\Model;
class Radar extends Model
{
// 表名
protected $name = 'radar';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
// 追加属性
protected $append = [
];
}
\ No newline at end of file
... ...
... ... @@ -27,12 +27,14 @@ class StudyScoreLog extends Model
//加分
public function addScore($id, $unique)
{
$study = new Study();
$team = new Team();
$item = new Item();
$stu = $study->where('unique', $unique)->find()->toArray();
$xm = $item->where('id', $id)->find()->toArray();
$team = $team->where('title', $stu['team'])->field('title,score')->find();
$study = new Study(); //学生表
$teams = new Team(); //战队表
$item = new Item(); //项目表
$ronda = new Ronda(); //场次表
$stu = $study->where('unique', $unique)->find()->toArray(); //学生信息
$xm = $item->where('id', $id)->find()->toArray(); //项目信息
$team = $teams->where('title', $stu['team'])->find()->toArray(); //战队信息
$ronda = $ronda->where('title',$stu['ronda'])->find()->toArray(); //场次信息
$radar = explode(',', $xm['radar_ids']);
$score = explode(',', $xm['score']);
$sum_score = 0;
... ... @@ -40,7 +42,6 @@ class StudyScoreLog extends Model
foreach ($score as $k) {
$sum_score += $k;
}
//halt($sum_score);
foreach ($radar as $k1 => $v1) {
foreach ($score as $k2 => $v2) {
if ($k1 == $k2) {
... ... @@ -49,31 +50,89 @@ class StudyScoreLog extends Model
}
}
}
$sum1 = $team['score'] + $sum_score; //合计战队总分
$sum2 = $stu['earn_score'] + $sum_score; //合计个人总分
$data = [
'item_id' => $id,
'campus_ids' => $xm['campus_ids'],
'study_id' => $stu['id'],
'team' => $stu['team'],
'score' => $sum_score,
'memo' => $stu['name'] . '参加' . $xm['title'] . '加分',
'createtime' => time()
];
Db::startTrans();
try {
//得分加入学生表中
$study->allowField(true)->save(['earn_score'=>$stu['earn_score'] + $sum_score],['unique'=>$unique]);
//得分写入学生分数记录
$data = [
'item_id' => $id,
'campus_ids' => $ronda['campus_id'],
'study_id' => $stu['id'],
'team' => $stu['team'],
'score' => $sum_score,
'memo' => $stu['name'] . '参加' . $xm['title'] . '加分',
'createtime' => time()
];
$this->allowField(true)->save($data);
$study->save(['earn_score' => $sum2], ['id' => $stu['id']]);
$team->save(['score' => $sum1, 'updatetime' => time()], ['title' => $stu['team']]);
//学生场次得分
$study_ronda = \db('study_ronda_score')->where(['sid'=>$stu['id'],'team_id'=>$team['id'],'ronda_id'=>$ronda['id']])->find();
if (empty($study_ronda)){
\db('study_ronda_score')
->insert([
'sid'=>$stu['id'],
'team_id'=>$team['id'],
'ronda_id'=>$ronda['id'],
'score'=>$sum_score
]);
}else{
\db('study_ronda_score')
->where([
'sid'=>$stu['id'],
'team_id'=>$team['id'],
'ronda_id'=>$ronda['id']
])->update(['score'=>($study_ronda['score'] + $sum_score)]);
}
//学生得分存入item_study_score表中
$find = \db('item_study_score')
->where([
'sid' => $stu['id'],
'item_id' => $id,
'campus_id' => $ronda['campus_id'],
'ronda_id' => $ronda['id'],
])
->find();
if (empty($find)) {
\db('item_study_score')->insert([
'item_id' => $id,
'campus_id' => $ronda['campus_id'],
'ronda_id' => $ronda['id'],
'sid' => $stu['id'],
'score' => $sum_score,
]);
} else {
\db('item_study_score')
->where([
'sid' => $stu['id'],
'item_id' => $id,
'campus_id' => $ronda['campus_id'],
'ronda_id' => $ronda['id'],
])
->update(['score' => ($find['score'] + $sum_score)]);
}
//战队得分
$team_score = \db('team_score')->where(['ronda_id'=>$ronda['id'],'team_id'=>$team['id']])->find();
if (empty($team_score)){
\db('team_score')
->insert([
'ronda_id'=>$ronda['id'],
'team_id'=>$team['id'],
'score' =>$sum_score
]);
}else{
\db('team_score')
->where(['ronda_id'=>$ronda['id'],'team_id'=>$team['id']])
->update(['score'=>($team_score+ $sum_score)]);
}
//学生维度得分
foreach ($list as $key => $value) {
$ronda_score = new RadarScore();
$res = $ronda_score->where(['study_id' => $stu['id'], 'radar_id' => $value['radar']])->find();
if (empty($res)) {
$resc = [
'study_id' => $stu['id'],
'radar_id' => $value['radar'],
'campus_ids' => $xm['campus_ids'],
'campus_ids' => $ronda['campus_id'],
'score' => $value['score'],
'createtime' => time()
];
... ... @@ -86,6 +145,7 @@ class StudyScoreLog extends Model
Db::commit();
} catch (Exception $e) {
Db::rollback();
$e->getMessage();
}
}
... ...