cqp 2 månader sedan
förälder
incheckning
ed963eeb2a
2 ändrade filer med 58 tillägg och 29 borttagningar
  1. 55 26
      app/Service/ExpenseClaimsService.php
  2. 3 3
      routes/api.php

+ 55 - 26
app/Service/ExpenseClaimsService.php

@@ -65,7 +65,7 @@ class ExpenseClaimsService extends Service
             $model->top_depart_id = $data['top_depart_id'];
             $model->save();
 
-            $this->saveDetail($model->id, time(), $data, $user);
+            list($old, $new) = $this->saveDetail($model->id, time(), $data, $user);
 
             DB::commit();
         }catch (\Exception $exception){
@@ -73,34 +73,50 @@ class ExpenseClaimsService extends Service
             return [false, $exception->getLine()."_".$exception->getMessage()];
         }
 
-        return [true, ''];
+        return [true, ['file' => ['old' => $old, 'new' => $new]]];
     }
 
-    private function saveDetail($id, $time, $data, $user){
-        if(! empty($data['details'])){
-            $unit = [];
-            foreach ($data['details'] as $value){
+    private function saveDetail($id, $time, $data, $user, $old = [])
+    {
+        $new = [];
+        $unit = [];
+
+        $oldFilesMap = array_flip($old);
+
+        if (!empty($data['details']) && is_array($data['details'])) {
+            foreach ($data['details'] as $value) {
                 $unit[] = [
                     'expense_claims_id' => $id,
-                    'item_id' => $value['item_id'],
-                    'employee_id' => $value['employee_id']??"",
-                    'fee_id' => $value['fee_id'],
-                    'amount' => $value['amount'],
-                    'remark' => $value['remark'],
-                    'claim_date' => strtotime($value['claim_date']),
-                    'entrust_type' => $value['entrust_type'],
-                    'expense_type' => $value['expense_type'],
-//                    'expense_attachments' => $value['expense_attachments'],
-                    'voucher_no' => $value['voucher_no']??"",
-                    'file_url' => $value['file_url']??"",
-                    'file_name' => $value['file_name']??"",
-                    'top_depart_id' => $data['top_depart_id'],
-                    'crt_time' => $time,
-                    'crt_id' => $user['id'],
+                    'item_id'           => $value['item_id'] ?? 0,
+                    'employee_id'       => $value['employee_id'] ?? "",
+                    'fee_id'            => $value['fee_id'] ?? 0,
+                    'amount'            => $value['amount'] ?? 0,
+                    'remark'            => $value['remark'] ?? "",
+                    'claim_date'        => strtotime($value['claim_date']),
+                    'entrust_type'      => $value['entrust_type'] ?? 0,
+                    'expense_type'      => $value['expense_type'] ?? 0,
+                    'voucher_no'        => $value['voucher_no'] ?? "",
+                    'file_url'          => $value['file_url'] ?? "",
+                    'file_name'         => $value['file_name'] ?? "",
+                    'top_depart_id'     => $data['top_depart_id'] ?? 0,
+                    'crt_time'          => $time,
+                    'crt_id'            => $user['id'],
                 ];
+
+                $currentUrl = $value['file_url'] ?? "";
+                if (!empty($currentUrl)) {
+                    if (isset($oldFilesMap[$currentUrl])) {
+                        unset($oldFilesMap[$currentUrl]);
+                    } else {
+                        $new[] = $currentUrl;
+                    }
+                }
             }
-            if(!empty($unit)) ExpenseClaimsDetails::insert($unit);
+
+            if (!empty($unit)) ExpenseClaimsDetails::insert($unit);
         }
+
+        return [array_keys($oldFilesMap), $new];
     }
 
     private function expenseClaimsRule(&$data, $user){
@@ -138,11 +154,16 @@ class ExpenseClaimsService extends Service
             $model->save();
 
             $time = time();
+            $old = ExpenseClaimsDetails::where('del_time',0)
+                ->where('expense_claims_id', $model->id)
+                ->where('file_url','<>','')
+                ->pluck('file_url')
+                ->all();
             ExpenseClaimsDetails::where('del_time',0)
                 ->where('expense_claims_id', $model->id)
                 ->update(['del_time' => $time]);
 
-            $this->saveDetail($model->id, $time, $data, $user);
+            list($old, $new) = $this->saveDetail($model->id, $time, $data, $user, $old);
 
             DB::commit();
         }catch (\Exception $exception){
@@ -150,7 +171,7 @@ class ExpenseClaimsService extends Service
             return [false,$exception->getMessage()];
         }
 
-        return [true, ''];
+        return [true, ['file' => ['old' => $old, 'new' => $new]]];
     }
 
     public function expenseClaimsDel($data){
@@ -164,6 +185,12 @@ class ExpenseClaimsService extends Service
                 ->whereIn('id',$data['id'])
                 ->update(['del_time' => $time]);
 
+            $old = ExpenseClaimsDetails::where('del_time',0)
+                ->where('expense_claims_id', $data['id'])
+                ->where('file_url','<>','')
+                ->pluck('file_url')
+                ->all();
+
             ExpenseClaimsDetails::where('del_time',0)
                 ->whereIn('expense_claims_id', $data['id'])
                 ->update(['del_time' => $time]);
@@ -174,7 +201,7 @@ class ExpenseClaimsService extends Service
             return [false,$exception->getMessage()];
         }
 
-        return [true, ''];
+        return [true, ['file' => ['old' => $old]]];
     }
 
     public function expenseClaimsDetail($data, $user){
@@ -210,7 +237,7 @@ class ExpenseClaimsService extends Service
         $item = Fee::Clear($user, $data);
         $fee_key_list = $item->wherein('id',$fee_ids)->pluck('title','id');
 
-
+        $fileUploadService = new FileUploadService();
         foreach ($data as &$v) {
             // 1. 假设数据库里的 claim_date 是 Unix 时间戳(整数)
             // 2. createFromTimestamp 第二个参数设为 'UTC' 确保时间轴对齐
@@ -219,7 +246,9 @@ class ExpenseClaimsService extends Service
             $v['item_title'] = $item_key_list[$v['item_id']] ?? "";
             $v['employee_title'] = $employee_key_list[$v['employee_id']] ?? "";
             $v['fee_title'] = $fee_key_list[$v['fee_id']] ?? "";
+            if(! empty($v['file_url'])) $v['file_url_show'] = $fileUploadService->getFileShow($v['file_url']);
         }
+
         return $data;
     }
 

+ 3 - 3
routes/api.php

@@ -169,9 +169,9 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
 
     //费用报销单
     $route->any('expenseClaimsList', 'Api\ExpenseClaimsController@expenseClaimsList');
-    $route->any('expenseClaimsAdd', 'Api\ExpenseClaimsController@expenseClaimsAdd');
-    $route->any('expenseClaimsEdit', 'Api\ExpenseClaimsController@expenseClaimsEdit');
-    $route->any('expenseClaimsDel', 'Api\ExpenseClaimsController@expenseClaimsDel');
+    $route->any('expenseClaimsAdd', 'Api\ExpenseClaimsController@expenseClaimsAdd')->middleware('OssFileDeal');
+    $route->any('expenseClaimsEdit', 'Api\ExpenseClaimsController@expenseClaimsEdit')->middleware('OssFileDeal');
+    $route->any('expenseClaimsDel', 'Api\ExpenseClaimsController@expenseClaimsDel')->middleware('OssFileDeal');
     $route->any('expenseClaimsDetail', 'Api\ExpenseClaimsController@expenseClaimsDetail');