diff --git a/app/api/model/Goods.php b/app/api/model/Goods.php index 1554e55d..9a42571c 100644 --- a/app/api/model/Goods.php +++ b/app/api/model/Goods.php @@ -318,7 +318,45 @@ class Goods extends GoodsModel return $info; } - + /** + * 商品主图、商品轮播图、商品详情处理 + * [dealGoodsImage description] + * @param [type] &$goodsInfo [description] + * @return [type] [description] + */ + public function dealGoodsImage(&$goodsInfo){ + switch ($goodsInfo->channel) { + case 'jd': + $jd = new \app\common\service\Jd(); + $res = $jd->getGoodsMainImageAndDetail($goodsInfo->goods_no); + if ($res) { + $goods_images = []; + foreach ($res['mainImageList'] as $seq => $image) { + $goods_images[] = [ + 'file_id' => $seq, + 'file_type' => 10, + 'preview_url' => $image, + 'external_url' => $image, + ]; + } + $goodsInfo->goods_images = $goods_images; + $goodsInfo->goods_image = $res['mainImageList'][0]; + $content = ""; + foreach ($res['infoImageList'] as $value) { + $content .= '

'; + } + $goodsInfo->content = $content; + } + break; + case 'sn': + // code... + break; + default: + // code... + break; + } + + } /** * 获取商品详情 (详细数据用于页面展示) * @param int $goodsId 商品ID @@ -342,6 +380,8 @@ class Goods extends GoodsModel } // 获取商品记录 $goodsInfo = $this->getGoodsMain($goodsId, $with, $verifyStatus); + + $this->dealGoodsImage($goodsInfo); // 商品规格列表 $goodsInfo['specList'] = GoodsSpecRelModel::getSpecList($goodsInfo['goods_id']); @@ -442,6 +482,7 @@ class Goods extends GoodsModel { // 获取商品记录 $goodsInfo = static::detail($goodsId, $with); + if ($goodsInfo->skuList) { foreach ($goodsInfo->skuList as &$value) { $goods_image = GoodsImage::where('goods_id', $value['goods_id'])->order("id asc")->find(); @@ -518,7 +559,7 @@ class Goods extends GoodsModel return $this->setGoodsData($goodsInfo, function ($goods) { // 计算并设置商品会员价 - $this->getEnableGradeMoney() && $this->setGoodsGradeMoney($goods); + //$this->getEnableGradeMoney() && $this->setGoodsGradeMoney($goods); //计算plus 分销价格 $this->setGoodsMoney($goods); @@ -722,7 +763,7 @@ class Goods extends GoodsModel 'is_limit' => $data['is_limit'], 'limit_times' => $data['limit_times'], 'sec_start_time' => $data['sec_start_time'], - 'sec_end_time' => $data['sec_end_time'], + // 'sec_end_time' => $data['sec_end_time'], 'sec_hour' => $data['sec_hour'], ]; $skuData->save($up_data); diff --git a/app/common.php b/app/common.php index a3123d0a..98252ff5 100644 --- a/app/common.php +++ b/app/common.php @@ -518,3 +518,68 @@ if (!function_exists('downLoadExcel')){ exit; } } + +/** + * CURL请求 + * @param $url 请求url地址 + * @param $method 请求方法 get post + * @param null $postfields post数据数组 + * @param array $headers 请求header信息 + * @param bool|false $debug 调试开启 默认false + * @return mixed + */ +//Modified by Shayne Song to solve problem that OFPAY video vip card buying interface need 15 seconds to return result on 2018/03/19. +function httpRequest($url, $method="GET", $postfields = null, $headers = array(), $debug = false, $timeout = 10) { + $method = strtoupper($method); + $ci = curl_init(); + /* Curl settings */ + curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); + curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"); + curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */ + curl_setopt($ci, CURLOPT_TIMEOUT, $timeout); /* 设置cURL允许执行的最长秒数 */ + curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); + switch ($method) { + case "POST": + curl_setopt($ci, CURLOPT_POST, true); + if (!empty($postfields)) { + $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields; + curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr); + } + break; + default: + curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */ + break; + } + $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE; + curl_setopt($ci, CURLOPT_URL, $url); + if($ssl){ + curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts + curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在 + } + //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/ + curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/ + curl_setopt($ci, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ci, CURLINFO_HEADER_OUT, true); + /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */ + $response = curl_exec($ci); + $requestinfo = curl_getinfo($ci); + $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); + $curl_error = curl_errno($ci); + if($curl_error){ + Log::error("ERROR_CODE:{$curl_error} | URL:".$url.' | postfields:'.json_encode($postfields),'curl_error'); + //sys_log("ERROR_CODE:{$curl_error} | URL:".$url.' | postfields:'.json_encode($postfields),'curl_error'); + //\app\common\util\ErrorAlert::curlWarning($url,$curl_error); + } + if ($debug) { + echo "=====post data======\r\n"; + var_dump($postfields); + echo "=====info===== \r\n"; + print_r($requestinfo); + echo "=====response=====\r\n"; + print_r($response); + } + curl_close($ci); + return json_decode($response, true); + //return array($http_code, $response,$requestinfo); +} diff --git a/app/common/service/Jd.php b/app/common/service/Jd.php index c64e2de3..44c2e0ee 100644 --- a/app/common/service/Jd.php +++ b/app/common/service/Jd.php @@ -57,5 +57,32 @@ class Jd extends BaseService { return $res['result']; } return null; - } + } + /** + * 实时获取商品主图和详情 + * [getGoodsMainImageAndDetail description] + * @param [type] $skuId [description] + * @return [type] [description] + */ + public function getGoodsMainImageAndDetail($skuId){ + $url = "http://47.98.251.206:8811/api/goods/info/v2?sku=".$skuId."&areaId="; + $res = httpRequest($url); + if ($res && $res['code'] == 0 && isset($res['data'])) { + return $res['data']; + } + return []; + } + + + + + + + + + + + + + } diff --git a/app/store/controller/Store.php b/app/store/controller/Store.php index b88c67a3..bef6dcf2 100644 --- a/app/store/controller/Store.php +++ b/app/store/controller/Store.php @@ -75,6 +75,7 @@ class Store extends Controller */ public function platformList(): Json { + //$list = Channel::where('status', 1)->whereIn('code',['jd','sn','zy'])->select(); $list = Channel::where('status', 1)->whereIn('code',['zy'])->select(); $platformList = []; foreach ($list as $key => $value) {