源码地址:https://gitee.com/baohaipeng/gulimall


本文目标

  1. 搭建项目框架
  2. 数据库初始化
  3. 代码生成器改造
  4. 构建所有模块代码

项目框架搭建

  • 在码云上创建Git仓库,顺序及注意点参照下图标注



社会统一信用代码 java校验方法_java


  • 本地克隆码云的远程仓库。先复制仓库地址,到本地打开git命令行,执行拉取


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_02


社会统一信用代码 java校验方法_java_03


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_04


  • 创建商品服务模块。用idea打开拉取的项目,创建谷粒商城商品服务模块,选择基本依赖后Finish


社会统一信用代码 java校验方法_社会统一信用代码生成器_05


社会统一信用代码 java校验方法_社会统一信用代码生成器_06


社会统一信用代码 java校验方法_java_07


社会统一信用代码 java校验方法_微服务_08


  • 根据上一步的操作,再依次创建仓储微服务(ware)、订单微服务(order)、优惠券微服务(coupon)、用户微服务(member),完整结构如下


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_09


  • 用pom文件聚合各个微服务

在gulimall根目录下新建pom文件,打包方式为pom,并将各个微服务聚合起来,结构如下


社会统一信用代码 java校验方法_数据库_10


如果你的idea右侧没有出现Maven窗口,右键点击gulimall工程,点击Add Framework Support,选择Maven,确认即可展示。

完整pom文件如下

<?xml version="1.0" encoding="UTF-8"?>4.0.0com.bhp.gulimall    gulimall    0.0.1-SNAPSHOTgulimall聚合服务pomgulimall-coupongulimall-productgulimall-ordergulimall-membergulimall-ware
  • 编辑聚合服务的忽略配置.gitignore,删除子模块的.gitignore


社会统一信用代码 java校验方法_数据库_11


聚合服务完整.gitignore

target/pom.xml.tagpom.xml.releaseBackuppom.xml.versionsBackuppom.xml.nextrelease.propertiesdependency-reduced-pom.xmlbuildNumber.properties.mvn/timing.properties.mvn/wrapper/maven-wrapper.jar**/mvnw**/mvnw.cmd**/.mvn**/*.iml**/target/.idea

子模块的忽略配置直接删掉即可


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_12


子模块微服务的HELP.md文件根据自己的需要选择删除还是保存,我直接删了。

  • 向码云提交代码

点击右上角提交按钮,可以从左侧看到现在所有的不需要的东西已经排除掉了,选中所有代码,填写提交备注,点击下方的提交并推送按钮


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_13


确认无误后点击push进行推送


社会统一信用代码 java校验方法_数据库_14


如图,推送基本代码结构成功


社会统一信用代码 java校验方法_数据库_15


初始化数据库

在mysql分别新建下边的数据库,字符集和排序规则如下图设置


社会统一信用代码 java校验方法_数据库_16


  • gulimall_oms(订单管理数据库)
  • gulimall_pms(商品管理数据库)
  • gulimall_sms(优惠/营销管理数据库)
  • gulimall_ums(会员管理数据库)
  • gulimall_wms(库存管理数据库)

sql文件已经放到项目根目录下的sql文件夹内


社会统一信用代码 java校验方法_社会统一信用代码生成器_17


引入人人开源后台管理系统

  • 将renren-fast克隆到本地:https://gitee.com/renrenio/renren-fast.git

将renren-fast-vue克隆到本地:https://gitee.com/renrenio/renren-fast-vue.git


社会统一信用代码 java校验方法_社会统一信用代码生成器_18


  • 删除renren-fast原有git链接文件夹,将其整个拷进gulimall,并在聚合工程内引入


社会统一信用代码 java校验方法_数据库_19


社会统一信用代码 java校验方法_社会统一信用代码生成器_20


聚合服务pom文件内右键、Maven、Reload Project重新导入依赖


社会统一信用代码 java校验方法_数据库_21


  • 新建gulimall_admin(后台管理数据库),并执行renren-fast的db目录下的mysql.sql文件,初始化后台管理数据库


社会统一信用代码 java校验方法_社会统一信用代码生成器_22


社会统一信用代码 java校验方法_微服务_23


  • 修改数据库连接地址、账号、密码


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_24


启动RenrenAplication,成功后如下界面


社会统一信用代码 java校验方法_微服务_25


  • 将前端项目renren-fast-vue拷进gulimall项目中,依次执行以下命令,然后即可看到下图的登录页面

npm install

npm run dev


社会统一信用代码 java校验方法_社会统一信用代码生成器_26


账号:admin,密码admin,输入验证码,登录正常


社会统一信用代码 java校验方法_数据库_27


将renren-fast和renren-fast-vue的代码同步提交到自己的码云仓库,完善项目目录


社会统一信用代码 java校验方法_社会统一信用代码生成器_28


引入人人开源代码生成器

  • 将renren-generator克隆到本地:https://gitee.com/renrenio/renren-generator.git
  • 删除renren-generator原有git链接文件夹,将其整个拷进gulimall,并在聚合工程内引入


社会统一信用代码 java校验方法_数据库_29


  • 修改数据库配置,让数据库连接上gulimall_pms(商品管理数据库)


社会统一信用代码 java校验方法_数据库_30


  • 修改代码生成器设置,使其符合商品管理微服务的实际结构要求


社会统一信用代码 java校验方法_微服务_31


  • 启动代码生成器,可以看到所有的商品管理数据内的表


社会统一信用代码 java校验方法_数据库_32


社会统一信用代码 java校验方法_微服务_33


  • 选中所有表,生成代码


社会统一信用代码 java校验方法_数据库_34


  • 将生成的代码中的controller、dao、entity、 service、mapper文件夹都拷进项目中


社会统一信用代码 java校验方法_社会统一信用代码生成器_35


随便打开一个文件,发现一堆报错,很多错误是由于缺少部分依赖造成的,下边会进行统一处理


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_36


增加公共模块gulimall-common

  • 右键点击项目根目录gulimall,new,module,maven,next,填写必要信息,finish


社会统一信用代码 java校验方法_数据库_37


社会统一信用代码 java校验方法_微服务_38


  • 添加mybatis-plus依赖
com.baomidou            mybatis-plus-boot-starter            3.3.2
  • 添加lombok依赖
org.projectlombok            lombok            1.18.16
  • 添加httpcore依赖
org.apache.httpcomponents            httpcore            4.4.13
  • 添加commons-lang依赖
commons-lang            commons-lang            2.6
  • 添加mysql驱动依赖
mysql            mysql-connector-java            8.0.22
  • 在gulimall-common的main/java目录下新建文件夹com.bhp.common.utils,将renren-fast里的PageUtils.java、Query.java、R.java、Constant.java和RRException.java复制进去


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_39


  • 在gulimall-common的main/java目录下新建文件夹com.bhp.common.xss,将renren-fast里的SQLFilter.java复制进去,并修改SQLFilter.java内导入的RRException包路径


社会统一信用代码 java校验方法_数据库_40


  • 完整pom文件
<?xml version="1.0" encoding="UTF-8"?>        gulimall        com.bhp.gulimall0.0.1-SNAPSHOT4.0.0    gulimall-common    谷粒商城公共模块org.apache.maven.plugins                maven-compiler-plugin                77mysql            mysql-connector-java            8.0.22com.baomidou            mybatis-plus-boot-starter            3.3.2org.projectlombok            lombok            1.18.16org.apache.httpcomponents            httpcore            4.4.13commons-lang            commons-lang            2.6io.renren            renren-fast            3.0.0compile
  • 商品微服务引入gulimall-common依赖


社会统一信用代码 java校验方法_社会统一信用代码生成器_41


此时,商品服务模块生成的代码依然会报错,由于需要修改的地方比较多,下面调整代码生成器模板,对代码进行重新生成并替换。

调整代码生成器模板

  • 打开renren-generator内的Controller.java.vm文件,删除下边这个引入


社会统一信用代码 java校验方法_社会统一信用代码生成器_42


  • 注释所有@RequiresPermissions的注解


社会统一信用代码 java校验方法_微服务_43


  • 最终的Controller.java.vm文件
package ${package}.${moduleName}.controller;import java.util.Arrays;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import ${package}.${moduleName}.entity.${className}Entity;import ${package}.${moduleName}.service.${className}Service;import ${mainPath}.common.utils.PageUtils;import ${mainPath}.common.utils.R;/** * ${comments} * * @author ${author} * @email ${email} * @date ${datetime} */@RestController@RequestMapping("${moduleName}/${pathName}")public class ${className}Controller {    @Autowired    private ${className}Service ${classname}Service;    /**     * 列表     */    @RequestMapping("/list")##    @RequiresPermissions("${moduleName}:${pathName}:list")    public R list(@RequestParam Map params){        PageUtils page = ${classname}Service.queryPage(params);        return R.ok().put("page", page);    }    /**     * 信息     */    @RequestMapping("/info/{${pk.attrname}}")##    @RequiresPermissions("${moduleName}:${pathName}:info")    public R info(@PathVariable("${pk.attrname}") ${pk.attrType} ${pk.attrname}){${className}Entity ${classname} = ${classname}Service.getById(${pk.attrname});        return R.ok().put("${classname}", ${classname});    }    /**     * 保存     */    @RequestMapping("/save")##    @RequiresPermissions("${moduleName}:${pathName}:save")    public R save(@RequestBody ${className}Entity ${classname}){${classname}Service.save(${classname});        return R.ok();    }    /**     * 修改     */    @RequestMapping("/update")##    @RequiresPermissions("${moduleName}:${pathName}:update")    public R update(@RequestBody ${className}Entity ${classname}){${classname}Service.updateById(${classname});        return R.ok();    }    /**     * 删除     */    @RequestMapping("/delete")##    @RequiresPermissions("${moduleName}:${pathName}:delete")    public R delete(@RequestBody ${pk.attrType}[] ${pk.attrname}s){${classname}Service.removeByIds(Arrays.asList(${pk.attrname}s));        return R.ok();    }}
  • 重启代码生成器,重新生成gulimall_product数据库代码,使用新生成的controller文件夹覆盖原来有问题的文件夹,现在商品微服务模块的代码就都不会报错了


社会统一信用代码 java校验方法_社会统一信用代码生成器_44


  • 将修改后的代码都提交码云进行更新

完善商品微服务模块gulimall_product的功能

目前,商品微服务模块的业务代码都自动生成并且没有异常了,下面需要完善配置,让该模块正常联通数据库。

  • 配置商品微服务模块的数据库连接信息


社会统一信用代码 java校验方法_社会统一信用代码生成器_45


spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    username: root    password: root    url: jdbc:mysql://127.0.0.1:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  • 配置dao层扫描路径


社会统一信用代码 java校验方法_微服务_46


@MapperScan("com.bhp.gulimall.product.dao")
  • 配置Mybatis-Plus


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_47


mybatis-plus:  mapper-locations: classpath:/mapper/**/*.xml  global-config:    db-config:      id-type: auto
  • 测试一下商品微服务模块能不能正常工作


社会统一信用代码 java校验方法_社会统一信用代码生成器_48


package com.bhp.gulimall.product;import com.bhp.gulimall.product.entity.BrandEntity;import com.bhp.gulimall.product.service.BrandService;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass GulimallProductApplicationTests {@AutowiredBrandService brandService;@Testvoid contextLoads() {BrandEntity brandEntity = new BrandEntity();brandEntity.setName("汉阳造");brandEntity.setDescript("耗子尾汁");brandService.save(brandEntity);System.out.println(brandEntity.toString());}}

控制台打印成功,数据也入库成功,商品微服务模块搭建完成


社会统一信用代码 java校验方法_社会统一信用代码生成器_49


优惠券服务代码生成与配置

  • 修改代码生成器连接的数据库为gulimall_sms(优惠/营销管理数据库)


社会统一信用代码 java校验方法_社会统一信用代码生成器_50


  • 修改代码生成器的业务配置


社会统一信用代码 java校验方法_数据库_51


  • 重启代码生成器,生成代码并下载


社会统一信用代码 java校验方法_数据库_52


  • 将生成的controller、dao、entity、service、mapper文件夹整个复制到gulimall-coupon项目中


社会统一信用代码 java校验方法_java_53


  • 依赖gulimall-common模块


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_54


  • 配置数据库连接信息、设置Mybatis-Plus


社会统一信用代码 java校验方法_微服务_55


  • 启动类配置dao层扫描


社会统一信用代码 java校验方法_微服务_56


  • 测试优惠券服务是否正常,控制台正常打印,数据正常入库


社会统一信用代码 java校验方法_数据库_57


社会统一信用代码 java校验方法_社会统一信用代码 java校验方法_58


至此,优惠券服务模块代码生成完毕

参照优惠券服务代码生成、配置及测试步骤,完成会员服务、订单服务、仓储服务模块的代码

过程略,代码已上传至我的远程仓库:https://gitee.com/baohaipeng/gulimall


社会统一信用代码 java校验方法_数据库_59