Miaosha.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\common\service\goods\source;
  13. use app\common\model\ms\MsActivityGood as MsActivityGoodModel;
  14. use app\common\enum\order\OrderSource as OrderSourceEnum;
  15. use app\common\service\goods\source\Factory;
  16. /**
  17. * 商品来源-秒杀商品扩展类
  18. * Class Master
  19. * @package app\common\service\stock
  20. */
  21. class Miaosha extends Basics
  22. {
  23. public function __call($name,$arguments) {
  24. echo 'this function:'.$name.'not exists';
  25. }
  26. /**
  27. * 申请退货退多个活动单商品的活动库存
  28. * @param array $data
  29. * @return array|false
  30. */
  31. public function backActivityGoodsStock($order_goods, $total_num=0){
  32. }
  33. public function backActivityStock($order,bool $isPayOrder = false){
  34. //do nothing
  35. }
  36. /**
  37. * 更新商品库存 (针对下单减库存的商品)
  38. * @param $order
  39. * @return bool
  40. */
  41. public function updateGoodsStock($order)
  42. {
  43. //扣一下主库存
  44. Factory::getFactory(OrderSourceEnum::MASTER)->updateGoodsStock($order);
  45. $goodsList = $order['goodsList'];
  46. $id = $order['order_source_id'];
  47. // 商品的数据
  48. $goodsData[] = [
  49. 'where' => ['id' => $id],
  50. 'data' => [
  51. // 递减商品总库存
  52. 'stock_num' => ['dec', $goodsList[0]['total_num']]
  53. ]
  54. ];
  55. (new MsActivityGoodModel())->updateAll($goodsData);
  56. return true;
  57. }
  58. /**
  59. * 更新商品库存销量(订单付款后)
  60. * @param $order
  61. * @return bool
  62. */
  63. public function updateStockSales($order)
  64. {
  65. //增加主订单销量
  66. Factory::getFactory(OrderSourceEnum::MASTER)->updateStockSales($order);
  67. $id = $order['order_source_id'];
  68. $goodsList = $order['goods'];
  69. $deliveryType = $order['delivery_type'];
  70. $goodsDataItem[] = [
  71. 'where' => ['id' => $id],
  72. 'data' => [
  73. // 累计商品实际销量
  74. 'sale_num' => ['inc', $goodsList[0]['total_num']],
  75. 'ms_sale_sum_price'=>['inc',$goodsList[0]['total_pay_price']+$goodsList[0]['rice_card_money']]
  76. ]
  77. ];
  78. (new MsActivityGoodModel())->updateAll($goodsDataItem);
  79. }
  80. /**
  81. * 回退商品库存事件 (用于取消订单时调用)
  82. * @param mixed $order
  83. * @return bool|mixed
  84. */
  85. public function backGoodsStock($order,bool $isPayOrder = false)
  86. {
  87. //增加返回主订单销量
  88. Factory::getFactory(OrderSourceEnum::MASTER)->backGoodsStock($order);
  89. $goodsList = $order['goods'];
  90. $id = $order['order_source_id'];
  91. // 商品的数据
  92. $goodsData[] = [
  93. 'where' => ['id' => $id],
  94. 'data' => [
  95. // 递增商品总库存
  96. 'stock_num' => ['inc', $goodsList[0]['total_num']]
  97. ]
  98. ];
  99. (new MsActivityGoodModel())->updateAll($goodsData);
  100. return true;
  101. }
  102. /**
  103. * 回退商品库存事件 (用于售后订单时调用,针对单个商品)
  104. * @param mixed $order
  105. * @param bool $isPayOrder 是否为已支付订单
  106. * @return bool|mixed
  107. */
  108. public function backGoodsSkuStock($order,$goods_id=0,$goods_sku_id =0,$total_num =0){
  109. //增加返回主订单销量
  110. Factory::getFactory(OrderSourceEnum::MASTER)->backGoodsSkuStock($order,$goods_id,$goods_sku_id,$total_num);
  111. $goodsList = $order['goods'];
  112. $id = $order['order_source_id'];
  113. // 商品的数据
  114. $goodsData[] = [
  115. 'where' => ['id' => $id],
  116. 'data' => [
  117. // 递增商品总库存
  118. 'stock_num' => ['inc', $total_num]
  119. ]
  120. ];
  121. (new MsActivityGoodModel())->updateAll($goodsData);
  122. }
  123. }