You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
328 lines
13 KiB
328 lines
13 KiB
<?php
|
|
|
|
namespace app\admin\service;
|
|
|
|
use app\model\AdminModel;
|
|
use app\model\AuthGroupAccessModel;
|
|
use app\model\AwsIvsModel;
|
|
use app\model\CustomerRelationalModel;
|
|
use app\model\UserModel;
|
|
|
|
class AgentService extends AdminBaseService
|
|
{
|
|
|
|
// 代理列表
|
|
public function index()
|
|
{
|
|
try {
|
|
// $agentUserId = env('AGENT.AGENT_GROUP_ID');
|
|
// $agentAdminUserIds = AuthGroupAccessModel::where('group_id', $agentUserId)->column('uid');
|
|
$roleId = 10;
|
|
$agentAdminUser = AdminModel::where('role_id', 'in', $roleId)->field('id,user_name,nick_name,email,mobile,status,invite_code')->select();
|
|
$rows = [];
|
|
if (!$agentAdminUser->isEmpty()) {
|
|
foreach ($agentAdminUser as $item) {
|
|
$rows[] = [
|
|
'id' => $item['id'],
|
|
'username' => $item['user_name'],
|
|
'nickname' => $item['nick_name'],
|
|
'email' => $item['email'] ?? '-',
|
|
'mobile' => $item['mobile'] ?? '-',
|
|
'status' => $item['status'],
|
|
'invite_code' => $item['invite_code'],
|
|
];
|
|
}
|
|
}
|
|
return $this->toData('0', 'SUCCESS', ['list' => $rows, 'total' => count($rows)]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
// 代理用户
|
|
public function user($param)
|
|
{
|
|
try {
|
|
if (empty($param['agent_id'])) {
|
|
return $this->toData('0', 'SUCCESS', ['list' => []]);
|
|
}
|
|
|
|
$userList = UserModel::where('agent_id', 'in', [0, $param['agent_id']])->where('parent_id', 0)
|
|
->order('user_id', 'desc')
|
|
->select();
|
|
$rows = [];
|
|
if (!$userList->isEmpty()) {
|
|
foreach ($userList as $item) {
|
|
$rows[] = [
|
|
'id' => $item['user_id'],
|
|
'email' => $item['email'],
|
|
'user_no' => $item['user_no'],
|
|
'status' => $item['agent_id'] == $param['agent_id'],
|
|
'agent_id' => $param['agent_id'],
|
|
];
|
|
}
|
|
}
|
|
return $this->toData('0', 'SUCCESS', ['list' => $rows, 'total' => count($rows)]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function manager($param)
|
|
{
|
|
try {
|
|
if (empty($param['id']) || !is_numeric($param['id'])) {
|
|
return $this->toData('1', '参错错误', ['list' => []]);
|
|
}
|
|
|
|
if (empty($param['agent_id']) || !is_numeric($param['agent_id'])) {
|
|
return $this->toData('1', '参错错误', ['list' => []]);
|
|
}
|
|
|
|
$user = UserModel::where('user_id', $param['id'])->find();
|
|
if (empty($user)) {
|
|
return $this->toData('1', '用户不存在', ['list' => []]);
|
|
}
|
|
|
|
if ($user['parent_id'] != 0) {
|
|
return $this->toData('1', '只能绑定顶层用户', ['list' => []]);
|
|
}
|
|
|
|
// 判断代理是否有效
|
|
$admin = AdminModel::where('id', $param['agent_id'])->find();
|
|
$roleId = 10;
|
|
if (empty($admin) || $admin['role_id'] != $roleId) {
|
|
return $this->toData('1', '代理不存在', ['list' => []]);
|
|
}
|
|
|
|
// $agentUserId = env('AGENT.AGENT_GROUP_ID');
|
|
// $agentAdminUserIds = AuthGroupAccessModel::where('group_id', $agentUserId)->column('uid');
|
|
// if(!in_array($param['agent_id'], $agentAdminUserIds)){
|
|
// return $this->toData('1', '代理不存在', ['list' => []]);
|
|
// }
|
|
|
|
// 未绑定 直接绑定
|
|
if ($user->agent_id == 0) {
|
|
UserModel::update(['agent_id' => $param['agent_id']], ['user_id' => $param['id']]);
|
|
return $this->toData('0', 'SUCCESS', []);
|
|
}
|
|
|
|
// 取消绑定
|
|
if ($user->agent_id == $param['agent_id']) {
|
|
UserModel::update(['agent_id' => 0], ['user_id' => $param['id']]);
|
|
return $this->toData('0', 'SUCCESS', []);
|
|
}
|
|
|
|
return $this->toData('1', '该用户已被其他代理绑定, 请先取消绑定', []);
|
|
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function addUser($param)
|
|
{
|
|
try {
|
|
if (empty($param['agent_id']) || !is_numeric($param['agent_id'])) {
|
|
return $this->toData('1', '参错错误');
|
|
}
|
|
|
|
if (empty($param['user_id']) || !is_numeric($param['user_id'])) {
|
|
return $this->toData('1', '参错错误');
|
|
}
|
|
|
|
$user = UserModel::where('user_id', $param['user_id'])->find();
|
|
if (empty($user)) {
|
|
return $this->toData('1', '用户不存在');
|
|
}
|
|
|
|
if ($user['parent_id'] != 0) {
|
|
return $this->toData('1', '只能绑定顶层用户');
|
|
}
|
|
|
|
// 判断代理是否有效
|
|
$admin = AdminModel::where('id', $param['agent_id'])->find();
|
|
$roleId = 10;
|
|
if (empty($admin) || $admin['role_id'] != $roleId) {
|
|
return $this->toData('1', '代理不存在');
|
|
}
|
|
|
|
UserModel::update(['agent_id' => $param['agent_id']], ['user_id' => $param['user_id']]);
|
|
return $this->toData('0', 'SUCCESS', []);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function customerList($param)
|
|
{
|
|
try {
|
|
if (empty($param['page']) || !is_numeric($param['page'])) {
|
|
return $this->toData('1', '参错错误');
|
|
}
|
|
|
|
// 角色ID
|
|
$roleId = 11;
|
|
// 代理ID
|
|
$agentId = 0;
|
|
if (isset($param['agent_id']) && is_numeric($param['agent_id'])) {
|
|
$agentId = $param['agent_id'];
|
|
}
|
|
$list = AdminModel::when($agentId, function ($query) use ($agentId) {
|
|
$query->where('parent_id', $agentId)->order('id', 'desc'); //查询代理下的客服列表
|
|
}, function ($query) use($roleId) {
|
|
$query->where('role_id', $roleId)->order('id', 'desc'); //查询所有客服列表
|
|
})->paginate([
|
|
'list_rows' => 15, // 每页显示 10 条
|
|
'page' => $param['page'], // 使用前端传递的页码
|
|
]);
|
|
|
|
return $this->toData('0', 'SUCCESS', [
|
|
'list' => $list->items(), // 当前页的数据
|
|
'page' => $list->currentPage(), // 当前页码
|
|
'total' => $list->total(), // 总记录数
|
|
'last_page' => $list->lastPage(), // 最后一页页码
|
|
'agent_id' => $agentId,
|
|
]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function customerUser($param)
|
|
{
|
|
try {
|
|
if (empty($param['customer_id']) || !is_numeric($param['customer_id'])) {
|
|
return $this->toData('1', '参错错误');
|
|
}
|
|
if (empty($param['page']) || !is_numeric($param['page'])) {
|
|
return $this->toData('1', '参错错误');
|
|
}
|
|
// 查询当前客服下的用户
|
|
$list = CustomerRelationalModel::where('customer_id', $param['customer_id'])->order('id', 'desc')->paginate([
|
|
'list_rows' => $param['limit'] ?? 15,
|
|
'page' => $param['page'], // 使用前端传递的页码
|
|
]);
|
|
$userIds = array_column($list->items(), 'user_id'); // 获取当前页的用户id
|
|
// 根据user_id查询用户列表
|
|
$userDetails = [];
|
|
if ($userIds) {
|
|
$userDetails = UserModel::whereIn('user_id', $userIds)->select()->toArray();
|
|
}
|
|
|
|
return $this->toData('0', 'SUCCESS', [
|
|
'list' => $list->items(), // 当前页的数据
|
|
'user_details' => $userDetails,
|
|
'page' => $list->currentPage(), // 当前页码
|
|
'total' => $list->total(), // 总记录数
|
|
'last_page' => $list->lastPage(), // 最后一页页码
|
|
]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function awsIvsList($param)
|
|
{
|
|
try {
|
|
if (empty($param['page']) || !is_numeric($param['page'])) {
|
|
return $this->toData('1', '参错错误');
|
|
}
|
|
|
|
if (isset($param['title'])) {
|
|
$list = AwsIvsModel::where('title', $param['title'])->order('id', 'desc')->paginate([
|
|
'list_rows' => 15,
|
|
'page' => $param['page'],
|
|
]);
|
|
} else {
|
|
$list = AwsIvsModel::order('id', 'desc')->paginate([
|
|
'list_rows' => 15,
|
|
'page' => $param['page'],
|
|
]);
|
|
}
|
|
|
|
return $this->toData('0', 'SUCCESS', [
|
|
'list' => $list->items(), // 当前页的数据
|
|
'page' => $list->currentPage(), // 当前页码
|
|
'total' => $list->total(), // 总记录数
|
|
'last_page' => $list->lastPage(), // 最后一页页码
|
|
]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function awsIvsAdd($param)
|
|
{
|
|
try {
|
|
if (empty($param['title'])) {
|
|
return $this->toData('1', 'Missing param title');
|
|
}
|
|
if (empty($param['anchor_name'])) {
|
|
return $this->toData('1', 'Missing param anchor_name');
|
|
}
|
|
if (empty($param['desc'])) {
|
|
return $this->toData('1', 'Missing param desc');
|
|
}
|
|
if (empty($param['push_url'])) {
|
|
return $this->toData('1', 'Missing param push_url');
|
|
}
|
|
if (empty($param['secret_key'])) {
|
|
return $this->toData('1', 'Missing param secret_key');
|
|
}
|
|
if (empty($param['play_url'])) {
|
|
return $this->toData('1', 'Missing param play_url');
|
|
}
|
|
if (empty($param['agent_id'])) {
|
|
return $this->toData('1', 'Missing param agent_id');
|
|
}
|
|
//判断一个代理下只能有一个推流配置
|
|
$ckInfo = AwsIvsModel::where('agent_id', $param['agent_id'])->find();
|
|
if ($ckInfo) {
|
|
return $this->toData('1', '一个代理下只能配置一个推流信息');
|
|
}
|
|
//保存推流配置
|
|
$res = AwsIvsModel::create([
|
|
'title' => $param['title'],
|
|
'anchor_name' => $param['anchor_name'],
|
|
'avatar' => $param['avatar'],
|
|
'desc' => $param['desc'],
|
|
'push_url' => $param['push_url'],
|
|
'secret_key' => $param['secret_key'],
|
|
'play_url' => $param['play_url'],
|
|
'agent_id' => $param['agent_id']
|
|
]);
|
|
return $this->toData('0', 'SUCCESS', ['id' => $res->id]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function awsIvsEdit($param)
|
|
{
|
|
try {
|
|
if (empty($param['id'])) {
|
|
return $this->toData('1', 'Missing param id');
|
|
}
|
|
if (empty($param['title']) || empty($param['anchor_name']) || empty($param['desc']) || empty($param['push_url']) || empty($param['secret_key']) || empty($param['play_url']) || empty($param['agent_id'])) {
|
|
return $this->toData('1', 'Parameter error');
|
|
}
|
|
// 检查是否存在数据
|
|
$ckInfo = AwsIvsModel::where('id', $param['id'])->find();
|
|
if (empty($ckInfo)) {
|
|
return $this->toData('1', '编辑的数据不存在');
|
|
}
|
|
$ckInfo->title = $param['title'];
|
|
$ckInfo->anchor_name = $param['anchor_name'];
|
|
$ckInfo->avatar = $param['avatar'];
|
|
$ckInfo->desc = $param['desc'];
|
|
$ckInfo->push_url = $param['push_url'];
|
|
$ckInfo->secret_key = $param['secret_key'];
|
|
$ckInfo->play_url = $param['play_url'];
|
|
$ckInfo->save();
|
|
return $this->toData('1', 'Successful');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
}
|