p2 project
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

<?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()]);
}
}
}