尚品汇商城

一、电商微服务模块搭建

创建工作目录 D:\gmallparent 不能有中文,不能有空格

1.1 搭建电商父工程(gmallparent)

1.1.1 搭建gmall-parent

打开idea,选择File–>New–>Project,操作如下
02 搭建环境 - 图1
选择下一步
02 搭建环境 - 图2
配置:
groupId:com.atguigu.gmall
artifactId:gmall-parent
选择下一步
02 搭建环境 - 图3
完成
工程结构如下
02 搭建环境 - 图4
由于这是一个父工程,删除src目录
02 搭建环境 - 图5

1.1.2 修改配置pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <packaging>pom</packaging>
  7. <!--引入spring boot 父工程-->
  8. <parent>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-parent</artifactId>
  11. <version>2.3.6.RELEASE</version>
  12. </parent>
  13. <groupId>com.atguigu.gmall</groupId>
  14. <artifactId>gmall-parent</artifactId>
  15. <version>1.0</version>
  16. <!--定义jar包的版本号-->
  17. <properties>
  18. <java.version>1.8</java.version>
  19. <cloud.version>Hoxton.SR8</cloud.version>
  20. <alibaba.version>2.2.5.RELEASE</alibaba.version>
  21. <gmall.version>1.0</gmall.version>
  22. <mybatis-plus.version>3.4.1</mybatis-plus.version>
  23. <mysql.version>5.1.46</mysql.version>
  24. <swagger.version>2.7.0</swagger.version>
  25. <lombok.version>1.18.10</lombok.version>
  26. <fastjson.version>1.2.29</fastjson.version>
  27. <redisson.version>3.15.3</redisson.version>
  28. <pool2.version>2.6.0</pool2.version>
  29. <httpclient.version>4.5.13</httpclient.version>
  30. </properties>
  31. <!--配置dependencyManagement锁定依赖的版本 并不是实际的依赖。-->
  32. <dependencyManagement>
  33. <dependencies>
  34. <dependency>
  35. <groupId>org.springframework.cloud</groupId>
  36. <artifactId>spring-cloud-dependencies</artifactId>
  37. <version>${cloud.version}</version>
  38. <type>pom</type>
  39. <scope>import</scope>
  40. </dependency>
  41. <dependency>
  42. <groupId>com.alibaba.cloud</groupId>
  43. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  44. <version>${alibaba.version}</version>
  45. <type>pom</type>
  46. <scope>import</scope>
  47. </dependency>
  48. <!--mybatis-plus 持久层-->
  49. <dependency>
  50. <groupId>com.baomidou</groupId>
  51. <artifactId>mybatis-plus-boot-starter</artifactId>
  52. <version>${mybatis-plus.version}</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>mysql</groupId>
  56. <artifactId>mysql-connector-java</artifactId>
  57. <version>${mysql.version}</version>
  58. </dependency>
  59. <!--swagger-->
  60. <dependency>
  61. <groupId>io.springfox</groupId>
  62. <artifactId>springfox-swagger2</artifactId>
  63. <version>${swagger.version}</version>
  64. </dependency>
  65. <!--swagger ui-->
  66. <dependency>
  67. <groupId>io.springfox</groupId>
  68. <artifactId>springfox-swagger-ui</artifactId>
  69. <version>${swagger.version}</version>
  70. </dependency>
  71. <dependency>
  72. <groupId>org.projectlombok</groupId>
  73. <artifactId>lombok</artifactId>
  74. <version>${lombok.version}</version>
  75. </dependency>
  76. <dependency>
  77. <groupId>com.alibaba</groupId>
  78. <artifactId>fastjson</artifactId>
  79. <version>${fastjson.version}</version>
  80. </dependency>
  81. <!-- redisson 分布式锁-->
  82. <dependency>
  83. <groupId>org.redisson</groupId>
  84. <artifactId>redisson</artifactId>
  85. <version>${redisson.version}</version>
  86. </dependency>
  87. <!-- spring2.X集成redis所需common-pool2-->
  88. <dependency>
  89. <groupId>org.apache.commons</groupId>
  90. <artifactId>commons-pool2</artifactId>
  91. <version>${pool2.version}</version>
  92. </dependency>
  93. <dependency>
  94. <groupId>org.apache.httpcomponents</groupId>
  95. <artifactId>httpclient</artifactId>
  96. <version>${httpclient.version}</version>
  97. </dependency>
  98. </dependencies>
  99. </dependencyManagement>
  100. </project>

1.2 搭建common父模块

common:公共模块父节点
common-util:工具类模块,所有模块都可以依赖于它
service-util:service服务的工具包,包含service服务的公共配置类,所有 service模块依赖于它

1.2.1 搭建common

点击gmall-parent,选择New–>Module,操作如下
02 搭建环境 - 图6
选择下一步
02 搭建环境 - 图7
选择下一步
02 搭建环境 - 图8
完成,删除src目录,结构如下
02 搭建环境 - 图9

1.2.2 修改配置pom.xml

<?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>gmall-parent</artifactId>
        <groupId>com.atguigu.gmall</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>common</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>

   <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>provided </scope>
    </dependency>

    <!--lombok用来简化实体类:需要安装lombok插件-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <!--swagger-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
    </dependency>
    <!--用来转换json使用 {JavaObject - json | json - JavaObject}-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>

    <!-- 服务调用feign -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <scope>provided </scope>
    </dependency>

</dependencies>

</project>

1.3 搭建common-util模块

1.3.1 搭建common-util

点击common,选择New–>Module,操作如下
02 搭建环境 - 图10
选择下一步
02 搭建环境 - 图11
选择下一步
02 搭建环境 - 图12
完成,结构如下
02 搭建环境 - 图13

1.3.2 修改配置pom.xml

<?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>
    <parent>
        <groupId>com.atguigu.gmall</groupId>
        <artifactId>common</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>common-util</artifactId>
    <version>1.0</version>

    <packaging>jar</packaging>
    <name>common-util</name>
    <description>common-util</description>

    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
    </dependencies>
</project>

1.3.3 添加公共工具类

02 搭建环境 - 图14

GmallException 自定义全局异常
Result API统一返回结果封装类
ResultCodeEnum API统一返回结果状态信息
AuthContextHolder 获取登录用户信息类
HttpClientUtil http客户端类
MD5 通过MD5给字符串加密的工具类
IpUtil 获取Ip地址的工具类
DateUitl 日期比较工具类

1.4 搭建service-util模块

1.4.1 搭建service-util

搭建过程同common-util
如图
02 搭建环境 - 图15

1.4.2 修改配置pom.xml

<?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>common</artifactId>
        <groupId>com.atguigu.gmall</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>service-util</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>common-util</artifactId>
            <version>1.0</version>
        </dependency>

        <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!-- spring2.X集成redis所需common-pool2-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

        <!-- redisson 分布式锁-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
        </dependency>

        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <scope>provided</scope>
        </dependency>

    </dependencies>
</project>

1.4.3 添加service-util公共类

02 搭建环境 - 图16

MybatisPlusConfig MybatisPlus配置类
RedisConfig Redis配置类
RedissonConfig Redisson配置类
Swagger2Config Swagger2配置类
RedisConst Redis常量配置类
GlobalExceptionHandler 全局异常处理类

1.5 搭建model模块

1.5.1 搭建model

点击gmall-parent 父工程 选择module
导入实体类:给的资料中
搭建过程同common父模块

1.5.2 修改配置pom.xml

<?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>

    <parent>
        <groupId>com.atguigu.gmall</groupId>
        <artifactId>gmall-parent</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>model</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <scope>provided </scope>
        </dependency>

        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <scope>provided </scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            <scope>provided </scope>
        </dependency>
<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-mongodb</artifactId>
          <scope>provided </scope>
        </dependency>
    </dependencies>

</project>

1.6 搭建service父模块

service:service模块父节点
service-product:商品服务模块

1.6.1 搭建service

搭建过程同common父模块

1.6.2 修改配置pom.xml

<?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>gmall-parent</artifactId>
        <groupId>com.atguigu.gmall</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <!--父工程-->
    <packaging>pom</packaging>
    <artifactId>service</artifactId>

    <dependencies>
        <!--依赖服务的工具类-->
        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>service-util</artifactId>
            <version>1.0</version>
        </dependency>
        <!--数据载体-->
        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>model</artifactId>
            <version>1.0</version>
        </dependency>

        <!--web 需要启动项目-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- 服务注册 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!-- 服务配置-->
       <!-- <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
-->
        <!-- 服务调用feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!-- 流量控制 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <!--开发者工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <!--链路追踪-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

    </dependencies>

</project>