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
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([], '同步成功');
|
|
}
|
|
|
|
}
|