| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- <?php
- namespace app\admin\controller\qingdong\department;
- use addons\qingdong\model\Customer;
- use addons\qingdong\model\Staff as StaffModel;
- use addons\qingdong\model\StaffRole;
- use app\admin\model\AuthGroup;
- use app\admin\controller\qingdong\Base;
- use fast\Tree;
- use think\Db;
- use think\Exception;
- use app\admin\model\Admin;
- /**
- * 员工管理
- */
- class Staff extends Base {
- public function _initialize() {
- parent::_initialize();
- $this->model = new StaffModel();
- $this->childrenAdminIds = $this->auth->getChildrenAdminIds($this->auth->isSuperAdmin());
- $this->childrenGroupIds = $this->auth->getChildrenGroupIds($this->auth->isSuperAdmin());
- //角色组
- $groupList = collection(AuthGroup::where('id', 'in', $this->childrenGroupIds)->select())->toArray();
- Tree::instance()->init($groupList);
- $groupdata = [];
- if ($this->auth->isSuperAdmin()) {
- $result = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0));
- foreach ($result as $k => $v) {
- $groupdata[$v['id']] = $v['name'];
- }
- } else {
- $result = [];
- $groups = $this->auth->getGroups();
- foreach ($groups as $m => $n) {
- $childlist = Tree::instance()->getTreeList(Tree::instance()->getTreeArray($n['id']));
- $temp = [];
- foreach ($childlist as $k => $v) {
- $temp[$v['id']] = $v['name'];
- }
- $result[__($n['name'])] = $temp;
- }
- $groupdata = $result;
- }
- $this->view->assign('groupdata', $groupdata);
- }
- /**
- * 员工列表
- * @return string
- */
- public function index() {
- $this->request->filter(['strip_tags']);
- if ($this->request->isAjax()) {
- list($where, $sort, $order, $offset, $limit) = $this->buildparams();
- $wheres=[];
- $wheres['id']=['in',StaffModel::getMyStaffIds()];
- $list = $this->model->with(['parent','admin','staffrole'])
- ->where($where)->order($sort, $order)->paginate($limit);
- $row = $list->items();
- $result = array("total" => $list->total(), "rows" => $row);
- return json($result);
- }
- return $this->view->fetch();
- }
- /**
- * 添加员工
- * @return string
- */
- public function add() {
- if ($this->request->isAjax()) {
- $data = $this->request->post('row/a');
- $mobile=$data['mobile'];
- $count = StaffModel::where(['mobile'=>$mobile])->count();
- if($count > 0){
- $this->error('员工手机号已存在');
- }
- $newSalt = substr(md5(uniqid(true)), 0, 6);
- $newPassword = md5(md5($data['password']) . $newSalt);
- $data['salt'] = $newSalt;
- $data['password'] = $newPassword;
- $data['status'] = 1;
- if(empty($data['img'])){
- $data['img'] = '/assets/img/avatar.png'; //设置新管理员默认头像。
- }
- Db::startTrans();
- try {
- $group = $this->request->post("group/a");
- //过滤不允许的组别,避免越权
- $group = array_intersect($this->childrenGroupIds, $group);
- if (!$group) {
- exception(__('The parent group exceeds permission limit'));
- }
- $data['group_ids']=implode(',',$group);
- $result = $this->model->save($data);
- Db::commit();
- }catch (Exception $e){
- Db::rollback();
- $this->error($e->getMessage());
- }
- if (!$result) {
- $this->error('提交失败');
- }
- $this->success('提交成功');
- }
- $staffname = StaffModel::where([])->column('id,name');
- $staffs = ['' => '无'];
- foreach ($staffname as $id => $name) {
- $staffs[$id] = $name;
- }
- $this->view->assign('roles',StaffRole::where([])->column('name','id'));
- $this->view->assign('staffs', $staffs);
- return $this->view->fetch();
- }
- /**
- * 修改员工
- * @param null $ids
- * @return string
- */
- public function edit($ids = null) {
- $map['id'] = $ids;
- if ($this->request->isAjax()) {
- $data = $this->request->post('row/a');
- if($data['password']){
- $newSalt = substr(md5(uniqid(true)), 0, 6);
- $newPassword = md5(md5($data['password']) . $newSalt);
- $data['salt'] = $newSalt;
- $data['password'] = $newPassword;
- }else{
- unset($data['password']);
- }
- $mobile=$data['mobile'];
- $count = StaffModel::where(['mobile'=>$mobile,'id'=>['neq',$ids]])->count();
- if($count > 0){
- $this->error('员工手机号已存在');
- }
- if(empty($data['img'])){
- $data['img'] = '/assets/img/avatar.png'; //设置新管理员默认头像。
- }
- Db::startTrans();
- try {
- $group = $this->request->post("group/a",[]);
- //过滤不允许的组别,避免越权
- $group = array_intersect($this->childrenGroupIds, $group);
- if (!$group) {
- exception(__('The parent group exceeds permission limit'));
- }
- $data['group_ids']=implode(',',$group);
- $data['id']=$map['id'];
- $result=$this->model->save($data,$map);
- Db::commit();
- }catch (Exception $e){
- Db::rollback();
- $this->error($e->getMessage());
- }
- if (!$result) {
- $this->error('修改失败');
- }
- $this->success('修改成功');
- }
- $data = StaffModel::where($map)->find();
- $this->view->assign("row", $data);
- $staffname = StaffModel::where([])->column('id,name');
- $staffs = ['' => '无'];
- foreach ($staffname as $id => $name) {
- $staffs[$id] = $name;
- }
- $this->view->assign('roles',StaffRole::where([])->column('name','id'));
- $this->view->assign('staffs', $staffs);
- return $this->view->fetch();
- }
- /**
- * 删除员工
- */
- public function del($ids = null) {
- if ($this->request->isAjax()) {
- $map['id'] = array('in', $ids);
- $findinfo = StaffModel::where($map)->select();
- foreach($findinfo as $k=>$v){
- if($v['admin_id'] ==1){
- $this->error('管理员不可删除');
- }
- }
- $result = StaffModel::destroy($map);
- if (!$result) {
- $this->error('删除失败');
- }
- $cids = Customer::where(['owner_staff_id' => $ids])->column('id');
- try {
- foreach ($cids as $id) {
- Customer::moveSeas($id);
- }
- } catch (Exception $e) {
- $this->error($e->getMessage());
- }
- $this->success('删除成功');
- }
- return $this->view->fetch();
- }
- /**
- * 更新状态禁用账号
- */
- public function update_status() {
- $id = input('ids');
- $status = input('status', 2, 'intval');
- $staff = $this->model->where(['id' => $id])->find();
- if (empty($staff)) {
- $this->error('员工不存在');
- }
- if ($this->model->isUpdate(true)->save(['id' => $id, 'status' => $status])) {
- $this->success('操作成功');
- }
- $this->error('操作失败');
- }
- /**
- * 获取员工角色
- */
- public function getstaffrole(){
- $model=new StaffRole();
- $result = $model->where([])->field('id,name')->select();
- $searchlist = [];
- foreach ($result as $key => $value) {
- $searchlist[] = ['id' => $value['id'], 'name' => $value['name']];
- }
- $data = ['searchlist' => $searchlist];
- $this->success('', null, $data);
- }
- /**
- * 获取管理员账户
- */
- public function admin_username()
- {
- $params = input('name', '');
- $where['username'] = array('like', '%' . $params . '%');
- $list = Admin::where($where)->field('id,username as name')->select();
- $data['list'] = $list;
- return json_encode($data);
- }
- /**
- * 获取管理员邮箱
- */
- public function admin_email()
- {
- $params = input('name', '');
- $where['email'] = array('like', '%' . $params . '%');
- $list = Admin::where($where)->field('id,email as name')->select();
- $data['list'] = $list;
- return json_encode($data);
- }
- }
|