123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- <?php
- namespace app\controller;
- use app\BaseController;
- use app\model\Account;
- use app\model\AccountCompany;
- use think\Exception;
- use think\facade\Db;
- use think\facade\Validate;
- //【组织架构】
- class CompanyItem extends BaseController
- {
- //列表
- public function getList()
- {
- $post = $this->request->only(['pid' => '', 'name' => '', 'nickname' => '', 'companyNo' => ''], 'post', 'trim');
- $condition = [['is_del', '=', 0]];
- $depart = [['a.is_del', '=', 0]];
- if ($post['pid'] !== '') $condition[] = ["pid", "=", $post['pid']];
- if ($post['name'] != "") $condition[] = ["name", "like", "%{$post['name']}%"];
- if ($post['pid'] === '' && $post['name'] == '' && $post['nickname'] == '') $condition[] = ["pid", "=", 0];
- if ($post['nickname'] != '') {
- $is = Db::name("account")
- ->alias('a')
- ->leftJoin('account_company b', 'b.account_id=a.id')
- ->leftJoin('user c', 'c.account_id=a.id')
- ->where('a.is_del', 0)
- ->whereLike('c.nickname', '%' . $post['nickname'] . '%')
- ->column('b.itemid');
- if (empty($is)) return json_show(1004, "未找到数据");
- $condition[] = ["id", "in", $is];
- }
- $pidlist = Db::name("company_item")
- ->where($condition)
- ->column("pid");
- if (!empty($pidlist)) $depart[] = [["b.itemid", "in", $pidlist]];
- else {
- if ($post['pid'] === "") $depart[] = ['b.itemid', '=', 0];
- else $depart[] = ['b.itemid', '=', $post['pid']];
- }
- $item = Db::name("account")
- ->alias('a')
- ->field('a.id account_id,c.nickname,b.itemid,a.is_del,a.status,b.position')
- ->leftJoin('account_company b', 'b.account_id=a.id')
- ->leftJoin('user c', 'c.account_id=a.id')
- ->where($depart)
- ->select()
- ->toArray();
- $list = Db::name("company_item")
- ->where($condition)
- ->select()
- ->toArray();
- return json_show(0, '获取成功', ["depart" => $list, "item" => $item]);
- }
- //添加
- public function add()
- {
- $param = $this->request->only([
- 'companyNo',
- 'name',
- 'pid',
- 'level' => 1,
- 'weight' => 1,
- ], 'post', 'trim');
- $val = Validate::rule([
- 'companyNo|所属企业' => 'require|max:255',
- 'name|部门名称' => 'require|max:255',
- 'pid|父级id' => 'require|number|gt:0',
- 'level|部门层级' => 'number|gt:0',
- 'weight|排序权重' => 'number|gt:0',
- ]);
- if ($val->check($param) == false) return json_show(1004, $val->getError());
- Db::startTrans();
- try {
- $tmp = Db::name('company_item')
- ->field('id')
- ->where(["is_del" => 0, "name" => $param['name'], 'companyNo' => $param['companyNo']])
- ->findOrEmpty();
- if (!empty($tmp)) throw new Exception('部门名称已存在');
- $spid = ['depart_link' => ''];
- if ($param['pid'] != 0) {
- $spid = Db::name('company_item')
- ->field('depart_link')
- ->where(['id' => $param['pid'], 'is_del' => 0])
- ->find();
- if (empty($spid)) throw new Exception('父级数据不能为空');
- }
- $id = Db::name('company_item')
- ->insertGetId([
- "name" => $param['name'],
- "pid" => $param['pid'],
- "level" => $param['level'],
- "weight" => $param['weight'],
- "is_del" => 0,
- 'companyNo' => $param['companyNo'],
- "addtime" => date("Y-m-d H:i:s"),
- "updatetime" => date("Y-m-d H:i:s"),
- ]);
- $depart_link = $spid['depart_link'] . "{$id}-";
- $level = explode('-', $depart_link);
- $level = array_filter($level);
- $level = count($level);
- Db::name('company_item')
- ->where('id', $id)
- ->update([
- 'depart_link' => $depart_link,
- 'level' => $level
- ]);
- Db::commit();
- return json_show(0, '添加成功');
- } catch (Exception $e) {
- Db::rollback();
- return json_show(1002, '添加失败,' . $e->getMessage());
- }
- }
- //编辑
- public function update()
- {
- $param = $this->request->only(['id', 'companyNo', 'name', 'pid', 'level' => 1, 'weight' => 1,], 'post', 'trim');
- $val = Validate::rule([
- 'id' => 'require|number|gt:0',
- 'companyNo|所属企业' => 'require|max:255',
- 'name|部门名称' => 'require|max:255',
- 'pid|父级id' => 'require|number|gt:0',
- 'level|部门层级' => 'number|gt:0',
- 'weight|排序权重' => 'number|gt:0',
- ]);
- if ($val->check($param) == false) return json_show(1004, $val->getError());
- Db::startTrans();
- try {
- $tmp = Db::name("company_item")
- ->field('id')
- ->where(['id' => $param['id'], 'is_del' => 0])
- ->findOrEmpty();
- if (empty($tmp)) throw new Exception('部门信息不存在');
- $tmp = Db::name('company_item')
- ->field('id')
- ->where(["is_del" => 0, "name" => $param['name'], 'companyNo' => $param['companyNo']])
- ->where('id', '<>', $param['id'])
- ->findOrEmpty();
- if (!empty($tmp)) throw new Exception('部门名称已存在');
- $spid = ['depart_link' => ''];
- if ($param['pid'] != 0) {
- $spid = Db::name('company_item')
- ->field('depart_link')
- ->where(['id' => $param['pid'], 'is_del' => 0])
- ->find();
- if (empty($spid)) throw new Exception('父级数据不能为空');
- }
- Db::name('company_item')
- ->where(['id' => $param['id'], 'is_del' => 0])
- ->update([
- "name" => $param['name'],
- "pid" => $param['pid'],
- "level" => $param['level'],
- "weight" => $param['weight'],
- 'companyNo' => $param['companyNo'],
- "updatetime" => date("Y-m-d H:i:s"),
- ]);
- $depart_link = $spid['depart_link'] . "{$param['id']}-";
- $level = explode('-', $depart_link);
- $level = array_filter($level);
- $level = count($level);
- Db::name('company_item')
- ->where('id', $param['id'])
- ->update([
- 'depart_link' => $depart_link,
- 'level' => $level
- ]);
- Db::commit();
- return json_show(0, '信息更新成功');
- } catch (Exception $e) {
- Db::rollback();
- return json_show(1002, '信息更新失败,' . $e->getMessage());
- }
- }
- //查询,层级列表
- public function query()
- {
- $param = $this->request->filter('trim')->only(['companyNo'=>''],'post');
- $where=[['pid','=',0],['is_del','=',0]];
- if($param['companyNo'] != '') $where[]=['companyNo','=',$param['companyNo']];
- //所有已经存在的公司
- $companyNo = Db::name('company_item')
- ->field('companyNo')
- ->where($where)
- ->group('companyNo')
- ->buildSql();
- $company = Db::name('headquarters')
- ->field('id,code,name,type')
- ->where('is_del', 0)
- ->where('code IN ' . $companyNo)
- ->select()
- ->toArray();
- foreach ($company as &$value) {
- $value['child'] = Db::name('company_item')
- ->where(['pid' => 0, 'is_del' => 0, 'companyNo' => $value['code']])
- ->order("weight desc")
- ->select()
- ->toArray();
- foreach ($value['child'] as &$item) {
- $item = crea($item);
- }
- }
- return json_show(0, '获取成功', $company);
- }
- //删除
- public function delete()
- {
- $id = $this->request->filter('trim')->post('id/d', 0);
- $rs = Db::name("company_item")
- ->where(['id' => $id, 'is_del' => 0])
- ->update(['is_del' => 1, 'updatetime' => date('Y-m-d H:i:s')]);
- return $rs ? json_show(0, '删除成功') : json_show(1003, '删除失败');
- }
- //启禁用
- public function status()
- {
- $id = $this->request->filter('trim')->post('id/d', 0);
- $rs = Db::name("company_item")
- ->field('id,status')
- ->where(['id' => $id, 'is_del' => 0])
- ->findOrEmpty();
- if (empty($rs)) return json_show(1005, '未找到部门');
- $status = $rs['status'] == 1 ? 0 : 1;
- $rs = Db::name("company_item")
- ->where(['id' => $id, 'is_del' => 0])
- ->update(['status' => $status, 'updatetime' => date('Y-m-d H:i:s')]);
- return $rs ? json_show(0, '更新成功') : json_show(1003, '更新失败');
- }
- //改变职位
- public function userp()
- {
- $post = $this->request->only(['account_id', 'itemid', 'position'], 'post', 'trim');
- $val = Validate::rule([
- 'account_id|账户id' => 'require|number|gt:0',
- 'itemid|部门id' => 'require|number|gt:0',
- 'position|职位' => 'require|number|in:1,2',
- ]);
- if ($val->check($post) == false) return json_show(1005, $val->getError());
- $rs = Db::name('account_item')
- ->where(['account_id' => $post['account_id'], 'itemid' => $post['itemid']])
- ->update(['position' => $post['position'], 'updatetime' => date('Y-m-d H:i:s')]);
- return $rs ? json_show(0, '修改成功') : json_show(1005, '修改失败');
- }
- }
|