cuiyebiao
2021-03-08 991f8dde7f01897d325244f2a52d9c12880efd05
班级管理优化
1 files modified
47 ■■■■■ changed files
app/Http/Controllers/Api/v1/ClassController.php 47 ●●●●● patch | view | raw | blame | history
app/Http/Controllers/Api/v1/ClassController.php
@@ -25,8 +25,8 @@
        $roleId = $request->input('roleId');#身份 2026 馆长
        $accurateRoleId = strstr($roleId, '2026');
        $soso = $request->input('soso');#搜搜
        $classstatus = $request->input('classstatus');#状态筛选 0 全部 1 开课中  2 结课 3 等课
        if ($classstatus == 0){
        $classstatus = $request->input('courseStatus');#状态筛选 0 全部 1 开课中  2 结课 3 等课
        if ($classstatus < 1 && empty($classstatus)){
            $classstatus = '1,2,3';
        }
        $where = "a.isDelete = 0 and a.classMode >1 and a.status = 1 and a.orgId = '{$orgId}'";
@@ -88,6 +88,7 @@
                $list[$k]['coursetableclassHour'] = 0;
                $list[$k]['ConsumedclassHour'] = 0;
            }
        }
        $result = [];
        $result['page'] = $page;
@@ -103,10 +104,13 @@
        $date = date("Y-m-d H:i:s");
        $id = $request->input('id');
        $info = DB::table('anni_class as a')
            ->select('a.id','a.classCode','a.className','a.classstatus','a.courseId',
                'a.openclassTime','a.onlineclassTime','a.teacherName','a.isCoursePlan',
                'b.RealCnName')
            ->select('a.id','a.classCode','a.className','a.classstatus','a.courseId','c.courseName',
                'a.openclassTime','a.onlineclassTime','a.teacherName','a.isCoursePlan','b.RealCnName',
                DB::raw("(SELECT COUNT(1) FROM anni_classstudent
                    WHERE classCode = a.classCode and isDelete = 0 and isDeleteReason = 0) as userCount")
                )
            ->leftJoin('annieportal.sys_user as b','b.UserId','=','a.hometeacherId')
            ->leftJoin('anni_course as c','c.id','=','a.courseId')
            ->where(array('a.id'=>$id))
            ->first();
        #已排课课时
@@ -145,8 +149,8 @@
        $where['a.classCode'] = $classCode;
        $List = DB::table('anni_classstudent as a')
            ->select('a.id','a.username','a.classcode','b.name','b.englishName','b.faceImg','b.headPhoto',
                DB::raw("(select sum(classHour) from anni_attendrecord
                      where status = 1 and isDelete=0 and username = a.username and classStatus in (1,5,6) ) as HourSum"),
//                DB::raw("(select sum(classHour) from anni_attendrecord
//                      where status = 1 and isDelete=0 and username = a.username and classStatus in (1,5,6) ) as hourSum"),
                DB::raw("(select sum(cl.courseHour) from anni_classstudent as ct
                      left join anni_class as cl on cl.classCode = ct.classCode
                      where ct.username = a.username and ct.isDelete = 0 and cl.classstatus !=2) as courseHourSum"),
@@ -158,7 +162,12 @@
            ->offset($offset)
            ->limit($pageSize)
            ->get()->toArray();
        $classStatus = array(1,5,6);
        foreach ($List as $k=>$v){
            $hourSum = DB::table('anni_attendrecord')
                ->where(array('status'=>1,'isDelete'=>0,'username'=>$v['username']))
                ->whereIn('classStatus',$classStatus)
                ->sum('classHour');
            if ($v['parentid'] >0){
                $List[$k]['isActivation'] = 1;
            }else{
@@ -170,7 +179,7 @@
            }else{
                $List[$k]['faceImg'] = $this->fun->stitchingPath($v['headPhoto']);
            }
            $List[$k]['surplusSum'] = $v['courseHourSum'] - $v['HourSum'];
            $List[$k]['surplusSum'] = $v['courseHourSum'] - $hourSum;
        }
        $total = DB::table('anni_classstudent as a')->where($where)->count();
        $result = [];
@@ -219,11 +228,7 @@
        }
        $userCount = DB::select("SELECT id FROM anni_coursetable as a WHERE a.classCode = '{$classCode}' and a.isDelete = 0");
        $userCount = count($userCount);
        $totalPage =  ceil($userCount / $pageSize);
        if ($totalPage == 0){
            $totalPage = 1;
        }
        return $this->_response(['list' => $List, 'page' => (int)$page, 'pageSize' => (int)$pageSize, 'totalPage' => $totalPage, 'total' => $userCount]);
        return $this->_response(['list' => $List, 'page' => (int)$page, 'pageSize' => (int)$pageSize,'total' => $userCount]);
    }
    /*
     * 排课安排详情
@@ -237,10 +242,19 @@
        $where['a.classNumber'] = $classNumber;
        $where['a.isDelete'] = 0;
        $List = DB::table('anni_attendrecord as a')
            ->select('a.id','b.name','a.username','a.classStatus')
            ->select('a.id','a.username','a.classStatus',
                'b.name','b.englishName','b.faceImg','b.headPhoto')
            ->leftjoin('anni_students as b','b.username','=','a.username')
            ->where($where)
            ->get();
            ->get()->toArray();
        foreach ($List as $k=>$v){
            $List[$k]['name'] = $v['englishName'].'('.$v['name'].')';
            if (!empty($v['faceImg'])){
                $List[$k]['faceImg'] = $this->fun->getFacePath($v['faceImg']);
            }else{
                $List[$k]['faceImg'] = $this->fun->stitchingPath($v['headPhoto']);
            }
        }
        return $this->_response($List);
    }
    /*
@@ -249,6 +263,7 @@
     */
    public function attendrecordSave(Request $request){
        $id = $request->input('id');
        $idArr = explode(',',$id);
        $classStatus = $request->input('classStatus');
        $explain = $request->input('explain');#备注
        if (!empty($explain)){
@@ -265,7 +280,7 @@
        $data['classStatus'] = $classStatus;
        $data['updateTime'] = date("Y-m-d H:i:s");
        DB::table('anni_attendrecord')->where("id",$id)
        DB::table('anni_attendrecord')->whereIn("id",$idArr)
            ->update($data);
        return $this->_response(null, ResponseCode::SUCCESS, '成功');
    }