array('menu_type'=>'link','menu_name'=>'虚拟订单——卡处理','menu_url'=>'./index.php?act=tools&op=vrorder'), 'oms_order_push'=>array('menu_type'=>'link','menu_name'=>'oms订单推送','menu_url'=>'./index.php?act=tools&op=index'), ); $menu_array[$menu_key]['menu_type'] = 'text'; Tpl::output('menu',$menu_array); } public function indexOp(){ $this->vrorderOp(); } public function vrorderOp() { if(chksubmit()) { $order_sn = trim($_GET['order_sn']); $type = trim($_GET['type']); if(empty($order_sn)) { $this->show_menu('vr_order_tools'); Tpl::showpage('vr_order_tools'); } else { if($type == 'change_card') { $ret = $this->change_card($order_sn); } elseif($type == 'cancel_order') { $ret = $this->cancel_order($order_sn); } elseif($type == 'freeze_card') { $ret = $this->freeze_card($order_sn); } elseif($type == 'bind_card') { $ret = $this->bind_card($order_sn); } elseif($type == 'unfreeze_card') { $card_no = $order_sn; $ret = $this->unfreeze_card($card_no); } else { showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'vr_order_tools')); } if($ret['state']) { showMessage(L('nc_common_save_succ'), urlAdmin('tools', 'vr_order_tools')); } else { showMessage($ret['msg'], urlAdmin('tools', 'vr_order_tools')); } } } else { $this->show_menu('vr_order_tools'); Tpl::showpage('vr_order_tools'); } } //现在的卡有问题,换一张同等价位的新卡,并将原卡冻结,订单重新置为已支付状态。 private function change_card($order_sn) { Log::record(__METHOD__ . "order_sn={$order_sn}",Log::DEBUG); $logic = Logic('queue'); $ret = $logic->OnChanageCard(['order_sn' => $order_sn]); return $ret; } private function cancel_order($order_sn) { $model_vr_order = Model('vr_order'); $logic_vr_order = Logic('vr_order'); $order_info = $model_vr_order->getOrderInfo(['order_sn' => $order_sn],'*',true); return $logic_vr_order->changeOrderStateCancel($order_info,'admin', '不能充值的卡,已经退款,取消订单。'); } private function freeze_card($order_sn) { Log::record(__METHOD__ . "order_sn={$order_sn}",Log::DEBUG); $logic = Logic('queue'); $ret = $logic->OnCancelorderFreezeCard(['order_sn' => $order_sn]); return $ret; } private function bind_card($order_sn) { Log::record(__METHOD__ . "order_sn={$order_sn}",Log::DEBUG); $logic = Logic('queue'); $ret = $logic->OnVrOrderSuccess(['order_sn' => $order_sn]); return $ret; } private function unfreeze_card($card_no) { $mod_card = Model('card_key'); $cards = $mod_card->getCards(['card_no' => $card_no]); if(count($cards) > 1) { return callback(false,'超过一张卡满足解冻条件,请技术人员确认'); } foreach ($cards as $card) { $card_id = intval($card['card_id']); $ret = mtopcard\cards_helper::unfreeze($card_id); return callback($ret,"解冻失败?"); } return callback(false,"没有找到卡号:{$card_no}"); } public function oms_order_pushOp() { if(chksubmit()) { $order_number = trim($_GET['order_number']); if(empty($order_number)) { $this->show_menu('oms_order_push'); Tpl::showpage('oms_order_push'); } else { $mod_order = Model('order'); $orders = $mod_order->getOrderList(['order_sn' => $order_number]); if(empty($orders)) { showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'oms_order_push')); } else { $order = $orders[0]; $pay_sn = $order['pay_sn']; $trade_no = $order['trade_no']; //todo 对完全不需要通过微信和支付宝支付现金的订单,就不会有trade_no,因此此时推送会失败。 if(empty($pay_sn) || empty($trade_no)) { showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'oms_order_push')); return; } $logic_delivery = Logic('delivery'); $ret = $logic_delivery->putOrder($pay_sn, $trade_no); if($ret == true) { showMessage(L('nc_common_save_succ'), urlAdmin('tools', 'oms_order_push')); } else { showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'oms_order_push')); } } } } else { $this->show_menu('oms_order_push'); Tpl::showpage('oms_order_push'); } } }