<?php /** * Created by PhpStorm. * User: liyifei2012it * Date: 17/6/13 * Time: 18:13 */ namespace Frontend\Controller\Callback; use Common\Common\Msg; use Common\Service\ArticleService; use Common\Service\ClassService; use Think\Log; use VcySDK\Cron; use VcySDK\Service; class SendNoticeController extends AbstractController { /** * 发送消息 * @author tangxingguo */ public function Index() { $stream_data = file_get_contents('php://input'); $stream_data = empty($stream_data) ? [] : json_decode($stream_data, true); Log::record('---SendNotice stream data:' . var_export($stream_data, true), Log::INFO); $cron_id = I('get.cron_id', '', 'trim'); $article_id = I('get.article_id', 0, 'intval'); $uids = isset($stream_data['uids']) ? $stream_data['uids'] : []; // 删除计划任务 if (!empty($cron_id)) { $cronSdk = new Cron(Service::instance()); $cronSdk->delete($cron_id); } // 发送消息 $this->_sendNotice($article_id, $uids); exit('SUCCESS'); } /** * 发送新课程消息通知 * @param int $article_id 课程数据 * @param array $uids 人员数据 * @return bool */ private function _sendNotice($article_id, $uids) { // 参数检查 if (empty($article_id) || !is_array($uids) || empty($uids)) { return false; } // 课程检查 $articleServ = new ArticleService(); $article = $articleServ->get($article_id); if (empty($article)) { Log::record('---SendNotice article empty', Log::ERR); return false; } // 发送消息 $className = $this->_className($article['class_id']); if (empty($className)) { Log::record('---SendNotice parent calss empty', Log::ERR); return false; } $msgServ = &Msg::instance(); $msg_data = [ [ 'title' => "【{$className}】{$article['article_title']}", 'description' => $article['summary'], 'url' => oaUrl('Frontend/Index/Detail/Index', ['article_id' => $article['article_id'], 'data_id' => $article['data_id'], 'article_type' => $article['article_type']]), 'picUrl' => $article['cover_url'], ] ]; // 推送 $msgServ->sendNews($uids, null, null, $msg_data); return true; } /** * 取顶级分类名称 * @author tangxingguo * @param int $class_id 分类名称 * @return mixed */ private function _className($class_id) { // 获取分类 $classServ = new ClassService(); $class_list = $classServ->list_all(); if (empty($class_list)) { return ''; } $class_list = array_combine_by_key($class_list, 'class_id'); if (!isset($class_list[$class_id])) { return ''; } // 获取一级分类 while ($class_list[$class_id]['parent_id'] > 0) { $class_id = $class_list[$class_id]['parent_id']; } return $class_list[$class_id]['class_name']; } }