Browse Source

feat cloud确保调通

1 month ago
parent
commit
a5717080a1
22 changed files with 291 additions and 10 deletions
  1. 1 0
      .idea/encodings.xml
  2. 23 0
      docker-compose.yml
  3. 13 1
      edu-travel-common/edu-travel-common-core/pom.xml
  4. 4 0
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/interfaces/InsertGroups.java
  5. 4 0
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/interfaces/UpdateGroups.java
  6. 76 0
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/web/BaseController.java
  7. 4 0
      edu-travel-gateway/pom.xml
  8. 1 0
      edu-travel-gateway/src/main/java/edu/travel/config/ResourceServerConfig.java
  9. 6 0
      edu-travel-gateway/src/main/resources/bootstrap-dev.yml
  10. 4 0
      edu-travel-oauth/pom.xml
  11. 2 2
      edu-travel-oauth/src/main/java/edu/travel/config/AuthorizationServer.java
  12. 0 2
      edu-travel-oauth/src/main/java/edu/travel/config/WebSecurityConfig.java
  13. 10 1
      edu-travel-oauth/src/main/java/edu/travel/service/UserServiceImpl.java
  14. 3 0
      edu-travel-oauth/src/main/resources/bootstrap-dev.yml
  15. 32 0
      edu-travel-remote/edu-travel-remote-tenant/pom.xml
  16. 11 0
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/TenantFeign.java
  17. 38 0
      edu-travel-remote/edu-travel-remote-tenant/src/test/java/edu/travel/AppTest.java
  18. 1 0
      edu-travel-remote/pom.xml
  19. 25 4
      edu-travel-service/edu-travel-service-tenant/pom.xml
  20. 4 0
      edu-travel-service/edu-travel-service-tenant/src/main/java/edu/travel/TenantApplication.java
  21. 19 0
      edu-travel-service/edu-travel-service-tenant/src/main/java/edu/travel/web/TenantController.java
  22. 10 0
      pom.xml

+ 1 - 0
.idea/encodings.xml

@@ -14,6 +14,7 @@
     <file url="file://$PROJECT_DIR$/edu-travel-model/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/edu-travel-model/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/edu-travel-oauth/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/edu-travel-remote/edu-travel-remote-tenant/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/edu-travel-remote/edu-travel-remote-user/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/edu-travel-remote/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/edu-travel-remote/src/main/resources" charset="UTF-8" />

+ 23 - 0
docker-compose.yml

@@ -210,6 +210,29 @@ services:
     volumes:
       - /Users/a1/vmdata/minio/data:/data
     command: server /data --console-address ":9011"
+  seata:
+    image: seataio/seata-server:1.7.1-slim
+    container_name: seata
+    ports:
+      - 8091:8091
+      - 7091:7091
+    volumes:
+      - /Users/a1/vmdata/seata/conf:/seata-server/resources
+    privileged: true
+    restart: always
+  sentinel:
+    container_name: sentinel
+    image: bladex/sentinel-dashboard
+    ports:
+      - 8858:8858
+    restart: always
+  zipkin:
+    image: openzipkin/zipkin
+    container_name: zipkin
+    ports:
+      - 9411:9411
+    restart: always
+    privileged: true
   kafka:
     container_name: kafka
     image: 'bitnami/kafka:3.5'

+ 13 - 1
edu-travel-common/edu-travel-common-core/pom.xml

@@ -18,6 +18,18 @@
     </properties>
 
     <dependencies>
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-resp</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>

+ 4 - 0
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/interfaces/InsertGroups.java

@@ -0,0 +1,4 @@
+package edu.travel.interfaces;
+
+public interface InsertGroups {
+}

+ 4 - 0
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/interfaces/UpdateGroups.java

@@ -0,0 +1,4 @@
+package edu.travel.interfaces;
+
+public interface UpdateGroups {
+}

+ 76 - 0
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/web/BaseController.java

@@ -0,0 +1,76 @@
+package edu.travel.web;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import edu.travel.interfaces.InsertGroups;
+import edu.travel.interfaces.UpdateGroups;
+import edu.travel.resp.BaseResponse;
+import edu.travel.resp.PageResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.Errors;
+import org.springframework.validation.ObjectError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+public class BaseController<T> {
+    @Autowired
+    private IService<T> service;
+
+    /**
+     * 通用根据updateById 更新
+     * @param entity
+     * @param errors
+     * @return
+     */
+    @PostMapping("/updateById")
+    public BaseResponse<T> updateById(@Validated(UpdateGroups.class) @RequestBody T entity, Errors errors) {
+        if (errors.hasErrors()) {
+            List<ObjectError> allErrors = errors.getAllErrors();
+            for (ObjectError allError : allErrors) {
+                return PageResponse.out(500,allError.getDefaultMessage());
+            }
+        }
+        boolean update = service.updateById(entity);
+        if (update) {
+            return PageResponse.out(200,"success",entity);
+        }
+        return PageResponse.out(500,"error",entity);
+    }
+    @PostMapping("/save")
+    public BaseResponse<T> save(@Validated(InsertGroups.class) @RequestBody T entity, Errors errors) {
+        if (errors.hasErrors()) {
+            List<ObjectError> allErrors = errors.getAllErrors();
+            for (ObjectError allError : allErrors) {
+                return PageResponse.out(500,allError.getDefaultMessage());
+            }
+        }
+        boolean save = service.save(entity);
+        if (save) {
+            return PageResponse.out(200,"success",entity);
+        }
+        return PageResponse.out(500,"error",entity);
+    }
+    @PostMapping("/deleteById")
+    public BaseResponse<T> deleteById(@RequestBody List<String> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return PageResponse.out(404,"error,not found delete data",null);
+        }
+        boolean byIds = service.removeByIds(ids);
+        if (byIds) {
+            return PageResponse.out(200,"success",null);
+        }
+        return PageResponse.out(500,"error, delete data error",null);
+    }
+    @GetMapping("/list")
+    public BaseResponse<List<T>> list() {
+        List<T> list = service.list();
+        if (list.isEmpty()) {
+            return PageResponse.out(200,"success",null);
+        }
+        return PageResponse.out(404,"error,not found delete data",list);
+    }
+
+}

+ 4 - 0
edu-travel-gateway/pom.xml

@@ -19,6 +19,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-zipkin</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>

+ 1 - 0
edu-travel-gateway/src/main/java/edu/travel/config/ResourceServerConfig.java

@@ -52,6 +52,7 @@ public class ResourceServerConfig {
                 .authorizeExchange()
                 //对oauth的端点进行放行
                 .pathMatchers("/oauth2/**").permitAll()
+                .pathMatchers(whiteListConfig.getUrls().toArray(new String[whiteListConfig.getUrls().size()])).permitAll()
                 //其他请求必须鉴权,使用鉴权管理器
                 .anyExchange().access(authorizationManager)
                 .and()

+ 6 - 0
edu-travel-gateway/src/main/resources/bootstrap-dev.yml

@@ -12,4 +12,10 @@ spring:
         shared-configs:
           - data-id: system-config-dev.yaml
             group: DEFAULT_GROUP
+            refresh: true
+          - data-id: zipkin.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+          - data-id: whiteconfig.yaml
+            group: DEFAULT_GROUP
             refresh: true

+ 4 - 0
edu-travel-oauth/pom.xml

@@ -19,6 +19,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-zipkin</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>

+ 2 - 2
edu-travel-oauth/src/main/java/edu/travel/config/AuthorizationServer.java

@@ -88,8 +88,8 @@ public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
         tokenEnhancerChain.setTokenEnhancers(Arrays.asList(accessTokenConverter));
         service.setTokenEnhancer(tokenEnhancerChain);
 
-        service.setAccessTokenValiditySeconds(7200); // 令牌默认有效期2小时
-        service.setRefreshTokenValiditySeconds(259200); // 刷新令牌默认有效期3天
+        service.setAccessTokenValiditySeconds(1296000); // 令牌默认有效期2小时
+        service.setRefreshTokenValiditySeconds(1296000); // 刷新令牌默认有效期3天
         return service;
     }
     @Bean

+ 0 - 2
edu-travel-oauth/src/main/java/edu/travel/config/WebSecurityConfig.java

@@ -25,8 +25,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .authorizeRequests()
                 .antMatchers(new String[]{"/publicKey","/client/**","/register","/oauth/**"}).permitAll()
                 .anyRequest().authenticated()
-                .and()
-                .formLogin()	//设置SpringSecurity默认Form登录
         ;
 
     }

+ 10 - 1
edu-travel-oauth/src/main/java/edu/travel/service/UserServiceImpl.java

@@ -1,14 +1,23 @@
 package edu.travel.service;
 
+import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 
 @Service
 public class UserServiceImpl implements UserDetailsService {
+
     @Override
     public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
-        return null;
+        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
+        System.out.println(request.getParameter("password"));
+        return new User("demoUser1","123456",new ArrayList<>());
     }
 }

+ 3 - 0
edu-travel-oauth/src/main/resources/bootstrap-dev.yml

@@ -21,4 +21,7 @@ spring:
             refresh: true
           - data-id: system-config-dev.yaml
             group: DEFAULT_GROUP
+            refresh: true
+          - data-id: zipkin.yml
+            group: DEFAULT_GROUP
             refresh: true

+ 32 - 0
edu-travel-remote/edu-travel-remote-tenant/pom.xml

@@ -0,0 +1,32 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>edu.travel</groupId>
+        <artifactId>edu-travel-remote</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>edu-travel-remote-tenant</artifactId>
+    <packaging>jar</packaging>
+
+    <name>edu-travel-remote-tenant</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-resp</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>

+ 11 - 0
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/TenantFeign.java

@@ -0,0 +1,11 @@
+package edu.travel.remote.feign;
+
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@FeignClient
+public interface TenantFeign {
+    @GetMapping("/getTenantById")
+    public RPCBaseResponse getTenant(Long tenantId);
+}

+ 38 - 0
edu-travel-remote/edu-travel-remote-tenant/src/test/java/edu/travel/AppTest.java

@@ -0,0 +1,38 @@
+package edu.travel;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

+ 1 - 0
edu-travel-remote/pom.xml

@@ -13,6 +13,7 @@
     <name>edu-travel-remote</name>
     <url>http://maven.apache.org</url>
     <modules>
+        <module>edu-travel-remote-tenant</module>
     </modules>
 
     <properties>

+ 25 - 4
edu-travel-service/edu-travel-service-tenant/pom.xml

@@ -19,10 +19,31 @@
 
     <dependencies>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>3.8.1</version>
-            <scope>test</scope>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-zipkin</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-datasource</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-core</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-remote-tenant</artifactId>
+            <version>1.0-SNAPSHOT</version>
         </dependency>
     </dependencies>
 </project>

+ 4 - 0
edu-travel-service/edu-travel-service-tenant/src/main/java/edu/travel/TenantApplication.java

@@ -0,0 +1,4 @@
+package edu.travel;
+
+public class TenantApplication {
+}

+ 19 - 0
edu-travel-service/edu-travel-service-tenant/src/main/java/edu/travel/web/TenantController.java

@@ -0,0 +1,19 @@
+package edu.travel.web;
+
+import edu.travel.remote.feign.TenantFeign;
+import edu.travel.resp.BaseResponse;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.validation.Errors;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/tenant")
+public class TenantController  extends BaseController implements TenantFeign {
+    @Override
+    @GetMapping("/getTenantById")
+    public RPCBaseResponse getTenant(Long tenantId) {
+        return null;
+    }
+}

+ 10 - 0
pom.xml

@@ -76,6 +76,16 @@
         <version>${mybatis.plus.verion}</version>
       </dependency>
       <dependency>
+        <groupId>com.baomidou</groupId>
+        <artifactId>mybatis-plus-core</artifactId>
+        <version>${mybatis.plus.verion}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.baomidou</groupId>
+        <artifactId>mybatis-plus-extension</artifactId>
+        <version>${mybatis.plus.verion}</version>
+      </dependency>
+      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>${fastjson.version}</version>