本示例是一个基于spring-boot
开发的项目,集成了Swagger2
,QueryDsl
,MyBatis
以及spring-boot-web
中自带的Hibernate
。启动项目后,在http://localhost:8080/spring-boot-wechat/swagger-ui.html中查看接口。
- 创建数据库的
test.sql
文件在/src/main/resources/static
下,请执行test.sql
文件创建数据库后查看/src/main/resources/application.properties
中数据源地址是否需要修改后再进行测试。创建的数据库表结构请参考test.sql
文件。
- 启动项目前需要生成
QueryDsl
相应的类文件,所以在启动项目前先执行Maven
命令:mvn generate-sources
MyBatis
的*Mapper.xml
文件存放在/spring-boot-wechat-demo/src/main/resources/com/example/demo/mapper
目录下;*Mapper.java
文件存放在/spring-boot-wechat-demo/src/main/java/me/frank/spring/boot/wechat/mapper
目录下- 名称带有
dev
的*.properties
文件表示测试环境下的配置文件;带有prod
的*.properties
文件表示生产环境下的配置文件
- 系统相关的参数配置在
application.properties
文件中,相应的配置都已有注释描述 - 修改项目名的时候注意修改
server.context-path
参数 - 修改包名的时候注意修改
mybatis.type-aliases-package
,mybatis.mapper-locations
参数 - 修改数据库源的时候注意修改
spring.datasource
,hikari.datasource
相应的参数 spring.datasource
,hikari.datasource
的部分参数需要保持一致,具体参考现有的配置
注:测试环境下相应的配置可打开微信公众平台测试号网站(以下简称网站),用微信扫一扫登陆,获取和设置相应的配置
- 微信相关的配置存放在
app-wechat-*.properties
文件中,注意测试环境与生产环境的区分 wechat.app-id
对应网站中的"测试号信息"模块的appID
字段wechat.app-secret
对应网站中的"测试号信息"模块的appsecret
字段wechat.token
参数对应网站中的"接口配置信息"模块的Token
字段,改字段为自定义的一串字符串,只要保持wechat.token
参数和Token
字段一致即可wechat.page-url-domain
参数使用内网穿透工具获取到的域名wechat.page-url-prefix
参数不需要修改- 网站中的"接口配置信息"模块的
URL
字段只支持域名,不支持ip地址。格式为:http://${wechat.page-url-domain}${server.context-path}/api/wechat/portal
- 网站中的"JS接口安全域名"模块的
域名
字段和wechat.page-url-domain
参数保持一致 - 在网站中的"体验接口权限表"模块中点击
网页服务-网页帐号-网页授权获取用户基本信息-修改
,在弹出的OAuth2.0网页授权
窗口中修改授权回调页面域名
,注意和wechat.page-url-domain
参数保持一致 - 扫描网站中的"测试号二维码"模块中的二维码关注测试公众账号
注:以下包名的前缀统一为me.frank.spring.boot.wechat.
aspect
包中存放切面操作相关类MethodLogger
类会在Controller
和Service
方法执行前在控制台中输出方法名和参数,修改项目包名后注意将切入点的包名和项目包名保持一致builder
包中存放项目的构建类,已有的类不需要修改config
包中存放项目的配置类,已有的类不需要修改controller
包中存放项目的控制层类:WechatMenuController
类用来操作微信公众号自定义菜单栏;LoginController
类用来处理登陆相关的接口,注意每次进入微信网页时,需要调用/api/no-auth/refresh-token/{code}
接口,用code
换取token
,换取失败,则说明用户尚未绑定dto
包中存放数据传输对象,已有的类不需要修改,请求相关的数据传输对象可放在dto.request
包中entity
包中存放实体类,对应数据库中的表。如果数据库中用户表结构与示例中的表结构不一致,注意修改AppUser
类exception
包中存放异常类,注意处理请求时,有业务异常的,抛出的ServiceException
会被自动捕获,并返回相应的错误信息给前端handler
包中存放事件处理类,一般需要修改的类为:SubscribeHandler
-用户订阅事件类,UnsubscribeHandler
-用户取消订阅事件类mapper
包中存放MyBatis
对数据库表操作接口,不需要实现,注意方法名和相应的*Mapper.xml
文件里的操作id保持一致properties
包中存放项目配置类,包含*.properties
文件相对应的类以及一些常量类,已有的类不需要修改repo
包中存放QueryDsl
对数据库表操作的接口,需要继承JpaRepository
和QueryDslPredicateExecutor
接口,会根据方法名自动生成查询sql
,不需要实现接口security
包中存放安全相关类,已有的类不需要修改service
包中存放业务相关类,IWechatService
中有生成微信转向链接的方法,参数为wechat.page-url-prefix
之后的url
util
包中存放工具类,已有的类不需要修改- 项目运行生成的
*.log
文件在/spring-boot-wechat-demo/logs
目录下