wuwen 6 năm trước cách đây
mục cha
commit
b0e3fd4ab2
51 tập tin đã thay đổi với 891 bổ sung1379 xóa
  1. 78 110
      ssj_aijia/pom.xml
  2. 68 20
      ssj_aijia/ssj-aijia-common-config/pom.xml
  3. 0 24
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/Application.java
  4. 13 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/ConfigApplication.java
  5. 25 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/DataSourceProxyConfig.java
  6. 50 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/ExceptionHandlerPage.java
  7. 165 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/FilePersistence.java
  8. 16 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/RequestOriginParserDefinition.java
  9. 0 39
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/controller/InitController.java
  10. 0 60
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/util/JsonResult.java
  11. 0 36
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/util/ResultCode.java
  12. 0 50
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/web/CustomHttpInterceptor.java
  13. 0 60
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/web/SwaggerConfig.java
  14. 0 44
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/web/WebConfig.java
  15. 47 0
      ssj_aijia/ssj-aijia-common-config/src/main/resources/application.yml
  16. 12 48
      ssj_aijia/ssj-aijia-common-config/src/main/resources/bootstrap.yaml
  17. 16 0
      ssj_aijia/ssj-aijia-common-config/src/main/resources/registry.conf
  18. 40 47
      ssj_aijia/ssj-aijia-common-model/pom.xml
  19. 23 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/cloud/ssj/entity/Book.java
  20. 28 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/cloud/ssj/entity/Order.java
  21. 25 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/cloud/ssj/entity/User.java
  22. 0 24
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/Application.java
  23. 0 30
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  24. 0 50
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  25. 0 60
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  26. 0 44
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  27. 0 13
      ssj_aijia/ssj-aijia-common-model/src/main/resources/bootstrap.yaml
  28. 0 42
      ssj_aijia/ssj-aijia-common-model/src/main/resources/logback.xml
  29. 34 0
      ssj_aijia/ssj-aijia-common-service/README.md
  30. 44 0
      ssj_aijia/ssj-aijia-common-service/pom.xml
  31. 11 0
      ssj_aijia/ssj-aijia-common-service/src/main/java/com/cloud/ssj/service/BooKService.java
  32. 10 0
      ssj_aijia/ssj-aijia-common-service/src/main/java/com/cloud/ssj/service/OrderService.java
  33. 38 47
      ssj_aijia/ssj-aijia-common-utils/pom.xml
  34. 0 24
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/Application.java
  35. 0 30
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  36. 0 50
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  37. 0 60
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  38. 0 44
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  39. 0 13
      ssj_aijia/ssj-aijia-common-utils/src/main/resources/bootstrap.yaml
  40. 0 42
      ssj_aijia/ssj-aijia-common-utils/src/main/resources/logback.xml
  41. 0 0
      ssj_aijia/ssj-aijia-sys/log/run.log
  42. 49 47
      ssj_aijia/ssj-aijia-sys/pom.xml
  43. 13 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/cloud/ssj/SysApplication.java
  44. 27 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/cloud/ssj/controller/TestController.java
  45. 0 24
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/Application.java
  46. 0 30
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  47. 0 50
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  48. 0 60
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  49. 0 44
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  50. 47 0
      ssj_aijia/ssj-aijia-sys/src/main/resources/application.yml
  51. 12 13
      ssj_aijia/ssj-aijia-sys/src/main/resources/bootstrap.yaml

+ 78 - 110
ssj_aijia/pom.xml

@@ -1,118 +1,86 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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>
+         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>
 
-	<groupId>com.cloud.ssj</groupId>
-	<artifactId>ssj-aijia</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<packaging>pom</packaging>
+    <groupId>com.cloud.ssj</groupId>
+    <artifactId>ssj-aijia</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0-SNAPSHOT</version>
+    
+    <modules>
+        <module>ssj-aijia-api</module>
+        <module>ssj-aijia-sys</module>
+  
+   		<module>ssj-aijia-common-config</module>
+   		<module>ssj-aijia-common-utils</module>
+   		<module>ssj-aijia-common-model</module>
+   		<module>ssj-aijia-common-service</module>
+       
+    </modules>
+    
+    <!--父工程-->
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.1.3.RELEASE</version>
+    </parent>
 
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.1.7.RELEASE</version>
-	</parent>
+    <!--依赖版本的锁定-->
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
+        <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
+    </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+                <version>${spring-cloud-alibaba.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
 
-	<modules>
-		<module>ssj-aijia-api</module>
-		<module>ssj-aijia-sys</module>
-		
-		<module>ssj-aijia-common-config</module>
-		<module>ssj-aijia-common-model</module>
-		<module>ssj-aijia-common-utils</module>
-	</modules>
+    <dependencies>
+        <!-- 链路追踪 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-sleuth</artifactId>
+        </dependency>
+        <!-- zipkin -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-zipkin</artifactId>
+        </dependency>
+    </dependencies>
 
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<java.version>1.8</java.version>
-		<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
-		<alibaba-spring-cloud.version>0.9.0.RELEASE</alibaba-spring-cloud.version>
-		<nacos.version>2.2.1.RELEASE</nacos.version>
-		<swagger.version>2.9.2</swagger.version>
-	</properties>
-	
-	
-	<dependencies>
-	
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger2</artifactId>
-			<version>${swagger.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger-ui</artifactId>
-			<version>${swagger.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>com.github.xiaoymin</groupId>
-			<artifactId>swagger-bootstrap-ui</artifactId>
-			<version>1.9.3</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.json-lib</groupId>
-			<artifactId>json-lib-ext-spring</artifactId>
-			<version>1.0.2</version>
-		</dependency>
-		
-		<dependency>
-		    <groupId>com.alibaba.cloud</groupId>
-		    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-		    <version>2.2.1.RELEASE</version>
-		</dependency>
-	
-	</dependencies>
-	
-	
-	<dependencyManagement>
-		<dependencies>
-			<!--子版本依赖-->
-			<dependency>
-				<groupId>com.cloud.ssj</groupId>
-				<artifactId>ssj-aijia-common-config</artifactId>
-				<version>0.0.1-SNAPSHOT</version>
-			</dependency>
-			
-			<dependency>
-				<groupId>org.springframework.cloud</groupId>
-				<artifactId>spring-cloud-dependencies</artifactId>
-				<version>${spring-cloud.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-			
-			<dependency>
-				<groupId>org.springframework.cloud</groupId>
-				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
-				<version>${alibaba-spring-cloud.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-			
-			
-		</dependencies>
-	</dependencyManagement>
-	
-	
+    <repositories><!-- 代码库 -->
+        <repository>
+            <id>maven-ali</id>
+            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+                <updatePolicy>always</updatePolicy>
+                <checksumPolicy>fail</checksumPolicy>
+            </snapshots>
+        </repository>
+    </repositories>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
+</project>

+ 68 - 20
ssj_aijia/ssj-aijia-common-config/pom.xml

@@ -1,22 +1,70 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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>
-
-	<artifactId>ssj-aijia-common-config</artifactId>
-	<packaging>jar</packaging>
-
-	<parent>
-		<groupId>com.cloud.ssj</groupId>
-		<artifactId>ssj-aijia</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-	</parent>
-
-	<dependencies>
-		
-		
-		
-
-	</dependencies>
-</project>
+         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">
+    <parent>
+        <artifactId>ssj-aijia</artifactId>
+        <groupId>com.cloud.ssj</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ssj-aijia-common-config</artifactId>
+
+    <dependencies>
+        <!--springboot-web-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        
+        <!--shop-common-->
+        <dependency>
+            <groupId>com.cloud.ssj</groupId>
+            <artifactId>ssj-aijia-common-service</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <!--service-api-->
+       
+
+        <!--nacos客户端-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <!--dubbo-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-dubbo</artifactId>
+        </dependency>
+
+        <!--sentinel-->
+        <dependency>
+        <groupId>com.alibaba.cloud</groupId>
+        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+
+        <dependency>
+	        <groupId>org.apache.rocketmq</groupId>
+	        <artifactId>rocketmq-spring-boot-starter</artifactId>
+	        <version>2.0.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-client</artifactId>
+            <version>4.4.0</version>
+        </dependency>
+
+        <dependency>
+       		<groupId>com.alibaba.cloud</groupId>
+        	<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
+        </dependency>
+        <dependency>
+	        <groupId>com.alibaba.cloud</groupId>
+	        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 0 - 24
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/Application.java

@@ -1,24 +0,0 @@
-package com.cloud.ssj;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
-
-/**
- * 程序主入口
- * 
- * @author Minbo
- *
- */
-@SpringBootApplication
-@EnableSwaggerBootstrapUI
-@EnableDiscoveryClient
-public class Application {
-
-	public static void main(String[] args) {
-		SpringApplication.run(Application.class, args);
-	}
-
-}

+ 13 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/ConfigApplication.java

@@ -0,0 +1,13 @@
+package com.cloud.ssj;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient  //注册到注册中心
+public class ConfigApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(ConfigApplication.class);
+    }
+}

+ 25 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/DataSourceProxyConfig.java

@@ -0,0 +1,25 @@
+package com.cloud.ssj.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import com.alibaba.druid.pool.DruidDataSource;
+
+import io.seata.rm.datasource.DataSourceProxy;
+
+@Configuration
+public class DataSourceProxyConfig {
+    @Bean
+    @ConfigurationProperties(prefix = "spring.datasource")
+    public DruidDataSource druidDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Primary
+    @Bean
+    public DataSourceProxy dataSource(DruidDataSource druidDataSource) {
+        return new DataSourceProxy(druidDataSource);
+    }
+}

+ 50 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/ExceptionHandlerPage.java

@@ -0,0 +1,50 @@
+package com.cloud.ssj.config;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Component;
+
+import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
+import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
+import com.alibaba.fastjson.JSON;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+//异常处理页面
+@Component
+public class ExceptionHandlerPage implements UrlBlockHandler {
+    //BlockException 异常接口,包含Sentinel的五个异常
+    // FlowException 限流异常
+    // DegradeException 降级异常
+    // ParamFlowException 参数限流异常
+    // AuthorityException 授权异常
+    // SystemBlockException 系统负载异常
+    @Override
+    public void blocked(HttpServletRequest request, HttpServletResponse
+            response, BlockException e) throws IOException {
+        response.setContentType("application/json;charset=utf-8");
+        ResponseData data = null;
+        if (e instanceof FlowException) {
+            data = new ResponseData(-1, "接口被限流了...");
+        } else if (e instanceof DegradeException) {
+            data = new ResponseData(-2, "接口被降级了...");
+        }
+        response.getWriter().write(JSON.toJSONString(data));
+    }
+}
+
+@Data
+@AllArgsConstructor//全参构造
+@NoArgsConstructor
+//无参构造
+class ResponseData {
+    private int code;
+    private String message;
+}

+ 165 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/FilePersistence.java

@@ -0,0 +1,165 @@
+package com.cloud.ssj.config;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Value;
+
+import com.alibaba.csp.sentinel.command.handler.ModifyParamFlowRulesCommandHandler;
+import com.alibaba.csp.sentinel.datasource.Converter;
+import com.alibaba.csp.sentinel.datasource.FileRefreshableDataSource;
+import com.alibaba.csp.sentinel.datasource.FileWritableDataSource;
+import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
+import com.alibaba.csp.sentinel.datasource.WritableDataSource;
+import com.alibaba.csp.sentinel.init.InitFunc;
+import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule;
+import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRuleManager;
+import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;
+import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager;
+import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
+import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
+import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule;
+import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRuleManager;
+import com.alibaba.csp.sentinel.slots.system.SystemRule;
+import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;
+import com.alibaba.csp.sentinel.transport.util.WritableDataSourceRegistry;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+
+/**
+ * Sentinel持久化存储配置
+ * 需要对应
+ * 1.在resources下创建配置目录 META-INF/services ,然后添加文件
+ *          com.alibaba.csp.sentinel.init.InitFunc
+ * 2.在文件中添加配置类的全路径
+ *          top.glory.config.FilePersistence
+ */
+public class FilePersistence implements InitFunc {
+
+    @Value("spring.application.name")
+    private String appcationName;
+
+    @Override
+    public void init() throws Exception {
+        String ruleDir = System.getProperty("user.home") + "/sentinel-rules/" + appcationName;
+        String flowRulePath = ruleDir + "/flow-rule.json";
+        String degradeRulePath = ruleDir + "/degrade-rule.json";
+        String systemRulePath = ruleDir + "/system-rule.json";
+        String authorityRulePath = ruleDir + "/authority-rule.json";
+        String paramFlowRulePath = ruleDir + "/param-flow-rule.json";
+
+        this.mkdirIfNotExits(ruleDir);
+        this.createFileIfNotExits(flowRulePath);
+        this.createFileIfNotExits(degradeRulePath);
+        this.createFileIfNotExits(systemRulePath);
+        this.createFileIfNotExits(authorityRulePath);
+        this.createFileIfNotExits(paramFlowRulePath);
+
+        // 流控规则
+        ReadableDataSource<String, List<FlowRule>> flowRuleRDS = new FileRefreshableDataSource<>(
+                flowRulePath,
+                flowRuleListParser
+        );
+        FlowRuleManager.register2Property(flowRuleRDS.getProperty());
+        WritableDataSource<List<FlowRule>> flowRuleWDS = new FileWritableDataSource<>(
+                flowRulePath,
+                this::encodeJson
+        );
+        WritableDataSourceRegistry.registerFlowDataSource(flowRuleWDS);
+
+        // 降级规则
+        ReadableDataSource<String, List<DegradeRule>> degradeRuleRDS = new FileRefreshableDataSource<>(
+                degradeRulePath,
+                degradeRuleListParser
+        );
+        DegradeRuleManager.register2Property(degradeRuleRDS.getProperty());
+        WritableDataSource<List<DegradeRule>> degradeRuleWDS = new FileWritableDataSource<>(
+                degradeRulePath,
+                this::encodeJson
+        );
+        WritableDataSourceRegistry.registerDegradeDataSource(degradeRuleWDS);
+
+        // 系统规则
+        ReadableDataSource<String, List<SystemRule>> systemRuleRDS = new FileRefreshableDataSource<>(
+                systemRulePath,
+                systemRuleListParser
+        );
+        SystemRuleManager.register2Property(systemRuleRDS.getProperty());
+        WritableDataSource<List<SystemRule>> systemRuleWDS = new FileWritableDataSource<>(
+                systemRulePath,
+                this::encodeJson
+        );
+        WritableDataSourceRegistry.registerSystemDataSource(systemRuleWDS);
+
+        // 授权规则
+        ReadableDataSource<String, List<AuthorityRule>> authorityRuleRDS = new FileRefreshableDataSource<>(
+                authorityRulePath,
+                authorityRuleListParser
+        );
+        AuthorityRuleManager.register2Property(authorityRuleRDS.getProperty());
+        WritableDataSource<List<AuthorityRule>> authorityRuleWDS = new FileWritableDataSource<>(
+                authorityRulePath,
+                this::encodeJson
+        );
+        WritableDataSourceRegistry.registerAuthorityDataSource(authorityRuleWDS);
+
+        // 热点参数规则
+        ReadableDataSource<String, List<ParamFlowRule>> paramFlowRuleRDS = new FileRefreshableDataSource<>(
+                paramFlowRulePath,
+                paramFlowRuleListParser
+        );
+        ParamFlowRuleManager.register2Property(paramFlowRuleRDS.getProperty());
+        WritableDataSource<List<ParamFlowRule>> paramFlowRuleWDS = new FileWritableDataSource<>(
+                paramFlowRulePath,
+                this::encodeJson
+        );
+        ModifyParamFlowRulesCommandHandler.setWritableDataSource(paramFlowRuleWDS);
+    }
+
+    private Converter<String, List<FlowRule>> flowRuleListParser = source -> JSON.parseObject(
+            source,
+            new TypeReference<List<FlowRule>>() {
+            }
+    );
+    private Converter<String, List<DegradeRule>> degradeRuleListParser = source -> JSON.parseObject(
+            source,
+            new TypeReference<List<DegradeRule>>() {
+            }
+    );
+    private Converter<String, List<SystemRule>> systemRuleListParser = source -> JSON.parseObject(
+            source,
+            new TypeReference<List<SystemRule>>() {
+            }
+    );
+
+    private Converter<String, List<AuthorityRule>> authorityRuleListParser = source -> JSON.parseObject(
+            source,
+            new TypeReference<List<AuthorityRule>>() {
+            }
+    );
+
+    private Converter<String, List<ParamFlowRule>> paramFlowRuleListParser = source -> JSON.parseObject(
+            source,
+            new TypeReference<List<ParamFlowRule>>() {
+            }
+    );
+
+    private void mkdirIfNotExits(String filePath) throws IOException {
+        File file = new File(filePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+    }
+
+    private void createFileIfNotExits(String filePath) throws IOException {
+        File file = new File(filePath);
+        if (!file.exists()) {
+            file.createNewFile();
+        }
+    }
+
+    private <T> String encodeJson(T t) {
+        return JSON.toJSONString(t);
+    }
+}

+ 16 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/config/RequestOriginParserDefinition.java

@@ -0,0 +1,16 @@
+package com.cloud.ssj.config;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.stereotype.Component;
+
+import com.alibaba.csp.sentinel.adapter.servlet.callback.RequestOriginParser;
+
+@Component
+public class RequestOriginParserDefinition implements RequestOriginParser {
+    @Override
+    public String parseOrigin(HttpServletRequest request) {
+        String resource = request.getParameter("resource");
+        return resource;
+    }
+}

+ 0 - 39
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/controller/InitController.java

@@ -1,39 +0,0 @@
-package com.cloud.ssj.controller;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.cloud.ssj.util.JsonResult;
-import com.cloud.ssj.util.ResultCode;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author Minbo
- */
-@RestController
-@Slf4j
-@Api(tags = { "init" })
-@RefreshScope
-public class InitController {
-
-	@Value("${spring.datasource.driver-class-name}")
-	private String appKey;
-
-	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
-	@GetMapping("/hello")
-	public String hello() {
-		log.info("microservice-alibaba-nacos-config");
-		return "Hello, greetings from microservice-alibaba-nacos-config";
-	}
-
-	@ApiOperation(value = "获得AppKey值", httpMethod = "GET")
-	@GetMapping("/getAppKey")
-	public JsonResult getAppKey() {
-		return new JsonResult(ResultCode.SUCCESS, this.appKey);
-	}
-}

+ 0 - 60
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/util/JsonResult.java

@@ -1,60 +0,0 @@
-package com.cloud.ssj.util;
-
-import net.sf.json.JSONObject;
-
-public class JsonResult {
-	private String code;
-	private String message;
-	private Object data;
-
-	public JsonResult() {
-		this.setCode(ResultCode.SUCCESS);
-		this.setMessage(ResultCode.SUCCESS.msg());
-	}
-
-	public JsonResult(ResultCode code) {
-		this.setCode(code);
-		this.setMessage(code.msg());
-	}
-
-	public JsonResult(ResultCode code, String data) {
-		this.setCode(code);
-		this.setMessage(code.msg());
-		this.setData(data);
-	}
-
-	public JsonResult(ResultCode code, Object data) {
-		this.setCode(code);
-		this.setMessage(code.msg());
-		this.setData(data);
-	}
-
-	public String getCode() {
-		return code;
-	}
-
-	public void setCode(ResultCode code) {
-		this.code = code.val();
-	}
-
-	public String getMessage() {
-		return message;
-	}
-
-	public void setMessage(String message) {
-		this.message = message;
-	}
-
-	public Object getData() {
-		return data;
-	}
-
-	public void setData(Object data) {
-		this.data = data;
-	}
-
-	public String toJsonString() {
-		JSONObject json = JSONObject.fromObject(this);
-		return json.toString();
-	}
-}

+ 0 - 36
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/util/ResultCode.java

@@ -1,36 +0,0 @@
-package com.cloud.ssj.util;
-
-public enum ResultCode {
-
-	/** 成功 */
-	SUCCESS("200", "成功"),
-
-	/** 数据为空 */
-	SUCCESS_NO_DATA("201", "数据为空"),
-
-	/** 用户不存在 */
-	SUCCESS_NO_USER("202", "用户不存在"),
-
-	/** 今天的量已经跑光了 */
-	SUCCESS_ALL_GONE("203", "今天的量已经跑光了"),
-
-	/** 失败,请重试 */
-	SUCCESS_FAIL("204", "失败,请重试");
-
-	private ResultCode(String val, String msg) {
-		this.val = val;
-		this.msg = msg;
-	}
-
-	public String val() {
-		return val;
-	}
-
-	public String msg() {
-		return msg;
-	}
-
-	private String val;
-	private String msg;
-
-}

+ 0 - 50
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/web/CustomHttpInterceptor.java

@@ -1,50 +0,0 @@
-package com.cloud.ssj.web;
-
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 拦截处理类
- * 
- * @author Minbo
- */
-@Component
-@Slf4j
-@RefreshScope
-public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
-
-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-			throws Exception {
-		long start = System.currentTimeMillis();
-		String url = request.getRequestURL().toString();
-		String method = request.getMethod();
-		String queryString = "";
-		// 去掉最后一个空格
-		Map<String, String[]> params = request.getParameterMap();
-		for (String key : params.keySet()) {
-			String[] values = params.get(key);
-			for (int i = 0; i < values.length; i++) {
-				String value = values[i];
-				queryString += key + "=" + value + "&";
-			}
-		}
-		// URL 参数
-		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
-
-		long end = System.currentTimeMillis();
-
-		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
-				(end - start) + ""));
-
-		return true;
-	}
-
-}

+ 0 - 60
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/web/SwaggerConfig.java

@@ -1,60 +0,0 @@
-package com.cloud.ssj.web;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class SwaggerConfig {
-
-	/**
-	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
-	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
-	 * 
-	 * @return
-	 */
-	@Bean
-	public Docket createRestApi() {
-		// 定义全局header参数
-		ParameterBuilder useridPar = new ParameterBuilder();
-		List<Parameter> pars = new ArrayList<>();
-		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
-				.parameterType("header").required(false).build();
-		pars.add(useridPar.build());
-
-		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
-				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
-				// .apis(RequestHandlerSelectors.any())
-				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
-				.globalOperationParameters(pars);
-	}
-
-	@SuppressWarnings("deprecation")
-	private ApiInfo apiInfo() {
-		return new ApiInfoBuilder()
-				// 标题
-				.title("在线接口测试平台:microservice-alibaba-nacos-config服务")
-				// 简介
-				.description("rest接口层:接口服务")
-				// 服务条款
-				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
-				// 作者个人信息
-				.contact("Minbo.He")
-				// 版本
-				.version("1.0").build();
-	}
-}

+ 0 - 44
ssj_aijia/ssj-aijia-common-config/src/main/java/com/cloud/ssj/web/WebConfig.java

@@ -1,44 +0,0 @@
-package com.cloud.ssj.web;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
-/**
- * 拦截器定义
- * 
- * @author Minbo.He
- */
-@Configuration
-public class WebConfig extends WebMvcConfigurationSupport {
-
-	// 让bean提前加载,让拦截器中的@Autowired生效
-	@Bean
-	public HandlerInterceptor getInterceptor() {
-		return new CustomHttpInterceptor();
-	}
-
-	@Override
-	public void addResourceHandlers(ResourceHandlerRegistry registry) {
-		// 解决 swagger-ui.html 404报错
-		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
-		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-
-		// 解决 doc.html 404 报错
-		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
-	}
-
-	/**
-	 * 可定义多个拦截器
-	 */
-	@Override
-	public void addInterceptors(InterceptorRegistry registry) {
-		// 定义过滤拦截的url名称,拦截所有请求
-		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
-		super.addInterceptors(registry);
-	}
-
-}

+ 47 - 0
ssj_aijia/ssj-aijia-common-config/src/main/resources/application.yml

@@ -0,0 +1,47 @@
+server:
+  port: 8091
+
+spring:
+  zipkin:
+    base-url: http://127.0.0.1:9411/  #zipkin server的请求地址
+    discoveryClientEnabled: false #让nacos把它当成一个URL,而不要当做服务名
+  sleuth:
+    sampler:
+      probability: 1.0  #采样的百分比
+  application:
+    name: service-config
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://127.0.0.1:3306/alibaba?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=UTC
+    username: root
+    password: 123456789
+  jpa:
+    properties:
+      hibernate:
+        hbm2ddl:
+          auto: update
+        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
+  cloud:
+    nacos:
+      discovery:
+        server-addr: localhost:8848
+    sentinel:
+      transport:
+        port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可
+        dashboard: localhost:8080 # 指定控制台服务的地址
+dubbo:
+  registry:
+    address: spring-cloud://localhost # 注册中心
+  cloud:
+    subscribed-services: service-stock  # 订阅的提供者名称
+  consumer:
+    check: false    #关闭服务提供者是否开启检查,解决先启动消费者报错的问题
+    timeout: 30000
+  provider:
+    timeout: 30000
+
+#rocketmq
+rocketmq:
+  name-server: 127.0.0.1:9876   #rocketMQ服务的地址
+  producer:
+    group: business-stock # 生产者组

+ 12 - 48
ssj_aijia/ssj-aijia-common-config/src/main/resources/bootstrap.yaml

@@ -1,48 +1,12 @@
-server:
-   port: 9091
-
-spring:
-   application:
-      name: ssj-aijia-common-config
-   profiles:
-      active: dev
-   cloud:
-      nacos:
-         discovery:
-            server-addr: 127.0.0.1:8848
-            namespace: c651f019-616d-43c7-8e60-73c63c4b3fb7
-         config:
-            server-addr: 127.0.0.1:8848
-            namespace: c651f019-616d-43c7-8e60-73c63c4b3fb7
-            file-extension: properties
-            shared-dataids: ssj-aijia-common-config.properties
-            refreshable-dataids: ssj-aijia-common-config.properties
-   datasource:
-      driverClassName: ${config.datasource.driverClassName}
-      url: ${config.datasource.url}
-      username: ${config.datasource.username}
-      password: ${config.datasource.password}
-      hikari:
-         initial-size: ${config.datasource.initialSize}
-         minimum-idle: ${config.datasource.minIdle}
-         maximum-pool-size: ${config.datasource.maxActive}
-         auto-commit: true
-         idle-timeout: 20000
-         pool-name: MyHikarifMain
-         max-lifetime: 1800000
-         connection-timeout: 20000
-         connection-test-query: SELECT 1
-         validation-timeout: 5000
-   redis:
-      host: ${config.redis.host}
-      port: ${config.redis.port}
-      password: ${config.redis.password}
-      pool:
-         max-idle: ${config.redis.pool.max-idle}
-         min-idle: ${config.redis.pool.min-idle}
-         max-active: ${config.redis.pool.max-active}
-         max-wait: ${config.redis.pool.max-wait}
-      timeout: ${config.redis.timeout}
-      commandTimeout: ${config.redis.commandTimeout}
-            
-            
+spring:
+  application:
+    name: service-config
+  cloud:
+    nacos:
+      config:
+        server-addr: localhost:8848 # nacos的服务端地址
+        namespace: public
+        group: DEFAULT_GROUP
+    alibaba:
+      seata:
+        tx-service-group: service-config

+ 16 - 0
ssj_aijia/ssj-aijia-common-config/src/main/resources/registry.conf

@@ -0,0 +1,16 @@
+registry {
+ type = "nacos"
+ nacos {
+   serverAddr = "localhost"
+   namespace = "public"
+   cluster = "default"
+ }
+}
+config {
+ type = "nacos"
+ nacos {
+   serverAddr = "localhost"
+   namespace = "public"
+   cluster = "default"
+ }
+}

+ 40 - 47
ssj_aijia/ssj-aijia-common-model/pom.xml

@@ -1,53 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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>
+         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">
+    
+    <parent>
+        <artifactId>ssj-aijia</artifactId>
+        <groupId>com.cloud.ssj</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-	<artifactId>ssj-aijia-common-model</artifactId>
-	<packaging>jar</packaging>
+    <artifactId>ssj-aijia-common-model</artifactId>
 
-	<parent>
-		<groupId>com.minbo.cloud.alibaba</groupId>
-		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-	</parent>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger2</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger-ui</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.github.xiaoymin</groupId>
-			<artifactId>swagger-bootstrap-ui</artifactId>
-		</dependency>
-		<!-- 服务注册发现功能 -->
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-		</dependency>
-	</dependencies>
+    <!--依赖-->
+    <dependencies>
+        <!--shop-common-->
+<!--         <dependency> -->
+<!--             <groupId>top.glory</groupId> -->
+<!--             <artifactId>glory-common</artifactId> -->
+<!--             <version>1.0-SNAPSHOT</version> -->
+<!--         </dependency> -->
+        
+        
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.56</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+        </dependency>
+    </dependencies>
 
-	<build>
-		<finalName>microservice-alibaba-nacos-discovery</finalName>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-</project>
+</project>

+ 23 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/cloud/ssj/entity/Book.java

@@ -0,0 +1,23 @@
+package com.cloud.ssj.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import lombok.Data;
+
+//图书
+@Entity(name = "book")
+@Data
+public class Book implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Integer id;//主键
+
+    private String bookname;//图书名称
+    private Double price;//图书价格
+    private Integer stocknum;//图书库存
+}

+ 28 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/cloud/ssj/entity/Order.java

@@ -0,0 +1,28 @@
+package com.cloud.ssj.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import lombok.Data;
+
+//订单
+@Entity(name = "orders")
+@Data
+public class Order implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Integer id;//订单id
+
+    private Integer userid;//用户id
+    private String username;//用户名
+
+    private Integer bookid;//商品id
+    private String bookname;//商品名称
+    private Double price;//商品单价
+
+    private Integer booknum;//购买数量
+}

+ 25 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/cloud/ssj/entity/User.java

@@ -0,0 +1,25 @@
+package com.cloud.ssj.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import lombok.Data;
+
+//用户
+@Entity(name = "user")//实体类跟数据表的对应
+@Data//不再去写set和get方法
+public class User implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增
+
+    private Integer id;//主键
+    private String username;//用户名
+    private String password;//密码
+    private String phone;//手机号
+    private Date birthday;//生日
+}

+ 0 - 24
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -1,24 +0,0 @@
-package com.minbo.cloud.alibaba;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
-
-/**
- * 程序主入口
- * 
- * @author Minbo
- *
- */
-@SpringBootApplication
-@EnableSwaggerBootstrapUI
-@EnableDiscoveryClient
-public class Application {
-
-	public static void main(String[] args) {
-		SpringApplication.run(Application.class, args);
-	}
-
-}

+ 0 - 30
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -1,30 +0,0 @@
-package com.minbo.cloud.alibaba.controller;
-
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author Minbo
- */
-@RestController
-@Slf4j
-@Api(tags = { "init" })
-public class InitController {
-
-	/**
-	 * http://localhost:9090/hello
-	 * 
-	 * @return
-	 */
-	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
-	@GetMapping("/hello")
-	public String hello() {
-		log.info("microservice-alibaba-nacos-discovery");
-		return "Hello, greetings from microservice-alibaba-nacos-discovery";
-	}
-
-}

+ 0 - 50
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -1,50 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 拦截处理类
- * 
- * @author Minbo
- */
-@Component
-@Slf4j
-@RefreshScope
-public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
-
-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-			throws Exception {
-		long start = System.currentTimeMillis();
-		String url = request.getRequestURL().toString();
-		String method = request.getMethod();
-		String queryString = "";
-		// 去掉最后一个空格
-		Map<String, String[]> params = request.getParameterMap();
-		for (String key : params.keySet()) {
-			String[] values = params.get(key);
-			for (int i = 0; i < values.length; i++) {
-				String value = values[i];
-				queryString += key + "=" + value + "&";
-			}
-		}
-		// URL 参数
-		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
-
-		long end = System.currentTimeMillis();
-
-		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
-				(end - start) + ""));
-
-		return true;
-	}
-
-}

+ 0 - 60
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -1,60 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class SwaggerConfig {
-
-	/**
-	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
-	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
-	 * 
-	 * @return
-	 */
-	@Bean
-	public Docket createRestApi() {
-		// 定义全局header参数
-		ParameterBuilder useridPar = new ParameterBuilder();
-		List<Parameter> pars = new ArrayList<>();
-		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
-				.parameterType("header").required(false).build();
-		pars.add(useridPar.build());
-
-		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
-				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
-				// .apis(RequestHandlerSelectors.any())
-				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
-				.globalOperationParameters(pars);
-	}
-
-	@SuppressWarnings("deprecation")
-	private ApiInfo apiInfo() {
-		return new ApiInfoBuilder()
-				// 标题
-				.title("在线接口测试平台:microservice-alibaba-nacos-discovery服务")
-				// 简介
-				.description("rest接口层:接口服务")
-				// 服务条款
-				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
-				// 作者个人信息
-				.contact("Minbo.He")
-				// 版本
-				.version("1.0").build();
-	}
-}

+ 0 - 44
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -1,44 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
-/**
- * 拦截器定义
- * 
- * @author Minbo.He
- */
-@Configuration
-public class WebConfig extends WebMvcConfigurationSupport {
-
-	// 让bean提前加载,让拦截器中的@Autowired生效
-	@Bean
-	public HandlerInterceptor getInterceptor() {
-		return new CustomHttpInterceptor();
-	}
-
-	@Override
-	public void addResourceHandlers(ResourceHandlerRegistry registry) {
-		// 解决 swagger-ui.html 404报错
-		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
-		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-
-		// 解决 doc.html 404 报错
-		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
-	}
-
-	/**
-	 * 可定义多个拦截器
-	 */
-	@Override
-	public void addInterceptors(InterceptorRegistry registry) {
-		// 定义过滤拦截的url名称,拦截所有请求
-		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
-		super.addInterceptors(registry);
-	}
-
-}

+ 0 - 13
ssj_aijia/ssj-aijia-common-model/src/main/resources/bootstrap.yaml

@@ -1,13 +0,0 @@
-spring:
-   application:
-      name: microservice-alibaba-nacos-discovery
-   profiles:
-      active: dev
-   cloud:
-      nacos:
-         discovery:
-            server-addr: 127.0.0.1:8848
-            namespace: 2bc5565f-453f-4b1c-bde4-eafe23bdb2f0
-# server
-server:
-   port: 9090

+ 0 - 42
ssj_aijia/ssj-aijia-common-model/src/main/resources/logback.xml

@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
-	<!-- 控制台输出配置 -->
-	<appender name="STDOUT"
-		class="ch.qos.logback.core.ConsoleAppender">
-		<encoder>
-			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
-			<charset>UTF-8</charset>
-		</encoder>
-	</appender>
-	<!-- 日志文件配置 -->
-	<appender name="baselog"
-		class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<File>log/run.log</File>
-		<rollingPolicy
-			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
-			<timeBasedFileNamingAndTriggeringPolicy
-				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-				<!-- 每一个日志文件最大size -->
-				<maxFileSize>64 MB</maxFileSize>
-			</timeBasedFileNamingAndTriggeringPolicy>
-			<!-- 保留天数 -->
-			<maxHistory>7</maxHistory>
-			<cleanHistoryOnStart>true</cleanHistoryOnStart>
-		</rollingPolicy>
-		<encoder>
-			<pattern>
-				%d [%t] [%c] [%p] (%file:%line\)- %m%n
-			</pattern>
-			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
-		</encoder>
-	</appender>
-	<root level="INFO">
-		<appender-ref ref="STDOUT" />
-	</root>
-	<!-- 定义日志输出的package包名 -->
-	<logger name="com.minbo" level="DEBUG">
-		<appender-ref ref="baselog" />
-	</logger>
-</configuration>

+ 34 - 0
ssj_aijia/ssj-aijia-common-service/README.md

@@ -0,0 +1,34 @@
+# microservice-alibaba-nacos-discovery
+
+【项目中快速集成配置中心Nacos-服务注册发现功能】技术点
+
+功能介绍
+
+1. 项目中快速集成配置中心Nacos-服务注册发现功能
+
+## 本项目教程
+
+[项目中快速集成配置中心Nacos-服务注册发现功能](https://hemin.blog.csdn.net/article/details/105517927)
+
+## 该系列教程
+
+[SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## 个人说明
+
+期望和大家”一起学习,一起成长“,共勉,O(∩_∩)O谢谢
+
+不讲虚的,只做实干家
+
+Talk is cheap,show me the code
+
+<br/>
+
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或Q群号 751925591,一起探讨交流问题
+
+[我的博客地址](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)

+ 44 - 0
ssj_aijia/ssj-aijia-common-service/pom.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <parent>
+        <artifactId>ssj-aijia</artifactId>
+        <groupId>com.cloud.ssj</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ssj-aijia-common-service</artifactId>
+
+
+    <!--依赖-->
+    <dependencies>
+        <!--shop-common-->
+        <dependency>
+            <groupId>com.cloud.ssj</groupId>
+            <artifactId>ssj-aijia-common-model</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.56</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 11 - 0
ssj_aijia/ssj-aijia-common-service/src/main/java/com/cloud/ssj/service/BooKService.java

@@ -0,0 +1,11 @@
+package com.cloud.ssj.service;
+
+import com.cloud.ssj.entity.Book;
+
+public interface BooKService {
+
+    //通过id获取图书信息
+    Book getBookById(Integer id);
+
+    void inventoryBookStock(Integer bookId, Integer num);
+}

+ 10 - 0
ssj_aijia/ssj-aijia-common-service/src/main/java/com/cloud/ssj/service/OrderService.java

@@ -0,0 +1,10 @@
+package com.cloud.ssj.service;
+
+import com.cloud.ssj.entity.Order;
+
+public interface OrderService {
+
+    Order saveOrderInfo(Order order);
+
+    Order saveOrderInfo2(Integer bookId);
+}

+ 38 - 47
ssj_aijia/ssj-aijia-common-utils/pom.xml

@@ -1,53 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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>
+         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">
+    <parent>
+        <artifactId>ssj-aijia</artifactId>
+        <groupId>com.cloud.ssj</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-	<artifactId>ssj-aijia-common-utils</artifactId>
-	<packaging>jar</packaging>
+    <artifactId>ssj-aijia-common-utils</artifactId>
 
-	<parent>
-		<groupId>com.minbo.cloud.alibaba</groupId>
-		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-	</parent>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger2</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger-ui</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.github.xiaoymin</groupId>
-			<artifactId>swagger-bootstrap-ui</artifactId>
-		</dependency>
-		<!-- 服务注册发现功能 -->
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-		</dependency>
-	</dependencies>
+    <!--依赖-->
+    <dependencies>
+        <!--shop-common-->
+        <dependency>
+            <groupId>com.cloud.ssj</groupId>
+            <artifactId>ssj-aijia-common-model</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.56</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+        </dependency>
+    </dependencies>
 
-	<build>
-		<finalName>microservice-alibaba-nacos-discovery</finalName>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-</project>
+</project>

+ 0 - 24
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -1,24 +0,0 @@
-package com.minbo.cloud.alibaba;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
-
-/**
- * 程序主入口
- * 
- * @author Minbo
- *
- */
-@SpringBootApplication
-@EnableSwaggerBootstrapUI
-@EnableDiscoveryClient
-public class Application {
-
-	public static void main(String[] args) {
-		SpringApplication.run(Application.class, args);
-	}
-
-}

+ 0 - 30
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -1,30 +0,0 @@
-package com.minbo.cloud.alibaba.controller;
-
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author Minbo
- */
-@RestController
-@Slf4j
-@Api(tags = { "init" })
-public class InitController {
-
-	/**
-	 * http://localhost:9090/hello
-	 * 
-	 * @return
-	 */
-	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
-	@GetMapping("/hello")
-	public String hello() {
-		log.info("microservice-alibaba-nacos-discovery");
-		return "Hello, greetings from microservice-alibaba-nacos-discovery";
-	}
-
-}

+ 0 - 50
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -1,50 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 拦截处理类
- * 
- * @author Minbo
- */
-@Component
-@Slf4j
-@RefreshScope
-public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
-
-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-			throws Exception {
-		long start = System.currentTimeMillis();
-		String url = request.getRequestURL().toString();
-		String method = request.getMethod();
-		String queryString = "";
-		// 去掉最后一个空格
-		Map<String, String[]> params = request.getParameterMap();
-		for (String key : params.keySet()) {
-			String[] values = params.get(key);
-			for (int i = 0; i < values.length; i++) {
-				String value = values[i];
-				queryString += key + "=" + value + "&";
-			}
-		}
-		// URL 参数
-		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
-
-		long end = System.currentTimeMillis();
-
-		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
-				(end - start) + ""));
-
-		return true;
-	}
-
-}

+ 0 - 60
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -1,60 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class SwaggerConfig {
-
-	/**
-	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
-	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
-	 * 
-	 * @return
-	 */
-	@Bean
-	public Docket createRestApi() {
-		// 定义全局header参数
-		ParameterBuilder useridPar = new ParameterBuilder();
-		List<Parameter> pars = new ArrayList<>();
-		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
-				.parameterType("header").required(false).build();
-		pars.add(useridPar.build());
-
-		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
-				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
-				// .apis(RequestHandlerSelectors.any())
-				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
-				.globalOperationParameters(pars);
-	}
-
-	@SuppressWarnings("deprecation")
-	private ApiInfo apiInfo() {
-		return new ApiInfoBuilder()
-				// 标题
-				.title("在线接口测试平台:microservice-alibaba-nacos-discovery服务")
-				// 简介
-				.description("rest接口层:接口服务")
-				// 服务条款
-				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
-				// 作者个人信息
-				.contact("Minbo.He")
-				// 版本
-				.version("1.0").build();
-	}
-}

+ 0 - 44
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -1,44 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
-/**
- * 拦截器定义
- * 
- * @author Minbo.He
- */
-@Configuration
-public class WebConfig extends WebMvcConfigurationSupport {
-
-	// 让bean提前加载,让拦截器中的@Autowired生效
-	@Bean
-	public HandlerInterceptor getInterceptor() {
-		return new CustomHttpInterceptor();
-	}
-
-	@Override
-	public void addResourceHandlers(ResourceHandlerRegistry registry) {
-		// 解决 swagger-ui.html 404报错
-		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
-		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-
-		// 解决 doc.html 404 报错
-		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
-	}
-
-	/**
-	 * 可定义多个拦截器
-	 */
-	@Override
-	public void addInterceptors(InterceptorRegistry registry) {
-		// 定义过滤拦截的url名称,拦截所有请求
-		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
-		super.addInterceptors(registry);
-	}
-
-}

+ 0 - 13
ssj_aijia/ssj-aijia-common-utils/src/main/resources/bootstrap.yaml

@@ -1,13 +0,0 @@
-spring:
-   application:
-      name: microservice-alibaba-nacos-discovery
-   profiles:
-      active: dev
-   cloud:
-      nacos:
-         discovery:
-            server-addr: 127.0.0.1:8848
-            namespace: 2bc5565f-453f-4b1c-bde4-eafe23bdb2f0
-# server
-server:
-   port: 9090

+ 0 - 42
ssj_aijia/ssj-aijia-common-utils/src/main/resources/logback.xml

@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
-	<!-- 控制台输出配置 -->
-	<appender name="STDOUT"
-		class="ch.qos.logback.core.ConsoleAppender">
-		<encoder>
-			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
-			<charset>UTF-8</charset>
-		</encoder>
-	</appender>
-	<!-- 日志文件配置 -->
-	<appender name="baselog"
-		class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<File>log/run.log</File>
-		<rollingPolicy
-			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
-			<timeBasedFileNamingAndTriggeringPolicy
-				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-				<!-- 每一个日志文件最大size -->
-				<maxFileSize>64 MB</maxFileSize>
-			</timeBasedFileNamingAndTriggeringPolicy>
-			<!-- 保留天数 -->
-			<maxHistory>7</maxHistory>
-			<cleanHistoryOnStart>true</cleanHistoryOnStart>
-		</rollingPolicy>
-		<encoder>
-			<pattern>
-				%d [%t] [%c] [%p] (%file:%line\)- %m%n
-			</pattern>
-			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
-		</encoder>
-	</appender>
-	<root level="INFO">
-		<appender-ref ref="STDOUT" />
-	</root>
-	<!-- 定义日志输出的package包名 -->
-	<logger name="com.minbo" level="DEBUG">
-		<appender-ref ref="baselog" />
-	</logger>
-</configuration>

+ 0 - 0
ssj_aijia/ssj-aijia-sys/log/run.log


+ 49 - 47
ssj_aijia/ssj-aijia-sys/pom.xml

@@ -1,53 +1,55 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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>
+         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">
+    <parent>
+        <artifactId>ssj-aijia</artifactId>
+        <groupId>com.cloud.ssj</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-	<artifactId>ssj-aijia-sys</artifactId>
-	<packaging>jar</packaging>
+    <artifactId>ssj-aijia-sys</artifactId>
 
-	<parent>
-		<groupId>com.minbo.cloud.alibaba</groupId>
-		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-	</parent>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger2</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger-ui</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.github.xiaoymin</groupId>
-			<artifactId>swagger-bootstrap-ui</artifactId>
-		</dependency>
-		<!-- 服务注册发现功能 -->
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-		</dependency>
-	</dependencies>
+    <!--依赖-->
+    <dependencies>
+        <!--shop-common-->
+        <dependency>
+            <groupId>com.cloud.ssj</groupId>
+            <artifactId>ssj-aijia-common-config</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.cloud.ssj</groupId>
+            <artifactId>ssj-aijia-common-model</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.56</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+        </dependency>
+    </dependencies>
 
-	<build>
-		<finalName>microservice-alibaba-nacos-discovery</finalName>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-</project>
+</project>

+ 13 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/cloud/ssj/SysApplication.java

@@ -0,0 +1,13 @@
+package com.cloud.ssj;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient  //注册到注册中心
+public class SysApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(SysApplication.class);
+    }
+}

+ 27 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/cloud/ssj/controller/TestController.java

@@ -0,0 +1,27 @@
+package com.cloud.ssj.controller;
+
+import org.apache.dubbo.config.annotation.Reference;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.cloud.ssj.entity.Book;
+import com.cloud.ssj.service.BooKService;
+
+@RestController
+public class TestController {
+
+    @Reference
+    private BooKService booKService;
+
+    @RequestMapping("/test")
+    public String test(){
+        return "hello world";
+    }
+
+
+    @RequestMapping("/testDubbo")
+    public Book testDubbo(){
+        Book book = booKService.getBookById(2);
+        return book;
+    }
+}

+ 0 - 24
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -1,24 +0,0 @@
-package com.minbo.cloud.alibaba;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
-
-/**
- * 程序主入口
- * 
- * @author Minbo
- *
- */
-@SpringBootApplication
-@EnableSwaggerBootstrapUI
-@EnableDiscoveryClient
-public class Application {
-
-	public static void main(String[] args) {
-		SpringApplication.run(Application.class, args);
-	}
-
-}

+ 0 - 30
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -1,30 +0,0 @@
-package com.minbo.cloud.alibaba.controller;
-
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author Minbo
- */
-@RestController
-@Slf4j
-@Api(tags = { "init" })
-public class InitController {
-
-	/**
-	 * http://localhost:9090/hello
-	 * 
-	 * @return
-	 */
-	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
-	@GetMapping("/hello")
-	public String hello() {
-		log.info("microservice-alibaba-nacos-discovery");
-		return "Hello, greetings from microservice-alibaba-nacos-discovery";
-	}
-
-}

+ 0 - 50
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -1,50 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 拦截处理类
- * 
- * @author Minbo
- */
-@Component
-@Slf4j
-@RefreshScope
-public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
-
-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-			throws Exception {
-		long start = System.currentTimeMillis();
-		String url = request.getRequestURL().toString();
-		String method = request.getMethod();
-		String queryString = "";
-		// 去掉最后一个空格
-		Map<String, String[]> params = request.getParameterMap();
-		for (String key : params.keySet()) {
-			String[] values = params.get(key);
-			for (int i = 0; i < values.length; i++) {
-				String value = values[i];
-				queryString += key + "=" + value + "&";
-			}
-		}
-		// URL 参数
-		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
-
-		long end = System.currentTimeMillis();
-
-		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
-				(end - start) + ""));
-
-		return true;
-	}
-
-}

+ 0 - 60
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -1,60 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class SwaggerConfig {
-
-	/**
-	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
-	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
-	 * 
-	 * @return
-	 */
-	@Bean
-	public Docket createRestApi() {
-		// 定义全局header参数
-		ParameterBuilder useridPar = new ParameterBuilder();
-		List<Parameter> pars = new ArrayList<>();
-		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
-				.parameterType("header").required(false).build();
-		pars.add(useridPar.build());
-
-		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
-				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
-				// .apis(RequestHandlerSelectors.any())
-				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
-				.globalOperationParameters(pars);
-	}
-
-	@SuppressWarnings("deprecation")
-	private ApiInfo apiInfo() {
-		return new ApiInfoBuilder()
-				// 标题
-				.title("在线接口测试平台:microservice-alibaba-nacos-discovery服务")
-				// 简介
-				.description("rest接口层:接口服务")
-				// 服务条款
-				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
-				// 作者个人信息
-				.contact("Minbo.He")
-				// 版本
-				.version("1.0").build();
-	}
-}

+ 0 - 44
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -1,44 +0,0 @@
-package com.minbo.cloud.alibaba.web;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
-/**
- * 拦截器定义
- * 
- * @author Minbo.He
- */
-@Configuration
-public class WebConfig extends WebMvcConfigurationSupport {
-
-	// 让bean提前加载,让拦截器中的@Autowired生效
-	@Bean
-	public HandlerInterceptor getInterceptor() {
-		return new CustomHttpInterceptor();
-	}
-
-	@Override
-	public void addResourceHandlers(ResourceHandlerRegistry registry) {
-		// 解决 swagger-ui.html 404报错
-		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
-		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-
-		// 解决 doc.html 404 报错
-		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
-	}
-
-	/**
-	 * 可定义多个拦截器
-	 */
-	@Override
-	public void addInterceptors(InterceptorRegistry registry) {
-		// 定义过滤拦截的url名称,拦截所有请求
-		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
-		super.addInterceptors(registry);
-	}
-
-}

+ 47 - 0
ssj_aijia/ssj-aijia-sys/src/main/resources/application.yml

@@ -0,0 +1,47 @@
+server:
+  port: 8091
+
+spring:
+  zipkin:
+    base-url: http://127.0.0.1:9411/  #zipkin server的请求地址
+    discoveryClientEnabled: false #让nacos把它当成一个URL,而不要当做服务名
+  sleuth:
+    sampler:
+      probability: 1.0  #采样的百分比
+  application:
+    name: service-sys
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://127.0.0.1:3306/alibaba?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=UTC
+    username: root
+    password: 123456789
+  jpa:
+    properties:
+      hibernate:
+        hbm2ddl:
+          auto: update
+        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
+  cloud:
+    nacos:
+      discovery:
+        server-addr: localhost:8848
+    sentinel:
+      transport:
+        port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可
+        dashboard: localhost:8080 # 指定控制台服务的地址
+dubbo:
+  registry:
+    address: spring-cloud://localhost # 注册中心
+  cloud:
+    subscribed-services: service-stock  # 订阅的提供者名称
+  consumer:
+    check: false    #关闭服务提供者是否开启检查,解决先启动消费者报错的问题
+    timeout: 30000
+  provider:
+    timeout: 30000
+
+#rocketmq
+rocketmq:
+  name-server: 127.0.0.1:9876   #rocketMQ服务的地址
+  producer:
+    group: business-stock # 生产者组

+ 12 - 13
ssj_aijia/ssj-aijia-sys/src/main/resources/bootstrap.yaml

@@ -1,13 +1,12 @@
-spring:
-   application:
-      name: microservice-alibaba-nacos-discovery
-   profiles:
-      active: dev
-   cloud:
-      nacos:
-         discovery:
-            server-addr: 127.0.0.1:8848
-            namespace: 2bc5565f-453f-4b1c-bde4-eafe23bdb2f0
-# server
-server:
-   port: 9090
+spring:
+  application:
+    name: service-config
+  cloud:
+    nacos:
+      config:
+        server-addr: localhost:8848 # nacos的服务端地址
+        namespace: public
+        group: DEFAULT_GROUP
+    alibaba:
+      seata:
+        tx-service-group: service-sys