StudyScoreLog.php 2.9 KB
<?php

namespace app\common\model;

use think\Db;
use think\Exception;
use think\Model;

class StudyScoreLog extends Model
{
    // 表名
    protected $name = 'study_score_log';
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    // 追加属性
    protected $append = [

    ];


    //加分
    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();
        $radar = explode(',',$xm['radar_ids']);
        $score = explode(',',$xm['score']);
        $sum_score = 0;
        $list = [];
        foreach ($score as $k) {
            $sum_score += $k;
        }
        //halt($sum_score);
        foreach ($radar as $k1 => $v1){
            foreach ($score as $k2 => $v2){
                if ($k1 == $k2){
                    $list[$k1]['radar'] = $v1;
                    $list[$k1]['score'] = $v2;
                }
            }
        }
        //halt($list);
        $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 {
            $this->save($data);
            $study->save(['earn_score' => $sum2],['id'=>$stu['id']]);
            $team->save(['score' => $sum1,'updatetime' => time()],['title'=>$stu['team']]);
            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_id'=>$xm['campus_ids'],
                        'score'=>$value['score'],
                        'createtime'=>time()
                    ];
                    $ronda_score->save($resc);
                }else{
                    $ronda_score->where(['study_id'=>$stu['id'],'radar_id'=>$value['radar']])->update(['updatetime'=>time(),
                        'score'=>$res['score']+$value['score']]);
                }
            }
            Db::commit();
        } catch (Exception $e) {
            Db::rollback();
            $e->getMessage();
        }
    }

}