/spring-boot-wechat-demo

基于Spring Boot的微信网页服务端示例

Primary LanguageJava

微信网页开发服务端示例

本示例是一个基于spring-boot开发的项目,集成了Swagger2QueryDslMyBatis以及spring-boot-web中自带的Hibernate。启动项目后,在http://localhost:8080/spring-boot-wechat/swagger-ui.html中查看接口。

注意事项

数据库

  1. 创建数据库的test.sql文件在/src/main/resources/static下,请执行test.sql文件创建数据库后查看/src/main/resources/application.properties中数据源地址是否需要修改后再进行测试。创建的数据库表结构请参考test.sql文件。

资源文件

  1. 启动项目前需要生成QueryDsl相应的类文件,所以在启动项目前先执行Maven命令:mvn generate-sources
  2. 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目录下
  3. 名称带有dev*.properties文件表示测试环境下的配置文件;带有prod*.properties文件表示生产环境下的配置文件

配置

系统配置

  1. 系统相关的参数配置在application.properties文件中,相应的配置都已有注释描述
  2. 修改项目名的时候注意修改server.context-path参数
  3. 修改包名的时候注意修改mybatis.type-aliases-package, mybatis.mapper-locations参数
  4. 修改数据库源的时候注意修改spring.datasource, hikari.datasource相应的参数
  5. spring.datasource, hikari.datasource的部分参数需要保持一致,具体参考现有的配置

微信配置

注:测试环境下相应的配置可打开微信公众平台测试号网站(以下简称网站),用微信扫一扫登陆,获取和设置相应的配置

  1. 微信相关的配置存放在app-wechat-*.properties文件中,注意测试环境与生产环境的区分
  2. wechat.app-id对应网站中的"测试号信息"模块的appID字段
  3. wechat.app-secret对应网站中的"测试号信息"模块的appsecret字段
  4. wechat.token参数对应网站中的"接口配置信息"模块的Token字段,改字段为自定义的一串字符串,只要保持wechat.token参数和Token字段一致即可
  5. wechat.page-url-domain参数使用内网穿透工具获取到的域名
  6. wechat.page-url-prefix参数不需要修改
  7. 网站中的"接口配置信息"模块的URL字段只支持域名,不支持ip地址。格式为:http://${wechat.page-url-domain}${server.context-path}/api/wechat/portal
  8. 网站中的"JS接口安全域名"模块的域名字段和wechat.page-url-domain参数保持一致
  9. 在网站中的"体验接口权限表"模块中点击网页服务-网页帐号-网页授权获取用户基本信息-修改,在弹出的OAuth2.0网页授权窗口中修改授权回调页面域名,注意和wechat.page-url-domain参数保持一致
  10. 扫描网站中的"测试号二维码"模块中的二维码关注测试公众账号

项目结构

注:以下包名的前缀统一为me.frank.spring.boot.wechat.

  1. aspect包中存放切面操作相关类MethodLogger类会在ControllerService方法执行前在控制台中输出方法名和参数,修改项目包名后注意将切入点的包名和项目包名保持一致
  2. builder包中存放项目的构建类,已有的类不需要修改
  3. config包中存放项目的配置类,已有的类不需要修改
  4. controller包中存放项目的控制层类:WechatMenuController类用来操作微信公众号自定义菜单栏;LoginController类用来处理登陆相关的接口,注意每次进入微信网页时,需要调用/api/no-auth/refresh-token/{code}接口,用code换取token,换取失败,则说明用户尚未绑定
  5. dto包中存放数据传输对象,已有的类不需要修改,请求相关的数据传输对象可放在dto.request包中
  6. entity包中存放实体类,对应数据库中的表。如果数据库中用户表结构与示例中的表结构不一致,注意修改AppUser
  7. exception包中存放异常类,注意处理请求时,有业务异常的,抛出的ServiceException会被自动捕获,并返回相应的错误信息给前端
  8. handler包中存放事件处理类,一般需要修改的类为:SubscribeHandler-用户订阅事件类, UnsubscribeHandler-用户取消订阅事件类
  9. mapper包中存放MyBatis对数据库表操作接口,不需要实现,注意方法名和相应的*Mapper.xml文件里的操作id保持一致
  10. properties包中存放项目配置类,包含*.properties文件相对应的类以及一些常量类,已有的类不需要修改
  11. repo包中存放QueryDsl对数据库表操作的接口,需要继承JpaRepositoryQueryDslPredicateExecutor接口,会根据方法名自动生成查询sql,不需要实现接口
  12. security包中存放安全相关类,已有的类不需要修改
  13. service包中存放业务相关类,IWechatService中有生成微信转向链接的方法,参数为wechat.page-url-prefix之后的url
  14. util包中存放工具类,已有的类不需要修改
  15. 项目运行生成的*.log文件在/spring-boot-wechat-demo/logs目录下