diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/IdentityProviderEnum.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/IdentityProviderEnum.java
new file mode 100644
index 00000000..691a7289
--- /dev/null
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/IdentityProviderEnum.java
@@ -0,0 +1,29 @@
+package com.cloud.kicc.system.api.enums;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ *
+ * 登陆身份提供商
+ *
+ *
+ * @Author: wangxiang4
+ * @Since: 2024/1/3
+ */
+@Getter
+@RequiredArgsConstructor
+public enum IdentityProviderEnum {
+
+
+ ROOT("root", "超级管理员"),
+
+ CUSTOMER("customer", "普通用户");
+
+
+ private final String value;
+
+
+ private final String description;
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
index 054a3cb4..d22e2f9f 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
@@ -13,11 +13,13 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.data.entity.KiccUser;
+import com.cloud.kicc.common.data.entity.SsoUser;
import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.feign.RemotePushConcernFanService;
import com.cloud.kicc.system.api.entity.*;
+import com.cloud.kicc.system.api.enums.IdentityProviderEnum;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import com.cloud.kicc.system.api.vo.ResultVo;
import com.cloud.kicc.system.service.*;
@@ -27,6 +29,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@@ -114,6 +117,8 @@ public class UserController {
@GetMapping("/oneClickAccess/{casUserId:\\w+}")
public R oneClickAccess(@PathVariable String casUserId) {
if (ObjectUtil.isNotEmpty(iSsoUserService.getById(casUserId)) && ObjectUtil.isEmpty(userService.getOne(Wrappers.lambdaQuery().eq(User::getCasUserId, casUserId)))) {
+ SsoUser kicsSsoUser = iSsoUserService.getKicsSsoUser(casUserId);
+ Optional.ofNullable(kicsSsoUser).orElseThrow(() -> new CheckedException("当前casUserId无效请重新检查配置!"));
String initDeptId = configService.getValueByKey("app.init.deptId");
Dept dept = deptService.getById(initDeptId);
Optional.ofNullable(dept).orElseThrow(() -> new CheckedException("当前部门无效请重新在参数管理中配置!"));
@@ -123,6 +128,21 @@ public class UserController {
String initUserType = configService.getValueByKey("app.init.normal.userType");
String initTenantId = configService.getValueByKey("app.init.tenantId");
String initRoleIds = configService.getValueByKey("app.init.roleIds");
+ String initPassword = configService.getValueByKey("appid.password");
+
+ // 修改扩展用户信息
+ SsoUser ssoUser = new SsoUser();
+ ssoUser.setUserName(kicsSsoUser.getUserName());
+ ssoUser.setNickName(kicsSsoUser.getNickName());
+ ssoUser.setPassword(new BCryptPasswordEncoder().encode(initPassword));
+ ssoUser.setEmail(kicsSsoUser.getEmail());
+ ssoUser.setPhone(kicsSsoUser.getPhone());
+ ssoUser.setIdentityProvider(IdentityProviderEnum.CUSTOMER.getValue());
+ ssoUser.setAvatar(kiccUser.getAvatar());
+ ssoUser.setTenantId(initTenantId);
+ ssoUser.setCreateById(kiccUser.getUsername());
+ ssoUser.setCreateByName(kiccUser.getId());
+ iSsoUserService.save(ssoUser);
User user = new User();
user.setCasUserId(casUserId);
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java
index 47833ab2..8699165a 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java
@@ -28,4 +28,9 @@ public interface ISsoUserService extends IService {
*/
List selectBindSsoUserList();
+ /**
+ * 查询kics的sso用户
+ */
+ SsoUser getKicsSsoUser(String casUserId);
+
}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java
index 27d1efc8..246acd05 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java
@@ -1,12 +1,10 @@
package com.cloud.kicc.system.service.impl;
-import cn.hutool.core.lang.Validator;
+import cn.hutool.core.lang.Validator;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil;
-import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.javaer.aliyun.sms.SmsClient;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.CacheConstants;
@@ -15,7 +13,6 @@ import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.core.exception.ValidateCodeException;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.data.entity.SsoUser;
-import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.feign.RemotePushConcernFanService;
import com.cloud.kicc.system.api.entity.Dept;
import com.cloud.kicc.system.api.entity.User;
@@ -27,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
@@ -74,7 +72,7 @@ public class AppServiceImpl implements AppService {
return R.ok(Boolean.TRUE);
}
- @DSTransactional
+ @Transactional(rollbackFor = Exception.class)
public SsoUser phoneRegister(String phone, String captcha, String identityProvider) {
// 设置不区分大小写,全部以小写验证
Validator.validateMobile(phone, "手机号码不合法");
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java
index 66640e8b..08607318 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java
@@ -1,7 +1,6 @@
package com.cloud.kicc.system.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.data.entity.KiccUser;
@@ -12,6 +11,7 @@ import com.cloud.kicc.system.service.ISsoUserService;
import com.cloud.kicc.system.service.UserService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -25,13 +25,12 @@ import java.util.List;
*/
@Service
@AllArgsConstructor
-@DS("mysql_kics")
public class SsoUserServiceImpl extends ServiceImpl implements ISsoUserService {
private final UserService userService;
@Override
- @DSTransactional
+ @Transactional(rollbackFor = Exception.class)
public void updateSsoUserAndExUser(KiccUser kiccUser) {
// 修改SSO用户信息
SsoUser ssoUser = new SsoUser()
@@ -58,9 +57,15 @@ public class SsoUserServiceImpl extends ServiceImpl impl
}
@Override
- @DS("master")
public List selectBindSsoUserList() {
return baseMapper.selectBindSsoUserList();
}
+ @Override
+ @DS("mysql_kics")
+ public SsoUser getKicsSsoUser(String casUserId) {
+ return super.getById(casUserId);
+ }
+
+
}