fix(website): 防止同一租户重复创建站点,设置默认状态

- CmsWebsiteController中新增校验,若当前租户已有站点则拒绝新增
- 避免并发和重复请求导致多条孤儿记录产生
- CmsWebsiteServiceImpl中设置默认运行状态,防止状态字段为空显示异常
- 保持后端枚举status与前端展示running状态一致
- 调用方仍可覆盖默认状态值
This commit is contained in:
2026-08-04 12:33:15 +08:00
parent 4478f5f23c
commit 4e20c2df62
2 changed files with 21 additions and 0 deletions

View File

@@ -109,6 +109,18 @@ public class CmsWebsiteController extends BaseController {
// 记录当前登录用户id
User loginUser = getLoginUser();
if (loginUser != null) {
// 防重复建站:同一租户已存在站点时拒绝新增,
// 避免并发请求/重复点击建出多条记录getSiteInfo 仅取 limit 1多余记录会成为孤儿数据
if (ObjectUtil.isNotEmpty(loginUser.getTenantId())) {
long exist = cmsWebsiteService.count(
new LambdaQueryWrapper<CmsWebsite>()
.eq(CmsWebsite::getTenantId, loginUser.getTenantId())
.eq(CmsWebsite::getDeleted, 0)
);
if (exist > 0) {
return fail("当前租户已存在站点,请勿重复创建");
}
}
cmsWebsite.setLoginUser(loginUser);
return success("创建成功", cmsWebsiteService.create(cmsWebsite));
}

View File

@@ -193,6 +193,15 @@ public class CmsWebsiteServiceImpl extends ServiceImpl<CmsWebsiteMapper, CmsWebs
website.setTemplateId(loginUser.getTemplateId());
website.setCompanyId(loginUser.getCompanyId());
// 默认运行中status后台枚举与 runninggetSiteInfo 状态展示用)保持一致,
// 避免公开站读取到空值显示「状态未知」;调用方可覆盖
if (website.getStatus() == null) {
website.setStatus(1);
}
if (website.getRunning() == null) {
website.setRunning(1);
}
// 初始化数据
if(save(website)){
// 插入网站设置记录