member_order.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  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. /**
  19. * 订单列表
  20. */
  21. public function order_listOp()
  22. {
  23. $page = trim($_GET['page']);
  24. $curpage = trim($_GET['curpage']);
  25. if (!isset($_GET['page'])) {
  26. $page = "100";
  27. $curpage = "1";
  28. $this->page = 100;
  29. }
  30. initpage($page, $curpage);
  31. $model_order = Model('order');
  32. $condition = array();
  33. $condition['buyer_id'] = $_SESSION['member_id'];
  34. $order_state = intval(trim($_GET['state']));
  35. if ($order_state >= 10) {
  36. $condition['order_state'] = $order_state;
  37. }
  38. $order_list_array = $model_order->getNormalOrderList($condition, $this->page, '*', 'order_id desc', '', array('order_address', 'order_goods'));
  39. $order_group_list = array();
  40. $order_pay_sn_array = array();
  41. foreach ($order_list_array as $value)
  42. {
  43. //显示取消订单
  44. $value['if_cancel'] = $model_order->getOrderOperateState('buyer_cancel', $value);
  45. //显示收货
  46. $value['if_receive'] = $model_order->getOrderOperateState('receive', $value);
  47. //显示锁定中
  48. $value['if_lock'] = $model_order->getOrderOperateState('lock', $value);
  49. //显示物流跟踪
  50. $value['if_deliver'] = $model_order->getOrderOperateState('deliver', $value);
  51. //商品图
  52. foreach ($value['extend_order_goods'] as $k => $goods_info) {
  53. $value['extend_order_goods'][$k]['goods_image_url'] = cthumb($goods_info['goods_image'], 240, $value['store_id']);
  54. }
  55. $order_group_list[$value['pay_sn']]['order_list'][] = $value;
  56. //如果有在线支付且未付款的订单则显示合并付款链接
  57. if ($value['order_state'] == ORDER_STATE_NEW) {
  58. $order_group_list[$value['pay_sn']]['pay_amount'] += $value['order_amount'] - $value['rcb_amount'] - $value['pd_amount'];
  59. }
  60. $order_group_list[$value['pay_sn']]['add_time'] = $value['add_time'];
  61. //记录一下pay_sn,后面需要查询支付单表
  62. $order_pay_sn_array[] = $value['pay_sn'];
  63. }
  64. $new_order_group_list = array();
  65. foreach ($order_group_list as $key => $value) {
  66. $value['pay_sn'] = strval($key);
  67. $new_order_group_list[] = $value;
  68. }
  69. $page_count = $model_order->gettotalpage();
  70. $model_order->cls();
  71. $array_data = array('order_group_list' => $new_order_group_list);
  72. if (isset($_GET['getpayment']) && $_GET['getpayment'] == "true")
  73. {
  74. $model_mb_payment = Model('mb_payment');
  75. $payment_list = $model_mb_payment->getMbPaymentOpenList();
  76. $payment_array = array();
  77. if (!empty($payment_list))
  78. {
  79. foreach ($payment_list as $value) {
  80. $payment_array[] = array('payment_code' => $value['payment_code'], 'payment_name' => $value['payment_name']);
  81. }
  82. }
  83. $array_data['payment_list'] = $payment_array;
  84. }
  85. $array_data['mobile_page'] = mobile_page($page_count);
  86. self::outsuccess($array_data);
  87. }
  88. /**
  89. * 订单信息
  90. */
  91. public function order_infoOp()
  92. {
  93. $model_order = Model('order');
  94. $condition = array();
  95. $condition['buyer_id'] = $_SESSION['member_id'];
  96. $condition['pay_sn'] = $_POST['pay_sn'];
  97. $order_list_array = $model_order->getNormalOrderList($condition, $this->page, '*', 'order_id desc', '', array('order_address', 'order_goods'));
  98. $array_data = array();
  99. foreach ($order_list_array as $value)
  100. {
  101. //显示取消订单
  102. $value['if_cancel'] = $model_order->getOrderOperateState('buyer_cancel', $value);
  103. //显示收货
  104. $value['if_receive'] = $model_order->getOrderOperateState('receive', $value);
  105. //显示锁定中
  106. $value['if_lock'] = $model_order->getOrderOperateState('lock', $value);
  107. //显示物流跟踪
  108. $value['if_deliver'] = $model_order->getOrderOperateState('deliver', $value);
  109. foreach ($value['extend_order_goods'] as $k => $goods_info) {
  110. $value['extend_order_goods'][$k]['goods_image_url'] = cthumb($goods_info['goods_image'], 240, $value['store_id']);
  111. }
  112. $array_data[] = $value;
  113. }
  114. self::outsuccess(array("order_list" => $array_data));
  115. }
  116. /**
  117. * 取消订单
  118. */
  119. public function order_cancelOp()
  120. {
  121. $condition = array();
  122. if (!empty($_POST['order_id'])) {
  123. $order_id = intval($_POST['order_id']);
  124. $condition['order_id'] = $order_id;
  125. } else if (!empty($_POST['order_sn'])) {
  126. $condition['order_sn'] = trim($_POST['order_sn']);
  127. } else {
  128. return self::outerr(errcode::ErrParamter, "请传入order_sn.");
  129. }
  130. $model_order = Model('order');
  131. $logic_order = Logic('order');
  132. $condition['buyer_id'] = $_SESSION['member_id'];
  133. Log::record("buyer_id = {$condition['buyer_id']}", Log::DEBUG);
  134. $order_info = $model_order->getOrderInfo($condition);
  135. // $if_allow = $model_order->getOrderOperateState('buyer_cancel', $order_info);
  136. // if (!$if_allow) {
  137. // return self::outerr(errcode::ErrOrder, '无权操作');
  138. // }
  139. if ($order_info['order_state'] != ORDER_STATE_NEW) {
  140. Log::record("order_state = {$order_info['order_state']}.", Log::ERR);
  141. return self::outerr(errcode::ErrOrder, "已支付和已发货订单不能取消.");
  142. }
  143. $result = $logic_order->changeOrderStateCancel($order_info, 'buyer', $_SESSION['member_name'], '其它原因');
  144. if (!$result['state']) {
  145. return self::outerr(errcode::ErrOrder, $result['msg']);
  146. } else {
  147. self::outsuccess(array('result' => '1'));
  148. }
  149. }
  150. /**
  151. * 订单确认收货
  152. */
  153. public function order_receiveOp()
  154. {
  155. $model_order = Model('order');
  156. $order_id = intval($_POST['order_id']);
  157. $condition = array();
  158. $condition['order_id'] = $order_id;
  159. $condition['buyer_id'] = $_SESSION['member_id'];
  160. $order_info = $model_order->getOrderInfo($condition);
  161. $if_allow = $model_order->getOrderOperateState('receive', $order_info);
  162. if (!$if_allow) {
  163. return self::outerr(errcode::ErrOrder, '无权操作');
  164. }
  165. $logic_order = Logic('order');
  166. $result = $logic_order->changeOrderStateReceive($order_info, 'buyer', $_SESSION['member_name']);
  167. if (!$result['state']) {
  168. return self::outerr(errcode::ErrOrder, $result['msg']);
  169. } else {
  170. self::outsuccess(array('result' => '1'));
  171. }
  172. }
  173. /**
  174. * 物流跟踪
  175. */
  176. public function search_deliverOp()
  177. {
  178. $html_type = "html";
  179. $cur_type = $html_type;
  180. if($cur_type == $html_type) {
  181. Tpl::output('query_status', false);
  182. Tpl::showpage('express_info');
  183. return;
  184. } else {
  185. return self::outerr($this->err_code);
  186. }
  187. $order_id = intval($_POST['order_id']);
  188. if ($order_id <= 0)
  189. {
  190. if($cur_type == $html_type) {
  191. Tpl::output('query_status', false);
  192. Tpl::showpage('express_info');
  193. return;
  194. } else {
  195. return self::outerr(errcode::ErrOrder, '订单不存在');
  196. }
  197. }
  198. $model_order = Model('order');
  199. $condition['order_id'] = $order_id;
  200. $condition['buyer_id'] = $_SESSION['member_id'];
  201. $order_info = $model_order->getOrderInfo($condition, array('order_common', 'order_goods'));
  202. if (empty($order_info) || !in_array($order_info['order_state'], array(ORDER_STATE_SEND, ORDER_STATE_SUCCESS)))
  203. {
  204. if($cur_type == $html_type) {
  205. Tpl::output('query_status', false);
  206. Tpl::showpage('express_info');
  207. return;
  208. } else {
  209. return self::outerr(errcode::ErrOrder, '订单不存在');
  210. }
  211. }
  212. $express = rkcache('express', true);
  213. $e_code = $express[$order_info['extend_order_common']['shipping_express_id']]['e_kdn_code'];
  214. $e_name = $express[$order_info['extend_order_common']['shipping_express_id']]['e_name'];
  215. $key = "express_" . $order_info['shipping_code'];
  216. $deliver_info = rkcache($key);
  217. if (empty($deliver_info))
  218. {
  219. $deliver_info = kdn_helper::query($e_code, $order_info['shipping_code']);
  220. if ($deliver_info === false || empty($deliver_info))
  221. {
  222. Log::record("search_deliver:cannot query delivery info from kuaidn.",Log::ERR);
  223. Tpl::output('query_status', false);
  224. Tpl::showpage('express_info');
  225. return;
  226. }
  227. wkcache($key, $deliver_info, 3600);
  228. }
  229. Log::record($deliver_info,Log::DEBUG);
  230. $deliver_info = json_decode($deliver_info, true);
  231. $routes = $deliver_info['Traces'];
  232. krsort($routes);
  233. switch ($deliver_info['State'])
  234. {
  235. case '2':
  236. $msg = '在途中';
  237. break;
  238. case '3':
  239. $msg = '已签收';
  240. break;
  241. case '4':
  242. $msg = '问题件';
  243. break;
  244. default: {
  245. Tpl::output('query_status', false);
  246. Tpl::showpage('express_info');
  247. return;
  248. }
  249. }
  250. Tpl::output('query_status', true);
  251. Tpl::output('msg_statu', $msg);
  252. Tpl::output('LogisticCode', $deliver_info['LogisticCode']);
  253. Tpl::output('routes', $routes);
  254. Tpl::showpage('express_info');
  255. }
  256. /**
  257. * 获取不同状态下订单数量
  258. */
  259. public function orderCountStateOp()
  260. {
  261. $condition = array();
  262. $condition['buyer_id'] = $_SESSION['member_id'];
  263. $result = Model()->table('order')->field('order_state, count(*) as count')->where($condition)->group('order_state')->select();
  264. self::outsuccess(array('order_count' => $result));
  265. }
  266. }