public function addStudentsIntoClassDetail($classId, $classDetailId, $studentIds)
 {
     try {
         $tId = session('instId');
         //students
         $students = explode('|', $studentIds);
         $class = new \Home\Model\ClassModel();
         $class->startTrans();
         //save students that join this class
         for ($i; $i < count($students); $i++) {
             $class->saveClassDetailAndStudentRela($classDetailId, $classId, $students[$i], null, $tId);
         }
         $class->commit();
     } catch (Exception $e) {
         $class->rollback();
     }
 }
 public function attendNewClass($studentId, $receivableTuition, $tuition, $tuitionPerClass, $attended)
 {
     try {
         $instId = session('instId');
         $classId = $attended;
         $studentModel = new \Home\Model\StudentModel();
         $classModel = new \Home\Model\ClassModel();
         $institutionModel = new \Home\Model\InstitutionModel();
         //logModel
         $instBalanceChangeLogModel = new \Home\Model\InstBalanceChangeLogModel();
         $studentBalanceChangeLogModel = new \Home\Model\StudentBalanceChangeLogModel();
         $studentModel->startTrans();
         //add tuition to student total tuition
         $studentModel->addStudentBalance($tuition * 100, $studentId, $instId);
         $reason = 1;
         //充值
         $studentBalanceChangeLogModel->savelog($studentId, $reason, 0, $tuition * 100);
         //finance transaction part1 start
         $balance = $studentModel->showStudentBalance($instId, $studentId);
         $actuallyPaid = $receivableTuition > $balance[0]['balance'] ? $balance : $receivableTuition;
         //实际能付的或需要付的对应此课程的学费
         $studentModel->addStudentBalance(-$actuallyPaid * 100, $studentId, $instId);
         $reason = 3;
         //3:学费划转给机构
         $studentBalanceChangeLogModel->savelog($studentId, $reason, $classId, -$actuallyPaid * 100);
         //finance transaction part1 end
         //save student attends class info (classId and tuitionPerClass and totalTuition)
         $classDetails = $classModel->showClassDetailsById((int) $classId, $instId);
         $ndate = date("Y-m-d");
         $nstarttimeint = (int) date('Gi', time() + 8 * 3600);
         for ($i = 0; $i < count($classDetails); $i++) {
             $cdate = $classDetails[$i]['date'];
             $cstarttimeint = $classDetails[$i]['start_time_int'];
             if ($cdate == $ndate && $cstarttimeint > $nstarttimeint || $cdate > $ndate) {
                 $leftClassDetails = array_slice($classDetails, $i);
                 break;
             }
         }
         //update student status
         $studentModel->changeStudentStatus($studentId, $instId, 2);
         //save student fee info
         $classModel->saveClassAndStudentRela((int) $classId, $studentId, $tuitionPerClass * 100, 0, $instId, $receivableTuition * 100, $actuallyPaid * 100);
         if (!empty($leftClassDetails) && count($leftClassDetails) > 0) {
             for ($m = 0; $m < count($leftClassDetails); $m++) {
                 //add student and classDetail rela
                 $classModel->saveClassDetailAndStudentRela($leftClassDetails[$m]['class_detail_id'], (int) $classId, $studentId, $tuitionPerClass * 100, $instId);
             }
         }
         //finance transaction part2 start
         //change inst balance
         $institutionModel->updateInstitutionBalance($actuallyPaid * 100, $instId);
         $reason = 1;
         //1:学费转入
         $instBalanceChangeLogModel->saveLog($instId, $reason, $studentId, $actuallyPaid * 100);
         //finance transaction part2 end
         $data = "true";
         $studentModel->commit();
     } catch (Exception $e) {
         $data = "false";
         $studentModel->rollback();
     }
     $this->ajaxReturn($data);
 }