Model_logic_crm.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <?php
  2. /**
  3. * 对接crm接口
  4. */
  5. class Model_logic_crm extends Lin_Model {
  6. function __construct(){
  7. parent::__construct();
  8. $this->load->_model('Model_express','express');
  9. $this->load->_model("Model_logic_ding","logic_ding");
  10. }
  11. public function panduan($order_info,$type,$express_info){
  12. if(empty($order_info)){
  13. return ;
  14. }
  15. if(!is_array($order_info)){
  16. return ;
  17. }
  18. //目前只有 4 店铺才处理
  19. if(!in_array($order_info['shop'],[4])){
  20. return ;
  21. }
  22. $express_info = $this->express->read($order_info['express']);
  23. if($type == 1){
  24. return ;
  25. return $this->orderCreated($order_info,$express_info);
  26. }
  27. if($type == 2){
  28. return $this->sendOutWarehouse($order_info,$express_info);
  29. }
  30. if($type == 3){
  31. return $this->orderPredelivery($order_info,$express_info);
  32. }
  33. if($type == 4){
  34. return $this->orderDelivery($order_info,$express_info);
  35. }
  36. }
  37. //处理转化接口需要的数据
  38. protected function transferData($order_info,$express_info){
  39. $len = strlen((string)$order_info['shop']);
  40. //var_dump($order_info['orderinfo']);
  41. $increment_id = substr($order_info['orderinfo'],$len);
  42. //var_dump($increment_id);
  43. $item_list = [
  44. // [
  45. // "title"=>"",
  46. // "sku"=>"",
  47. // "qty"=>0,
  48. // ]
  49. ];
  50. $sku_list = explode(",",$order_info['issku']);
  51. $product_list = explode(",",$order_info['product']);
  52. $qty_list = explode(";",$order_info['quantity']);
  53. $flag = false;
  54. foreach($sku_list as $key => $value){
  55. if(empty($product_list[$key])){
  56. $flag= true;
  57. }
  58. $item_list[] = [
  59. "name"=>$product_list[$key],
  60. "sku"=>$value,
  61. "qty"=>isset($qty_list[$key])?$qty_list[$key]:1,
  62. ];
  63. }
  64. if($flag){
  65. return ;
  66. }
  67. // foreach($sku_list as $key => $value){
  68. // $item_list[] = [
  69. // "name"=>$product_list[$key],
  70. // "sku"=>$value,
  71. // "qty"=>isset($qty_list[$key])?$qty_list[$key]:1,
  72. // ];
  73. // }
  74. $address = "";
  75. if(!empty($order_info['street'])){
  76. $address .= $order_info['street'];
  77. }
  78. if(!empty($order_info['address'])){
  79. $address .= $order_info['address'];
  80. }
  81. if(!empty($order_info['address2'])){
  82. $address .= $order_info['address2'];
  83. }
  84. $info = [
  85. "website_id"=>(int)$order_info['shop'],
  86. "orderinfo"=>[
  87. "increment_id"=>$increment_id,
  88. "store_id"=>$order_info['shop'],
  89. "customer_id"=>0,
  90. "customer_name"=>$order_info['client'],
  91. "customer_email"=>$order_info['email'],
  92. "customer_phone"=>$order_info['phone'],
  93. "grand_total" =>$order_info['shouldmoney'],
  94. "country"=>$order_info['al'],
  95. "product_items"=>$item_list,
  96. "created_at"=>$order_info['dtime'],//建议只精确到天 不要时分秒
  97. "updated_at"=>0,//发货时间
  98. "address"=>[
  99. "street"=> $address,
  100. "city"=> $order_info['city'],
  101. "province"=> $order_info['province'],
  102. "zip"=> $order_info['zipcode'],
  103. "country"=> $order_info['al'],
  104. "phone"=> $order_info['phone'],
  105. ]
  106. ]
  107. ];
  108. return $info;
  109. }
  110. //订单创建
  111. protected function orderCreated($order_info,$express_info = []){
  112. $info = $this->transferData($order_info,$express_info);
  113. if(empty($info)){
  114. return ;
  115. }
  116. $info['updated_at'] = $order_info['time'];
  117. $info["act"] = "order_created";
  118. $info["status"]='pending';//订单进行中
  119. $this->sendOrderNotice(json_encode($info));
  120. }
  121. //向crm发送订单出货通知
  122. /**
  123. * @param $order_info 订单信息
  124. * @param $express_info 快递公司信息
  125. */
  126. protected function sendOutWarehouse($order_info,$express_info =[]){
  127. $info = $this->transferData($order_info,$express_info);
  128. if(empty($info)){
  129. return ;
  130. }
  131. $info['updated_at'] = time();
  132. $info["act"] = "order_shipped";
  133. $info["status"]='processing';//订单进行中
  134. $info['orderinfo']['tracking_number'] = $order_info['waybill'];
  135. $info['orderinfo']['carrier'] = $express_info['iscode'];
  136. $info['orderinfo']['tracking_url'] = $express_info['url'];
  137. $this->sendOrderNotice(json_encode($info));
  138. }
  139. //订单预计送达时间
  140. protected function orderPredelivery($order_info,$express_info =[]){
  141. $info = $this->transferData($order_info,$express_info);
  142. if(empty($info)){
  143. return ;
  144. }
  145. $info['updated_at'] = time();
  146. $info["act"] = "order_predelivery";
  147. $info["status"]='processing';//订单进行中
  148. $info['orderinfo']['tracking_number'] = $order_info['waybill'];
  149. $info['orderinfo']['carrier'] = $express_info['iscode'];
  150. $info['orderinfo']['tracking_url'] = $express_info['url'];
  151. $this->sendOrderNotice(json_encode($info));
  152. }
  153. //向crm 发送订单收获通知
  154. protected function orderDelivery($order_info,$express_info =[]){
  155. $info = $this->transferData($order_info,$express_info);
  156. if(empty($info)){
  157. return ;
  158. }
  159. $info['updated_at'] = time();
  160. $info["act"] = "order_delivery";
  161. $info["status"]='processing';//订单进行中
  162. $info['orderinfo']['tracking_number'] = $order_info['waybill'];
  163. $info['orderinfo']['carrier'] = $express_info['iscode'];
  164. $info['orderinfo']['tracking_url'] = $express_info['url'];
  165. $this->sendOrderNotice(json_encode($info));
  166. }
  167. //向crm发送订单通知
  168. protected function sendOrderNotice($params){
  169. $all_url = "http://crm.hnwmzp.cn/sqs";
  170. $ch = curl_init($all_url);
  171. // 设置cURL选项
  172. $options = array(
  173. CURLOPT_SSL_VERIFYPEER=>false,
  174. CURLOPT_SSL_VERIFYHOST=>false,
  175. CURLOPT_RETURNTRANSFER => true,
  176. CURLOPT_POST => true,
  177. CURLOPT_POSTFIELDS => $params,
  178. CURLOPT_HTTPHEADER => [
  179. 'lytoken'=>'lytec',
  180. 'Content-Type: application/json'
  181. ],
  182. );
  183. // 应用这些选项到cURL会话
  184. curl_setopt_array($ch, $options);
  185. // 执行cURL会话并获取响应
  186. $response = curl_exec($ch);
  187. //var_dump( $response );
  188. // 检查是否有错误发生
  189. if ($response === false) {
  190. $error = curl_error($ch);
  191. curl_close($ch);
  192. return [
  193. "code"=> -1,
  194. "msg"=> $error
  195. ];
  196. }
  197. // 关闭cURL会话
  198. curl_close($ch);
  199. // 输出响应内容
  200. return json_decode($response,true);
  201. }
  202. }