Order.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  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\member\Member;
  19. use app\model\member\MemberVip;
  20. use app\model\order\Invoice;
  21. use app\model\order\Order as OrderModel;
  22. use app\model\order\OrderCommon;
  23. use app\model\order\OrderCommon as OrderCommonModel;
  24. class Order extends BaseApi
  25. {
  26. /**
  27. * 详情信息
  28. */
  29. public function detail()
  30. {
  31. $token = $this->checkToken();
  32. if ($token['code'] < 0) return $this->response($token);
  33. $order_common_model = new OrderCommonModel();
  34. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  35. $result = $order_common_model->getMemberOrderDetail($order_id,10);
  36. $delivery_info = model("express_delivery_package")->getInfo(['order_id'=>$order_id], 'express_company_name,delivery_no');
  37. print_r($delivery_info);die;
  38. $goods_model = new \app\model\goods\Goods();
  39. $result['data']['create_time']=date('Y-m-d H:i:s',$result['data']['create_time']);
  40. $result['data']['pay_time']=date('Y-m-d H:i:s',$result['data']['pay_time']);
  41. $result['data']['delivery_time']=date('Y-m-d H:i:s',$result['data']['delivery_time']);
  42. $result['data']['finish_time']=date('Y-m-d H:i:s',$result['data']['finish_time']);
  43. $result['data']['express_company_name']=$delivery_info['data']['express_company_name'];
  44. $result['data']['delivery_no']=$delivery_info['data']['delivery_no'];
  45. foreach ($result['data']['order_goods'] as &$vv) {
  46. $sku_spec_format = $goods_model->getGoodsSkuInfo([['sku_id', '=', $vv['sku_id']]], 'sku_spec_format');
  47. $vv['sku_spec_format'] = $sku_spec_format['data']['sku_spec_format'];
  48. }
  49. return $this->response($result);
  50. }
  51. /**
  52. * 列表信息
  53. */
  54. public function lists()
  55. {
  56. $token = $this->checkToken();
  57. if ($token['code'] < 0) return $this->response($token);
  58. $order_common_model = new OrderCommonModel();
  59. $condition = array(
  60. [ "member_id", "=", $this->member_id ],
  61. );
  62. $order_status = isset($this->params['order_status']) ? $this->params['order_status'] : 'all';
  63. switch ($order_status) {
  64. case "waitpay"://待付款
  65. $condition[] = [ "order_status", "=", 0 ];
  66. break;
  67. case "waitsend"://待发货
  68. $condition[] = [ "order_status", "=", 1 ];
  69. break;
  70. case "waitconfirm"://待收货
  71. $condition[] = [ "order_status", "=", 3 ];
  72. break;
  73. case "waitrate"://待评价
  74. $condition[] = [ "order_status", "in", [ 4, 10 ] ];
  75. $condition[] = [ "is_evaluate", "=", 1 ];
  76. break;
  77. }
  78. // if (c !== "all") {
  79. // $condition[] = [ "order_status", "=", $order_status ];
  80. // }
  81. $page_index = isset($this->params['page']) ? $this->params['page'] : 1;
  82. $page_size = isset($this->params['page_size']) ? $this->params['page_size'] : PAGE_LIST_ROWS;
  83. $res = $order_common_model->getMemberOrderPageList($condition, $page_index, $page_size, "create_time desc");
  84. $goods_model = new \app\model\goods\Goods();
  85. foreach ($res['data']['list'] as &$v){
  86. $v['create_time']=date('Y-m-d H:i:s',$v['create_time']);
  87. foreach ($v['order_goods'] as &$vv) {
  88. $sku_spec_format = $goods_model->getGoodsSkuInfo([['sku_id', '=', $vv['sku_id']]], 'sku_spec_format');
  89. $vv['sku_spec_format'] = $sku_spec_format['data']['sku_spec_format'];
  90. }
  91. }
  92. return $this->response($res);
  93. }
  94. /**
  95. * 订单评价基础信息
  96. */
  97. public function evluateinfo()
  98. {
  99. $token = $this->checkToken();
  100. if ($token['code'] < 0) return $this->response($token);
  101. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  102. if (empty($order_id)) {
  103. return $this->response($this->error('', 'REQUEST_ORDER_ID'));
  104. }
  105. $order_common_model = new OrderCommonModel();
  106. $order_info = $order_common_model->getOrderInfo([
  107. [ 'order_id', '=', $order_id ],
  108. [ 'member_id', '=', $token['data']['member_id'] ],
  109. [ 'order_status', 'in', ('4,10') ],
  110. [ 'is_evaluate', '=', 1 ],
  111. ], 'evaluate_status,evaluate_status_name');
  112. $res = $order_info['data'];
  113. if (!empty($res)) {
  114. if ($res['evaluate_status'] == 2) {
  115. return $this->response($this->error('', '该订单已评价'));
  116. } else {
  117. $condition = [
  118. [ 'order_id', '=', $order_id ],
  119. [ 'member_id', '=', $token['data']['member_id'] ],
  120. [ 'refund_status', '<>', 3],
  121. ];
  122. $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');
  123. $list = $list['data'];
  124. $res['list'] = $list;
  125. return $this->response($this->success($res));
  126. }
  127. } else {
  128. return $this->response($this->error('', '没有找到该订单'));
  129. }
  130. }
  131. /**
  132. * 订单收货(收到所有货物)
  133. */
  134. public function takeDelivery()
  135. {
  136. $token = $this->checkToken();
  137. if ($token['code'] < 0) return $this->response($token);
  138. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  139. if (empty($order_id)) {
  140. return $this->response($this->error('', 'REQUEST_ORDER_ID'));
  141. }
  142. $order_model = new OrderCommonModel();
  143. $result = $order_model->orderCommonTakeDelivery($order_id);
  144. return $this->response($result);
  145. }
  146. /**
  147. * @return void
  148. * 订单完成店铺佣金
  149. */
  150. public function shop_commission($order_id){
  151. $order_model = new \app\model\order\Order();
  152. $order = $order_model->getOrderInfo([['order_id','=',$order_id]]);
  153. print_r($order);die;
  154. }
  155. /**
  156. * 关闭订单
  157. */
  158. public function close()
  159. {
  160. $token = $this->checkToken();
  161. if ($token['code'] < 0) return $this->response($token);
  162. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : 0;
  163. if (empty($order_id)) {
  164. return $this->response($this->error('', 'REQUEST_ORDER_ID'));
  165. }
  166. $order_model = new OrderModel();
  167. $result = $order_model->orderClose($order_id);
  168. return $this->response($result);
  169. }
  170. /**
  171. * 获取订单数量
  172. */
  173. public function num()
  174. {
  175. $token = $this->checkToken();
  176. if ($token['code'] < 0) return $this->response($token);
  177. if (empty($this->params['order_status'])) {
  178. return $this->response($this->error('', 'REQUEST_ORDER_STATUS'));
  179. }
  180. $order_common_model = new OrderCommonModel();
  181. $data = [];
  182. foreach (explode(',', $this->params['order_status']) as $order_status) {
  183. $condition = array(
  184. [ "member_id", "=", $this->member_id ],
  185. );
  186. switch ($order_status) {
  187. case "waitpay"://待付款
  188. $condition[] = [ "order_status", "=", 0 ];
  189. break;
  190. case "waitsend"://待发货
  191. $condition[] = [ "order_status", "=", 1 ];
  192. break;
  193. case "waitconfirm"://待收货
  194. $condition[] = [ "order_status", "=", 3 ];
  195. break;
  196. case "waitrate"://待评价
  197. $condition[] = [ "order_status", "in", [ 4, 10 ] ];
  198. $condition[] = [ "is_evaluate", "=", 1 ];
  199. break;
  200. }
  201. $result = $order_common_model->getOrderCount($condition);
  202. $data[ $order_status ] = $result['data'];
  203. }
  204. $data['sum'] = $data['waitpay']+$data['waitsend']+$data['waitconfirm']+$data['waitrate'];
  205. return $this->response(success(0, '', $data));
  206. }
  207. /**
  208. * 订单包裹信息
  209. */
  210. public function package()
  211. {
  212. $token = $this->checkToken();
  213. if ($token['code'] < 0) return $this->response($token);
  214. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  215. $express_package_model = new ExpressPackage();
  216. $condition = array(
  217. [ "member_id", "=", $this->member_id ],
  218. [ "order_id", "=", $order_id ],
  219. );
  220. $result = $express_package_model->package($condition);
  221. if ($result) return $this->response($this->success($result));
  222. else return $this->response($this->error());
  223. }
  224. /**
  225. * 订单支付
  226. * @return string
  227. */
  228. public function pay()
  229. {
  230. $token = $this->checkToken();
  231. if ($token['code'] < 0) return $this->response($token);
  232. $order_ids = isset($this->params['order_ids']) ? $this->params['order_ids'] : '';//订单id
  233. if (empty($order_ids)) return $this->response($this->error('', "订单数据为空"));
  234. $order_common_model = new OrderCommon();
  235. $result = $order_common_model->splitOrderPay($order_ids);
  236. return $this->response($result);
  237. }
  238. /**
  239. * @return false|string
  240. * 修改订单地址
  241. */
  242. public function edit_address(){
  243. $token = $this->checkToken();
  244. if ($token['code'] < 0) return $this->response($token);
  245. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  246. if (empty($order_id)) return $this->response($this->error('', "订单数据为空"));
  247. $addredd_id = isset($this->params['address_id']) ? $this->params['address_id'] : '';//地址id
  248. if (empty($addredd_id)) return $this->response($this->error('', "订单数据为空"));
  249. $address = new \app\model\order\OrderCreate();
  250. $data=['member_id'=> $token['data']['member_id'],
  251. 'address_id'=>$addredd_id];
  252. $member_address = $address->member_address($data);
  253. $data=[
  254. 'name' => $member_address['name'],
  255. 'mobile' => $member_address['mobile'],
  256. 'telephone' => $member_address['telephone'],
  257. 'province_id' => $member_address['province_id'],
  258. 'city_id' => $member_address['city_id'],
  259. 'district_id' => $member_address['district_id'],
  260. 'community_id' => $member_address['community_id'] ,
  261. 'address' => $member_address['address'] ,
  262. 'full_address' => $member_address['full_address'] ,
  263. 'longitude' => $member_address['longitude'] ,
  264. 'latitude' => $member_address['latitude'] ,
  265. ];
  266. $order_common_model = new OrderCommon();
  267. $result = $order_common_model->orderUpdate($data,['order_id'=>$order_id]);
  268. return $this->response($result);
  269. }
  270. /**
  271. * @return false|string
  272. *申请开票
  273. */
  274. public function invoice(){
  275. $token = $this->checkToken();
  276. if ($token['code'] < 0) return $this->response($token);
  277. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  278. if (empty($order_id)) return $this->response($this->error('', "订单数据为空"));
  279. $order_no = isset($this->params['order_no']) ? $this->params['order_no'] : '';//订单id
  280. if (empty($order_no)) return $this->response($this->error('', "订单号为空"));
  281. $invoice_rise = isset($this->params['invoice_rise']) ? $this->params['invoice_rise'] : '';//地址id
  282. if (empty($invoice_rise)) return $this->response($this->error('', "发票抬头不能为空"));
  283. $invoice_type = isset($this->params['invoice_type']) ? $this->params['invoice_type'] : '';//地址id
  284. if (empty($invoice_type)) return $this->response($this->error('', "发票类型不能为空"));
  285. $invoice_price = isset($this->params['invoice_price']) ? $this->params['invoice_price'] : '';//地址id
  286. if (empty($invoice_price)) return $this->response($this->error('', "发票金额不能为空"));
  287. $member_model = new \app\model\member\Member();
  288. $member = $member_model->getMemberInfo([['member_id','=',$token['data']['member_id']]],'username');
  289. $order_common_model = new OrderCommonModel();
  290. $site_id = $order_common_model->getOrderInfo(['order_id'=>$order_id],'site_id,sign_time');
  291. // $invoice_time = $site_id['data']['sign_time']+86400*20;
  292. // if ($invoice_time<time()) return $this->response($this->error('', "签收二十天后才能申请开票"));
  293. $data = [
  294. 'member_id'=>$token['data']['member_id'],
  295. 'member_username'=>$member['data']['username'],
  296. 'order_id'=>$order_id,
  297. 'order_no'=>$order_no,
  298. 'invoice_rise'=>$invoice_rise,
  299. 'invoice_type'=>$invoice_type,
  300. 'invoice_price'=>$invoice_price,
  301. 'site_id'=>$site_id['data']['site_id'],
  302. 'create_time'=>time()
  303. ];
  304. $invoice_model = new Invoice();
  305. $res = $invoice_model->add_invoice($data);
  306. return $this->response($res);
  307. }
  308. public function order_pay(){
  309. $token = $this->checkToken();
  310. if ($token['code'] < 0) return $this->response($token);
  311. $order_id = isset($this->params['order_id']) ? $this->params['order_id'] : '';//订单id
  312. if (empty($order_id)) return $this->response($this->error('', "订单数据为空"));
  313. $pay_money = isset($this->params['pay_money']) ? $this->params['pay_money'] : '';//订单id
  314. if (empty($pay_money)) return $this->response($this->error('', "支付金额不能为空"));
  315. $pay_type = isset($this->params['pay_type']) ? $this->params['pay_type'] : '';//订单id
  316. if (empty($pay_type)) return $this->response($this->error('', "支付类型不能为空"));
  317. model("order")->update(['pay_type'], [['order_id'=>$order_id]]);
  318. $member_model = new Member();
  319. $member_data = $member_model->getMemberInfo([['member_id','=',$token['data']['member_id']]],'balance_money');
  320. $member_money = $member_data['data']['balance_money'];
  321. if($pay_money>$member_money){
  322. return $this->response($this->error('', "账户余额不足"));
  323. }
  324. $order_list = model("order")->getList([ [ 'order_id', 'in', $order_id ] ], '*');
  325. foreach ($order_list as &$v){
  326. if($v['order_status']>0){
  327. return $this->response($this->error('存在已支付订单'));
  328. break;
  329. }
  330. }
  331. $data = ['member_id' => $token['data']['member_id'], 'pay_money' => $pay_money, 'pay_type' => $pay_type, 'order_id' => $order_id];
  332. $order_common_model = new OrderCommon();
  333. $result = $order_common_model->order_pay($data);
  334. return $this->response($result);
  335. }
  336. }