233 lines
9.3 KiB
PHP
233 lines
9.3 KiB
PHP
<?php
|
||
namespace app\api\controller;
|
||
use think\Controller;
|
||
use think\Db;
|
||
use app\api\controller\Aiarticle;
|
||
class Cronwechat extends Controller
|
||
{
|
||
|
||
|
||
//期刊接口地址
|
||
protected $iTemplateId = 1;//模版ID
|
||
|
||
/**
|
||
* 查询生成的AI文章推送到微信公众号草稿箱
|
||
*
|
||
* @return void
|
||
*/
|
||
public function articlePushDraft(){
|
||
|
||
$aParam = $this->request->post();
|
||
//获取前一天日期
|
||
$sDate = empty($aParam['date']) ? date('Y-m-d', strtotime('-1 day')) : $aParam['date'];
|
||
//模版ID
|
||
$iTemplateId = empty($aParam['template_id']) ? $this->iTemplateId : $aParam['template_id'] ;
|
||
//获取AI生成的文章
|
||
$sStartDate = strtotime($sDate.' 00:00:00');
|
||
//结束时间
|
||
$sEndDate = strtotime($sDate.'23:59:59');
|
||
$aWhere = ['is_delete' => 2,'update_time' => ['between',[$sStartDate,$sEndDate]]];
|
||
$aAiArticleId = Db::name('ai_article')->where($aWhere)->column('article_id');
|
||
if(empty($aAiArticleId)){
|
||
$this->showMessage('未查询到AI生成的文章:'.$sDate."\n\n",2);
|
||
exit;
|
||
}
|
||
|
||
//查询草稿箱是否生成
|
||
$aWhere = ['article_id' => ['in',$aAiArticleId],'is_delete' => 2];
|
||
$aWechatArticle = Db::name('ai_wechat_article')->where($aWhere)->column('article_id');
|
||
|
||
//数据处理
|
||
$oAiarticle = new Aiarticle;
|
||
|
||
//日志记录
|
||
$aLog = [];
|
||
foreach ($aAiArticleId as $value) {
|
||
if(in_array($value, $aWechatArticle)){
|
||
continue;
|
||
}
|
||
//获取上传素材接口
|
||
$aUploadParm = ['article_id' => $value,'template_id' => $iTemplateId];
|
||
$aResult = json_decode($oAiarticle->uploadMaterial($aUploadParm),true);
|
||
$iStatus = empty($aResult['status']) ? 0 : $aResult['status'];
|
||
$sMsg = empty($aResult['msg']) ? '操作异常'."\n" : $aResult['msg'];
|
||
$aLogInfo = ['article_id' => $value,'type' => 1,'msg' => $sMsg,'status' => 1,'create_time' => time()];
|
||
if($iStatus != 1){
|
||
$aLogInfo['status'] = 2;
|
||
$aLog[] = $aLogInfo;
|
||
$this->showMessage('文章ID:'.$value.'====='.$sMsg."\n",2);
|
||
continue;
|
||
}
|
||
$aLog[] = $aLogInfo;
|
||
|
||
//推送草稿箱
|
||
$aResult = json_decode($oAiarticle->syncWechat($aUploadParm),true);
|
||
$iStatus = empty($aResult['status']) ? 0 : $aResult['status'];
|
||
$sMsg = empty($aResult['msg']) ? '操作异常'."\n" : $aResult['msg'];
|
||
$aLogInfo = ['article_id' => $value,'type' => 2,'msg' => $sMsg,'status' => 1,'create_time' => time()];
|
||
if($iStatus != 1){
|
||
$aLogInfo['status'] = 2;
|
||
$aLog[] = $aLogInfo;
|
||
$this->showMessage('文章ID:'.$value.'====='.$sMsg."\n",2);
|
||
continue;
|
||
}
|
||
$aLog[] = $aLogInfo;
|
||
}
|
||
//插入操作日志
|
||
if(!empty($aLog)){
|
||
$result = json_decode($oAiarticle->addWechatLog($aLog));
|
||
$iStatus = empty($result['status']) ? 0 : $result['status'];
|
||
$sMsg = empty($result['msg']) ? '插入日志记录失败' : $result['msg'];
|
||
if($iStatus != 1){
|
||
$this->showMessage($sMsg,2);
|
||
}
|
||
}
|
||
$this->showMessage('AI生成的文章推送草稿箱完成:'.$sDate."\n",1);
|
||
}
|
||
|
||
/**
|
||
* 查询推送到微信公众号草稿箱的AI文章并发布
|
||
*
|
||
* @return void
|
||
*/
|
||
public function articlePublishDraft(){
|
||
|
||
$aParam = $this->request->post();
|
||
//获取前一天日期
|
||
$sDate = empty($aParam['date']) ? date('Y-m-d', strtotime('-1 day')) : $aParam['date'];
|
||
//模版ID
|
||
$iTemplateId = empty($aParam['template_id']) ? $this->iTemplateId : $aParam['template_id'] ;
|
||
//获取AI生成的文章
|
||
$sStartDate = strtotime($sDate.' 00:00:00');
|
||
//结束时间
|
||
$sEndDate = strtotime($sDate.'23:59:59');
|
||
$aWhere = ['is_delete' => 2,'update_time' => ['between',[$sStartDate,$sEndDate]]];
|
||
//查询推送到草稿箱未发布的文章
|
||
$aWhere = ['publish_status' => '-1','is_delete' => 2];
|
||
$aWechatArticle = Db::name('ai_wechat_article')->field('article_id,template_id,media_id')->where($aWhere)->select();
|
||
if(empty($aWechatArticle)){
|
||
$this->showMessage('未查询到需要发布的文章:'.$sDate."\n\n",2);
|
||
exit;
|
||
}
|
||
|
||
//数据处理
|
||
$oAiarticle = new Aiarticle;
|
||
//日志记录
|
||
$aLog = [];
|
||
foreach ($aWechatArticle as $value) {
|
||
$aLogInfo = ['article_id' => $value['article_id'],'type' => 3,'msg' =>'','status' => 1,'create_time' => time()];
|
||
if(empty($value['media_id'])){
|
||
$sMsg = '需要发布的文章:'.$value['article_id']."未查询到media_id\n\n";
|
||
$aLogInfo['status'] = 2;
|
||
$aLogInfo['msg'] = $sMsg;
|
||
$aLog[] = $aLogInfo;
|
||
$this->showMessage($sMsg,2);
|
||
continue;
|
||
}
|
||
//发布草稿箱
|
||
$aUploadParm = ['article_id' => $value['article_id'],'template_id' => $value['template_id']];
|
||
$aResult = json_decode($oAiarticle->publishDraft($aUploadParm),true);
|
||
$iStatus = empty($aResult['status']) ? 0 : $aResult['status'];
|
||
$sMsg = empty($aResult['msg']) ? '操作异常'."\n" : $aResult['msg']."\n";
|
||
$aLogInfo['msg'] = $sMsg;
|
||
if($iStatus != 1){
|
||
$aLogInfo['status'] = 2;
|
||
$aLog[] = $aLogInfo;
|
||
$this->showMessage('文章ID:'.$value.'====='.$sMsg."\n",2);
|
||
continue;
|
||
}
|
||
$aLog[] = $aLogInfo;
|
||
}
|
||
//插入操作日志
|
||
if(!empty($aLog)){
|
||
$result = json_decode($oAiarticle->addWechatLog($aLog));
|
||
$iStatus = empty($result['status']) ? 0 : $result['status'];
|
||
$sMsg = empty($result['msg']) ? '插入日志记录失败' : $result['msg'];
|
||
if($iStatus != 1){
|
||
$this->showMessage($sMsg,2);
|
||
}
|
||
}
|
||
$this->showMessage('AI生成的文章发布草稿箱完成:'.$sDate."\n",1);
|
||
}
|
||
|
||
/**
|
||
* 查询微信公众号草稿箱的AI文章已发布的文章状态
|
||
*
|
||
* @return void
|
||
*/
|
||
public function queryWechatArticleStatus(){
|
||
|
||
$aParam = $this->request->post();
|
||
//获取前一天日期
|
||
$sDate = empty($aParam['date']) ? date('Y-m-d', strtotime('-1 day')) : $aParam['date'];
|
||
//获取AI生成的文章
|
||
$sStartDate = strtotime($sDate.' 00:00:00');
|
||
//结束时间
|
||
$sEndDate = strtotime($sDate.'23:59:59');
|
||
//查询条件
|
||
$aWhere = ['is_publish' => 1,'publish_id' => ['<>',''],'publish_status' => 1,'is_delete' => 2,'update_time' => ['between',[$sStartDate,$sEndDate]]];
|
||
|
||
//查询已发布文章信息
|
||
$aWechatArticle = Db::name('ai_wechat_article')->where($aWhere)->field('id,article_id,template_id,wechat_id,publish_id')->select();
|
||
if(empty($aWechatArticle)){
|
||
$this->showMessage('未查询到需要发布的文章:'.$sDate."\n\n",2);
|
||
exit;
|
||
}
|
||
|
||
//数据处理
|
||
$aLog = [];
|
||
$oAiarticle = new Aiarticle;
|
||
foreach ($aWechatArticle as $key => $value) {
|
||
$aLogInfo = ['article_id' => $value['article_id'],'type' => 4,'msg' =>'','status' => 1,'create_time' => time()];
|
||
if(empty($value['wechat_id']) || empty($value['publish_id'])){
|
||
$sMsg = '需要查询的文章:'.$value['article_id']."wechat_id或publish_id\n\n";
|
||
$aLogInfo['status'] = 2;
|
||
$aLogInfo['msg'] = $sMsg;
|
||
$aLog[] = $aLogInfo;
|
||
$this->showMessage($sMsg,2);
|
||
continue;
|
||
}
|
||
$aResult = json_decode($oAiarticle->queryStatus($value),true);
|
||
$iStatus = empty($aResult['status']) ? 0 : $aResult['status'];
|
||
$sMsg = empty($aResult['msg']) ? '操作异常'."\n" : $aResult['msg']."\n";
|
||
$aLogInfo['msg'] = $sMsg;
|
||
if($iStatus != 1){
|
||
$aLogInfo['msg'] = $sMsg;
|
||
$aLogInfo['status'] = 2;
|
||
$this->showMessage('文章ID:'.$value.'====='.$sMsg."\n",2);
|
||
continue;
|
||
}
|
||
$aLog[] = $aLogInfo;
|
||
}
|
||
//插入操作日志
|
||
if(!empty($aLog)){
|
||
$result = json_decode($oAiarticle->addWechatLog($aLog));
|
||
$iStatus = empty($result['status']) ? 0 : $result['status'];
|
||
$sMsg = empty($result['msg']) ? '插入日志记录失败' : $result['msg'];
|
||
if($iStatus != 1){
|
||
$this->showMessage($sMsg,2);
|
||
}
|
||
}
|
||
$this->showMessage('AI生成的文章发布状态查询完成:'.$sDate."\n",1);
|
||
}
|
||
/**
|
||
*
|
||
* 格式化信息输出
|
||
*
|
||
* @access public
|
||
* @return void
|
||
* @author huangpu
|
||
* @date 2018.09.28
|
||
* @param $[message] [<显示信息>]
|
||
* @param $[status] [<输出信息1成功,2失败>]
|
||
*/
|
||
private function showMessage($message, $status = 1) {
|
||
if ($status == 1) {
|
||
echo "[SUCCESS]";
|
||
} else {
|
||
echo "[ERROR]";
|
||
}
|
||
echo date("Y-m-d H:i:s") . " " . $message . "\n";
|
||
}
|
||
}
|