diff --git a/app/adminapi/controller/GoodsController.php b/app/adminapi/controller/GoodsController.php index 3ba289a..2f2694c 100644 --- a/app/adminapi/controller/GoodsController.php +++ b/app/adminapi/controller/GoodsController.php @@ -101,7 +101,8 @@ class GoodsController extends BaseAdminController public function detail() { $params = (new GoodsValidate())->goCheck('detail'); - $result = GoodsLogic::detail($params); +// $result = GoodsLogic::detail($params); + $result = GoodsLogic::info($params['id']); return $this->data($result); } diff --git a/app/adminapi/logic/GoodsLogic.php b/app/adminapi/logic/GoodsLogic.php index b2b7542..64ca7ae 100644 --- a/app/adminapi/logic/GoodsLogic.php +++ b/app/adminapi/logic/GoodsLogic.php @@ -17,6 +17,7 @@ namespace app\adminapi\logic; use app\common\model\Goods; use app\common\logic\BaseLogic; +use app\common\service\UrlServer; use think\facade\Db; @@ -196,4 +197,70 @@ class GoodsLogic extends BaseLogic { return Goods::findOrEmpty($params['id'])->toArray(); } + + /* + * 商品信息 + */ + /** + * 获取商品信息 + * @param $goods_id + * @return array + */ + public static function info($goods_id) + { + + $info['base'] = Db::name('goods') + ->where(['id' => $goods_id]) + ->withAttr('abs_image', function ($value, $data) { + return UrlServer::getFileUrl($data['image']); + }) + ->withAttr('content', function ($value){ + $preg = '/()/is'; + $local_url = UrlServer::getFileUrl('/'); + return preg_replace($preg, "\${1}$local_url\${2}\${3}",$value); + }) + ->withAttr('abs_video',function ($value,$data){ + if($data['video']){ + return UrlServer::getFileUrl($data['video']); + } + return ''; + }) + ->withAttr('abs_poster',function ($value,$data){ + if($data['poster']){ + return UrlServer::getFileUrl($data['poster']); + } + return ''; + }) + ->append(['abs_image','abs_video'])->find(); + $info['base']['goods_image'] = Db::name('goods_image') + ->where(['goods_id' => $goods_id]) + ->withAttr('abs_image', function ($value, $data) { + return UrlServer::getFileUrl($data['uri']);}) + ->append(['abs_image']) + ->select(); + + $info['item'] = Db::name('goods_item') + ->where(['goods_id' => $goods_id]) + ->withAttr('abs_image', function ($value, $data) { + return UrlServer::getFileUrl($data['image']); + })->append(['abs_image']) + ->select(); + + $info['spec'] = Db::name('goods_spec') + ->where(['goods_id' => $goods_id]) + ->select(); + + $spec_value = Db::name('goods_spec_value') + ->where(['goods_id' => $goods_id]) + ->select(); + + $data = []; + foreach ($spec_value as $k => $v) { + $data[$v['spec_id']][] = $v; + } + foreach ($info['spec'] as $k => $v) { + $info['spec'][$k]['values'] = isset($data[$v['id']]) ? $data[$v['id']] : []; + } + return $info; + } } \ No newline at end of file