初始化项目:添加后端代码、ThinkPHP框架、前端资源

This commit is contained in:
amb
2026-09-03 12:42:39 +08:00
commit 482bece22e
3726 changed files with 416708 additions and 0 deletions
@@ -0,0 +1,109 @@
<?php
namespace app\common\library\app\physical\express;
use think\exception\HttpResponseException;
use app\common\model\app\physical\OrderExpress;
class Express
{
protected $driver = null;
protected $config = [];
public function __construct($driver = 'aliyun', $config = [])
{
$this->driver = $driver;
$this->config = $config;
}
public function provider($driver = null)
{
$driver = $driver ?: $this->getDefaultDriver();
$class = "\\app\\common\\library\\app\\physical\\express\\provider\\" . \think\helper\Str::studly($driver);
if (class_exists($class)) {
return new $class($this->config);
}
throw new \Exception('物流平台类型不支持');
}
/**
* 更新订单的所有包裹物流信息
*
* @param mixed $orderExpress 订单ID或发货单ID
* @return void
*/
public function updateOrderExpress($orderExpress = 0)
{
try {
// 如果传入的是订单ID,获取该订单的所有发货单
if (is_numeric($orderExpress)) {
$orderExpresses = OrderExpress::where('order_id', $orderExpress)
->where('uniacid', UNIACID)
->select();
} else {
$orderExpresses = [$orderExpress];
}
// 遍历更新每个发货单的物流信息
foreach ($orderExpresses as $orderExpress) {
$this->updateExpress($orderExpress);
}
} catch (HttpResponseException $e) {
$data = $e->getResponse()->getData();
$message = $data ? ($data['msg'] ?? '') : $e->getMessage();
\think\Log::error('updateOrderExpress.HttpResponseException: ' . $message);
} catch(\Exception $e) {
\think\Log::error('updateOrderExpress.Exception: 获取物流信息错误 - ' . $e->getMessage());
}
}
/**
* 更新单个包裹的物流信息
*
* @param \think\Model $orderExpress 发货单模型
* @return bool
*/
public function updateExpress($orderExpress)
{
// 只有未签收的包裹才更新物流
if ($orderExpress->status == 'signfor') {
return true;
}
// 检查缓存,避免频繁查询(5分钟缓存)
$key = 'express:' . $orderExpress->id . ':code:' . $orderExpress->express_no;
if (cache('?'.$key)) {
return true;
}
try {
// 查询物流信息
$this->provider()->search([
'order_id' => $orderExpress['order_id'],
'express_code' => $orderExpress['express_code'],
'express_no' => $orderExpress['express_no'],
'mobile' => $orderExpress['sender_mobile'] ?? ''
], $orderExpress);
// 缓存 300 秒(5分钟)
cache($key, time(), 300);
return true;
} catch (\Exception $e) {
\think\Log::error('updateExpress.Exception: ' . $e->getMessage());
return false;
}
}
public function getDefaultDriver()
{
return $this->driver;
}
public function __call($funcname, $arguments)
{
return $this->provider()->{$funcname}(...$arguments);
}
}