一:功能:
設定定時任務,把匯入到(鑫/3)蝶erp,並在(鑫/3)蝶erp已經發貨(有物流單號、物流公司)的訂單,回傳到匯入訂單的後台,並更改該後台相對應的訂單發貨狀態。
其實可以理解為是兩個平台之間的資料交換:即a平台給b平台匯入訂單資料,b平台向a平台反饋訂單資料的發貨狀態。
二:先說一下設計理念:
1.一定有從外部(比如微商後台),導到(鑫/3)蝶erp的訂單,並且有相應的訂單記錄,至少要有訂單號(唯一主鍵);
3.需要考慮(鑫/3)蝶erp拆單發貨的情況;
4.需要做好相關的日誌記錄。
三:上**:
【第一部分,拉取目標已發貨的訂單資料】:
曾考慮過,方向放在查出(鑫/3)蝶erp的發貨記錄,但是想了想這肯定不現實,資料量太多了而且即便加了時間範圍也不好控制人為更新發貨狀態的時間;
所以,應是搜尋本地匯入鑫/3)蝶erp的訂單資料記錄:
//查詢本地物流單號為空(即未發貨)的(鑫/3)蝶訂單主鍵:對映關係,我本地的order_id對應(鑫/3)蝶erp的fsiteorderid(網上訂單號),local_id對應(鑫/3)蝶erp的forderid(本地訂單號):
$order_id_str = '';
$local_id_arr = array();
$selectsql = "select order_id,local_id from order where jindie_k3_wuliuid = '' or jindie_k3_wuliuid is null;";
$result = $conn->query($selectsql);
while($row = $result->fetch_assoc())
if($row['local_id'])
}if($order_id_str)_%';";
$selectlocalresult = $pdo_object->query($selectlocalsql);
//如已發貨則查出形成$fid_arr_other陣列。
$fid_arr_other_only = $selectlocalresult->fetchall();
//做一定的格式處理
if(is_array($fid_arr_other_only) && !empty($fid_arr_other_only))
}//把主單和拆單的資料合併到$fid_arr---後面需要對$fid_arr做資料去重;
if( (is_array($fid_arr_other) && !empty($fid_arr_other)) && (is_array($fid_arr) && !empty($fid_arr)) )
}if(is_array($fid_arr_other) && !empty($fid_arr_other) && empty($fid_arr))}}
//組裝介面對接的資料格式:$return_arr_result,同時更改本地的訂單資料記錄為已發貨狀態,記錄訂單號和物流公司
//2018-11-19更新:增加一道過濾,因為拆單查出來的單子,有重複的訂單;
$guolv_arr = explode(",",$order_id_str);
$return_arr_result = array();
if(is_array($fid_arr) && !empty($fid_arr))
$jindie_k3_wuliuid = $fv['flogisticsorder'];
$jindie_k3_wuliu_company = $fv['flogisticscomp'];
if($fsiteorderid && $jindie_k3_wuliuid && $jindie_k3_wuliu_company)}}
$updatewuliusql ='';
if($jindie_k3_wuliuid && $fsiteorderid)',jindie_k3_wuliu_company='' where order_id='';";
}if($updatewuliusql)}}
//由於拆單,導致會有多條物流資訊記錄,但有時候我們只需要匯入到erp那條主訂單的物流資訊,所以需要訂單資料去重,如果需要主訂單和所有拆單的物流資訊,則不需要去重了,看怎麼設計吧,得到最後的$send_arr;
$send_arr_last = array();
foreach ($return_arr_result as $re_k => $re_v)
$send_arr_last = array_values($send_arr_last);
$send_arr = $send_arr_last;
【第三部分,與第三方介面對接資料】:
$responsedata = json_decode($response, true ,512 ,json_bigint_as_string);
echo "\n";
echo "介面返回的結果為:";
echo "\n";
print_r($responsedata);
echo "\n";
【第四部分,記錄日誌】:
//插入日誌記錄
$insertlogsql="insert into sendorderlog(
send_url,
send_key,
send_data,
return_result,
send_time
) values(
'','',
'','',
'');";
$conn->query($insertlogsql);
}else
到這裡就這樣結束了~
思考1:如果一次性需要傳送的資料太多了,這裡就可以再改造一下下哦~原理和流程大體相同吧。
思考2:好像沒有看到第三方加密的方式?哈哈,打算另外一篇博文專門寫~~
思考3:本地已經記錄了傳送的訂單號和物流公司怎麼辦呢,但最後傳送的介面不成功咋辦呢?
奶爸日記3 給鑫鑫做的第一頓飯
今天週六,2020年9月12日,鑫鑫媽媽和鑫鑫婆婆去醫院了,鑫鑫婆婆眼睛最近不太舒服,所以今天就我乙個人在家帶娃娃,昨天晚上睡覺前,商量好了,因為我還沒有給鑫鑫做過飯菜,之前給娃娃做飯的鑫鑫婆婆和鑫鑫媽媽廚藝太好了,但是我做出來的飯菜萬一娃娃不合胃口不吃就比較尷尬,所以鑫鑫媽媽建議我就中午給鑫鑫衝奶...
第12期 花飛蝶舞驚蟄 3月刊
1.寄語2016 不亂腳步,不慌流年 張婷 一年一年的成長,回顧昨天,把握今天,展望明天,提高班的兄弟姐妹們,我們一直在奮鬥的路上,浮華的社會,給自己一顆穩重的心!2.程式設計基礎 程式小白臉盲症之過載 重寫 多型 宋榮凱 過載 重寫 多型,你是否理解它們,在我們學習中,你是否對它們有所模糊,這篇文...
css3 新知識(張鑫旭學)
1.新增濾鏡 給新增濾鏡,背景圖是加的,然後給mix blend mode screen 就可以實現濾鏡 給新增filter hue rotate 180deg 可以使變色 2.切換轉場動畫 in keyframes clipcirclein 100 使用的是clip path中的circle方法,...