|
@@ -4,7 +4,6 @@ namespace App\Service;
|
|
|
|
|
|
use App\Model\BasicType;
|
|
|
use App\Model\Depart;
|
|
|
-use App\Model\DepartPriceName;
|
|
|
use App\Model\Employee;
|
|
|
use App\Model\EmployeeDepartPermission;
|
|
|
use App\Model\EmployeeManagerDepart;
|
|
@@ -47,6 +46,7 @@ class EmployeeService extends Service
|
|
|
$model->mobile = $data['mobile'] ?? '';
|
|
|
$model->leave_time = $data['leave_time'] ?? '';
|
|
|
$model->entry_time = $data['entry_time'] ?? '';
|
|
|
+ $model->state = empty($data['leave_time']) ? Employee::USE : Employee::NOT_USE;
|
|
|
$model->is_admin = $data['is_admin'];
|
|
|
if($model->is_admin == 1){
|
|
|
$model->account = $data['number'];
|
|
@@ -112,13 +112,13 @@ class EmployeeService extends Service
|
|
|
$model->mobile = $data['mobile'] ?? '';
|
|
|
$model->leave_time = $data['leave_time'] ?? '';
|
|
|
$model->entry_time = $data['entry_time'] ?? '';
|
|
|
- $model->state = 1;
|
|
|
+ $model->state = empty($data['leave_time']) ? Employee::USE : Employee::NOT_USE;
|
|
|
$model->crt_id = $user['id'];
|
|
|
$model->is_admin = $data['is_admin'];
|
|
|
if($model->is_admin == 1){
|
|
|
$model->account = $data['number'];
|
|
|
if($data['password'] !== '********'){
|
|
|
- $model->password = Hash::make($data['password']);
|
|
|
+ $model->password = Hash::make($data['password']);
|
|
|
}
|
|
|
}
|
|
|
$model->save();
|
|
@@ -209,6 +209,8 @@ class EmployeeService extends Service
|
|
|
->select('employee_id')->get()->toArray();
|
|
|
$model->whereIn('id',array_column($emp,'employee_id'));
|
|
|
}
|
|
|
+ if(! $user['is_all_depart']) $model->where('is_manager',0);
|
|
|
+
|
|
|
$list = $this->limit($model,'',$data);
|
|
|
|
|
|
//组织数据
|
|
@@ -277,16 +279,24 @@ class EmployeeService extends Service
|
|
|
if($this->isEmpty($data,'number')) return [false,'工号不存在!'];
|
|
|
if($this->isEmpty($data,'emp_name')) return [false,'姓名不存在!'];
|
|
|
|
|
|
+ $mobile = $data['mobile'] ?? "";
|
|
|
+ $number = $data['number'] ?? "";
|
|
|
if(! $is_add){
|
|
|
if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
|
|
|
- $bool = Employee::where('number',$data['number'])
|
|
|
+ $bool = Employee::where('del_time',0)
|
|
|
->where('id','<>',$data['id'])
|
|
|
- ->where('del_time',0)->exists();
|
|
|
+ ->where(function ($query) use ($mobile, $number){
|
|
|
+ $query->where('mobile', $mobile)
|
|
|
+ ->orWhere('number', $number);
|
|
|
+ })->exists();
|
|
|
}else{
|
|
|
- $bool = Employee::where('number',$data['number'])
|
|
|
- ->where('del_time',0)->exists();
|
|
|
+ $bool = Employee::where('del_time',0)
|
|
|
+ ->where(function ($query) use ($mobile, $number){
|
|
|
+ $query->where('mobile', $mobile)
|
|
|
+ ->orWhere('number', $number);
|
|
|
+ })->exists();
|
|
|
}
|
|
|
- if($bool) return [false,'工号已存在!'];
|
|
|
+ if($bool) return [false,'工号或手机号码已存在!'];
|
|
|
|
|
|
return [true,''];
|
|
|
}
|
|
@@ -296,8 +306,8 @@ class EmployeeService extends Service
|
|
|
* @param $data
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function roleEdit($data){
|
|
|
- list($status,$msg) = $this->roleRule($data, false);
|
|
|
+ public function roleEdit($data,$user){
|
|
|
+ list($status,$msg) = $this->roleRule($data,$user, false);
|
|
|
if(!$status) return [$status,$msg];
|
|
|
|
|
|
$model = new Role();
|
|
@@ -315,11 +325,13 @@ class EmployeeService extends Service
|
|
|
* @return array
|
|
|
*/
|
|
|
public function roleAdd($data,$user){
|
|
|
- list($status,$msg) = $this->roleRule($data);
|
|
|
+ list($status,$msg) = $this->roleRule($data,$user);
|
|
|
if(!$status) return [$status,$msg];
|
|
|
|
|
|
$model = new Role();
|
|
|
$model->title = $data['title'] ;
|
|
|
+ $model->depart_id = $data['depart_id'] ?? 0;
|
|
|
+ $model->top_depart_id = $data['top_depart_id'] ?? 0;
|
|
|
$model->save();
|
|
|
|
|
|
return [true,'保存成功!'];
|
|
@@ -350,13 +362,14 @@ class EmployeeService extends Service
|
|
|
* @param $data
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function roleList($data){
|
|
|
- $list = Role::where('del_time',0)
|
|
|
+ public function roleList($data,$user){
|
|
|
+ $model = new Role(['userData' => $user, 'search' => $data]);
|
|
|
+ $model = $model->where('del_time',0)
|
|
|
->select('title','crt_time','id','upd_time')
|
|
|
->orderBy('id','desc');
|
|
|
- if(! empty($data['title'])) $list->where('title', 'LIKE', '%' . $data['title'] . '%');
|
|
|
+ if(! empty($data['title'])) $model->where('title', 'LIKE', '%' . $data['title'] . '%');
|
|
|
|
|
|
- $list = $this->limit($list,'',$data);
|
|
|
+ $list = $this->limit($model,'',$data);
|
|
|
|
|
|
return [200,$list];
|
|
|
}
|
|
@@ -367,17 +380,23 @@ class EmployeeService extends Service
|
|
|
* @param $is_check
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function roleRule($data,$is_check = true){
|
|
|
+ public function roleRule(&$data,$user, $is_check = true){
|
|
|
if($this->isEmpty($data,'title')) return [false,'名称不能为空!'];
|
|
|
|
|
|
+ //所属部门 以及 顶级部门
|
|
|
+ if(empty($data['depart_id'])) $data['depart_id'] = $this->getDepart($user);
|
|
|
+ $data['top_depart_id'] = $user['depart_map'][$data['depart_id']] ?? 0;
|
|
|
+
|
|
|
if($is_check){
|
|
|
$bool = Role::where('title',$data['title'])
|
|
|
+ ->where('top_depart_id',$data['top_depart_id'])
|
|
|
->where('del_time',0)
|
|
|
->exists();
|
|
|
if($bool) return [false,'角色名称已存在!'];
|
|
|
}else{
|
|
|
if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
|
|
|
$bool = Role::where('title',$data['title'])
|
|
|
+ ->where('top_depart_id',$data['top_depart_id'])
|
|
|
->where('id','<>',$data['id'])
|
|
|
->where('del_time',0)
|
|
|
->exists();
|
|
@@ -442,7 +461,7 @@ class EmployeeService extends Service
|
|
|
|
|
|
$role = Role::where('id',$data['role_id'])
|
|
|
->where('del_time',0)
|
|
|
- ->select('id','code','title')
|
|
|
+ ->select('id','title')
|
|
|
->first();
|
|
|
if(empty($role)) return [false,'角色不存在或已被删除'];
|
|
|
$role = $role->toArray();
|
|
@@ -498,14 +517,50 @@ class EmployeeService extends Service
|
|
|
$model->is_main = $value['is_main'];
|
|
|
$model->basic_type_id = $value['basic_type_id'] ?? 0;
|
|
|
$model->save();
|
|
|
+ $depart_id = $model->id;
|
|
|
+ if(empty($depart_id)) {
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,'部门新建失败'];
|
|
|
+ }
|
|
|
|
|
|
if(empty($value['parent_id'])){
|
|
|
$m = new Storehouse();
|
|
|
$m->title = $value['title'];
|
|
|
- $m->depart_id = $model->id;
|
|
|
- $m->top_depart_id = $model->id;
|
|
|
+ $m->depart_id = $depart_id;
|
|
|
+ $m->top_depart_id = $depart_id;
|
|
|
$m->crt_id = $user['id'];
|
|
|
$m->save();
|
|
|
+ if(empty($m->id)) {
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,'仓库生成失败'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $employee = new Employee();
|
|
|
+ $number = "admin" . $value['code'];
|
|
|
+ $employee->number = $number;
|
|
|
+ $employee->emp_name = $value['title'] . "管理员账号";
|
|
|
+ $employee->entry_time = date('Y-m-d');
|
|
|
+ $employee->state = 1;
|
|
|
+ $employee->crt_id = $user['id'];
|
|
|
+ $employee->is_admin = 1;
|
|
|
+ $employee->account = $number;
|
|
|
+ $employee->password = Hash::make("password");
|
|
|
+ $employee->is_manager = 1;
|
|
|
+ $employee->save();
|
|
|
+ if(empty($employee->id)) {
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,'管理员账号生成失败'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $depart = new EmployeeDepartPermission();
|
|
|
+ $depart->employee_id = $employee->id;
|
|
|
+ $depart->depart_id = $depart_id;
|
|
|
+ $depart->save();
|
|
|
+
|
|
|
+ if(empty($depart->id)) {
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,'管理员账号部门关联生成失败'];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -569,7 +624,7 @@ class EmployeeService extends Service
|
|
|
if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
|
|
|
|
|
|
$list = $model->get()->toArray();
|
|
|
- $list = $this->fillDepartList($list);
|
|
|
+ $list = $this->fillDepartList($list, $user);
|
|
|
$list_tree = $list;
|
|
|
if(! empty($list_tree)) {
|
|
|
$list_tree = $this->makeTree(0,$list_tree);
|
|
@@ -579,15 +634,17 @@ class EmployeeService extends Service
|
|
|
return [200,['data' => $list,'tree' => $list_tree]];
|
|
|
}
|
|
|
|
|
|
- public function fillDepartList($list){
|
|
|
+ public function fillDepartList($list,$user){
|
|
|
if(empty($list)) return $list;
|
|
|
|
|
|
$basic = BasicType::where('del_time',0)
|
|
|
->whereIn('id', array_unique(array_column($list,'basic_type_id')))
|
|
|
->pluck('title','id')->toArray();
|
|
|
|
|
|
+ $is_main = EmployeeService::isMain($user['id']);
|
|
|
foreach ($list as $key => $value){
|
|
|
$list[$key]['basic_type_title'] = $basic[$value['basic_type_id']] ?? '';
|
|
|
+ $list[$key]['is_show_basic_type'] = $is_main;
|
|
|
}
|
|
|
|
|
|
return $list;
|
|
@@ -1009,10 +1066,10 @@ class EmployeeService extends Service
|
|
|
/**
|
|
|
* 获取登录账号的角色的菜单
|
|
|
* @param $role_id
|
|
|
- * @param $user_id
|
|
|
+ * @param $user
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function getMenuByRole($role_id,$user_id){
|
|
|
+ public function getMenuByRole($role_id,$user){
|
|
|
$menu = SysMenu::where('del_time',0)->select('id')->get()->toArray();
|
|
|
$button = SysMenuButton::where('del_time',0)->select('id','menu_id')->get()->toArray();
|
|
|
$button_map = [];
|
|
@@ -1020,7 +1077,7 @@ class EmployeeService extends Service
|
|
|
$button_map[$value['menu_id']][] = $value['id'];
|
|
|
}
|
|
|
$object = [];//返回的模型
|
|
|
- if($user_id == Employee::SPECIAL_ADMIN){
|
|
|
+ if($user['id'] == Employee::SPECIAL_ADMIN || $user['is_manager']){
|
|
|
//超级管理员
|
|
|
foreach ($menu as $value){
|
|
|
$object[] = [
|
|
@@ -1141,7 +1198,7 @@ class EmployeeService extends Service
|
|
|
'title' => $value['title'],
|
|
|
];
|
|
|
$map[$value['depart_id']] = $value['depart_id'];
|
|
|
- if(! empty($tmp['is_main']) && ! $is_all_depart) $is_all_depart = 1;
|
|
|
+ if(! empty($value['is_main']) && ! $is_all_depart) $is_all_depart = 1;
|
|
|
}else{
|
|
|
$t = self::getTopParentId($value['depart_id'],$list);
|
|
|
if($t && isset($depart_map[$t])) {
|