lqmac 11 months ago
parent d20fd4d5a8
commit 01b807f044
  1. 47
      app/api/model/Goods.php
  2. 65
      app/common.php
  3. 29
      app/common/service/Jd.php
  4. 1
      app/store/controller/Store.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 .= '<p><img src="' . $value . '"/></p>';
}
$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);

@ -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);
}

@ -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 [];
}
}

@ -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) {

Loading…
Cancel
Save