123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- <?php
- /**
- * Goodssku.php
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2015-2025 山西牛酷信息科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: http://www.niushop.com.cn
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
- * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
- * =========================================================
- * @author : niuteam
- * @date : 2015.1.17
- * @version : v1.0.0.0
- */
- namespace app\api\controller;
- use app\model\goods\Goods;
- use app\model\goods\GoodsAttribute;
- use app\model\shop\Shop as ShopModel;
- /**
- * 商品sku
- * @author Administrator
- *
- */
- class Goodssku extends BaseApi
- {
-
- /**
- * 基础信息
- */
- public function info()
- {
- $sku_id = isset($this->params['sku_id']) ? $this->params['sku_id'] : 0;
- if (empty($sku_id)) {
- return $this->response($this->error('', 'REQUEST_SKU_ID'));
- }
- $goods = new Goods();
- $field = 'sku_id,sku_name,sku_spec_format,price,market_price,discount_price,promotion_type,start_time,end_time,stock,sku_image,sku_images,goods_spec_format,site_id,site_name,category_id,goods_id';
- $info = $goods->getGoodsSkuInfo([ [ 'sku_id', '=', $sku_id ] ], $field);
- if(!empty($info['data']['goods_spec_format'])) {
- $shuju = json_decode($info['data']['goods_spec_format'], true);
- foreach ($shuju as $k => $v) {
- foreach ($shuju[$k]['value'] as &$v1) {
- $goodssku = $goods->getGoodsSkuInfo([['sku_id', '=', $v1['sku_id']]], 'stock');
- $v1['stock'] = $goodssku['data']['stock'];
- }
- }
- $info['data']['goods_spec_format'] = $shuju;
- }
- $good_sku_data= $goods->getGoodsSkuList([['goods_id','=',$info['data']['goods_id']]]);
- $data = $goods->getGoodsInfo(['goods_id'=>$info['data']['goods_id']],'goods_name,price,pay_num1,price1,pay_num2,price2,pay_num3,price3,sku_id,introduction,goods_content,goods_image,is_free_shipping');
- $g= explode(',',$data['data']['goods_image']);
- $data['data']['show_image'] = $g[0];
- $goodlist = $goods->getGoodsList(['category_id'=>$info['data']['category_id']],'goods_id,goods_name,goods_image,price,pay_num1,price1,pay_num2,price2,pay_num3,price3,sku_id','','5');
- foreach ($goodlist['data'] as &$v){
- $goods_image= explode(',',$v['goods_image']);
- $v['goods_image']=$goods_image[0];
- }
- $info['data']['goods_detail'] = $data['data'];
- $info['data']['tuijian']=$goodlist['data'];
- $info['data']['good_sku_data'] = $good_sku_data['data'];
- return $this->response($info);
- }
-
- /**
- * 详情信息
- */
- public function detail()
- {
- $sku_id = isset($this->params['sku_id']) ? $this->params['sku_id'] : 0;
- if (empty($sku_id)) {
- return $this->response($this->error('', 'REQUEST_SKU_ID'));
- }
-
- $res = [];
-
- $goods = new Goods();
- $goods_sku_detail = $goods->getGoodsSkuDetail($sku_id);
- $goods_sku_detail = $goods_sku_detail['data'];
- $res['goods_sku_detail'] = $goods_sku_detail;
- // 店铺信息
- $shop_model = new ShopModel();
- $shop_info = $shop_model->getShopInfo([ [ 'site_id', '=', $goods_sku_detail['site_id'] ] ], 'site_id,site_name,is_own,logo,avatar,banner,seo_description,qq,ww,telephone,shop_desccredit,shop_servicecredit,shop_deliverycredit,shop_baozh,shop_baozhopen,shop_baozhrmb,shop_qtian,shop_zhping,shop_erxiaoshi,shop_tuihuo,shop_shiyong,shop_shiti,shop_xiaoxie,shop_sales,sub_num');
-
- $shop_info = $shop_info['data'];
- $res['shop_info'] = $shop_info;
-
- return $this->response($this->success($res));
- }
-
- /**
- * 列表信息
- */
- public function page()
- {
- $page = isset($this->params['page']) ? $this->params['page'] : 1;
- $page_size = isset($this->params['page_size']) ? $this->params['page_size'] : PAGE_LIST_ROWS;
- $site_id = isset($this->params['site_id']) ? $this->params['site_id'] : 0;//站点id
- $goods_id_arr = isset($this->params['goods_id_arr']) ? $this->params['goods_id_arr'] : '';//sku_id数组
- $keyword = isset($this->params['keyword']) ? $this->params['keyword'] : '';//关键词
- $category_id = isset($this->params['category_id']) ? $this->params['category_id'] : 0;//分类
- $category_level = isset($this->params['category_level']) ? $this->params['category_level'] : 0;//分类等级
- $brand_id = isset($this->params['brand_id']) ? $this->params['brand_id'] : 0;//品牌
- $min_price = isset($this->params['min_price']) ? $this->params['min_price'] : 0;//价格区间,小
- $max_price = isset($this->params['max_price']) ? $this->params['max_price'] : 0;//价格区间,大
- $is_free_shipping = isset($this->params['is_free_shipping']) ? $this->params['is_free_shipping'] : 0;//是否免邮
- $is_own = isset($this->params['is_own']) ? $this->params['is_own'] : '';//是否自营
- $order = isset($this->params['order']) ? $this->params['order'] : "create_time";//排序(综合、销量、价格)
- $sort = isset($this->params['sort']) ? $this->params['sort'] : "desc";//升序、降序
- $attr = isset($this->params['attr']) ? $this->params['attr'] : "";//属性json
-
- $condition = [];
-
- if (!empty($site_id)) {
- $condition[] = [ 'gs.site_id', '=', $site_id ];
- }
-
- if (!empty($goods_id_arr)) {
- $condition[] = [ 'gs.goods_id', 'in', $goods_id_arr ];
- }
-
- if (!empty($keyword)) {
- $condition[] = [ 'g.goods_name|gs.sku_name|gs.keywords', 'like', '%' . $keyword . '%' ];
- }
-
- if (!empty($category_id) && !empty($category_level)) {
- $condition[] = [ 'gs.category_id_' . $category_level, '=', $category_id ];
- }
-
- if (!empty($brand_id)) {
- $condition[] = [ 'gs.brand_id', '=', $brand_id ];
- }
-
- if ($min_price != "" && $max_price != "") {
- $condition[] = [ 'gs.discount_price', 'between', [ $min_price, $max_price ] ];
- } elseif ($min_price != "") {
- $condition[] = [ 'gs.discount_price', '<=', $min_price ];
- } elseif ($max_price != "") {
- $condition[] = [ 'gs.discount_price', '>=', $max_price ];
- }
-
- if (!empty($is_free_shipping)) {
- $condition[] = [ 'gs.is_free_shipping', '=', $is_free_shipping ];
- }
-
- if ($is_own !== '') {
- $condition[] = [ 'gs.is_own', '=', $is_own ];
- }
-
- // 非法参数进行过滤
- if ($sort != "desc" && $sort != "asc") {
- $sort = "";
- }
-
- // 非法参数进行过滤
- if ($order != '') {
- if ($order != "sale_num" && $order != "discount_price") {
- $order = 'gs.create_time';
- }
- $order_by = $order . ' ' . $sort;
- } else {
- $order_by = 'gs.sort desc,gs.create_time desc';
- }
- // 拿到商品属性,查询sku_id
- if (!empty($attr)) {
- $attr = json_decode($attr, true);
- $attr_id = [];
- $attr_value_id = [];
- foreach ($attr as $k => $v) {
- $attr_id[] = $v['attr_id'];
- $attr_value_id[] = $v['attr_value_id'];
- }
- $goods_attribute = new GoodsAttribute();
- $attribute_condition = [
- [ 'attr_id', 'in', implode(",", $attr_id) ],
- [ 'attr_value_id', 'in', implode(",", $attr_value_id) ],
- ];
- $attribute_list = $goods_attribute->getAttributeIndexList($attribute_condition, 'sku_id');
- $attribute_list = $attribute_list['data'];
- if (!empty($attribute_list)) {
- $sku_id = [];
- foreach ($attribute_list as $k => $v) {
- $sku_id[] = $v['sku_id'];
- }
- $condition[] = [
- [ 'gs.sku_id', 'in', implode(",", $sku_id) ]
- ];
- }
- }
-
- $condition[] = [ 'gs.goods_state', '=', 1 ];
- $condition[] = [ 'gs.verify_state', '=', 1 ];
- $condition[] = [ 'gs.is_delete', '=', 0 ];
- $field = 'gs.goods_id,gs.sku_id,gs.sku_name,gs.price,gs.market_price,gs.discount_price,gs.stock,gs.sale_num,gs.sku_image,gs.goods_name,gs.site_id,gs.website_id,gs.is_own,gs.is_free_shipping,gs.introduction,gs.promotion_type,g.goods_image';
-
- $alias = 'gs';
- $join = [
- [ 'goods g', 'gs.sku_id = g.sku_id', 'inner' ]
- ];
-
- $goods = new Goods();
- $list = $goods->getGoodsSkuPageList($condition, $page, $page_size, $order_by, $field, $alias, $join);
- return $this->response($list);
- }
-
- /**
- * 商品推荐
- * @return string
- */
- public function recommend()
- {
- $page = isset($this->params['page']) ? $this->params['page'] : 1;
- $page_size = isset($this->params['page_size']) ? $this->params['page_size'] : PAGE_LIST_ROWS;
- $condition = [
- [ 'gs.goods_state', '=', 1 ],
- [ 'gs.verify_state', '=', 1 ],
- [ 'gs.is_delete', '=', 0 ]
- ];
- $goods = new Goods();
- $field = 'gs.goods_id,gs.sku_id,gs.sku_name,gs.price,gs.market_price,gs.discount_price,gs.stock,gs.sale_num,gs.sku_image,gs.goods_name,gs.site_id,gs.website_id,gs.is_own,gs.is_free_shipping,gs.introduction,gs.promotion_type,g.goods_image';
- $alias = 'gs';
- $join = [
- [ 'goods g', 'gs.sku_id = g.sku_id', 'inner' ]
- ];
- $order_by = 'gs.sort desc,gs.create_time desc';
- $list = $goods->getGoodsSkuPageList($condition, $page, $page_size, $order_by, $field, $alias, $join);
- return $this->response($list);
- }
- }
|