diff --git a/backend/app/repo/website.go b/backend/app/repo/website.go index 730c2888a..28c8c7b7d 100644 --- a/backend/app/repo/website.go +++ b/backend/app/repo/website.go @@ -17,12 +17,18 @@ func (w WebSiteRepo) WithAppInstallId(appInstallId uint) DBOption { } } -func (w WebSiteRepo) WithByDomain(domain string) DBOption { +func (w WebSiteRepo) WithDomain(domain string) DBOption { return func(db *gorm.DB) *gorm.DB { return db.Where("primary_domain = ?", domain) } } +func (w WebSiteRepo) WithAlias(alias string) DBOption { + return func(db *gorm.DB) *gorm.DB { + return db.Where("alias = ?", alias) + } +} + func (w WebSiteRepo) Page(page, size int, opts ...DBOption) (int64, []model.WebSite, error) { var websites []model.WebSite db := getDb(opts...).Model(&model.WebSite{}) diff --git a/backend/app/service/website.go b/backend/app/service/website.go index 1beb408cf..131eda91b 100644 --- a/backend/app/service/website.go +++ b/backend/app/service/website.go @@ -7,6 +7,7 @@ import ( "encoding/json" "encoding/pem" "fmt" + "github.com/1Panel-dev/1Panel/backend/buserr" "io" "os" "os/exec" @@ -59,6 +60,16 @@ func (w WebsiteService) PageWebSite(req dto.WebSiteReq) (int64, []dto.WebSiteDTO func (w WebsiteService) CreateWebsite(create dto.WebSiteCreate) error { + if exist, _ := websiteRepo.GetBy(websiteRepo.WithDomain(create.PrimaryDomain)); len(exist) > 0 { + return buserr.New(constant.ErrNameIsExist) + } + if exist, _ := websiteRepo.GetBy(websiteRepo.WithAlias(create.Alias)); len(exist) > 0 { + return buserr.New(constant.ErrAliasIsExist) + } + if exist, _ := websiteDomainRepo.GetBy(websiteDomainRepo.WithDomain(create.PrimaryDomain)); len(exist) > 0 { + return buserr.New(constant.ErrDomainIsExist) + } + defaultDate, _ := time.Parse(constant.DateLayout, constant.DefaultDate) website := &model.WebSite{ PrimaryDomain: create.PrimaryDomain, @@ -167,7 +178,7 @@ func (w WebsiteService) RecoverByUpload(req dto.WebSiteRecoverByFile) error { return errors.New("上传文件与选中网站不匹配,无法恢复") } - website, err := websiteRepo.GetFirst(websiteRepo.WithByDomain(req.WebsiteName)) + website, err := websiteRepo.GetFirst(websiteRepo.WithDomain(req.WebsiteName)) if err != nil { return err } @@ -179,7 +190,7 @@ func (w WebsiteService) RecoverByUpload(req dto.WebSiteRecoverByFile) error { } func (w WebsiteService) Recover(req dto.WebSiteRecover) error { - website, err := websiteRepo.GetFirst(websiteRepo.WithByDomain(req.WebsiteName)) + website, err := websiteRepo.GetFirst(websiteRepo.WithDomain(req.WebsiteName)) if err != nil { return err } @@ -506,7 +517,7 @@ type WebSiteInfo struct { } func handleWebsiteBackup(backupType, baseDir, backupDir, domain, backupName string) error { - website, err := websiteRepo.GetFirst(websiteRepo.WithByDomain(domain)) + website, err := websiteRepo.GetFirst(websiteRepo.WithDomain(domain)) if err != nil { return err } diff --git a/backend/constant/errs.go b/backend/constant/errs.go index b1b772d3e..84f0e695e 100644 --- a/backend/constant/errs.go +++ b/backend/constant/errs.go @@ -52,3 +52,10 @@ var ( ErrFileCanNotRead = "ErrFileCanNotRead" ErrFileToLarge = "ErrFileToLarge" ) + +//website + +var ( + ErrDomainIsExist = "ErrDomainIsExist" + ErrAliasIsExist = "ErrAliasIsExist" +) diff --git a/backend/i18n/lang/en.yaml b/backend/i18n/lang/en.yaml index 8414e2759..0dbcaf6ee 100644 --- a/backend/i18n/lang/en.yaml +++ b/backend/i18n/lang/en.yaml @@ -26,4 +26,8 @@ ErrAppRequired: "{{ .detail }} app is required" #file ErrFileCanNotRead: "File can not read" -ErrFileToLarge: "file is too large" \ No newline at end of file +ErrFileToLarge: "file is too large" + +#website +ErrDomainIsExist: "Domain is already exist" +ErrAliasIsExist: "Alias is already exist" \ No newline at end of file diff --git a/backend/i18n/lang/zh.yaml b/backend/i18n/lang/zh.yaml index 8c19dca02..b35fc806a 100644 --- a/backend/i18n/lang/zh.yaml +++ b/backend/i18n/lang/zh.yaml @@ -26,4 +26,8 @@ ErrAppRequired: "请先安装 {{ .detail }} 应用" #file ErrFileCanNotRead: "文件不可读" -ErrFileToLarge: "文件超过10M,无法打开" \ No newline at end of file +ErrFileToLarge: "文件超过10M,无法打开" + +#website +ErrDomainIsExist: "域名已存在" +ErrAliasIsExist: "代号已存在" \ No newline at end of file