group_order_goods; foreach ($group_order_goods as $k => &$v) { if ($v['mch_order_info']) { // 标识 $v['mch_order_info']['order_source'] = AddonsEnum::ADDONS_NAME_SECKILL; $v['mch_order_info']['extra_info'] = 'seckill_activity_'.$activity_id; $v['mch_order_info']['marketing_type'] = AddonsEnum::ADDONS_NAME_SECKILL; } } $form->group_order_goods = $group_order_goods; return $form; }catch(Exception $e){ self::setStaticError($e->getMessage()); return false; } } /** * 生成订单后操作 * * @param int $activity_id * @param int $order_id * @return void */ public static function createAfterHandle($order_id,$activity_id,$mall_id, $user_id = null) { try { //修改DB活动库存,销量 SeckillActivity::updateAllCounters(['sale_nums' => 1],"id=" . $activity_id); //活动订单表 SeckillActivityOrder::setData($mall_id,['activity_id' => $activity_id,'order_id' => $order_id]); // 用户活动订单表 SeckillActivityUser::setData($mall_id, ['activity_id' => $activity_id, 'order_id' => $order_id, 'user_id' => $user_id]); } catch (Exception $e) { self::setStaticError($e->getMessage()); return false; } } /** * 超时关闭秒杀订单 * @param $order_id * @return bool */ public static function closeOrder($order_id) { //释放库存 $seckill_order = SeckillActivityOrder::findOne(['order_id' => $order_id]); if($seckill_order && !$seckill_order->is_close){ //修改活动已售数量 SeckillActivity::updateAllCounters(['sale_nums' => -1],"id=" . $seckill_order->activity_id); ActivityLogic::incrStock($seckill_order->activity_id); $seckill_order->is_close = 1; $seckill_order->save(); } // 释放用户活动订单记录 $seckilUser = SeckillActivityUser::findOne(['order_id' => $order_id]); if ($seckilUser && $seckilUser->status != StatusEnum::DELETE) { $seckilUser->status = StatusEnum::DELETE; $seckilUser->save(); } return true; } /** * 检测当前应用场景是否需要实名认证 * @param $params * @return bool|void */ public function checkSeckillOrder($params) { if (!isset($params['order'])) return []; if (!isset($params['action'])) return []; $order = $params['order']; $action = $params['action'] ?? 'close'; $result = true; if($action == 'close' && $order->order_source == AddonsEnum::ADDONS_NAME_SECKILL){ $result = false; //返回false ,主商城自动关闭订单 才会忽略 } return [AddonsEnum::ADDONS_NAME_SECKILL => [$action => $result]]; } }