Files
tougao/application/api/controller/Cronwechat.php
2025-05-29 13:47:33 +08:00

233 lines
9.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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";
}
}