From bd2a92d83239bd72b0378654523a1bb55e040b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sun, 29 Mar 2026 02:36:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(website):=20=E5=AE=8C=E5=96=84=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E7=B1=BB=E5=9E=8B=E7=AE=A1=E7=90=86=E5=92=8C=E6=A0=87?= =?UTF-8?q?=E8=AF=86=E7=AC=A6=E5=94=AF=E4=B8=80=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除邀请用户接口的权限注解和操作日志注解 - 更新CmsWebsite实体类中的类型描述,支持多种应用类型 - 在保存和修改网站信息时增加websiteCode唯一性校验逻辑 - 实现create方法中根据应用类型自动设置管理后台地址和类型名称 - 添加generateUniqueCode方法确保websiteCode全局唯一 - 优化代码结构和业务逻辑处理 --- .../app/controller/AppUserController.java | 2 - .../cms/controller/CmsWebsiteController.java | 24 +++++++ .../com/gxwebsoft/cms/entity/CmsWebsite.java | 2 +- .../service/impl/CmsWebsiteServiceImpl.java | 66 ++++++++++++++++--- 4 files changed, 82 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gxwebsoft/app/controller/AppUserController.java b/src/main/java/com/gxwebsoft/app/controller/AppUserController.java index 5500cbe..4124862 100644 --- a/src/main/java/com/gxwebsoft/app/controller/AppUserController.java +++ b/src/main/java/com/gxwebsoft/app/controller/AppUserController.java @@ -67,8 +67,6 @@ public class AppUserController extends BaseController { return fail("添加失败"); } - @PreAuthorize("hasAuthority('app:appUser:save')") - @OperationLog @Operation(summary = "邀请用户成为应用成员") @PostMapping("/invite") public ApiResult invite(@RequestBody AppUser appUser) { diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java index 8c6c045..0a1ade6 100644 --- a/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java @@ -96,6 +96,16 @@ public class CmsWebsiteController extends BaseController { @Operation(summary = "添加网站信息记录表") @PostMapping() public ApiResult save(@RequestBody CmsWebsite cmsWebsite) { + // 前端若指定了 websiteCode,先做唯一性校验 + if (StrUtil.isNotBlank(cmsWebsite.getWebsiteCode())) { + long cnt = cmsWebsiteService.count( + new LambdaQueryWrapper() + .eq(CmsWebsite::getWebsiteCode, cmsWebsite.getWebsiteCode()) + ); + if (cnt > 0) { + return fail("应用标识 [" + cmsWebsite.getWebsiteCode() + "] 已存在,请更换"); + } + } // 记录当前登录用户id User loginUser = getLoginUser(); if (loginUser != null) { @@ -109,6 +119,20 @@ public class CmsWebsiteController extends BaseController { @Operation(summary = "修改网站信息记录表") @PutMapping() public ApiResult update(@RequestBody CmsWebsite cmsWebsite) { + // websiteCode 全局唯一,有值时校验是否与其他记录冲突(排除自身) + if (StrUtil.isNotBlank(cmsWebsite.getWebsiteCode())) { + long cnt = cmsWebsiteService.count( + new LambdaQueryWrapper() + .eq(CmsWebsite::getWebsiteCode, cmsWebsite.getWebsiteCode()) + .ne(CmsWebsite::getWebsiteId, cmsWebsite.getWebsiteId()) + ); + if (cnt > 0) { + return fail("应用标识 [" + cmsWebsite.getWebsiteCode() + "] 已存在,请更换"); + } + } else { + // 不允许通过此接口清空或修改 websiteCode(设为 null 则 MP 不更新该字段) + cmsWebsite.setWebsiteCode(null); + } if (cmsWebsiteService.updateById(cmsWebsite)) { return success("修改成功"); } diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java index 46bec1c..31087c4 100644 --- a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java @@ -66,7 +66,7 @@ public class CmsWebsite implements Serializable { @Schema(description = "网站截图") private String files; - @Schema(description = "网站类型 10企业官网 20微信小程序 30APP 40其他") + @Schema(description = "应用类型 10=web(Web应用) 20=miniprogram(小程序) 30=mobile(移动App) 40=api(API服务) 50=internal(内部工具)") private Integer type; @Schema(description = "网站关键词") diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java index 348d3e5..8b74f83 100644 --- a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java @@ -145,15 +145,45 @@ public class CmsWebsiteServiceImpl extends ServiceImpl 0) { // TODO 国际化 @@ -432,4 +462,22 @@ public class CmsWebsiteServiceImpl extends ServiceImpl bottomNavs = cmsNavigationService.listRel(navigationParam); website.setBottomNavs(bottomNavs); } + + /** + * 生成全局唯一的 websiteCode。 + *

以 baseCode 为基础,若已存在则追加 -2、-3 … 直到找到空闲值。

+ * + * @param baseCode 期望的 code 前缀,如 "site-10398" + * @return 全局唯一的 websiteCode + */ + private String generateUniqueCode(String baseCode) { + String candidate = baseCode; + int suffix = 2; + while (count(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() + .eq(CmsWebsite::getWebsiteCode, candidate)) > 0) { + candidate = baseCode + "-" + suffix; + suffix++; + } + return candidate; + } }