diff --git a/app/adminapi/controller/dept/DeptController.php b/app/adminapi/controller/dept/DeptController.php index bd5db484a..bc078a1db 100755 --- a/app/adminapi/controller/dept/DeptController.php +++ b/app/adminapi/controller/dept/DeptController.php @@ -79,8 +79,8 @@ class DeptController extends BaseAdminController public function delete() { $params = (new DeptValidate())->post()->goCheck('delete'); - DeptLogic::delete($params); - return $this->success('删除成功', [], 1, 1); + $result = DeptLogic::delete($params); + return $result ? $this->success('删除成功', [], 1, 1) : $this->fail(DeptLogic::getError()); } diff --git a/app/adminapi/controller/dept/JobsController.php b/app/adminapi/controller/dept/JobsController.php index 0f8b6222f..0d28ec879 100755 --- a/app/adminapi/controller/dept/JobsController.php +++ b/app/adminapi/controller/dept/JobsController.php @@ -18,6 +18,7 @@ use app\adminapi\controller\BaseAdminController; use app\adminapi\lists\dept\JobsLists; use app\adminapi\logic\dept\JobsLogic; use app\adminapi\validate\dept\JobsValidate; +use app\common\model\dept\Jobs; /** @@ -97,22 +98,16 @@ class JobsController extends BaseAdminController $result = JobsLogic::detail($params); return $this->data($result); } - - - /** - * @notes 获取岗位数据 - * @return \think\response\Json - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - * @author 段誉 - * @date 2022/10/13 10:31 - */ - public function all() - { - $result = JobsLogic::getAllData(); - return $this->data($result); - } - + + //某个部门下面的岗位 + public function listToDept(): \think\response\Json + { + $params = $this->request->get(['dept_id']); + if(empty($params['dept_id'])){ + return $this->fail('参数错误'); + } + $data = Jobs::field('id,name,status,sort,create_time')->where('dept_id',$params['dept_id'])->select()->toArray(); + return $this->success('请求成功',$data); + } } \ No newline at end of file diff --git a/app/adminapi/controller/dept/OrgsController.php b/app/adminapi/controller/dept/OrgsController.php index 962f17258..019cf1a32 100644 --- a/app/adminapi/controller/dept/OrgsController.php +++ b/app/adminapi/controller/dept/OrgsController.php @@ -20,6 +20,7 @@ use app\adminapi\controller\BaseAdminController; use app\adminapi\lists\dept\OrgsLists; use app\adminapi\logic\dept\OrgsLogic; use app\adminapi\validate\dept\OrgsValidate; +use app\common\model\dept\Orgs; /** @@ -86,8 +87,8 @@ class OrgsController extends BaseAdminController public function delete() { $params = (new OrgsValidate())->post()->goCheck('delete'); - OrgsLogic::delete($params); - return $this->success('删除成功', [], 1, 1); + $result = OrgsLogic::delete($params); + return $result ? $this->success('删除成功', [], 1, 1) : $this->fail(OrgsLogic::getError()); } @@ -104,5 +105,10 @@ class OrgsController extends BaseAdminController return $this->data($result); } - + //获取所有组织 + public function getAll(): \think\response\Json + { + $data = Orgs::field('id,name,master,status,create_time')->select(); + return $this->success('请求成功',$data->toArray()); + } } \ No newline at end of file diff --git a/app/adminapi/lists/dept/DeptLists.php b/app/adminapi/lists/dept/DeptLists.php index 7b99c5c40..cfc20b0fb 100644 --- a/app/adminapi/lists/dept/DeptLists.php +++ b/app/adminapi/lists/dept/DeptLists.php @@ -39,7 +39,7 @@ $where[] = ['org_id','in',$orgs]; } return Dept::where($this->searchWhere)->where($where) - ->field('id,name,org_id,leader,mobile,status,sort') + ->field('id,name,org_id,leader,mobile,status,sort,create_time') ->limit($this->limitOffset, $this->limitLength) ->order(['sort' => 'desc', 'id' => 'desc']) ->select()->each(function($item){ diff --git a/app/adminapi/lists/dept/JobsLists.php b/app/adminapi/lists/dept/JobsLists.php index c33533def..f368d651a 100755 --- a/app/adminapi/lists/dept/JobsLists.php +++ b/app/adminapi/lists/dept/JobsLists.php @@ -15,8 +15,8 @@ namespace app\adminapi\lists\dept; use app\adminapi\lists\BaseAdminDataLists; -use app\common\lists\ListsExcelInterface; use app\common\lists\ListsSearchInterface; +use app\common\model\dept\Dept; use app\common\model\dept\Jobs; /** @@ -24,7 +24,7 @@ use app\common\model\dept\Jobs; * Class JobsLists * @package app\adminapi\lists\dept */ -class JobsLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface +class JobsLists extends BaseAdminDataLists implements ListsSearchInterface { /** @@ -36,8 +36,8 @@ class JobsLists extends BaseAdminDataLists implements ListsSearchInterface,Lists public function setSearch(): array { return [ - '%like%' => ['name'], - '=' => ['code', 'status'] + '%like%' => ['name','dept_name'], + '=' => ['status'] ]; } @@ -50,14 +50,21 @@ class JobsLists extends BaseAdminDataLists implements ListsSearchInterface,Lists */ public function lists(): array { - $lists = Jobs::where($this->searchWhere) - ->append(['status_desc']) - ->limit($this->limitOffset, $this->limitLength) - ->order(['sort' => 'desc', 'id' => 'desc']) - ->select() - ->toArray(); - - return $lists; + $params = $this->request->param(); + $where = []; + if(isset($params['dept_name']) && $params['dept_name'] != ''){ + $deps = Dept::where('name','like','%'.$params['dept_name'].'%')->column('id'); + $where[] = ['dept_id','in',$deps]; + } + return Jobs::where($this->searchWhere)->where($where)->field('id,dept_id,name,status,sort,create_time') + ->limit($this->limitOffset, $this->limitLength) + ->order(['sort' => 'desc', 'id' => 'desc']) + ->select()->each(function($item){ + $dept = Dept::where('id',$item['dept_id'])->findOrEmpty(); + $item['dept_name'] = $dept->isEmpty() ? '' : $dept['name']; + return $item; + }) + ->toArray(); } @@ -69,37 +76,13 @@ class JobsLists extends BaseAdminDataLists implements ListsSearchInterface,Lists */ public function count(): int { - return Jobs::where($this->searchWhere)->count(); - } - - - /** - * @notes 导出文件名 - * @return string - * @author 段誉 - * @date 2022/11/24 16:17 - */ - public function setFileName(): string - { - return '岗位列表'; - } - - - /** - * @notes 导出字段 - * @return string[] - * @author 段誉 - * @date 2022/11/24 16:17 - */ - public function setExcelFields(): array - { - return [ - 'code' => '岗位编码', - 'name' => '岗位名称', - 'remark' => '备注', - 'status_desc' => '状态', - 'create_time' => '添加时间', - ]; + $params = $this->request->param(); + $where = []; + if(isset($params['dept_name']) && $params['dept_name'] != ''){ + $deps = Dept::where('name','like','%'.$params['dept_name'].'%')->column('id'); + $where[] = ['dept_id','in',$deps]; + } + return Jobs::where($this->searchWhere)->where($where)->count(); } } \ No newline at end of file diff --git a/app/adminapi/lists/dept/OrgsLists.php b/app/adminapi/lists/dept/OrgsLists.php index 4c29509dd..aef7d4565 100644 --- a/app/adminapi/lists/dept/OrgsLists.php +++ b/app/adminapi/lists/dept/OrgsLists.php @@ -56,7 +56,7 @@ class OrgsLists extends BaseAdminDataLists implements ListsSearchInterface public function lists(): array { return Orgs::where($this->searchWhere) - ->field(['id', 'name', 'master', 'status']) + ->field(['id', 'name', 'master', 'status','create_time']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select() diff --git a/app/adminapi/logic/dept/DeptLogic.php b/app/adminapi/logic/dept/DeptLogic.php index 8df0f9216..589694d19 100755 --- a/app/adminapi/logic/dept/DeptLogic.php +++ b/app/adminapi/logic/dept/DeptLogic.php @@ -83,9 +83,12 @@ class DeptLogic extends BaseLogic */ public static function delete(array $params) { - $jobs = Jobs::where('dept_id',$params['id'])->column('id'); - Jobs::destroy($jobs); - Dept::destroy($params['id']); + $jobs = Jobs::where('dept_id',$params['id'])->findOrEmpty(); + if(!$jobs->isEmpty()){ + self::setError('当前部门下存在岗位数据,不能删除'); + return false; + } + return Dept::destroy($params['id']); } @@ -98,7 +101,7 @@ class DeptLogic extends BaseLogic */ public static function detail($params): array { - $dept = Dept::field('id,name,org_id,leader,mobile,status,sort')->where('id',$params['id'])->findOrEmpty(); + $dept = Dept::field('id,name,org_id,leader,mobile,status,sort,create_time')->where('id',$params['id'])->findOrEmpty(); if($dept->isEmpty()){ return []; } diff --git a/app/adminapi/logic/dept/JobsLogic.php b/app/adminapi/logic/dept/JobsLogic.php index 925ea55a0..b1aa31833 100755 --- a/app/adminapi/logic/dept/JobsLogic.php +++ b/app/adminapi/logic/dept/JobsLogic.php @@ -17,6 +17,7 @@ namespace app\adminapi\logic\dept; use app\common\enum\YesNoEnum; use app\common\logic\BaseLogic; use app\common\model\article\Article; +use app\common\model\dept\Dept; use app\common\model\dept\Jobs; use app\common\service\FileService; @@ -39,11 +40,10 @@ class JobsLogic extends BaseLogic public static function add(array $params) { Jobs::create([ + 'dept_id' => $params['dept_id'], 'name' => $params['name'], - 'code' => $params['code'], 'sort' => $params['sort'] ?? 0, 'status' => $params['status'], - 'remark' => $params['remark'] ?? '', ]); } @@ -60,11 +60,10 @@ class JobsLogic extends BaseLogic try { Jobs::update([ 'id' => $params['id'], + 'dept_id' => $params['dept_id'], 'name' => $params['name'], - 'code' => $params['code'], 'sort' => $params['sort'] ?? 0, 'status' => $params['status'], - 'remark' => $params['remark'] ?? '', ]); return true; } catch (\Exception $e) { @@ -95,25 +94,13 @@ class JobsLogic extends BaseLogic */ public static function detail($params) : array { - return Jobs::findOrEmpty($params['id'])->toArray(); - } - - - /** - * @notes 岗位数据 - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - * @author 段誉 - * @date 2022/10/13 10:30 - */ - public static function getAllData() - { - return Jobs::where(['status' => YesNoEnum::YES]) - ->order(['sort' => 'desc', 'id' => 'desc']) - ->select() - ->toArray(); + $jobs = Jobs::field('id,dept_id,name,status,sort,create_time')->where('id',$params['id'])->findOrEmpty(); + if($jobs->isEmpty()){ + return []; + } + $dept = Dept::where('id',$jobs['dept_id'])->findOrEmpty(); + $jobs['dept_name'] = $dept->isEmpty() ? '' : $dept['name']; + return $jobs->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/logic/dept/OrgsLogic.php b/app/adminapi/logic/dept/OrgsLogic.php index d564bf7ec..cdaf19933 100644 --- a/app/adminapi/logic/dept/OrgsLogic.php +++ b/app/adminapi/logic/dept/OrgsLogic.php @@ -15,6 +15,7 @@ namespace app\adminapi\logic\dept; +use app\common\model\dept\Dept; use app\common\model\dept\Orgs; use app\common\logic\BaseLogic; use think\facade\Db; @@ -92,6 +93,12 @@ class OrgsLogic extends BaseLogic */ public static function delete(array $params): bool { + //判断组织下面是否有部门 + $dept = Dept::where('org_id',$params['id'])->findOrEmpty(); + if(!$dept->isEmpty()){ + self::setError('当前组织下存在部门,不能删除'); + return false; + } return Orgs::destroy($params['id']); } @@ -105,6 +112,6 @@ class OrgsLogic extends BaseLogic */ public static function detail($params): array { - return Orgs::findOrEmpty($params['id'])->toArray(); + return Orgs::field('id,name,master,status,create_time')->findOrEmpty($params['id'])->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/validate/dept/DeptValidate.php b/app/adminapi/validate/dept/DeptValidate.php index 8518663f2..8e1c4516a 100755 --- a/app/adminapi/validate/dept/DeptValidate.php +++ b/app/adminapi/validate/dept/DeptValidate.php @@ -32,7 +32,7 @@ class DeptValidate extends BaseValidate protected $rule = [ 'id' => 'require|checkDept', 'org_id' => 'require|checkOrg', - 'name' => 'require|checkUnique|length:1,30', + 'name' => 'require|length:1,30', 'leader' => 'require', 'mobile' => 'require|mobile', 'status' => 'require|in:0,1', @@ -62,7 +62,7 @@ class DeptValidate extends BaseValidate */ public function sceneAdd() { - return $this->remove('id', true); + return $this->remove('id', true)->append('name','checkUniqueByAdd'); } @@ -86,7 +86,7 @@ class DeptValidate extends BaseValidate */ public function sceneEdit() { - return $this->only(['id','org_id','name','leader','mobile','status']); + return $this->only(['id','org_id','name','leader','mobile','status'])->append('name','checkUniqueByEdit');; } @@ -102,15 +102,23 @@ class DeptValidate extends BaseValidate } //验证唯一 - public function checkUnique($value,$rule,$data): bool|string + public function checkUniqueByAdd($value,$rule,$data): bool|string { - if(!empty($data['id'])) return true; $dep = Dept::where('org_id',$data['org_id'])->where('name',$data['name'])->findOrEmpty(); if(!$dep->isEmpty()){ return '部门已存在'; } return true; } + + public function checkUniqueByEdit($value,$rule,$data): bool|string + { + $dep = Dept::where('org_id',$data['org_id'])->where('name',$data['name'])->where('id','<>',$data['id'])->findOrEmpty(); + if(!$dep->isEmpty()){ + return '部门已存在'; + } + return true; + } //校验组织 public function checkOrg($value): bool|string diff --git a/app/adminapi/validate/dept/JobsValidate.php b/app/adminapi/validate/dept/JobsValidate.php index 96c61fd90..a020685a8 100755 --- a/app/adminapi/validate/dept/JobsValidate.php +++ b/app/adminapi/validate/dept/JobsValidate.php @@ -17,6 +17,7 @@ namespace app\adminapi\validate\dept; use app\common\model\auth\Admin; use app\common\model\auth\AdminJobs; +use app\common\model\dept\Dept; use app\common\model\dept\Jobs; use app\common\validate\BaseValidate; @@ -31,22 +32,20 @@ class JobsValidate extends BaseValidate { protected $rule = [ 'id' => 'require|checkJobs', - 'name' => 'require|unique:'.Jobs::class.'|length:1,50', - 'code' => 'require|unique:'.Jobs::class, + 'dept_id' => 'require|checkDept', + 'name' => 'require|length:1,50', 'status' => 'require|in:0,1', 'sort' => 'egt:0', ]; protected $message = [ 'id.require' => '参数缺失', + 'dept_id.require' => '请选择部门', 'name.require' => '请填写岗位名称', 'name.length' => '岗位名称长度须在1-50位字符', - 'name.unique' => '岗位名称已存在', - 'code.require' => '请填写岗位编码', - 'code.unique' => '岗位编码已存在', + 'status.require' => '请选择岗位状态', + 'status.in' => '岗位状态值错误', 'sort.egt' => '排序值不正确', - 'status.require' => '请选择岗位状态', - 'status.in' => '岗位状态值错误', ]; @@ -58,7 +57,7 @@ class JobsValidate extends BaseValidate */ public function sceneAdd() { - return $this->remove('id', true); + return $this->remove('id', true)->append('name','checkUniqueByAdd'); } @@ -76,6 +75,7 @@ class JobsValidate extends BaseValidate public function sceneEdit() { + return $this->append('name','checkUniqueByEdit'); } @@ -87,8 +87,18 @@ class JobsValidate extends BaseValidate */ public function sceneDelete() { - return $this->only(['id'])->append('id', 'checkAbleDetele'); + return $this->only(['id']); } + + //验证部门 + public function checkDept($value): bool|string + { + $dept = Dept::findOrEmpty($value); + if ($dept->isEmpty()) { + return '部门不存在'; + } + return true; + } /** @@ -106,22 +116,25 @@ class JobsValidate extends BaseValidate } return true; } - - - /** - * @notes 校验能否删除 - * @param $value - * @return bool|string - * @author 段誉 - * @date 2022/5/26 14:22 - */ - public function checkAbleDetele($value) - { - $check = AdminJobs::where(['jobs_id' => $value])->findOrEmpty(); - if (!$check->isEmpty()) { - return '已关联管理员,暂不可删除'; - } - return true; - } + + //验证唯一 + public function checkUniqueByAdd($value,$rule,$data): bool|string + { + $jobs = Jobs::where('dept_id',$data['dept_id'])->where('name',$data['name'])->findOrEmpty(); + if(!$jobs->isEmpty()){ + return '岗位已存在'; + } + return true; + } + + public function checkUniqueByEdit($value,$rule,$data): bool|string + { + $jobs = Jobs::where('dept_id',$data['dept_id'])->where('name',$data['name'])->where('id','<>',$data['id'])->findOrEmpty(); + if(!$jobs->isEmpty()){ + return '岗位已存在'; + } + return true; + } + } \ No newline at end of file diff --git a/app/adminapi/validate/dept/OrgsValidate.php b/app/adminapi/validate/dept/OrgsValidate.php index 94d436279..a22698975 100644 --- a/app/adminapi/validate/dept/OrgsValidate.php +++ b/app/adminapi/validate/dept/OrgsValidate.php @@ -15,6 +15,7 @@ namespace app\adminapi\validate\dept; +use app\common\model\dept\Orgs; use app\common\validate\BaseValidate; @@ -58,7 +59,7 @@ class OrgsValidate extends BaseValidate */ public function sceneAdd() { - return $this->only(['name','master','status']); + return $this->only(['name','master','status'])->append('name','checkUniqueByAdd'); } @@ -70,7 +71,7 @@ class OrgsValidate extends BaseValidate */ public function sceneEdit() { - return $this->only(['id','name','master','status']); + return $this->only(['id','name','master','status'])->append('name','checkUniqueByEdit'); } @@ -96,5 +97,24 @@ class OrgsValidate extends BaseValidate { return $this->only(['id']); } + + //验证唯一 + public function checkUniqueByAdd($value,$rule,$data): bool|string + { + $org = Orgs::where('name',$data['name'])->findOrEmpty(); + if(!$org->isEmpty()){ + return '组织已存在'; + } + return true; + } + + public function checkUniqueByEdit($value,$rule,$data): bool|string + { + $org = Orgs::where('name',$data['name'])->where('id','<>',$data['id'])->findOrEmpty(); + if(!$org->isEmpty()){ + return '组织已存在'; + } + return true; + } } \ No newline at end of file diff --git a/app/common/model/dept/Jobs.php b/app/common/model/dept/Jobs.php index cfa63b7e9..d4ab8204b 100755 --- a/app/common/model/dept/Jobs.php +++ b/app/common/model/dept/Jobs.php @@ -28,17 +28,10 @@ class Jobs extends BaseModel use SoftDelete; protected $deleteTime = 'delete_time'; - - /** - * @notes 状态描述 - * @param $value - * @param $data - * @return string - * @author 段誉 - * @date 2022/5/25 18:03 - */ - public function getStatusDescAttr($value, $data) - { - return $data['status'] ? '正常' : '停用'; - } + + public function getStatusAttr($value): string + { + $status = [1=>'禁用',0=>'正常']; + return $status[$value]; + } } \ No newline at end of file