member_order.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?php
  2. /**
  3. * 我的订单
  4. *
  5. *
  6. *
  7. *
  8. */
  9. //use Shopnc\Tpl;
  10. defined('InShopNC') or exit('Access Invalid!');
  11. require_once(BASE_ROOT_PATH . '/helper/kdn_helper.php');
  12. class member_orderControl extends mbMemberControl
  13. {
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. }
  18. public function order_listOp()
  19. {
  20. $model_order = Model('order');
  21. $condition = array();
  22. $condition['buyer_id'] = $_SESSION['member_id'];
  23. $order_state = intval(trim($_GET['state']));
  24. if ($order_state >= 10) {
  25. $condition['order_state'] = $order_state;
  26. }
  27. $order_list_array = $model_order->getNormalOrderList($condition, $this->page, '*', 'order_id desc', '', array('order_address', 'order_goods'));
  28. $order_group_list = array();
  29. $order_pay_sn_array = array();
  30. $model_refund = Model('refund_return');
  31. foreach ($order_list_array as $value)
  32. {
  33. //显示取消订单
  34. $value['if_cancel'] = $model_order->getOrderOperateState('buyer_cancel', $value);
  35. //显示收货
  36. $value['if_receive'] = $model_order->getOrderOperateState('receive', $value);
  37. //显示锁定中
  38. $value['if_lock'] = $model_order->getOrderOperateState('lock', $value);
  39. //显示物流跟踪
  40. $value['if_deliver'] = $model_order->getOrderOperateState('deliver', $value);
  41. //订单是否能退货
  42. $value['if_refund_return'] = $model_refund->getRefundState($value);
  43. //商品图
  44. foreach ($value['extend_order_goods'] as $k => $goods_info) {
  45. $value['extend_order_goods'][$k]['goods_image_url'] = cthumb($goods_info['goods_image'], 240, $value['store_id']);
  46. $value['extend_order_goods'][$k]['refund_id'] = (string)$model_refund->getRefundIdForGood($goods_info,$value['extend_order_goods'][$k]['refund_state']);
  47. }
  48. $value['refund_id'] = (string)$model_refund->getRefundId($value,$value['refund_state']);
  49. $order_group_list[$value['pay_sn']]['order_list'][] = $value;
  50. //如果有在线支付且未付款的订单则显示合并付款链接
  51. if ($value['order_state'] == ORDER_STATE_NEW) {
  52. $order_group_list[$value['pay_sn']]['pay_amount'] += $value['order_amount'] - $value['rcb_amount'] - $value['pd_amount'];
  53. }
  54. $order_group_list[$value['pay_sn']]['add_time'] = $value['add_time'];
  55. //记录一下pay_sn,后面需要查询支付单表
  56. $order_pay_sn_array[] = $value['pay_sn'];
  57. }
  58. $new_order_group_list = array();
  59. foreach ($order_group_list as $key => $value) {
  60. $value['pay_sn'] = strval($key);
  61. $new_order_group_list[] = $value;
  62. }
  63. $page_count = $model_order->gettotalpage();
  64. $model_order->cls();
  65. $array_data = array('order_group_list' => $new_order_group_list);
  66. if (isset($_GET['getpayment']) && $_GET['getpayment'] == "true")
  67. {
  68. $model_mb_payment = Model('mb_payment');
  69. $payment_list = $model_mb_payment->getMbPaymentOpenList();
  70. $payment_array = array();
  71. if (!empty($payment_list))
  72. {
  73. foreach ($payment_list as $value) {
  74. $payment_array[] = array('payment_code' => $value['payment_code'], 'payment_name' => $value['payment_name']);
  75. }
  76. }
  77. $array_data['payment_list'] = $payment_array;
  78. }
  79. $array_data['mobile_page'] = mobile_page($page_count);
  80. self::outsuccess($array_data);
  81. }
  82. public function order_infoOp()
  83. {
  84. $model_order = Model('order');
  85. $condition = array();
  86. $condition['buyer_id'] = $_SESSION['member_id'];
  87. $condition['pay_sn'] = $_POST['pay_sn'];
  88. $order_list_array = $model_order->getNormalOrderList($condition, $this->page, '*', 'order_id desc', '', array('order_address', 'order_goods'));
  89. $model_refund = Model('refund_return');
  90. $array_data = array();
  91. foreach ($order_list_array as $value)
  92. {
  93. //显示取消订单
  94. $value['if_cancel'] = $model_order->getOrderOperateState('buyer_cancel', $value);
  95. //显示收货
  96. $value['if_receive'] = $model_order->getOrderOperateState('receive', $value);
  97. //显示锁定中
  98. $value['if_lock'] = $model_order->getOrderOperateState('lock', $value);
  99. //显示物流跟踪
  100. $value['if_deliver'] = $model_order->getOrderOperateState('deliver', $value);
  101. foreach ($value['extend_order_goods'] as $k => $goods_info) {
  102. $value['extend_order_goods'][$k]['goods_image_url'] = cthumb($goods_info['goods_image'], 240, $value['store_id']);
  103. $value['extend_order_goods'][$k]['refund_id'] = (string)$model_refund->getRefundIdForGood($goods_info,$value['extend_order_goods'][$k]['refund_state']);
  104. }
  105. $value['refund_id'] = (string)$model_refund->getRefundId($value,$value['refund_state']);
  106. $array_data[] = $value;
  107. }
  108. self::outsuccess(array("order_list" => $array_data));
  109. }
  110. /**
  111. * 取消订单
  112. */
  113. public function order_cancelOp()
  114. {
  115. $condition = array();
  116. if (!empty($_POST['order_id'])) {
  117. $order_id = intval($_POST['order_id']);
  118. $condition['order_id'] = $order_id;
  119. } else if (!empty($_POST['order_sn'])) {
  120. $condition['order_sn'] = trim($_POST['order_sn']);
  121. } else {
  122. return self::outerr(errcode::ErrParamter, "请传入order_sn.");
  123. }
  124. $model_order = Model('order');
  125. $logic_order = Logic('order');
  126. $condition['buyer_id'] = $_SESSION['member_id'];
  127. Log::record("buyer_id = {$condition['buyer_id']}", Log::DEBUG);
  128. $order_info = $model_order->getOrderInfo($condition);
  129. if ($order_info['order_state'] != ORDER_STATE_NEW) {
  130. Log::record("order_state = {$order_info['order_state']}.", Log::ERR);
  131. return self::outerr(errcode::ErrOrder, "已支付和已发货订单不能取消.");
  132. }
  133. $result = $logic_order->changeOrderStateCancel($order_info, 'buyer', $_SESSION['member_name'], '其它原因');
  134. if (!$result['state']) {
  135. return self::outerr(errcode::ErrOrder, $result['msg']);
  136. } else {
  137. self::outsuccess(array('result' => '1'));
  138. }
  139. }
  140. /**
  141. * 订单确认收货
  142. */
  143. public function order_receiveOp()
  144. {
  145. $model_order = Model('order');
  146. $order_id = intval($_POST['order_id']);
  147. $condition = array();
  148. $condition['order_id'] = $order_id;
  149. $condition['buyer_id'] = $_SESSION['member_id'];
  150. $order_info = $model_order->getOrderInfo($condition);
  151. $if_allow = $model_order->getOrderOperateState('receive', $order_info);
  152. if (!$if_allow) {
  153. return self::outerr(errcode::ErrOrder, '无权操作');
  154. }
  155. $logic_order = Logic('order');
  156. $result = $logic_order->changeOrderStateReceive($order_info, 'buyer', $_SESSION['member_name']);
  157. if (!$result['state']) {
  158. return self::outerr(errcode::ErrOrder, $result['msg']);
  159. } else {
  160. self::outsuccess(array('result' => '1'));
  161. }
  162. }
  163. /**
  164. * 物流跟踪
  165. */
  166. public function search_deliverOp()
  167. {
  168. $order_id = intval($_POST['order_id']);
  169. if ($order_id <= 0) {
  170. return self::outsuccess(NULL,'express/error','wap');
  171. }
  172. $model_order = Model('order');
  173. $condition['order_id'] = $order_id;
  174. $condition['buyer_id'] = $_SESSION['member_id'];
  175. $order_info = $model_order->getOrderInfo($condition, array('order_common', 'order_goods'));
  176. if (empty($order_info) || !in_array($order_info['order_state'], array(ORDER_STATE_SEND, ORDER_STATE_SUCCESS))) {
  177. return self::outsuccess(NULL,'express/error','wap');
  178. }
  179. $express = rkcache('express', true);
  180. $e_code = $express[$order_info['extend_order_common']['shipping_express_id']]['e_kdn_code'];
  181. $e_name = $express[$order_info['extend_order_common']['shipping_express_id']]['e_name'];
  182. $key = "express_{$e_code}_" . $order_info['shipping_code'];
  183. $deliver_info = rkcache($key);
  184. if (empty($deliver_info))
  185. {
  186. $deliver_info = kdn_helper::query($e_code, $order_info['shipping_code']);
  187. if ($deliver_info === false || empty($deliver_info)) {
  188. return self::outsuccess(NULL,'express/error','wap');
  189. }
  190. wkcache($key, $deliver_info, 3600);
  191. }
  192. Log::record($deliver_info,Log::DEBUG);
  193. $deliver_info = json_decode($deliver_info, true);
  194. $routes = $deliver_info['Traces'];
  195. krsort($routes);
  196. switch ($deliver_info['State'])
  197. {
  198. case '2':
  199. $msg = '在途中';
  200. break;
  201. case '3':
  202. $msg = '已签收';
  203. break;
  204. case '4':
  205. $msg = '问题件';
  206. break;
  207. default: {
  208. return self::outsuccess(NULL,'express/error','wap');
  209. }
  210. }
  211. $outdatas = array('query_status' => true,'msg_statu' => $msg,'LogisticCode' => $deliver_info['LogisticCode'],'routes' => $routes);
  212. return self::outsuccess($outdatas,'express/info','wap');
  213. }
  214. /**
  215. * 获取不同状态下订单数量
  216. */
  217. public function orderCountStateOp()
  218. {
  219. $result = Model()->table('order')->field('order_state, count(*) as count')->where(array('buyer_id' => $_SESSION['member_id']))->group('order_state')->select();
  220. self::outsuccess(array('order_count' => $result));
  221. }
  222. }