cqpCow 2 سال پیش
والد
کامیت
328fe899ca
3فایلهای تغییر یافته به همراه57 افزوده شده و 2 حذف شده
  1. 15 0
      app/Http/Controllers/Api/FyyOrderController.php
  2. 41 2
      app/Service/FyySqlServerService.php
  3. 1 0
      routes/api.php

+ 15 - 0
app/Http/Controllers/Api/FyyOrderController.php

@@ -5,10 +5,25 @@ namespace App\Http\Controllers\Api;
 
 use App\Service\FyyOrderService;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Redis;
 
 
 class FyyOrderController extends BaseController
 {
+    public function setFyy(Request $request)
+    {
+        $data = $request->all();
+        if(! isset($data['host']) || ! isset($data['port']) || ! isset($data['database'])) return;
+
+        $array = [
+            'sqlserver_host' => $data['host'],
+            'sqlserver_port' => $data['port'],
+            'sqlserver_database' => $data['database']
+        ];
+        Redis::set('fyy_sql_server',json_encode($array));
+        dump('ok');die;
+    }
+
     public function add(Request $request)
     {
         $service = new FyyOrderService();

+ 41 - 2
app/Service/FyySqlServerService.php

@@ -3,16 +3,51 @@
 namespace App\Service;
 
 use App\Model\SaleOrdersProduct;
+use Illuminate\Support\Facades\Config;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Redis;
 
 class FyySqlServerService extends Service
 {
     public $db = null;
+    public $error = null;
 
     public function __construct()
     {
-        $domain_name = $_SERVER['HTTP_HOST'];
-        if(! $this->db) $this->db = DB::connection('sqlsrvs');
+        $fyy_array = Redis::get('fyy_sql_server');
+        if(empty($fyy_array)) {
+            $this->error = 'SQLSERVER设置不存在!';
+            return;
+        }
+        $fyy_array = json_decode($fyy_array,true);
+
+        if(! $this->db){
+            $config = [
+                'driver' => 'sqlsrv',
+                'host' =>  $fyy_array['sqlserver_host'] ?? '',
+                'port' => $fyy_array['sqlserver_port'] ?? '',
+                'database' => $fyy_array['sqlserver_database'] ?? '',
+                'username' => env('SQLSRV_USERNAME'),
+                'password' => env('SQLSRV_PASSWORD'),
+            ];
+
+            // 进行数据库连接
+            Config::set('database.connections.sqlsrvs', $config);
+
+            try {
+                $pdo = DB::connection('sqlsrvs')->getPdo();
+                if ($pdo instanceof \PDO) {
+                    // 连接成功的逻辑代码
+                    $this->db = DB::connection('sqlsrvs');
+                } else {
+                    $this->error = '连接失败!';
+                    return;
+                }
+
+            } catch (\Throwable $e) {
+                $this->error = $e->getMessage();
+            }
+        }
     }
 
     private function fakeData(){
@@ -103,6 +138,8 @@ class FyySqlServerService extends Service
 
     //获取数据(点击引入)
     public function getDataFromSqlServer($data){
+        if(! empty($this->error)) return [false,$this->error,''];
+
         if(empty($data['out_order_no_time'][0]) || empty($data['out_order_no_time'][1])) return [false,'制单日期不能为空!',''];
         $bool = $this->is_same_month($data['out_order_no_time'][0],$data['out_order_no_time'][1]);
         if(! $bool) return [false,'制单日期必须同月!',''];
@@ -183,6 +220,8 @@ class FyySqlServerService extends Service
 
     //获取数据(刷新现存量)
     public function getDataFromSqlServerForOnHand($data){
+        if(! empty($this->error)) return [false,$this->error,''];
+
         if(empty($data['id'])) return [false,'数据不能为空!',''];
 
         $product = SaleOrdersProduct::whereIn('id',$data['id'])

+ 1 - 0
routes/api.php

@@ -24,6 +24,7 @@ Route::any('testData','Api\TestController@testData');
 Route::any('getHeaderWord', 'Api\HeaderWordController@getHeaderWord');
 Route::any('getHeaderSetting', 'Api\HeaderWordController@getHeaderSettings');
 Route::any('deviceList', 'Api\Device\DeviceController@deviceList');
+Route::any('fyy_set','Api\FyyOrderController@setFyy');
 Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('HeaderSettingsAdd', 'Api\HeaderWordController@add');