Project

General

Profile

New Function #144

Updated by Deca Park 10 months ago

<p><strong>[Scheduler] delivery tracking</strong></p> 

 <p>1.cron tab<br /> 
 &nbsp; - <strong>12:00 every day</strong></p> 

 <p>2.process<br /> 
 &nbsp; 1) select target list<br /> 
 &nbsp; &nbsp; DB: st_order<br /> 
 &nbsp; &nbsp; condition:<br /> 
 &nbsp; &nbsp; &nbsp; st_mall.mall_type=&#39;online&#39; AND<br /> 
 &nbsp; &nbsp; &nbsp; (<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; (order_status=&#39;OS02&#39; (배송중) AND delivery_invoice_no is NOT empty(NULL))<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; OR<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; (order_status=&#39;OS30&#39; (교환재배송중) AND redelivery_invoice_no is NOT empty(NULL))<br /> 
 &nbsp; &nbsp; &nbsp; )<br /> 
 &nbsp; 2) call tracking request API (each selected target)<br /> 
 &nbsp; &nbsp; a) config properties<br /> 
 &nbsp; &nbsp; &nbsp; a-1) dev<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#e74c3c;">delivery.api.tracking.domain=http://trace-api-dev.sweettracker.net:8102<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; delivery.api.tracking.tier=testuser<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;delivery.api.tracking.key=testuser</span><br /> 
 &nbsp; &nbsp; &nbsp; a-2) prod<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#e74c3c;">delivery.api.tracking.domain=http://trace-api.sweettracker.net/<br style="color:#e74c3c;">delivery.api.tracking.domain=http://trace-api-dev.sweettracker.net:8102<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; delivery.api.tracking.tier=<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;delivery.api.tracking.key=</span><br /> 
 <br /> 
 &nbsp; &nbsp; b) API (refer to attach pdf &gt; 3.3 운송장 추적 요청 API)<br /> 
 &nbsp; &nbsp; &nbsp; b-1) URL: POST {delivery.tracking.domain}/add_invoice<br /> 
 &nbsp; &nbsp; &nbsp; b-2) parameter<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - num:&nbsp;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if order_status=&#39;OS02&#39;, {delivery_invoice_no} (after remove space or &quot;-&quot;)<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if order_status=&#39;OS30&#39;, {redelivery_invoice_no} (after remove space or &quot;-&quot;)<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - code:&nbsp;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if order_status=&#39;OS02&#39;, {delivery_company_code}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if order_status=&#39;OS30&#39;, {redelivery_company_code}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - fid :<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if order_status=&#39;OS02&#39;, &quot;OS02:&quot; + {order_no}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if order_status=&#39;OS30&#39;, &quot;OS30:&quot; + {order_no}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - callback_url: {site.domain}/delivery/tracking_receive<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - callback_type: &quot;json&quot;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - tier: {delivery.api.tracking.tier}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - key: {delivery.api.key}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - type: &quot;json&quot;<br /> 
 &nbsp; 3) log<br /> 
 &nbsp; &nbsp; a) if API call success<br /> 
 &nbsp; &nbsp; &nbsp; - leave log: level(DEBUG), message: &quot;[Scheduler] DeliveryTracking Request Success: num={num},fid={fid}&quot;<br /> 
 &nbsp; &nbsp; b) if API call fails<br /> 
 &nbsp; &nbsp; &nbsp; - leave log: level(ERROR), message: &quot;[Scheduler] DeliveryTracking Request Fail: num={num},fid={fid},e_code={e_code},e_message={e_message}&quot;</p> 

 <p><strong>[Callback] delivery tracking</strong></p> 

 <p>1.API (refer to attach pdf &gt; 3.5 운송장 추적정보 수신API(Callback_URL))<br /> 
 &nbsp; 1) <strong>URL: POST {site.domain}/delivery/tracking_receive<br /> 
 &nbsp; &nbsp; - permit all</strong></p> 

 <p>2.process<br /> 
 &nbsp; 1) get fid / invoice_no / level parameter<br /> 
 &nbsp; &nbsp; &nbsp; - parse fid and get order_status and order_no (ex: OS02:231108180642UHFS)<br /> 
 &nbsp; &nbsp; &nbsp; - <span style="color:#e74c3c;">leave log: level(DEBUG), message: &quot;[Scheduler] DeliveryTracking Callback Receive: fid={fid},invoice_no={invoice_no},level={level}&quot;</span><br /> 
 &nbsp; 2) select order<br /> 
 &nbsp; &nbsp; &nbsp; DB: st_order<br /> 
 &nbsp; &nbsp; &nbsp; conditions: order_no={order_no param} AND order_status={order_status param}<br /> 
 &nbsp; 3) if no select data, break<br /> 
 &nbsp; 4) update order status<br /> 
 &nbsp; &nbsp; &nbsp;4-1) if {order_status param} = &#39;OS02&#39;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp;a) if <strong>st_oder.delivery_invoice_no</strong> = {invoice_no param} and {level param} = 6<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - UPDATE st_order<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET order_status=&#39;OS03&#39; (배송완료), mod_date={current datetime}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#e74c3c;">condition:&nbsp;order_no={order_no param}</span><br /> 
 &nbsp; &nbsp; &nbsp;4-2) if {order_status param} = &#39;OS30&#39;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp;a) if <strong>st_oder.redelivery_invoice_no</strong> = {invoice_no param} and {level param} = 6<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - UPDATE st_order<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET order_status=&#39;OS31&#39; (교환완료), mod_date={current datetime}<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#e74c3c;">condition:&nbsp;order_no={order_no param}</span><br /> 
 &nbsp; &nbsp; &nbsp;4-3) <span style="color:#e74c3c;">leave log<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp;level(DEBUG), message: &quot;[Scheduler] DeliveryTracking Callback Process: order_no={order_no},order_status={updated order_status}&quot;</span></p> 

Back