Order.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <?php
  2. /**
  3. * Index.php
  4. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  5. * =========================================================
  6. * Copy right 2015-2025 山西牛酷信息科技有限公司, 保留所有权利。
  7. * ----------------------------------------------
  8. * 官方网址: http://www.niushop.com.cn
  9. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  10. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  11. * =========================================================
  12. * @author : niuteam
  13. * @date : 2015.1.17
  14. * @version : v1.0.0.0
  15. */
  16. namespace app\api\controller;
  17. use app\model\express\ExpressPackage;
  18. use app\model\order\Invoice;
  19. use app\model\order\Order as OrderModel;
  20. use app\model\order\OrderCommon;
  21. use app\model\order\OrderCommon as OrderCommonModel;
  22. class Order extends BaseApi
  23. {
  24. /**
  25. * 详情信息
  26. */
  27. public function detail()
  28. {
  29. $token = $this->checkToken();
  30. if ($token['code'] < 0) return $this->response($token);
  31. $order_common_model = new OrderCommonModel();
  32. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  33. $result = $order_common_model->getMemberOrderDetail($order_id, $this->member_id);
  34. $goods_model = new \app\model\goods\Goods();
  35. $result['data']['create_time']=date('Y-m-d H:i:s',$result['data']['create_time']);
  36. $result['data']['pay_time']=date('Y-m-d H:i:s',$result['data']['pay_time']);
  37. $result['data']['delivery_time']=date('Y-m-d H:i:s',$result['data']['delivery_time']);
  38. $result['data']['finish_time']=date('Y-m-d H:i:s',$result['data']['finish_time']);
  39. foreach ($result['data']['order_goods'] as &$vv) {
  40. $sku_spec_format = $goods_model->getGoodsSkuInfo([['sku_id', '=', $vv['sku_id']]], 'sku_spec_format');
  41. $vv['sku_spec_format'] = $sku_spec_format['data']['sku_spec_format'];
  42. }
  43. return $this->response($result);
  44. }
  45. /**
  46. * 列表信息
  47. */
  48. public function lists()
  49. {
  50. $token = $this->checkToken();
  51. if ($token['code'] < 0) return $this->response($token);
  52. $order_common_model = new OrderCommonModel();
  53. $condition = array(
  54. [ "member_id", "=", $this->member_id ],
  55. );
  56. $order_status = isset($this->params['order_status']) ? $this->params['order_status'] : 'all';
  57. switch ($order_status) {
  58. case "waitpay"://待付款
  59. $condition[] = [ "order_status", "=", 0 ];
  60. break;
  61. case "waitsend"://待发货
  62. $condition[] = [ "order_status", "=", 1 ];
  63. break;
  64. case "waitconfirm"://待收货
  65. $condition[] = [ "order_status", "=", 3 ];
  66. break;
  67. case "waitrate"://待评价
  68. $condition[] = [ "order_status", "in", [ 4, 10 ] ];
  69. $condition[] = [ "is_evaluate", "=", 1 ];
  70. break;
  71. }
  72. // if (c !== "all") {
  73. // $condition[] = [ "order_status", "=", $order_status ];
  74. // }
  75. $page_index = isset($this->params['page']) ? $this->params['page'] : 1;
  76. $page_size = isset($this->params['page_size']) ? $this->params['page_size'] : PAGE_LIST_ROWS;
  77. $res = $order_common_model->getMemberOrderPageList($condition, $page_index, $page_size, "create_time desc");
  78. $goods_model = new \app\model\goods\Goods();
  79. foreach ($res['data']['list'] as &$v){
  80. $v['create_time']=date('Y-m-d H:i:s',$v['create_time']);
  81. foreach ($v['order_goods'] as &$vv) {
  82. $sku_spec_format = $goods_model->getGoodsSkuInfo([['sku_id', '=', $vv['sku_id']]], 'sku_spec_format');
  83. $vv['sku_spec_format'] = $sku_spec_format['data']['sku_spec_format'];
  84. }
  85. }
  86. return $this->response($res);
  87. }
  88. /**
  89. * 订单评价基础信息
  90. */
  91. public function evluateinfo()
  92. {
  93. $token = $this->checkToken();
  94. if ($token['code'] < 0) return $this->response($token);
  95. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  96. if (empty($order_id)) {
  97. return $this->response($this->error('', 'REQUEST_ORDER_ID'));
  98. }
  99. $order_common_model = new OrderCommonModel();
  100. $order_info = $order_common_model->getOrderInfo([
  101. [ 'order_id', '=', $order_id ],
  102. [ 'member_id', '=', $token['data']['member_id'] ],
  103. [ 'order_status', 'in', ('4,10') ],
  104. [ 'is_evaluate', '=', 1 ],
  105. ], 'evaluate_status,evaluate_status_name');
  106. $res = $order_info['data'];
  107. if (!empty($res)) {
  108. if ($res['evaluate_status'] == 2) {
  109. return $this->response($this->error('', '该订单已评价'));
  110. } else {
  111. $condition = [
  112. [ 'order_id', '=', $order_id ],
  113. [ 'member_id', '=', $token['data']['member_id'] ],
  114. [ 'refund_status', '<>', 3],
  115. ];
  116. $list = $order_common_model->getOrderGoodsList($condition, 'order_goods_id,order_id,order_no,site_id,site_name,member_id,goods_id,sku_id,sku_name,sku_image,price,num');
  117. $list = $list['data'];
  118. $res['list'] = $list;
  119. return $this->response($this->success($res));
  120. }
  121. } else {
  122. return $this->response($this->error('', '没有找到该订单'));
  123. }
  124. }
  125. /**
  126. * 订单收货(收到所有货物)
  127. */
  128. public function takeDelivery()
  129. {
  130. $token = $this->checkToken();
  131. if ($token['code'] < 0) return $this->response($token);
  132. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  133. if (empty($order_id)) {
  134. return $this->response($this->error('', 'REQUEST_ORDER_ID'));
  135. }
  136. $order_model = new OrderCommonModel();
  137. $result = $order_model->orderCommonTakeDelivery($order_id);
  138. return $this->response($result);
  139. }
  140. /**
  141. * 关闭订单
  142. */
  143. public function close()
  144. {
  145. $token = $this->checkToken();
  146. if ($token['code'] < 0) return $this->response($token);
  147. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  148. if (empty($order_id)) {
  149. return $this->response($this->error('', 'REQUEST_ORDER_ID'));
  150. }
  151. $order_model = new OrderModel();
  152. $result = $order_model->orderClose($order_id);
  153. return $this->response($result);
  154. }
  155. /**
  156. * 获取订单数量
  157. */
  158. public function num()
  159. {
  160. $token = $this->checkToken();
  161. if ($token['code'] < 0) return $this->response($token);
  162. if (empty($this->params['order_status'])) {
  163. return $this->response($this->error('', 'REQUEST_ORDER_STATUS'));
  164. }
  165. $order_common_model = new OrderCommonModel();
  166. $data = [];
  167. foreach (explode(',', $this->params['order_status']) as $order_status) {
  168. $condition = array(
  169. [ "member_id", "=", $this->member_id ],
  170. );
  171. switch ($order_status) {
  172. case "waitpay"://待付款
  173. $condition[] = [ "order_status", "=", 0 ];
  174. break;
  175. case "waitsend"://待发货
  176. $condition[] = [ "order_status", "=", 1 ];
  177. break;
  178. case "waitconfirm"://待收货
  179. $condition[] = [ "order_status", "=", 3 ];
  180. break;
  181. case "waitrate"://待评价
  182. $condition[] = [ "order_status", "in", [ 4, 10 ] ];
  183. $condition[] = [ "is_evaluate", "=", 1 ];
  184. break;
  185. }
  186. $result = $order_common_model->getOrderCount($condition);
  187. $data[ $order_status ] = $result['data'];
  188. }
  189. $data['sum'] = $data['waitpay']+$data['waitsend']+$data['waitconfirm']+$data['waitrate'];
  190. return $this->response(success(0, '', $data));
  191. }
  192. /**
  193. * 订单包裹信息
  194. */
  195. public function package()
  196. {
  197. $token = $this->checkToken();
  198. if ($token['code'] < 0) return $this->response($token);
  199. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  200. $express_package_model = new ExpressPackage();
  201. $condition = array(
  202. [ "member_id", "=", $this->member_id ],
  203. [ "order_id", "=", $order_id ],
  204. );
  205. $result = $express_package_model->package($condition);
  206. if ($result) return $this->response($this->success($result));
  207. else return $this->response($this->error());
  208. }
  209. /**
  210. * 订单支付
  211. * @return string
  212. */
  213. public function pay()
  214. {
  215. $token = $this->checkToken();
  216. if ($token['code'] < 0) return $this->response($token);
  217. $order_ids = isset($this->params['order_ids']) ? $this->params['order_ids'] : '';//订单id
  218. if (empty($order_ids)) return $this->response($this->error('', "订单数据为空"));
  219. $order_common_model = new OrderCommon();
  220. $result = $order_common_model->splitOrderPay($order_ids);
  221. return $this->response($result);
  222. }
  223. /**
  224. * @return false|string
  225. * 修改订单地址
  226. */
  227. public function edit_address(){
  228. $token = $this->checkToken();
  229. if ($token['code'] < 0) return $this->response($token);
  230. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  231. if (empty($order_id)) return $this->response($this->error('', "订单数据为空"));
  232. $addredd_id = isset($this->params['address_id']) ? $this->params['address_id'] : '';//地址id
  233. if (empty($addredd_id)) return $this->response($this->error('', "订单数据为空"));
  234. $address = new \app\model\order\OrderCreate();
  235. $data=['member_id'=> $token['data']['member_id'],
  236. 'address_id'=>$addredd_id];
  237. $member_address = $address->member_address($data);
  238. $data=[
  239. 'name' => $member_address['member_address']['name'],
  240. 'mobile' => $member_address['member_address']['mobile'],
  241. 'telephone' => $member_address['member_address']['telephone'],
  242. 'province_id' => $member_address['member_address']['province_id'],
  243. 'city_id' => $member_address['member_address']['city_id'],
  244. 'district_id' => $member_address['member_address']['district_id'],
  245. 'community_id' => $member_address['member_address']['community_id'] ,
  246. 'address' => $member_address['member_address']['address'] ,
  247. 'full_address' => $member_address['member_address']['full_address'] ,
  248. 'longitude' => $member_address['member_address']['longitude'] ,
  249. 'latitude' => $member_address['member_address']['latitude'] ,
  250. ];
  251. $order_common_model = new OrderCommon();
  252. $result = $order_common_model->orderUpdate($data,['order_id'=>$order_id]);
  253. return $this->response($result);
  254. }
  255. /**
  256. * @return false|string
  257. *申请开票
  258. */
  259. public function invoice(){
  260. $token = $this->checkToken();
  261. if ($token['code'] < 0) return $this->response($token);
  262. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  263. if (empty($order_id)) return $this->response($this->error('', "订单数据为空"));
  264. $order_no = isset($this->params['order_no']) ? $this->params['order_no'] : '';//订单id
  265. if (empty($order_no)) return $this->response($this->error('', "订单号为空"));
  266. $invoice_rise = isset($this->params['invoice_rise']) ? $this->params['invoice_rise'] : '';//地址id
  267. if (empty($invoice_rise)) return $this->response($this->error('', "发票抬头不能为空"));
  268. $invoice_type = isset($this->params['invoice_type']) ? $this->params['invoice_type'] : '';//地址id
  269. if (empty($invoice_type)) return $this->response($this->error('', "发票类型不能为空"));
  270. $invoice_price = isset($this->params['invoice_price']) ? $this->params['invoice_price'] : '';//地址id
  271. if (empty($invoice_price)) return $this->response($this->error('', "发票金额不能为空"));
  272. $member_model = new \app\model\member\Member();
  273. $member = $member_model->getMemberInfo([['member_id','=',$token['data']['member_id']]],'username');
  274. $data = [
  275. 'member_id'=>$token['data']['member_id'],
  276. 'member_username'=>$member['data']['username'],
  277. 'order_id'=>$order_id,
  278. 'order_no'=>$order_no,
  279. 'invoice_rise'=>$invoice_rise,
  280. 'invoice_type'=>$invoice_type,
  281. 'invoice_price'=>$invoice_price,
  282. 'create_time'=>time()
  283. ];
  284. $invoice_model = new Invoice();
  285. $res = $invoice_model->add_invoice($data);
  286. return $this->response($res);
  287. }
  288. }