You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
5.4 KiB

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: fuhc
  5. * Date: 2017-10-24
  6. * Time: 10:30
  7. */
  8. namespace backend\modules\api\logic;
  9. use backend\modules\api\models\ErrorOrderLog;
  10. use backend\modules\api\models\OrderTicketCheck;
  11. use common\models\Msg;
  12. use common\util\CurlInterface;
  13. use Yii;
  14. use backend\modules\api\models\OrderMain;
  15. use backend\modules\api\util\Util;
  16. use backend\modules\api\models\BaseSupplier;
  17. class SubmitOrder
  18. {
  19. /**
  20. * Function Description:门票退单
  21. * Function Name: CancelTicketOrder
  22. *
  23. * @return array
  24. *
  25. * @author 张帅
  26. */
  27. function CancelTicketOrder($param){
  28. $order_main = new OrderMain();
  29. #region 获取参数
  30. $order_id = $param['order_id'];
  31. $user_id = $param['user_id'];
  32. $cancel_reason = $param['cancel_reason'];
  33. // $order_id = Yii::$app->request->post('order_id');//订单号(必传)
  34. // $user_id = Yii::$app->request->post('user_id', 1);//用户id 默认1
  35. // $cancel_reason = Yii::$app->request->post('cancel_reason', '系统退单');//退票原因 默认:系统退单
  36. #endregion
  37. if ($order_id == "") {
  38. return json_encode(["code" => "1", "info" => "缺少订单号"]);
  39. }
  40. #region 1.获取订单详情
  41. $order_info = $order_main->getTicketOrderInfo($order_id);
  42. if (count($order_info) == 0) {
  43. $result['code'] = '0';
  44. $result['info'] = '订单已取消或不存在';
  45. return $result;
  46. }
  47. #endregion
  48. #region 2.取消订单
  49. $update_user_id = $user_id;
  50. $result = $order_main->cancelTicketOrder($order_id, $order_info, $update_user_id, $cancel_reason);
  51. $result["user_id"] = $user_id;
  52. #endregion
  53. //TODO
  54. //update: fuhc 2018-03-13 取消保险订单
  55. if(!empty($order_info[0]['order_confirm_code'])){
  56. $cancelParam = [
  57. 'policyno'=>$order_info[0]['order_confirm_code']
  58. ];
  59. $curl = new CurlInterface($cancelParam, 5);
  60. $cancelResult = $curl->execute('http://'. CS1_DOMAIN. '/api/sunshine-insurance/cancel-insurance', 'POST');
  61. $cancelResult = json_decode($cancelResult,true);
  62. if($cancelResult['flag']){
  63. //如果保险取消失败,则发送短信通知
  64. $config = Yii::$app->params;
  65. if (empty($config['YunYinPhone']) == false) {
  66. foreach ($config['YunYinPhone'] as $phone) {
  67. $msg = "保险直连取消失败,请及时确认并取消。订单号:".$order_id;
  68. Msg::sendTelMsg($phone, $msg);
  69. }
  70. }
  71. }else{
  72. }
  73. }
  74. // #region 3. 微信门票退单通知微信端
  75. // if ($result['code'] == 0 && $user_id != 698) {
  76. // $outside_sale_org_id = $order_main->getOutsideSaleOrgId($order_id);
  77. // if ($outside_sale_org_id == 164) {
  78. // $util = new Util();
  79. // $cancel_push = $util::interfaceZzcx($order_id, 2);
  80. // //推送错误记录错误
  81. // if ($cancel_push['code'] != 0) {
  82. // $error_order_info = new ErrorOrderLog();
  83. // if (isset($cancel_push['info'])) {
  84. // $error_msg = $cancel_push['info'];
  85. // } else {
  86. // $error_msg = '';
  87. // }
  88. // $error_order_info->istOrderLog($order_id, '微信车票订单通知微信端返回值错误 ' . $error_msg);
  89. // }
  90. // }
  91. // }
  92. #endregion
  93. return $result;
  94. }
  95. /**
  96. * Function Description:操作订单渠道商和供应商的预付款
  97. * Function Name: SupplierBalance
  98. * @param $order_id
  99. * @param $pay_type
  100. * @param $memo
  101. *
  102. *
  103. * @author 娄梦宁
  104. */
  105. public function SupplierBalance($order_id,$pay_type,$memo){
  106. $base_supplier = new BaseSupplier();
  107. $order_main=new OrderMain();
  108. $opera_supplier_id=$order_main->getProdTopOrgId($order_id);
  109. $channel_supplier_id=$order_main->getOutsideSaleOrgId($order_id);
  110. if ($base_supplier->getSettType($channel_supplier_id) == 288) {
  111. $model = new BaseBalance($order_id, $pay_type, $memo);
  112. $sup_data = $model->insertChannelBalanceMain();
  113. $model->addLog($sup_data,$memo);
  114. }
  115. if ($base_supplier->getSettType($opera_supplier_id) == 288) {
  116. $model = new BaseBalance($order_id, $pay_type, $memo);
  117. $sup_data = $model->insertBalanceMain();
  118. $model->addLog($sup_data,$memo);
  119. }
  120. }
  121. /**
  122. * Function Description:判断订单是否要插入检票信息及插入检票信息
  123. * Function Name: CheckTicketByOrder
  124. * @param $order_id
  125. * @param $user_id
  126. *
  127. * @return bool
  128. *
  129. * @author 娄梦宁
  130. */
  131. public function CheckTicketByOrder($order_id,$user_id)
  132. {
  133. $order_main=new OrderMain();
  134. $order_ticket_check=new OrderTicketCheck();
  135. $is_checked=$order_main->getTicketChecked($order_id);
  136. if($is_checked!=1){
  137. return false;
  138. }
  139. $order_son_arr=$order_main->getSonOrderArr($order_id);
  140. foreach($order_son_arr as $order_son_id){
  141. $order_ticket_check->AddCheckTicketInfo($order_id,$order_son_id['order_id'],$user_id);
  142. }
  143. return true;
  144. }
  145. }