AnswerHelper.class.php
5.83 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<?php
/**
* Created by PhpStorm.
* User: zhonglei
* Date: 2017/5/9
* Time: 15:21
*/
namespace Common\Common;
use Common\Service\ClassService;
class AnswerHelper
{
/**
* 实例化
*
* @author zhonglei
* @return AnswerHelper
*/
public static function &instance()
{
static $instance;
if (is_null($instance)) {
$instance = new self();
}
return $instance;
}
/**
* @desc 根据UID取用户部门、头像
* @author tangxingguo
*
* @param array $uids 人员UID
*
* @return array 人员信息
* + dpNames格式[['uid' => '部门1;部门2']
* + faceList格式[['uid' => 'url']
*/
public function getUserInfo($uids)
{
$dpNames = [];
$faceList = [];
// 取人员信息
$userServ = &User::instance();
$users = $userServ->listAll(['memUids' => $uids]);
if (!empty($users)) {
// 取出人员部门
$dpList = array_column($users, 'dpName', 'memUid');
// 部门数组转字串
foreach ($dpList as $k => $v) {
$dpName = array_column($v, 'dpName');
$dpNames[$k] = empty($dpName) ? '' : implode(';', $dpName);
}
// 头像
$faceList = array_column($users, 'memFace', 'memUid');
// 姓名
$usernameList = array_column($users, 'memUsername', 'memUid');
// 性别
$userSex = array_column($users, 'memGender', 'memUid');
}
return [$dpNames, $faceList, $usernameList, $userSex];
}
/**
* @desc 更新用户积分
* @author tangxingguo
*
* @param string $uid 用户ID
* @param int $integral 用户积分(正整数为增加积分,负数为扣减积分)
* @param string $remark 积分变更说明
*
* @return bool
*/
public function updateUserIntegral($uid, $integral, $remark)
{
$integralUtil = &Integral::instance();
if ($integral < 0) {
// 扣减积分
$integralInfo = $integralUtil->listByUid([$uid]);
// 当前拥有的积分
$available = intval($integralInfo[$uid]['available']);
if (abs($integral) > $available) {
// 积分不足
return false;
}
}
// 积分操作
$appName = str_replace("【", "", C('NOTICE_PREFIX'));
$appName = str_replace("】", "", $appName);
$integralUtil->asynUpdateIntegral([
// 用户id
'memUid' => $uid,
// 积分类型 (默认mi_type0)
'miType' => 'mi_type0',
// 积分策略key,integral不为空时,传业务自己的积分规则key
'irKey' => 'dt_answer',
// 积分变更说明
'remark' => $appName . '-' . $remark['dsc'],
// 变更的积分值
'integral' => $integral,
// 应用标识(消息推送必要)
'msgIdentifier' => APP_IDENTIFIER,
// 积分策略应用标识
'businessKey' => Constant::INT_APP_KEY,
// 积分操作方法
'businessAct' => $remark['act'],
]);
return true;
}
/**
* @desc 格式化审核时间为需求格式
* @author tangxingguo
*
* @param int $check_time 审核时间
*
* @return string 格式后的时间文本
*/
public function formatTime($check_time)
{
// 距离现在过去了多久
$spaceTime = MILLI_TIME - $check_time;
// 1分钟内显示刚刚
if ($spaceTime <= 60 * 1000) {
return '刚刚';
}
// 1小时内显示XX分钟前
if ($spaceTime <= 60 * 60 * 1000) {
return floor($spaceTime / (60 * 1000)) . '分钟前';
}
// 1天以内的显示XX个小时前
if ($spaceTime <= 24 * 60 * 60 * 1000) {
return floor($spaceTime / (60 * 60 * 1000)) . '小时前';
}
// 1~7天显示XX天前
if ($spaceTime <= 7 * 24 * 60 * 60 * 1000) {
return floor($spaceTime / (24 * 60 * 60 * 1000)) . '天前';
}
// 超过7天显示具体年-月-日 时-分
return rgmdate($check_time, 'Y/m/d H:i');
}
/**
* @desc 检查用户审批权限
* @author tangxingguo
*
* @param string $uid 用户ID
* @param array $questionInfo 提问信息
*
* @return bool
*/
public function checkApprovedRight($uid, $questionInfo)
{
// 获取分类数据
$calssServ = new ClassService();
$classInfo = $calssServ->get($questionInfo['class_id']);
if (empty($classInfo)) {
// 提问未分类,只有管理员可以审批
return false;
}
if ($uid != $classInfo['manager_id'] && $uid != $questionInfo['checker_uid']) {
// 审批人必须是当前负责人或历史负责人
return false;
}
return true;
}
/**
* 用户头像格式化
*
* @param string $face
*
* @return null|string|string[]
*/
public function format_face($face = '')
{
// 头像不存在
if (empty($face)) {
return '';
}
if ('//' == substr($face, -2)) {
// 如果后两个字符为 // 则重新取
$avatar_url = substr($face, 0, -1) . '100';
} elseif ('/' == substr($face, -1)) {
// 以 / 结尾时
$avatar_url = $face . '100';
} elseif ('/100' != substr($face, -3)) {
// 如果不是以 /100 结尾
$avatar_url = $face . '/100';
} else {
$avatar_url = $face;
}
return urlProtocolConversion($avatar_url);
}
}