CashOrder.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\order;
  11. use app\model\goods\GoodsStock;
  12. /**
  13. * 门店自提订单
  14. *
  15. * @author Administrator
  16. *
  17. */
  18. class CashOrder extends OrderCommon
  19. {
  20. /*****************************************************************************************订单状态***********************************************/
  21. // 订单创建
  22. const ORDER_CREATE = 0;
  23. // 订单已支付
  24. const ORDER_PAY = 1;
  25. // 订单待提货
  26. const ORDER_PENDING_DELIVERY = 2;
  27. // 订单已发货(配货)
  28. const ORDER_DELIVERY = 3;
  29. // 订单已收货
  30. const ORDER_TAKE_DELIVERY = 4;
  31. // 订单已结算完成
  32. const ORDER_COMPLETE = 10;
  33. // 订单已关闭
  34. const ORDER_CLOSE = -1;
  35. /**
  36. * 订单类型
  37. *
  38. * @var int
  39. */
  40. public $order_type = 2;
  41. /**
  42. */
  43. public $order_status = [
  44. self::ORDER_CREATE => [
  45. 'status' => self::ORDER_CREATE,
  46. 'name' => '待支付',
  47. 'is_allow_refund' => 0,
  48. 'icon' => 'public/uniapp/order/order-icon.png',
  49. 'action' => [
  50. [
  51. 'action' => 'orderClose',
  52. 'title' => '关闭订单',
  53. 'color' => ''
  54. ],
  55. [
  56. 'action' => 'orderAdjustMoney',
  57. 'title' => '调整价格',
  58. 'color' => ''
  59. ],
  60. ],
  61. 'member_action' => [
  62. [
  63. 'action' => 'orderClose',
  64. 'title' => '关闭订单',
  65. 'color' => ''
  66. ],
  67. [
  68. 'action' => 'orderPay',
  69. 'title' => '支付',
  70. 'color' => ''
  71. ],
  72. ],
  73. 'color' => ''
  74. ],
  75. self::ORDER_COMPLETE => [
  76. 'status' => self::ORDER_COMPLETE,
  77. 'name' => '已完成',
  78. 'is_allow_refund' => 0,
  79. 'icon' => 'public/uniapp/order/order-icon-received.png',
  80. 'action' => [
  81. ],
  82. 'member_action' => [
  83. ],
  84. 'color' => ''
  85. ],
  86. self::ORDER_CLOSE => [
  87. 'status' => self::ORDER_CLOSE,
  88. 'name' => '已关闭',
  89. 'is_allow_refund' => 0,
  90. 'icon' => 'public/uniapp/order/order-icon-close.png',
  91. 'action' => [
  92. ],
  93. 'member_action' => [
  94. ],
  95. 'color' => ''
  96. ],
  97. ];
  98. /**
  99. * 订单支付
  100. * @param unknown $order_info
  101. */
  102. public function orderPay($order_info, $pay_type, $log_data = [])
  103. {
  104. $order_id = $order_info[ 'order_id' ];
  105. if ($order_info[ 'order_status' ] != 0) {
  106. return $this->error();
  107. }
  108. $condition = array (
  109. [ 'order_id', '=', $order_id ],
  110. [ 'order_status', '=', self::ORDER_CREATE ],
  111. );
  112. $order_goods_list = model('order_goods')->getList([ [ 'order_id', '=', $order_id ] ], 'sku_image,sku_name,price,num,order_goods_id,goods_id,sku_id');
  113. $item_array = [];
  114. foreach ($order_goods_list as $k => $v) {
  115. $item_array[] = [
  116. 'img' => $v[ 'sku_image' ],
  117. 'name' => $v[ 'sku_name' ],
  118. 'price' => $v[ 'price' ],
  119. 'num' => numberFormat($v[ 'num' ]),
  120. 'order_goods_id' => $v[ 'order_goods_id' ],
  121. 'remark_array' => [
  122. ]
  123. ];
  124. // 增加门店商品销量
  125. model('store_goods')->setInc([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'store_id', '=', $order_info[ 'delivery_store_id' ] ] ], 'sale_num', $v[ 'num' ]);
  126. model('store_goods_sku')->setInc([ [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'store_id', '=', $order_info[ 'delivery_store_id' ] ] ], 'sale_num', $v[ 'num' ]);
  127. }
  128. $pay_time = time();
  129. $pay_type_list = $this->getPayType();
  130. $data = array (
  131. 'pay_status' => 1,
  132. 'pay_time' => $pay_time,
  133. 'is_enable_refund' => 0,
  134. 'pay_type' => $pay_type,
  135. 'pay_type_name' => $pay_type_list[ $pay_type ]
  136. );
  137. //记录订单日志 start
  138. $action = '商家对订单进行了线下支付';
  139. //获取用户信息
  140. if (empty($log_data)) {
  141. $member_info = model('member')->getInfo([ 'member_id' => $order_info[ 'member_id' ] ], 'nickname');
  142. $log_data = [
  143. 'uid' => $order_info[ 'member_id' ],
  144. 'nick_name' => $member_info[ 'nickname' ],
  145. 'action_way' => 1
  146. ];
  147. $buyer_name = empty($member_info[ 'nickname' ]) ? '' : '【' . $member_info[ 'nickname' ] . '】';
  148. $action = '买家' . $buyer_name . '支付了订单';
  149. }
  150. $log_data = array_merge($log_data, [
  151. 'order_id' => $order_id,
  152. 'action' => $action,
  153. ]);
  154. $this->addOrderLog($log_data);
  155. //记录订单日志 end
  156. $res = model('order')->update($data, $condition);
  157. $order_goods_data = array (
  158. 'delivery_status_name' => '已收货'
  159. );
  160. $res = model('order_goods')->update($order_goods_data, [ [ 'order_id', '=', $order_id ] ]);
  161. $order_common_model = new OrderCommon();
  162. $result = $order_common_model->orderComplete($order_id);
  163. if ($result[ 'code' ] < 0)
  164. return $result;
  165. return $this->success($res);
  166. }
  167. /**
  168. * 退款完成操作
  169. * @param $order_info
  170. */
  171. public function refund($order_goods_info)
  172. {
  173. //是否入库
  174. if ($order_goods_info[ 'is_refund_stock' ] == 1) {
  175. $goods_stock_model = new GoodsStock();
  176. $item_param = array (
  177. 'sku_id' => $order_goods_info[ 'sku_id' ],
  178. 'num' => $order_goods_info[ 'num' ],
  179. );
  180. //返还库存
  181. $goods_stock_model->incStock($item_param);
  182. }
  183. }
  184. /**
  185. * 订单详情
  186. * @param $order_info
  187. */
  188. public function orderDetail($order_info)
  189. {
  190. return [];
  191. }
  192. }