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.
128 lines
5.3 KiB
128 lines
5.3 KiB
<?php
|
|
namespace app\admin\service;
|
|
|
|
use app\admin\validate\ChannelValidate;
|
|
use app\model\AgentChannelListModel;
|
|
use app\model\ChannelListModel;
|
|
|
|
class ChannelService extends AdminBaseService
|
|
{
|
|
public function list($param)
|
|
{
|
|
try {
|
|
validate(ChannelValidate::class)->scene('list')->check($param);
|
|
$where = ['state'=>1];
|
|
$list = ChannelListModel::where($where)->order('id', 'desc')->paginate([
|
|
'list_rows' => $param['limit'],
|
|
'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 add($param)
|
|
{
|
|
try {
|
|
validate(ChannelValidate::class)->scene('add')->check($param);
|
|
// 检测是否存在相同渠道
|
|
$exists = ChannelListModel::where('channel', $param['channel'])->find();
|
|
if ($exists) {
|
|
return json(['code'=>1, 'message'=>'已存在相同渠道,请勿重复添加']);
|
|
}
|
|
// 插入新增渠道
|
|
$desc = $param['desc'] ?? "";
|
|
ChannelListModel::create(['channel'=>$param['channel'], 'desc'=>$desc, 'state' => 1]);
|
|
return $this->toData('0', 'success');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function edit($param)
|
|
{
|
|
try {
|
|
validate(ChannelValidate::class)->scene('edit')->check($param);
|
|
$channel = ChannelListModel::where(['id'=>$param['id']])->find();
|
|
if (empty($channel)) {
|
|
return json(['code'=>1, 'message'=>'操作的数据不存在']);
|
|
}
|
|
$channel->channel = $param['channel'];
|
|
$channel->desc = $param['desc'] ?? '';
|
|
$channel->save();
|
|
return $this->toData('0', 'success');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function delete($param)
|
|
{
|
|
try {
|
|
validate(ChannelValidate::class)->scene('delete')->check($param);
|
|
$channel = ChannelListModel::where(['id'=>$param['id']])->find();
|
|
if (empty($channel)) {
|
|
return json(['code'=>1, 'message'=>'操作的数据不存在']);
|
|
}
|
|
$channel->state = 0;
|
|
$channel->save();
|
|
return $this->toData('0', 'success');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
public function agentChannelList($param)
|
|
{
|
|
try {
|
|
validate(ChannelValidate::class)->scene('agent_channel_list')->check($param);
|
|
$where = [];
|
|
if (!empty($param['agent_id'])) {
|
|
$where['agent_id'] = $param['agent_id'];
|
|
}
|
|
$list = AgentChannelListModel::where($where)->order('id', 'desc')->paginate([
|
|
'list_rows' => $param['limit'],
|
|
'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 createAgentChannel($param)
|
|
{
|
|
try {
|
|
validate(ChannelValidate::class)->scene('agent_created_channel')->check($param);
|
|
// 代理推广连接 = 落地页域名 + 代理ID + 渠道名称
|
|
if (empty($param['domain'])) {
|
|
return $this->toData('1', '缺少参数domain');
|
|
}
|
|
$uqCode = bin2hex(random_bytes(16));
|
|
$domain = rtrim($param['domain'], '/') . '/';
|
|
$channelAddr = $domain.'?ext='.$uqCode;
|
|
// 检测是否存在相同渠道
|
|
$exists = AgentChannelListModel::where(['agent_id'=>$param['agent_id'], 'channel_addr'=>$channelAddr])->find();
|
|
if ($exists) {
|
|
return json(['code'=>1, 'message'=>'该代理已存在相同渠道']);
|
|
}
|
|
// 插入新增渠道
|
|
AgentChannelListModel::create(['agent_id'=>$param['agent_id'], 'channel_addr'=>$channelAddr, 'channel'=>$param['channel'], 'ch_code'=>$uqCode]);
|
|
return $this->toData('0', 'success');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
|
|
}
|
|
}
|
|
|
|
}
|