项目结构图
bankManageSystem/
│
├── 📁 src/
│ ├── 📁 main/
│ │ ├── 📁 java/
│ │ │ └── 📁 com/
│ │ │ └── 📁 bank/
...
│ │ │ └── 📁 system/
│ │ │ ├── 📁 config/ # 配置类(Caffeine、H2)
│ │ │ │ └── CacheConfig.java
│ │ │ │
│ │ │ ├── 📁 controller/ # REST 控制器
│ │ │ │ └── BankController.java
│ │ │ │
│ │ │ ├── 📁 service/ # 业务逻辑层
│ │ │ │ ├── 📁 convert/
│ │ │ │ │ └── BankMangeMapper.java # 实体和vo相互转换类
│ │ │ │ ├── 📁 impl/
│ │ │ │ │ └── BankManageServiceImpl.java # 实现类
│ │ │ │ └── BankManageService.java # 接口
│ │ │ │
│ │ │ ├── 📁 repository/ # 数据访问层(JPA / MyBatis)
│ │ │ │ ├── 📁 entity/
│ │ │ │ │ └── BankAccount.java # 实现类
│ │ │ │ └── BankAccountRepository.java
│ │ │ │
│ │ │ ├── 📁 entity/ # 实体类
│ │ │ │ └── BankAccount.java
│ │ │ │
│ │ │ ├── 📁 dto/ # 请求/响应数据传输对象
│ │ │ │ ├── BaseResponse.java
│ │ │ │ ├── BankTransferVO.java
│ │ │ │ ├── CreateBankAccountVO.java
│ │ │ │ ├── DeleteBankAccountVO.java
│ │ │ │ └── UpdateBankAccountVO.java
│ │ │ │
│ │ │ ├── 📁 exception/ # 全局异常处理
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ └── BankException.java
│ │ │ │
│ │ │ ├── 📁 common/ # 公用层
│ │ │ │ ├── 📁 exception/
│ │ │ │ │ └── BusinessException.java # 包装错误类
│ │ │ │ ├── AccountStatus.java # 枚举类
│ │ │ │ ├── ErrorCode.java # 枚举类
│ │ │ │ ├── GlobalExceptionHandler.java # 错误处理类
│ │ │ │ ├── PageRes.java # 分页类
│ │ │ │ └── ResultUtils.java # 工具类
│ │ │ │
│ │ │ └── BankManagementSystemApplication.java # 启动类
│ │ │
│ │ └── 📁 resources/
│ │ ├── 📁 static/ # 静态资源(如 Swagger UI)
│ │ └── application.yaml # 主配置文件
│ │
│ └── 📁 test/
│ └── 📁 java/
│ └── com/bank/manage/system/
│ ├── BankAccountServiceTest.java # 单元测试
│ └── BankManageSystemContiPerfTest.java # 压测测试
│
├── 📁 target/ # Maven 构建输出(编译后自动生成)
│ └── bankManageSystem-0.0.1-SNAPSHOT.jar
│
├── Dockerfile # Docker 相关文件
├── pom.xml # Maven 构建配置
├── start.sh # 启动脚本(Docker 构建)
├── README.md # 项目说明文档
└── LICENSE # 开源协议(如 MIT)本项目为一个基于springboot 框架设计的轻量级银行账户管理系统,支持以下能力:
- ✅ 创建银行账户
- ✅ 删除银行账户
- ✅ 修改银行账户详情(例如,账户持有人姓名、联系信息)
- ✅ 列出所有银行账户(带分页)
- ✅ 查看特定银行账户的详情
- ✅ 在两个账户之间转账
- ✅ 错误处理和验证
- ✅ 单元测试&压力测试
- ✅ docker容器部署
| 模块 | 工具 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot | 用于快速构建restful接口 |
| 数据库 | H2 Database | 嵌入式数据库 |
| 缓存 | Caffeine | 缓存实现 |
| 项目构建 | Maven | 项目构建 |
| 容器化 | Docker | 快速环境部署 |
| 单元测试 | Mokito + Junit5 | 用于本地单元测试 |
| 压力测试 | ContiPerf | 用于本地压力测试 |
git clone https://github.com/Tonytan123/bankManageSystem.git
cd bankManageSystemmvn clean package
mvn install构建成功后,jar包位于路径/bankManageSystem/target/bankManageSystem-0.0.1-SNAPSHOT.jar
在bankManageSystem目录下执行下面的命令
chmod +x start.sh
./start.sh启动成功之后,通过http://localhost:8080 访问api
执行下面命令,执行所有测试任务
mvn test- PATH: /bank/account/manage/v1/createBankAccount
- METHOD: POST
- Content: Application/JSON
- RequestBody
{
"accountHolderName":"tucker", #用户名
"contactNumber":"123456789", #联系电话号码
"idCard": "1234567890", #身份证号
"bankCardNumber" : "123456788890", #银行卡号
"userId":"1111111", # 用户id
"emailAddress": "", # 邮箱地址
"balance" : "1.22", #账户余额
"description" : "新增账户" #简要描述
}- Response
{
"code": 200,
"data": {
"id": 1,
"userUid": "1111111",
"idCard": "1234567890",
"accountHolderName": "tucker",
"contactNumber": "123456789",
"bankCardNumber": "123456788890",
"balance": 1.22,
"status": "ACTIVE",
"description": "新增账户",
"emailAddress": "",
"createdAt": "2025-09-14T15:07:34.6885039",
"updatedAt": "2025-09-14T15:07:34.6885039"
},
"message": "ok",
"description": ""
}- PATH: /bank/account/manage/v1/updateBankAccount
- METHOD: POST
- Content: Application/JSON
- RequestBody
{
"accountHolderName":"tucker", #用户名
"contactNumber":"123456789", #联系电话号码
"idCard": "1234567890", #身份证号
"bankCardNumber" : "123456788890", #银行卡号
"userId":"1111111", # 用户id
"emailAddress": "", # 邮箱地址
"balance" : "1.22", #账户余额
"description" : "新增账户", #简要描述
"status": "ACTIVE" # 银行卡状态
}- Response
{
"code": 200,
"data": null,
"message": "ok",
"description": "update success"
}- PATH: /bank/account/manage/v1/deleteBankAccount
- METHOD: POST
- Content: Application/JSON
- RequestBody
{
"bankCardNumber" : "123456788890" #银行卡号
}- Response
{
"code": 200,
"data": null,
"message": "ok",
"description": "delete success"
}- PATH: /bank/account/manage/v1/getBankAccountPage/userId/{userId}?pageNo=#{pageNo}&&pageSize=#{pageSize}
- METHOD: GET
- Content: Application/JSON
- Response
{
"code": 200,
"data": {
"page": 1, # 当前所在页数
"pageSize": 10, #当前页数包含记录数量
"totalPage": 1, #总共多少页
"total": 1, #记录总数
"data": [
{
"accountHolderName": "tucker",
"contactNumber": "123456789",
"idCard": "1234567890",
"emailAddress": "",
"balance": 1.22,
"description": "新增账户",
"bankCardNumber": "123456788890",
"userId": "1111111"
}
],
"first": false,
"last": true
},
"message": "ok",
"description": ""
}- PATH: /bank/account/manage/v1/getBankAccountDetail/bankCardNumber/{bankCardNumber}
- METHOD: GET
- Content: Application/JSON
- Response
"code": 200,
"data": {
"id": 1,
"userUid": "1111111",
"idCard": "1234567890",
"accountHolderName": "tucker",
"contactNumber": "123456789",
"bankCardNumber": "123456788890",
"balance": 1.22,
"status": "ACTIVE",
"description": "新增账户",
"emailAddress": "",
"createdAt": "2025-09-14T15:07:34.6885039",
"updatedAt": "2025-09-14T15:07:34.6885039"
},
"message": "ok",
"description": ""- PATH: /bank/account/manage/v1/bankTransfer
- METHOD: POST
- Content: Application/JSON
- RequestBody
{
"sendAccountHolderName":"tucker", # 转出方
"sendBankCardNumber":"123456788890", #转出方银行账号
"amount":"1", # 转出额度
"receiveAccountHolderName":"tony", # 转入方
"receiveBankCardNumber":"123456788899" # 转入方银行账号
}- Response
{
"code": 200,
"data": null,
"message": "ok",
"description": "transfer cash successfully"
}