# 同步課程統計功能 #
## 1. 學習統計:獲取學生的同步課程 ##
http://t.wmxuetang.com/index.php?r=croom/manage/getTeachCourse&userID=474598
返回格式JSON:
```
{
"data": [
{
"id": "20",
"version": "人教版",
"subjectID": 2,
"subjectName": "數學",
"textBookID": 42038,
"textBookName": "八年級上冊",
"expire": 1556586494000,
"expireStatus": 0,
"cover": "http://file.cnweike.cn/content/tmp/0/0/226/57954/53518.jpg"
},
{
"id": "21",
"version": "人教版",
"subjectID": 2,
"subjectName": "數學",
"textBookID": 53743,
"textBookName": "八年級下冊",
"expire": 1536225016000,
"expireStatus": 1,
"cover": "http://file.cnweike.cn/content/tmp/0/0/1/260/83582.jpg"
},
{
"id": "412",
"version": "人教版",
"subjectID": 2,
"subjectName": "數學",
"textBookID": 54534,
"textBookName": "九年級上冊",
"expire": 1537862783000,
"expireStatus": 1,
"cover": "http://file.cnweike.cn/content/tmp/0/0/1/260/83583.jpg"
},
{
"id": "943",
"version": "新課標人教A版",
"subjectID": 2,
"subjectName": "數學",
"textBookID": 4839,
"textBookName": "必修三",
"expire": 0,
"expireStatus": 2,
"cover": "http://file.cnweike.cn/content/tmp/0/0/226/57877/53441.jpg"
},
{
"id": "3633",
"version": "新課標人教A版",
"subjectID": 2,
"subjectName": "數學",
"textBookID": 4677,
"textBookName": "必修一",
"expire": 0,
"expireStatus": 2,
"cover": "http://file.cnweike.cn/content/tmp/0/0/226/57875/53439.jpg"
}
],
"status": 0,
"msg": "success",
"ssk": null
}
```
*D:\wamp\www\xue.test\xuetang\protected\modules\croom\controllers\ManageController.php*
```
/**
* 學習統計:獲取學生的同步課程
* @example http://t.wmxuetang.com/index.php?r=croom/manage/getTeachCourse&userID=474598
* @url croom/manage/getTeachCourse
* @param
* userID
*/
public function actionGetTeachCourse(){
$args['userID'] = RequestUtils::getNormalRequest('userID');;
$args['status'] = WK::CNT_ENABLE;
$args['order'] = 't.id ASC';
$args['with'] = array('tag','tag.version');
$teachCourses = TeachCourseService::factory()->getTeachCourses($args);
$list = array();
if($teachCourses){
foreach ($teachCourses as $teachCourse){
$cover = RelevanceService::factory()->getTextbookCover($teachCourse->fdTagID);
$versionObject = wkeVersion::model()->findByPk($teachCourse->tag->version->fdValue);
$item = array();
$item['id'] = $teachCourse->id;
$item['version'] = $versionObject->fdName;
$item['subjectID'] = (int)$teachCourse->fdSubjectID;
$item['subjectName'] = Yii::app()->params['SUBJECT_ARR'][$teachCourse->fdSubjectID];
$item['textBookID'] = (int)$teachCourse->fdTagID;
$item['textBookName'] = $teachCourse->tag->fdName;
$item['expire'] = strtotime($teachCourse->fdExpire)*1000;
$item['expireStatus'] = $teachCourse->fdExpire ? (time() > strtotime($teachCourse->fdExpire) ? 1 : 0) : 2; //0未到期 1已到期 2未購買
$item['cover'] = $cover;
$list[] = $item;
}
}
ResponseUtils::json(array('data'=>$list),0,"success");
}
```
## 2. 同步課程練習數據統計
```
/**
* 學習統計:同步課程練習數據統計
* @author wangbo 2019-1-23
* @url croom/manage/myTeachCourseRecordStatistics
* @example http://t.wmxuetang.com/index.php?r=croom/manage/myTeachCourseRecordStatistics&userID=474598&textBookID=42038&begin=1547596800000
* @param
* userID
* textBookID
* begin
* end
*/
public function actionMyTeachCourseRecordStatistics()
{
$userID = RequestUtils::getNormalRequest('userID', 0);
$textbookID = RequestUtils::getNormalRequest('textBookID', 0);
$end = RequestUtils::getNormalRequest('end', (time() + 3600 * 24) * 1000);
$begin = RequestUtils::getNormalRequest('begin', (time() - 3600 * 24 * 30) * 1000); //默認是30天
// todo:校驗數據
if (!$textbookID) {
ResponseUtils::json(null, 1, '缺少必填參數textBookID');
}
$data = TeachCourseService::factory()->getTeachCourseByUserID($textbookID, $userID, $begin, $end);
if ($data) {
ResponseUtils::json(['data' => array_values($data)]);
}
ResponseUtils::json(['data' => []]);
}
```
*D:\wamp\www\xue.test\xuetang\protected\service\TeachCourseService.php*
```
/**
* 同步課程,學生學習統計查詢
* @param $textbookID
* @param int $userID
* @return array
* @author wangbo 2019-1-23
*/
public function getTeachCourseByUserID($textbookID, $userID, $begin, $end)
{
if(!$textbookID)
return array();
$knowLedges = $this->getBookTree($textbookID);
$teachCourse = TeachCourse::model()->findByAttributes(['fdUserID' => $userID, 'fdTagID' => $textbookID]);
if (!$teachCourse) {
return array();
}
$teachCourseID = $teachCourse->id;
// 獲取章、節、知識點目錄結構
$courseChapter = array();
if($knowLedges){
foreach ($knowLedges as $knowledge){
//章
$knowFirst['id'] = $knowledge['id'];
$knowFirst['name'] = $knowledge['name'];
$knowFirst['level'] = $knowledge['level'];
$book = Tag::model()->findByPk($knowledge['id']);
$tags = CategoryService::factory()->getChildren('Tag', $knowledge['id'], null, $book->fdLeft, $book->fdRight, true, 0);
$temp = array();
foreach ($tags as $tag) {
//節
$child = array();
$child['id'] = $tag->id;
$child['name'] = $tag->fdName;
$child['level'] = $tag->fdLevel;
if ($knowledge['id'] == $tag->fdParentID) {
$temp[$tag->id] = $child;
} else {
$temp[$tag->fdParentID] ? $temp[$tag->fdParentID]['childNode'][$tag->id] = $child : null; //過濾已屏蔽章的小節
}
// 知識點
if($tag->fdLevel == 3){
$point = V2RelevanceService::factory()->getTagRelevancy($tag->id,null,null,array('tag'),'t.fdOrder ASC,t.id ASC');
if($point){
foreach ($point as $v){
$know = [];
$know['id'] = $v->fdTagID;
$know['name'] = $v->tag->fdName;
$know['level'] = $v->tag->fdLevel;
// 練習次數
$total = $this->getUserTeachCourseRecordTotal($teachCourseID, $v->fdTagID, $begin, $end);
if ($total['count']) {
$know['totalExamCount'] = $total['count'];
$know['scoreRates'] = round($total['scoreRates']);
$temp[$tag->id]['childNode'][$v->fdTagID] = $know;
}
}
}
}
}
$temp = $this->_arrConvert($temp);
if ($temp) {
$knowFirst['childNode'] = array_values($temp);
$courseChapter[$knowledge['id']] = $knowFirst;
}
}
}
$courseChapter = $this->_arrConvert($courseChapter);
foreach ($courseChapter as $k => $v) {
if ($v['childNode']) {
foreach ($v['childNode'] as $i => $j) {
if ($v['childNode'][$i]['childNode']) {
$courseChapter[$k]['childNode'][$i]['childNode'] = array_values($v['childNode'][$i]['childNode']);
}
}
}
}
return $courseChapter;
}
```
- 說明
- 開發任務
- 星課-真光
- 課表
- Excel Down
- 調課
- 課表修改
- 課表代碼分析
- 課堂
- 課堂:應用商店通信管理協議
- 教師賬號強制綁定手機或郵箱
- 強制綁定手機和修改密碼的規則
- 學堂
- 課程學習:討論功能
- 后臺:課程討論管理
- 課程直播接口
- 學習統計功能(舊版)
- 學習統計功能(新版)
- 同步課程統計功能
- 同步課程編輯-新增視頻
- 第三方接口
- 學科網
- 安徽第三方
- 大賽
- 管控系統
- 日志管理
- 設備日志
- 平板接口
- 渝教
- 教學總結
- 空白目錄
- Yii 1.1
- 學堂架構
- Yii 1.1一些方法的解讀
- MVCS結構
- 基礎使用語法
- 創建1個新模塊
- 關聯模型
- CDbCriteria
- 學生-課堂記錄
- 學生端頁面展示
- 教師端頁面展示
- 編輯課程文檔
- SQL
- 課堂項目運行入口
- 上傳資源示意圖
- 行為
- PHPStorm
- 源碼閱讀
- 會診答卷頁面
- 考點練習
- 資源首頁
- 同步課程
- 同步課程:章節信息
- 升學復習
- 統計圖-范例
- 模塊
- 非法詞
- 服務層
- MongoDB類
- 學堂作答記錄從Mongo新集合獲取數據
- MongoYii
- 錯題集
- 小技巧
- 完善資料
- 郵件發送
- K12
- JSpang視頻課程
- MongoDB
- 創業
- 項目
- 包包