diff --git a/pom.xml b/pom.xml
index 292ae495..650baa86 100644
--- a/pom.xml
+++ b/pom.xml
@@ -224,6 +224,7 @@
ruoyi-modules
ruoyi-api
ruoyi-common
+ xuexi-parent
pom
diff --git a/xuexi-parent/cloud-common/pom.xml b/xuexi-parent/cloud-common/pom.xml
new file mode 100644
index 00000000..ecf25936
--- /dev/null
+++ b/xuexi-parent/cloud-common/pom.xml
@@ -0,0 +1,43 @@
+
+
+ 4.0.0
+
+
+ xuexi-parent
+ com.ruoyi
+ 2.5.0
+
+
+ cloud-common
+
+
+ 11
+ 11
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.56
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
\ No newline at end of file
diff --git a/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/Order.java b/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/Order.java
new file mode 100644
index 00000000..81d6e4c5
--- /dev/null
+++ b/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/Order.java
@@ -0,0 +1,27 @@
+package com.ybk.domain;
+
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity(name = "shop_order")
+@Data
+public class Order {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long oid;
+
+ private Integer uid;
+ private String username;
+
+
+ private Integer pid;
+ private String pname;
+ private Double pprice;//价格
+ private String stock; //库存
+
+ private Integer number;//购买数量
+}
diff --git a/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/Product.java b/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/Product.java
new file mode 100644
index 00000000..a660beef
--- /dev/null
+++ b/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/Product.java
@@ -0,0 +1,19 @@
+package com.ybk.domain;
+
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity(name = "shop_product")
+@Data
+public class Product {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Integer pid;
+ private String pname;
+ private Double pprice;//价格
+ private String stock; //库存
+}
diff --git a/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/User.java b/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/User.java
new file mode 100644
index 00000000..8e34f153
--- /dev/null
+++ b/xuexi-parent/cloud-common/src/main/java/com/ybk/domain/User.java
@@ -0,0 +1,19 @@
+package com.ybk.domain;
+
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity(name = "shop_user")
+@Data
+public class User {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Integer uid;
+ private String username;
+ private String password;
+ private String telephone;
+}
diff --git a/xuexi-parent/cloud-order/pom.xml b/xuexi-parent/cloud-order/pom.xml
new file mode 100644
index 00000000..db88d464
--- /dev/null
+++ b/xuexi-parent/cloud-order/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+
+ xuexi-parent
+ com.ruoyi
+ 2.5.0
+
+
+ cloud-order
+
+
+ 11
+ 11
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ com.ruoyi
+ cloud-common
+ 2.5.0
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
\ No newline at end of file
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/OrderApplication.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/OrderApplication.java
new file mode 100644
index 00000000..9d7600fe
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/OrderApplication.java
@@ -0,0 +1,28 @@
+package com.ybk;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@EnableDiscoveryClient //开启ribbon
+@EnableFeignClients //开启Feign
+public class OrderApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(OrderApplication.class);
+ }
+
+ @Bean
+ @LoadBalanced
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
+
+}
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/controller/OrderController.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/controller/OrderController.java
new file mode 100644
index 00000000..2f843869
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/controller/OrderController.java
@@ -0,0 +1,41 @@
+package com.ybk.controller;
+
+import com.ybk.domain.Product;
+import com.ybk.service.ProductService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+@RestController
+public class OrderController {
+
+
+ @Autowired
+ private RestTemplate restTemplate;
+ @Autowired
+ private DiscoveryClient discoveryClient;
+ @Autowired
+ private ProductService productService;
+
+ @RequestMapping(value = "/product/{pid}")
+ public void order(@PathVariable("pid") Integer pid) {
+ System.out.println("调用下单服务成功---" + pid);
+ List instances = discoveryClient.getInstances("servier-product");
+ // ServiceInstance serviceInstance = instances.get(0);
+ // Product forObject = restTemplate.getForObject("http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/product/" + pid, Product.class);
+ // System.out.println("查询到商品信息---" + forObject);
+
+ //ribbon实现负载均衡
+ // Product forObject1 = restTemplate.getForObject("http://servier-product/product/" + pid, Product.class);
+ //System.out.println("查询到商品信息11---" + forObject1);
+
+ Product product = productService.findProduct(pid);
+ System.out.println("查询到商品信息11---" + product);
+ }
+}
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/dao/OrderDao.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/dao/OrderDao.java
new file mode 100644
index 00000000..ad8a7385
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/dao/OrderDao.java
@@ -0,0 +1,7 @@
+package com.ybk.dao;
+
+import com.ybk.domain.Order;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface OrderDao extends JpaRepository {
+}
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/service/OrderService.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/OrderService.java
new file mode 100644
index 00000000..f6145f34
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/OrderService.java
@@ -0,0 +1,4 @@
+package com.ybk.service;
+
+public interface OrderService {
+}
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/service/ProductService.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/ProductService.java
new file mode 100644
index 00000000..b3955979
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/ProductService.java
@@ -0,0 +1,14 @@
+package com.ybk.service;
+
+import com.ybk.domain.Product;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@FeignClient(value = "servier-product",
+ fallback = ProductServiceFallback.class)
+public interface ProductService {
+
+ @RequestMapping("/product/{pid}")
+ Product findProduct(@PathVariable("pid") Integer pid);
+}
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/service/ProductServiceFallback.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/ProductServiceFallback.java
new file mode 100644
index 00000000..f0d70632
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/ProductServiceFallback.java
@@ -0,0 +1,18 @@
+package com.ybk.service;
+
+import com.ybk.domain.Product;
+import org.springframework.stereotype.Service;
+
+/**
+ *容错类
+ */
+@Service
+public class ProductServiceFallback implements ProductService{
+
+ @Override
+ public Product findProduct(Integer pid) {
+ //容错逻辑
+ Product product = new Product();
+ return product;
+ }
+}
diff --git a/xuexi-parent/cloud-order/src/main/java/com/ybk/service/impl/OrderServiceImpl.java b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/impl/OrderServiceImpl.java
new file mode 100644
index 00000000..a95bf6fa
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/java/com/ybk/service/impl/OrderServiceImpl.java
@@ -0,0 +1,8 @@
+package com.ybk.service.impl;
+
+import com.ybk.service.OrderService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class OrderServiceImpl implements OrderService {
+}
diff --git a/xuexi-parent/cloud-order/src/main/resources/application.yml b/xuexi-parent/cloud-order/src/main/resources/application.yml
new file mode 100644
index 00000000..29f56d57
--- /dev/null
+++ b/xuexi-parent/cloud-order/src/main/resources/application.yml
@@ -0,0 +1,24 @@
+server:
+ port: 8091
+spring:
+ application:
+ name: servier-order
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://192.168.50.129:3306/xuexi-parent?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+ username: root
+ password: root
+ jpa:
+ hibernate:
+ ddl-auto: update
+ database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.50.129:8848/
+servier-product:
+ ribbon:
+ NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
+feign:
+ sentinel:
+ enabled: true
\ No newline at end of file
diff --git a/xuexi-parent/cloud-product/pom.xml b/xuexi-parent/cloud-product/pom.xml
new file mode 100644
index 00000000..26854e55
--- /dev/null
+++ b/xuexi-parent/cloud-product/pom.xml
@@ -0,0 +1,34 @@
+
+
+ 4.0.0
+
+ xuexi-parent
+ com.ruoyi
+ 2.5.0
+
+
+ cloud-product
+
+
+ 11
+ 11
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.ruoyi
+ cloud-common
+ 2.5.0
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
\ No newline at end of file
diff --git a/xuexi-parent/cloud-product/src/main/java/com/ybk/ProductApplication.java b/xuexi-parent/cloud-product/src/main/java/com/ybk/ProductApplication.java
new file mode 100644
index 00000000..dfa78a2c
--- /dev/null
+++ b/xuexi-parent/cloud-product/src/main/java/com/ybk/ProductApplication.java
@@ -0,0 +1,15 @@
+package com.ybk;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+public class ProductApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ProductApplication.class);
+ }
+}
diff --git a/xuexi-parent/cloud-product/src/main/java/com/ybk/controller/ProductController.java b/xuexi-parent/cloud-product/src/main/java/com/ybk/controller/ProductController.java
new file mode 100644
index 00000000..967d90f9
--- /dev/null
+++ b/xuexi-parent/cloud-product/src/main/java/com/ybk/controller/ProductController.java
@@ -0,0 +1,19 @@
+package com.ybk.controller;
+
+import com.ybk.domain.Product;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ProductController {
+
+ @RequestMapping(value = "/product/{pid}")
+ public Product product(@PathVariable("pid") Integer pid) {
+ System.out.println("调用商品服务成功---" + pid);
+ Product product = new Product();
+ product.setPid(pid);
+ product.setPname("测试商品");
+ return product;
+ }
+}
diff --git a/xuexi-parent/cloud-product/src/main/java/com/ybk/dao/ProductDao.java b/xuexi-parent/cloud-product/src/main/java/com/ybk/dao/ProductDao.java
new file mode 100644
index 00000000..61227476
--- /dev/null
+++ b/xuexi-parent/cloud-product/src/main/java/com/ybk/dao/ProductDao.java
@@ -0,0 +1,8 @@
+package com.ybk.dao;
+
+import com.ybk.domain.Product;
+import com.ybk.domain.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ProductDao extends JpaRepository {
+}
diff --git a/xuexi-parent/cloud-product/src/main/java/com/ybk/service/ProductService.java b/xuexi-parent/cloud-product/src/main/java/com/ybk/service/ProductService.java
new file mode 100644
index 00000000..bc15d43f
--- /dev/null
+++ b/xuexi-parent/cloud-product/src/main/java/com/ybk/service/ProductService.java
@@ -0,0 +1,4 @@
+package com.ybk.service;
+
+public interface ProductService {
+}
diff --git a/xuexi-parent/cloud-product/src/main/java/com/ybk/service/impl/ProductServiceImpl.java b/xuexi-parent/cloud-product/src/main/java/com/ybk/service/impl/ProductServiceImpl.java
new file mode 100644
index 00000000..41388bbd
--- /dev/null
+++ b/xuexi-parent/cloud-product/src/main/java/com/ybk/service/impl/ProductServiceImpl.java
@@ -0,0 +1,8 @@
+package com.ybk.service.impl;
+
+import com.ybk.service.ProductService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ProductServiceImpl implements ProductService {
+}
diff --git a/xuexi-parent/cloud-product/src/main/resources/application.yml b/xuexi-parent/cloud-product/src/main/resources/application.yml
new file mode 100644
index 00000000..1e4714fa
--- /dev/null
+++ b/xuexi-parent/cloud-product/src/main/resources/application.yml
@@ -0,0 +1,18 @@
+server:
+ port: 8081
+spring:
+ application:
+ name: servier-product
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://192.168.50.129:3306/xuexi-parent?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+ username: root
+ password: root
+ jpa:
+ hibernate:
+ ddl-auto: update
+ database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.50.129:8848/
\ No newline at end of file
diff --git a/xuexi-parent/cloud-user/pom.xml b/xuexi-parent/cloud-user/pom.xml
new file mode 100644
index 00000000..07f26e65
--- /dev/null
+++ b/xuexi-parent/cloud-user/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ xuexi-parent
+ com.ruoyi
+ 2.5.0
+
+
+
+ cloud-user
+
+
+ 11
+ 11
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.ruoyi
+ cloud-common
+ 2.5.0
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
\ No newline at end of file
diff --git a/xuexi-parent/cloud-user/src/main/java/com/ybk/UserApplication.java b/xuexi-parent/cloud-user/src/main/java/com/ybk/UserApplication.java
new file mode 100644
index 00000000..ba12e06e
--- /dev/null
+++ b/xuexi-parent/cloud-user/src/main/java/com/ybk/UserApplication.java
@@ -0,0 +1,15 @@
+package com.ybk;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+public class UserApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(UserApplication.class);
+ }
+}
diff --git a/xuexi-parent/cloud-user/src/main/java/com/ybk/controller/UserController.java b/xuexi-parent/cloud-user/src/main/java/com/ybk/controller/UserController.java
new file mode 100644
index 00000000..f73234e1
--- /dev/null
+++ b/xuexi-parent/cloud-user/src/main/java/com/ybk/controller/UserController.java
@@ -0,0 +1,7 @@
+package com.ybk.controller;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class UserController {
+}
diff --git a/xuexi-parent/cloud-user/src/main/java/com/ybk/dao/UserDao.java b/xuexi-parent/cloud-user/src/main/java/com/ybk/dao/UserDao.java
new file mode 100644
index 00000000..b0aa0661
--- /dev/null
+++ b/xuexi-parent/cloud-user/src/main/java/com/ybk/dao/UserDao.java
@@ -0,0 +1,7 @@
+package com.ybk.dao;
+
+import com.ybk.domain.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserDao extends JpaRepository {
+}
diff --git a/xuexi-parent/cloud-user/src/main/java/com/ybk/service/UserService.java b/xuexi-parent/cloud-user/src/main/java/com/ybk/service/UserService.java
new file mode 100644
index 00000000..c79326f8
--- /dev/null
+++ b/xuexi-parent/cloud-user/src/main/java/com/ybk/service/UserService.java
@@ -0,0 +1,4 @@
+package com.ybk.service;
+
+public interface UserService {
+}
diff --git a/xuexi-parent/cloud-user/src/main/java/com/ybk/service/impl/UserServiceImpl.java b/xuexi-parent/cloud-user/src/main/java/com/ybk/service/impl/UserServiceImpl.java
new file mode 100644
index 00000000..4bb57c4f
--- /dev/null
+++ b/xuexi-parent/cloud-user/src/main/java/com/ybk/service/impl/UserServiceImpl.java
@@ -0,0 +1,8 @@
+package com.ybk.service.impl;
+
+import com.ybk.service.UserService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+}
diff --git a/xuexi-parent/cloud-user/src/main/resources/application.yml b/xuexi-parent/cloud-user/src/main/resources/application.yml
new file mode 100644
index 00000000..df656a59
--- /dev/null
+++ b/xuexi-parent/cloud-user/src/main/resources/application.yml
@@ -0,0 +1,18 @@
+server:
+ port: 8071
+spring:
+ application:
+ name: servier-user
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://192.168.50.129:3306/xuexi-parent?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+ username: root
+ password: root
+ jpa:
+ hibernate:
+ ddl-auto: update
+ database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.50.129:8848/
diff --git a/xuexi-parent/pom.xml b/xuexi-parent/pom.xml
new file mode 100644
index 00000000..aa6fdaf6
--- /dev/null
+++ b/xuexi-parent/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+ com.ruoyi
+ ruoyi
+ 2.5.0
+
+
+ xuexi-parent
+ pom
+
+
+
+ cloud-common
+ cloud-user
+ cloud-product
+ cloud-order
+
+
+
+ 11
+ 11
+
+
+
\ No newline at end of file