267 lines
8.1 KiB
PHP
267 lines
8.1 KiB
PHP
<?php
|
|
|
|
namespace plugin\admin\app\controller;
|
|
|
|
use app\common\model\TeacherScheduleTime;
|
|
use app\constant\ResponseCode;
|
|
use support\Request;
|
|
use support\Response;
|
|
use plugin\admin\app\model\Teacher;
|
|
use plugin\admin\app\controller\Crud;
|
|
use support\exception\BusinessException;
|
|
use think\Exception;
|
|
|
|
/**
|
|
* 教师管理
|
|
*/
|
|
class TeacherController extends Crud
|
|
{
|
|
|
|
/**
|
|
* @var Teacher
|
|
*/
|
|
protected $model = null;
|
|
|
|
/**
|
|
* 构造函数
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->model = new Teacher;
|
|
}
|
|
|
|
/**
|
|
* 浏览
|
|
* @return Response
|
|
*/
|
|
public function index(): Response
|
|
{
|
|
return view('teacher/index');
|
|
}
|
|
|
|
/**
|
|
* 插入
|
|
* @param Request $request
|
|
* @return Response
|
|
* @throws BusinessException
|
|
*/
|
|
public function insert(Request $request): Response
|
|
{
|
|
if ($request->method() === 'POST') {
|
|
|
|
try {
|
|
$request_data = $request->post();
|
|
|
|
$salt = random_str(16);
|
|
if (empty($request_data['password'])) {
|
|
$password = 'YD' . $request_data['account'] . '123';
|
|
} else {
|
|
$password = $request_data['password'];
|
|
}
|
|
$password = md5($password . $salt);
|
|
$data = [
|
|
'account' => $request_data['account'],
|
|
'password' => $password,
|
|
'slat' => $salt,
|
|
'teacher_name' => $request_data['teacher_name'],
|
|
'time_zone_name' => $request_data['time_zone_name'],
|
|
'time_zone' => $request_data['time_zone'],
|
|
];
|
|
$res = \app\common\model\Teacher::create($data);
|
|
if (!$res) {
|
|
throw new Exception('添加失败');
|
|
}
|
|
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_SUCCESS,
|
|
'msg' => '添加成功'
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_FAIL,
|
|
'msg' => $e->getMessage()
|
|
]);
|
|
}
|
|
|
|
return parent::insert($data);
|
|
}
|
|
return view('teacher/insert');
|
|
}
|
|
|
|
/**
|
|
* 更新
|
|
* @param Request $request
|
|
* @return Response
|
|
* @throws BusinessException
|
|
*/
|
|
public function update(Request $request): Response
|
|
{
|
|
if ($request->method() === 'POST') {
|
|
|
|
try {
|
|
$request_data = $request->post();
|
|
$teacher = \app\common\model\Teacher::where(['id' => $request_data['id']])->findOrEmpty();
|
|
|
|
if (empty($request_data['password'])) {
|
|
$update = [
|
|
'account' => $request_data['account'],
|
|
'teacher_name' => $request_data['teacher_name'],
|
|
'time_zone_name' => $request_data['time_zone_name'],
|
|
'time_zone' => $request_data['time_zone'],
|
|
];
|
|
} else {
|
|
$salt = random_str(16);
|
|
$password = md5($request_data['password'] . $salt);
|
|
$update = [
|
|
'account' => $request_data['account'],
|
|
'password' => $password,
|
|
'salt' => $salt,
|
|
'teacher_name' => $request_data['teacher_name'],
|
|
'time_zone_name' => $request_data['time_zone_name'],
|
|
'time_zone' => $request_data['time_zone'],
|
|
];
|
|
}
|
|
|
|
$res = $teacher->save($update);
|
|
if (!$res) {
|
|
throw new Exception('操作失败');
|
|
}
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_SUCCESS,
|
|
'msg' => 'success'
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_FAIL,
|
|
'msg' => $e->getMessage()
|
|
]);
|
|
}
|
|
|
|
$request_data = $request->post();
|
|
|
|
|
|
return parent::update($request);
|
|
}
|
|
return view('teacher/update');
|
|
}
|
|
|
|
/**
|
|
* @desc 查看教师日程安排
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function check_schedule(Request $request)
|
|
{
|
|
|
|
$data = $request->get();
|
|
|
|
return view('teacher/check_schedule', ['teacher_id' => $data['id']]);
|
|
}
|
|
|
|
|
|
/**
|
|
* @desc 教师月份课程安排
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function teacherScheduleTime(Request $request)
|
|
{
|
|
|
|
$data = $request->get();
|
|
$teacher_id = $data['teacher_id'];
|
|
$month = $data['month'];
|
|
$teacher = \app\common\model\Teacher::where(['id'=>$teacher_id])->findOrEmpty();
|
|
|
|
return view('teacher/teacher_schedule_time', ['teacher' => $teacher, 'month' => $month]);
|
|
}
|
|
|
|
|
|
/**
|
|
* @desc 获取教师课程安排统计
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function getTeacherScheduleMonth(Request $request)
|
|
{
|
|
try {
|
|
$data = $request->get();
|
|
$schedule_time = TeacherScheduleTime::where(['teacher_id' => $data['teacher_id']])
|
|
->field('
|
|
teacher_id,
|
|
month,
|
|
COUNT(id) AS total_courses,
|
|
SUM(hour) AS total_hours,
|
|
SUM(CASE WHEN subject_id > 0 THEN 1 ELSE 0 END) AS has_subject,
|
|
SUM(CASE WHEN subject_id = 0 THEN 1 ELSE 0 END) AS has_no_subject,
|
|
SUM(CASE WHEN subject_id = 0 THEN hour ELSE 0 END) AS total_nonscheduled_hours,
|
|
SUM(CASE WHEN subject_id != 0 THEN hour ELSE 0 END) AS total_scheduled_hours,
|
|
SUM(CASE WHEN subject_id != 0 AND is_publish = 1 THEN hour ELSE 0 END) AS total_published_scheduled_hours,
|
|
SUM(CASE WHEN subject_id != 0 AND is_publish = 0 THEN hour ELSE 0 END) AS total_unpublished_scheduled_hours,
|
|
|
|
SUM(CASE WHEN is_publish = 1 THEN 1 ELSE 0 END) AS published_courses,
|
|
SUM(CASE WHEN is_publish = 0 THEN 1 ELSE 0 END) AS unpublished_courses
|
|
')
|
|
->group('month')
|
|
->with(['teacher']);
|
|
|
|
$limit = (int)$request->get('limit', 10);
|
|
$limit = $limit <= 0 ? 10 : $limit;
|
|
$page = (int)$request->get('page');
|
|
$page = $page > 0 ? $page : 1;
|
|
|
|
$total = $schedule_time->count();
|
|
$list = $schedule_time->page($page, $limit)->select();
|
|
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_SUCCESS,
|
|
'data' => $list,
|
|
'count' => $total,
|
|
'msg' => 'ok'
|
|
]);
|
|
} catch (Exception $e) {
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_FAIL,
|
|
'msg' => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @desc 重置密码
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function resetPassword(Request $request)
|
|
{
|
|
try {
|
|
$request_data = $request->post();
|
|
$teacher = \app\common\model\Teacher::where(['id' => $request_data['id']])->findOrEmpty();
|
|
$new_password = 'YD' . $teacher->account . '123';
|
|
$salt = random_str(16);
|
|
$password = md5($new_password . $salt);
|
|
|
|
$res = $teacher->save([
|
|
'salt' => $salt,
|
|
'password' => $password
|
|
]);
|
|
if (!$res) {
|
|
throw new Exception('重置失败');
|
|
}
|
|
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_SUCCESS,
|
|
'msg' => '重置成功'
|
|
]);
|
|
} catch (Exception $e) {
|
|
return json([
|
|
'code' => ResponseCode::WEB_API_FAIL,
|
|
'msg' => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
}
|