'待付款', 1 => '已付款待审核', 2 => '已审核待发货', 3 => '已发货', ); $orderList['status'] = $staus_arr[$orderList['status']]; $result = self::mjApi($orderList); return $result; } /** * 更新订单 */ public static function mjOrderUpdate($orderList){ $orderList["method"] = "maijiayun.order.update"; $staus_arr = array( 0 => '待付款', 1 => '已付款待审核', 2 => '已审核待发货', 3 => '已发货', 4 => '已取消', ); $orderList['status'] = $staus_arr[$orderList['status']]; $result = self::mjApi($orderList); return $result; } /** * 取消订单 */ public static function mjOrderDel($orderList){ $orderList["method"] = "maijiayun.order.update"; $orderList['status'] = '已取消'; $result = self::mjApi($orderList); return $result; } /** * 获取订单 */ public static function mjOrderGet($order){ $order["method"] = "maijiayun.order.get"; $result = self::mjApi($order); return $result; } /** * 添加Erp商品 */ public static function mjErpGoodsAdd($goods){ $goods["method"] = "maijiayun.goods.sku.add"; $result = self::mjApi($goods); return $result; } /** * 添加商品 */ public static function mjGoodsAdd($goods){ $goods["method"] = "maijiayun.eshop.goods.add"; $result = self::mjApi($goods); return $result; } /** * 更新商品 */ public static function mjGoodsUpdate($goods){ $goods["method"] = "maijiayun.eshop.goods.update"; $result = self::mjApi($goods); return $result; } /** * 更新erp商品 */ public static function mjErpGoodsUpdate($goods){ $goods["method"] = "maijiayun.goods.update"; $result = self::mjApi($goods); return $result; } /** * 批量添加sku */ public static function mjBatchSkuAdd($sku){ $sku["method"] = "maijiayun.eshop.sku.batchAdd"; //批量添加 //$sku["method"] = "maijiayun.eshop.sku.add"; $result = self::mjApi($sku); return $result; } /** * 添加单个sku */ public static function mjSkuAdd($sku){ $sku["method"] = "maijiayun.eshop.sku.add"; $result = self::mjApi($sku); return $result; } /** * 修改Erp sku */ public static function mjErpSkuUpdate($sku){ $sku["method"] = "maijiayun.goods.sku.update"; $result = self::mjApi($sku); return $result; } /** * 修改shop sku */ public static function mjSkuUpdate($sku){ $sku["method"] = "maijiayun.eshop.sku.update"; $result = self::mjApi($sku); return $result; } /** * 获取 sku 库存 */ public static function mjWarehouseSkuGet($sku){ $sku["method"] = "maijiayun.warehouse.sku.list"; $result = self::mjApi($sku); return $result; } public static function mjApi($params = array()){ $accessKey = env('ERP_ACCESS_KEY'); $accessSecret = env('ERP_ACCESS_SECRET'); $params["timestamp"] = time()."000"; $params["version"] = "v1"; $reqparams = $params; ksort($reqparams); $sign = ""; foreach($reqparams as $k=>$val){ if(is_array($val)){ $val = json_encode($val,320); } $sign.=$k.$val; } $params["accessKey"] = $accessKey; $params["token"] = strtoupper(sha1($accessKey.$sign.$accessSecret)); $param = json_encode($params); $ch = curl_init(); $headers = array("Content-type:application/json;charset='utf-8'","Accept:application/json", "Cache-Control: no-cache", "Pragma: no-cache"); curl_setopt($ch, CURLOPT_URL, "http://w8t1clwezn5y.cn-north-1.jdcloud-api.net/open/openapi"); //api 地址 curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); $response = json_decode($response, true); Log::scriptLog($params,['mjApi_response'=>$response],"order/mjApi",1,''); if (!$response || !is_array($response)) { return false; } if (!array_key_exists("isOk", $response)) { return false; } elseif( $response['isOk'] == false){ Log::scriptLog($params,['mjApi_response'=>$response],"order/mjApi",0,''); return false; } else { return $response; } } /*更新城市天气信息*/ public static function updateWeather($order_id) { $redisKey = 'seafood_order_city_weather'; //查询订单收件人所在的城市(过滤关键字 市) $city = Order::where('id', $order_id)->pluck('receiverCity'); $city = str_replace('市','',$city); $specialCity = array('朝阳区','嘉定区','海淀区','昌平区','密云区','大兴区','房山区','通州区','普陀区',); if(in_array($city, $specialCity)) { $city = str_replace('区','',$city); } //查询redis中是否有该键,若没有则查询 $weather = RedisModel::get($redisKey.'_'.$city); if($weather) { $sellerMemo = Order::where('id', $order_id)->pluck('sellerMemo'); if(strstr($sellerMemo, $city.'天气状况:'.$weather)) { return true; } $sellerMemo = $sellerMemo.' '.$city.'天气状况:'.$weather; Log::scriptLog(['order_id'=>$order_id, 'city'=> $city , 'app_key'=>''],['weather'=>$weather],"order/weather",1,''); Order::where('id', $order_id)->update(['sellerMemo'=>$sellerMemo]); } else { $appKey = self::getAppKey(); $url = 'http://apis.juhe.cn/simpleWeather/query?city='.urlencode($city).'&key='.$appKey; $result = file_get_contents($url); $result = json_decode($result, true); if($result['error_code'] == '0') { //将数据缓存到redis里 $today = date('Y-m-d',time()); $tomorrow = date('Y-m-d',strtotime('+1 days')); $weather = ''; foreach ($result['result']['future'] as $value) { if($value['date'] == $today) { $weather .= $today.'日气温:'.$value['temperature'].'; '; } if($value['date'] == $tomorrow) { $weather .= $tomorrow.'日气温:'.$value['temperature']; } } RedisModel::set($redisKey.'_'.$city, $weather); $endTime = strtotime(date('Y-m-d 00:00:00',strtotime('+1 days'))) -1; $expire = $endTime - time(); RedisModel::expire($redisKey.'_'.$city, $expire); $sellerMemo = Order::where('id', $order_id)->pluck('sellerMemo'); if(strstr($sellerMemo, $city.'天气状况:'.$weather)) { return true; } $sellerMemo = $sellerMemo.' '.$city.'天气状况:'.$weather; Log::scriptLog(['order_id'=>$order_id, 'city'=> $city , 'app_key'=>$appKey],['weather'=>$weather],"order/weather",1,''); Order::where('id', $order_id)->update(['sellerMemo'=>$sellerMemo]); } else if($result['error_code'] == '10012'){ //判断是否为第二个APPkey也用完了 $key = (string) RedisModel::get('seafood_order_city_weather_key'); if($key == '0') { //超过100次/天上限 更换APPKey RedisModel::set('seafood_order_city_weather_key', '1'); $endTime = strtotime(date('Y-m-d 00:00:00',strtotime('+1 days'))) -1; $expire = $endTime - time(); RedisModel::expire('seafood_order_city_weather_key', $expire); self::updateWeather($order_id); } } } return true; } public static function getAppKey() { $redisKey = 'seafood_order_city_weather_key'; $appKeyArr = ['32c8f844f8055f70f702fc28ec930e52', '85bfc19adb25998b2559d7ceba950e13']; $appKey = (string)RedisModel::get($redisKey); if($appKey != '') { return $appKeyArr[$appKey]; } else { RedisModel::set($redisKey, '0'); $endTime = strtotime(date('Y-m-d 00:00:00',strtotime('+1 days'))) -1; $expire = $endTime - time(); RedisModel::expire($redisKey, $expire); return $appKeyArr['0']; } } }