作者 Your Name
<?php
namespace App\Console\Commands\Domain;
use App\Models\Devops\ServersIp;
use App\Services\AlibabaCloudService;
use Illuminate\Console\Command;
class EmergencyRecords extends Command
{
protected $signature = 'emergency_records {server_id} {type}';
protected $description = '紧急修改域名解析';
public function handle()
{
//服务器id
$server_id = $this->argument('server_id');
//类型,1受灾,2恢复
$type = $this->argument('type');
try {
//获取服务器的所有可用ip
$server_ip_model = new ServersIp();
$server_ip_list = $server_ip_model->where('servers_id', $server_id)->where('status', 0)->get();
if ($server_ip_list->count() > 0) {
foreach ($server_ip_list as $value) {
if (empty($value->ip) || empty($value->domain)) {
$this->output('ID ' . $value->id . ' 数据错误');
continue;
}
//获取解析记录
$domain_array = explode('.', $value->domain);
$domain_rr = $domain_array[0];
$record = AlibabaCloudService::describeDomainRecords('globalso.com', $domain_rr);
$record_status_code = $record['statusCode'] ?? 0;
if ($record_status_code != 200) {
$this->output('获取主机记录 ' . $domain_rr . ' 解析数据失败');
continue;
}
$record_detail = $record['body']['DomainRecords']['Record'][0] ?? [];
if (!$record_detail) {
$this->output('主机记录 ' . $domain_rr . ' 解析数据不存在');
continue;
}
//目标ip跟解析记录当前ip一样的数据,不用修改
$target_ip = $type == 1 ? '43.153.1.240' : $value->ip;
if ($target_ip == $record_detail['Value']) {
$this->output('主机记录 ' . $domain_rr . ' 的值已为 ' . $target_ip);
continue;
}
//修改解析记录
$record_id = $record_detail['RecordId'];
$record_rr = $record_detail['RR'];
$record_type = $record_detail['Type'];
$record_edit = AlibabaCloudService::updateDomainRecord($record_id, $record_rr, $record_type, $target_ip);
$record_edit_status_code = $record_edit['statusCode'] ?? 0;
if ($record_edit_status_code == 200) {
$this->output('修改主机记录 ' . $record_rr . ' 的值为 ' . $target_ip . ' 成功');
} else {
$this->output('修改主机记录 ' . $record_rr . ' 的值为 ' . $target_ip . ' 失败');
}
}
}
} catch (\Exception $e) {
$this->output($e->getMessage());
}
}
/**
* 输出处理日志
* @param $message
*/
public function output($message)
{
echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
}
}
... ...
... ... @@ -275,8 +275,12 @@ class VideoTask extends Command
}
}else{
$product_all_id = Product::where('thumb','!=',null)->where("status",Product::STATUS_ON)->inRandomOrder()->take(20)->pluck('id')->toArray();
if(empty($product_all_id)){
$products = [];
}else{
$products = Product::whereIn("id", $product_all_id)->orderByRaw(DB::raw("FIELD(id, " . implode(',', $product_all_id) . ")"))->get();
}
}
$data = [];
if (!empty($products)){
foreach ($products as $item){
... ...
... ... @@ -72,7 +72,7 @@ class RankData extends BaseCommands
}
}
return !$error;
} catch (\Exception $e) {
} catch (\Exception|\Throwable $e) {
Log::channel('rank_data')->error('排名数据任务失败 ' . $e->getMessage());
throw new \Exception($e->getMessage());
}
... ...
... ... @@ -12,6 +12,8 @@ namespace App\Http\Controllers\Bside\BCom;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Models\Log\OperationHeartbeat;
use App\Models\Manage\Manage;
use App\Models\User\User;
class OperationHeartbeatController extends BaseController
{
... ... @@ -36,6 +38,7 @@ class OperationHeartbeatController extends BaseController
'is_custom.required' => '是否为扩展模版',
'is_template.required' => '详情页/可视化',
]);
$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();
... ... @@ -44,9 +47,11 @@ class OperationHeartbeatController extends BaseController
if($info === false){
$condition['operator_id'] = $this->user['id'];
$condition['project_id'] = $this->user['project_id'];
$condition['ip'] = $this->request->ip();
$condition['manager_id'] = $this->user['manager_id'] ?? 0;
$operationHeartbeatModel->addReturnId($condition);
}else{
$operationHeartbeatModel->edit(['status'=>$condition['status'] ?? 0],['id'=>$info['id']]);
$operationHeartbeatModel->edit(['status'=>$condition['status'] ?? 0,'ip'=>$this->request->ip(),'manager_id'=> $this->user['manager_id'] ?? 0],['id'=>$info['id']]);
}
$this->response('success');
}
... ... @@ -81,10 +86,28 @@ class OperationHeartbeatController extends BaseController
}else{
$date_time = strtotime($info['updated_at']) + 7200;
if($date_time < time()){
$operationHeartbeatModel->edit(['status'=>0],$condition);
$operationHeartbeatModel->edit(['status'=>0,'ip'=>'127.0.0.1'],$condition);
$info['status'] = 0;
}
}
if($info['status'] == 1){
//当前登录为切入登录
if(isset($this->user['manager_id']) && !empty($this->user['manager_id'])){
//上一次验证也是切入登录
if($info['manager_id'] != 0){
$managerModel = new Manage();
$managerInfo = $managerModel->read(['id'=>$info['manager_id']],['name']);
$info['message'] = '此页面数据已有人在编辑,请勿重复操作!操作人ip:'.$info['ip'].'操作的管理员为:'.$managerInfo['name'];
}else{
//账号密码登录
$userModel = new User();
$userInfo = $userModel->read(['id'=>$info['operator_id']],['name']);
$info['message'] = '此页面数据已有人在编辑,请勿重复操作!'.$userInfo['name'].'用户登录在操作。';
}
}else{
$info['message'] = '此页面数据已有人在编辑,请勿重复操作!';
}
}
$this->response('success',Code::SUCCESS,$info);
}
}
... ...
... ... @@ -186,8 +186,8 @@ class InquiryLogic extends BaseLogic
public function sendMobileVerifyData($phone){
$phoneDataModel = new PhoneData();
$num_phone = preg_replace('/\D/', '',$phone) ?? ''; // \D 匹配所有非数字字符
$info = $phoneDataModel->read(['phone'=>$num_phone]);
if($info === false){
$data = $phoneDataModel->read(['phone'=>$num_phone]);
if($data === false){
$url = 'https://fob.ai.cc/api/mobile_verify_data/'.$phone;
$data = http_get($url);
if(!empty($data)){
... ...
<?php
namespace App\Services;
use AlibabaCloud\SDK\Alidns\V20150109\Alidns;
use AlibabaCloud\SDK\Alidns\V20150109\Models\AddDomainRecordRequest;
use AlibabaCloud\SDK\Alidns\V20150109\Models\DescribeDomainRecordsRequest;
use AlibabaCloud\SDK\Alidns\V20150109\Models\UpdateDomainRecordRemarkRequest;
use AlibabaCloud\SDK\Alidns\V20150109\Models\UpdateDomainRecordRequest;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
class AlibabaCloudService
{
/**
* 创建客户端
* @return Alidns
* @author Akun
* @date 2024/09/21 16:16
*/
public static function createClient()
{
$config = new Config([
'accessKeyId' => env('ALIBABA_CLOUD_KEY'),
'accessKeySecret' => env('ALIBABA_CLOUD_SECRET'),
]);
return new Alidns($config);
}
/**
* 获取域名解析记录列表
* @param $domain
* @param $keyword
* @param $status
* @return array
* @author Akun
* @date 2024/09/21 17:19
*/
public static function describeDomainRecords($domain, $keyword, $status = 'Enable')
{
$client = self::createClient();
$request = new DescribeDomainRecordsRequest([
'domainName' => $domain,
'RRKeyWord' => $keyword,
'status' => $status,
]);
$response = $client->DescribeDomainRecords($request);
return Utils::toArray($response);
}
/**
* 添加解析记录
* @param $domain
* @param $rr
* @param $type
* @param $value
* @return array
* @author Akun
* @date 2024/09/21 17:33
*/
public static function addDomainRecord($domain, $rr, $type, $value)
{
$client = self::createClient();
$request = new AddDomainRecordRequest([
'domainName' => $domain,
'RR' => $rr,
'type' => $type,
'value' => $value
]);
$response = $client->AddDomainRecord($request);
return Utils::toArray($response);
}
/**
* 修改解析记录备注
* @param $record_id
* @param $remark
* @return array
* @author Akun
* @date 2024/09/21 17:38
*/
public static function updateDomainRecordRemark($record_id, $remark)
{
$client = self::createClient();
$request = new UpdateDomainRecordRemarkRequest([
'recordId' => $record_id,
'remark' => $remark,
]);
$response = $client->UpdateDomainRecordRemark($request);
return Utils::toArray($response);
}
/**
* 修改解析记录详情
* @param $record_id
* @param $rr
* @param $type
* @param $value
* @return array
* @author Akun
* @date 2024/09/23 10:55
*/
public static function updateDomainRecord($record_id, $rr, $type, $value)
{
$client = self::createClient();
$request = new UpdateDomainRecordRequest([
'recordId' => $record_id,
'RR' => $rr,
'type' => $type,
'value' => $value,
]);
$response = $client->UpdateDomainRecord($request);
return Utils::toArray($response);
}
}
... ...
... ... @@ -111,7 +111,7 @@ class SyncSubmitTaskService
* @date 2024/8/27
*/
public function subscribe($data, $date){
$email = $data['data']['data']['email'];
$email = $data['data']['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$model = new Email();
$model->email = $email;
... ...
... ... @@ -5,6 +5,8 @@
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"alibabacloud/alidns-20150109": "*",
"alibabacloud/darabonba-openapi": "^0.2.12",
"barryvdh/laravel-dompdf": "^2.0",
"bensampo/laravel-enum": "^4.2",
"beyondcode/laravel-websockets": "^1.14",
... ...