Ordertrade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\store\shopapi\controller;
  13. use app\model\express\ExpressCompany;
  14. use app\model\express\ExpressCompanyTemplate;
  15. use app\model\order\OrderCommon as OrderCommonModel;
  16. use app\model\order\OrderCommon;
  17. use app\model\order\OrderTrade as OrderTradeModel;
  18. use app\model\verify\Verify as VerifyModel;
  19. /**
  20. * 订单控制器
  21. * Class Sysorder
  22. * @package addon\shop\siteapi\controller
  23. */
  24. class Ordertrade extends BaseStoreApi
  25. {
  26. /**
  27. * 订单修改收货地址
  28. * @return mixed
  29. */
  30. public function editAddress()
  31. {
  32. $order_id = input('order_id', 0);
  33. $order_common_model = new OrderCommon();
  34. $province_id = $this->params[ 'province_id' ] ?? 0;
  35. $city_id = $this->params[ 'city_id' ] ?? 0;
  36. $district_id = $this->params[ 'district_id' ] ?? 0;
  37. $community_id = $this->params[ 'community_id' ] ?? 0;
  38. $address = $this->params[ 'address' ] ?? '';
  39. $full_address = $this->params[ 'full_address' ] ?? '';
  40. $longitude = $this->params[ 'longitude' ] ?? '';
  41. $latitude = $this->params[ 'latitude' ] ?? '';
  42. $mobile = $this->params[ 'mobile' ] ?? '';
  43. $telephone = $this->params[ 'telephone' ] ?? '';
  44. $name = $this->params[ 'name' ] ?? '';
  45. $data = array (
  46. 'province_id' => $province_id,
  47. 'city_id' => $city_id,
  48. 'district_id' => $district_id,
  49. 'community_id' => $community_id,
  50. 'address' => $address,
  51. 'full_address' => $full_address,
  52. 'longitude' => $longitude,
  53. 'latitude' => $latitude,
  54. 'mobile' => $mobile,
  55. 'telephone' => $telephone,
  56. 'name' => $name,
  57. 'order_id' => $order_id,
  58. 'site_id' => $this->site_id,
  59. 'uid' => $this->uid,
  60. );
  61. $condition = array (
  62. [ 'order_id', '=', $order_id ],
  63. [ 'site_id', '=', $this->site_id ]
  64. );
  65. $result = $order_common_model->orderAddressUpdate($data, $condition);
  66. return $this->response($result);
  67. }
  68. /************************************************************* 物流相关 start **************************************************************************/
  69. /**
  70. * 获取待发货项
  71. */
  72. public function getOrderExpressLists()
  73. {
  74. $order_id = $this->params[ 'order_id' ] ?? 0;
  75. //查询订单的可配送订单项
  76. $order_trade_model = new OrderTradeModel();
  77. $condition = array (
  78. [ 'oe.site_id', '=', $this->site_id ],
  79. [ 'oe.order_id', '=', $order_id ]
  80. );
  81. $result = $order_trade_model->getExpressOrderLists($condition);
  82. return $this->response($result);
  83. }
  84. /**
  85. * 订单发货
  86. * @return mixed
  87. */
  88. public function delivery()
  89. {
  90. $order_common_model = new OrderCommon();
  91. $data = array (
  92. 'order_goods_ids' => $this->params[ 'order_goods_ids' ] ?? 0,//商品id
  93. 'express_company_id' => $this->params[ 'express_company_id' ] ?? 0,//物流公司
  94. 'delivery_no' => $this->params[ 'delivery_no' ] ?? '',//快递单号
  95. 'order_id' => $this->params[ 'order_id' ] ?? 0,//订单id
  96. 'delivery_type' => $this->params[ 'delivery_type' ] ?? 'not',//是否需要物流
  97. 'site_id' => $this->site_id,
  98. 'uid' => $this->uid
  99. );
  100. $result = $order_common_model->delivery($data);
  101. return $this->response($result);
  102. }
  103. /**
  104. * 确认收货(应该不会有)
  105. */
  106. public function takeDelivery()
  107. {
  108. $order_id = $this->params[ 'order_id' ] ?? 0;
  109. $order_model = new OrderCommonModel();
  110. $result = $order_model->orderCommonTakeDelivery($order_id);
  111. return $this->response($result);
  112. }
  113. /**
  114. * 查询可用的物流公司
  115. * @return array
  116. */
  117. public function getShopCompany()
  118. {
  119. $express_company_template_model = new ExpressCompanyTemplate();
  120. //平台公用的物流公司
  121. $company_list_result = $express_company_template_model->getExpressCompanyTemplateList([ [ "site_id", "=", 0 ] ]);
  122. $company_list = $company_list_result[ "data" ];
  123. $company_list = array_column($company_list, "company_id");
  124. $express_company_model = new ExpressCompany();
  125. $result = $express_company_model->getExpressCompanyList([ [ "site_id", "=", $this->site_id ], [ 'company_id', 'in', $company_list ] ]);
  126. return $this->response($result);
  127. }
  128. /************************************************************* 物流相关 end **************************************************************************/
  129. /************************************************************* 自提相关 start **************************************************************************/
  130. /**
  131. * 获取待发货项
  132. */
  133. public function getOrderStoreLists()
  134. {
  135. $order_id = $this->params[ 'order_id' ] ?? 0;
  136. //查询订单的可配送订单项
  137. $order_trade_model = new OrderTradeModel();
  138. $condition = array (
  139. [ 'site_id', '=', $this->site_id ],
  140. [ 'order_id', '=', $order_id ]
  141. );
  142. $store_info = $order_trade_model->getOrderStore($condition, 'status')[ 'data' ] ?? [];
  143. if (empty($store_info))
  144. return $this->response($this->error());
  145. $order_common_model = new OrderCommon();
  146. $order_info = $order_common_model->getOrderInfo($condition)[ 'data' ] ?? [];
  147. if (empty($order_info))
  148. return $this->response($this->error());
  149. $order_goods_list = $order_common_model->getOrderGoodsList($condition)[ 'data' ] ?? [];
  150. if (empty($order_goods_list))
  151. return $this->response($this->error());
  152. foreach ($order_goods_list as $k => $v) {
  153. $order_goods_list[ $k ][ 'store_info' ] = $store_info;
  154. }
  155. $order_info[ 'order_goods_list' ] = $order_goods_list;
  156. return $this->response($order_common_model->success($order_info));
  157. }
  158. /**
  159. * 自提操作
  160. */
  161. public function takeStore()
  162. {
  163. $order_id = $this->params[ 'order_id' ] ?? 0;
  164. $store_type = $this->params[ 'store_type' ] ?? 'code';//提货方式 code 需要提货码 no_code无需提货码
  165. $store_no = $this->params[ 'store_no' ] ?? '';//提货码
  166. $order_trade_model = new OrderTradeModel();
  167. $condition = array (
  168. [ 'site_id', '=', $this->site_id ],
  169. [ 'order_id', '=', $order_id ]
  170. );
  171. $store_info = $order_trade_model->getOrderStore($condition, 'member_verify_id')[ 'data' ] ?? [];
  172. if (empty($store_info))
  173. return $this->response($this->error());
  174. $member_verify_id = $store_info[ 'member_verify_id' ];
  175. $verify_model = new VerifyModel();
  176. switch ( $store_type ) {
  177. case 'code':
  178. if (empty($store_no)) {
  179. return $this->response($verify_model->error([], '核销码不能为空!'));
  180. }
  181. $verify_info = $verify_model->getMemberVerifyInfo([ [ 'verify_code', '=', $store_no ] ])[ 'data' ] ?? [];
  182. if (empty($verify_info)) {
  183. return $this->response($verify_model->error([], '核销码不是有效的!'));
  184. }
  185. if ($member_verify_id != $verify_info[ 'id' ])
  186. return $this->response($verify_model->error([], '核销码和当前提货商品不匹配!'));
  187. break;
  188. case 'no_code':
  189. break;
  190. }
  191. $result = $verify_model->verify($member_verify_id, $this->uid, $this->site_id);
  192. return $this->response($result);
  193. }
  194. /************************************************************* 自提相关 end **************************************************************************/
  195. /************************************************************* 本地配送相关 start **************************************************************************/
  196. /**
  197. * 获取待发货项
  198. */
  199. public function getOrderLocalLists()
  200. {
  201. $order_id = $this->params[ 'order_id' ] ?? 0;
  202. //查询订单的可配送订单项
  203. $order_trade_model = new OrderTradeModel();
  204. $condition = array (
  205. [ 'site_id', '=', $this->site_id ],
  206. [ 'order_id', '=', $order_id ]
  207. );
  208. $local_info = $order_trade_model->getOrderLocal($condition, 'status')[ 'data' ] ?? [];
  209. if (empty($local_info))
  210. return $this->error();
  211. $order_common_model = new OrderCommon();
  212. $order_info = $order_common_model->getOrderInfo($condition)[ 'data' ] ?? [];
  213. if (empty($order_info))
  214. return $this->error();
  215. $order_goods_list = $order_common_model->getOrderGoodsList($condition)[ 'data' ] ?? [];
  216. if (empty($order_goods_list))
  217. return $this->error();
  218. foreach ($order_goods_list as $k => $v) {
  219. $order_goods_list[ $k ][ 'local_info' ] = $local_info;
  220. }
  221. $order_info[ 'order_goods_list' ] = $order_goods_list;
  222. return $this->response($order_common_model->success($order_info));
  223. }
  224. /**
  225. * 配送操作
  226. */
  227. public function doLocal()
  228. {
  229. $order_id = $this->params[ 'order_id' ] ?? 0;
  230. $delivery_clerk_id = $this->params[ 'delivery_clerk_id' ] ?? 0;//配送员
  231. $order_common_model = new OrderCommon();
  232. $data = array (
  233. 'order_id' => $order_id,
  234. 'delivery_clerk_id' => $delivery_clerk_id,
  235. 'site_id' => $this->site_id,
  236. );
  237. $result = $order_common_model->localDelivery($data);
  238. return $this->response($result);
  239. }
  240. /************************************************************* 本地配送相关 end **************************************************************************/
  241. }