isAjax()){ // $where = isset($this->where['group_id']) ? ['id' => $this->where['group_id']] : []; $result = $odb->where($this->where)->order('id desc')->select(); foreach($result as $key=>$vo){ // 优化显示状态 if(1 == $vo['status']){ $result[$key]['status'] = '启用'; }else{ $result[$key]['status'] = '禁用'; } // 统计分组人数 $result[$key]['users_num'] = db('users')->where('organize_id', $vo['id'])->count(); // 生成操作按钮 $result[$key]['operate'] = $this->makeBtn($vo['id']); // 管理员名称 $admin = db('admins')->where('id', $vo['admin_id'])->field('user_name')->find(); $result[$key]['admin_name'] = isset($admin['user_name']) ? $admin['user_name'] : '暂无'; // 平台名称 $group = db('groups')->where('id', $vo['group_id'])->field('name')->find(); $result[$key]['group_name'] = isset($group['name']) ? $group['name'] : '暂无'; } $return['total'] = $odb->where($this->where)->count(); //总数据 $return['rows'] = $result; return json($return); } return $this->fetch(); } /** * 添加分组 */ public function addOrganize() { $adb = db('admins'); $rdb = db('role'); $odb = db('organize'); $gdb = db('groups'); if(request()->isPost()){ $param = input('post.'); $param['name'] = htmlentities($param['name']); $has = $odb->field('id')->where('name', $param['name'])->find(); if(!empty($has)){ return json(['code' => -1, 'data' => '', 'msg' => '该分组已经存在']); } // 检测客服的限制金额是否为正整数 if(!preg_match("/^[0-9]*$/",$param['money']) && !empty($param['money'])){ return json(['code' => -6, 'data' => '', 'msg' => '可充值总额度只能为正整数或为0']); } if(empty($param['group_id']) && $this->is_root){ return json(['code' => -4, 'data' => '', 'msg' => '请选择平台']); } elseif(empty($param['group_id']) && $this->role_name == '平台管理员') { $param['group_id'] = $this->where['group_id']; } // 减去平台的金额 $group = $gdb->where('id', $param['group_id'])->find(); if ($param['money'] > $group['money']) return json(['code' => -6, 'data' => '', 'msg' => '分配金额超出平台充值余额']); // 检测是否有平台管理员角色 $role = $rdb->where('name', '组长')->field('id')->find(); if (!$role) return json(['code' => -1, 'data' => '', 'msg' => "请先添加名称为'组长'的角色"]); $rule = "/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/"; if (!preg_match($rule, $param['password'])) { return json(['code' => -2, 'data' => '', 'msg' => '密码必须是8-16位的字母和数字组成!']); } $has = $adb->field('id')->where('user_name', $param['user_name'])->find(); if(!empty($has)){ return json(['code' => -1, 'data' => '', 'msg' => '该管理员已经存在']); } $param['date'] = date('Y-m-d H:i'); try{ // 先添加管理员 $admin_data = [ 'user_name' => $param['user_name'], 'password' => password_hash($param['password'], PASSWORD_DEFAULT), 'user_avatar' => config('img_take_prefix').'/static/common/images/avatar.png', 'status' => 1, ]; $add_admin = $adb->insertGetId($admin_data); db('admin_role')->insertGetId(['role_id' => $role['id'], 'admin_id' => $add_admin]); $param['admin_id'] = $add_admin; unset($param['user_name']); unset($param['password']); $add = $odb->insert($param); $gdb->where('id', $param['group_id'])->setDec('money', $param['money']); // 资金流动记录 $this->saveMoneyFlowLog($group['admin_id'], 'o_' . $add_admin, $param['money'], "'{$param['name']}'小组分配金额"); }catch(\Exception $e){ return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]); } LogRepository::write('分组管理', '成功添加分组--'.$param['name']); return json(['code' => 1, 'data' => '', 'msg' => '添加成功']); } $group = $gdb->where('status', 1)->order('id desc')->select(); $this->assign([ 'status' => config('kf_status'), 'group' => $group, ]); return $this->fetch('addOrganize'); } /** * 编辑分组 */ public function editOrganize() { $adb = db('admins'); $rdb = db('role'); $odb = db('organize'); $gdb = db('groups'); if(request()->isAjax()){ $param = input('post.'); $param['name'] = htmlentities($param['name']); $has = $odb->field('id, group_id')->where('name', $param['name'])->where('id', '<>', $param['id'])->find(); if(!empty($has)){ return json(['code' => -1, 'data' => '', 'msg' => '该分组已经存在']); } $info = $odb->where('id', $param['id'])->find(); // 检测客服的限制金额是否为正整数 if(!preg_match("/^[0-9]*$/",$param['money']) && !empty($param['money'])){ return json(['code' => -6, 'data' => '', 'msg' => '可充值总额度只能为正整数或为0']); } // 减去平台的金额 $group = $gdb->where('id', $info['group_id'])->find(); $money = $param['money'] > $group['money'] ? intval($param['money'] - $group['money']) : 0; if ($money > $group['money']) return json(['code' => -6, 'data' => '', 'msg' => '分配金额超出平台充值余额']); try{ $odb->where('id', $param['id'])->update($param); if ($money > 0) { $gdb->where('id', $info['group_id'])->setDec('moeny', $money); // 资金流动记录 $compare = $param['money'] > $group['money']; $money = $compare ? $param['money'] - $group['money'] : abs($param['money'] - $group['money']); if ($compare) { $this->saveMoneyFlowLog($group['admin_id'], 'o_' . $info['admin_id'], $money, "'{$param['name']}'小组分配金额"); } } }catch(\Exception $e){ return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]); } return json(['code' => 1, 'data' => '', 'msg' => '编辑成功']); } $id = input('param.id/d'); $info = $odb->where('id', $id)->find(); $this->assign([ 'info' => $info, 'status' => config('kf_status'), ]); return $this->fetch('editOrganize'); } // 删除分组 public function delOrganize() { $odb = db('organize'); if(request()->isAjax()){ $id = input('param.id/d'); // 查询该分组下是否有客服 $has = db('users')->where('organize_id', $id)->count(); if($has > 0){ return json(['code' => -2, 'data' => '', 'msg' => '该分组下有客服,不可删除']); } try{ $oinfo = $odb->where('id', $id)->find(); $odb->where('id', $id)->delete(); if (isset($oinfo['admin_id'])) { db('admins')->where('id', $oinfo['admin_id'])->delete(); } }catch(\Exception $e){ return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]); } return json(['code' => 1, 'data' => '', 'msg' => '删除成功']); } } // 生成按钮 private function makeBtn($id) { $operate = ''; $operate .= ' '; // if ($this->is_root) { $operate .= ' '; // } //$operate .= ''; //$operate .= ''; return $operate; } /** * 根据平台获取分组 */ public function groupGetOrganize() { $odb = db('organize'); $group_id = input('group_id'); $organize = $odb->where('group_id', $group_id)->select(); return resultJson(1, '获取成功', $organize); } // 管理员列表 public function groupAdminList() { if(request()->isAjax()){ $param = input('param.'); $limit = $param['pageSize']; $offset = ($param['pageNumber'] - 1) * $limit; $where = []; if (!empty($param['searchText'])) { $where['user_name'] = ['like', '%' . $param['searchText'] . '%']; } $result = db('admins') ->where($where) ->limit($offset, $limit) ->select(); foreach($result as $key=>$vo){ // 优化显示状态 if(1 == $vo['status']){ $result[$key]['status'] = '启用'; }else{ $result[$key]['status'] = '禁用'; } // 获取权限名称 $role = db('admin_role') ->alias('a') ->where('admin_id', $vo['id']) ->join('role r',"r.id=a.role_id") ->field('name') ->find(); $result[$key]['role_name'] = $role ? $role['name'] : '暂无角色'; // 查找平台 $platform = db('groups')->where('admin_id', $vo['id'])->find(); $result[$key]['platform_name'] = $platform ? $platform['name'] : '暂无'; if ($role['name'] == '组长') { $platform = db('organize')->where('admin_id', $vo['id'])->find(); if ($platform) { $platform = db('groups')->where('id', $platform['group_id'])->find(); } $result[$key]['platform_name'] = $platform ? $platform['name'] : '暂无'; } // 上次登录时间 $result[$key]['last_login_time'] = empty($vo['last_login_time']) ? '' : date('Y-m-d H:i:s', $vo['last_login_time']); // 生成操作按钮 if(1 != $vo['id']){ $result[$key]['operate'] = $this->makeBtnGroupAdmin($vo['id']); } } $result_datas = []; foreach($result as $k => $vo) { if ($vo['role_name'] != '组长' || ($this->role_name == '平台管理员' && $this->group_name != $vo['platform_name'])) continue; $result_datas[] = $vo; } $result_data['total'] = db('admins')->where($where)->count(); //总数据 $result_data['rows'] = $result_datas; return json($result_data); } return $this->fetch(); } // 生成按钮 private function makeBtnGroupAdmin($id) { $operate = ''; $operate .= ' '; $operate .= ' '; return $operate; } }