海南旅游SAAS
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.
 
 
 

66 lines
1.7 KiB

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\AgentProduct;
use App\Models\Channel;
use App\Models\UserChannel;
use Illuminate\Support\Facades\Storage;
/**
* 频道列表
* Class Channel
* @package App\Http\Controllers\Api
*/
class ChannelController extends Controller
{
// 所有频道列表
public function index()
{
$list = Channel::query()
->where('agent_id', $this->agent_id)
->orderBy('sort')
->orderBy('id')
->get(['id', 'pid', 'name', 'icon']);
$prefix = Storage::disk('public')->url('');
foreach ($list as $k => &$v) {
$v->icon = $prefix . $v->icon;
}
return $this->success($list);
}
// 我的频道
public function my()
{
$channel_ids = UserChannel::where('user_id', $this->user_id)->value('channels');
$list = Channel::whereIn('id', $channel_ids)->get(['id', 'pid', 'name', 'icon']);
return $this->success($list);
}
//根据频道ID获取产品
public function product()
{
$channel_id = (int)request()->input('channel_id');
$list = AgentProduct::list($this->agent_id)
->whereRaw("FIND_IN_SET($channel_id, `channel_id`)")
->orderBy('id', 'DESC')
->simplePaginate();
$list = $this->paginatePicAddHost($list);
return $this->success($list);
}
//分页列表产品图片加域名
private function paginatePicAddHost($list)
{
if (!$list->isEmpty()) {
$prefix = Storage::disk('public')->url('');
foreach ($list->items() as $k=>&$v) {
$v->pictures = array_map(function($item) use ($prefix) {
return strpos($item, $prefix) === false ? $prefix . $item : $item;
}, $v->pictures);
}
}
return $list;
}
}