kefu/application/admin/controller/Groups.php

218 lines
8.4 KiB
PHP

<?php
/**
* 平台控制器
*/
namespace app\admin\controller;
use Repository\LogRepository;
class Groups extends Base
{
// 平台列表
public function index()
{
if(request()->isAjax()){
$param = input('param.');
$limit = $param['pageSize'];
$offset = ($param['pageNumber'] - 1) * $limit;
$where = isset($this->where['group_id']) ? ['id' => $this->where['group_id']] : [];
$result = db('groups')->where($where)->limit($offset, $limit)->order('id desc')->select();
foreach($result as $key=>$vo){
// 优化显示状态
if(1 == $vo['status']){
$result[$key]['status'] = '<span class="label label-primary">启用</span>';
}else{
$result[$key]['status'] = '<span class="label label-danger">禁用</span>';
}
// 统计平台人数
$result[$key]['users_num'] = db('users')->where('group_id', $vo['id'])->count();
// 生成操作按钮
$result[$key]['operate'] = $this->makeBtn($vo['id']);
//生成下载客服聊天记录按钮
$result[$key]['down_service_log'] = $this->makeServiceLogBtn($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'] : '暂无';
// 充值赠送类型
$type_arr = config('recharge_gift_type');
$result[$key]['recharge_gift_type'] = $type_arr && isset($type_arr[$vo['recharge_gift_type']])
? $type_arr[$vo['recharge_gift_type']] : '';
}
$return['total'] = db('groups')->where($where)->count(); //总数据
$return['rows'] = $result;
return json($return);
}
return $this->fetch();
}
// 添加平台
public function addGroup()
{
$adb = db('admins');
$rdb = db('role');
if(request()->isPost()){
$param = input('post.');
$param['name'] = htmlentities($param['name']);
$has = db('groups')->field('id')->where('name', $param['name'])->find();
if(!empty($has)){
return json(['code' => -1, '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' => getImageHost().'/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']);
$save = db('groups')->insertGetId($param);
// 资金流动记录
$this->saveMoneyFlowLog($this->admin_id, 'g_' . $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' => '添加平台成功']);
}
$this->assign([
'status' => config('kf_status')
]);
return $this->fetch('addgroup');
}
// 编辑平台
public function editGroup()
{
if(request()->isAjax()){
$param = input('post.');
$param['name'] = htmlentities($param['name']);
$gdb = db('groups');
// 检测用户修改的用户名是否重复
$has = $gdb->where('name', $param['name'])->where('id', '<>', $param['id'])->find();
if(!empty($has)){
return json(['code' => -1, 'data' => '', 'msg' => '该平台已经存在']);
}
try{
$group = $gdb->where('id', $param['id'])->find();
$gdb->where('id', $param['id'])->update($param);
if ($this->is_root) {
// 资金流动记录
$compare = $param['money'] > $group['money'];
$money = $compare ? $param['money'] - $group['money'] : abs($param['money'] - $group['money']);
if ($compare) {
$this->saveMoneyFlowLog($this->admin_id, 'g_' . $group['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 = db('groups')->where('id', $id)->find();
$admin = $this->getPlatformList();
$this->assign([
'info' => $info,
'status' => config('kf_status'),
'recharge_gift_type' => config('recharge_gift_type'),
'admin' => $admin,
]);
return $this->fetch('editgroup');
}
// 删除平台
public function delGroup()
{
if(request()->isAjax()){
$id = input('param.id/d');
// 查询该平台下是否有客服
$has = db('users')->where('group_id', $id)->count();
$hasOrganize = db('organize')->where('group_id', $id)->count();
if($has > 0 || $hasOrganize > 0){
return json(['code' => -2, 'data' => '', 'msg' => '该平台下还有组或者客服,不可删除']);
}
try{
$group = db('groups')->where('id', $id)->find();
db('groups')->where('id', $id)->delete();
if (isset($group['admin_id'])) {
db('admins')->where('id', $group['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 = '<a href="' . url('groups/editgroup', ['id' => $id]) . '">';
$operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
if ($this->is_root) {
$operate .= '<a href="javascript:userGroup(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
$operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
}
//$operate .= '<a href="' . url('groups/manageUser') . '">';
//$operate .= '<button type="button" class="btn btn-info btn-sm"><i class="fa fa-user-plus"></i> 管理组员</button></a>';
return $operate;
}
// 生成支付账号详情按钮
private function makeServiceLogBtn($id)
{
$operate = '<a href="javascript:downServiceLog(' . $id . ')">';
// $operate .= '<input type="text" class="layui-input" id="dateSelect"></a> ';
$operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 选择日期</button> </a>';
return $operate;
}
}