Order.php 14 KB

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