where('user_id', $user->id)->payed() ->order('id', 'desc')->paginate(10); return $orders; } // 订单详情 public static function detail($params) { $user = User::info(); extract($params); $order = (new self())->where('user_id', $user->id); if (isset($order_sn)) { $order = $order->where('order_sn', $order_sn); } if (isset($id)) { $order = $order->where('id', $id); } $order = $order->find(); if (!$order) { new Exception('订单不存在'); } return $order; } public static function recharge($params) { $user = User::info(); // 入参 extract($params); $recharge_money = floatval($recharge_money); $withdrawConfig = \addons\shopro\model\UserWalletApply::getWithdrawConfig(); $rechargeConfig = $withdrawConfig['recharge'] ?? []; if (!isset($rechargeConfig['enable']) || !$rechargeConfig['enable']) { new Exception('充值入口已关闭'); } if ($recharge_money < 0.01) { new Exception('请输入正确的充值金额'); } $close_time = self::getCloseTime(); $orderData = []; $orderData['type'] = 'recharge'; $orderData['order_sn'] = self::getSn($user->id); $orderData['user_id'] = $user->id; $orderData['status'] = 0; $orderData['total_amount'] = $recharge_money; $orderData['total_fee'] = $recharge_money; $orderData['pay_fee'] = $recharge_money; $orderData['remark'] = $remark ?? null; $orderData['platform'] = request()->header('platform'); $orderData['ext'] = json_encode(['expired_time' => time() + ($close_time * 60)]); $order = new TradeOrder(); $order->allowField(true)->save($orderData); \think\Queue::later(($close_time * 60), '\addons\shopro\job\TradeOrderAutoOper@autoClose', ['order' => $order], 'shopro'); return $order; } /** * 订单过期时间 * * @return float */ public static function getCloseTime() { // 添加自动关闭队列 $config = Config::where('name', 'order')->cache(300)->find(); // 读取配置自动缓存 5 分钟 $config = isset($config) ? json_decode($config['value'], true) : []; $close_minue = (isset($config['order_auto_close']) && $config['order_auto_close'] > 0) ? $config['order_auto_close'] : 15; return $close_minue; } /** * 订单支付成功 * * @param [type] $order * @param [type] $notify * @return void */ public function paymentProcess($order, $notify) { $order->status = Order::STATUS_PAYED; $order->paytime = time(); $order->transaction_id = $notify['transaction_id']; $order->payment_json = $notify['payment_json']; $order->pay_type = $notify['pay_type']; $order->pay_fee = $notify['pay_fee']; $order->save(); $user = User::where('id', $order->user_id)->find(); if ($order['type'] == 'recharge') { // 用户充值,给用户增加余额 User::money($order->total_fee, $user->id, 'recharge', 0, '用户在线充值', [ 'order_id' => $order->id, 'order_sn' => $order->order_sn, ]); } return $order; } }