id; } $query = ProductSku::query()->whereIn('id', $ids)->where('verify_state', 0)->whereNull('release_at'); //执行上架审核动作 $query->update([ 'verify_state'=> 1, ]); ProductSkuVerify::query()->insert(array_map(function ($key) use ($nowTime) { return [ 'sku_id' => $key, 'created_at' => $nowTime, 'updated_at' => $nowTime, ]; }, $ids)); } /** * SKU下架操作 * * @param array|ProductSku $ids * @return void */ public static function skuDown(array|ProductSku $ids) { if ($ids instanceof ProductSku) { $ids[] = $ids->id; } $query = ProductSku::query()->whereIn('id', $ids)->where('verify_state', 0)->whereNotNull('release_at'); //执行下架动作 $query->update([ 'release_at'=> null, ]); } /** * 取消SKU上架申请 * * @param array|ProductSku $ids * @return void */ public static function releaseCancel(array|ProductSku $ids) { if ($ids instanceof ProductSku) { $ids[] = $ids->id; } $query = ProductSku::query()->whereIn('id', $ids)->where('verify_state', 1)->whereNull('release_at'); //执行取消上架申请 $query->update([ 'verify_state'=> 0, ]); ProductSkuVerify::whereIn('sku_id', $ids)->where('status', 0)->update(['status'=>3]); } /** * 审核SKU * * @param array $ids * @param integer $status * @param string $remarks * @return void */ public static function skuVerify(array $ids, int $status, ?string $remarks) { //获得审核中商品 $query = ProductSku::query()->whereIn('id', $ids)->where('verify_state', 1)->whereNull('release_at'); switch ($status) { case 1://成功 $query->update([ 'verify_state'=> 0, 'release_at'=>now(), ]); break; case 2://失败 $query->update([ 'verify_state'=> 2, ]); break; default: break; } ProductSkuVerify::whereIn('sku_id', $ids)->where('status', 0)->update([ 'status'=>$status, 'remarks'=>$remarks, ]); return; } /** * 通过ID同步SPU * * @param integer $id * @return void */ public static function skuSyncSpuById(int $id) { static::skuSyncSpu(ProductSku::with('spu')->findOrFail($id)); } /** * 同步spu的基本信息 * * @param ProductSku $sku * @return void */ public static function skuSyncSpu(ProductSku $sku) { $_price = 0; foreach ($sku->specs as $id => $value) { $spuSpec = $sku->spu->specs->first(function ($item) use ($id) { return $item->id == $id; }); foreach ($spuSpec->items as $item) { if ($item['name'] == $value) { $_price += $item['value']; } } } $sku->update( [ 'name' => trim($sku->spu->name.' '.implode(',', $sku->specs)), 'subtitle'=> $sku->spu->subtitle, 'cover' => $sku->spu->cover, // 'images' => $sku->spu->images, 'description' => $sku->spu->description, 'sell_price' => bcadd($sku->spu->sell_price, $_price), 'market_price' => $sku->spu->market_price, 'cost_price' => $sku->spu->cost_price, 'vip_price' => !is_null($sku->spu->vip_price) ? bcadd($sku->spu->vip_price, $_price) : null, 'media' => $sku->spu->media, 'weight' => $sku->spu->weight, 'attrs' => $sku->spu->attrs, 'verify_state' => 0, //默认调整为正常 ] ); } }