feat: init project codebase

This commit is contained in:
sinde21
2026-09-14 16:32:07 +08:00
parent c4b2a15757
commit da20fde7fb
140 changed files with 27855 additions and 0 deletions
+474
View File
@@ -0,0 +1,474 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require "vendor/zto/zopsdk-php/ZopClient.php";
require "vendor/zto/zopsdk-php/ZopProperties.php";
require "vendor/zto/zopsdk-php/ZopRequest.php";
use zop\ZopClient;
use zop\ZopRequest;
use zop\ZopProperties;
/**
* 中通接口
* https://zop.zto.com/apiDoc/
*
* @extends CI_Model
*/
class Zto_model extends MY_Model {
protected $table = 'ship_order';
public function request($path='', $params=[])
{
$conf = $this->config->item('zto');
// ZopProperties类的构造方法接收两个参数,分别是companyid和key,都需要注册中通开放平台后到个人中心查看
$properties = new ZopProperties($conf['id'], $conf['key']);
$client = new ZopClient($properties);
$request = new ZopRequest();
$request->setUrl($conf['host'].$path);
if(isset($params['company_id'])){
$params['company_id'] = $conf['id'];
}
foreach ($params as $key=>$val) {
$request->addParam($key,$val);
}
$ret = $client->execute($request);
return json_decode($ret,true);
}
//寄送样品并获取运单号
public function shipSample($address=[])
{
$data = [
'orderGroup'=>[
"partnerCode"=> $address['trade_id'],//合作商订单号,为调用方生成,可以传订单号、主键、UUID等
"type"=> 1,//订单类型 1 普通订单(线上),2线下联系订单 默认1
"tradeId"=> $address['trade_id'],//交易号,由合作商平台产生。
"mailNo"=> "",//运单号(有则提供,线下联系订单必须提供)
"sender"=> [
"id"=> strval($address['user_id']),
"name"=> $address['name'],
"company"=> "",
"mobile"=> $address['tel'],
"phone"=> "",
"prov"=> $address['province'],
"city"=> $address['city'],
"county"=> $address['district'],
"address"=> $address['address'],
"zipcode"=> ""
],
"receiver"=> [
"id"=> "1",
"name"=> "有哈科技收样组",
"company"=> " ",
"mobile"=> "17321358370",
"phone"=> "",
"prov"=> "上海市",
"city"=> "上海市",
"county"=> "嘉定区",
"address"=> "兴贤路1180号5栋208室",
"zipcode"=> ""
],
"items"=> [
[
"id"=> "1",
"name"=> "唾液样本",
"category"=> "电子产品",
"material"=> "玻璃",
"size"=> "12,11,23",
"weight"=> "1",
"unitprice"=> "80",
"quantity"=> "1",
"remark"=> ""
]
],
"starttime"=> date('Y-m-d'),
"endtime"=> date('Y-m-d'),
"weight"=> 1,
"size"=> "12,23,11",
"quantity"=> 1,
"price"=> 80,
"freight"=> 10,
"premium"=> 0,
"packCharges"=> 0,
"otherCharges"=> 0,
"orderSum"=> 0,
"collectMoneytype"=> "CNY",
"collectSum"=> 1,
"remark"=> "玻璃制品,请轻拿轻放"
]
];
//echo json_encode($data);die;
//散客预约订单
$ret = $this->request('OpenOrderCreate',$data);
/*
* 返回示例
* {
"result": {
"esGroup": null,
"markGroup": null,
"orderCode": "200308000008003103"
},
"message": "操作成功",
"status": true,
"statusCode": "0"
}
*/
//print_r($ret);
if($ret['statusCode'] == '0' && isset($ret['result']['orderCode'])){
$row_base = [
'user_id'=>$address['user_id'],// 中通订单号
'order_code'=>$ret['result']['orderCode'],// 中通订单号
'partner_code'=>$address['trade_id'],// 中通订单号
'trade_id'=>$address['trade_id'],// 中通订单号
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
//"sender_company"=> "",
"sender_mobile"=> $address['tel'],
//"sender_phone"=> "",
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
//"sender_zipcode"=> ""
];
$row_ext = [];
/*
//查询订单
$ret_search = $this->commonOrderSearchbycode($ret['orderCode'],$address['user_id']);
//存订单
$order = $ret['result'];
if($ret_search['result']){
$detail = $ret_search['data']['order_list'];
if(!empty($detail[0])){
$detail = $detail[0];
$row_ext = [
'type'=>$order['type'],// 订单类型
'tradeid'=>$order['tradeid'],// 交易号
'mailno'=>$order['mailno'],// 运单号
'detail'=>json_encode($detail),// 原始数据
];
}
}
//todo:订阅快递信息
$this->add(array_merge($row_base,$row_ext));
*/
$id = $this->add($row_base);
return [true,'上门取货后获取'];
}else{
log_message('error', $ret['message']);
}
return [false,$ret['message']];
}
//预约寄件-订单明细查询
public function commonOrderSearchbycode($orderCode=[],$sendId,$partnerId='')
{
if(!is_array($orderCode)){
$orderCode = [$orderCode];
}
$params = [
"company_id"=>'',
"msg_type"=>'SEARCHBYCODE',
"data"=>[
"orderCode"=>$orderCode,//预约寄件下单后,获取的orderCode
"sendId"=>$sendId,//发件人在合作商平台中的ID号
#"partnerId"=>"",//合作商单号,非必填
]
];
$ret = $this->request('commonOrderSearchbycode',$params);
echo(json_encode($ret));die;
$ret = '{
"result": true,
"reason": "",
"data": {
"pageIndex": 1,
"pageSize": 10,
"count": 100,
"order_list": [
{
"orderCode": "130520142013234",
"type": "",
"tradeid": "2701843",
"mailno": "1000000000016",
"sender": {
"id": "130520142010",
"name": "李琳",
"company": "新南电子商务有限公司",
"mobile": "13912345678",
"phone": "021-87654321",
"area": "上海市",
"city": "上海市",
"county": "青浦区",
"address": "华新镇华志路123号",
"zipcode": "610012"
},
"receiver": {
"id": "130520142097",
"name": "杨逸嘉",
"company": "逸嘉实业有限公司",
"mobile": "13687654321",
"phone": "010-22226789",
"area": "四川省",
"city": "成都市",
"county": "武侯区",
"address": "育德路497号",
"zipcode": "610012"
},
"starttime": "2013-05-2012: 00: 00",
"endtime": "2013-05-2015: 00: 00",
"weight": 753,
"size": "12, 23, 11",
"quantity": 2,
"price": 12650,
"freight": 1000,
"premium": 50,
"pack_charges": 100,
"other_charges": 0,
"order_sum": 0,
"collect_moneytype": "CNY",
"collect_sum": 1200,
"remark": "请勿摔货",
"create_date": "2014-12-1212: 12: 12"
},
{
"orderCode": "130520142013234",
"type": "",
"tradeid": "2701843",
"mailno": "1000000000016",
"sender": {
"id": "130520142010",
"name": "李琳",
"company": "新南电子商务有限公司",
"mobile": "13912345678",
"phone": "021-87654321",
"area": "上海市",
"city": "上海市",
"county": "青浦区",
"address": "华新镇华志路123号",
"zipcode": "610012"
},
"receiver": {
"id": "130520142097",
"name": "杨逸嘉",
"company": "逸嘉实业有限公司",
"mobile": "13687654321",
"phone": "010-22226789",
"area": "四川省",
"city": "成都市",
"county": "武侯区",
"address": "育德路497号",
"zipcode": "610012"
},
"items": [
{
"id": "1234567",
"name": "迷你风扇",
"category": "电子产品",
"material": "金属",
"size": "12, 11, 23",
"weight": "0.752",
"unitprice": "79",
"quantity": "1",
"remark": "黑色大号"
},
{
"name": "USB3.0集线器",
"quantity": "1",
"remark": ""
}
],
"starttime": "2013-05-2012: 00: 00",
"endtime": "2013-05-2015: 00: 00",
"weight": 753,
"size": "12, 23,11",
"quantity": 2,
"price": 12650,
"freight": 1000,
"premium": 50,
"pack_charges": 100,
"other_charges": 0,
"order_sum": 0,
"collect_moneytype": "CNY",
"collect_sum": 1200,
"remark": "请勿摔货",
"create_date": "2014-12-1212: 12: 12"
}
]
}
}
';
$ret = json_decode($ret,true);
}
//获取快件轨迹信息
public function traceInterfaceNewTraces($order_id)
{
$conf = $this->config->item('zto');
$data = [
"company_id"=> $conf['id'],
"msg_type"=> 'NEW_TRACES',
"data"=> [$order_id],
];
return $this->request('traceInterfaceNewTraces',$data);
$tmp = '{
"data": [
{
"traces": [
{
"desc": "[上海市] [上海]的张伟丰已收件 电话:17740809169",
"dispOrRecMan": "张伟丰",
"dispOrRecManCode": "",
"dispOrRecManPhone": "17740809169",
"isCenter": "T",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "上海市",
"scanDate": "2017-07-26 17:30:14",
"scanProv": "上海",
"scanSite": "上海",
"scanSiteCode": "02100",
"scanSitePhone": "95311",
"scanType": "收件",
"signMan": ""
},
{
"desc": "[金华市] 快件到达 [义乌]",
"dispOrRecMan": "",
"dispOrRecManCode": "",
"dispOrRecManPhone": "",
"isCenter": "F",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "金华市",
"scanDate": "2017-05-18 16:55:01",
"scanProv": "浙江",
"scanSite": "义乌",
"scanSiteCode": "57950",
"scanSitePhone": "0579-89936000",
"scanType": "到件",
"signMan": ""
},
{
"desc": "[上海市] 快件已到达[上海],业务员张伟丰正在第1次派件 电话:17740809169
请保持电话畅通、耐心等待",
"dispOrRecMan": "张伟丰",
"dispOrRecManCode": "",
"dispOrRecManPhone": "17740809169",
"isCenter": "T",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "上海市",
"scanDate": "2017-07-26 17:33:27",
"scanProv": "上海",
"scanSite": "上海",
"scanSiteCode": "02100",
"scanSitePhone": "95311",
"scanType": "派件",
"signMan": ""
},
{
"desc": "[上海市] [上海总部财务]的派件已退件签收 感谢使用中通快递,期待再次为您
服务!",
"dispOrRecMan": "",
"dispOrRecManCode": "",
"dispOrRecManPhone": "",
"isCenter": "F",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "上海市",
"scanDate": "2017-03-03 13:11:23",
"scanProv": "上海",
"scanSite": "上海总部财务",
"scanSiteCode": "00088",
"scanSitePhone": "",
"scanType": "退件签收",
"signMan": "本人"
}
],
"billCode": "680000000000"
}
],
"msg": "",
"status": true
}';
return json_decode($tmp,true);
}
//总对总订单,用不上
public function plateOrder($sample=[],$address=[])
{
$data = [
"systemParameter"=> [
"serviceCode"=> "StoreDeliverGoods"
],
"orderInfo"=> [
"bagSize"=> "20,10,30",
"partnerCode"=> "3608036589234",
"companyCode"=> "GP1551922487",
"customerId"=> "zto001",
"hallCode"=> "S2044",
"billCode"=> null,
"pickUpCode"=> null,
"startTime"=> null,
"endTime"=> null,
"siteCode"=> "",
"weight"=> 1.23,
"freight"=> 0,
"orderSum"=> 230.12,
"otherCharges"=> 0,
"packCharges"=> 0,
"premium"=> 0,
"price"=> 0,
"quantity"=> "1",
"returnAddress"=> "江苏省苏州市姑苏区绿地大道320号金茂大厦负一楼203仓库",
"remark"=> "",
"receiver"=> [
"address"=> "外街道00号",
"city"=> "苏州市",
"company"=> "中通快递",
"county"=> "朝阳区",
"id"=> "",
"mobile"=> "13262709999",
"name"=> "黄某",
"phone"=> "",
"prov"=> "江苏省",
"zipCode"=> ""
],
"sender"=> [
"address"=> "华志路1685号",
"city"=> "蚌埠市",
"company"=> "中通快递股份有限公司",
"county"=> "怀远县",
"id"=> "15097756",
"mobile"=> "15216800000",
"name"=> "测试",
"phone"=> "",
"prov"=> "安徽省",
"zipCode"=> ""
]
]
];
$ret = $this->request('plateOrder',$data);
return $ret;
}
}