| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- // +----------------------------------------------------------------------
- // | Description: 组织架构
- // +----------------------------------------------------------------------
- // | Author:
- // +----------------------------------------------------------------------
-
- namespace app\admin\model;
-
- use app\admin\controller\ApiCommon;
- use app\admin\model\Common;
- use think\Db;
-
- class Structure extends Common
- {
-
- /**
- * 为了数据库的整洁,同时又不影响Model和Controller的名称
- * 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
- */
- protected $name = 'admin_structure';
-
- /**
- * [getDataList 获取列表]
- * @return [array]
- */
- public function getDataList($type='')
- {
- $cat = new \com\Category('admin_structure', array('id', 'pid', 'name', 'title'));
- $data = $cat->getList('', 0, 'id');
- // 若type为tree,则返回树状结构
- if ($type == 'tree') {
- $tree = new \com\Tree();
- $data = $tree->list_to_tree($data, 'id', 'pid', 'child', 0, true, array(''));
- }
-
- foreach ($data as $k=>$v){
- $data[$k]['owner_user_name']=foreachData('admin_structure',$v['owner_user_id'])?:null;
- }
- return $data;
- }
-
- /*
- *根据字符串展示参与部门 use by work
- *add by yykun
- */
- public function getDataByStr($idstr)
- {
- $isArr = stringToArray($idstr);
- if (!$isArr) {
- return false;
- }
- $list = $this->field('id as structure_id,name')->where(['id' => ['in',$isArr]])->select();
- return $list;
- }
-
- /*
- *根据部门ID获取信息 use by work
- *add by yykun
- */
- public function getDataByID( $id ='')
- {
- $det = Db::name('AdminStructure')->where('id ='.$id)->find();
- return $det;
- }
-
- public function delStrById($id)
- {
- if (!$id) {
- $this->error = '删除失败';
- return false;
- }
- $dataInfo = $this->getDataByID($id);
- if (empty($dataInfo['pid'])) {
- $this->error = '删除失败';
- return false;
- }
- //部门是否被使用
- $allStrIds = [];
- $allStrIds[] = $id;
- $allSubStrIds = $this->getAllChild($id);
- $allStrIds = array_merge($allStrIds, $allSubStrIds); //全部关联部门(包含下属部门)
- $resUser = db('AdminUser')->where(['structure_id' => ['in',$allStrIds]])->find();
- if ($resUser) {
- $this->error = '该部门或其下属部门已存在员工,不能删除';
- return false;
- }
- $resDel = $this->delDataById($id, true);
- if (!$resDel) {
- $this->error = '删除失败';
- return false;
- } else {
- $apiCommon = new ApiCommon();
- $userInfo = $apiCommon->userInfo;
- $content='删除了部门:'.$dataInfo['name'];
- # 添加记录
- SystemActionLog($userInfo['id'], 'admin_structure','structures', $id,'delete', $dataInfo['name'], '', '', $content);
- return true;
- }
- }
-
- /**
- * [getStructureNameByArr 根据主键获取详情]
- * @param string $id [主键]
- * @return [array]
- */
- public function getStructureNameByArr($ids = [])
- {
- if (!is_array($ids)) {
- $idArr[] = $ids;
- } else {
- $idArr = $ids;
- }
- $data = $this->where(['id' => array('in', $idArr)])->column('name');
- return $data ? : [];
- }
-
- /*
- *根据字符串展示参与部门 use by work
- *add by yykun
- */
- public function getListByStr($str)
- {
- $idArr = stringToArray($str);
- $list = $this->field('id,name')->where(['id' => ['in',$idArr]])->select();
- return $list;
- }
- }
|