JielongOrderCommon.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\jielong\model;
  11. use addon\store\model\StoreGoodsSku;
  12. use addon\store\model\StoreOrder;
  13. use app\model\BaseModel;
  14. use app\model\order\LocalOrder;
  15. use app\model\order\Order;
  16. use app\model\order\VirtualOrder;
  17. /**
  18. * 商品接龙
  19. */
  20. class JielongOrderCommon extends BaseModel
  21. {
  22. // 订单待付款
  23. const ORDER_CREATE = 0;
  24. //订单完成(尾款已支付)
  25. const ORDER_PAY = 1;
  26. // 订单已关闭
  27. const ORDER_CLOSE = -1;
  28. /**
  29. * 基础订单状态(不同类型的订单可以不使用这些状态,但是不能冲突)
  30. * @var unknown
  31. */
  32. public $order_status = [
  33. self::ORDER_CREATE => [
  34. 'status' => self::ORDER_CREATE,
  35. 'name' => '待付款',
  36. 'is_allow_refund' => 0,
  37. 'icon' => 'public/uniapp/order/order-icon-send.png',
  38. 'action' => [
  39. [
  40. 'action' => 'orderClose',
  41. 'title' => '关闭订单',
  42. 'color' => ''
  43. ],
  44. [
  45. 'action' => 'offlinePayDeposit',
  46. 'title' => '线下支付定金',
  47. 'color' => ''
  48. ],
  49. ],
  50. 'member_action' => [
  51. [
  52. 'action' => 'orderClose',
  53. 'title' => '关闭订单',
  54. 'color' => ''
  55. ],
  56. [
  57. 'action' => 'orderPayDeposit',
  58. 'title' => '支付定金',
  59. 'color' => ''
  60. ],
  61. ],
  62. 'color' => ''
  63. ],
  64. self::ORDER_PAY => [
  65. 'status' => self::ORDER_PAY,
  66. 'name' => '已完成',
  67. 'is_allow_refund' => 0,
  68. 'icon' => 'public/uniapp/order/order-icon-send.png',
  69. 'action' => [],
  70. 'member_action' => [],
  71. 'color' => ''
  72. ],
  73. self::ORDER_CLOSE => [
  74. 'status' => self::ORDER_CLOSE,
  75. 'name' => '已关闭',
  76. 'is_allow_refund' => 0,
  77. 'icon' => 'public/uniapp/order/order-icon-close.png',
  78. 'action' => [
  79. [
  80. 'action' => 'deleteOrder',
  81. 'title' => '删除订单',
  82. 'color' => ''
  83. ],
  84. ],
  85. 'member_action' => [
  86. [
  87. 'action' => 'deleteOrder',
  88. 'title' => '删除订单',
  89. 'color' => ''
  90. ],
  91. ],
  92. 'color' => ''
  93. ],
  94. ];
  95. /**
  96. * 订单状态
  97. * @return array
  98. */
  99. public function getOrderStatus()
  100. {
  101. return $this->success($this->order_status);
  102. }
  103. /**
  104. * 会员接龙订单分页列表
  105. * @param array $condition
  106. * @param int $page
  107. * @param int $page_size
  108. * @param string $order
  109. * @param string $field
  110. * @return array
  111. */
  112. public function getMemberOrderPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
  113. {
  114. $order_list = model('promotion_jielong_order')->pageList($condition, $field, $order, $page, $page_size);
  115. if (!empty($order_list[ 'list' ])) {
  116. foreach ($order_list[ 'list' ] as $k => $v) {
  117. $order_goods_list = model('order_goods')->getList([
  118. 'order_id' => $v[ 'relate_order_id' ]
  119. ]);
  120. foreach ($order_goods_list as $ck => $cv) {
  121. $order_goods_list[ $ck ][ 'num' ] = numberFormat($order_goods_list[ $ck ][ 'num' ]);
  122. }
  123. $order_list[ 'list' ][ $k ][ 'order_goods' ] = $order_goods_list;
  124. $action = empty($v[ "order_status_action" ]) ? [] : json_decode($v[ "order_status_action" ], true);
  125. $member_action = $action[ "member_action" ] ?? [];
  126. $order_list[ 'list' ][ $k ][ 'action' ] = $member_action;
  127. }
  128. }
  129. return $this->success($order_list);
  130. }
  131. /**
  132. * 会员订单详情
  133. * @param $id
  134. * @param $member_id
  135. */
  136. public function getMemberOrderDetail($id, $member_id, $site_id)
  137. {
  138. $order_info = model('promotion_jielong_order')->getInfo([ [ 'id', "=", $id ], [ "member_id", "=", $member_id ], [ "site_id", "=", $site_id ] ]);
  139. if (empty($order_info))
  140. return $this->error([], "当前订单不是本账号的订单!");
  141. $action = empty($order_info[ "order_status_action" ]) ? [] : json_decode($order_info[ "order_status_action" ], true);
  142. $member_action = $action[ "member_action" ] ?? [];
  143. $order_info[ 'action' ] = $member_action;
  144. $order_goods_list = model('order_goods')->getList([ [ 'order_id', "=", $order_info[ 'relate_order_id' ] ], [ "member_id", "=", $member_id ] ]);
  145. foreach ($order_goods_list as $k => $v) {
  146. $refund_action = empty($v[ "refund_status_action" ]) ? [] : json_decode($v[ "refund_status_action" ], true);
  147. $refund_action = $refund_action[ "member_action" ] ?? [];
  148. $order_goods_list[ $k ][ "refund_action" ] = $refund_action;
  149. $order_goods_list[ $k ][ 'num' ] = numberFormat($order_goods_list[ $k ][ 'num' ]);
  150. }
  151. $order_info[ 'order_goods' ] = $order_goods_list;
  152. $order_info[ 'order_id' ] = $order_info[ 'relate_order_id' ];
  153. switch ( $order_info[ 'order_type' ] ) {
  154. case 1:
  155. $order_model = new Order();
  156. break;
  157. case 2:
  158. $order_model = new StoreOrder();
  159. break;
  160. case 3:
  161. $order_model = new LocalOrder();
  162. break;
  163. case 4:
  164. $order_model = new VirtualOrder();
  165. break;
  166. }
  167. $temp_info = $order_model->orderDetail($order_info);
  168. $order_info = array_merge($order_info, $temp_info);
  169. return $this->success($order_info);
  170. }
  171. //获取接龙订单id
  172. public function getJielongOrderId($id)
  173. {
  174. $info = model('promotion_jielong_order')->getInfo([ [ 'id', "=", $id ] ], 'relate_order_id');
  175. return $info[ 'relate_order_id' ];
  176. }
  177. /**
  178. * 订单关闭增加门店商品库存
  179. * @param $data
  180. * @return array
  181. */
  182. public function incStoreGoodsStock($data)
  183. {
  184. $store_goods_sku_model = new StoreGoodsSku();
  185. $stock_result = $store_goods_sku_model->incStock([ "store_id" => $data[ "delivery_store_id" ], "sku_id" => $data[ "sku_id" ], 'stock' => $data[ "num" ] ]);
  186. if ($stock_result[ "code" ] < 0) {
  187. return $stock_result;
  188. }
  189. }
  190. /*********************************************** 订单异步回调 end *****************************************************************/
  191. /**
  192. * 订单删除
  193. * @param $condition
  194. * @return array
  195. */
  196. public function deleteOrder($condition)
  197. {
  198. $info = model('promotion_jielong_order')->getInfo($condition, 'order_status');
  199. if (empty($info)) {
  200. return $this->error('', '订单不存在');
  201. }
  202. if ($info[ 'order_status' ] != self::ORDER_CLOSE) {
  203. return $this->error('', '抱歉,只有已关闭的订单才可以删除');
  204. }
  205. $res = model('promotion_jielong_order')->delete($condition);
  206. if ($res) {
  207. return $this->success($res);
  208. } else {
  209. return $this->error();
  210. }
  211. }
  212. }