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.
|
|
<?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; }}
|