作者 赵彬吉
... ... @@ -11,7 +11,6 @@ use App\Models\Product\Keyword;
use App\Models\Product\KeywordRelated;
use App\Models\Product\Product;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Models\WebSetting\WebLanguage;
use App\Services\BatchExportService;
use App\Services\ProjectServer;
... ... @@ -35,7 +34,7 @@ class Temp extends Command
public function handle()
{
$this->check_server_minor_site();
}
/**
... ...
... ... @@ -63,7 +63,7 @@ class UpdateRoute extends Command
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->setProductKeyword();
DB::disconnect('custom_mysql');
}
echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
... ... @@ -183,9 +183,9 @@ class UpdateRoute extends Command
if(!empty($lists)){
foreach ($lists as $v){
if(!empty($v['route'])){
echo date('Y-m-d H:i:s') . 'route :'.$v['id'] . PHP_EOL;
$route = $this->setRoute($v['route'], RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
$keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
// echo date('Y-m-d H:i:s') . 'route :'.$v['id'] . PHP_EOL;
// $route = $this->setRoute($v['route'], RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
// $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
continue;
}else{
echo date('Y-m-d H:i:s') . 'route :'.$v['id'] . PHP_EOL;
... ... @@ -275,16 +275,16 @@ class UpdateRoute extends Command
$lists = $keywordModel->list(['status'=>1,'route'=>'']);
if(!empty($lists)){
foreach ($lists as $v){
$tag = "-tag";
if (!(substr($v['route'], -strlen($tag)) === $tag)) {
echo date('Y-m-d H:i:s') . '拼接'.$tag . PHP_EOL;
$route = $v['route'].$tag;
// $tag = "-tag";
// if (!(substr($v['route'], -strlen($tag)) === $tag)) {
// echo date('Y-m-d H:i:s') . '拼接'.$tag . PHP_EOL;
$route = $v['title'];
// 如果不是以 '-tag' 结尾,则拼接上 '-tag'
$routeModel = new RouteMap();
$routeModel->edit(['route'=>$route],['source'=>RouteMap::SOURCE_PRODUCT_KEYWORD,'source_id'=>$v['id']]);
$keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
echo date('Y-m-d H:i:s') . 'end'.$v['id'] . PHP_EOL;
}
// }
}
}
}
... ...
<?php
/**
* @remark :
* @name :PayStripeApi.php
* @author :lyh
* @method :post
* @time :2024/12/24 10:35
*/
namespace App\Helper;
use App\Models\ExtentModule\ExtensionModuleValue;
class PayStripeApi
{
private $secretKey;
//币种对应支付方式
public $currency_types = [
'usd' => ['card', 'alipay', 'wechat_pay', 'cashapp', 'link', 'afterpay_clearpay'],
'eur' => ['card', 'ideal', 'giropay', 'sofort', 'bancontact', 'klarna', 'link'],
'gbp' => ['card', 'apple_pay', 'google_pay', 'klarna', 'link', 'afterpay_clearpay'],
'aud' => ['card', 'afterpay_clearpay', 'apple_pay', 'google_pay'],
'cad' => ['card', 'apple_pay', 'google_pay', 'link'],
'sgd' => ['card', 'grabpay', 'fpx', 'wechat_pay', 'apple_pay', 'google_pay'],
'jpy' => ['card', 'apple_pay', 'google_pay'],
'cny' => ['alipay', 'wechat_pay'],
'brl' => ['card', 'boleto', 'pix'],
'mxn' => ['card', 'oxxo'],
'inr' => ['card', 'upi', 'netbanking'],
'php' => ['card', 'paymaya', 'gcash'],
'myr' => ['card', 'fpx'],
'thb' => ['card', 'promptpay'],
'idr' => ['card', 'bank_transfer'],
'zar' => ['card'],
'ngn' => ['card'],
'aed' => ['card', 'apple_pay', 'google_pay']
];
// 构造函数设置密钥
public function __construct()
{
$this->secretKey = 'sk_test_51MyseXIWCYVeLww1tbPZzRe1Qk4lS5d2VLiDjpju7G0ToiX1RJcFinQXNlftq9eCjZE0n2gjaz1mfy1g0mxTusdf00m636Gv62';
}
/**
* @remark :通用的 cURL 请求方法
* @name :sendRequest
* @author :lyh
* @method :post
* @time :2024/12/24 10:38
*/
private function sendRequest($url, $method = 'POST', $data = [])
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$this->secretKey}",
"Content-Type: application/x-www-form-urlencoded"
]);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
} elseif ($method === 'GET') {
curl_setopt($ch, CURLOPT_HTTPGET, true);
} elseif ($method === 'DELETE') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
$response = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception('cURL Error: ' . curl_error($ch));
}
curl_close($ch);
return json_decode($response, true);
}
/**
* @remark :创建支付意图
* @name :createPaymentIntent
* @author :lyh
* @method :post
* @time :2024/12/24 10:38
*/
public function createPaymentIntent($amount, $currency = 'usd', $paymentMethodTypes = 'card')
{
$url = "https://api.stripe.com/v1/payment_intents";
$data = [
'amount' => $amount,
'currency' => $currency,
'payment_method_types[]' => $paymentMethodTypes,
];
return $this->sendRequest($url, 'POST', $data);
}
/**
* @remark :查询支付意图
* @name :retrievePaymentIntent
* @author :lyh
* @method :post
* @time :2024/12/24 10:38
*/
public function retrievePaymentIntent($paymentIntentId)
{
$url = "https://api.stripe.com/v1/payment_intents/{$paymentIntentId}";
return $this->sendRequest($url, 'GET');
}
/**
* @remark :创建退款
* @name :createRefund
* @author :lyh
* @method :post
* @time :2024/12/24 10:42
*/
public function createRefund($chargeId, $amount = null)
{
$url = "https://api.stripe.com/v1/refunds";
$data = ['charge' => $chargeId];
if ($amount) {
$data['amount'] = $amount;
}
return $this->sendRequest($url, 'POST', $data);
}
/**
* @remark :查询退款
* @name :retrieveRefund
* @author :lyh
* @method :post
* @time :2024/12/24 10:42
*/
public function retrieveRefund($refundId)
{
$url = "https://api.stripe.com/v1/refunds/{$refundId}";
return $this->sendRequest($url, 'GET');
}
/**
* @remark :处理 Webhook
* @name :handleWebhook
* @author :lyh
* @method :post
* @time :2024/12/24 10:43
*/
public static function handleWebhook()
{
try {
// Webhook 签名密钥(从 Stripe 仪表盘获取)
$endpointSecret = 'whsec_garhW2TrCIrduyM3rve9mFS2sn69B9Yt';
// 获取原始请求内容
$payload = request()->getContent();
// 获取 Stripe 签名头
$sigHeader = request()->header('Stripe-Signature');
// 验证签名
if (!self::verifySignature($payload, $sigHeader, $endpointSecret)) {
return [
'code' => '201',
'message' => 'Invalid signature',
'details' => [
'payload' => $payload,
'sigHeader' => $sigHeader,
'endpointSecret' => $endpointSecret,
],
]; // 返回 400 Bad Request 状态码;
}
$event = json_decode($payload, true);
// 获取事件类型
$eventType = $event['type'];
$eventData = $event['data']['object'];
// 根据事件类型处理
switch ($eventType) {
case 'payment_intent.succeeded':
// 处理支付成功逻辑
$paymentIntentId = $eventData['id'];
self::getExtensionInfo($paymentIntentId,$eventData);
break;
case 'payment_intent.payment_failed':
// 处理支付失败逻辑
@file_put_contents(storage_path('logs/lyh_error.log'), var_export($eventData, true) . PHP_EOL, FILE_APPEND);
$error = $eventData['last_payment_error'];
break;
case 'charge.refunded':
// 处理退款逻辑
$chargeId = $eventData['id'];
break;
default:
throw new \Exception('Unhandled event type: ' . $eventType);
}
return $event;
} catch (Exception $e) {
throw new \Exception('Webhook Error: ' . $e->getMessage());
}
}
/**
* @remark :根据id获取当前数据详情
* @name :getExtensionInfo
* @author :lyh
* @method :post
* @time :2024/12/25 14:43
*/
public static function getExtensionInfo($id,$eventData){
$extensionModel = new ExtensionModuleValue();
$info = $extensionModel->read(['value'=>$id]);
if($info === false){
@file_put_contents(storage_path('logs/lyh_3059_error.log'), var_export($id.':当前数据错误', true) . PHP_EOL, FILE_APPEND);
}
//组装数据保存
$data = [
['uuid'=>$info['uuid'],'module_id'=>$info['module_id'],'field_id'=>6,'value'=>'success'],
['uuid'=>$info['uuid'],'module_id'=>$info['module_id'],'field_id'=>7,'value'=>json_encode($eventData)],
];
$moduleValueModel = new ExtensionModuleValue();
$moduleValueModel->insertAll($data);
}
/**
* @remark :验证签名
* @name :verifySignature
* @author :lyh
* @method :post
* @time :2024/12/24 15:55
*/
public static function verifySignature($payload, $sigHeader, $endpointSecret)
{
// 解析 Signature Header,获取 timestamp 和签名
if (!preg_match('/t=(\d+),v1=([a-f0-9]+)/', $sigHeader, $matches)) {
return false; // 签名格式错误
}
$timestamp = $matches[1]; // 提取时间戳
$receivedSignature = $matches[2]; // 提取签名
// 防止重放攻击:检查时间戳是否在 5 分钟以内
$currentTimestamp = time();
if (abs($currentTimestamp - $timestamp) > 300) {
return false; // 签名过期
}
// 计算预期签名
$signedPayload = "{$timestamp}.{$payload}";
$expectedSignature = hash_hmac('sha256', $signedPayload, $endpointSecret);
// 比较签名是否匹配
return hash_equals($expectedSignature, $receivedSignature);
}
}
... ...
<?php
/**
* @remark :
* @name :PayStripeController.php
* @author :lyh
* @method :post
* @time :2024/12/24 16:42
*/
namespace App\Http\Controllers\Api;
use App\Enums\Common\Code;
use App\Helper\PayStripeApi;
class PayStripeController extends BaseController
{
/**
* @remark :回调方法
* @name :handleWebhook
* @author :lyh
* @method :post
* @time :2024/12/24 15:41
*/
public function handleWebhook(){
$pay = new PayStripeApi();
$data = $pay->handleWebhook();
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
... ... @@ -49,12 +49,6 @@ class OptimizeController extends BaseController
if(!empty($lists) && !empty($lists['list'])){
$rankDataModel = new RankData();
foreach ($lists['list'] as $k => $v){
$data = $rankDataModel->read(['project_id'=>$v['id'],'lang'=>''],['first_page_num','indexed_pages_num']);
$v['first_page_num'] = $data['first_page_num'] ?? 0;
$v['indexed_pages_num'] = $data['indexed_pages_num'] ?? 0;
$v['g'] = $this->getGNum($v['id']);
$v = $this->handleParam($v);
//特殊项目 两个api_no
if($v['id'] == 2104){
$keyword_num_map = [10690=>100, 11201 => 50];
... ... @@ -70,8 +64,13 @@ class OptimizeController extends BaseController
$v['indexed_pages_num'] = implode(',', $v['indexed_pages_num']);
$v['g'] = implode(',', $v['g']);
$v['keyword_num'] = implode(',', $v['keyword_num']);
}else{
$data = $rankDataModel->read(['project_id'=>$v['id'],'lang'=>''],['first_page_num','indexed_pages_num']);
$v['first_page_num'] = $data['first_page_num'] ?? 0;
$v['indexed_pages_num'] = $data['indexed_pages_num'] ?? 0;
$v['g'] = $this->getGNum($v['id']);
}
$v = $this->handleParam($v);
$lists['list'][$k] = $v;
}
}
... ... @@ -224,6 +223,7 @@ class OptimizeController extends BaseController
'gl_project_deploy_optimize.start_date AS start_date',
'gl_project_deploy_optimize.backlink AS backlink',
'gl_project_deploy_optimize.ai_video AS ai_video',
'gl_project_deploy_optimize.api_no AS api_no',
'gl_domain_info.amp_status AS amp_status',
'gl_domain_info.domain AS domain',
];
... ...
<?php
/**
* @remark :
* @name :Extension3059ModuleController.php
* @author :lyh
* @method :post
* @time :2024/12/25 9:44
*/
namespace App\Http\Controllers\Bside\ExtensionModule;
use App\Enums\Common\Code;
use App\Helper\PayStripeApi;
use App\Http\Controllers\Bside\BaseController;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Models\ExtentModule\ExtensionModuleValue;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
class Extension3059ModuleController extends BaseController
{
/**
* @remark :获取所有的支付方式
* @name :getPayMethod
* @author :lyh
* @method :post
* @time :2024/12/25 16:01
*/
public function getPayMethod(){
$pay = new PayStripeApi();
$data = $pay->currency_types;
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取当前所有的商品列表
* @name :getProductLists
* @author :lyh
* @method :post
* @time :2024/12/25 9:37
*/
public function get3059Product(){
ProjectServer::useProject(3059);
$this->param['module_id'] = $this->param['module_id'] ?? 2;//默认加载商品数据
$searchParam = [
'module_id'=>$this->param['module_id'],
];
$moduleValueModel = new ExtensionModuleValue();
if(isset($this->param['product_id'])){
$info = $moduleValueModel->read(['value'=>$this->param['product_id']]);
if($info === false){
$this->response('success');
}
$searchParam['uuid'] = $info['uuid'];
}
$data = [];
$filedData = $this->getFiledList();
$moduleValueModel = new ExtensionModuleValue();
$lists = $moduleValueModel->list($searchParam);
if(!empty($lists)){
foreach ($lists as $k => $v){
$data[$v['uuid']][$filedData[$v['field_id']]] = $v['value'];
$data[$v['uuid']]['created_at'] = $v['created_at'];
}
}
$resultData = [];
foreach ($data as $k => $v){
$v['uuid'] = $k;
$resultData[] = $v;
}
DB::disconnect('custom_mysql');
$this->response('success',Code::SUCCESS,$resultData);
}
/**
* @remark :获取所有字段
* @name :getFiledList
* @author :lyh
* @method :post
* @time :2024/12/25 14:13
*/
public function getFiledList(){
$moduleFieldModel = new ExtensionModuleField();
$this->param['module_id'] = 2;//商品的所有字段
$filedList = $moduleFieldModel->list(['module_id'=>$this->param['module_id']],'sort',['id','field_name'],'desc');
$data = [];
if(!empty($filedList)){
foreach ($filedList as $k => $v){
$data[$v['id']] = $v['field_name'];
}
}
return $data;
}
/**
* @remark :编辑订单详情
* @name :editOrderDetail
* @author :lyh
* @method :post
* @time :2024/12/25 10:26
*/
public function save3059OrderDetail(){
ProjectServer::useProject(3059);
// $this->param = [
// 'amount'=>1000,
// 'currency'=>'cny',
// 'payment_method_types'=>'alipay',
// 'data'=>[
// ['field_id'=>2, 'value'=>'20241225114204'],
// ['field_id'=>3, 'value'=>date('Y-m-d H:i:s')],
// ['field_id'=>4, 'value'=>1000],
// ['field_id'=>5, 'value'=>'成都市武侯区二仙桥走成华大道'],
// ['field_id'=>9, 'value'=>'cny'],
// ['field_id'=>10, 'value'=>'alipay'],
// ['field_id'=>14, 'value'=>'二仙桥大爷'],
// ['field_id'=>15, 'value'=>'15687012587'],
// ]
// ];
$this->request->validate([
'data'=>'required',
'amount'=>'required',
'currency'=>'required',
'payment_method_types'=>'required',
],[
'data.required' => '数据不能为空',
'amount.required' => '金额不能为空',
'currency.required' => '币种不能为空',
'payment_method_types.required' => '支付方式不能为空',
]);
$this->param['module_id'] = 1;//默认订单模块
$moduleValueModel = new ExtensionModuleValue();
$info = $moduleValueModel->where('module_id',$this->param['module_id'])->orderBy('uuid','desc')->first();
if(empty($info)){
$uuid = 1;
}else{
$info = $info->toArray();
$uuid = $info['uuid'] + 1;
}
$saveData = [];
try {
//生成订单id
$saveData[] =['uuid'=>$uuid,'module_id'=>$this->param['module_id'],'field_id'=>1,'value'=>md5(uniqid(mt_rand(), true))];
$data = $this->param['data'];
$moduleValueModel = new ExtensionModuleValue();
foreach ($data as $k => $v){
$saveData[] = [
'uuid'=>$uuid,
'module_id'=>$this->param['module_id'],
'field_id'=>$v['field_id'],
'value'=>$v['value']
];
}
$pay = new PayStripeApi();
$payData = $pay->createPaymentIntent($this->param['amount'],$this->param['currency'],$this->param['payment_method_types']);
$saveData[] = ['uuid'=>$uuid,'module_id'=>$this->param['module_id'],'field_id'=>8,'value'=>$data['id'] ?? '未获取到支付意愿,请重新获取'];
$moduleValueModel->insertAll($saveData);
}catch (\Exception $e){
$this->fail('error,请联系管理员');
}
DB::disconnect('custom_mysql');
$this->response('success',Code::SUCCESS,$payData);
}
}
... ...
... ... @@ -16,6 +16,7 @@ use App\Models\ExtentModule\Extension2205ModuleValueLog;
use App\Models\ExtentModule\ExtensionModule;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Models\ExtentModule\ExtensionModuleValue;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
class ExtensionModuleController extends BaseController
... ... @@ -185,13 +186,7 @@ class ExtensionModuleController extends BaseController
foreach ($data as $k => $v){
$info = $moduleValueModel->read(['uuid'=>$this->param['uuid'],'field_id'=>$v['field_id'],'module_id'=>$this->param['module_id']]);
if($info === false){
if($this->user['project_id'] == 2205 && $this->param['module_id'] == 1){
if($v['field_id'] == 12 && !empty($v['value'])){//下拉框数据
if($v['value'] != 'Ordered'){
$this->fail('请从第一个流程开始选择。');
}
}
}
$this->edit2205ModuleValue($v);
$data = [
'uuid'=>$this->param['uuid'],
'module_id'=>$this->param['module_id'],
... ... @@ -200,6 +195,22 @@ class ExtensionModuleController extends BaseController
];
$moduleValueModel->addReturnId($data);
}else{
$this->edit2205ModuleValue($v);
$moduleValueModel->edit(['value'=>$v['value'] ?? ''],['id'=>$info['id']]);
}
}
$this->response('success',Code::SUCCESS,['uuid'=>$this->param['uuid']]);
}
/**
* @remark :2205项目单独处理
* @name :edit2205ModuleValue
* @author :lyh
* @method :post
* @time :2024/12/25 10:12
*/
public function edit2205ModuleValue($v){
if(isset($this->param['id']) && !empty($this->param['id'])){
if($this->user['project_id'] == 2205 && $this->param['module_id'] == 1){
if($v['field_id'] == 12 && (!empty($v['value']) && !empty($info['value']))){//下拉框数据
$filedModel = new ExtensionModuleField();
... ... @@ -221,12 +232,16 @@ class ExtensionModuleController extends BaseController
}
}
}
$moduleValueModel->edit(['value'=>$v['value'] ?? ''],['id'=>$info['id']]);
}else{
if($this->user['project_id'] == 2205 && $this->param['module_id'] == 1){
if($v['field_id'] == 12 && !empty($v['value'])){//下拉框数据
if($v['value'] != 'Ordered'){
$this->fail('请从第一个流程开始选择。');
}
}
}
}
$this->response('success',Code::SUCCESS,['uuid'=>$this->param['uuid']]);
}
/**
* @remark :新增數據
... ... @@ -252,13 +267,7 @@ class ExtensionModuleController extends BaseController
$data = $this->param['data'];
$moduleValueModel = new ExtensionModuleValue();
foreach ($data as $k => $v){
if($this->user['project_id'] == 2205 && $this->param['module_id'] == 1){
if($v['field_id'] == 12 && !empty($v['value'])){//下拉框数据
if($v['value'] != 'Ordered'){
$this->fail('请重第一个流程开始选择');
}
}
}
$this->edit2205ModuleValue($v);
$data = [
'uuid'=>$uuid,
'module_id'=>$this->param['module_id'],
... ...
... ... @@ -96,7 +96,7 @@ class KeywordController extends BaseController
* @method :post
* @time :2023/8/23 16:57
*/
public function info(Request $request, KeywordLogic $logic){
public function info(KeywordLogic $logic){
$data = $logic->getKeywordInfo();
if($data !== false){
$data = $this->handleReturnInfo($data);
... ...
... ... @@ -10,6 +10,7 @@
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Helper\PayStripeApi;
use App\Http\Logic\Bside\News\NewsLogic;
use App\Models\Channel\Channel;
use App\Models\CustomModule\CustomModuleCategory;
... ... @@ -34,7 +35,9 @@ class TestController extends BaseController
* @time :2024/11/11 14:51
*/
public function ceshi(){
$this->response('success',Code::SUCCESS,[]);
$pay = new PayStripeApi();
$data = $pay->createPaymentIntent(5000,'cny','alipay');
$this->response('success',Code::SUCCESS,$data);
}
... ...
... ... @@ -32,9 +32,9 @@ class ExtensionModuleFieldLogic extends BaseLogic
public function saveModuleField(){
//先查看当前字段是否存在
if(isset($this->param['id']) && !empty($this->param['id'])){
$info = $this->model->read(['field_name'=>$this->param['field_name'],'id'=>['!=',$this->param['id']]]);
$info = $this->model->read(['field_name'=>$this->param['field_name'],'module_id'=>$this->param['module_id'],'id'=>['!=',$this->param['id']]]);
}else{
$info = $this->model->read(['field_name'=>$this->param['field_name']]);
$info = $this->model->read(['field_name'=>$this->param['field_name'],'module_id'=>$this->param['module_id']]);
}
if($info !== false){
$this->fail('当前字段名已存在');
... ...
... ... @@ -549,7 +549,7 @@ class ProductLogic extends BaseLogic
*/
public function copyColumn($product_id,$new_product_id){
$columnModel = new Column();
$columnList = $columnModel->list(['product_id'=>$product_id]);
$columnList = $columnModel->list(['product_id'=>$product_id],'id',['*'],'asc');
if(!empty($columnList)){
foreach ($columnList as $k => $v){
$column_id = $v['id'];
... ... @@ -558,7 +558,7 @@ class ProductLogic extends BaseLogic
$column_news_id = $columnModel->addReturnId($v);
//执行新增描述
$detailModel = new Detail();
$detailList = $detailModel->list(['product_id'=>$product_id,'column_id'=>$column_id]);
$detailList = $detailModel->list(['product_id'=>$product_id,'column_id'=>$column_id],'id',['*'],'asc');
if(!empty($detailList)){
$data = [];
foreach ($detailList as $val){
... ...
... ... @@ -116,6 +116,24 @@ class Base extends Model
}
/**
* @remark :批量添加数据
* @name :addAllReturnId
* @author :lyh
* @method :post
* @time :2024/12/25 11:16
*/
public function insertAll($data){
if(is_array($data)){
foreach ($data as $k => $sonData){
$sonData['created_at'] = date('Y-m-d H:i:s');
$sonData['updated_at'] = $sonData['created_at'];
$data[$k] = $sonData;
}
}
return $this->insert($data);
}
/**
* @remark :统计数量
* @name :count
* @author :lyh
... ...
... ... @@ -17,7 +17,7 @@ use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::any('stripeWebhook', [\App\Http\Controllers\Api\PayStripeController::class, 'handleWebhook'])->name('api.handleWebhook');
Route::any('traffic_visit', [\App\Http\Controllers\Api\NoticeController::class, 'trafficVisit'])->name('api.traffic_visit');
Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController::class, 'optimizeProjectList'])->name('api.optimize_project_list');
Route::get('get_project_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectRoute'])->name('api.get_project_route');
... ...
... ... @@ -643,6 +643,12 @@ Route::middleware(['bloginauth'])->group(function () {
});
//无需登录验证的路由组
Route::group([], function () {
Route::prefix('extension_module')->group(function () {
//3059项目单独处理
Route::any('3059/getPayMethod', [\App\Http\Controllers\Bside\ExtensionModule\Extension3059ModuleController::class, 'getPayMethod'])->name('extension_module_getPayMethod');
Route::any('3059/get3059Product', [\App\Http\Controllers\Bside\ExtensionModule\Extension3059ModuleController::class, 'get3059Product'])->name('extension_module_get3059Product');
Route::any('3059/save3059OrderDetail', [\App\Http\Controllers\Bside\ExtensionModule\Extension3059ModuleController::class, 'save3059OrderDetail'])->name('extension_module_save3059OrderDetail');
});
Route::any('/login', [\App\Http\Controllers\Bside\LoginController::class, 'login'])->name('login');
Route::any('/projectLogin', [\App\Http\Controllers\Bside\LoginController::class, 'projectLogin'])->name('projectLogin');
Route::any('/ceshi', [\App\Http\Controllers\Bside\TestController::class, 'ceshi'])->name('ceshi');
... ...