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'], 'game_id' => $game['id'],
'signin' => 0, 'signin' => 0,
'order' => $order, 'order' => $order,
'status' => 1, 'status' => ($order > $game['limit_num']) ? 0 : 1, //超过报名人数为候补
]; ];
if ($u['gender'] == 0) { if ($u['gender'] == 0) {
$gender['woman'] += 1; $gender['woman'] += 1;

View File

@@ -2,19 +2,16 @@
namespace addons\shopro\job; namespace addons\shopro\job;
use think;
use think\Db;
use think\Log;
use think\queue\Job; use think\queue\Job;
use think\Log;
use think\Db;
use think\Collection; 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 think\exception\HttpResponseException;
use app\admin\model\shopro\order\OrderItem;
use addons\shopro\exception\ShoproException; 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,13 +22,12 @@ class OrderAutoOper extends BaseJob
/** /**
* 订单自动关闭 * 订单自动关闭
*/ */
public function autoClose(Job $job, $data) public function autoClose(Job $job, $data){
{
if (check_env('yansongda', false)) { if (check_env('yansongda', false)) {
set_addon_config('epay', ['version' => 'v3'], false); set_addon_config('epay', ['version' => 'v3'], false);
\think\Hook::listen('epay_config_init'); \think\Hook::listen('epay_config_init');
} }
try { try {
$order = $data['order']; $order = $data['order'];
@@ -43,12 +39,6 @@ class OrderAutoOper extends BaseJob
$orderOper = new OrderOper(); $orderOper = new OrderOper();
$order = $orderOper->close($order, null, 'system'); $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; return $order;
}); });
} }
@@ -77,8 +67,7 @@ class OrderAutoOper extends BaseJob
/** /**
* 订单自动确认收货 * 订单自动确认收货
*/ */
public function autoConfirm(Job $job, $data) public function autoConfirm(Job $job, $data) {
{
try { try {
$order = $data['order']; $order = $data['order'];
$items = $data['items']; $items = $data['items'];
@@ -91,7 +80,7 @@ class OrderAutoOper extends BaseJob
$order = Db::transaction(function () use ($order, $itemIds) { $order = Db::transaction(function () use ($order, $itemIds) {
$orderOper = new OrderOper(); $orderOper = new OrderOper();
$order = $orderOper->confirm($order, $itemIds, null, 'system'); $order = $orderOper->confirm($order, $itemIds, null, 'system');
return $order; return $order;
}); });
} }
@@ -118,8 +107,7 @@ class OrderAutoOper extends BaseJob
public function autoComment(Job $job, $data) public function autoComment(Job $job, $data) {
{
try { try {
$order = $data['order']; $order = $data['order'];
$item = $data['item']; $item = $data['item'];
@@ -135,7 +123,7 @@ class OrderAutoOper extends BaseJob
'item_id' => $item['id'], 'item_id' => $item['id'],
'level' => 5, 'level' => 5,
]; ];
// 评价一个订单商品 // 评价一个订单商品
$order = $orderOper->comment($order, $comments, null, 'system'); $order = $orderOper->comment($order, $comments, null, 'system');
@@ -164,4 +152,4 @@ class OrderAutoOper extends BaseJob
$job->delete(); $job->delete();
} }
} }
} }

View File

@@ -2,18 +2,15 @@
namespace addons\shopro\job; namespace addons\shopro\job;
use think\Db;
use think\queue\Job; use think\queue\Job;
use addons\shopro\service\StockSale; use think\Db;
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\exception\HttpResponseException; 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 app\admin\model\shopro\order\Invoice as OrderInvoice;
use addons\shopro\service\order\OrderOper;
use addons\shopro\facade\Activity as ActivityFacade;
/** /**
* 订单自动操作 * 订单自动操作
@@ -55,13 +52,10 @@ class OrderPaid extends BaseJob
// 将订单参与活动信息改为已支付 // 将订单参与活动信息改为已支付
$orderOper = new OrderOper(); $orderOper = new OrderOper();
$orderOper->activityOrderPaid($order); $orderOper->activityOrderPaid($order);
// 触发订单支付完成事件 // 触发订单支付完成事件
$data = ['order' => $order, 'user' => $user]; $data = ['order' => $order, 'user' => $user];
\think\Hook::listen('order_paid_after', $data); \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]; $data = ['order' => $order, 'user' => $user];
\think\Hook::listen('order_offline_after', $data); \think\Hook::listen('order_offline_after', $data);
// zy体育报名处理
GameJoin::where('order_id', $order->id)->update(['status' => 1]);
}); });
} }
@@ -119,4 +110,4 @@ class OrderPaid extends BaseJob
format_log_error($e, 'OrderPaid.offline'); format_log_error($e, 'OrderPaid.offline');
} }
} }
} }

View File

@@ -2,30 +2,32 @@
namespace addons\shopro\listener; namespace addons\shopro\listener;
use addons\shopro\library\notify\Notify; use addons\shopro\facade\Wechat;
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 app\admin\model\shopro\Cart; use app\admin\model\shopro\Cart;
use app\admin\model\shopro\user\Coupon; use app\admin\model\shopro\Admin;
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\Config; use app\admin\model\shopro\Config;
use addons\shopro\library\Pipeline;
use addons\shopro\service\StockSale; use addons\shopro\service\StockSale;
use addons\shopro\traits\CouponSend; 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 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\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\service\order\OrderDispatch;
use addons\shopro\library\activity\traits\GiveGift; 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\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; use addons\shopro\library\easywechatPlus\WechatMiniProgramShop;
class Order 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'); $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; return $order;
} }