作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -28,7 +28,7 @@ class RemainDay extends Command
* @var 按上线时间统计
*/
protected $projectId = [
1434,1812,276,596
1434,1812,276
];//需要单独处理的项目
/**
... ...
... ... @@ -61,9 +61,7 @@ class SyncInquiry extends Command
foreach ($result as $key=>$val) {
ReInquiryForm::createInquiry($val['id'], $val['origin_id'], $val['adset_id'], $val['adset_name'], $val['ad_id'], $val['ad_name'], $val['full_name'], $val['email'], $val['phone_number'], $val['whatapp'], $val['ai_inquery'], $val['country'], $val['inquiry_time']);
}
exit;
}
return true;
}
/**
... ...
<?php
namespace App\Console\Commands\Inquiry;
use App\Models\Inquiry\ReInquiryDetail;
use App\Models\Inquiry\ReInquiryDetailLog;
use App\Models\Inquiry\ReInquiryForm;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
/**
* Class postInquiry
* @package App\Console\Commands\Inquiry
*/
class postInquiry extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'post_inquiry';
/**
* The console command description.
*
* @var string
*/
protected $description = '执行询盘请求';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
public function handle()
{
while (true) {
$list = ReInquiryDetailLog::where('status', ReInquiryDetailLog::STATUS_INIT)->where('start_at', '<=', date('Y-m-d H:i:s'))->limit(100)->get();
if (!$list->count()){
//5分钟同步一次
sleep(1);
}
// 询盘数据入库
foreach ($list as $key => $val) {
try {
$detail = ReInquiryDetail::find($val['detail_id']);
if($val['type'] == 1){
$this->visit($detail, $val);
}else{
$res = $this->inquiry($detail, $val);
//转发详情
$detail->status = $res ? ReInquiryDetail::STATUS_SUCCESS : ReInquiryDetail::STATUS_FAIL;
$detail->result = $val['url'];
$detail->save();
//转发表单
if($res){
$form = ReInquiryForm::find($detail['form_id']);
$form->success_num = $form->success_num + 1;
$form->save();
}
}
}catch (\Exception $e){
}
}
}
}
public function visit(ReInquiryDetail $detail, ReInquiryDetailLog $log){
if($detail['is_v6']) {
$data = [
'ip' => $detail['ip'],
'url' => $log['url'],
'device_port' => $detail['device_port'],
'referrer_url' => $detail['referrer'],
'user_agent' => $detail['user_agent'],
];
$res = Http::withoutVerifying()->post($detail['re_website'] . 'api/traffic_visit/', $data)->json();
if (empty($res['status']) || $res['status'] != 200) {
$log->status = ReInquiryDetailLog::STATUS_FAIL;
$log->remark = $res['message'] ?? '';
$log->save();
Log::channel('inquiry_relay')->error('inquiry_relay visit error', [$res, $detail['re_website'] . 'api/traffic_visit/',$data]);
}
}else{
//v4 v5分离项目 往测试链接推
$website = $detail['re_website'];
$site_array = file_get_contents('https://www.quanqiusou.cn/extend_api/saas/split.php');
$site_array = json_decode($site_array, true);
$mail_urls = array_column($site_array, 'main_url');
$key = array_search($detail['re_website'], $mail_urls);
if ($key !== false) {
// 分离项目 推送到测试链接
$website = $site_array[$key]['test_url'];
}
$data = [
'action' => 'stats_init',
'assort' => 0,
'referrer' => $detail['referrer'],
'currweb' => $log['url'],
'user_agent' => $detail['user_agent'],
"ip" => $detail['ip'],
];
$res = Http::get($website . 'wp-admin/admin-ajax.php', $data)->json();
if($res != 200){
$log->status = ReInquiryDetailLog::STATUS_FAIL;
$log->remark = $res['message'] ?? '';
$log->save();
Log::channel('inquiry_relay')->error('inquiry_relay v4|v5 visit error', [$res, $website . 'wp-admin/admin-ajax.php', $data]);
}
}
}
public function inquiry(ReInquiryDetail $detail, ReInquiryDetailLog $log){
// v6
if($detail['is_v6']) {
$data = [
'name' => $detail['name'],
'phone' => $detail['phone'],
'message' => $detail['message'],
'submit_ip' => $detail['ip'],
'refer' => $log->url,
];
if($detail->email){
$data['email'] = $detail->email;
}else{
$data['__amp_source_origin'] = trim($detail['re_website'], '/');
}
$res = Http::withoutVerifying()->withHeaders(['User-Agent' => $detail['user_agent']])->post($detail['re_website'] . 'api/inquiryQd/', $data)->json();
if(empty($res['code']) || $res['code'] != 200){
$log->status = ReInquiryDetailLog::STATUS_FAIL;
$log->remark = $res['message'] ?? '';
$log->save();
Log::channel('inquiry_relay')->error('inquiry_relay v6 inquiry error', [$res, $detail['website'] . 'api/inquiryQd/', $data]);
return false;
}
}else{
$data = [
'name' => $detail['name'],
'phone' => $detail['phone'],
'message' => $detail['message'],
'email' => $detail['email'],
'ip' => $detail['ip'],
'token' => md5($log->url . $detail['name'] . $detail['ip'] . date("Y-m-d")),
'refer' => $log->url,
'submit_time' => date('Y-m-d H:i:s'),
'source' => 5,
];
$res = Http::withoutVerifying()->post('https://form.globalso.com/api/external-interface/add/fa043f9cbec6b38f', $data)->json();
if(empty($res['code']) || $res['code'] != 200){
$log->status = ReInquiryDetailLog::STATUS_FAIL;
$log->remark = $res['message'] ?? '';
$log->save();
Log::channel('inquiry_relay')->error('inquiry_relay v4|v5 inquiry error', [$res, 'https://form.globalso.com/api/external-interface/add/fa043f9cbec6b38f', $data]);
return false;
}
}
return true;
}
public function output($message)
{
echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
}
}
... ...
... ... @@ -14,11 +14,8 @@ use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;
/**
*
* Class WorkchatMessageSend
* @package App\Console\Commands
* @author zbj
* @date 2023/11/28
* @package App\Console\Commands\Task
*/
class WorkchatMessageSend extends Command
{
... ...
... ... @@ -56,20 +56,38 @@ class UpdateRoute extends Command
*/
public function handle(){
$projectModel = new Project();
$list = $projectModel->list(['id'=>['in',[1646]]]);
$list = $projectModel->list(['id'=>['in',[1799]]]);
$data = [];
foreach ($list as $v){
echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
ProjectServer::useProject($v['id']);
$this->getProduct();
// $this->getProduct();
// $this->setProductKeyword();
// $this->getBlog();
// $this->setCustomRoute($v['id']);
$this->editProductAlt();
DB::disconnect('custom_mysql');
}
echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
}
public function editProductAlt(){
$productModel = new Product();
$lists = $productModel->list(['status'=>1],'id',['id','route','thumb','gallery']);
foreach ($lists as $k => $v){
$v['thumb']['alt'] = $v['route'];
if(!empty($v['gallery'])){
foreach ($v['gallery'] as $keys => $values){
$values = (array)$values;
$values['alt'] = $v['route'];
$v['gallery'][$keys] = $values;
}
}
$productModel->edit(['thumb'=>json_encode($v['thumb'],true),'gallery'=>json_encode($v['gallery'],true)],['id'=>$v['id']]);
}
return true;
}
public function setCustomRoute($project_id){
$customModel = new CustomModuleContent();
$list = $customModel->list();
... ...
... ... @@ -13,6 +13,7 @@ use App\Http\Controllers\Aside\BaseController;
use App\Models\Channel\Channel;
use App\Models\Domain\DomainInfo;
use App\Models\Inquiry\ReInquiryDetail;
use App\Models\Inquiry\ReInquiryDetailLog;
use App\Models\Inquiry\ReInquiryForm;
use App\Models\Inquiry\ReInquiryTask;
use App\Models\Project\Project;
... ... @@ -46,6 +47,14 @@ class AdsController extends BaseController
})
->orderBy('id', 'desc')
->paginate();
$relay_site_total = 0;
foreach ($result as $item){
$relay_site_total += count($item->target);
}
$result = $result->toArray();
$result['relay_site_total'] = $relay_site_total;
return $this->response('success', Code::SUCCESS, $result);
}
... ... @@ -115,7 +124,7 @@ class AdsController extends BaseController
$channel = Project::where('id', $domain_info['project_id'])->value('channel');
$data = [
'is_v6' => 1,
'agent' => Channel::getChannelText($channel['channel']['user_id']??0)
'agent' => Channel::getChannelText($channel['user_id']??0)
];
return $this->response('success', Code::SUCCESS, $data);
}
... ...
... ... @@ -252,7 +252,7 @@ class CustomTemplateLogic extends BaseLogic
$this->setTemplateLog($bSettingInfo['template_id'] ?? 0,$html,$this->param['id']);
//通知
$this->addUpdateNotify(RouteMap::SOURCE_PAGE,$info['url']);
$this->curlDelRoute(['route'=>$info['url'],'new_route'=>$info['url']]);
$this->curlDelRoute(['old_route'=>$info['url'],'new_route'=>$info['url']]);
return $this->success();
}
... ... @@ -391,7 +391,7 @@ class CustomTemplateLogic extends BaseLogic
}
}
$this->addUpdateNotify(RouteMap::SOURCE_PAGE,$route);
$this->curlDelRoute(['route'=>$info['url'],'new_route'=>$route]);
$this->curlDelRoute(['old_route'=>$info['url'],'new_route'=>$route]);
return true;
}
... ... @@ -436,7 +436,7 @@ class CustomTemplateLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_PAGE, $id, $this->user['project_id']);
//生成一条删除路由记录
$info = $this->model->read(['id' => $id], ['id', 'url']);
$this->curlDelRoute(['route'=>$info['url']]);
$this->curlDelRoute(['old_route'=>$info['url']]);
return $this->success();
}
... ...
... ... @@ -186,7 +186,7 @@ class InitHtmlLogic extends BaseLogic
}
$this->saveTemplateCom($this->param['html'],$template_id,$this->param['type'],$is_list,$is_custom);
$route = RouteMap::getRoute('all',0,$this->user['project_id']);
$this->curlDelRoute(['route'=>$route,'new_route'=>$route]);
$this->curlDelRoute(['old_route'=>$route,'new_route'=>$route]);
return $this->success();
}
... ...
... ... @@ -204,7 +204,7 @@ class BlogCategoryLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_BLOG_CATE, $id, $this->user['project_id']);
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','alias']);
$this->curlDelRoute(['route'=>$info['alias']]);
$this->curlDelRoute(['old_route'=>$info['alias']]);
return $this->success();
}
... ...
... ... @@ -159,7 +159,7 @@ class BlogLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_BLOG, $id, $this->user['project_id']);
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','url']);
$this->curlDelRoute(['route'=>$info['url']]);
$this->curlDelRoute(['old_route'=>$info['url']]);
return $this->success();
}
... ...
... ... @@ -180,7 +180,7 @@ class CustomModuleCategoryLogic extends BaseLogic
$info = $this->model->read(['id' => $id], ['id', 'route']);
if ($info['route'] != $route) {
$this->addUpdateNotify(RouteMap::SOURCE_MODULE_CATE,$route);
$this->curlDelRoute(['route'=>$info['route'],'new_route'=>$route]);
$this->curlDelRoute(['old_route'=>$info['route'],'new_route'=>$route]);
}
return true;
}
... ... @@ -223,7 +223,7 @@ class CustomModuleCategoryLogic extends BaseLogic
}
RouteMap::delRoute(RouteMap::SOURCE_MODULE_CATE, $id, $this->user['project_id']);
//通知
$this->curlDelRoute(['route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route']]);
return $this->success();
}
... ...
... ... @@ -247,7 +247,7 @@ class CustomModuleContentLogic extends BaseLogic
//生成一条删除路由记录
$info = $this->model->read(['id' => $id], ['id', 'route']);
$this->addUpdateNotify(RouteMap::SOURCE_MODULE,$route);
$this->curlDelRoute(['route'=>$info['route'],'new_route'=>$route]);
$this->curlDelRoute(['old_route'=>$info['route'],'new_route'=>$route]);
return true;
}
... ... @@ -354,7 +354,7 @@ class CustomModuleContentLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_MODULE, $id, $this->user['project_id']);
//通知
$info = $this->model->read(['id' => $id], ['id', 'route']);
$this->curlDelRoute(['route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route']]);
return $this->success();
}
... ...
... ... @@ -218,7 +218,7 @@ class NewsCategoryLogic extends BaseLogic
//删除路由映射
RouteMap::delRoute(RouteMap::SOURCE_NEWS_CATE, $id, $this->user['project_id']);
$info = $this->model->read(['id'=>$id],['id','alias']);
$this->curlDelRoute(['route'=>$info['alias']]);
$this->curlDelRoute(['old_route'=>$info['alias']]);
return $this->success();
}
... ...
... ... @@ -290,7 +290,7 @@ class NewsLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);
//生成一条删除路由记录
$info = $this->model->read(['id' => $id], ['id', 'url']);
$this->curlDelRoute(['route'=>$info['url']]);
$this->curlDelRoute(['old_route'=>$info['url']]);
return $this->success();
}
... ...
... ... @@ -194,7 +194,7 @@ class CategoryLogic extends BaseLogic
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','route']);
if($info !== false){
$this->curlDelRoute(['route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route']]);
}
return $this->success();
}
... ...
... ... @@ -205,7 +205,7 @@ class KeywordLogic extends BaseLogic
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','route']);
if($info !== false){
$this->curlDelRoute(['route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route']]);
}
return $this->success();
}
... ...
... ... @@ -387,7 +387,7 @@ class ProductLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_PRODUCT, $id, $this->user['project_id']);
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','route']);
$this->curlDelRoute(['route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route']]);
return $this->success();
}
... ...
... ... @@ -56,19 +56,12 @@ class ReInquiryTask extends Base
return $self;
}
public function setTarget($id, $target){
$self = self::where(['id' => $id])->first();
if (empty($self)) {
}
}
/**
* @param $value
* @return mixed
*/
public function getTargetAttribute($value)
{
return json_decode($value, true);
return $value ? json_decode($value, true) : [];
}
}
... ...
... ... @@ -33,7 +33,15 @@ class MessagePush extends Base
protected $table = 'gl_workchat_message_push';
public static function addInquiryMessage($id, $project_id, $country, $submit_at){
/**
* @param $id
* @param $project_id
* @param $country
* @param $name
* @param $submit_at
* @return bool
*/
public static function addInquiryMessage($id, $project_id, $country, $name, $submit_at){
if(!ProjectServer::useProject($project_id)){
return false;
}
... ... @@ -56,7 +64,7 @@ class MessagePush extends Base
$model->friend_id = $friend_id;
$model->type = self::TYPE_INQUIRY;
$model->ref_ids = $id;
$model->content = '[' . date('H:i', strtotime($submit_at)) . '] 您的全球搜网站收到来自【' . $country . '】的询盘信息,请登录后台或APP进行查看!';
$model->content = '[' . date('H:i', strtotime($submit_at)) . '] 您的全球搜网站收到来自【' . $country . $name . '】的询盘信息,请登录后台或APP进行查看!';
}else{
//定时发送时间
$send_time = $hour >= 9 ? date('Y-m-d 09:00:00', strtotime('+1 day')) : date('Y-m-d 09:00:00');
... ... @@ -69,7 +77,7 @@ class MessagePush extends Base
$model->type = self::TYPE_INQUIRY;
$model->ref_ids = $id;
$model->send_time = $send_time;
$model->content = '[09:00] 您的全球搜网站收到来自【' . $country . '】的询盘信息,请登录后台或APP进行查看!';
$model->content = '[09:00] 您的全球搜网站收到来自【' . $country . $name . '】的询盘信息,请登录后台或APP进行查看!';
}else{
$ref_ids = explode(',', $model->ref_ids);
$ref_ids[] = $id;
... ...
... ... @@ -160,7 +160,8 @@ class SyncSubmitTaskService
//推送企微消息
try {
MessagePush::addInquiryMessage($id, $data['project_id'], $data['country'], $data['submit_at']);
$name = empty($data['data']['name']) ? '' : ' ' . $data['data']['name'];
MessagePush::addInquiryMessage($id, $data['project_id'], $data['country'], $name, $data['submit_at']);
}catch (\Exception $e){
LogUtils::error('询盘消息'.$id.'写入企微消息队列失败' . $e->getMessage());
}
... ...