作者 刘锟

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

... ... @@ -87,8 +87,13 @@ class ReplaceHtmlLog extends Command
if($info['template_id'] == 0){
$bTemplateModel->formatQuery($condition)->update(['html' => DB::raw("REPLACE(html, '$old_html', '$html')")]);
}else{
$bTemplateModel->formatQuery($condition)->update(['main_html' => DB::raw("REPLACE(main_html, '$old_html', '$html')")]);
$bTemplateModel->where($condition)
->update([
'main_html' => DB::raw("REPLACE(main_html, '" . addslashes($old_html) . "', '" . addslashes($html) . "')"),
'updated_at' => now(),
]);
}
return true;
}
}
... ...
<?php
/**
* @remark :
* @name :UpdateHeartbeat.php
* @author :lyh
* @method :post
* @time :2024/8/28 15:13
*/
namespace App\Console\Commands\Update;
use App\Models\Log\OperationHeartbeat;
use App\Models\Project\Project;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class UpdateHeartbeat extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'operation_heartbeat';
/**
* The console command description.
*
* @var string
*/
protected $description = '心跳半小时未操作更新为未操作';
/**
* @remark :更新半小时未操作的界面
* @name :handle
* @author :lyh
* @method :post
* @time :2024/8/28 15:25
*/
public function handle(){
$date = date('Y-m-d H:i:s',time() - 30 * 60);
$operationHeartbeatModel = new OperationHeartbeat();
$operationHeartbeatModel->edit(['status'=>0],['updated_at'=>['<=',$date]]);
echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
}
}
... ...
... ... @@ -3,6 +3,7 @@
namespace App\Helper;
use App\Models\RankData\RankDataLog;
use App\Utils\HttpUtils;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
... ... @@ -75,6 +76,7 @@ class QuanqiusouApi
/**
* 获取谷歌排名数据
* @param $project_id
* @param $api_no
* @param string $lang
* @param int $day
... ... @@ -82,7 +84,7 @@ class QuanqiusouApi
* @author zbj
* @date 2023/5/11
*/
public function getGoogleRank($api_no, string $lang = '', int $day = 7, $force = true)
public function getGoogleRank($project_id, $api_no, string $lang = '', int $day = 7, $force = true)
{
$key = "quanqiusou_api_rank_{$api_no}_{$lang}_{$day}_" . date('Y-m-d');
$res = Cache::get($key);
... ... @@ -105,6 +107,7 @@ class QuanqiusouApi
if($res){
$res = Arr::s2a($res);
Cache::put($key, $res, 2 * 3600);
RankDataLog::addLog($project_id, $api_no, $lang, $endDay, $res);
}
} catch (\Exception | GuzzleException $e) {
errorLog('获取谷歌排名数据失败', [$api_no], $e);
... ...
... ... @@ -25,22 +25,25 @@ class OperationHeartbeatController extends BaseController
public function saveHeartbeat(){
$this->request->validate([
'source'=>'required',
'source_id'=>'required',
'is_list' => 'required',
'is_custom'=>'required',
'is_template'=>'required',
'operator_id'=>'required',
], [
'source.required' => '请选择页面',
'source_id.required' => '请选择数据id',
'is_list.required' => '列表页/详情页',
'is_custom.required' => '是否为扩展模版',
'is_template.required' => '详情页/可视化',
'operator_id.required' => '操作人',
]);
$condition = ['source'=>$this->param['source'],'is_list'=>$this->param['is_list'],'is_custom'=>$this->param['is_custom'],'is_template'=>$this->param['is_template']];
$condition = ['project_id'=>$this->user['project_id'],'source'=>$this->param['source'],'source_id'=>$this->param['source_id'],
'is_list'=>$this->param['is_list'],'is_custom'=>$this->param['is_custom'],'is_template'=>$this->param['is_template']];
$operationHeartbeatModel = new OperationHeartbeat();
$info = $operationHeartbeatModel->read($condition,['id','status']);
$condition['status'] = $condition['status'] ?? 0;
if($info === false){
$condition['status'] = 1;
$condition['operator_id'] = $this->user['id'];
$condition['project_id'] = $this->user['project_id'];
$operationHeartbeatModel->addReturnId($condition);
}else{
$operationHeartbeatModel->edit(['status'=>1],['id'=>$info['id']]);
... ... @@ -58,18 +61,19 @@ class OperationHeartbeatController extends BaseController
public function getInfo(){
$this->request->validate([
'source'=>'required',
'source_id'=>'required',
'is_list' => 'required',
'is_custom'=>'required',
'is_template'=>'required',
'operator_id'=>'required',
], [
'source.required' => '请选择页面',
'source_id.required' => '请选择数据id',
'is_list.required' => '列表页/详情页',
'is_custom.required' => '是否为扩展模版',
'is_template.required' => '详情页/可视化',
'operator_id.required' => '操作人',
]);
$condition = ['source'=>$this->param['source'],'is_list'=>$this->param['is_list'],'is_custom'=>$this->param['is_custom'],'is_template'=>$this->param['is_template']];
$condition = ['project_id'=>$this->user['project_id'],'source'=>$this->param['source'],'source_id'=>$this->param['source_id'],
'is_list'=>$this->param['is_list'],'is_custom'=>$this->param['is_custom'],'is_template'=>$this->param['is_template']];
$operationHeartbeatModel = new OperationHeartbeat();
$info = $operationHeartbeatModel->read($condition,['id','status']);
$this->response('success',Code::SUCCESS,$info);
... ...
... ... @@ -370,6 +370,10 @@ class ImageController extends Controller
*/
public function getProjectConfig($project_id = 0){
$str = '';
$is_watermark = ($this->cache['is_watermark'] ?? 0);
if($is_watermark != 1){
return $str;
}
$imageSettingModel = new ImageSetting();
$settingInfo = $imageSettingModel->read(['project_id'=>$project_id]);
if($settingInfo !== false){
... ...
... ... @@ -871,7 +871,7 @@ class ProjectLogic extends BaseLogic
'phone' => $data['principal_mobile'],
'planday' => $data['exclusive_hagro_day'] ?: 1,
'from_order_id' => $data['from_order_id'],
'agent_phone' => Channel::where('source_id', $data['company_id'])->value('contact_mobile') ?: '',
'agent_phone' => Channel::where('id', $data['company_id'])->value('contact_mobile') ?: '',
'nickname' => $data['nickname'],
];
$common = new Common();
... ...
... ... @@ -390,7 +390,7 @@ class RankDataLogic extends BaseLogic
$api = new QuanqiusouApi();
$model = RankData::where('project_id', $project_id)->where('lang', '')->first();
if (!$model || $model->updated_date != date('Y-m-d') || $force) {
$res = $api->getGoogleRank($api_no, '', 7, $force);
$res = $api->getGoogleRank($project_id, $api_no, '', 7, $force);
if (!$res) {
throw new \Exception("接口数据获取失败,api_no:{$api_no}");
}
... ... @@ -416,7 +416,7 @@ class RankDataLogic extends BaseLogic
}
$model = RankData::where('project_id', $project_id)->where('lang', $lang)->first();
if (!$model || $model->updated_date != date('Y-m-d') || $force) {
$res = $api->getGoogleRank($api_no, $lang, 7, $force);
$res = $api->getGoogleRank($project_id, $api_no, $lang, 7, $force);
if (!$res) {
throw new \Exception("接口数据获取失败,api_no:{$api_no},lang");
}
... ...
<?php
namespace App\Models\RankData;
use App\Helper\Arr;
use App\Models\Base;
/**
* Class GoogleRank
* @package App\Models
* @author zbj
* @date 2023/5/6
*/
class RankDataLog extends Base
{
//设置关联表名
protected $table = 'gl_rank_data_log';
public function setDataAttribute($value)
{
$this->attributes['data'] = Arr::a2s($value);
}
public function getDataAttribute($value)
{
return Arr::s2a($value);
}
public static function addLog($project_id, $api_no, $lang, $date, $res){
$data= [];
foreach ($res as $key=>$item){
$data[$key] = $item[$date];
}
$model = self::where('project_id', $project_id)->where('date', $date)->where('lang', $lang)->first();
if(!$model){
$model = new self();
}
$model->project_id = $project_id;
$model->api_no = $api_no;
$model->lang = $lang;
$model->date = $date;
$model->data = $data;
$model->save();
return true;
}
}
... ...
... ... @@ -601,8 +601,11 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/del', [\App\Http\Controllers\Bside\Inquiry\InquiryFieldController::class, 'del'])->name('inquiry_field_del');
});
//获取心跳
Route::prefix('operation_heartbeat')->group(function () {
Route::any('/saveHeartbeat', [\App\Http\Controllers\Bside\BCom\OperationHeartbeatController::class, 'saveHeartbeat'])->name('operation_heartbeat_saveHeartbeat');
Route::any('/getInfo', [\App\Http\Controllers\Bside\BCom\OperationHeartbeatController::class, 'getInfo'])->name('operation_heartbeat_getInfo');
});
});
//无需登录验证的路由组
... ...