cqp 11 ماه پیش
والد
کامیت
3118c5a342
1فایلهای تغییر یافته به همراه39 افزوده شده و 12 حذف شده
  1. 39 12
      app/Service/EmployeeService.php

+ 39 - 12
app/Service/EmployeeService.php

@@ -127,6 +127,7 @@ class EmployeeService extends Service
             $model = new Employee();
             $model = $model->where('id',$data['id'])->first();
             $model->number = $data['number'];
+            $model->card_no = $data['card_no'];
             $model->emp_name = $data['emp_name'];
             $model->mobile = $data['mobile'] ?? '';
             $model->leave_time = $data['leave_time'] ?? '';
@@ -134,7 +135,6 @@ class EmployeeService extends Service
             $model->birth_date = $data['birth_date']??'';
             $model->state = empty($data['leave_time']) ? Employee::USE : Employee::NOT_USE;
             $model->is_admin = $data['is_admin'];
-            $model->account = $data['number'];
             if($model->pic != $data['pic']){
                 // 使用正则表达式匹配特定路径部分并替换为空
                 $pattern = '/^https?:\/\/[^\/]+\/image\//';
@@ -143,10 +143,16 @@ class EmployeeService extends Service
             }
             $model->pic = $data['pic'] ?? "";
             if($model->is_admin == 1){
-                if($data['password'] !== '******'){
-                    $model->password   = Hash::make($data['password']);
+                if($data['password'] !== '******') $model->password = Hash::make($data['password']);
+                if(! empty($data['account'])) {
+                    $model->account = $data['account'];
+                }else{
+                    $model->account = $data['card_no'];
                 }
+            }else{
+                $model->account = "";
             }
+
             $model->save();
 
             EmployeeDepartPermission::where('employee_id',$data['id'])->delete();
@@ -199,8 +205,8 @@ class EmployeeService extends Service
         try{
             DB::beginTransaction();
             $model = new Employee();
-
             $model->number = $data['number'];
+            $model->card_no = $data['card_no'];
             $model->emp_name = $data['emp_name'];
             $model->mobile = $data['mobile'] ?? '';
             $model->leave_time = $data['leave_time'] ?? '';
@@ -208,13 +214,15 @@ class EmployeeService extends Service
             $model->state = empty($data['leave_time']) ? Employee::USE : Employee::NOT_USE;
             $model->crt_id = $user['id'];
             $model->is_admin = $data['is_admin'];
-            $model->account = $data['number'];
             $model->sex = $data['sex']??'男';
             $model->birth_date = $data['birth_date']??'';
             $model->pic = $data['pic'] ?? '';
             if($model->is_admin == 1){
-                if($data['password'] !== '********'){
-                    $model->password = Hash::make($data['password']);
+                $model->password = Hash::make($data['password']);
+                if(! empty($data['account'])) {
+                    $model->account = $data['account'];
+                }else{
+                    $model->account = $data['card_no'];
                 }
             }
             $model->save();
@@ -300,7 +308,7 @@ class EmployeeService extends Service
      */
     public function employeeList($data,$user){
         $model = Employee::where('del_time',0)
-            ->select('number','mobile','emp_name','id','entry_time','leave_time','is_admin','state','is_device','sex','birth_date','pic')
+            ->select('number','mobile','emp_name','id','entry_time','leave_time','is_admin','state','is_device','sex','birth_date','pic','card_no')
             ->orderBy('number','asc');
 
         if(! empty($data['depart'])) {
@@ -316,6 +324,7 @@ class EmployeeService extends Service
             $model->whereIn("id", $employee_id);
         }
 
+        if(! empty($data['card_no'])) $model->where('card_no', 'LIKE', '%'.$data['card_no'].'%');
         if(! empty($data['number'])) $model->where('number', 'LIKE', '%'.$data['number'].'%');
         if(! empty($data['emp_name'])) $model->where('emp_name', 'LIKE', '%'.$data['emp_name'].'%');
         if(! empty($data['state'])) $model->where('state',$data['state']);
@@ -408,33 +417,51 @@ class EmployeeService extends Service
      * @param $is_add
      * @return array
      */
-    public function employeeRule($data,$is_add = true){
+    public function employeeRule($data, $is_add = true){
         if($this->isEmpty($data,'number')) return [false,'工号不存在!'];
+        if($this->isEmpty($data,'card_no')) return [false,'身份证号不存在!'];
         if($this->isEmpty($data,'emp_name')) return [false,'姓名不存在!'];
         if(empty($data['depart'])) return [false,'部门不能为空'];
+        if(! empty($data['is_admin'])){
+            $id = $data['id'] ?? 0;
+            $bool = Employee::where('del_time',0)
+                ->when(! empty($id), function ($query) use ($id) {
+                    return $query->where('id', "<>", $id);
+                })
+                ->where('account', $data['account'])
+                ->exists();
+            if($bool) return [false, "账号" . $data['account'] ."已存在"];
+        }
 
         $mobile = $data['mobile'] ?? "";
         $number = $data['number'] ?? "";
+        $card_no = $data['card_no'] ?? "";
         if(! $is_add){
             if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
             $bool = Employee::where('del_time',0)
                 ->where('id','<>',$data['id'])
-                ->where(function ($query) use ($mobile, $number){
+                ->where(function ($query) use ($mobile, $number, $card_no){
                     $query->where('number', $number);
                     $query->when(! empty($mobile), function ($query) use ($mobile) {
                         return $query->orWhere('mobile', $mobile);
                     });
+                    $query->when(! empty($card_no), function ($query) use ($card_no) {
+                        return $query->orWhere('card_no', $card_no);
+                    });
                 })->exists();
         }else{
             $bool = Employee::where('del_time',0)
-                ->where(function ($query) use ($mobile, $number){
+                ->where(function ($query) use ($mobile, $number, $card_no){
                     $query->where('number', $number);
                     $query->when(! empty($mobile), function ($query) use ($mobile) {
                         return $query->orWhere('mobile', $mobile);
                     });
+                    $query->when(! empty($card_no), function ($query) use ($card_no) {
+                        return $query->orWhere('card_no', $card_no);
+                    });
                 })->exists();
         }
-        if($bool) return [false,'工号或手机号码已存在!'];
+        if($bool) return [false,'工号、手机号码或身份证已存在!'];
 
         return [true,''];
     }