bztang-admin/plugins/micro-communities/src/api/GoodsController.php

45 lines
1.6 KiB
PHP

<?php
namespace Yunshop\MicroCommunities\api;
use app\common\components\ApiController;
use app\common\exceptions\AppException;
use Yunshop\MicroCommunities\models\MicroCommunitiesStick;
class GoodsController extends ApiController
{
public function index()
{
return $this->successJson('ok', $this->getList());
}
public function getList()
{
if (!request()->goods_id) {
throw new AppException('请输入商品ID');
}
$model = MicroCommunitiesStick::uniacid()
->where(['goods_id' => request()->goods_id, 'is_show' => 1, 'type' => 1])
->with(['hasOneStickUser' => function ($query) {
$query->select('avatar', 'nickname', 'uid');
}, 'hasManyComment' => function ($q2) {
$q2->select('stick_id', 'id');
},'hasManyImage'=> function ($query){
$query->where('is_del',0)->select('id','stick_id','url');
}])
->select(['id','praise_num','user_id','title'])
->orderBy('created_at', 'desc')
->paginate(10, ['*'], '', (int)request()->page ?: 1);
$recordsModels = $model->toArray();
$recordsModels['data'] = collect($recordsModels['data'])->map(function ($item) {
$item['has_one_stick_user']['avatar'] = yz_tomedia($item['has_one_stick_user']['avatar']);
$item['has_many_image'] = set_medias($item['has_many_image'], 'url');
$collection = collect($item)
->put('comment_num', count($item['has_many_comment']));
return $collection;
});
return $recordsModels;
}
}