tools.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. defined('InShopNC') or exit('Access Invalid!');
  3. require_once(BASE_HELPER_PATH . '/mtopcard/mtopcard.php');
  4. class toolsControl extends SystemControl
  5. {
  6. public function __construct()
  7. {
  8. parent::__construct();
  9. }
  10. private function show_menu($menu_key) {
  11. $menu_array = array(
  12. 'vr_order_tools'=>array('menu_type'=>'link','menu_name'=>'虚拟订单——卡处理','menu_url'=>'./index.php?act=tools&op=vrorder'),
  13. 'oms_order_push'=>array('menu_type'=>'link','menu_name'=>'oms订单推送','menu_url'=>'./index.php?act=tools&op=index'),
  14. );
  15. $menu_array[$menu_key]['menu_type'] = 'text';
  16. Tpl::output('menu',$menu_array);
  17. }
  18. public function indexOp(){
  19. $this->vrorderOp();
  20. }
  21. public function vrorderOp()
  22. {
  23. if(chksubmit())
  24. {
  25. $order_sn = trim($_GET['order_sn']);
  26. $type = trim($_GET['type']);
  27. if(empty($order_sn)) {
  28. $this->show_menu('vr_order_tools');
  29. Tpl::showpage('vr_order_tools');
  30. }
  31. else
  32. {
  33. if($type == 'change_card') {
  34. $ret = $this->change_card($order_sn);
  35. }
  36. elseif($type == 'cancel_order') {
  37. $ret = $this->cancel_order($order_sn);
  38. }
  39. elseif($type == 'freeze_card') {
  40. $ret = $this->freeze_card($order_sn);
  41. }
  42. elseif($type == 'bind_card') {
  43. $ret = $this->bind_card($order_sn);
  44. }
  45. elseif($type == 'unfreeze_card') {
  46. $card_no = $order_sn;
  47. $ret = $this->unfreeze_card($card_no);
  48. }
  49. else {
  50. showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'vr_order_tools'));
  51. }
  52. if($ret['state']) {
  53. showMessage(L('nc_common_save_succ'), urlAdmin('tools', 'vr_order_tools'));
  54. } else {
  55. showMessage($ret['msg'], urlAdmin('tools', 'vr_order_tools'));
  56. }
  57. }
  58. }
  59. else
  60. {
  61. $this->show_menu('vr_order_tools');
  62. Tpl::showpage('vr_order_tools');
  63. }
  64. }
  65. //现在的卡有问题,换一张同等价位的新卡,并将原卡冻结,订单重新置为已支付状态。
  66. private function change_card($order_sn)
  67. {
  68. Log::record(__METHOD__ . "order_sn={$order_sn}",Log::DEBUG);
  69. $logic = Logic('queue');
  70. $ret = $logic->OnChanageCard(['order_sn' => $order_sn]);
  71. return $ret;
  72. }
  73. private function cancel_order($order_sn)
  74. {
  75. $model_vr_order = Model('vr_order');
  76. $logic_vr_order = Logic('vr_order');
  77. $order_info = $model_vr_order->getOrderInfo(['order_sn' => $order_sn],'*',true);
  78. return $logic_vr_order->changeOrderStateCancel($order_info,'admin', '不能充值的卡,已经退款,取消订单。');
  79. }
  80. private function freeze_card($order_sn)
  81. {
  82. Log::record(__METHOD__ . "order_sn={$order_sn}",Log::DEBUG);
  83. $logic = Logic('queue');
  84. $ret = $logic->OnCancelorderFreezeCard(['order_sn' => $order_sn]);
  85. return $ret;
  86. }
  87. private function bind_card($order_sn)
  88. {
  89. Log::record(__METHOD__ . "order_sn={$order_sn}",Log::DEBUG);
  90. $logic = Logic('queue');
  91. $ret = $logic->OnVrOrderSuccess(['order_sn' => $order_sn]);
  92. return $ret;
  93. }
  94. private function unfreeze_card($card_no)
  95. {
  96. $mod_card = Model('card_key');
  97. $cards = $mod_card->getCards(['card_no' => $card_no]);
  98. if(count($cards) > 1) {
  99. return callback(false,'超过一张卡满足解冻条件,请技术人员确认');
  100. }
  101. foreach ($cards as $card) {
  102. $card_id = intval($card['card_id']);
  103. $ret = mtopcard\cards_helper::unfreeze($card_id);
  104. return callback($ret,"解冻失败?");
  105. }
  106. return callback(false,"没有找到卡号:{$card_no}");
  107. }
  108. public function oms_order_pushOp()
  109. {
  110. if(chksubmit())
  111. {
  112. $order_number = trim($_GET['order_number']);
  113. if(empty($order_number)) {
  114. $this->show_menu('oms_order_push');
  115. Tpl::showpage('oms_order_push');
  116. }
  117. else
  118. {
  119. $mod_order = Model('order');
  120. $orders = $mod_order->getOrderList(['order_sn' => $order_number]);
  121. if(empty($orders)) {
  122. showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'oms_order_push'));
  123. }
  124. else
  125. {
  126. $order = $orders[0];
  127. $pay_sn = $order['pay_sn'];
  128. $trade_no = $order['trade_no'];
  129. //todo 对完全不需要通过微信和支付宝支付现金的订单,就不会有trade_no,因此此时推送会失败。
  130. if(empty($pay_sn) || empty($trade_no)) {
  131. showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'oms_order_push'));
  132. return;
  133. }
  134. $logic_delivery = Logic('delivery');
  135. $ret = $logic_delivery->putOrder($pay_sn, $trade_no);
  136. if($ret == true) {
  137. showMessage(L('nc_common_save_succ'), urlAdmin('tools', 'oms_order_push'));
  138. } else {
  139. showMessage(L('nc_common_save_fail'), urlAdmin('tools', 'oms_order_push'));
  140. }
  141. }
  142. }
  143. }
  144. else
  145. {
  146. $this->show_menu('oms_order_push');
  147. Tpl::showpage('oms_order_push');
  148. }
  149. }
  150. }