Browse Source

单点登录:新增ComPDFKitId标识用户,新增用户信息修改消息发送

wangPH 2 years ago
parent
commit
2c9e8a169b

+ 11 - 19
background-common/src/main/java/cn/kdan/compdf/config/JwtConfig.java

@@ -1,5 +1,6 @@
 package cn.kdan.compdf.config;
 
+import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.enums.AuthEnum;
 import cn.kdan.compdf.enums.JwtTokenEnum;
@@ -52,22 +53,16 @@ public class JwtConfig {
      * @param jwtToken
      * @return
      */
-    public static String checkJwt(String jwtToken) {
-        if (jwtToken.contains("Bearer ")){
-            jwtToken = jwtToken.replaceFirst("Bearer ", "");
-            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(AuthEnum.SECRET.getBytes()).parseClaimsJws(jwtToken);
-            // map
-            Claims claims = claimsJws.getBody();
-            return claims.get(JwtTokenEnum.USERNAME,String.class);
-        }
+    public static LoginUser checkJwt(String jwtToken) {
         Jws<Claims> claimsJws = Jwts.parser().setSigningKey(AuthEnum.SECRET.getBytes()).parseClaimsJws(jwtToken);
         // map
         Claims claims = claimsJws.getBody();
-//        Long id = claims.get(JwtTokenEnum.ID,Long.class);
-//        String username = claims.get(JwtTokenEnum.USERNAME,String.class);
-//        String fullName = claims.get(JwtTokenEnum.FULL_NAME,String.class);
-//        Long tenantId = claims.get(JwtTokenEnum.TENANT_ID,Long.class);
-        return claims.get(JwtTokenEnum.EMAIL, String.class);
+        Long id = claims.get(JwtTokenEnum.ID,Long.class);
+        String email = claims.get(JwtTokenEnum.EMAIL, String.class);
+        return LoginUser.builder()
+                .username(email)
+                .compdfkitId(id)
+                .build();
     }
 
     @SneakyThrows
@@ -77,12 +72,9 @@ public class JwtConfig {
        // 加密
 
        try {
-            String token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cGUiOiJKV1QifQ.eyJlbWFpbCI6InBlbmdqaWFueW9uZ0BrZGFubW9iaWxlLmNvbSIsImlhdCI6MTY3MjYyOTM3NywianRpIjoiODk3NTk4ZjY4NDZjNjQ2NTQxYjU0M2MwNjRlYTdiYWYifQ.XuNzHvtUQvGsadpaxuv7kqfSdtn1oMdo76mHf8-TGBw";
-           if (token.contains("Bearer ")){
-               token = token.replaceFirst("Bearer ","");
-               System.out.println(token.indexOf("Bearer "));
-           }
-           System.out.println(token);
+            String token = "eyJhbGciOiJIUzI1NiIsInR5cGUiOiJKV1QifQ.eyJlbWFpbCI6InBlbmdqaWFueW9uZ0BrZGFubW9iaWxlLmNvbSIsImlhdCI6MTY3MzMzNjY2NSwianRpIjoiMTc4ZmNiYWU5NmIxNDRhNzM1Yzg2ZWM0ZWNmNzYyODAiLCJpZCI6Nzh9.hhtkFLfJnmEsOCASgBlwuG7dwhr1iYne4GC433EG4vA";
+//           LoginUserDTO loginUserDTO = checkJwt(token);
+//           System.out.println(loginUserDTO);
 //            System.out.println(loginUserDTO);
         } catch (Exception e) {
             e.printStackTrace();

+ 24 - 0
background-common/src/main/java/cn/kdan/compdf/dto/LoginUser.java

@@ -0,0 +1,24 @@
+package cn.kdan.compdf.dto;
+
+import lombok.*;
+
+/**
+ * @author ComPDFKit-WPH 2023/1/11
+ */
+@Data
+@ToString
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class LoginUser {
+
+    /**
+     * compdfkitId
+     */
+    private Long compdfkitId;
+
+    /**
+     * 用户名(登录名:邮箱)
+     */
+    private String username;
+}

+ 1 - 1
background-common/src/main/java/cn/kdan/compdf/dto/LoginUserDTO.java

@@ -15,7 +15,7 @@ import lombok.NoArgsConstructor;
 public class LoginUserDTO {
 
     /**
-     * 用户主键id
+     * 用户主键id or ComPDFKit-ID
      */
     private Long id;
 

+ 10 - 0
background-common/src/main/java/cn/kdan/compdf/enums/RabbitMQEnum.java

@@ -72,4 +72,14 @@ public interface RabbitMQEnum {
      * 新用户创建路由规则
      */
     String BACKGROUND_USER_CREAT_ROUTING_KEY = "background.user.creat";
+
+    /**
+     * 用户修改信息队列
+     */
+    String BACKGROUND_USER_UPD_QUEUE = "background-user-upd-queue";
+    /**
+     * 用户修改信息路由规则
+     */
+    String BACKGROUND_USER_UPD_ROUTING_KEY = "background.user.upd";
+
 }

+ 4 - 3
background-gateway/src/main/java/cn/kdan/compdf/feign/UserFeign.java

@@ -1,6 +1,7 @@
 package cn.kdan.compdf.feign;
 
 import cn.kdan.compdf.base.R;
+import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.feign.fallback.UserFeignFallBackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -18,9 +19,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 public interface UserFeign {
 
 
-    @GetMapping("/v1/user/getUserInfo")
-    R<LoginUserDTO> getUserInfo(@RequestParam("email") String email);
+    @PostMapping("/v1/user/getUserInfo")
+    R<LoginUserDTO> getUserInfo(@RequestBody LoginUser loginUser);
 
     @PostMapping("/v1/user/creatUser")
-    R<LoginUserDTO> creatUser(@RequestBody String email);
+    R<LoginUserDTO> creatUser(@RequestBody LoginUser loginUser);
 }

+ 3 - 2
background-gateway/src/main/java/cn/kdan/compdf/feign/fallback/UserFeignFallBackFactory.java

@@ -1,6 +1,7 @@
 package cn.kdan.compdf.feign.fallback;
 
 import cn.kdan.compdf.base.R;
+import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.feign.UserFeign;
 import feign.hystrix.FallbackFactory;
@@ -16,13 +17,13 @@ public class UserFeignFallBackFactory implements FallbackFactory<UserFeign> {
         return new UserFeign(){
 
             @Override
-            public R<LoginUserDTO> getUserInfo(String email) {
+            public R<LoginUserDTO> getUserInfo(LoginUser loginUser) {
 
                 return R.error();
             }
 
             @Override
-            public R<LoginUserDTO> creatUser(String email) {
+            public R<LoginUserDTO> creatUser(LoginUser loginUser) {
                 return R.error();
             }
         };

+ 25 - 6
background-gateway/src/main/java/cn/kdan/compdf/filter/AuthGlobalFilter.java

@@ -3,6 +3,7 @@ package cn.kdan.compdf.filter;
 import cn.hutool.core.util.ObjectUtil;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.config.JwtConfig;
+import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.enums.AuthEnum;
 import cn.kdan.compdf.enums.ResponseEnum;
@@ -73,16 +74,34 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
 
         // 3、解析
         try {
-            String email = JwtConfig.checkJwt(authorization);
+            LoginUser loginUser = JwtConfig.checkJwt(authorization);
             // 查询用户信息(username - email)
-            R<LoginUserDTO> loginUserDTO = userFeign.getUserInfo(email);
+            R<LoginUserDTO> r = userFeign.getUserInfo(loginUser);
+            if (!"200".equals(r.getCode())){
+                ServerHttpResponse response = exchange.getResponse();
+                response.setStatusCode(HttpStatus.OK);
+                // 改变响应的类型
+                response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+                String fastResult = JSON.toJSONString(new BusinessException(ResponseEnum.SYSTEM_ERROR));
+                DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
+                return response.writeWith(Mono.just(dataBuffer));
+            }
             // 信息为空创建新用户
-            if(ObjectUtil.isEmpty(loginUserDTO.getData())){
-                loginUserDTO = userFeign.creatUser(email);
+            if(ObjectUtil.isEmpty(r.getData())){
+                r = userFeign.creatUser(loginUser);
+                if (!"200".equals(r.getCode())){
+                    ServerHttpResponse response = exchange.getResponse();
+                    response.setStatusCode(HttpStatus.OK);
+                    // 改变响应的类型
+                    response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+                    String fastResult = JSON.toJSONString(new BusinessException(ResponseEnum.SYSTEM_ERROR));
+                    DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
+                    return response.writeWith(Mono.just(dataBuffer));
+                }
             }
 
             // redie验证token是否过期
-            Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + email);
+            Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + r.getData().getUsername());
             if (null == flag || !flag) {
                 ServerHttpResponse response = exchange.getResponse();
                 response.setStatusCode(HttpStatus.OK);
@@ -93,7 +112,7 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
                 return response.writeWith(Mono.just(dataBuffer));
             }
 
-            LoginUserDTO finalLoginUserDTO = loginUserDTO.getData();
+            LoginUserDTO finalLoginUserDTO = r.getData();
             Consumer<HttpHeaders> httpHeaders = httpHeader -> {
                 httpHeader.set(AuthEnum.USER_ID_HEADER, finalLoginUserDTO.getId().toString());
                 httpHeader.set(AuthEnum.USER_TENANT_ID_HEADER, finalLoginUserDTO.getTenantId().toString());

+ 25 - 25
background-gateway/src/main/resources/application.yml

@@ -32,34 +32,34 @@ spring:
             - Path=/test-api/**
           filters:
             - StripPrefix=1
-#  redis:
-#    host: ${REDIS_HOST:47.93.102.223}
-#    port: ${REDIS_PORT:16379}
-#    password: ${REDIS_PASSWORD:1qazZAQ!2}
-#    database: ${REDIS_DATABASE:1}
-#    lettuce:
-#      pool:
-#        # 连接池中的最小空闲连接
-#        min-idle: 1
-#        # 连接池中的最大空闲连接
-#        max-idle: 6
-#        # 连接池最大连接数(使用负值表示没有限制,不要配置过大,否则可能会影响redis的性能)
-#        max-active: 10
-#        # 连接池最大阻塞等待时间(使用负值表示没有限制);单位毫秒
-#        max-wait: 1000
-#      # 关闭超时时间;单位毫秒
-#      shutdown-timeout: 200
   redis:
-    cluster:
-      nodes: ${REDIS_NODES:81.68.234.235:6371,81.68.234.235:6372,81.68.234.235:6373,81.68.234.235:6374,81.68.234.235:6375,81.68.234.235:6376}
-      max-redirects: ${REDIS_MAX_REDIRECTS:3}
-    password: ${REDIS_PASSWORD:1234}
+    host: ${REDIS_HOST:43.139.175.179}
+    port: ${REDIS_PORT:33465}
+    password: ${REDIS_PASSWORD:1qazZAQ!2}
+    database: ${REDIS_DATABASE:0}
     lettuce:
       pool:
-        max-active: ${redis.maxTotal:200}
-        max-wait: ${redis.socketTimeout:100000}
-        max-idle: ${redis.maxIdle:100}
-        min-idle: ${redis.minIdle:100}
+        # 连接池中的最小空闲连接
+        min-idle: 1
+        # 连接池中的最大空闲连接
+        max-idle: 6
+        # 连接池最大连接数(使用负值表示没有限制,不要配置过大,否则可能会影响redis的性能)
+        max-active: 10
+        # 连接池最大阻塞等待时间(使用负值表示没有限制);单位毫秒
+        max-wait: 1000
+      # 关闭超时时间;单位毫秒
+      shutdown-timeout: 200
+#  redis:
+#    cluster:
+#      nodes: ${REDIS_NODES:81.68.234.235:6371,81.68.234.235:6372,81.68.234.235:6373,81.68.234.235:6374,81.68.234.235:6375,81.68.234.235:6376}
+#      max-redirects: ${REDIS_MAX_REDIRECTS:3}
+#    password: ${REDIS_PASSWORD:1234}
+#    lettuce:
+#      pool:
+#        max-active: ${redis.maxTotal:200}
+#        max-wait: ${redis.socketTimeout:100000}
+#        max-idle: ${redis.maxIdle:100}
+#        min-idle: ${redis.minIdle:100}
 #### feign
 
 feign:

+ 5 - 5
background-redis/pom.xml

@@ -36,11 +36,11 @@
             <artifactId>spring-boot-starter-cache</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.redisson</groupId>
-            <artifactId>redisson</artifactId>
-            <version>3.16.4</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.redisson</groupId>-->
+<!--            <artifactId>redisson</artifactId>-->
+<!--            <version>3.16.4</version>-->
+<!--        </dependency>-->
     </dependencies>
 
 </project>

+ 40 - 40
background-redis/src/main/java/cn/kdan/compdf/config/RedissonConfig.java

@@ -1,40 +1,40 @@
-package cn.kdan.compdf.config;
-
-import lombok.extern.slf4j.Slf4j;
-import org.redisson.Redisson;
-import org.redisson.api.RedissonClient;
-import org.redisson.config.Config;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author ZhouQiang 2022/8/25
- */
-@Configuration
-@Slf4j
-public class RedissonConfig {
-    @Value("${spring.redis.cluster.nodes}")
-    private String cluster;
-    @Value("${spring.redis.password}")
-    private String password;
-
-    @Bean
-    public RedissonClient getRedisson(){
-        String[] nodes = cluster.split(",");
-        //redisson版本是3.5,集群的ip前面要加上“redis://”,不然会报错,3.2版本可不加
-        for(int i=0;i<nodes.length;i++){
-            nodes[i] = "redis://"+nodes[i];
-        }
-        RedissonClient redisson;
-        Config config = new Config();
-        config.useClusterServers() //这是用的集群server
-                .setScanInterval(2000) //设置集群状态扫描时间
-                .addNodeAddress(nodes)
-                .setPassword(password);
-        redisson = Redisson.create(config);
-
-        //可通过打印redisson.getConfig().toJSON().toString()来检测是否配置成功
-        return redisson;
-    }
-}
+//package cn.kdan.compdf.config;
+//
+//import lombok.extern.slf4j.Slf4j;
+//import org.redisson.Redisson;
+//import org.redisson.api.RedissonClient;
+//import org.redisson.config.Config;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+///**
+// * @author ZhouQiang 2022/8/25
+// */
+//@Configuration
+//@Slf4j
+//public class RedissonConfig {
+//    @Value("${spring.redis.cluster.nodes}")
+//    private String cluster;
+//    @Value("${spring.redis.password}")
+//    private String password;
+//
+//    @Bean
+//    public RedissonClient getRedisson(){
+//        String[] nodes = cluster.split(",");
+//        //redisson版本是3.5,集群的ip前面要加上“redis://”,不然会报错,3.2版本可不加
+//        for(int i=0;i<nodes.length;i++){
+//            nodes[i] = "redis://"+nodes[i];
+//        }
+//        RedissonClient redisson;
+//        Config config = new Config();
+//        config.useClusterServers() //这是用的集群server
+//                .setScanInterval(2000) //设置集群状态扫描时间
+//                .addNodeAddress(nodes)
+//                .setPassword(password);
+//        redisson = Redisson.create(config);
+//
+//        //可通过打印redisson.getConfig().toJSON().toString()来检测是否配置成功
+//        return redisson;
+//    }
+//}

+ 15 - 0
background-user/src/main/java/cn/kdan/compdf/config/RabbitConfig.java

@@ -118,6 +118,16 @@ public class RabbitConfig {
         return queue;
     }
 
+    /**
+     * 用户修改信息队列
+     */
+    @Bean
+    public Queue getUserUpdQueue(){
+        Queue queue = new Queue(RabbitMQEnum.BACKGROUND_USER_UPD_QUEUE, true, false, false, null);
+        rabbitAdmin.declareQueue(queue);
+        return queue;
+    }
+
 
     /**
      *  交换机绑定队列
@@ -153,4 +163,9 @@ public class RabbitConfig {
         return BindingBuilder.bind(getUserCreatQueue()).to(getExchange()).with(RabbitMQEnum.BACKGROUND_USER_CREAT_ROUTING_KEY);
     }
 
+    @Bean
+    public Binding getUserUpdBinding(){
+        return BindingBuilder.bind(getUserUpdQueue()).to(getExchange()).with(RabbitMQEnum.BACKGROUND_USER_UPD_ROUTING_KEY);
+    }
+
 }

+ 6 - 5
background-user/src/main/java/cn/kdan/compdf/controller/v1/BackgroundUserController.java

@@ -3,6 +3,7 @@ package cn.kdan.compdf.controller.v1;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.dto.ChangePasswordDTO;
 import cn.kdan.compdf.dto.LoginDTO;
+import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.enums.AuthEnum;
 import cn.kdan.compdf.service.BackgroundUserService;
@@ -64,17 +65,17 @@ public class BackgroundUserController {
     /**
      * 通过邮箱(用户名)获取用户信息
      */
-    @GetMapping("/getUserInfo")
-    public R<LoginUserDTO> getUserInfo(@RequestParam("email") String email){
-        return R.ok(backgroundUserService.getUserInfo(email));
+    @PostMapping("/getUserInfo")
+    public R<LoginUserDTO> getUserInfo(@RequestBody LoginUser loginUser){
+        return R.ok(backgroundUserService.getUserInfo(loginUser));
     }
 
     /**
      * 通过邮箱(用户名)创建用户
      */
     @PostMapping("/creatUser")
-    R<LoginUserDTO> creatUser(@RequestBody String email){
-        return R.ok(backgroundUserService.creatUser(email));
+    R<LoginUserDTO> creatUser(@RequestBody LoginUser loginUser){
+        return R.ok(backgroundUserService.creatUser(loginUser));
     }
 
 }

+ 25 - 0
background-user/src/main/java/cn/kdan/compdf/dto/UserUpdDTO.java

@@ -0,0 +1,25 @@
+package cn.kdan.compdf.dto;
+
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * @author ComPDFKit-WPH 2023/1/3
+ *
+ * 用户创建时rabbit发送消息DTO
+ */
+@Data
+@ToString
+public class UserUpdDTO implements Serializable {
+    /**
+     * tenantId
+     */
+    private Long tenantId;
+    /**
+     * email
+     */
+    private String email;
+
+}

+ 6 - 0
background-user/src/main/java/cn/kdan/compdf/entity/BackgroundUser.java

@@ -27,6 +27,12 @@ public class BackgroundUser extends BaseEntity{
      * 租户id
      */
     private Long tenantId;
+
+    /**
+     *  compdfkit-Id
+     */
+    private Long compdfkitId;
+
     /**
      * 用户名(公司名称)
      */

+ 5 - 4
background-user/src/main/java/cn/kdan/compdf/service/BackgroundUserService.java

@@ -3,6 +3,7 @@ package cn.kdan.compdf.service;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.dto.ChangePasswordDTO;
 import cn.kdan.compdf.dto.LoginDTO;
+import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.entity.BackgroundUser;
 import cn.kdan.compdf.vo.LoginVO;
@@ -54,16 +55,16 @@ public interface BackgroundUserService extends IService<BackgroundUser> {
     /**
      * 通过邮箱(用户名)获取用户信息
      *
-     * @param email 邮箱
+     * @param loginUser 邮箱和ComPDFKit-id
      * @return 用户信息
      */
-    LoginUserDTO getUserInfo(String email);
+    LoginUserDTO getUserInfo(LoginUser loginUser);
 
     /**
      * 通过邮箱(用户名)创建用户
      *
-     * @param email 邮箱
+     * @param loginUser 邮箱和ComPDFKit-id
      * @return 用户信息
      */
-    LoginUserDTO creatUser(String email);
+    LoginUserDTO creatUser(LoginUser loginUser);
 }

+ 33 - 21
background-user/src/main/java/cn/kdan/compdf/service/impl/BackgroundUserServiceImpl.java

@@ -85,7 +85,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
         //更新登录用户的登陆时间
         if (backgroundUser.getFirstLoginTime() == null) {
             // 首次登录创建默认项目
-            backgroundUserProjectService.defaultProject(backgroundUser.getId(),backgroundUser.getTenantId());
+            backgroundUserProjectService.defaultProject(backgroundUser.getId(), backgroundUser.getTenantId());
             backgroundUser.setFirstLoginTime(LocalDateTime.now());
         }
         backgroundUser.setLastLoginTime(new Date());
@@ -106,7 +106,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
 
     @Override
     public void changePassword(ChangePasswordDTO changePasswordDTO, String token) {
-        if (changePasswordDTO.getOldPassword().equals(changePasswordDTO.getNewPassword())){
+        if (changePasswordDTO.getOldPassword().equals(changePasswordDTO.getNewPassword())) {
             throw new BusinessException(ResponseEnum.OLDPWD_EQUALS_NEWPWD);
         }
         // 获取当前登录用户
@@ -127,7 +127,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
 
     @Override
     public Long getUserId(Long tenantId) {
-        return this.baseMapper.selectOne(new LambdaQueryWrapper<BackgroundUser>().select(BackgroundUser::getId).eq(BackgroundUser::getTenantId,tenantId)).getId();
+        return this.baseMapper.selectOne(new LambdaQueryWrapper<BackgroundUser>().select(BackgroundUser::getId).eq(BackgroundUser::getTenantId, tenantId)).getId();
     }
 
     @Override
@@ -137,11 +137,11 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
     }
 
     @Override
-    public void userInit(Long userId, Long tenantId){
+    public void userInit(Long userId, Long tenantId) {
         // 初始化Free账单
-        userBalanceService.initUserBalance(userId,tenantId);
+        userBalanceService.initUserBalance(userId, tenantId);
         // 初始化Free Remain
-        userRemainService.initFreeRemain(userId,tenantId);
+        userRemainService.initFreeRemain(userId, tenantId);
         // 消息队列发送到转档同步数据 Free
         AssetRechargeDTO assetRechargeDTO = new AssetRechargeDTO();
         assetRechargeDTO.setTenantId(tenantId);
@@ -151,9 +151,8 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
         rabbitTemplate.convertAndSend(RabbitMQEnum.BACKGROUND_EXCHANGE,
                 RabbitMQEnum.BACKGROUND_USER_ASSET_RECHARGE_ROUTING_KEY,
                 jsonStr);
-
         // 首次登录创建默认项目
-        backgroundUserProjectService.defaultProject(userId,tenantId);
+        backgroundUserProjectService.defaultProject(userId, tenantId);
         BackgroundUser backgroundUser = new BackgroundUser();
         backgroundUser.setFirstLoginTime(LocalDateTime.now());
         backgroundUser.setId(userId);
@@ -161,29 +160,42 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
     }
 
     @Override
-    public LoginUserDTO getUserInfo(String email) {
+    public LoginUserDTO getUserInfo(LoginUser loginUser) {
         BackgroundUser backgroundUser = this.baseMapper.selectOne(new LambdaQueryWrapper<BackgroundUser>()
-                .eq(BackgroundUser::getUsername, email));
-        if (ObjectUtil.isEmpty(backgroundUser)){
+                .eq(BackgroundUser::getCompdfkitId, loginUser.getCompdfkitId()));
+        if (ObjectUtil.isEmpty(backgroundUser)) {
             return null;
         }
-        LoginUserDTO loginUserDTO = new LoginUserDTO();
-        loginUserDTO.setUsername(backgroundUser.getUsername());
-        loginUserDTO.setId(backgroundUser.getId());
-        loginUserDTO.setTenantId(backgroundUser.getTenantId());
-        loginUserDTO.setFullName(backgroundUser.getFullName());
-        return loginUserDTO;
+        if (!loginUser.getUsername().equals(backgroundUser.getUsername())) {
+            // 修改用户名为新的email
+            backgroundUser.setUsername(loginUser.getUsername());
+            this.baseMapper.updateById(backgroundUser);
+            UserUpdDTO userUpdDTO = new UserUpdDTO();
+            userUpdDTO.setTenantId(backgroundUser.getTenantId());
+            userUpdDTO.setEmail(backgroundUser.getUsername());
+            String jsonStr = JSONUtil.toJsonStr(userUpdDTO);
+            rabbitTemplate.convertAndSend(RabbitMQEnum.BACKGROUND_EXCHANGE,
+                    RabbitMQEnum.BACKGROUND_USER_UPD_ROUTING_KEY,
+                    jsonStr);
+        }
+        LoginUserDTO userDTO = new LoginUserDTO();
+        userDTO.setUsername(loginUser.getUsername());
+        userDTO.setId(backgroundUser.getId());
+        userDTO.setTenantId(backgroundUser.getTenantId());
+        userDTO.setFullName(backgroundUser.getFullName());
+        return userDTO;
     }
 
     @Override
-    public LoginUserDTO creatUser(String email) {
+    public LoginUserDTO creatUser(LoginUser loginUser) {
         BackgroundUser backgroundUser = new BackgroundUser();
-        backgroundUser.setUsername(email);
+        backgroundUser.setUsername(loginUser.getUsername());
+        backgroundUser.setCompdfkitId(loginUser.getCompdfkitId());
         this.baseMapper.insert(backgroundUser);
         // 设置tenantId和主键id保持一致
         backgroundUser.setTenantId(backgroundUser.getId());
         this.baseMapper.updateById(backgroundUser);
-        // TODO 添加用户信息(数据同步到SaaS转档服务)
+        //  添加用户信息(数据同步到SaaS转档服务)
         UserCreatDTO userCreatDTO = new UserCreatDTO();
         userCreatDTO.setTenantId(backgroundUser.getTenantId());
         userCreatDTO.setEmail(backgroundUser.getUsername());
@@ -192,7 +204,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
                 RabbitMQEnum.BACKGROUND_USER_CREAT_ROUTING_KEY,
                 jsonStr);
         // 初始化用户账单个人信息
-        this.userInit(backgroundUser.getId(),backgroundUser.getTenantId());
+        this.userInit(backgroundUser.getId(), backgroundUser.getTenantId());
 
         return LoginUserDTO.builder()
                 .id(backgroundUser.getId())

+ 26 - 26
background-user/src/main/resources/application.yml

@@ -58,35 +58,35 @@ spring:
 #        password: ${spring.cloud.nacos.discovery.password}
 #        file-extension: yml
 #        refresh-enabled: true
-#  redis:
-#    host: ${REDIS_HOST:47.93.102.223}
-#    port: ${REDIS_PORT:16379}
-#    password: ${REDIS_PASSWORD:1qazZAQ!2}
-#    database: ${REDIS_DATABASE:1}
-#    lettuce:
-#      pool:
-#        # 连接池中的最小空闲连接
-#        min-idle: 1
-#        # 连接池中的最大空闲连接
-#        max-idle: 6
-#        # 连接池最大连接数(使用负值表示没有限制,不要配置过大,否则可能会影响redis的性能)
-#        max-active: 10
-#        # 连接池最大阻塞等待时间(使用负值表示没有限制);单位毫秒
-#        max-wait: 1000
-#      # 关闭超时时间;单位毫秒
-#      shutdown-timeout: 200
-  #redis连接池
   redis:
-    cluster:
-      nodes: ${REDIS_NODES:81.68.234.235:6371,81.68.234.235:6372,81.68.234.235:6373,81.68.234.235:6374,81.68.234.235:6375,81.68.234.235:6376}
-      max-redirects: ${REDIS_MAX_REDIRECTS:3}
-    password: ${REDIS_PASSWORD:1234}
+    host: ${REDIS_HOST:43.139.175.179}
+    port: ${REDIS_PORT:33465}
+    password: ${REDIS_PASSWORD:1qazZAQ!2}
+    database: ${REDIS_DATABASE:0}
     lettuce:
       pool:
-        max-active: ${redis.maxTotal:200}
-        max-wait: ${redis.socketTimeout:100000}
-        max-idle: ${redis.maxIdle:100}
-        min-idle: ${redis.minIdle:100}
+        # 连接池中的最小空闲连接
+        min-idle: 1
+        # 连接池中的最大空闲连接
+        max-idle: 6
+        # 连接池最大连接数(使用负值表示没有限制,不要配置过大,否则可能会影响redis的性能)
+        max-active: 10
+        # 连接池最大阻塞等待时间(使用负值表示没有限制);单位毫秒
+        max-wait: 1000
+      # 关闭超时时间;单位毫秒
+      shutdown-timeout: 200
+  #redis连接池
+#  redis:
+#    cluster:
+#      nodes: ${REDIS_NODES:81.68.234.235:6371,81.68.234.235:6372,81.68.234.235:6373,81.68.234.235:6374,81.68.234.235:6375,81.68.234.235:6376}
+#      max-redirects: ${REDIS_MAX_REDIRECTS:3}
+#    password: ${REDIS_PASSWORD:1234}
+#    lettuce:
+#      pool:
+#        max-active: ${redis.maxTotal:200}
+#        max-wait: ${redis.socketTimeout:100000}
+#        max-idle: ${redis.maxIdle:100}
+#        min-idle: ${redis.minIdle:100}
   cache:
     type: redis
     redis: