Order.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\cashier\storeapi\controller;
  13. use app\model\express\ExpressCompany;
  14. use app\model\express\ExpressDeliver;
  15. use app\model\order\LocalOrder as LocalOrderModel;
  16. use app\model\order\Order as OrderModel;
  17. use app\model\order\OrderCommon;
  18. use app\model\order\OrderLog;
  19. use app\model\verify\Verify;
  20. use app\storeapi\controller\BaseStoreApi;
  21. /**
  22. * 订单控制器
  23. * Class Sysorder
  24. * @package addon\shop\siteapi\controller
  25. */
  26. class Order extends BaseStoreApi
  27. {
  28. /**
  29. * 列表
  30. * @return false|string
  31. */
  32. public function lists()
  33. {
  34. $order_common_model = new OrderModel();
  35. $page = $this->params[ 'page' ] ?? 1;
  36. $page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS;
  37. $search_text = $this->params[ 'search_text' ] ?? '';
  38. $order_status = $this->params[ 'order_status' ] ?? 'all';
  39. $start_time = $this->params[ 'start_time' ] ?? '';
  40. $end_time = $this->params[ 'end_time' ] ?? '';
  41. $trade_type = $this->params[ 'trade_type' ] ?? '';
  42. $order_from = $this->params[ 'order_from' ] ?? '';
  43. $pay_type = $this->params[ 'pay_type' ] ?? '';
  44. $condition = [
  45. [ 'site_id', '=', $this->site_id ],
  46. [ 'store_id', '=', $this->store_id ],
  47. [ 'is_delete', '=', 0 ],
  48. [ 'order_type', '=', 'o2o' ],
  49. ];
  50. //订单状态
  51. if ($order_status != 'all' && !empty($order_status)) {
  52. if ($order_status == $order_common_model::ORDER_REFUNDING) {
  53. $condition[] = [ 'is_exist_refund', '=', 1 ];
  54. } else {
  55. $condition[] = [ 'order_status', '=', $order_status ];
  56. }
  57. }
  58. //订单时间
  59. if (!empty($start_time) && empty($end_time)) {
  60. $condition[] = [ 'create_time', '>=', date_to_time($start_time) ];
  61. } elseif (empty($start_time) && !empty($end_time)) {
  62. $condition[] = [ 'create_time', '<=', date_to_time($end_time) ];
  63. } elseif (!empty($start_time) && !empty($end_time)) {
  64. $condition[] = [ 'create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  65. }
  66. //订单内容
  67. if ($search_text != '') {
  68. $condition[] = [ 'order_no|out_trade_no|order_name|nickname', 'like', '%' . $search_text . '%' ];
  69. }
  70. //收货方式
  71. if ($trade_type != '') {
  72. $condition[] = [ 'trade_type', '=', $trade_type ];
  73. }
  74. //订单来源
  75. if ($order_from != '') {
  76. $condition[] = [ 'order_from', '=', $order_from ];
  77. }
  78. //订单支付
  79. if ($pay_type != '') {
  80. $condition[] = [ 'pay_type', '=', $pay_type ];
  81. }
  82. $order = 'create_time desc';
  83. $field = '*';
  84. $list = $order_common_model->getOrderPageList($condition, $page, $page_size, $order, $field);
  85. return $this->response($list);
  86. }
  87. /**
  88. * 获取支付方式
  89. */
  90. public function getOrderPayType()
  91. {
  92. $order_common_model = new OrderModel();
  93. $pay_type_list = $order_common_model->getPayType();
  94. return $this->response($this->success($pay_type_list));
  95. }
  96. /**
  97. * 获取订单来源
  98. */
  99. public function getOrderFromType()
  100. {
  101. $order_common_model = new OrderModel();
  102. $list = $order_common_model->getOrderFromList([ 'order_scene' => 'cashier' ]);
  103. return $this->response($this->success($list));
  104. }
  105. /**
  106. * 获取订单信息
  107. */
  108. public function info()
  109. {
  110. $order_id = $this->params[ 'order_id' ] ?? 0;
  111. //订单信息
  112. $order_common_model = new OrderModel();
  113. $condition = array (
  114. [ 'order_id', '=', $order_id ],
  115. [ 'site_id', '=', $this->site_id ],
  116. [ 'store_id', '=', $this->store_id ],
  117. );
  118. $res = $order_common_model->getOrderInfo($condition)[ 'data' ];
  119. return $this->response($res);
  120. }
  121. /**
  122. * 订单详情
  123. */
  124. public function detail()
  125. {
  126. $order_id = $this->params[ 'order_id' ] ?? 0;
  127. //订单详情
  128. $order_common_model = new OrderModel();
  129. $order_detail = $order_common_model->getOrderDetail($order_id)[ 'data' ];
  130. if (empty($order_detail)) return $this->response($this->error(null, '无法获取订单数据'));
  131. //查询订单日志
  132. $order_log_model = new OrderLog();
  133. $log_condition = [
  134. [ 'order_id', '=', $order_id ],
  135. ];
  136. $order_detail[ 'order_log_list' ] = $order_log_model->getOrderLogList($log_condition, '*', 'action_time desc,id desc')[ 'data' ];
  137. return $this->response($this->success($order_detail));
  138. }
  139. /**
  140. * 订单调价
  141. * @return false|string
  142. */
  143. public function adjustPrice()
  144. {
  145. $order_id = $this->params[ 'order_id' ] ?? 0;
  146. $adjust_money = $this->params[ 'adjust_money' ] ?? 0;
  147. $shipping_money = $this->params[ 'shipping_money' ] ?? 0;
  148. $order_common_model = new OrderModel();
  149. $result = $order_common_model->orderAdjustMoney($order_id, $adjust_money, $shipping_money);
  150. return $this->response($result);
  151. }
  152. /**
  153. * 订单关闭
  154. * @return mixed
  155. */
  156. public function close()
  157. {
  158. $order_id = $this->params[ 'order_id' ] ?? 0;
  159. $order_common_model = new OrderModel();
  160. $log_data = [
  161. 'uid' => $this->user_info[ 'uid' ],
  162. 'nick_name' => $this->user_info[ 'username' ],
  163. 'action_way' => 2
  164. ];
  165. $result = $order_common_model->orderClose($order_id, $log_data,'商家关闭了订单');
  166. return $this->response($result);
  167. }
  168. /**
  169. * 订单删除
  170. */
  171. public function delete()
  172. {
  173. $order_id = $this->params[ 'order_id' ] ?? 0;
  174. $order_common_model = new OrderModel();
  175. $result = $order_common_model->orderDelete($order_id, $this->site_id);
  176. return $this->response($result);
  177. }
  178. /**
  179. * 同城配送发货
  180. * @return false|string
  181. */
  182. public function localDelivery()
  183. {
  184. $order_id = $this->params[ 'order_id' ] ?? 0;
  185. $deliverer = $this->params[ 'deliverer' ] ?? '';
  186. $deliverer_mobile = $this->params[ 'deliverer_mobile' ] ?? '';
  187. $local_order_model = new LocalOrderModel();
  188. $data = [
  189. 'order_id' => $order_id,
  190. 'deliverer' => $deliverer,
  191. 'deliverer_mobile' => $deliverer_mobile,
  192. 'site_id' => $this->site_id,
  193. 'store_id' => $this->store_id
  194. ];
  195. $result = $local_order_model->orderGoodsDelivery($data);
  196. return $this->response($result);
  197. }
  198. /**
  199. * 门店提货
  200. * @return array|mixed|void
  201. */
  202. public function storeDelivery()
  203. {
  204. $order_id = $this->params[ 'order_id' ] ?? 0;
  205. $order_common_model = new OrderCommon();
  206. $condition = array (
  207. [ 'site_id', '=', $this->site_id ],
  208. [ 'store_id', '=', $this->store_id ],
  209. [ 'order_id', '=', $order_id ]
  210. );
  211. $order_info = $order_common_model->getOrderInfo($condition, 'delivery_code')[ 'data' ] ?? [];
  212. if (empty($order_info)) return $this->response($this->error('', '订单不存在'));
  213. $verify_code = $order_info[ 'delivery_code' ];
  214. $info = array (
  215. "verifier_id" => $this->uid,
  216. "verifier_name" => $this->user_info[ 'username' ],
  217. "verify_from" => 'shop',
  218. "store_id" => $this->store_id
  219. );
  220. $verify_model = new Verify();
  221. $result = $verify_model->verify($info, $verify_code);
  222. return $this->response($result);
  223. }
  224. /**
  225. * 快递发货
  226. * @return false|string
  227. */
  228. public function expressDelivery()
  229. {
  230. $order_model = new OrderModel();
  231. $data = array (
  232. 'type' => 'manual',//发货方式(手动发货、电子面单)
  233. 'order_goods_ids' => $this->params[ 'order_goods_ids' ] ?? '',//商品id
  234. 'express_company_id' => $this->params[ 'express_company_id' ] ?? 0,//物流公司
  235. 'delivery_no' => $this->params[ 'delivery_no' ] ?? '',//快递单号
  236. 'order_id' => $this->params[ 'order_id' ] ?? 0,//订单id
  237. 'delivery_type' => $this->params[ 'delivery_type' ] ?? 0,//是否需要物流
  238. 'site_id' => $this->site_id,
  239. 'store_id' => $this->store_id,
  240. 'template_id' => 0,//电子面单模板id
  241. 'user_info' => $this->user_info
  242. );
  243. $log_data = [
  244. 'uid' => $this->user_info[ 'uid' ],
  245. 'nick_name' => $this->user_info[ 'username' ],
  246. 'action' => '商家对订单进行了发货',
  247. 'action_way' => 2,
  248. ];
  249. $result = $order_model->orderGoodsDelivery($data, 1, $log_data);
  250. return $this->response($result);
  251. }
  252. /**
  253. * 获取门店配送员
  254. */
  255. public function deliverList()
  256. {
  257. $deliver_model = new ExpressDeliver();
  258. $list = $deliver_model->getDeliverLists([ [ 'site_id', '=', $this->site_id ], [ 'store_id', '=', $this->store_id ] ], 'deliver_id,deliver_name,deliver_mobile');
  259. return $this->response($list);
  260. }
  261. /**
  262. * 获取物流公司
  263. * @return false|string
  264. */
  265. public function expressCompany()
  266. {
  267. $express_company_model = new ExpressCompany();
  268. //店铺物流公司
  269. $result = $express_company_model->getExpressCompanyList([ [ "site_id", "=", $this->site_id ] ]);
  270. return $this->response($result);
  271. }
  272. }