├── pom.xml ├── suyoushop-consumer ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── kxg │ │ └── suyoushop │ │ └── consumer │ │ └── DubboConsumerBootstrap.java │ └── resources │ ├── application.properties │ └── log4j.properties ├── suyoushop-interface ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── kxg │ └── suyoushop │ └── DemoService.java ├── suyoushop-provider ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── kxg │ │ └── suyoushop │ │ └── provider │ │ ├── DemoServiceImpl.java │ │ ├── DubboProviderBootstrap.java │ │ ├── mapper │ │ ├── CarMapper.java │ │ ├── CommentMapper.java │ │ ├── CommonMapper.java │ │ ├── GoodsMapper.java │ │ ├── LogisticsMapper.java │ │ ├── OrdersMapper.java │ │ ├── PayInfoMapper.java │ │ ├── SecondCommentMapper.java │ │ ├── ShopMapper.java │ │ └── UserMapper.java │ │ └── pojo │ │ ├── Car.java │ │ ├── Comment.java │ │ ├── Goods.java │ │ ├── Logistics.java │ │ ├── Orders.java │ │ ├── PayInfo.java │ │ ├── SecondComment.java │ │ ├── Shop.java │ │ └── User.java │ └── resources │ ├── application.properties │ ├── generatorConfig.xml │ ├── log4j.properties │ └── mapper │ ├── CarMapper.xml │ ├── CommentMapper.xml │ ├── GoodsMapper.xml │ ├── LogisticsMapper.xml │ ├── OrdersMapper.xml │ ├── PayInfoMapper.xml │ ├── SecondCommentMapper.xml │ ├── ShopMapper.xml │ └── UserMapper.xml └── suyoushop.iml /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | kxg 4 | suyoushop 5 | 1.0.0 6 | pom 7 | ${project.artifactId} 8 | The demo module of dubbo project 9 | 10 | true 11 | 12 | 13 | suyoushop-interface 14 | suyoushop-provider 15 | suyoushop-consumer 16 | 17 | 18 | 19 | 20 | 21 | 22 | org.springframework.boot 23 | spring-boot-dependencies 24 | 2.0.5.RELEASE 25 | pom 26 | import 27 | 28 | 29 | org.apache.dubbo 30 | dubbo-dependencies-bom 31 | 2.7.3 32 | pom 33 | import 34 | 35 | 36 | org.apache.dubbo 37 | dubbo 38 | 2.7.3 39 | 40 | 41 | org.springframework 42 | spring 43 | 44 | 45 | javax.servlet 46 | servlet-api 47 | 48 | 49 | log4j 50 | log4j 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | org.projectlombok 61 | lombok 62 | 1.18.8 63 | 64 | 65 | 66 | org.springframework.boot 67 | spring-boot-starter 68 | 2.0.5.RELEASE 69 | 70 | 71 | org.apache.dubbo 72 | dubbo-spring-boot-starter 73 | 2.7.1 74 | 75 | 76 | 77 | 78 | 79 | org.apache.maven.plugins 80 | maven-compiler-plugin 81 | 82 | 1.8 83 | 1.8 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /suyoushop-consumer/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | kxg 5 | suyoushop 6 | 1.0.0 7 | 8 | kxg 9 | suyoushop-consumer 10 | 1.0.0 11 | jar 12 | ${project.artifactId} 13 | The demo consumer module of dubbo project 14 | 15 | true 16 | 1.7.25 17 | 2.12.0 18 | 2.7.3 19 | 20 | 21 | 22 | kxg 23 | suyoushop-interface 24 | 1.0.0 25 | 26 | 27 | org.apache.dubbo 28 | dubbo 29 | ${dubbo.version} 30 | 31 | 32 | org.apache.dubbo 33 | dubbo-dependencies-zookeeper 34 | ${dubbo.version} 35 | pom 36 | 37 | 38 | org.slf4j 39 | slf4j-log4j12 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | org.springframework.boot 51 | spring-boot-maven-plugin 52 | 2.0.5.RELEASE 53 | 54 | 55 | 56 | repackage 57 | 58 | 59 | 60 | 61 | 62 | org.apache.maven.plugins 63 | maven-compiler-plugin 64 | 65 | 1.8 66 | 1.8 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /suyoushop-consumer/src/main/java/com/kxg/suyoushop/consumer/DubboConsumerBootstrap.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.consumer; 2 | 3 | import com.kxg.suyoushop.DemoService; 4 | 5 | import org.apache.dubbo.config.annotation.Reference; 6 | 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | import org.springframework.boot.ApplicationRunner; 10 | import org.springframework.boot.SpringApplication; 11 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 12 | import org.springframework.context.annotation.Bean; 13 | 14 | @EnableAutoConfiguration 15 | public class DubboConsumerBootstrap { 16 | 17 | private final Logger logger = LoggerFactory.getLogger(getClass()); 18 | 19 | 20 | @Reference(version = "1.0.0") 21 | 22 | private DemoService demoService; 23 | 24 | public static void main(String[] args) { 25 | SpringApplication.run(DubboConsumerBootstrap.class,args); 26 | } 27 | 28 | @Bean 29 | public ApplicationRunner runner() { 30 | return args -> logger.info(demoService.sayHello("Provider")); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /suyoushop-consumer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=dubbo-auto-configure-consumer-sample 2 | ## Dubbo Registry 3 | dubbo.registry.address=zookeeper://localhost:2181 4 | -------------------------------------------------------------------------------- /suyoushop-consumer/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | ###set log levels### 2 | log4j.rootLogger=info, stdout 3 | ###output to the console### 4 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 5 | log4j.appender.stdout.Target=System.out 6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 7 | log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2}: %m%n -------------------------------------------------------------------------------- /suyoushop-interface/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | kxg 5 | suyoushop 6 | 1.0.0 7 | 8 | kxg 9 | suyoushop-interface 10 | 1.0.0 11 | jar 12 | ${project.artifactId} 13 | The demo module of dubbo project 14 | 15 | true 16 | 17 | 18 | 19 | 20 | org.apache.maven.plugins 21 | maven-compiler-plugin 22 | 23 | 1.8 24 | 1.8 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /suyoushop-interface/src/main/java/com/kxg/suyoushop/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop; 2 | 3 | public interface DemoService { 4 | 5 | String sayHello(String name); 6 | 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | kxg 5 | suyoushop 6 | 1.0.0 7 | 8 | kxg 9 | suyoushop-provider 10 | 1.0.0 11 | jar 12 | ${project.artifactId} 13 | The demo provider module of dubbo project 14 | 15 | true 16 | 1.7.25 17 | 2.12.0 18 | 2.7.3 19 | 20 | 21 | 22 | 23 | com.github.pagehelper 24 | pagehelper-spring-boot-starter 25 | 1.2.3 26 | 27 | 28 | kxg 29 | suyoushop-interface 30 | 1.0.0 31 | 32 | 33 | mysql 34 | mysql-connector-java 35 | runtime 36 | 37 | 38 | org.apache.dubbo 39 | dubbo 40 | ${dubbo.version} 41 | 42 | 43 | org.apache.dubbo 44 | dubbo-dependencies-zookeeper 45 | ${dubbo.version} 46 | pom 47 | 48 | 49 | org.slf4j 50 | slf4j-log4j12 51 | 52 | 53 | 54 | 55 | org.mybatis.spring.boot 56 | mybatis-spring-boot-starter 57 | 2.1.1 58 | 59 | 60 | 61 | com.alibaba 62 | druid 63 | 1.1.10 64 | 65 | 66 | tk.mybatis 67 | mapper-spring-boot-starter 68 | 2.0.3 69 | 70 | 71 | 72 | 73 | 74 | 75 | org.springframework.boot 76 | spring-boot-maven-plugin 77 | 78 | 79 | org.mybatis.generator 80 | mybatis-generator-maven-plugin 81 | 82 | 83 | tk.mybatis 84 | mapper 85 | 3.5.0 86 | 87 | 88 | 1.3.5 89 | 90 | 91 | Generate MyBatis Artifacts 92 | none 93 | 94 | generate 95 | 96 | 97 | 98 | 99 | 100 | org.springframework.boot 101 | spring-boot-maven-plugin 102 | 2.0.5.RELEASE 103 | 104 | 105 | 106 | repackage 107 | 108 | 109 | 110 | 111 | 112 | org.apache.maven.plugins 113 | maven-compiler-plugin 114 | 115 | 1.8 116 | 1.8 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/DemoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider; 2 | 3 | import org.apache.dubbo.config.annotation.Service; 4 | import com.kxg.suyoushop.DemoService; 5 | import org.apache.dubbo.rpc.RpcContext; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | @Service(version = "1.0.0") 10 | public class DemoServiceImpl implements DemoService { 11 | private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class); 12 | 13 | @Override 14 | public String sayHello(String name) { 15 | logger.info("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress()); 16 | return "Hello " + name + ", response from provider: " + RpcContext.getContext().getLocalAddress(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/DubboProviderBootstrap.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider; 2 | 3 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 4 | import org.springframework.boot.builder.SpringApplicationBuilder; 5 | 6 | 7 | @EnableAutoConfiguration 8 | public class DubboProviderBootstrap { 9 | 10 | public static void main(String[] args) { 11 | new SpringApplicationBuilder(DubboProviderBootstrap.class) 12 | .run(args); 13 | } 14 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/CarMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.Car; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface CarMapper extends CommonMapper { 9 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/CommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.Comment; 5 | 6 | public interface CommentMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/CommonMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | import tk.mybatis.mapper.common.Mapper; 4 | import tk.mybatis.mapper.common.MySqlMapper; 5 | 6 | /** 7 | * @Auther: szp 8 | * @Date: 2020/1/11 21:32 9 | * @Description: 沈泽鹏写点注释吧 10 | */ 11 | public interface CommonMapper extends Mapper, MySqlMapper { 12 | } 13 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/GoodsMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.Goods; 5 | 6 | public interface GoodsMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/LogisticsMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.Logistics; 5 | 6 | public interface LogisticsMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/OrdersMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.Orders; 5 | 6 | public interface OrdersMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/PayInfoMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.PayInfo; 5 | 6 | public interface PayInfoMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/SecondCommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.SecondComment; 5 | 6 | public interface SecondCommentMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/ShopMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.Shop; 5 | 6 | public interface ShopMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.mapper; 2 | 3 | 4 | import com.kxg.suyoushop.provider.pojo.User; 5 | 6 | public interface UserMapper extends CommonMapper { 7 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/Car.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import javax.persistence.*; 4 | 5 | @Table(name = "t_car") 6 | public class Car { 7 | @GeneratedValue(strategy = GenerationType.IDENTITY) 8 | private Integer id; 9 | 10 | @Column(name = "car_number") 11 | private String carNumber; 12 | 13 | @Column(name = "client_name") 14 | private String clientName; 15 | 16 | private String color; 17 | 18 | private String displacement; 19 | 20 | private String name; 21 | 22 | private String type; 23 | 24 | /** 25 | * @return id 26 | */ 27 | public Integer getId() { 28 | return id; 29 | } 30 | 31 | /** 32 | * @param id 33 | */ 34 | public void setId(Integer id) { 35 | this.id = id; 36 | } 37 | 38 | /** 39 | * @return car_number 40 | */ 41 | public String getCarNumber() { 42 | return carNumber; 43 | } 44 | 45 | /** 46 | * @param carNumber 47 | */ 48 | public void setCarNumber(String carNumber) { 49 | this.carNumber = carNumber == null ? null : carNumber.trim(); 50 | } 51 | 52 | /** 53 | * @return client_name 54 | */ 55 | public String getClientName() { 56 | return clientName; 57 | } 58 | 59 | /** 60 | * @param clientName 61 | */ 62 | public void setClientName(String clientName) { 63 | this.clientName = clientName == null ? null : clientName.trim(); 64 | } 65 | 66 | /** 67 | * @return color 68 | */ 69 | public String getColor() { 70 | return color; 71 | } 72 | 73 | /** 74 | * @param color 75 | */ 76 | public void setColor(String color) { 77 | this.color = color == null ? null : color.trim(); 78 | } 79 | 80 | /** 81 | * @return displacement 82 | */ 83 | public String getDisplacement() { 84 | return displacement; 85 | } 86 | 87 | /** 88 | * @param displacement 89 | */ 90 | public void setDisplacement(String displacement) { 91 | this.displacement = displacement == null ? null : displacement.trim(); 92 | } 93 | 94 | /** 95 | * @return name 96 | */ 97 | public String getName() { 98 | return name; 99 | } 100 | 101 | /** 102 | * @param name 103 | */ 104 | public void setName(String name) { 105 | this.name = name == null ? null : name.trim(); 106 | } 107 | 108 | /** 109 | * @return type 110 | */ 111 | public String getType() { 112 | return type; 113 | } 114 | 115 | /** 116 | * @param type 117 | */ 118 | public void setType(String type) { 119 | this.type = type == null ? null : type.trim(); 120 | } 121 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/Comment.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_comment") 7 | public class Comment { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Long id; 10 | 11 | @Column(name = "user_id") 12 | private Long userId; 13 | 14 | @Column(name = "scenic_spot_id") 15 | private Long scenicSpotId; 16 | 17 | private String comment; 18 | 19 | @Column(name = "create_time") 20 | private Date createTime; 21 | 22 | @Column(name = "update_time") 23 | private Date updateTime; 24 | 25 | /** 26 | * @return id 27 | */ 28 | public Long getId() { 29 | return id; 30 | } 31 | 32 | /** 33 | * @param id 34 | */ 35 | public void setId(Long id) { 36 | this.id = id; 37 | } 38 | 39 | /** 40 | * @return user_id 41 | */ 42 | public Long getUserId() { 43 | return userId; 44 | } 45 | 46 | /** 47 | * @param userId 48 | */ 49 | public void setUserId(Long userId) { 50 | this.userId = userId; 51 | } 52 | 53 | /** 54 | * @return scenic_spot_id 55 | */ 56 | public Long getScenicSpotId() { 57 | return scenicSpotId; 58 | } 59 | 60 | /** 61 | * @param scenicSpotId 62 | */ 63 | public void setScenicSpotId(Long scenicSpotId) { 64 | this.scenicSpotId = scenicSpotId; 65 | } 66 | 67 | /** 68 | * @return comment 69 | */ 70 | public String getComment() { 71 | return comment; 72 | } 73 | 74 | /** 75 | * @param comment 76 | */ 77 | public void setComment(String comment) { 78 | this.comment = comment == null ? null : comment.trim(); 79 | } 80 | 81 | /** 82 | * @return create_time 83 | */ 84 | public Date getCreateTime() { 85 | return createTime; 86 | } 87 | 88 | /** 89 | * @param createTime 90 | */ 91 | public void setCreateTime(Date createTime) { 92 | this.createTime = createTime; 93 | } 94 | 95 | /** 96 | * @return update_time 97 | */ 98 | public Date getUpdateTime() { 99 | return updateTime; 100 | } 101 | 102 | /** 103 | * @param updateTime 104 | */ 105 | public void setUpdateTime(Date updateTime) { 106 | this.updateTime = updateTime; 107 | } 108 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/Goods.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_goods") 7 | public class Goods { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Integer id; 10 | 11 | private String name; 12 | 13 | @Column(name = "store_id") 14 | private Integer storeId; 15 | 16 | private Integer stock; 17 | 18 | private Double price; 19 | 20 | @Column(name = "main_image_url") 21 | private String mainImageUrl; 22 | 23 | private String brief; 24 | 25 | private Short status; 26 | 27 | @Column(name = "g_address") 28 | private String gAddress; 29 | 30 | @Column(name = "create_time") 31 | private Date createTime; 32 | 33 | @Column(name = "update_time") 34 | private Date updateTime; 35 | 36 | @Column(name = "sub_images_url") 37 | private String subImagesUrl; 38 | 39 | /** 40 | * @return id 41 | */ 42 | public Integer getId() { 43 | return id; 44 | } 45 | 46 | /** 47 | * @param id 48 | */ 49 | public void setId(Integer id) { 50 | this.id = id; 51 | } 52 | 53 | /** 54 | * @return name 55 | */ 56 | public String getName() { 57 | return name; 58 | } 59 | 60 | /** 61 | * @param name 62 | */ 63 | public void setName(String name) { 64 | this.name = name == null ? null : name.trim(); 65 | } 66 | 67 | /** 68 | * @return store_id 69 | */ 70 | public Integer getStoreId() { 71 | return storeId; 72 | } 73 | 74 | /** 75 | * @param storeId 76 | */ 77 | public void setStoreId(Integer storeId) { 78 | this.storeId = storeId; 79 | } 80 | 81 | /** 82 | * @return stock 83 | */ 84 | public Integer getStock() { 85 | return stock; 86 | } 87 | 88 | /** 89 | * @param stock 90 | */ 91 | public void setStock(Integer stock) { 92 | this.stock = stock; 93 | } 94 | 95 | /** 96 | * @return price 97 | */ 98 | public Double getPrice() { 99 | return price; 100 | } 101 | 102 | /** 103 | * @param price 104 | */ 105 | public void setPrice(Double price) { 106 | this.price = price; 107 | } 108 | 109 | /** 110 | * @return main_image_url 111 | */ 112 | public String getMainImageUrl() { 113 | return mainImageUrl; 114 | } 115 | 116 | /** 117 | * @param mainImageUrl 118 | */ 119 | public void setMainImageUrl(String mainImageUrl) { 120 | this.mainImageUrl = mainImageUrl == null ? null : mainImageUrl.trim(); 121 | } 122 | 123 | /** 124 | * @return brief 125 | */ 126 | public String getBrief() { 127 | return brief; 128 | } 129 | 130 | /** 131 | * @param brief 132 | */ 133 | public void setBrief(String brief) { 134 | this.brief = brief == null ? null : brief.trim(); 135 | } 136 | 137 | /** 138 | * @return status 139 | */ 140 | public Short getStatus() { 141 | return status; 142 | } 143 | 144 | /** 145 | * @param status 146 | */ 147 | public void setStatus(Short status) { 148 | this.status = status; 149 | } 150 | 151 | /** 152 | * @return g_address 153 | */ 154 | public String getgAddress() { 155 | return gAddress; 156 | } 157 | 158 | /** 159 | * @param gAddress 160 | */ 161 | public void setgAddress(String gAddress) { 162 | this.gAddress = gAddress == null ? null : gAddress.trim(); 163 | } 164 | 165 | /** 166 | * @return create_time 167 | */ 168 | public Date getCreateTime() { 169 | return createTime; 170 | } 171 | 172 | /** 173 | * @param createTime 174 | */ 175 | public void setCreateTime(Date createTime) { 176 | this.createTime = createTime; 177 | } 178 | 179 | /** 180 | * @return update_time 181 | */ 182 | public Date getUpdateTime() { 183 | return updateTime; 184 | } 185 | 186 | /** 187 | * @param updateTime 188 | */ 189 | public void setUpdateTime(Date updateTime) { 190 | this.updateTime = updateTime; 191 | } 192 | 193 | /** 194 | * @return sub_images_url 195 | */ 196 | public String getSubImagesUrl() { 197 | return subImagesUrl; 198 | } 199 | 200 | /** 201 | * @param subImagesUrl 202 | */ 203 | public void setSubImagesUrl(String subImagesUrl) { 204 | this.subImagesUrl = subImagesUrl == null ? null : subImagesUrl.trim(); 205 | } 206 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/Logistics.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_logistics") 7 | public class Logistics { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Long id; 10 | 11 | @Column(name = "order_id") 12 | private Long orderId; 13 | 14 | @Column(name = "logistics_code") 15 | private String logisticsCode; 16 | 17 | private String type; 18 | 19 | @Column(name = "create_time") 20 | private Date createTime; 21 | 22 | @Column(name = "update_time") 23 | private Date updateTime; 24 | 25 | /** 26 | * @return id 27 | */ 28 | public Long getId() { 29 | return id; 30 | } 31 | 32 | /** 33 | * @param id 34 | */ 35 | public void setId(Long id) { 36 | this.id = id; 37 | } 38 | 39 | /** 40 | * @return order_id 41 | */ 42 | public Long getOrderId() { 43 | return orderId; 44 | } 45 | 46 | /** 47 | * @param orderId 48 | */ 49 | public void setOrderId(Long orderId) { 50 | this.orderId = orderId; 51 | } 52 | 53 | /** 54 | * @return logistics_code 55 | */ 56 | public String getLogisticsCode() { 57 | return logisticsCode; 58 | } 59 | 60 | /** 61 | * @param logisticsCode 62 | */ 63 | public void setLogisticsCode(String logisticsCode) { 64 | this.logisticsCode = logisticsCode == null ? null : logisticsCode.trim(); 65 | } 66 | 67 | /** 68 | * @return type 69 | */ 70 | public String getType() { 71 | return type; 72 | } 73 | 74 | /** 75 | * @param type 76 | */ 77 | public void setType(String type) { 78 | this.type = type == null ? null : type.trim(); 79 | } 80 | 81 | /** 82 | * @return create_time 83 | */ 84 | public Date getCreateTime() { 85 | return createTime; 86 | } 87 | 88 | /** 89 | * @param createTime 90 | */ 91 | public void setCreateTime(Date createTime) { 92 | this.createTime = createTime; 93 | } 94 | 95 | /** 96 | * @return update_time 97 | */ 98 | public Date getUpdateTime() { 99 | return updateTime; 100 | } 101 | 102 | /** 103 | * @param updateTime 104 | */ 105 | public void setUpdateTime(Date updateTime) { 106 | this.updateTime = updateTime; 107 | } 108 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/Orders.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_order") 7 | public class Orders { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Integer id; 10 | 11 | @Column(name = "order_time") 12 | private Date orderTime; 13 | 14 | @Column(name = "project_id") 15 | private Integer projectId; 16 | 17 | private Integer status; 18 | 19 | @Column(name = "user_id") 20 | private Integer userId; 21 | 22 | @Column(name = "create_time") 23 | private Date createTime; 24 | 25 | @Column(name = "update_time") 26 | private Date updateTime; 27 | 28 | /** 29 | * @return id 30 | */ 31 | public Integer getId() { 32 | return id; 33 | } 34 | 35 | /** 36 | * @param id 37 | */ 38 | public void setId(Integer id) { 39 | this.id = id; 40 | } 41 | 42 | /** 43 | * @return order_time 44 | */ 45 | public Date getOrderTime() { 46 | return orderTime; 47 | } 48 | 49 | /** 50 | * @param orderTime 51 | */ 52 | public void setOrderTime(Date orderTime) { 53 | this.orderTime = orderTime; 54 | } 55 | 56 | /** 57 | * @return project_id 58 | */ 59 | public Integer getProjectId() { 60 | return projectId; 61 | } 62 | 63 | /** 64 | * @param projectId 65 | */ 66 | public void setProjectId(Integer projectId) { 67 | this.projectId = projectId; 68 | } 69 | 70 | /** 71 | * @return status 72 | */ 73 | public Integer getStatus() { 74 | return status; 75 | } 76 | 77 | /** 78 | * @param status 79 | */ 80 | public void setStatus(Integer status) { 81 | this.status = status; 82 | } 83 | 84 | /** 85 | * @return user_id 86 | */ 87 | public Integer getUserId() { 88 | return userId; 89 | } 90 | 91 | /** 92 | * @param userId 93 | */ 94 | public void setUserId(Integer userId) { 95 | this.userId = userId; 96 | } 97 | 98 | /** 99 | * @return create_time 100 | */ 101 | public Date getCreateTime() { 102 | return createTime; 103 | } 104 | 105 | /** 106 | * @param createTime 107 | */ 108 | public void setCreateTime(Date createTime) { 109 | this.createTime = createTime; 110 | } 111 | 112 | /** 113 | * @return update_time 114 | */ 115 | public Date getUpdateTime() { 116 | return updateTime; 117 | } 118 | 119 | /** 120 | * @param updateTime 121 | */ 122 | public void setUpdateTime(Date updateTime) { 123 | this.updateTime = updateTime; 124 | } 125 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/PayInfo.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_pay") 7 | public class PayInfo { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Long id; 10 | 11 | @Column(name = "order_id") 12 | private Long orderId; 13 | 14 | private Short status; 15 | 16 | private Short type; 17 | 18 | @Column(name = "pay_code") 19 | private String payCode; 20 | 21 | @Column(name = "create_time") 22 | private Date createTime; 23 | 24 | @Column(name = "update_time") 25 | private Date updateTime; 26 | 27 | /** 28 | * @return id 29 | */ 30 | public Long getId() { 31 | return id; 32 | } 33 | 34 | /** 35 | * @param id 36 | */ 37 | public void setId(Long id) { 38 | this.id = id; 39 | } 40 | 41 | /** 42 | * @return order_id 43 | */ 44 | public Long getOrderId() { 45 | return orderId; 46 | } 47 | 48 | /** 49 | * @param orderId 50 | */ 51 | public void setOrderId(Long orderId) { 52 | this.orderId = orderId; 53 | } 54 | 55 | /** 56 | * @return status 57 | */ 58 | public Short getStatus() { 59 | return status; 60 | } 61 | 62 | /** 63 | * @param status 64 | */ 65 | public void setStatus(Short status) { 66 | this.status = status; 67 | } 68 | 69 | /** 70 | * @return type 71 | */ 72 | public Short getType() { 73 | return type; 74 | } 75 | 76 | /** 77 | * @param type 78 | */ 79 | public void setType(Short type) { 80 | this.type = type; 81 | } 82 | 83 | /** 84 | * @return pay_code 85 | */ 86 | public String getPayCode() { 87 | return payCode; 88 | } 89 | 90 | /** 91 | * @param payCode 92 | */ 93 | public void setPayCode(String payCode) { 94 | this.payCode = payCode == null ? null : payCode.trim(); 95 | } 96 | 97 | /** 98 | * @return create_time 99 | */ 100 | public Date getCreateTime() { 101 | return createTime; 102 | } 103 | 104 | /** 105 | * @param createTime 106 | */ 107 | public void setCreateTime(Date createTime) { 108 | this.createTime = createTime; 109 | } 110 | 111 | /** 112 | * @return update_time 113 | */ 114 | public Date getUpdateTime() { 115 | return updateTime; 116 | } 117 | 118 | /** 119 | * @param updateTime 120 | */ 121 | public void setUpdateTime(Date updateTime) { 122 | this.updateTime = updateTime; 123 | } 124 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/SecondComment.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_second_comment") 7 | public class SecondComment { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Long id; 10 | 11 | @Column(name = "comment_id") 12 | private Long commentId; 13 | 14 | private String content; 15 | 16 | @Column(name = "user_id") 17 | private Long userId; 18 | 19 | @Column(name = "create_time") 20 | private Date createTime; 21 | 22 | @Column(name = "update_time") 23 | private Date updateTime; 24 | 25 | /** 26 | * @return id 27 | */ 28 | public Long getId() { 29 | return id; 30 | } 31 | 32 | /** 33 | * @param id 34 | */ 35 | public void setId(Long id) { 36 | this.id = id; 37 | } 38 | 39 | /** 40 | * @return comment_id 41 | */ 42 | public Long getCommentId() { 43 | return commentId; 44 | } 45 | 46 | /** 47 | * @param commentId 48 | */ 49 | public void setCommentId(Long commentId) { 50 | this.commentId = commentId; 51 | } 52 | 53 | /** 54 | * @return content 55 | */ 56 | public String getContent() { 57 | return content; 58 | } 59 | 60 | /** 61 | * @param content 62 | */ 63 | public void setContent(String content) { 64 | this.content = content == null ? null : content.trim(); 65 | } 66 | 67 | /** 68 | * @return user_id 69 | */ 70 | public Long getUserId() { 71 | return userId; 72 | } 73 | 74 | /** 75 | * @param userId 76 | */ 77 | public void setUserId(Long userId) { 78 | this.userId = userId; 79 | } 80 | 81 | /** 82 | * @return create_time 83 | */ 84 | public Date getCreateTime() { 85 | return createTime; 86 | } 87 | 88 | /** 89 | * @param createTime 90 | */ 91 | public void setCreateTime(Date createTime) { 92 | this.createTime = createTime; 93 | } 94 | 95 | /** 96 | * @return update_time 97 | */ 98 | public Date getUpdateTime() { 99 | return updateTime; 100 | } 101 | 102 | /** 103 | * @param updateTime 104 | */ 105 | public void setUpdateTime(Date updateTime) { 106 | this.updateTime = updateTime; 107 | } 108 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/Shop.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_shop") 7 | public class Shop { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Long id; 10 | 11 | @Column(name = "phone_number") 12 | private String phoneNumber; 13 | 14 | private String password; 15 | 16 | @Column(name = "img_url") 17 | private String imgUrl; 18 | 19 | private Short status; 20 | 21 | @Column(name = "create_time") 22 | private Date createTime; 23 | 24 | @Column(name = "update_time") 25 | private Date updateTime; 26 | 27 | private String name; 28 | 29 | /** 30 | * @return id 31 | */ 32 | public Long getId() { 33 | return id; 34 | } 35 | 36 | /** 37 | * @param id 38 | */ 39 | public void setId(Long id) { 40 | this.id = id; 41 | } 42 | 43 | /** 44 | * @return phone_number 45 | */ 46 | public String getPhoneNumber() { 47 | return phoneNumber; 48 | } 49 | 50 | /** 51 | * @param phoneNumber 52 | */ 53 | public void setPhoneNumber(String phoneNumber) { 54 | this.phoneNumber = phoneNumber == null ? null : phoneNumber.trim(); 55 | } 56 | 57 | /** 58 | * @return password 59 | */ 60 | public String getPassword() { 61 | return password; 62 | } 63 | 64 | /** 65 | * @param password 66 | */ 67 | public void setPassword(String password) { 68 | this.password = password == null ? null : password.trim(); 69 | } 70 | 71 | /** 72 | * @return img_url 73 | */ 74 | public String getImgUrl() { 75 | return imgUrl; 76 | } 77 | 78 | /** 79 | * @param imgUrl 80 | */ 81 | public void setImgUrl(String imgUrl) { 82 | this.imgUrl = imgUrl == null ? null : imgUrl.trim(); 83 | } 84 | 85 | /** 86 | * @return status 87 | */ 88 | public Short getStatus() { 89 | return status; 90 | } 91 | 92 | /** 93 | * @param status 94 | */ 95 | public void setStatus(Short status) { 96 | this.status = status; 97 | } 98 | 99 | /** 100 | * @return create_time 101 | */ 102 | public Date getCreateTime() { 103 | return createTime; 104 | } 105 | 106 | /** 107 | * @param createTime 108 | */ 109 | public void setCreateTime(Date createTime) { 110 | this.createTime = createTime; 111 | } 112 | 113 | /** 114 | * @return update_time 115 | */ 116 | public Date getUpdateTime() { 117 | return updateTime; 118 | } 119 | 120 | /** 121 | * @param updateTime 122 | */ 123 | public void setUpdateTime(Date updateTime) { 124 | this.updateTime = updateTime; 125 | } 126 | 127 | /** 128 | * @return name 129 | */ 130 | public String getName() { 131 | return name; 132 | } 133 | 134 | /** 135 | * @param name 136 | */ 137 | public void setName(String name) { 138 | this.name = name == null ? null : name.trim(); 139 | } 140 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/java/com/kxg/suyoushop/provider/pojo/User.java: -------------------------------------------------------------------------------- 1 | package com.kxg.suyoushop.provider.pojo; 2 | 3 | import java.util.Date; 4 | import javax.persistence.*; 5 | 6 | @Table(name = "t_user") 7 | public class User { 8 | @GeneratedValue(strategy = GenerationType.IDENTITY) 9 | private Integer id; 10 | 11 | private Integer age; 12 | 13 | @Column(name = "create_time") 14 | private Date createTime; 15 | 16 | @Column(name = "end_time") 17 | private Date endTime; 18 | 19 | @Column(name = "img_url") 20 | private String imgUrl; 21 | 22 | private Short mark; 23 | 24 | @Column(name = "nick_name") 25 | private String nickName; 26 | 27 | private String password; 28 | 29 | @Column(name = "phone_number") 30 | private Long phoneNumber; 31 | 32 | private Short sex; 33 | 34 | /** 35 | * 1-vip 0-普通用户 36 | */ 37 | private Short vip; 38 | 39 | /** 40 | * @return id 41 | */ 42 | public Integer getId() { 43 | return id; 44 | } 45 | 46 | /** 47 | * @param id 48 | */ 49 | public void setId(Integer id) { 50 | this.id = id; 51 | } 52 | 53 | /** 54 | * @return age 55 | */ 56 | public Integer getAge() { 57 | return age; 58 | } 59 | 60 | /** 61 | * @param age 62 | */ 63 | public void setAge(Integer age) { 64 | this.age = age; 65 | } 66 | 67 | /** 68 | * @return create_time 69 | */ 70 | public Date getCreateTime() { 71 | return createTime; 72 | } 73 | 74 | /** 75 | * @param createTime 76 | */ 77 | public void setCreateTime(Date createTime) { 78 | this.createTime = createTime; 79 | } 80 | 81 | /** 82 | * @return end_time 83 | */ 84 | public Date getEndTime() { 85 | return endTime; 86 | } 87 | 88 | /** 89 | * @param endTime 90 | */ 91 | public void setEndTime(Date endTime) { 92 | this.endTime = endTime; 93 | } 94 | 95 | /** 96 | * @return img_url 97 | */ 98 | public String getImgUrl() { 99 | return imgUrl; 100 | } 101 | 102 | /** 103 | * @param imgUrl 104 | */ 105 | public void setImgUrl(String imgUrl) { 106 | this.imgUrl = imgUrl == null ? null : imgUrl.trim(); 107 | } 108 | 109 | /** 110 | * @return mark 111 | */ 112 | public Short getMark() { 113 | return mark; 114 | } 115 | 116 | /** 117 | * @param mark 118 | */ 119 | public void setMark(Short mark) { 120 | this.mark = mark; 121 | } 122 | 123 | /** 124 | * @return nick_name 125 | */ 126 | public String getNickName() { 127 | return nickName; 128 | } 129 | 130 | /** 131 | * @param nickName 132 | */ 133 | public void setNickName(String nickName) { 134 | this.nickName = nickName == null ? null : nickName.trim(); 135 | } 136 | 137 | /** 138 | * @return password 139 | */ 140 | public String getPassword() { 141 | return password; 142 | } 143 | 144 | /** 145 | * @param password 146 | */ 147 | public void setPassword(String password) { 148 | this.password = password == null ? null : password.trim(); 149 | } 150 | 151 | /** 152 | * @return phone_number 153 | */ 154 | public Long getPhoneNumber() { 155 | return phoneNumber; 156 | } 157 | 158 | /** 159 | * @param phoneNumber 160 | */ 161 | public void setPhoneNumber(Long phoneNumber) { 162 | this.phoneNumber = phoneNumber; 163 | } 164 | 165 | /** 166 | * @return sex 167 | */ 168 | public Short getSex() { 169 | return sex; 170 | } 171 | 172 | /** 173 | * @param sex 174 | */ 175 | public void setSex(Short sex) { 176 | this.sex = sex; 177 | } 178 | 179 | /** 180 | * 获取1-vip 0-普通用户 181 | * 182 | * @return vip - 1-vip 0-普通用户 183 | */ 184 | public Short getVip() { 185 | return vip; 186 | } 187 | 188 | /** 189 | * 设置1-vip 0-普通用户 190 | * 191 | * @param vip 1-vip 0-普通用户 192 | */ 193 | public void setVip(Short vip) { 194 | this.vip = vip; 195 | } 196 | } -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # Spring boot application 2 | spring.application.name=dubbo-auto-configuration-provider-demo 3 | # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service 4 | dubbo.scan.base-packages=com.kxg.suyoushop.provider 5 | # Dubbo Application 6 | ## The default value of dubbo.application.name is ${spring.application.name} 7 | ## dubbo.application.name=${spring.application.name} 8 | # Dubbo Protocol 9 | dubbo.protocol.name=dubbo 10 | dubbo.protocol.port=12345 11 | ## Dubbo Registry 12 | dubbo.registry.address=zookeeper://localhost:2181 13 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/generatorConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 30 | 31 | 32 | 33 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 54 | 55 | 63 | 64 | 68 | 69 | 72 | 73 | 74 | 75 |
76 | 77 | 78 |
79 | 80 | 81 |
82 | 83 | 84 |
85 | 86 | 87 |
88 | 89 | 90 |
91 | 92 | 93 |
94 | 95 | 96 |
97 | 98 | 99 |
100 | 101 | 102 |
103 |
-------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | ###set log levels### 2 | log4j.rootLogger=info, stdout 3 | ###output to the console### 4 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 5 | log4j.appender.stdout.Target=System.out 6 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 7 | log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2}: %m%n -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/CarMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/CommentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/GoodsMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/LogisticsMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/OrdersMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/PayInfoMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/SecondCommentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/ShopMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /suyoushop-provider/src/main/resources/mapper/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /suyoushop.iml: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------