CashierOrderGoods.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\store\model\cashier;
  11. use addon\memberrecharge\model\RechargeOrder;
  12. use addon\store\model\member\MemberOnceCard;
  13. use addon\store\model\stock\Stock;
  14. use addon\store\model\store\Store;
  15. use app\model\BaseModel;
  16. use app\model\member\Member;
  17. use app\model\member\MemberAccount;
  18. use app\model\member\MemberLevelOrder;
  19. use app\model\order\OrderCommon;
  20. use app\model\order\OrderCreateTool;
  21. use app\model\order\OrderGoods;
  22. use app\model\site\Site;
  23. use app\model\system\Pay;
  24. use think\facade\Cache;
  25. use think\facade\Queue;
  26. /**
  27. * 收银订单
  28. *
  29. * @author Administrator
  30. *
  31. */
  32. class CashierOrderGoods extends BaseModel
  33. {
  34. public function setOrderGoodsIsDecStock($condition){
  35. $data = array(
  36. 'is_dec_stock' => 1
  37. );
  38. model('store_cashier_order_goods')->update($data, $condition);
  39. return $this->success();
  40. }
  41. /**
  42. * 实物商品出库
  43. * @param $params
  44. */
  45. public function orderGoodsOutput($params){
  46. $order_goods_id = $params['order_goods_id'];
  47. $order_goods_condition = array(
  48. ['order_goods_id', '=', $order_goods_id]
  49. );
  50. $info = model('store_cashier_order_goods')->getInfo($order_goods_condition);
  51. if(empty($info)){
  52. return $this->error();
  53. }
  54. $is_dec_stock = $info['is_dec_stock'];
  55. if($is_dec_stock == 0){
  56. //扣除库存
  57. $stock_model = new Stock();
  58. $goods_sku_list = array(
  59. [
  60. 'goods_sku_id' => $params['sku_id'],
  61. 'goods_id' => $params['goods_id'],
  62. 'goods_num' => $params['num']
  63. ]
  64. );
  65. $stock_params = [
  66. 'site_id' => $params['site_id'],
  67. 'store_id' => $params['store_id'],
  68. 'goods_sku_list' => $goods_sku_list,
  69. 'is_dec_sale_stock' => 1
  70. ];
  71. $result = $stock_model->sellOutput($stock_params);
  72. if($result['code'] < 0){
  73. return $result;
  74. }
  75. $this->setOrderGoodsIsDecStock($order_goods_condition);
  76. }
  77. return $this->success();
  78. }
  79. /**
  80. * 获取订单项的真实商品金额
  81. * @param $order_goods_info
  82. * @param $order_info
  83. */
  84. public function getOrderGoodsRealMoney($order_goods_info)
  85. {
  86. $order_goods_id = $order_goods_info[ 'order_goods_id' ];
  87. //计算当前订单项的优惠
  88. $order_offset_model = new CashierOrderOffset();
  89. $discount_money = $order_offset_model->getOrderGoodsOffsetMoney($order_goods_id);
  90. $real_goods_money = $order_goods_info[ 'goods_money' ] - $discount_money;//真实商品金额
  91. $real_goods_money = $real_goods_money < 0 ? 0 : $real_goods_money;
  92. return $real_goods_money;
  93. }
  94. /**
  95. * 订单项关闭
  96. * @param $params
  97. */
  98. public function orderGoodsClose($params)
  99. {
  100. $order_id = $params[ 'order_id' ];
  101. $order_goods_id = $params[ 'order_goods_id' ];
  102. //管理核销相关
  103. $order_trade_model = new CashierTrade();
  104. $order_common_model = new CashierOrderCommon();
  105. $order_condition = array (
  106. [ 'order_id', '=', $order_id ]
  107. );
  108. $order_info = $order_common_model->getOrderInfo($order_condition)[ 'data' ] ?? [];
  109. if (empty($order_info))
  110. return $this->error([], '订单不存在');
  111. $order_goods_condition = array(
  112. ['order_goods_id', '=', $order_goods_id]
  113. );
  114. $order_goods_info = model('store_cashier_order_goods')->getInfo($order_goods_condition);
  115. $status = $order_goods_info['order_goods_status'];
  116. if($status == 'close'){
  117. return $this->error([], '订单项不可以重复关闭');
  118. }
  119. $order_goods_data = array(
  120. 'order_goods_status' => 'close'
  121. );
  122. model('store_cashier_order_goods')->update($order_goods_data, $order_goods_condition);
  123. $trade_result = $order_trade_model->tradeClose($order_goods_info);
  124. if ($trade_result[ 'code' ] < 0)
  125. return $trade_result;
  126. // 订单项关闭
  127. event('CashierOrderGoodsClose', ['order_goods_id' => $order_goods_id, 'order_id' => $order_id, 'site_id' => $params['site_id'] ]);
  128. return $this->success();
  129. }
  130. }