from_store_id; $to_store_id = $this->to_store_id; foreach ($to_store_id as $store_id_item) { //同步商品 $goods_result = $this->videoGoodsCopy($from_store_id, $store_id_item); //同步分类 $goods_cat_result = $this->videoGoodsCatCopy($from_store_id, $store_id_item); $video_cat_cache = []; if ($goods_cat_result['code'] === 0) { $video_cat_cache = $goods_cat_result['data']['video_cat_cache']; } } } //同步商品 private function videoGoodsCopy($from_store_id, $to_store_id) { try { $video_goods_list = VideoGoods::find()->where(['store_id' => $from_store_id])->asArray()->all(); foreach ($video_goods_list as $video_goods_item) { $video_goods_id = $video_goods_item['id']; $storeSyncGoodsLog = StoreSyncExtLog::findOne([ 'from_store_id' => $from_store_id, 'to_store_id' => $to_store_id, 'type' => StoreSyncExtLog::TYPE_PRODUCT, 'from_id' => $video_goods_item['goods_id'] ]); if ($storeSyncGoodsLog && !$storeSyncGoodsLog->to_id) { continue; } unset($video_goods_item['id']); //判断是否为当前商城同步过此商品 $storeSyncExtLog = StoreSyncExtLog::findOne([ 'from_store_id' => $from_store_id, 'to_store_id' => $to_store_id, 'type' => StoreSyncExtLog::TYPE_VIDEO_GOODS, 'from_id' => $video_goods_id ]); $video_goods = VideoGoods::findOne($storeSyncExtLog->to_id ?? 0) ?: new VideoGoods(); $video_goods->store_id = $to_store_id; $video_goods->status = $video_goods_item['status']; $video_goods->goods_id = $storeSyncGoodsLog->to_id; $video_goods->created_at = time(); $video_goods->updated_at = time(); $video_goods->is_delete = $video_goods_item['is_delete']; $video_goods->save(); (new StoreSyncExtLog())::handleData($from_store_id, $to_store_id, $video_goods_id, $video_goods->id, StoreSyncExtLog::TYPE_VIDEO_GOODS); } return [ 'code' => 0, 'msg' => '同步成功' ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //同步短视频分类 private function videoGoodsCatCopy($from_store_id, $to_store_id) { try { $video_cat_cache = []; $video_goods_list = VideoGoodsCat::find()->where(['store_id' => $from_store_id])->asArray()->all(); foreach ($video_goods_list as $video_goods_item) { $id = $video_goods_item['id']; unset($video_goods_item['id']); //判断是否为当前商城同步过此商品 $storeSyncExtLog = StoreSyncExtLog::findOne([ 'from_store_id' => $from_store_id, 'to_store_id' => $to_store_id, 'type' => StoreSyncExtLog::TYPE_VIDEO_GOODS_CAT, 'from_id' => $id ]); $video_goods_cat = VideoGoodsCat::findOne($storeSyncExtLog->to_id ?? 0) ?: new VideoGoodsCat(); $video_goods_cat->attributes = $video_goods_item; $video_goods_cat->store_id = $to_store_id; $video_goods_cat->created_at = time(); $video_goods_cat->updated_at = time(); $video_goods_cat->is_delete = $video_goods_item['is_delete']; if (!$video_goods_cat->save()) { throw new \Exception(json_encode($video_goods_cat, JSON_UNESCAPED_UNICODE)); } $video_cat_cache[$id] = $video_goods_cat->id; (new StoreSyncExtLog())::handleData($from_store_id, $to_store_id, $id, $video_goods_cat->id, StoreSyncExtLog::TYPE_VIDEO_GOODS_CAT); } return [ 'code' => 0, 'msg' => '同步成功', 'data' => [ 'video_cat_cache' => $video_cat_cache ] ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }