Browse Source

用户模块:用户管理解析官网token,并针对新用户产生数据

wangPH 2 years ago
parent
commit
abb2b95026

+ 2 - 0
background-common/src/main/java/cn/kdan/compdf/base/R.java

@@ -5,6 +5,7 @@ import cn.hutool.http.HttpStatus;
 import cn.kdan.compdf.enums.BackgroundErrorEnum;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * 请求统一返回对象
@@ -12,6 +13,7 @@ import lombok.Data;
  */
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class R<T> {
 
     private String code;

+ 26 - 20
background-common/src/main/java/cn/kdan/compdf/config/JwtConfig.java

@@ -53,35 +53,41 @@ public class JwtConfig {
      * @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);
+        }
         Jws<Claims> claimsJws = Jwts.parser().setSigningKey(AuthEnum.SECRET.getBytes()).parseClaimsJws(jwtToken);
         // map
         Claims claims = claimsJws.getBody();
-        String email = claims.get(JwtTokenEnum.EMAIL, String.class);
-
-
 //        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 email;
+        return claims.get(JwtTokenEnum.EMAIL, String.class);
     }
 
-//    @SneakyThrows
-//   public static void main(String[] args) {
-////        String s = generateJwt(LoginUserDTO.builder().id(123L).username("kdan").tenantId("1").fullName("kk").build());
-////        System.out.println(s);
-//       // 加密
-//
-//       try {
-//            String token = "eyJhbGciOiJIUzI1NiIsInR5cGUiOiJKV1QifQ.eyJlbWFpbCI6InBlbmdqaWFueW9uZ0BrZGFubW9iaWxlLmNvbSIsImlhdCI6MTY3MjYyOTM3NywianRpIjoiODk3NTk4ZjY4NDZjNjQ2NTQxYjU0M2MwNjRlYTdiYWYifQ.XuNzHvtUQvGsadpaxuv7kqfSdtn1oMdo76mHf8-TGBw";
-//            LoginUserDTO loginUserDTO = checkJwt(token);
+    @SneakyThrows
+   public static void main(String[] args) {
+//        String s = generateJwt(LoginUserDTO.builder().id(123L).username("kdan").tenantId("1").fullName("kk").build());
+//        System.out.println(s);
+       // 加密
+
+       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);
 //            System.out.println(loginUserDTO);
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            throw new BusinessException("登录过期");
-//        }
-//    }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BusinessException("登录过期");
+        }
+    }
 
 }

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

@@ -1,13 +1,17 @@
 package cn.kdan.compdf.dto;
 
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @author Bob 2022-10-11
  **/
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class LoginUserDTO {
 
     /**

+ 1 - 1
background-common/src/main/java/cn/kdan/compdf/enums/AuthEnum.java

@@ -38,6 +38,6 @@ public interface AuthEnum {
     /**
      * token redis存放标识
      */
-    String USER_TOKEN_REDIS = "user-token-redis:";
+    String USER_TOKEN_REDIS = "compdfkit_cache:jwt:";
 
 }

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

@@ -64,4 +64,12 @@ public interface RabbitMQEnum {
      */
     String BACKGROUND_USER_ASSET_RECHARGE_ROUTING_KEY = "background.user.asset.recharge";
 
+    /**
+     * 新用户创建队列
+     */
+    String BACKGROUND_USER_CREAT_QUEUE = "background-user-creat-queue";
+    /**
+     * 新用户创建路由规则
+     */
+    String BACKGROUND_USER_CREAT_ROUTING_KEY = "background.user.creat";
 }

+ 2 - 3
background-gateway/docker/Dockerfile

@@ -1,6 +1,5 @@
 FROM fabletang/jre8-alpine
 
-VOLUME /tmp
-ADD background-gateway.jar app.jar
+ADD ${JAR_FILE} app.jar
 RUN bash -c 'touch /app.jar'
-ENTRYPOINT java -Xms128m -Xmx256m -Dfile.encoding=utf-8 -Duser.timezone=GMT+08 -jar /app.jar
+ENTRYPOINT java -Xms128m -Xmx256m -Dfile.encoding=utf-8 -Duser.timezone=GMT+0 -jar /app.jar

+ 15 - 1
background-gateway/src/main/java/cn/kdan/compdf/GatewayApplication.java

@@ -1,11 +1,18 @@
 package cn.kdan.compdf;
 
 import cn.kdan.compdf.config.JwtConfig;
+import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
+import org.springframework.http.converter.HttpMessageConverter;
+
+import java.util.stream.Collectors;
 
 /**
  * @author Bob 2022/10/10
@@ -16,9 +23,16 @@ import org.springframework.context.annotation.Import;
 @Import({
         JwtConfig.class
 })
-@EnableFeignClients
+@EnableFeignClients(basePackages = "cn.kdan.compdf.feign")
 public class GatewayApplication {
     public static void main(String[] args) {
         SpringApplication.run(GatewayApplication.class, args);
     }
+
+    @Bean
+    @ConditionalOnMissingBean
+    public HttpMessageConverters messageConverters(ObjectProvider<HttpMessageConverter<?>> converters) {
+        return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList()));
+    }
+
 }

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

@@ -1,11 +1,14 @@
 package cn.kdan.compdf.feign;
 
+import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.feign.fallback.UserFeignFallBackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author ComPDFKit-WPH 2023/1/2
@@ -15,9 +18,9 @@ import org.springframework.web.bind.annotation.PostMapping;
 public interface UserFeign {
 
 
-    @GetMapping("/")
-    LoginUserDTO getUserInfo(String email);
+    @GetMapping("/v1/user/getUserInfo")
+    R<LoginUserDTO> getUserInfo(@RequestParam("email") String email);
 
-    @PostMapping("/")
-    LoginUserDTO creatUser(String email);
+    @PostMapping("/v1/user/creatUser")
+    R<LoginUserDTO> creatUser(@RequestBody String email);
 }

+ 5 - 4
background-gateway/src/main/java/cn/kdan/compdf/feign/fallback/UserFeignFallBackFactory.java

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

+ 15 - 8
background-gateway/src/main/java/cn/kdan/compdf/filter/AuthGlobalFilter.java

@@ -1,6 +1,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.LoginUserDTO;
 import cn.kdan.compdf.enums.AuthEnum;
@@ -8,6 +9,8 @@ import cn.kdan.compdf.enums.ResponseEnum;
 import cn.kdan.compdf.exception.BusinessException;
 import cn.kdan.compdf.feign.UserFeign;
 import com.alibaba.fastjson.JSON;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
@@ -32,12 +35,14 @@ import java.util.function.Consumer;
  * @author Bob 2022-10-12
  **/
 @Component
+@Slf4j
+@RequiredArgsConstructor
 public class AuthGlobalFilter implements GlobalFilter, Ordered {
 
     @Autowired
     private StringRedisTemplate redisTemplate;
-    @Autowired
-    private UserFeign userFeign;
+
+    private final UserFeign userFeign;
 
     @Override
     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
@@ -64,19 +69,20 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
             DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
             return response.writeWith(Mono.just(dataBuffer));
         }
-        authorization = authorization.replaceFirst("Bearer ","");
+//        authorization = authorization.replaceFirst("Bearer ","");
 
         // 3、解析
         try {
             String email = JwtConfig.checkJwt(authorization);
-            // TODO 查询用户信息(username - email)
-            LoginUserDTO loginUserDTO = userFeign.getUserInfo(email);
-            if(ObjectUtil.isEmpty(loginUserDTO)){
+            // 查询用户信息(username - email)
+            R<LoginUserDTO> loginUserDTO = userFeign.getUserInfo(email);
+            // 信息为空创建新用户
+            if(ObjectUtil.isEmpty(loginUserDTO.getData())){
                 loginUserDTO = userFeign.creatUser(email);
             }
 
             // redie验证token是否过期
-            Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + authorization);
+            Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + email);
             if (null == flag || !flag) {
                 ServerHttpResponse response = exchange.getResponse();
                 response.setStatusCode(HttpStatus.OK);
@@ -87,7 +93,7 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
                 return response.writeWith(Mono.just(dataBuffer));
             }
 
-            LoginUserDTO finalLoginUserDTO = loginUserDTO;
+            LoginUserDTO finalLoginUserDTO = loginUserDTO.getData();
             Consumer<HttpHeaders> httpHeaders = httpHeader -> {
                 httpHeader.set(AuthEnum.USER_ID_HEADER, finalLoginUserDTO.getId().toString());
                 httpHeader.set(AuthEnum.USER_TENANT_ID_HEADER, finalLoginUserDTO.getTenantId().toString());
@@ -98,6 +104,7 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
             exchange.mutate().request(serverHttpRequest).build();
             return chain.filter(exchange);
         } catch (Exception e) {
+            log.error("解析失败",e);
             ServerHttpResponse response = exchange.getResponse();
             response.setStatusCode(HttpStatus.OK);
             // 改变响应的类型

+ 15 - 1
background-gateway/src/main/resources/application.yml

@@ -59,4 +59,18 @@ spring:
         max-active: ${redis.maxTotal:200}
         max-wait: ${redis.socketTimeout:100000}
         max-idle: ${redis.maxIdle:100}
-        min-idle: ${redis.minIdle:100}
+        min-idle: ${redis.minIdle:100}
+#### feign
+
+feign:
+  client:
+    config:
+      default:
+        connectTimeout: 20000
+        readTimeout: 20000
+  httpclient:
+    connection-timeout: 20000
+    connection-timer-repeat: 20000
+    enabled: true
+    max-connections: 200
+    max-connections-per-route: 50

+ 3 - 3
background-user/docker/Dockerfile

@@ -1,6 +1,6 @@
 FROM fabletang/jre8-alpine
 
-VOLUME /tmp
-ADD background-user.jar app.jar
+ARG JAR_FILE=./target/background-user.jar
+ADD ${JAR_FILE} app.jar
 RUN bash -c 'touch /app.jar'
-ENTRYPOINT java -Xms128m -Xmx256m -Dfile.encoding=utf-8 -Duser.timezone=GMT+08 -jar /app.jar
+ENTRYPOINT java -Xms128m -Xmx256m -Dfile.encoding=utf-8 -Duser.timezone=GMT+0 -jar /app.jar

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

@@ -108,6 +108,16 @@ public class RabbitConfig {
         return queue;
     }
 
+    /**
+     * 新用户创建队列
+     */
+    @Bean
+    public Queue getUserCreatQueue(){
+        Queue queue = new Queue(RabbitMQEnum.BACKGROUND_USER_CREAT_QUEUE, true, false, false, null);
+        rabbitAdmin.declareQueue(queue);
+        return queue;
+    }
+
 
     /**
      *  交换机绑定队列
@@ -138,4 +148,9 @@ public class RabbitConfig {
         return BindingBuilder.bind(getAssetRechargeQueue()).to(getExchange()).with(RabbitMQEnum.BACKGROUND_USER_ASSET_RECHARGE_ROUTING_KEY);
     }
 
+    @Bean
+    public Binding getUserCreatBinding(){
+        return BindingBuilder.bind(getUserCreatQueue()).to(getExchange()).with(RabbitMQEnum.BACKGROUND_USER_CREAT_ROUTING_KEY);
+    }
+
 }

+ 17 - 0
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.LoginUserDTO;
 import cn.kdan.compdf.enums.AuthEnum;
 import cn.kdan.compdf.service.BackgroundUserService;
 import cn.kdan.compdf.utils.TokenUtil;
@@ -60,4 +61,20 @@ public class BackgroundUserController {
         return R.ok(backgroundUserService.getUSerFirstLogin(TokenUtil.getRequestHeader().getTenantId()).toString());
     }
 
+    /**
+     * 通过邮箱(用户名)获取用户信息
+     */
+    @GetMapping("/getUserInfo")
+    public R<LoginUserDTO> getUserInfo(@RequestParam("email") String email){
+        return R.ok(backgroundUserService.getUserInfo(email));
+    }
+
+    /**
+     * 通过邮箱(用户名)创建用户
+     */
+    @PostMapping("/creatUser")
+    R<LoginUserDTO> creatUser(@RequestBody String email){
+        return R.ok(backgroundUserService.creatUser(email));
+    }
+
 }

+ 25 - 0
background-user/src/main/java/cn/kdan/compdf/dto/UserCreatDTO.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 UserCreatDTO implements Serializable {
+    /**
+     * tenantId
+     */
+    private Long tenantId;
+    /**
+     * email
+     */
+    private String email;
+
+}

+ 17 - 0
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.LoginUserDTO;
 import cn.kdan.compdf.entity.BackgroundUser;
 import cn.kdan.compdf.vo.LoginVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -49,4 +50,20 @@ public interface BackgroundUserService extends IService<BackgroundUser> {
      * @param tenantId tenantId
      */
     void userInit(Long userId, Long tenantId);
+
+    /**
+     * 通过邮箱(用户名)获取用户信息
+     *
+     * @param email 邮箱
+     * @return 用户信息
+     */
+    LoginUserDTO getUserInfo(String email);
+
+    /**
+     * 通过邮箱(用户名)创建用户
+     *
+     * @param email 邮箱
+     * @return 用户信息
+     */
+    LoginUserDTO creatUser(String email);
 }

+ 56 - 8
background-user/src/main/java/cn/kdan/compdf/service/impl/BackgroundUserServiceImpl.java

@@ -1,14 +1,11 @@
 package cn.kdan.compdf.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.config.JwtConfig;
-import cn.kdan.compdf.config.RabbitConfig;
 import cn.kdan.compdf.constant.UserBalanceConstant;
-import cn.kdan.compdf.dto.AssetRechargeDTO;
-import cn.kdan.compdf.dto.ChangePasswordDTO;
-import cn.kdan.compdf.dto.LoginDTO;
-import cn.kdan.compdf.dto.LoginUserDTO;
+import cn.kdan.compdf.dto.*;
 import cn.kdan.compdf.entity.BackgroundUser;
 import cn.kdan.compdf.enums.AuthEnum;
 import cn.kdan.compdf.enums.RabbitMQEnum;
@@ -83,7 +80,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
         log.info("用户登录成功:username:{},time:{}", loginDTO.getUsername(), new Date());
 
         // 设置token过期时间
-        redisTemplate.opsForValue().set(AuthEnum.USER_TOKEN_REDIS + token, token, AuthEnum.EXPIRE, TimeUnit.HOURS);
+        redisTemplate.opsForValue().set(AuthEnum.USER_TOKEN_REDIS + loginDTO.getUsername(), token, AuthEnum.EXPIRE, TimeUnit.HOURS);
 
         //更新登录用户的登陆时间
         if (backgroundUser.getFirstLoginTime() == null) {
@@ -141,18 +138,69 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
 
     @Override
     public void userInit(Long userId, Long tenantId){
+        // 初始化Free账单
         userBalanceService.initUserBalance(userId,tenantId);
+        // 初始化Free Remain
         userRemainService.initFreeRemain(userId,tenantId);
-        // 消息队列发送到转档同步数据
+        // 消息队列发送到转档同步数据 Free
         AssetRechargeDTO assetRechargeDTO = new AssetRechargeDTO();
         assetRechargeDTO.setTenantId(tenantId);
         assetRechargeDTO.setAssetType(UserBalanceConstant.DESCRIPTION_TYPE_FREE);
         assetRechargeDTO.setAsset(UserBalanceConstant.BALANCE_CHANGE_FREE);
+        String jsonStr = JSONUtil.toJsonStr(assetRechargeDTO);
         rabbitTemplate.convertAndSend(RabbitMQEnum.BACKGROUND_EXCHANGE,
                 RabbitMQEnum.BACKGROUND_USER_ASSET_RECHARGE_ROUTING_KEY,
-                assetRechargeDTO);
+                jsonStr);
+
+        // 首次登录创建默认项目
+        backgroundUserProjectService.defaultProject(userId,tenantId);
+        BackgroundUser backgroundUser = new BackgroundUser();
+        backgroundUser.setFirstLoginTime(LocalDateTime.now());
+        backgroundUser.setId(userId);
+        this.baseMapper.updateById(backgroundUser);
     }
 
+    @Override
+    public LoginUserDTO getUserInfo(String email) {
+        BackgroundUser backgroundUser = this.baseMapper.selectOne(new LambdaQueryWrapper<BackgroundUser>()
+                .eq(BackgroundUser::getUsername, email));
+        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;
+    }
+
+    @Override
+    public LoginUserDTO creatUser(String email) {
+        BackgroundUser backgroundUser = new BackgroundUser();
+        backgroundUser.setUsername(email);
+        this.baseMapper.insert(backgroundUser);
+        // 设置tenantId和主键id保持一致
+        backgroundUser.setTenantId(backgroundUser.getId());
+        this.baseMapper.updateById(backgroundUser);
+        // TODO 添加用户信息(数据同步到SaaS转档服务)
+        UserCreatDTO userCreatDTO = new UserCreatDTO();
+        userCreatDTO.setTenantId(backgroundUser.getTenantId());
+        userCreatDTO.setEmail(backgroundUser.getUsername());
+        String jsonStr = JSONUtil.toJsonStr(userCreatDTO);
+        rabbitTemplate.convertAndSend(RabbitMQEnum.BACKGROUND_EXCHANGE,
+                RabbitMQEnum.BACKGROUND_USER_CREAT_ROUTING_KEY,
+                jsonStr);
+        // 初始化用户账单个人信息
+        this.userInit(backgroundUser.getId(),backgroundUser.getTenantId());
+
+        return LoginUserDTO.builder()
+                .id(backgroundUser.getId())
+                .tenantId(backgroundUser.getTenantId())
+                .username(backgroundUser.getUsername())
+                .fullName(backgroundUser.getFullName())
+                .build();
+    }
 
 
 }

+ 12 - 8
docker-compose.yml

@@ -3,10 +3,12 @@ services:
   back-user:
     restart: always
     build:
-      context: ./back_user
-      dockerfile: Dockerfile
-    image: back-user:0.2.0
-    container_name: back-user-v0.2
+      context: ./
+      dockerfile: background-user/docker/Dockerfile
+      args:
+        JAR_FILE: target/background-gateway.jar.jar
+    image: back-user:1.0.0
+    container_name: back-user-v1.0
     ports:
       - 8890:8890
     environment:
@@ -24,10 +26,12 @@ services:
   back-gateway:
     restart: always
     build:
-      context: ./back_gateway
-      dockerfile: Dockerfile
-    image: back-gateway:0.2.0
-    container_name: back-gateway-v0.2
+      context: ./
+      dockerfile: background-gateway/docker/Dockerfile
+      args:
+        JAR_FILE: target/background-user.jar
+    image: back-gateway:1.0.0
+    container_name: back-gateway-v1.0
     ports:
       - 8088:8088
     environment: