diff --git a/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java b/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java index c8afd9c..0664226 100644 --- a/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java +++ b/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java @@ -97,6 +97,11 @@ public class ConfigProperties { */ private String websopyUrl; + /** + * 内部服务调用密钥(调用 websopy 等内部接口时使用) + */ + private String internalKey; + /** * 微信扫码H5页面访问地址(用于微信扫码登录跳转) */ diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java index a7df4fa..8b9565f 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java @@ -57,6 +57,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -69,6 +70,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import java.util.concurrent.TimeUnit; import java.util.concurrent.ThreadLocalRandom; @@ -90,6 +92,8 @@ public class MainController extends BaseController { @Resource private ConfigProperties configProperties; @Resource + private RestTemplate restTemplate; + @Resource private UserService userService; @Resource private UserMapper userMapper; @@ -1285,6 +1289,31 @@ public class MainController extends BaseController { return access_token; } + /** + * 向 websopy 初始化租户默认域名并标记为已生效 + */ + private void initDefaultDomain(Integer tenantId, String appCode) { + String websopyUrl = configProperties.getWebsopyUrl(); + if (StrUtil.isBlank(websopyUrl)) { + return; + } + String prefix = "site"; + String suffix = "sitelnk.cn"; + if ("mp".equals(appCode)) { + prefix = "mp"; + suffix = "shoplnk.cn"; + } else if ("shop".equals(appCode)) { + prefix = "shop"; + suffix = "shoplnk.cn"; + } + String domain = prefix + "-" + tenantId + "." + suffix; + Map body = new HashMap<>(); + body.put("tenantId", tenantId); + body.put("domain", domain); + body.put("internalKey", configProperties.getInternalKey()); + restTemplate.postForObject(websopyUrl + "/api/app/user-sync/initDomain", body, String.class); + } + @Operation(summary = "开发者短信验证码登录") @PostMapping("/loginByDeveloperSms") public ApiResult loginByDeveloperSms(@RequestBody LoginParam param, HttpServletRequest request) { @@ -1448,9 +1477,6 @@ public class MainController extends BaseController { userParam.setTemplateId(user.getTemplateId()); userParam.setTenantId(addCompany.getTenantId()); // 使用新创建的租户ID final User adminByPhone = userService.getAdminByPhone(userParam); - // 注册即开通:标记该超管账号已安装(initialized) - adminByPhone.setInstalled(true); - userService.updateById(adminByPhone); // 设置过期时间 Long tokenExpireTime = configProperties.getTokenExpireTime(); @@ -1632,9 +1658,14 @@ public class MainController extends BaseController { userParam1.setTemplateId(user.getTemplateId()); userParam1.setTenantId(addCompany.getTenantId()); // 使用新创建的租户ID final User adminByPhone = userService.getAdminByPhone(userParam1); - // 注册即开通:标记该超管账号已安装(initialized) - adminByPhone.setInstalled(true); - userService.updateById(adminByPhone); + + // 在 websopy 初始化默认域名(site-租户ID.sitelnk.cn)并标记为已生效 + try { + initDefaultDomain(addCompany.getTenantId(), "site"); + } catch (Exception e) { + log.error("注册后初始化默认域名失败: tenantId={}", addCompany.getTenantId(), e); + // 域名初始化失败不阻断注册流程 + } // 设置过期时间 Long tokenExpireTime = configProperties.getTokenExpireTime(); diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java index 7193d4b..efe09ae 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java @@ -146,6 +146,7 @@ import java.util.stream.Collectors; superAdmin.setPassword(userService.encodePassword(company.getPassword())); } superAdmin.setTenantId(company.getTid()); + superAdmin.setInstalled(true); if(company.getTemplateId() != null){ superAdmin.setTemplateId(company.getTemplateId()); } diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index d194030..a1409f4 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -53,6 +53,9 @@ config: # websopy 服务地址(用于同步用户数据) websopyUrl: https://websopy-api.websoft.top + # 内部服务调用密钥(调用 websopy 等内部接口时使用,请务必与 websopy 端保持一致) + internal-key: ${INTERNAL_KEY:websopy-internal-2025} + # 生产环境证书配置 certificate: # 生产环境使用挂载卷模式 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 32fffd2..feef8aa 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -119,6 +119,9 @@ config: # websopy 服务地址(用于同步用户数据) websopyUrl: https://websopy-api.websoft.top + # 内部服务调用密钥(调用 websopy 等内部接口时使用,请务必与 websopy 端保持一致) + internal-key: ${INTERNAL_KEY:websopy-internal-2025} + # 阿里云OSS云存储 endpoint: https://oss-cn-shenzhen.aliyuncs.com accessKeyId: LTAI5tGXuJku8MK7TA6gQMZw