<?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); } }