ソースを参照

三星picsee短網址 相關修改調整

EricYH Huang 3 年 前
コミット
cdac90c4bc
共有3 個のファイルを変更した97 個の追加6 個の削除を含む
  1. 37
    2
      app/Http/Controllers/Api/GeneralInnerServiceController.php
  2. 58
    4
      app/Http/Services/Backend/DataManagement/UrlManagementService.php
  3. 2
    0
      routes/web.php

+ 37
- 2
app/Http/Controllers/Api/GeneralInnerServiceController.php ファイルの表示

@@ -122,10 +122,9 @@ class GeneralInnerServiceController extends Controller
122 122
                 'id'      => $result["serno"],
123 123
                 'url'     => $result["code"],
124 124
                 'origUrl' => $result["url"],
125
-                'title'   => $result["title"],
125
+                'title'   => $result["title"]
126 126
             ];
127 127
         }
128
-
129 128
         // 返回
130 129
         return json_decode(json_encode(['code' => GeneralConst::API_OK, 'msg' => GeneralConst::$apiMap[ GeneralConst::API_OK ], 'data' => $data], JSON_NUMERIC_CHECK), true);
131 130
     }
@@ -170,4 +169,40 @@ class GeneralInnerServiceController extends Controller
170 169
         echo (new QRCode($options))->render(env('ORL_URL') . $code);
171 170
     }
172 171
     
172
+    public function takeOrlPV(Request $request){ 
173
+        // 鑒權
174
+        if ($this->oid == 0) return json_decode(json_encode(['code' => $this->apicode, 'msg' => GeneralConst::$apiMap[ $this->apicode ], 'data' => []], JSON_NUMERIC_CHECK), true);
175
+        // 服務層
176
+        $orlId = $request->input('orlId');
177
+        $result = $this->urlManagementSv->takeOrlPV($orlId, $this->oid);
178
+        // 整理返回資料
179
+        $data = [];
180
+        if (!empty($result)) {
181
+            $data = [
182
+                'id'      => $result["serno"],
183
+                'pv'    => $result["pv"],
184
+            ];
185
+        }
186
+        // 返回
187
+        return json_decode(json_encode(['code' => GeneralConst::API_OK, 'msg' => GeneralConst::$apiMap[ GeneralConst::API_OK ], 'data' => $data], JSON_NUMERIC_CHECK), true);       
188
+    }
189
+    
190
+    public function datesegById(Request $request){ 
191
+        // 鑒權
192
+        if ($this->oid == 0) return json_decode(json_encode(['code' => $this->apicode, 'msg' => GeneralConst::$apiMap[ $this->apicode ], 'data' => []], JSON_NUMERIC_CHECK), true);
193
+        // 服務層
194
+        $orlId = $request->input('orlId');
195
+        $result = $this->urlManagementSv->getDatesegById($orlId, $this->oid);
196
+        // 整理返回資料
197
+        $data = array();
198
+        $tmp = '';
199
+        for ($i = 0; $i < count($result); $i++) {            
200
+            $data[] = [
201
+                'date' => $result[ $i ]["date"],
202
+                'cnt'  => $result[ $i ]["cnt"],
203
+            ];
204
+        }
205
+        // 返回
206
+        return json_decode(json_encode(['code' => GeneralConst::API_OK, 'msg' => GeneralConst::$apiMap[ GeneralConst::API_OK ], 'data' => $data], JSON_NUMERIC_CHECK), true);       
207
+    }
173 208
 }

+ 58
- 4
app/Http/Services/Backend/DataManagement/UrlManagementService.php ファイルの表示

@@ -80,13 +80,13 @@ class UrlManagementService
80 80
             ->select([
81 81
                 'dataManagement_urlManagement.serno',
82 82
                 'title',
83
-                \DB::raw("concat('<button class=\"btn btn-xs\" id=\"url_copy_', dataManagement_urlManagement.serno, '\" url=\"', url, '\">複製網址</button>') as url"),
84
-                \DB::raw("concat('<button class=\"btn btn-xs\" id=\"url_copy_', dataManagement_urlManagement.serno, '\" url=\"" . env('ORL_URL') . "', dataManagement_urlManagement.code, '\">', dataManagement_urlManagement.code, '</button>') as code"),
83
+                // \DB::raw("concat('<button class=\"btn btn-xs\" id=\"url_copy_', dataManagement_urlManagement.serno, '\" url=\"', url, '\">複製網址</button>') as url"),
84
+                // \DB::raw("concat('<button class=\"btn btn-xs\" id=\"url_copy_', dataManagement_urlManagement.serno, '\" url=\"" . env('ORL_URL') . "', dataManagement_urlManagement.code, '\">', dataManagement_urlManagement.code, '</button>') as code"),
85 85
                 'memo',
86 86
                 \DB::raw("ifnull(uv_count, 0) as pv"),
87 87
                 \DB::raw("(case valid $validStr end) as valid"),
88 88
                 \DB::raw('concat(\'<a class="btn btn-success btn-xs" href="urlManagement/edit/\', dataManagement_urlManagement.serno, \'"><span class="glyphicon glyphicon-pencil"></span></a>\') as edit'),
89
-                \DB::raw("concat('<img src=\"urlManagement/qrcode/', dataManagement_urlManagement.code, '\" width=\"70\"/>') as qrcode"),
89
+                // \DB::raw("concat('<img src=\"urlManagement/qrcode/', dataManagement_urlManagement.code, '\" width=\"70\"/>') as qrcode"),
90 90
                 \DB::raw("dataManagement_urlManagement.code as api_code"),
91 91
                 \DB::raw("concat('" . env('APP_URL') . "/api/inner/qrcode/', dataManagement_urlManagement.code) as api_qrcode"),
92 92
             ])
@@ -173,11 +173,65 @@ class UrlManagementService
173 173
             return [];
174 174
         }
175 175
         $url = $url->toArray();
176
-        
177 176
         // 整理返回值並返回
178 177
         return $url;
179 178
     }
180 179
     
180
+    public function takeOrlPV($id, $oid)
181
+    {
182
+        // 取得參數
183
+        // 調用資料庫(或者其他業務邏輯)
184
+        $url = $this->urlManagementDb
185
+            ->select([
186
+                'serno',
187
+                'title',
188
+                'url',
189
+                \DB::raw("concat('" . env('ORL_URL') . "', code, '') as code"),
190
+                'memo',
191
+                'valid',
192
+            ]);
193
+            
194
+        $url = $this->urlManagementDb
195
+        ->select([
196
+            'dataManagement_urlManagement.serno',
197
+            \DB::raw("ifnull(uv_count, 0) as pv"),
198
+        ])
199
+        ->leftjoin(\DB::raw("(select v.code, count(*) as uv_count from dataManagement_urlManagement_visit as v where (cdate >= '1900-01-01 00:00:00' and cdate <= '2050-12-31 23:59:59') group by v.code) as uv"), 'dataManagement_urlManagement.code', '=', 'uv.code');
200
+        // 權限判斷
201
+        if ($oid != GeneralConst::ID_ADMIN) {
202
+            $url = $url
203
+                ->where('oid', '=', $oid);
204
+        }
205
+        $url = $url
206
+            ->where('serno', $id)
207
+            ->first();
208
+        if (is_null($url)) {
209
+            return [];
210
+        }
211
+        $url = $url->toArray();
212
+        // 整理返回值並返回
213
+        return $url;
214
+    }
215
+    
216
+    public function getDatesegById($id, $oid){
217
+        // 取得依照時間切分的資料
218
+        $datesegs = $this->urlManagementVisitDb->select([
219
+            'code',
220
+            \DB::raw("left(cdate, 10) as date"),
221
+            \DB::raw("count(*) as cnt"),
222
+        ]);
223
+        if ($oid != GeneralConst::ID_ADMIN) {
224
+            $datesegs = $datesegs->where('code', $id);
225
+        }
226
+        $datesegs = $datesegs
227
+            ->groupby(\DB::raw("left(cdate, 10)"))
228
+            ->orderByRaw(\DB::raw("left(cdate, 10) asc"))
229
+            ->get()->toArray();
230
+        
231
+        // 整理返回值並返回
232
+        return $datesegs;
233
+    }
234
+    
181 235
     public function insertUrl($title, $url, $code, $memo, $valid, $oid)
182 236
     {
183 237
         // 取得參數

+ 2
- 0
routes/web.php ファイルの表示

@@ -11,6 +11,8 @@ Route::group(['prefix' => 'api', 'namespace' => 'Api'], function () {
11 11
     Route::get('/inner/fetchById', 'GeneralInnerServiceController@fetchById');
12 12
     Route::get('/inner/qrcode/{code}', 'GeneralInnerServiceController@qrcode');
13 13
     Route::get('/inner/dateseg', 'GeneralInnerServiceController@dateseg');
14
+    Route::get('/inner/takeOrlPV', 'GeneralInnerServiceController@takeOrlPV');
15
+    Route::get('/inner/datesegById', 'GeneralInnerServiceController@datesegById');
14 16
 });
15 17
 
16 18
 // 後台路由