kefu/application/admin/controller/Index.php

254 lines
9.1 KiB
PHP

<?php
/**
* 首页控制器.
*/
namespace app\admin\controller;
use gmars\rbac\Rbac;
class Index extends Base
{
// 后台总体框架
public function index()
{
// 获取管理员相关数据信息
$uid = session('user_id');
$admin_data = db('admins')->field('user_avatar, google_secret')->where('id', $uid)->find();
// 获取管理员的权限
$menu_list = $this->getAdminMeunList();
$pay_money = 0;
if ($this->role_name == '平台管理员') {
$paltform = db('groups')->where('admin_id', $uid)->field('money')->find();
$pay_money = isset($paltform['money']) ? $paltform['money'] : 0;
}
if ($this->role_name == '组长') {
$organize = db('organize')->where('admin_id', $uid)->field('money')->find();
$pay_money = isset($organize['money']) ? $organize['money'] : 0;
}
$this->assign([
'admin_img' => $admin_data['user_avatar'],
'admin_name' => session('user_name'),
'menu_one' => $menu_list['menu_one'],
'menu_two' => $menu_list['menu_two'],
'role_name' => session('role_name'),
'pay_money' => $pay_money,
'ga_android' => config('ga_android'),
'ga_ios' => config('ga_ios'),
'google_secret' => $admin_data['google_secret'] ? 1 : 0,
]);
return $this->fetch('/index');
}
// 后台默认首页
public function indexPage()
{
if ($this->role_name == '组长')
{
$this->redirect(url('Users/index'));
}
$now_date = date('Y-m-d');
//获取当日咨询信息
if ($this->is_root) {
$data = db('now_data')->where('now_date', $now_date)->select();
$data['is_talking'] = 0;
$data['in_queue'] = 0;
$data['online_kf'] = 0;
$data['success_in'] = 0;
$data['total_in'] = 0;
$data['order_num'] = 0;
$data['money_total'] = 0;
foreach ($data as $vo) {
$data['is_talking'] += $vo['is_talking'];
$data['in_queue'] += $vo['in_queue'];
$data['online_kf'] += $vo['online_kf'];
$data['success_in'] += $vo['success_in'];
$data['total_in'] += $vo['total_in'];
$data['order_num'] += $vo['order_num'];
$data['money_total'] += $vo['money_total'];
}
} elseif($this->role_name == '平台管理员') {
$data = db('now_data')->where('now_date', $now_date)->where($this->where)->find();
}
//无当日信息 初始化数据
if (empty($data)) {
$data['is_talking'] = 0;
$data['in_queue'] = 0;
$data['online_kf'] = 0;
$data['success_in'] = 0;
$data['total_in'] = 0;
$data['order_num'] = 0;
$data['money_total'] = 0;
}
// dump($this->where);return;
// 生成从 8点 到 22点的时间数组
$dateLine = array_map(function ($vo) {
if ($vo < 10) {
return '0'.$vo;
} else {
return $vo;
}
}, range(8, 22));
// 初始化数据
$line = [];
foreach ($dateLine as $key => $vo) {
$line[$vo] = [
'is_talking' => 0,
'in_queue' => 0,
'success_in' => 0,
'order_num' => 0,
'money_total' => 0,
];
}
// 对时间线进行赋值
$dbData = db('service_data')->where('add_date', $now_date)->where($this->where)->group('add_hour')->select();
// var_dump($line);
foreach ($dbData as $k => $v) {
$check_is_time_line = array_key_exists($v['add_hour'], $line);
if (!$check_is_time_line) {
continue;
}
$line[$v['add_hour']]['is_talking'] = $v['is_talking'];
$line[$v['add_hour']]['in_queue'] = $v['in_queue'];
$line[$v['add_hour']]['success_in'] = $v['success_in'];
$line[$v['add_hour']]['total_in'] = $v['total_in'];
$line[$v['add_hour']]['order_num'] = $v['order_num'];
$line[$v['add_hour']]['money_total'] = $v['money_total'];
}
// dump($dbData);
$showData = [];
foreach ($line as $key => $vo) {
$showData['is_talking'][] = $vo['is_talking'];
// $showData['in_queue'][] = $vo['in_queue'];
$showData['success_in'][] = $vo['success_in'];
// $showData['total_in'][] = $vo['total_in'];
$showData['order_num'][] = $vo['order_num'];
$showData['money_total'][] = $vo['money_total'];
}
// dump($showData);return;
$this->assign([
'data' => $data,
'show_data' => json_encode($showData),
]);
return $this->fetch('index');
}
// 清除缓存
public function clear()
{
if (false === removeDir(RUNTIME_PATH)) {
return json(['code' => -1, 'data' => '', 'msg' => '清除缓存失败']);
}
return json(['code' => 1, 'data' => '', 'msg' => '清除缓存成功']);
}
// 修改管理员密码
public function changePassword()
{
if (request()->isPost()) {
$param = input('post.');
$reLogin = false;
if (empty($param['old_pwd']) && !empty($param['password'])) {
return json(['code' => -2, 'data' => '', 'msg' => '请输入旧密码']);
}
if (!empty($param['old_pwd']) && empty($param['password'])) {
return json(['code' => -3, 'data' => '', 'msg' => '请输入新密码']);
}
if ($param['password'] != $param['password_c']) {
return json(['code' => -3, 'data' => '', 'msg' => '两次密码不一致']);
}
if (!empty($param['old_pwd']) && !empty($param['password'])) {
$rule = '/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,15}$/';
if (!preg_match($rule, $param['password'])) {
return json(['code' => -2, 'data' => '', 'msg' => '密码必须是6-15位的字母和数字组成!']);
}
$userInfo = db('admins')->where('id', session('user_id'))->find();
if (empty($userInfo)) {
return json(['code' => -4, 'data' => '', 'msg' => '管理员不存在']);
}
if (!password_verify($param['old_pwd'], $userInfo['password'])) {
return json(['code' => -1, 'data' => '', 'msg' => '旧密码错误']);
}
$info['password'] = password_hash($param['password'], PASSWORD_DEFAULT);
$reLogin = true;
}
db('admins')->where('id', session('user_id'))->setField('password', $info['password']);
return json(['code' => 1, 'data' => $reLogin, 'msg' => '修改信息成功']);
}
}
//修改管理员头像
public function changeImg()
{
if (request()->isPost()) {
$param = input('post.');
if (empty($param['user_avatar'])) {
return json(['code' => 0, 'data' => $param, 'msg' => '上传头像不能为空']);
}
$result = db('admins')->where('id', session('user_id'))->setField('user_avatar', $param['user_avatar']);
if (!$result) {
return json(['code' => 1, 'data' => '', 'msg' => '头像修改失败,请重新上传']);
}
return json(['code' => 2, 'data' => '', 'msg' => '修改头像成功']);
}
}
// 上传管理员头像
public function upAvatar()
{
if (request()->isAjax()) {
$file = request()->file('file');
if (!empty($file)) {
$fileInfo = $file->getInfo();
/*if($fileInfo['size'] > 1024 * 1024 * 2){
// 上传失败获取错误信息
return json( ['code' => -2, 'data' => '', 'msg' => '文件超过2M'] );
}*/
//检测图片格式
$ext = explode('.', $fileInfo['name']);
$ext = array_pop($ext);
$extArr = explode('|', 'jpg|png|gif|jpeg');
if(!in_array($ext, $extArr)){
return json(['code' => -3, 'data' => '', 'msg' => '只能上传jpg|png|gif|jpeg的文件']);
}
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move(ROOT_PATH.'public'.DS.'uploads'.DS.'avatar');
if ($info) {
$src = config('img_take_prefix').'/uploads/avatar'.'/'.date('Ymd').'/'.$info->getFilename();
return json(['code' => 0, 'data' => ['src' => $src], 'msg' => 'ok']);
} else {
// 上传失败获取错误信息
return json(['code' => -1, 'data' => '', 'msg' => $file->getError()]);
}
}
}
}
}