OrderGoods.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace app\common\model\sharing;
  3. use app\common\model\BaseModel;
  4. use app\common\model\sharing\GoodsSku as GoodsSkuModel;
  5. use app\common\enum\goods\DeductStockType as DeductStockTypeEnum;
  6. /**
  7. * 拼团订单商品模型
  8. * Class OrderGoods
  9. * @package app\common\model\sharing
  10. */
  11. class OrderGoods extends BaseModel
  12. {
  13. protected $name = 'sharing_order_goods';
  14. protected $updateTime = false;
  15. /**
  16. * 关联拼团商品表
  17. * @return \think\model\relation\BelongsTo
  18. */
  19. public function goods()
  20. {
  21. return $this->belongsTo('Goods');
  22. }
  23. /**
  24. * 订单拼团商品图
  25. * @return \think\model\relation\BelongsTo
  26. */
  27. public function image()
  28. {
  29. $module = self::getCalledModule() ?: 'common';
  30. return $this->belongsTo("app\\{$module}\\model\\UploadFile", 'image_id', 'file_id');
  31. }
  32. /**
  33. * 关联拼团商品sku表
  34. * @return \think\model\relation\BelongsTo
  35. */
  36. public function sku()
  37. {
  38. return $this->belongsTo('GoodsSku', 'spec_sku_id', 'spec_sku_id');
  39. }
  40. /**
  41. * 关联拼团订单主表
  42. * @return \think\model\relation\BelongsTo
  43. */
  44. public function orderM()
  45. {
  46. return $this->belongsTo('Order');
  47. }
  48. /**
  49. * 关联拼团售后单记录表
  50. * @return \think\model\relation\HasOne
  51. */
  52. public function refund()
  53. {
  54. return $this->hasOne('OrderRefund', 'order_goods_id');
  55. }
  56. /**
  57. * 拼团订单商品详情
  58. * @param $where
  59. * @return OrderGoods|null
  60. * @throws \think\exception\DbException
  61. */
  62. public static function detail($where)
  63. {
  64. return static::get($where, ['image', 'refund']);
  65. }
  66. /**
  67. * 回退商品库存
  68. * @param $goodsList
  69. * @param $isPayOrder
  70. * @return array|false
  71. * @throws \Exception
  72. */
  73. public function backGoodsStock($goodsList, $isPayOrder = false)
  74. {
  75. $goodsSkuData = [];
  76. foreach ($goodsList as $goods) {
  77. $item = [
  78. 'where' => [
  79. 'goods_id' => $goods['goods_id'],
  80. 'spec_sku_id' => $goods['spec_sku_id'],
  81. ],
  82. 'data' => ['stock_num' => ['inc', $goods['total_num']]],
  83. ];
  84. if ($isPayOrder == true) {
  85. // 付款订单全部库存
  86. $goodsSkuData[] = $item;
  87. } else {
  88. // 未付款订单,判断必须为下单减库存时才回退
  89. $goods['deduct_stock_type'] == DeductStockTypeEnum::CREATE && $goodsSkuData[] = $item;
  90. }
  91. }
  92. // 更新商品sku库存
  93. return !empty($goodsSkuData) && (new GoodsSkuModel)->updateAll($goodsSkuData);
  94. }
  95. }