SendNoticeController.class.php 1.46 KB
<?php
/**
 * Created by PhpStorm.
 * User: zhonglei
 * Date: 18/5/7
 * Time: 16:57
 */
namespace Rpc\Controller\User;

use Com\PackageValidate;
use Common\Common\StudyMap;
use Common\Service\UserMapService;

class SendNoticeController extends \Rpc\Controller\AbstractController
{
    /**
     * SendNotice
     * @author zhonglei
     * @desc 当用户部门、岗位角色变更后,通知用户学习新的地图RPC接口
     */
    public function Index()
    {
        // 请求数据
        $post_data = $this->_params;

        // 验证规则
        $rules = [
            'uid' => 'require',
            'map_ids' => 'require|array',
        ];

        // 验证请求数据
        $validate = new PackageValidate();
        $validate->postData = $post_data;
        $validate->validateParams($rules);

        // 获取用户已学习记录
        $userMapServ = new UserMapService();
        $list = $userMapServ->list_by_conds(['uid' => $post_data['uid']]);
        $map_ids = array_column($list, 'map_id');

        // 从地图ID中移除已学习的数据
        foreach ($map_ids as $map_id) {
            $key = array_search($map_id, $post_data['map_ids']);

            if ($key !== false) {
                unset($post_data['map_ids'][$key]);
            }
        }

        // 推送消息
        if (!empty($post_data['map_ids'])) {
            StudyMap::sendNotice($post_data['uid'], array_values($post_data['map_ids']));
        }

        return true;
    }
}