|
@@ -2858,4 +2858,83 @@ class WebsiteService implements WebsiteServiceInterface
|
|
|
$result->website_id = json_decode($result->website_id, true);
|
|
|
return Result::success($result);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ * 克隆网站
|
|
|
+ * @param array $data
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function cloneWebsite(array $data): array
|
|
|
+ {
|
|
|
+ DB::beginTransaction();
|
|
|
+ try {
|
|
|
+
|
|
|
+ $originalWebsite = Website::find($data['website_id']);
|
|
|
+ if (!$originalWebsite) {
|
|
|
+ return Result::error("找不到该网站", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ $baseName = preg_replace('/_copy(\d+)?$/', '', $originalWebsite->website_name);
|
|
|
+
|
|
|
+ $count = Website::where('website_name', 'like', $baseName . '_copy%')
|
|
|
+ ->orWhere('website_name', $baseName)
|
|
|
+ ->count();
|
|
|
+
|
|
|
+ $newName = $baseName . ($count === 0 ? '_copy' : '_copy_' . $count);
|
|
|
+
|
|
|
+ $clone_website = $originalWebsite->replicate();
|
|
|
+ $clone_website->website_name = $newName;
|
|
|
+ $clone_website->save();
|
|
|
+ $clone_website->website_url = "[]";
|
|
|
+ $clone_website->save();
|
|
|
+
|
|
|
+
|
|
|
+ $resultWebsiteTemplateInfo = WebsiteTemplateInfo::where([ 'website_id' => $data['website_id']])->first();
|
|
|
+ $clone_website_template_info = $resultWebsiteTemplateInfo->replicate();
|
|
|
+ $clone_website_template_info->website_id = $clone_website->id;
|
|
|
+ $clone_website_template_info->save();
|
|
|
+
|
|
|
+ $originalCategories = WebsiteCategory::where('website_id', $data['website_id'])->get();
|
|
|
+
|
|
|
+ $newWebsiteId = $clone_website->id;
|
|
|
+
|
|
|
+ foreach ($originalCategories as $category) {
|
|
|
+
|
|
|
+ $clonedCategory = $category->replicate();
|
|
|
+
|
|
|
+ $clonedCategory->website_id = $newWebsiteId;
|
|
|
+
|
|
|
+ $clonedCategory->save();
|
|
|
+ }
|
|
|
+
|
|
|
+ $originalLinks = Link::where('website_id', $data['website_id'])->get();
|
|
|
+ foreach ($originalLinks as $link) {
|
|
|
+
|
|
|
+ $clonedLink = $link->replicate();
|
|
|
+
|
|
|
+ $clonedLink->website_id = $newWebsiteId;
|
|
|
+
|
|
|
+ $clonedLink->save();
|
|
|
+ }
|
|
|
+
|
|
|
+ $originalFooterCategories = FooterCategory::where('website_id', $data['website_id'])->get();
|
|
|
+ foreach ($originalFooterCategories as $footerCategory) {
|
|
|
+ $clonedFooterCategory = $footerCategory->replicate();
|
|
|
+ $clonedFooterCategory->website_id = $newWebsiteId;
|
|
|
+ $clonedFooterCategory->save();
|
|
|
+ $originalFooterContents = FooterContent::where('fcat_id', $footerCategory->id)->get();
|
|
|
+ foreach ($originalFooterContents as $footerContent){
|
|
|
+ $clonedFooterContent = $footerContent->replicate();
|
|
|
+ $clonedFooterContent->fcat_id = $clonedFooterCategory->id;
|
|
|
+ $clonedFooterContent->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Db::commit();
|
|
|
+ return Result::success([]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error($e->getMessage(), 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|