diff --git a/app/api/controller/StudentController.php b/app/api/controller/StudentController.php index 34f7c30..24c92d6 100644 --- a/app/api/controller/StudentController.php +++ b/app/api/controller/StudentController.php @@ -52,6 +52,7 @@ class StudentController extends BaseController */ public function userInfo(Request $request) { + $service = new StudentService(); $res = $service->userInfo($request); return $this->json($res); diff --git a/app/common/service/StudentHomeworkService.php b/app/common/service/StudentHomeworkService.php index 1d08ae8..7b5d392 100644 --- a/app/common/service/StudentHomeworkService.php +++ b/app/common/service/StudentHomeworkService.php @@ -20,25 +20,37 @@ class StudentHomeworkService public function addStudentHomework($request) { try { - if (empty($request->student)) { + if (empty((array)$request->student) && empty((array)$request->parent)) { throw new Exception('请登陆后再查看'); } - $student = Student::where(['id' => $request->student->id])->findOrEmpty(); - if ($student->isEmpty()) { - throw new Exception('未找到用户信息'); + if (!empty((array)$request->student)) { + $student = Student::where(['id' => $request->student->id])->findOrEmpty(); + if ($student->isEmpty()) { + throw new Exception('未找到用户信息'); + } + } + if (!empty((array)$request->parent)) { + $student = Student::where(['parent_id' => $request->parent->id])->findOrEmpty(); + if ($student->isEmpty()) { + throw new Exception('未找到用户信息'); + } + } $data = $request->post(); - $teacher_schedule_time = TeacherScheduleTime::where(['id' => $data['subject_homework_id']])->findOrEmpty(); +// $teacher_schedule_time = TeacherScheduleTime::where(['id' => $data['subject_homework_id']])->findOrEmpty(); - print '
';
-            print_r($teacher_schedule_time->isEmpty());
-            die;
 
-            $subject_homework = SubjectHomework::where(['id' => $data['subject_homework_id']])->findOrEmpty();
+            $subject_homework = SubjectHomework::where(['teacher_schedule_time_id' => $data['subject_homework_id'], 'is_publish' => 1])->findOrEmpty();
             if ($subject_homework->isEmpty()) {
-                throw new Exception('未找到课程作业');
+                throw new Exception('老师还未布置课程作业');
+            }
+            $feedback_file_url = '';
+            if(isset($data['feedback_file_url'])){
+                if(!empty(json_decode($data['feedback_file_url'],true))){
+                    $feedback_file_url = $data['feedback_file_url'];
+                }
             }
 
             StudentHomework::create([
@@ -47,12 +59,7 @@ class StudentHomeworkService
                 'teacher_id' => $subject_homework->teacher_id,
                 'teacher_schedule_time_id' => $subject_homework->teacher_schedule_time_id,
                 'subject_id' => $subject_homework->subject_id,
-                'homework_file_url' => $subject_homework->homework_file_url,
-                'homework_file_name' => $subject_homework->homework_file_name,
-                'homework_version_file_url' => $subject_homework->homework_version_file_url,
-                'homework_version_file_name' => $subject_homework->homework_version_file_name,
-                'feedback_file_url' => $data['feedback_file_url'],
-                'feedback_file_name' => $data['feedback_file_name'],
+                'feedback_file_url' => $feedback_file_url,
             ]);
 
             return [
diff --git a/app/common/service/StudentScheduleService.php b/app/common/service/StudentScheduleService.php
index ae5ab92..41e4a67 100644
--- a/app/common/service/StudentScheduleService.php
+++ b/app/common/service/StudentScheduleService.php
@@ -3,6 +3,7 @@
 namespace app\common\service;
 
 use app\common\model\Student;
+use app\common\model\StudentParent;
 use app\common\model\StudentSchedule;
 use app\constant\ResponseCode;
 use think\Exception;
@@ -18,12 +19,21 @@ class StudentScheduleService
     public function getScheduleTime($request)
     {
         try {
-            if (empty($request->student)) {
+            if (empty((array)$request->student) && empty((array)$request->parent)) {
                 throw new Exception('请登陆后再查看');
             }
-            $student = Student::where(['id' => $request->student->id])->findOrEmpty();
-            if ($student->isEmpty()) {
-                throw new Exception('未找到用户信息');
+            if(!empty((array)$request->student)){
+                $student = Student::where(['id' => $request->student->id])->findOrEmpty();
+                if ($student->isEmpty()) {
+                    throw new Exception('未找到用户信息');
+                }
+            }
+            if(!empty((array)$request->parent)){
+                $student = Student::where(['parent_id' => $request->parent->id])->findOrEmpty();
+                if ($student->isEmpty()) {
+                    throw new Exception('未找到用户信息');
+                }
+
             }
 
             $data = $request->get();
diff --git a/app/common/service/StudentService.php b/app/common/service/StudentService.php
index 63b3069..ed52949 100644
--- a/app/common/service/StudentService.php
+++ b/app/common/service/StudentService.php
@@ -4,6 +4,7 @@ namespace app\common\service;
 
 use app\api\controller\WechatSubscriptController;
 use app\common\model\Student;
+use app\common\model\StudentParent;
 use app\constant\ResponseCode;
 use think\Exception;
 use Tinywan\Jwt\JwtToken;
@@ -20,28 +21,47 @@ class StudentService
     public function login($request)
     {
         try {
-            $student = Student::where(['account' => $request['account']])->findOrEmpty();
-            if ($student->isEmpty()) {
-                throw new Exception('账号不存在');
-            }
             if (empty($request['password'])) {
                 throw new Exception('请填写密码');
             }
+            $student = Student::where(['account' => $request['account']])->findOrEmpty();
+
+            if (!$student->isEmpty()) {
+                if (md5($request['password'] . $student->salt) != $student->password) {
+                    throw new Exception('密码错误,请填写正确的密码');
+                }
+
+                $token_data = [
+                    'id' => $student->id,
+                    'role' => 'student'
+                ];
+                $token = JwtToken::generateToken($token_data);
+                return [
+                    'code' => ResponseCode::SUCCESS,
+                    'data' => $token,
+                    'msg' => 'success'
+                ];
+            }else{
+                $parent = StudentParent::where(['account' => $request['account']])->findOrEmpty();
+                if(!$parent->isEmpty()){
+                    if (md5($request['password'] . $parent->salt) != $parent->password) {
+                        throw new Exception('密码错误,请填写正确的密码');
+                    }
+
+                    $token_data = [
+                        'id' => $parent->id,
+                        'role' => 'parent'
+                    ];
+                    $token = JwtToken::generateToken($token_data);
+                    return [
+                        'code' => ResponseCode::SUCCESS,
+                        'data' => $token,
+                        'msg' => 'success'
+                    ];
+                }
 
-            if (md5($request['password'] . $student->salt) != $student->password) {
-                throw new Exception('密码错误,请填写正确的密码');
             }
-
-            $token_data = [
-                'id' => $student->id,
-                'role' => 'student'
-            ];
-            $token = JwtToken::generateToken($token_data);
-            return [
-                'code' => ResponseCode::SUCCESS,
-                'data' => $token,
-                'msg' => 'success'
-            ];
+            throw new Exception('请检查账号信息,未匹配到任何学生或家长');
 
         } catch (Exception $e) {
             return [
@@ -58,17 +78,28 @@ class StudentService
     public function userInfo($request)
     {
         try {
-            if (empty($request->student)) {
-                throw new Exception('请学生登陆后再查看');
+            if (empty((array)$request->student) && empty((array)$request->parent)) {
+                throw new Exception('请登陆后再查看');
             }
-            $student = Student::where(['id' => $request->student->id])->field('id,student_name,account,openid')->findOrEmpty();
-            if ($student->isEmpty()) {
-                throw new Exception('未找到学生信息');
+            if(!empty((array)$request->student)){
+                $student = Student::where(['id' => $request->student->id])->field('id,student_name,account,openid,avatar')->findOrEmpty();
+                if ($student->isEmpty()) {
+                    throw new Exception('未找到学生信息');
+                }
+                $info = $student->toArray();
+                $info['role'] = 'student';
+            }elseif (!empty((array)$request->parent)){
+                $parent = StudentParent::where(['id' => $request->parent->id])->field('id,parent_name,account,openid,avatar')->findOrEmpty();
+                if ($parent->isEmpty()) {
+                    throw new Exception('未找到家长信息');
+                }
+                $info = $parent->toArray();
+                $info['role'] = 'parent';
             }
 
             return [
                 'code' => ResponseCode::SUCCESS,
-                'data' => $student,
+                'data' => $info,
                 'msg' => 'success'
             ];
 
diff --git a/app/common/service/SubjectHomeworkService.php b/app/common/service/SubjectHomeworkService.php
index 637d82a..ee44242 100644
--- a/app/common/service/SubjectHomeworkService.php
+++ b/app/common/service/SubjectHomeworkService.php
@@ -19,7 +19,7 @@ class SubjectHomeworkService
     public function publish($request)
     {
         try {
-            if (empty($request->teacher)) {
+            if (empty((array)$request->teacher)) {
                 throw new Exception('请教师登陆后再设置');
             }
             $teacher = Teacher::where(['id' => $request->teacher->id])->findOrEmpty();
diff --git a/app/middleware/ApiAuthCheckMiddleware.php b/app/middleware/ApiAuthCheckMiddleware.php
index c2812a3..f1e3f96 100644
--- a/app/middleware/ApiAuthCheckMiddleware.php
+++ b/app/middleware/ApiAuthCheckMiddleware.php
@@ -24,7 +24,7 @@ class ApiAuthCheckMiddleware implements MiddlewareInterface
 
         $request->student = new \stdClass();
         $request->teacher = new \stdClass();
-        $request->partent = new \stdClass();
+        $request->parent = new \stdClass();
 
         // 通过反射获取控制器哪些方法不需要登录和鉴权
         $controller = new ReflectionClass($request->controller);
@@ -36,21 +36,22 @@ class ApiAuthCheckMiddleware implements MiddlewareInterface
         $msg = '';
         try {
             $extend = JwtToken::getExtend();
+
             if ($extend['role'] == 'student') {
                 $request->student = \support\Db::table('student')
                     ->where('id', $extend['id'])
-                    ->select('id','student_name','account','openid')
+                    ->select('id', 'student_name', 'account', 'openid')
                     ->first();
             } elseif ($extend['role'] == 'teacher') {
                 $request->teacher = \support\Db::table('teacher')
                     ->where('id', $extend['id'])
-                    ->select('id','account','teacher_name','openid','time_zone_name','time_zone_abbr','time_zone_offset')
+                    ->select('id', 'account', 'teacher_name', 'openid', 'time_zone_name', 'time_zone_abbr', 'time_zone_offset')
                     ->first();
 
-            } elseif ($extend['role'] == 'parents') {
-                $request->partent = \support\Db::table('student_parent')
+            } elseif ($extend['role'] == 'parent') {
+                $request->parent = \support\Db::table('student_parent')
                     ->where('id', $extend['id'])
-                    ->select('id','parent_name','account','openid')
+                    ->select('id', 'parent_name', 'account', 'openid')
                     ->first();
             }
 
diff --git a/plugin/admin/app/controller/SubjectHomeworkController.php b/plugin/admin/app/controller/SubjectHomeworkController.php
index 1007663..b4e3ad2 100644
--- a/plugin/admin/app/controller/SubjectHomeworkController.php
+++ b/plugin/admin/app/controller/SubjectHomeworkController.php
@@ -143,6 +143,7 @@ class SubjectHomeworkController extends Crud
 
             $subject_homework = \app\common\model\SubjectHomework::where(['id' => $data['id']])->findOrEmpty();
             $subject_homework->save([
+                'is_publish' => $data['is_publish'],
                 'homework_web_url' => $data['homework_web_url'],
                 'homework_file_url' => empty($homework_file_url) ? '' : json_encode($homework_file_url, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
                 'homework_version_file_url' => empty($homework_version_file_url) ? '' : json_encode($homework_version_file_url, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
@@ -181,4 +182,21 @@ class SubjectHomeworkController extends Crud
         return view('subject-homework/update', ['subject_homework' => $subject_homework]);
     }
 
+    /**
+     * @desc 更改发布状态
+     * @param Request $request
+     * @return Response
+     */
+    public function changePublishStatus(Request $request)
+    {
+        $subject_homework = \app\common\model\SubjectHomework::where('id', $request->post('id'))->findOrEmpty();
+        $subject_homework->save([
+            'is_publish' => $request->post('is_publish')
+        ]);
+        return json([
+            'code' => ResponseCode::WEB_API_SUCCESS,
+            'msg' => 'success'
+        ]);
+    }
+
 }
diff --git a/plugin/admin/app/view/subject-homework/index.html b/plugin/admin/app/view/subject-homework/index.html
index 58cba5f..0b3969f 100644
--- a/plugin/admin/app/view/subject-homework/index.html
+++ b/plugin/admin/app/view/subject-homework/index.html
@@ -273,7 +273,7 @@
                         let postData = {};
                         postData[field] = data.elem.checked ? 1 : 0;
                         postData[PRIMARY_KEY] = this.value;
-                        $.post(UPDATE_API, postData, function (res) {
+                        $.post('/app/admin/subject-homework/changePublishStatus', postData, function (res) {
                             layer.close(load);
                             if (res.code) {
                                 return layui.popup.failure(res.msg, function () {
diff --git a/plugin/admin/app/view/subject-homework/update.html b/plugin/admin/app/view/subject-homework/update.html
index 8b0b952..72b3189 100644
--- a/plugin/admin/app/view/subject-homework/update.html
+++ b/plugin/admin/app/view/subject-homework/update.html
@@ -217,7 +217,7 @@
             
             
- +