You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
4.5 KiB

<?php
namespace app\base\controller\wechat\admin;
use ali\oss\Oss;
use app\base\logic\Wechat;
use app\BaseController;
use app\base\controller\wechat\api\Material;
use app\base\model\wechat\WechatNews;
use think\App;
class News extends BaseController
{
/**
* 获取微信图文消息
* @date 2020-09-16
*/
public function lists()
{
$param = input('post.');
$wechat_news_model = new WechatNews();
$where = [
['uid', '=', UID]
];
if (!empty($param['keyword'])) {
$where[] = ['name', 'like', '%' . $param['keyword'] . '%'];
}
$wechat_news_list = $wechat_news_model->getDataList($where, $param['page'], '*', 'id desc', $param['limit'])->each(function ($item, $key) {
$item['type_text'] = $item->type_text;
$item['news_number'] = count($item->content);
return $item;
});
$rdata = [
'list' => $wechat_news_list
];
return sendSuccessMessage($rdata);
}
/**
* 微信图文消息编辑
* @date 2020-09-30
*/
public function dataAdd()
{
$param = input('post.');
$wechat_news_model = new WechatNews();
if (empty($param['news_item_title'])) {
return sendErrorMessage(2001, '至少添加1条图文');
}
$data = [
'id' => $param['id'],
'uid' => UID,
'name' => $param['name'],
'type' => 1,
];
foreach ($param['news_item_title'] as $k => $v) {
$data['content'][] = [
'title' => $param['news_item_title'][$k],
'description' => $param['news_item_description'][$k],
'image' => $param['news_item_image'][$k],
'url' => $param['news_item_url'][$k]
];
}
$res = $wechat_news_model->dataUpdate($data);
if (!$res) {
return sendErrorMessage(4001, '操作失败');
}
return sendSuccessMessage([], '操作成功');
}
/**
* 删除微信图文消息
* @param string $id 数据ID
* @date 2020-09-16
*/
public function dataDel()
{
$id = input('param.id');
$wechat_news_model = new WechatNews();
$res = $wechat_news_model->dataDel($id);
if (!$res) {
return sendErrorMessage(4001, '删除失败');
}
return sendSuccessMessage([], '删除成功');
}
/**
* 同步微信平台微信图文消息
* @date 2020-10-09
*/
public function dataSynchronize()
{
$wechat_news_model = new WechatNews();
$wechat_logic = new Wechat();
$oss_param = get_ali_oss_config();
$ali_config = [
'oss' => $oss_param
];
$oss_class = new Oss($ali_config);
$material_logic = new \app\base\logic\weixin\Material();
// 获取所有素材
$news_list = $material_logic->listMaterial('news');
$media_ids = $wechat_news_model->where('media_id', 'not null')->column('id', 'media_id');
foreach ($news_list as $k => $v) {
if (array_key_exists($v['media_id'], $media_ids)) {
$data['id'] = $media_ids[$v['media_id']];
}
$data['media_id'] = $v['media_id'];
$data['platform_news_content'] = $v;
$data['name'] = $v['content']['news_item'][0]['title'];
$data['uid'] = UID;
$data['type'] = 2;
$content = [];
foreach ($v['content']['news_item'] as $k1 => $v1) {
$stream = $wechat_logic->getPermanentMaterial($v1['thumb_media_id']);
$picurl = '';
if ($stream instanceof \EasyWeChat\Kernel\Http\StreamResponse) {
// 以内容 md5 为文件名
$file_path = $stream->save('./temp/', md5(microtime(true)));
$result = $oss_class->uploadFile('./temp/' . $file_path, 'uid' . UID . '/member/' . date("Ymd"));
$picurl = $result['info']['url'];
}
$content[] = [
'title' => $v1['title'],
'description' => $v1['digest'],
'image' => $picurl,
'url' => $v1['url'],
];
}
$data['content'] = $content;
$wechat_news_model->dataUpdate($data);
}
return sendSuccessMessage([], '同步成功');
}
}