123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- namespace app\common\model\sharing;
- use app\common\model\BaseModel;
- use app\common\model\sharing\GoodsSku as GoodsSkuModel;
- use app\common\enum\goods\DeductStockType as DeductStockTypeEnum;
- /**
- * 拼团订单商品模型
- * Class OrderGoods
- * @package app\common\model\sharing
- */
- class OrderGoods extends BaseModel
- {
- protected $name = 'sharing_order_goods';
- protected $updateTime = false;
- /**
- * 关联拼团商品表
- * @return \think\model\relation\BelongsTo
- */
- public function goods()
- {
- return $this->belongsTo('Goods');
- }
- /**
- * 订单拼团商品图
- * @return \think\model\relation\BelongsTo
- */
- public function image()
- {
- $module = self::getCalledModule() ?: 'common';
- return $this->belongsTo("app\\{$module}\\model\\UploadFile", 'image_id', 'file_id');
- }
- /**
- * 关联拼团商品sku表
- * @return \think\model\relation\BelongsTo
- */
- public function sku()
- {
- return $this->belongsTo('GoodsSku', 'spec_sku_id', 'spec_sku_id');
- }
- /**
- * 关联拼团订单主表
- * @return \think\model\relation\BelongsTo
- */
- public function orderM()
- {
- return $this->belongsTo('Order');
- }
- /**
- * 关联拼团售后单记录表
- * @return \think\model\relation\HasOne
- */
- public function refund()
- {
- return $this->hasOne('OrderRefund', 'order_goods_id');
- }
- /**
- * 拼团订单商品详情
- * @param $where
- * @return OrderGoods|null
- * @throws \think\exception\DbException
- */
- public static function detail($where)
- {
- return static::get($where, ['image', 'refund']);
- }
- /**
- * 回退商品库存
- * @param $goodsList
- * @param $isPayOrder
- * @return array|false
- * @throws \Exception
- */
- public function backGoodsStock($goodsList, $isPayOrder = false)
- {
- $goodsSkuData = [];
- foreach ($goodsList as $goods) {
- $item = [
- 'where' => [
- 'goods_id' => $goods['goods_id'],
- 'spec_sku_id' => $goods['spec_sku_id'],
- ],
- 'data' => ['stock_num' => ['inc', $goods['total_num']]],
- ];
- if ($isPayOrder == true) {
- // 付款订单全部库存
- $goodsSkuData[] = $item;
- } else {
- // 未付款订单,判断必须为下单减库存时才回退
- $goods['deduct_stock_type'] == DeductStockTypeEnum::CREATE && $goodsSkuData[] = $item;
- }
- }
- // 更新商品sku库存
- return !empty($goodsSkuData) && (new GoodsSkuModel)->updateAll($goodsSkuData);
- }
- }
|