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; + } }