init
- 框架初始化 - 安装插件 - 修复PHP8.4报错
This commit is contained in:
53
addons/shopro/job/trade/OrderAutoOper.php
Normal file
53
addons/shopro/job/trade/OrderAutoOper.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace addons\shopro\job\trade;
|
||||
|
||||
use addons\shopro\job\BaseJob;
|
||||
use think\queue\Job;
|
||||
use think\Db;
|
||||
use think\exception\HttpResponseException;
|
||||
use addons\shopro\exception\ShoproException;
|
||||
use app\admin\model\shopro\trade\Order;
|
||||
|
||||
/**
|
||||
* 订单自动操作
|
||||
*/
|
||||
class OrderAutoOper extends BaseJob
|
||||
{
|
||||
|
||||
/**
|
||||
* 订单自动关闭
|
||||
*/
|
||||
public function autoClose(Job $job, $data)
|
||||
{
|
||||
try {
|
||||
$order = $data['order'];
|
||||
|
||||
// 重新查询订单
|
||||
$order = Order::unpaid()->where('id', $order['id'])->find();
|
||||
|
||||
if ($order) {
|
||||
Db::transaction(function () use ($order, $data) {
|
||||
// 执行关闭
|
||||
$order->status = Order::STATUS_CLOSED;
|
||||
$order->ext = array_merge($order->ext, ['closed_time' => time()]); // 取消时间
|
||||
$order->save();
|
||||
});
|
||||
}
|
||||
|
||||
// 删除 job
|
||||
$job->delete();
|
||||
} catch (ShoproException $e) {
|
||||
// 自定义异常时删除 队列
|
||||
$job->delete();
|
||||
format_log_error($e, 'TradeOrderAutoOper.autoClose.ShoproException');
|
||||
} catch (HttpResponseException $e) {
|
||||
$data = $e->getResponse()->getData();
|
||||
$message = $data ? ($data['msg'] ?? '') : $e->getMessage();
|
||||
format_log_error($e, 'TradeOrderAutoOper.autoClose.HttpResponseException', $message);
|
||||
} catch (\Exception $e) {
|
||||
// 队列执行失败
|
||||
format_log_error($e, 'TradeOrderAutoOper.autoClose');
|
||||
}
|
||||
}
|
||||
}
|
||||
82
addons/shopro/job/trade/OrderPaid.php
Normal file
82
addons/shopro/job/trade/OrderPaid.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace addons\shopro\job\trade;
|
||||
|
||||
use addons\shopro\job\BaseJob;
|
||||
use think\queue\Job;
|
||||
use think\Db;
|
||||
use think\exception\HttpResponseException;
|
||||
use app\admin\model\shopro\trade\Order;
|
||||
use app\admin\model\shopro\user\User;
|
||||
use addons\shopro\service\Wallet as WalletService;
|
||||
use addons\shopro\facade\Wechat;
|
||||
use addons\shopro\library\easywechatPlus\WechatMiniProgramShop;
|
||||
|
||||
/**
|
||||
* 订单自动操作
|
||||
*/
|
||||
class OrderPaid extends BaseJob
|
||||
{
|
||||
|
||||
/**
|
||||
* 交易订单支付完成
|
||||
*/
|
||||
public function paid(Job $job, $data)
|
||||
{
|
||||
try {
|
||||
$order = $data['order'];
|
||||
$user = $data['user'];
|
||||
|
||||
$order = Order::where('id', $order['id'])->find();
|
||||
$user = User::get($user['id']);
|
||||
|
||||
// 数据库删订单的问题常见,这里被删的订单直接把队列移除
|
||||
if ($order) {
|
||||
Db::transaction(function () use ($order, $user, $data) {
|
||||
if ($order->type == 'recharge') {
|
||||
// 充值
|
||||
$ext = $order->ext;
|
||||
$rule = $ext['rule'] ?? [];
|
||||
$money = (isset($rule['money']) && $rule['money'] > 0) ? $rule['money'] : 0;
|
||||
$gift_type = $rule['gift_type'] ?? 'money';
|
||||
$gift = (isset($rule['gift']) && $rule['gift'] > 0) ? $rule['gift'] : 0;
|
||||
if ($money > 0) {
|
||||
// 增加余额
|
||||
WalletService::change($user, 'money', $money, 'order_recharge', [
|
||||
'order_id' => $order->id,
|
||||
'order_sn' => $order->order_sn,
|
||||
'order_type' => 'trade_order',
|
||||
]);
|
||||
}
|
||||
|
||||
if ($gift > 0) {
|
||||
// 充值赠送
|
||||
WalletService::change($user, $gift_type, $gift, 'recharge_gift', [
|
||||
'order_id' => $order->id,
|
||||
'order_sn' => $order->order_sn,
|
||||
'order_type' => 'trade_order',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$uploadshoppingInfo = new WechatMiniProgramShop(Wechat::miniProgram());
|
||||
|
||||
// 微信小程序,使用 微信支付, 并且存在微信发货管理权限时,才推送发货消息
|
||||
if ($order->platform == 'WechatMiniProgram' && $order->pay_type == 'wechat' && $uploadshoppingInfo->isTradeManaged()) {
|
||||
$uploadshoppingInfo->tradeUploadShippingInfos($order);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 删除 job
|
||||
$job->delete();
|
||||
} catch (HttpResponseException $e) {
|
||||
$data = $e->getResponse()->getData();
|
||||
$message = $data ? ($data['msg'] ?? '') : $e->getMessage();
|
||||
format_log_error($e, 'OrderPaid.paid.HttpResponseException', $message);
|
||||
} catch (\Exception $e) {
|
||||
format_log_error($e, 'OrderPaid.paid');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user