cqp 11 月之前
父节点
当前提交
049421dc72
共有 4 个文件被更改,包括 231 次插入8 次删除
  1. 49 8
      app/Http/Controllers/Api/KqController.php
  2. 33 0
      app/Model/KqLeave.php
  3. 145 0
      app/Service/KqService.php
  4. 4 0
      routes/api.php

+ 49 - 8
app/Http/Controllers/Api/KqController.php

@@ -2,19 +2,11 @@
 
 namespace App\Http\Controllers\Api;
 
-use App\Http\Controllers\Controller;
 use App\Service\KqService;
 use Illuminate\Http\Request;
 
 class KqController extends BaseController
 {
-    public $user_info;
-    public function __construct()
-    {
-        parent::__construct();
-    }
-
-
     public function kqList(Request $request){
         $service = new KqService();
         $user = $request->userData->toArray();
@@ -38,4 +30,53 @@ class KqController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function kqForLeaveEdit(Request $request){
+        $service = new KqService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->kqForLeaveEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function kqForLeaveAdd(Request $request){
+        $service = new KqService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->kqForLeaveAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function kqForLeaveDel(Request $request){
+        $service = new KqService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->kqForLeaveDel($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function kqForLeaveList(Request $request){
+        $service = new KqService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->kqForLeaveList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }
+

+ 33 - 0
app/Model/KqLeave.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Model;
+
+class KqLeave extends UseScopeBaseModel
+{
+    protected $table = "kq_leave"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+    const STATE_ZERO = 0;//未审核
+    const STATE_ONE = 1;//待审核
+    const STATE_TWO = 2;//审核通过
+    public static $prefix = 'leave';
+    public static $name = [
+        self::STATE_ZERO => '未审核',
+        self::STATE_ONE => '待审核',
+        self::STATE_TWO => '审核通过'
+    ];
+
+    const TYPE_ONE = 1;
+    const TYPE_TWO = 2;
+    const TYPE_THREE = 3;
+    const TYPE_FOUR = 4;
+
+    public static $type_name = [
+        self::TYPE_ONE => '调休',
+        self::TYPE_TWO => '病假',
+        self::TYPE_THREE => '事假',
+        self::TYPE_FOUR => '其它',
+    ];
+}

+ 145 - 0
app/Service/KqService.php

@@ -2,6 +2,9 @@
 
 namespace App\Service;
 
+use App\Model\BusinessOpportunity;
+use App\Model\Employee;
+use App\Model\KqLeave;
 use App\Model\KqList;
 use Illuminate\Support\Facades\DB;
 
@@ -116,4 +119,146 @@ class KqService extends Service
         sort($total_key);
         return $total_key;
     }
+
+    public function kqForLeaveEdit($data,$user){
+        list($status,$msg) = $this->kqForLeaveRule($data, $user, false);
+        if(! $status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = KqLeave::where('id',$data['id'])->first();
+            $model->content = $data['content'] ?? "";
+            $model->type = $data['type'] ?? 0;
+            $model->start_time = $data['start_time'] ?? 0;
+            $model->end_time = $data['end_time'] ?? 0;
+            $model->save();
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function kqForLeaveAdd($data,$user){
+        list($status,$msg) = $this->kqForLeaveRule($data, $user);
+        if(! $status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = new KqLeave();
+            $model->order_number = $data['order_number'] ?? "";
+            $model->content = $data['content'] ?? "";
+            $model->type = $data['type'] ?? 0;
+            $model->start_time = $data['start_time'] ?? 0;
+            $model->end_time = $data['end_time'] ?? 0;
+            $model->crt_id = $user['id'];
+            $model->save();
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function kqForLeaveDel($data,$user){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+
+        $leave = KqLeave::where('id',$data['id'])->where('del_time',0)->first();
+        if(empty($leave)) return [false, '该请假记录不存在或已被删除'];
+        $leave = $leave->toArray();
+        if($leave['state'] > KqLeave::STATE_ZERO) return [false, '该请假记录已无法删除'];
+
+        try {
+            DB::beginTransaction();
+
+            KqLeave::where('id',$data['id'])->update([
+                'del_time'=> time()
+            ]);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function kqForLeaveList($data,$user){
+        $model = KqLeave::where('del_time',0)
+            ->select('content','id','order_number','type','start_time','end_time','state','crt_id','crt_time')
+            ->orderby('id', 'desc');
+
+        if(! empty($data['id'])) $model->where('id', $data['id']);
+        if(isset($data['type'])) $model->where('type', $data['type']);
+        if(isset($data['state'])) $model->where('state', $data['state']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<=',$return[1]);
+        }
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillLeaveData($list);
+
+        return [true, $list];
+    }
+
+    public function fillLeaveData($data){
+        if(empty($data['data'])) return $data;
+
+        $emp = Employee::whereIn('id',array_unique(array_column($data['data'],'crt_id')))
+            ->pluck('emp_name','id')
+            ->toArray();
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['crt_time'] = date("Y-m-d H:i:s", $value['crt_time']);
+            $data['data'][$key]['start_time'] = $value['start_time'] ? date("Y-m-d H:i",$value['start_time']): '';
+            $data['data'][$key]['end_time'] = $value['end_time'] ? date("Y-m-d H:i",$value['end_time']): '';
+            $data['data'][$key]['type_title'] = KqLeave::$type_name[$value['type']] ?? "";
+            $data['data'][$key]['state_title'] = KqLeave::$name[$value['state']] ?? "";
+            $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
+        }
+
+        return $data;
+    }
+
+    public function kqForLeaveRule(&$data,$user,$is_add = true){
+        if(empty($data['type']) || ! isset(KqLeave::$type_name[$data['type']])) return [false,'请假类型不能为空或者该类型不存在'];
+
+        if(! empty($data['time'][0]) || ! empty($data['time'][1])) return [false, '请假时间不能为空'];
+        $data['start_time'] = $this->changeDateToDateMin($data['time'][0]);
+        $data['end_time'] = $this->changeDateToDateMin($data['time'][1]);
+
+        if($is_add){
+            $data['order_number'] = (new OrderNoService())->createOrderNumber(KqLeave::$prefix);
+            $bool = KqLeave::where('del_time',0)
+                ->where('crt_id',$user['id'])
+                ->whereColumn('start_time', '>=', $data['end_time'])
+                ->exists();
+        }else{
+            if(empty($data['id'])) return [false,'ID不能为空'];
+            $leave = KqLeave::where('del_time',0)->where('id',$data['id'])->first();
+            if(empty($leave)) return [false, '该请假记录不存在货已被删除'];
+            $leave = $leave->toArray();
+            if($leave['state'] > KqLeave::STATE_ZERO) return [false, '该请假记录已无法编辑'];
+
+            $bool = KqLeave::where('del_time',0)
+                ->where('crt_id',$user['id'])
+                ->whereColumn('start_time', '<=', $data['end_time'])
+                ->whereColumn('end_time', '>=', $data['start_time'])
+                ->where('id','<>',$data['id'])
+                ->exists();
+        }
+        if($bool) return [false, '该时间段内已存在请假记录'];
+
+        return [true, ''];
+    }
 }

+ 4 - 0
routes/api.php

@@ -59,6 +59,10 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
 
     $route->any('kqList', 'Api\KqController@kqList');
     $route->any('kqCollect', 'Api\KqController@kqCollect');
+    $route->any('kqForLeaveAdd', 'Api\KqController@kqForLeaveAdd');
+    $route->any('kqForLeaveEdit', 'Api\KqController@kqForLeaveEdit');
+    $route->any('kqForLeaveDel', 'Api\KqController@kqForLeaveDel');
+    $route->any('kqForLeaveList', 'Api\KqController@kqForLeaveList');
 
     //客户
     $route->any('customerList', 'Api\CustomerController@customerList');