消息推送的代码

//控制器的代码
//要推送的内容
$convertName = [
                    'type'    => '0',
                    'title'   => '恭喜您'.'"' . $model->goodsname . '"商品兑换成功',
                    'content' => $messageData,
                ];
                //获取要推送的人,每个人的uid唯一的标识
                $messageUid = explode(',',$username->uid);
                $messages = new Messages();
                $messages->setDbTableName('{{messages}}', $eid);
                $messagesID = $messages->addMessagesXMessagesAssign($eid,$convertName,$messageUid);
                $openPlatform = $con->createCommand()->select('platform_flag')->from('{{openapi}}')->where('eid =:eid', ['eid' => $this->eid])->queryScalar();
                //推送的地址
                $platform = ['jpush','wxwork',$openPlatform];
//                $platform = ['jpush'];//测试用
				//准备要入库的字段
                $messageOptions = [
                    'type' => 'messages',
                    'eid' => $eid,
                    'userid' => $messageUid,
                    'uid'     => $messageUid,
                    'asid' => $messagesID,
                    'title' => $convertName['title'],//描述
                    'content' => ArrayHelper::getValue($convertName, 'content', '点击查看详情'),
                    'url'     => LinkUrlHelper::getUrl($eid, 'MESSAGE_LIST', $messagesID),
                    'jpush'   => [
                        'extras'  => ['id' => $messagesID, 'type' => 7, 'eid' => $eid],
                        'msgType' => 1
                    ],
                    'uidCount'    => count($messageUid),
                    'useridCount' => count($messageUid),
                ];
                //执行推送方法
                $result = Messages::pushMessage($messageOptions, $eid, join(',', $platform));
                //清除缓存
                MessagesAssign::updateCache($eid);
 /**
     * AppLication: addMessagesXMessagesAssign  消息推送入库的表
     * Author: C
     * @param $eid
     * @param $message
     * @param $pushUIDs
     * @return string
     * @throws ErrorException
     */
    public function addMessagesXMessagesAssign($eid, $message, $pushUIDs)
    {
        $sendPushMessage = Yii::app()->db->beginTransaction();
        try {
            $columns = [
                'eid'   => $eid,
                'type'  => 0,
                'asid'  => 0,
                'image' => '',
                'uid'   => '',
                'datetime' => time(),
            ];
            $this->setAttributes($columns);
            $this->title   = $message['title'];
            $this->content = $message['content'];
            if(!$this->save())
                throw new ErrorException(json_encode($this->getErrors(), JSON_UNESCAPED_UNICODE));

            $this->asid = $this->id; // 更新资源ID
            if(!$this->save())
                throw new ErrorException(json_encode($this->getErrors(), JSON_UNESCAPED_UNICODE));

//             添加至范围可见表
            array_walk($pushUIDs, function ($uid) use ($eid) {
                $this->addMessagesAssign($eid, $this->id, $uid);
            });
            $sendPushMessage->commit();

        } catch (Exception $e) {
            $sendPushMessage->rollBack();

            throw new ErrorException($e->getMessage(), $eid);
        }

        return $this->id;
    }
    /**
     * AppLication: addMessagesAssign 推送的范围可见表
     * Author: C
     * @param $eid
     * @param $messagesID
     * @param $uid
     * @throws ErrorException
     */
    public function addMessagesAssign($eid, $messagesID, $uid)
    {
        $tableName = Yii::getTableByNum('{{messages_assign}}', $this->eid);
//        echo '<pre>';var_dump($tableName);die();
        $columns = ['eid', 'asid', 'type', 'did', 'lid', 'uid', 'datetime', 'isrange'];
        $columns = join(',', $columns);
        $value = [
            'eid'  => $eid,
            'asid' => $messagesID,
            'type' => '0',
            'did'  => 0,
            'lid'  => 0,
            'uid'  => "'$uid'",
            'datetime' => time(),
            'isrange'  => '0'
        ];
        $values[] = '(' . join(',', array_values($value)) . ')';
        $sql = "INSERT INTO $tableName ($columns) VALUES " . join(',', $values);
        $messageRes = Yii::app()->db->createCommand($sql)->execute();
        if(!$messageRes)
            throw new ErrorException(json_encode($messageRes->getErrors()).' => '.__LINE__);
    }
 public static function pushMessage($data, $eid, $platform = null)
    {
        //echo '<pre>';var_dump($data, $eid, $platform);die;
        $asid = 'messages:send:' . $eid . ':' . UtilsHelper::uuid() . ':' . time();
        $data = json_encode($data);
        BaseRedis::set($asid, $data, 86400);
        $result = CommandHelper::exec('messages/send', ['eid' => $eid, 'asid' => urlencode($asid), 'platform' => $platform], true);
        return $result;
    }
//推送的方法
  public static function pushMessage($data, $eid, $platform = null)
    {
        //echo '<pre>';var_dump($data, $eid, $platform);die;
        $asid = 'messages:send:' . $eid . ':' . UtilsHelper::uuid() . ':' . time();
        $data = json_encode($data);
        BaseRedis::set($asid, $data, 86400);
        $result = CommandHelper::exec('messages/send', ['eid' => $eid, 'asid' => urlencode($asid), 'platform' => $platform], true);
        return $result;
    }
     /**
     * 生成uuid
     * @param string $prefix
     * @param string $separator
     * @return string
     */
     public static function uuid($prefix = '', $separator = '')
    {
        $chars = md5(uniqid(mt_rand(), true));
        $uuid = substr($chars, 0, 8) . $separator;
        $uuid .= substr($chars, 8, 4) . $separator;
        $uuid .= substr($chars, 12, 4) . $separator;
        $uuid .= substr($chars, 16, 4) . $separator;
        $uuid .= substr($chars, 20, 12);
        return $prefix . $uuid;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

付煜晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值