mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
79 lines
2.9 KiB
PHP
79 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace library;
|
|
|
|
use think\Db;
|
|
use think\Log;
|
|
|
|
/**
|
|
* 微信图文处理器
|
|
*
|
|
* @author Anyon <zoujingli@qq.com>
|
|
* @date 2016/03/15 17:28
|
|
*/
|
|
class News {
|
|
|
|
/**
|
|
* 通过图文ID读取图文信息
|
|
* @param int $id 本地图文ID
|
|
* @param array $where 额外的查询条件
|
|
* @return array
|
|
*/
|
|
static public function get($id, $where = []) {
|
|
$data = Db::table('wechat_news')->where('id', $id)->where($where)->find();
|
|
$article_ids = explode(',', $data['article_id']);
|
|
$articles = Db::table('wechat_news_article')->where('id', 'in', $article_ids)->select();
|
|
$data['articles'] = array();
|
|
foreach ($article_ids as $article_id) {
|
|
foreach ($articles as $article) {
|
|
if (intval($article['id']) === intval($article_id)) {
|
|
unset($article['create_by'], $article['create_at']);
|
|
$data['articles'][] = $article;
|
|
}
|
|
}
|
|
}
|
|
unset($articles);
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* 上传图片永久素材
|
|
* @param string $appid 公众号APPID
|
|
* @param string $local_url 文件URL地址
|
|
* @param string $type 文件类型
|
|
* @param bool $is_video 是否为视频文件
|
|
* @param array $video_info 视频信息
|
|
* @return string|null
|
|
*/
|
|
static public function uploadMedia($appid, $local_url = '', $type = 'image', $is_video = false, $video_info = array()) {
|
|
# 检测文件上否已经上传过了
|
|
$md5 = md5($local_url);
|
|
$wechat = &load_wechat('media', $appid);
|
|
$map = ['md5' => $md5, 'appid' => $wechat->appid];
|
|
if (($result = Db::table('wechat_news_media')->where($map)->find()) && !empty($result)) {
|
|
return $result['media_id'];
|
|
}
|
|
# 下载临时文件到本地
|
|
$filename = ROOT_PATH . 'public/static/upload/wechat/' . join('/', str_split($md5, 16)) . '.' . pathinfo($local_url, PATHINFO_EXTENSION);
|
|
if (!file_exists($filename) || !is_file($filename)) {
|
|
!is_dir(dirname($filename)) && mkdir(dirname($filename), 0755, TRUE);
|
|
file_put_contents($filename, file_get_contents($local_url));
|
|
}
|
|
# 上传图片素材
|
|
$result = $wechat->uploadForeverMedia(array('media' => "@{$filename}"), $type, $is_video, $video_info);
|
|
unlink($filename);
|
|
if (FALSE !== $result) {
|
|
$data = ['appid' => $wechat->appid, 'md5' => $md5, 'type' => $type];
|
|
$data['media_id'] = $result['media_id'];
|
|
isset($result['url']) && $data['media_url'] = $result['url'];
|
|
$data['local_url'] = $local_url;
|
|
if (false !== Db::table('wechat_news_media')->insert($data)) {
|
|
return $data['media_id'];
|
|
}
|
|
}
|
|
Log::error("素材上传失败,请稍后再试!{$wechat->errMsg}[{$wechat->errCode}]");
|
|
return NULL;
|
|
}
|
|
|
|
}
|