开发工具参考

名称 介绍 参考版本
开发环境 开发环境 Windows10 / MAC
JDK java开发者工具集 1.8
MAVEN java项目构建工具 Apache Maven 3.5.0
IDE 集成开发工具 IntelliJ IDEA (Ultimate) Version: 2018.2.5
Mysql 数据库 5.7.17
Redis 缓存服务 3.2.8
Zookeeper 服务注册中心 3.4.6
ActiveMQ 消息中间件 5.15.8

公共文件介绍

公共返回错误信息: org.xxpay.core.common.constant.RetEnum

支付中心返回code和msg: org.xxpay.core.common.constant.PayEnum

系统常量:org.xxpay.core.common.constant.Constant

业务常量:org.xxpay.core.common.constant.MchConstant

支付业务常量:org.xxpay.core.common.constant.PayConstant

rpc调用service / spring注入service: org.xxpay.业务包名.common.service.RpcCommonService

项目sql语句: 项目根sql目录下:*.sql

init.sql :项目所有用到的DDL、DML语句;
code.sql :省市县、行业编码初始化语句;
code_ysf.sql :云闪付进件省市县、行业编码初始化语句;
patch.sql :升级sql语句;

环境变量配置文件: profiles/commons-{env}-filter.properties
{env}说明:
dev:开发环境, 一般用于本地启动项目时的配置信息;
test: 测试环境, 一般用于测试环境中的配置信息;
prod: 生产环境, 一般用于生产正式环境下的配置信息;

env配置在 pom.xml文件下 profiles -> profile 节点, 默认设置的dev为默认节点

如切换环境进行编译, 请使用 $ mvn compile -Ptest 进行切换。

maven 命令详见: http://maven.apache.org/settings.html Profiles节点

本地启动及打包

本地启动:

  1. 请先按顺序依次导入数据库语句: init.sql、code.sql、code_ysf.sql
  2. 将所有基础服务进行启动:包括 Redis, Zookeeper, ActiveMQ
  3. 请打开profiles/commons-dev-filter.properties修改服务地址为上述地址以及配置数据库地址信息 ;
  4. 请确保每个项目全部编译通过, 由于每个项目的pom.xml 集成自全局pom.xml, 需对每个项目进行单独编译(每次更改环境变量文件都需要重新编译, 查看编译目录下application.yml 是否替换成功);
  5. 启动每个项目下的org.xxpay.{biz}.bootstrap.XxPay{biz}Application, 进行启动;
  6. 等到启动完成。

变更启动端口:

请修改每个项目下的 application.yml 中的 server -> port节点。
详情参考: https://docs.spring.io/spring-boot/docs/2.1.10.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-customizing-embedded-containers

测试环境/生产环境打包:

  1. 请更改profiles/commons-test-filter.properties 或者 profiles/commons-prod-filter.properties;
  2. 命令行进入项目根目录;
  3. $ mvn package -Ptest (测试环境) 、 $ mvn package -Pprod (生产环境) ;
  4. 打包好的文件在 ./target 目录下, 将 tar.gz 格式的文件拷贝到对应服务器目录即可。

新增菜单

初始化语句描述

INSERT INTO `t_mgr_sys_resource` VALUES (
'ID',
'模块名称,需与静态页面对应',
'菜单显示名称',
'跳转URL, 一般为空,当与模块不在一个目录需变更',
'授权名: ROLE开头',
'授权URL 如:mch_info/**',
'1-菜单, 2-按钮',
'所属系统: 1-商户 2-代理商 3-平台 4-服务商',
'菜单图标, 支持layui所有图标, 详见layui.com',
'排序值: 数值越小越靠前',
'父资源ID,一级为0',
'状态:0:禁用 1:正常',
'属性, 一般为空',
'创建时间',
'更新时间');

示例:

INSERT INTO `t_mgr_sys_resource` VALUES (16, 'user', '用户管理', '/sys/user/config', 'ROLE_SYS_USER', '/sys/user/**', 1, 3, 'layui-icon-user', 100, 15, 1, '', '2018-01-23 23:18:24', '2018-02-10 03:45:20');

获取请求参数

简述:

建议新建的Controller继承每个项目下的BaseController, 并且为 @RestController

获取请求参数:

获取String类型参数的值(非必填): *protected *String getValString(String key)
获取String类型参数的值(必填): *protected *String getValStringRequired(String key)
获取Byte类型参数的值(非必填): *protected *Byte getValByte(String key)
获取Byte类型参数的值(必填): *protected *Byte getValByteRequired(String key)
获取Integer类型参数的值(非必填): *protected *Integer getValInteger(String key)
获取Integer类型参数的值(必填): *protected *Integer getValIntegerRequired(String key)
获取Long类型参数的值(非必填): *protected *Long getValLong(String key)
获取Long类型参数的值(必填): *protected *Long getValLongRequired(String key)
获取前端参数并自动转换为对象类型: *protected * T getObject(Class clazz)
获取金额类型的参数并将 元->分(非必填): public Long getAmountL(String name)
获取金额类型的参数并将 元->分(必填): *public *Long getRequiredAmountL(String name)

Controller接口函数返回说明:

业务处理成功:

return XxPayResponse.buildSuccess();

或者添加任意参数:

return XxPayResponse.buildSuccess(message);

业务处理失败:

return XxPayResponse.build(RetEnum.RET_SERVICE_MCH_NOT_EXIST);

数据库CRUD操作

简述:

项目使用的Mybatis + Mybatis Plus 进行数据层访问, 目前所有Service全部继承了Mybatis+ 的ServiceImpl类, 支持新函数的同时也对Mybatis历史函数做了兼容。

建议使用 LambdaQueryWrapper进行查询参数的构造, 避免直接传入列名称导致难以维护;
例如查询mchId为1001的商户信息:

LambdaQueryWrapper<MchInfo> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(MchInfo::getMchId, 1001L);
MchInfo mchInfo = mchInfoService.getOne(queryWrapper);

具体条件编写请参考: https://mybatis.plus/

场景一: 表结构有变动, 需对Mapper进行更改

更改org.xxpay.service.test.generator.MybatisPlusCodeGenerator文件中的数据库地址、用户名、待生成的表名等信息;

  1. Run MybatisPlusCodeGenerator
  2. 将自动生成的代码 [目录__org.xxpay.service.test.generator.output]替换到对应目录即可;

注意:

  1. 替换前请进行使用对比工具进行对比工作, 确认存量代码的可用;
  2. 如该表使用了MybatisGenerator工具生成的代码, 请参考org.xxpay.service.test.generator.MybatisCodeGenerator
文档更新时间: 2021-10-22 17:14   作者:大森林