/** * 获取封面图片素材媒体列表 * @method getThumbMaterialMediaList * @since 0.0.1 * @return {array} * @example $this->getThumbMaterialMediaList(); */ public function getThumbMaterialMediaList() { $materialMedias = []; foreach ($this->thumbMaterialMediaIdList as $thumb_material_media_id) { $materialMedias[$thumb_material_media_id] = WechatMaterialMedia::findOne($thumb_material_media_id); } return $materialMedias; }
/** * 获取缩略图媒体 * @method getThumbMaterialMedia * @since 0.0.1 * @return {object} * @example $this->getThumbMaterialMedia(); */ protected function getThumbMaterialMedia() { $media = WechatMaterialMedia::findOne(['appid' => $this->manager->app->appid, 'material_id' => $this->thumb_material_id, 'expired_at' => 0]); if (!$media) { $media = WechatMaterialMedia::findOne($this->manager->addMaterial($this->thumb_material_id)); } return $media; }
/** * 新增永久素材 * * @since 0.0.1 * @param {integer} $material_id 素材id * @return {integer} * @example \Yii::$app->wechat->addMaterial($material_id); */ public function addMaterial($material_id) { $material = WechatMaterial::findOne($material_id); if (!$material) { throw new ErrorException('数据查询失败'); } else { if ($materialMedia = WechatMaterialMedia::findOne(['appid' => $this->app->appid, 'material_id' => $material->id, 'expired_at' => 0])) { return $materialMedia->id; } } $postData = ['media' => '@' . $material->localFile]; if ($material->type == 'video') { if ($material->title == '') { throw new ErrorException('视频标题不能为空'); } $postData['description'] = Json::encode(['title' => $material->title, 'introduction' => $material->description]); } $data = $this->getData('/cgi-bin/material/add_material', ['access_token' => $this->getAccessToken(), 'type' => $material->type], $postData); $material->cleanTmp(); if ($this->errcode == 0) { $materialMedia = new WechatMaterialMedia(); $materialMedia->appid = $this->app->appid; $materialMedia->material_id = $material->id; $materialMedia->media_id = $data['media_id']; if (isset($data['url'])) { $materialMedia->url = $data['url']; } if ($materialMedia->save()) { return $materialMedia->id; } } return 0; }