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); }