GrantMedalController.class.php
2.72 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
<?php
namespace Apicp\Controller\Medal;
use Com\PackageValidate;
use Common\Common\Constant;
use Common\Common\Integral;
use Common\Common\Msg;
use Common\Common\User;
use Common\Model\MedalLogModel;
use Common\Service\MedalService;
class GrantMedalController extends AbstractController
{
/**
* GrantMedal
* @author tangxingguo
* @desc 授予勋章接口
* @param Array im_ids:true 勋章ID
* @param Array uids:true 人员ID
* @param String description 描述
* @return Array
*/
public function index()
{
$rules = [
'im_ids' => 'require|array',
'uids' => 'require|array',
'description' => 'max:80',
];
// 验证请求数据
$validate = new PackageValidate($rules, [], array_keys($rules));
$imIds = $validate->postData['im_ids'];
$uids = $validate->postData['uids'];
$desc = $validate->postData['description'] ?? '';
// 取人员信息
$users = &User::instance()->listAll(['memUids' => $uids]);
$users = array_combine_by_key($users, 'memUid');
// 取勋章信息
$medalServ = new MedalService();
$medalList = $medalServ->list_by_conds(['im_id' => $imIds]);
$medalList = array_combine_by_key($medalList, 'im_id');
$integralUtil = &Integral::instance();
foreach ($uids as $uid) {
foreach ($imIds as $imId) {
if (isset($users[$uid]) && isset($medalList[$imId])) {
// 授予勋章
$integralUtil->endowMedal(
$imId,
$uid,
$users[$uid]['memUsername'],
MedalLogModel::GET_TYPE_HM,
$this->_login->user
);
// 推送消息
$this->sendAwardNotice($uid, $medalList[$imId]['name'], $desc);
}
}
}
}
/**
* @desc 勋章推送
* @author tangxingguo
* @param array $uid 用户信息
* @param array $medalName 勋章名称
* @param string $desc 描述
* @return bool;
*/
public function sendAwardNotice($uid, $medalName, $desc = '')
{
if (!empty($desc)) {
$desc = "\n内容:{$desc}";
}
$msgServ = &Msg::instance();
$msg_data = [
[
'title' => "恭喜您,获得【{$medalName}】勋章",
'description' => "获取渠道:管理员授予\n获取时间:" . rgmdate(MILLI_TIME, 'Y-m-d H:i') . $desc,
'url' => oaUrl('Frontend/Index/Medal/Index'),
]
];
$msgServ->sendNews($uid, null, null, $msg_data);
}
}