AgConfig['is_supply'] == 1) { $param = [ 'pageNum' => $page_index, 'pageSize' => $page_size, ]; if ($keyword) { $param['keyword'] = $keyword; } if ($categoryId) { $param['categoryId'] = $categoryId; } if ($priceStart) { $param['priceStart'] = $priceStart; } if ($priceEnd) { $param['priceEnd'] = $priceEnd; } $info = $this->Choice->productlist($param)['result']['result'] ?? []; } else if ($cloud_id && $cloud_id == 'own') { //平台自营供应链 $where = [ ['goods_state', '=', 1] ]; if ($keyword) { $where[] = ['goods_name', 'like', '%' . $keyword . '%']; } if ($priceStart) { $where[] = ['min_price', '>=', $priceStart]; } if ($priceEnd) { $where[] = ['max_price', '<=', $priceEnd]; } $field = 'goods_id,goods_name as title,min_price as minPrice,max_price as maxPrice,goods_image as imgUrl,channel_type'; $goodsList = $goodsModel->getGoodsPageList($where, $page_index, $page_size, 'create_time desc', $field); $info = $goodsList['data']; foreach ($info['list'] as $k => &$v) { $v = [ 'goods_id' => $v['goods_id'], 'title' => $v['title'], 'minPrice' => $v['minPrice'], 'maxPrice' => $v['maxPrice'], 'imgUrl' => img($v['imgUrl']), 'salesCnt90d' => 0, //计算90天销量 'cloud_type' => 'own', //计算90天销量 'serviceList' => [], ]; } } else if ($cloud_id && is_numeric($cloud_id)) {//其他第三方云仓库 $cloudAip = new CloudApi($cloud_id); $data = [ 'cloud_id' => $cloud_id, 'page' => $page_index, 'pageSize' => $page_size, ]; // $data['cloud_id'] = 'own'; if ($keyword) { $data['keyword'] = $keyword; } if ($categoryId) { $data['categoryId'] = $categoryId; } if ($priceStart) { $data['priceStart'] = $priceStart; } if ($priceEnd) { $data['priceEnd'] = $priceEnd; } $info = $cloudAip->getGoodsList($data); } return $info; } /*** * 关注商品与取消关注 * @return mixed */ public function follow() { $itemId = input('itemId'); $isFollow = input('isFollow', 1); $cloud_id = input('cloud_id', 'own'); if ($itemId) { $follow = new GoodsWarehousing($this->SupplyInfo); $where = [ 'appid' => $this->appInfo['app_id'], 'site_id' => $this->SiteInfo['site_id'], 'cloud_id' => $cloud_id, 'open_offer_id' => $itemId, ]; $followInfo = $follow->getInfo($where); $goodsModel = new Goods(); switch ($cloud_id) { case 'ag': $goods_id = model('supply_goods')->getValue([['site_id', '=', $this->SupplyInfo['supplier_site_id']], ['extend_goods_id', '=', $itemId]], 'goods_id'); $product1688Info = $this->Choice->productInfoGet($itemId)['result']['result'][0]['productInfo']; $product1688Info['goods_id'] = $goods_id; $GoodsInfo = $follow->Generate1688GoodsInfo($product1688Info, $this->AgConfig['template_id'], 'normal'); if ($isFollow) { $result = $this->Choice->followGoods($itemId); if ($result) { if (empty($goods_id)) { $goods_id = $goodsModel->addGoods($GoodsInfo)['data']; } else { $goods_id = $goodsModel->editGoods($GoodsInfo)['data']; } if (empty($followInfo)) { $this->addGoodsWarehousing($follow, $goods_id, $itemId, $GoodsInfo, $cloud_id, '1688', '1688精选', $this->AgConfig['template_id'], 1); } } else { return error(-1, '关注失败'); } } else {//取消关注 $follow->deleteGoodsWarehousing($where); } break; case 'own': //自营 $where = [ 'goods_id' => $itemId, ]; $GoodsInfo = model('supply_goods')->getInfo($where, 'goods_id,goods_name,goods_image'); if ($isFollow && $GoodsInfo) { if (empty($followInfo)) { $this->addGoodsWarehousing($follow, $itemId, $itemId, $GoodsInfo, $cloud_id); } } else { $follow->deleteGoodsWarehousing($where); } break; } return success(0, 'ok', ['isFollow' => $isFollow, 'cloud_id' => $cloud_id, 'itemId' => $itemId]); } else { return error(-1, '参数错误'); } } /*** * 添加关注 * @param $follow * @param $itemId * @param $GoodsInfo * @param $channel_type * @param $third_party_name * @param $template_id * @param $is_supply * @return null */ private function addGoodsWarehousing($follow, $goods_id, $itemId, $GoodsInfo, $cloud_id = 'own', $channel_type = 'own', $third_party_name = '平台自营', $template_id = 0, $is_supply = 0) { $data = [ 'appid' => $this->appInfo['app_id'], 'goods_id' => $goods_id, 'sku_image' => explode(',', $GoodsInfo['goods_image'])[0], 'site_id' => $this->SiteInfo['site_id'], 'ag_site_id' => $this->ag_site_id, 'cloud_id' => $cloud_id, 'open_offer_id' => $itemId, 'template_id' => $template_id, 'is_supply' => $is_supply, 'channel_type' => $channel_type, 'third_party_name' => $third_party_name, 'goods_name' => $GoodsInfo['goods_name'], 'create_time' => time(), 'update_time' => time(), ]; $res = $follow->addGoodsWarehousing($data); if ($res) { return success(); } else { return error(); } } /*** * 获取我的关注列表 * @return array */ public function followlist() { $page_index = input('page', 1); $page_size = input('pageSize', 20); $keyword = input('keyword'); $follow = new GoodsWarehousing(); $where = [ ['site_id', '=', $this->SiteInfo['site_id']], ['appid', '=', $this->appInfo['app_id']], ]; if ($keyword) { $where[] = ['goods_name', 'like', "%{$keyword}%"]; } $field = 'goods_id as itemId,goods_name as title,sku_image as imgUrl,channel_type,open_offer_id,cloud_id'; $result = $follow->getPageList($where, $field, '', $page_index, $page_size); foreach ($result['list'] as $k => &$v) { $v['isfollow'] = 1; if ($v['channel_type'] == '1688' && $v['itemId'] == 0) { $v['itemId'] = $v['open_offer_id']; } } return $result; } public function details() { $itemIds = input('itemIds'); $cloud_id = input('cloud_id'); $ids = explode(',', $itemIds); if (count($ids) > 5) return error(-1, '最多只能获取5个商品'); $data_list = model('supply_goods')->getList( [ ['goods_id', 'in', $ids] ], 'goods_id as itemId,site_name,category_id,goods_class,category_name,goods_name,keywords,introduction,video_url,unit,goods_image,goods_content,is_free_shipping,shipping_template,min_num,market_price,price,min_price,max_price,goods_state,goods_stock,is_virtual,channel_type,goods_spec_format,goods_attr_format', ); $goods_model = new GoodsModel(); foreach ($data_list as $k => &$v) { $category_id = explode(',', $v['category_id']); $v['category_id'] = end($category_id); $v['goods_image'] = $this->ImagesURL($v['goods_image']); $goods_sku_list = $goods_model->getGoodsSkuList([['goods_id', '=', $v['itemId']]], "sku_id,goods_class,sku_name,sku_no,sku_spec_format,price_json,min_num,market_price,stock,weight,volume,sku_image,sku_images"); $goods_sku_list = $goods_sku_list['data']; foreach ($goods_sku_list as &$vv) { $vv['sku_image'] = $this->ImagesURL($vv['sku_image']); $vv['sku_images'] = $this->ImagesURL($vv['sku_images']); // $vv['price_json'] = json_decode($vv['price_json'], true); // $vv['sku_spec_format'] = json_decode($vv['sku_spec_format'], true); // if ($vv['extend_sku_id'] == '') { // $vv['extend_sku_id'] = $vv['sku_id']; // } } $v['cloud_type'] = 'own'; $v['sku_list'] = $goods_sku_list; unset($v['channel_type']); ksort($v); } // if ($this->AgConfig['is_supply'] == 1) { // $item_arr = []; // if ($data_list) { // $item_arr = array_column($data_list, 'itemId'); // } // $temp_arr = array_diff($ids, $item_arr); // var_dump($ids, $item_arr);die; // if ($temp_arr && $cloud_id == 'ag') { // $follow = new GoodsWarehousing($this->SupplyInfo); // $info = $this->Choice->productInfoGet(array_values($temp_arr)); // if (!isset($info['error_code']) && $info['result']['result']) { // $result = $info['result']['result']; // foreach ($result as $key => $val) { // $val['goods_id'] = 0; // $GoodsInfo = $follow->Generate1688GoodsInfo($val['productInfo'], $this->AgConfig['template_id'], 'normal'); // $GoodsInfo['itemId'] = $GoodsInfo['extend_goods_id']; // $GoodsInfo['cloud_id'] = 'ag'; // $GoodsInfo['goods_spec_format'] = json_decode($GoodsInfo['goods_spec_format'], true); // $GoodsInfo['goods_attr_format'] = json_decode($GoodsInfo['goods_attr_format'], true); // $goods_sku_data = json_decode($GoodsInfo['goods_sku_data'], true); // $category_id = array_unique(explode(',', $GoodsInfo['category_id'])); // $GoodsInfo['category_id'] = end($category_id); // foreach ($goods_sku_data as $k1 => $v1) { // $goods_sku_data[$k1]['price_json'] = json_decode($v1['price_json'], true); // unset($goods_sku_data[$k1]['cost_price'], $goods_sku_data[$k1]['goods_supplier_format']); // unset($goods_sku_data[$k1]['site_id'], $goods_sku_data[$k1]['goods_id'], $goods_sku_data[$k1]['sku_id']); // } // $GoodsInfo['sku_list'] = $goods_sku_data; // unset($GoodsInfo['goods_id'], $GoodsInfo['extend_goods_id'], $GoodsInfo['cost_price'], $GoodsInfo['channel_type'], $GoodsInfo['channel_type']); // unset($GoodsInfo['goods_sku_data'], $GoodsInfo['website_id'], $GoodsInfo['category_array'], $GoodsInfo['category_json']); // unset($GoodsInfo['goods_stock_alarm'], $GoodsInfo['site_id'], $GoodsInfo['verify_state']); // ksort($GoodsInfo); // $data_list[] = $GoodsInfo; // } // } // } // } if (empty($data_list)) { return error(-1, '商品不存在'); } else { return $data_list; } } public function ImagesURL($images) { $images = explode(',', $images); $data_list = []; foreach ($images as $k => $v) { $data_list[] = img($v); } return implode(',', $data_list); } }