refactor(shopro): 优化订单处理逻辑

- 修改活动报名状态更新逻辑,根据报名人数和限制人数比较确定状态
- 移除不必要的模型引用,简化代码结构
- 调整订单自动处理和支付逻辑,提高代码可读性
- 重构订单监听器,优化体育活动报名相关操作
This commit is contained in:
2025-06-01 16:41:13 +08:00
parent 1b63962bff
commit 8fe0a460cd
4 changed files with 49 additions and 58 deletions

View File

@@ -222,7 +222,7 @@ class Activity extends Base
'game_id' => $game['id'],
'signin' => 0,
'order' => $order,
'status' => 1,
'status' => ($order > $game['limit_num']) ? 0 : 1, //超过报名人数为候补
];
if ($u['gender'] == 0) {
$gender['woman'] += 1;

View File

@@ -2,19 +2,16 @@
namespace addons\shopro\job;
use think;
use think\Db;
use think\Log;
use think\queue\Job;
use think\Log;
use think\Db;
use think\Collection;
use app\admin\model\zy\game\GameJoin;
use app\admin\model\shopro\order\Order;
use app\admin\model\shopro\order\Action;
use app\admin\model\zy\game\Participant;
use addons\shopro\service\order\OrderOper;
use think\exception\HttpResponseException;
use app\admin\model\shopro\order\OrderItem;
use addons\shopro\exception\ShoproException;
use app\admin\model\shopro\order\Order;
use app\admin\model\shopro\order\OrderItem;
use addons\shopro\service\order\OrderOper;
use app\admin\model\shopro\order\Action;
/**
* 订单自动操作
@@ -25,8 +22,7 @@ class OrderAutoOper extends BaseJob
/**
* 订单自动关闭
*/
public function autoClose(Job $job, $data)
{
public function autoClose(Job $job, $data){
if (check_env('yansongda', false)) {
set_addon_config('epay', ['version' => 'v3'], false);
\think\Hook::listen('epay_config_init');
@@ -43,12 +39,6 @@ class OrderAutoOper extends BaseJob
$orderOper = new OrderOper();
$order = $orderOper->close($order, null, 'system');
// zy体育报名处理(未支付,自动退坑)
$join = GameJoin::where('order_id', $data['order']['id'])->find();
if (!empty($join)) {
$join->save(['status' => -1]);
Participant::where('game_join_id', $join['id'])->update(['status' => -1]);
}
return $order;
});
}
@@ -77,8 +67,7 @@ class OrderAutoOper extends BaseJob
/**
* 订单自动确认收货
*/
public function autoConfirm(Job $job, $data)
{
public function autoConfirm(Job $job, $data) {
try {
$order = $data['order'];
$items = $data['items'];
@@ -118,8 +107,7 @@ class OrderAutoOper extends BaseJob
public function autoComment(Job $job, $data)
{
public function autoComment(Job $job, $data) {
try {
$order = $data['order'];
$item = $data['item'];

View File

@@ -2,18 +2,15 @@
namespace addons\shopro\job;
use think\Db;
use think\queue\Job;
use addons\shopro\service\StockSale;
use addons\shopro\controller\zy\Game;
use app\admin\model\shopro\user\User;
use app\admin\model\zy\game\GameJoin;
use app\admin\model\shopro\order\Order;
use app\admin\model\zy\game\Participant;
use addons\shopro\service\order\OrderOper;
use think\Db;
use think\exception\HttpResponseException;
use addons\shopro\facade\Activity as ActivityFacade;
use app\admin\model\shopro\order\Order;
use addons\shopro\service\StockSale;
use app\admin\model\shopro\user\User;
use app\admin\model\shopro\order\Invoice as OrderInvoice;
use addons\shopro\service\order\OrderOper;
use addons\shopro\facade\Activity as ActivityFacade;
/**
* 订单自动操作
@@ -59,9 +56,6 @@ class OrderPaid extends BaseJob
// 触发订单支付完成事件
$data = ['order' => $order, 'user' => $user];
\think\Hook::listen('order_paid_after', $data);
// zy体育报名处理
GameJoin::where('order_id', $order->id)->update(['status' => 1]);
});
}
@@ -102,9 +96,6 @@ class OrderPaid extends BaseJob
// 触发订单选择线下支付(货到付款)完成事件
$data = ['order' => $order, 'user' => $user];
\think\Hook::listen('order_offline_after', $data);
// zy体育报名处理
GameJoin::where('order_id', $order->id)->update(['status' => 1]);
});
}

View File

@@ -2,30 +2,32 @@
namespace addons\shopro\listener;
use addons\shopro\library\notify\Notify;
use addons\shopro\library\Pipeline;
use addons\shopro\service\order\OrderThrough;
use app\admin\model\shopro\user\User;
use app\admin\model\shopro\Admin;
use addons\shopro\facade\Wechat;
use app\admin\model\shopro\Cart;
use app\admin\model\shopro\user\Coupon;
use app\admin\model\shopro\order\Order as OrderModel;
use app\admin\model\shopro\order\OrderItem;
use app\admin\model\shopro\order\Invoice as OrderInvoiceModel;
use app\admin\model\shopro\order\Express as OrderExpressModel;
use app\admin\model\shopro\order\Action;
use app\admin\model\shopro\order\Invoice;
use app\admin\model\shopro\Admin;
use app\admin\model\shopro\Config;
use addons\shopro\library\Pipeline;
use addons\shopro\service\StockSale;
use addons\shopro\traits\CouponSend;
use addons\shopro\service\order\OrderRefund;
use app\admin\model\shopro\user\User;
use app\admin\model\zy\game\GameJoin;
use addons\shopro\service\pay\PayOper;
use app\admin\model\shopro\user\Coupon;
use addons\shopro\library\notify\Notify;
use app\admin\model\shopro\order\Action;
use app\admin\model\zy\game\Participant;
use app\admin\model\shopro\order\Invoice;
use addons\shopro\service\order\OrderOper;
use addons\shopro\service\user\User as UserService;
use app\admin\model\shopro\order\OrderItem;
use addons\shopro\service\order\OrderRefund;
use addons\shopro\service\order\OrderThrough;
use addons\shopro\service\order\OrderDispatch;
use addons\shopro\library\activity\traits\GiveGift;
use addons\shopro\service\user\User as UserService;
use addons\shopro\facade\Activity as ActivityFacade;
use addons\shopro\facade\Wechat;
use app\admin\model\shopro\order\Order as OrderModel;
use app\admin\model\shopro\order\Express as OrderExpressModel;
use app\admin\model\shopro\order\Invoice as OrderInvoiceModel;
use addons\shopro\library\easywechatPlus\WechatMiniProgramShop;
class Order
@@ -252,6 +254,9 @@ class Order
])
);
}
// zy体育报名处理
GameJoin::where('order_id', $order->id)->update(['status' => 1]);
}
@@ -599,6 +604,13 @@ class Order
// 将开票信息取消
$this->cancelInvoice($order, 'invalid');
// zy体育报名处理(未支付,自动退坑)
$join = GameJoin::where('order_id', $order->id)->find();
if (!empty($join)) {
$join->save(['status' => -1]);
Participant::where('game_join_id', $join['id'])->update(['status' => -1]);
}
return $order;
}