StudyInfoController.class.php
4.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 18/4/25
* Time: 16:48
*/
namespace Apicp\Controller\Map;
use Com\PackageValidate;
use Common\Common\Constant;
use Common\Common\User;
use Common\Service\MapPathService;
use Common\Service\MapService;
use Common\Service\PathService;
use Common\Service\UserPathService;
class StudyInfoController extends \Apicp\Controller\AbstractController
{
/**
* StudyInfo
* @author liyifei
* @desc 员工学习详情接口
* @param Int map_id:true 地图ID
* @param String uid:true 人员ID
* @return array 员工学习详情列表
array(
'map_id' => 123, // 地图ID
'user' => array(
'uid' => 1, // 人员ID
'username' => '张三', // 姓名
'dp_name' => array('技术部','后端'), // 所属部门
'job' => 'PHP', // 职位
'role' => '梁山好汉', // 角色
'face' => 'http://dsc.vhangyi.com/1.jpg', // 头像
),
'page' => 1, // 页码
'limit' => 9, // 每页数据条数
'total' => 9, // 数据总数
'list' => array( // 列表数据
array(
'path_id' => 1, // 路径ID
'path_name' => '路径1', // 路径名称
'study_time' => 10, // 学习时长(单位:秒)
'complete_status' => 10, // 完成状态(1=未完成;2=已完成)
'update_time' => 1491897290000, // 学习时间
),
)
)
*/
public function Index_post()
{
// 验证规则
$rules = [
'page' => 'integer',
'limit' => 'integer',
'map_id' => 'require|integer',
'uid' => 'require',
];
// 验证数据
$validate = new PackageValidate($rules, [], array_keys($rules));
$postData = $validate->postData;
$map_id = $postData['map_id'];
// 地图是否存在
$mapServ = new MapService();
$map = $mapServ->get($map_id);
if (empty($map)) {
E('_ERR_MAP_NOT_FOUND');
}
// 用户已学的学习路径
$conds = [
'map_id' => $map_id,
'uid' => $postData['uid'],
];
$userPathServ = new UserPathService();
$userPathList = $userPathServ->list_by_conds($conds);
if (!empty($userPathList)) {
$userPathList = array_combine_by_key($userPathList, 'path_id');
}
// 地图关联的学习路径
$mapPathServ = new MapPathService();
$mapPathList = $mapPathServ->list_by_conds(['map_id' => $map_id], null, ['`order`' => 'ASC']);
$pathIds = array_column($mapPathList, 'path_id');
// 学习路径详情
$pathServ = new PathService();
$pathList = $pathServ->list_by_pks($pathIds);
$pathList = array_combine_by_key($pathList, 'path_id');
foreach ($mapPathList as $k => $path) {
$path_id = $path['path_id'];
// 补全路径名称
$mapPathList[$k]['path_name'] = $pathList[$path_id]['path_name'];
// 补全学习状态、学习时长、学习时间
if (isset($userPathList[$path_id])) {
$mapPathList[$k]['complete_status'] = $userPathList[$path_id]['complete_status'];
$mapPathList[$k]['study_time'] = $userPathList[$path_id]['study_time'];
$mapPathList[$k]['update_time'] = $userPathList[$path_id]['update_time'];
} else {
$mapPathList[$k]['complete_status'] = Constant::COMPLETE_STATUS_IS_FALSE;
$mapPathList[$k]['study_time'] = 0;
$mapPathList[$k]['update_time'] = 0;
}
}
// 人员详情
$userServ = &User::instance();
$user = $userServ->getByUid($postData['uid'], true, 1);
$this->_result = [
'map_id' => $postData['map_id'],
'user' => [
'uid' => $postData['uid'],
'username' => $user['memUsername'],
'dp_name' => array_column($user['dpName'], 'dpName'),
'job' => $user['memJob'],
'role' => $user['memRole'],
'mobile' => $user['memMobile'],
'face' => $user['memFace'],
],
'page' => Constant::PAGING_DEFAULT_PAGE,
'limit' => Constant::PAGING_DEFAULT_LIMIT,
'total' => count($mapPathList),
'list' => $mapPathList,
];
}
}