public function updateClassDetailStudentRela($classId, $classDetailId, $cameRelaIds = "", $notCameRelaIds = "")
 {
     try {
         $tId = session('instId');
         $cameRelaIdsArr = array();
         if ($cameRelaIds != "" && $cameRelaIds != null) {
             $cameRelaIdsArr = explode('|', $cameRelaIds);
         }
         $notCameRelaIdsArr = array();
         if ($notCameRelaIds != "" && $notCameRelaIds != null) {
             $notCameRelaIdsArr = explode('|', $notCameRelaIds);
         }
         $class = new \Home\Model\ClassModel();
         $student = new \Home\Model\StudentModel();
         $class->startTrans();
         //get tuition deduct mode
         $deductFlag = $class->getClassDeductFlag($classId, $tId);
         $deductFlag = $deductFlag[0]['deduct_flag'];
         //get all students tuition_per_class
         $studentTuitions = $class->showAllStudentsFromClassDetail($classDetailId, $tId);
         for ($i = 0; $i < count($studentTuitions); $i++) {
             $st = $studentTuitions[$i];
             $studentTuitionMap[$st['id']] = $st['tuition_per_class'];
         }
         $count = 0;
         if (count($cameRelaIdsArr) > 0) {
             for ($i = 0; $i < count($cameRelaIdsArr); $i++) {
                 $result = $class->updateClassDetailStudentRela($cameRelaIdsArr[$i], 0, $tId);
                 $student->updateStudentBalance((int) $studentTuitionMap[$cameRelaIdsArr[$i]], $cameRelaIdsArr[$i], $tId);
                 if ($result != 1) {
                     $count++;
                 }
             }
         }
         if (count($notCameRelaIdsArr) > 0) {
             for ($i = 0; $i < count($notCameRelaIdsArr); $i++) {
                 $result = $class->updateClassDetailStudentRela($notCameRelaIdsArr[$i], 1, $tId);
                 if ($deductFlag == 1) {
                     $student->updateStudentBalance((int) $studentTuitionMap[$notCameRelaIdsArr[$i]], $notCameRelaIdsArr[$i], $tId);
                 }
                 if ($result != 1) {
                     $count++;
                 }
             }
         }
         //update status
         $isAbsentCheck = 1;
         $class = new \Home\Model\ClassModel();
         $result = $class->updateClassDetailIsAbsentCheck($classDetailId, $tId, $isAbsentCheck);
         $class->commit();
         $data = "true";
     } catch (Exception $e) {
         $class->rollback();
         $data = "false";
     }
     $this->ajaxReturn($data);
 }
 public function refundTuition($id, $studentId, $classId, $refundTuition)
 {
     $instId = session('instId');
     try {
         $classModel = new \Home\Model\ClassModel();
         $studentModel = new \Home\Model\StudentModel();
         $institutionModel = new \Home\Model\InstitutionModel();
         //logModel
         $instBalanceChangeLogModel = new \Home\Model\InstBalanceChangeLogModel();
         $studentBalanceChangeLogModel = new \Home\Model\StudentBalanceChangeLogModel();
         $classModel->startTrans();
         //finance transaction part1 start
         $studentModel->addStudentBalance($refundTuition * 100, $studentId, $instId);
         $reason = 5;
         //学费返还给学生
         $studentBalanceChangeLogModel->savelog($studentId, $reason, $classId, $refundTuition * 100);
         $classModel->updateStudentTuitionById(-$refundTuition * 100, (int) $id, $instId);
         //finance transaction part1 end
         //finance transaction part2 start
         //change inst balance
         $institutionModel->updateInstitutionBalance(-$refundTuition * 100, $instId);
         $reason = 3;
         //退还学费给学生
         $instBalanceChangeLogModel->saveLog($instId, $reason, $studentId, -$refundTuition * 100);
         //finance transaction part2 end
         $data = "true";
         $classModel->commit();
     } catch (Exception $e) {
         $data = "false";
         $classModel->rollback();
     }
     $this->ajaxReturn($data);
 }