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