📜  在线汇款安得拉银行 - Java (1)

📅  最后修改于: 2023-12-03 15:23:36.470000             🧑  作者: Mango

在线汇款安得拉银行 - Java

在这个程序中,我们使用Java编写了一个在线汇款系统,它允许用户在安全的环境中进行银行转账。该程序基于Java语言和Spring框架开发,使用MySQL数据库存储所有用户信息,包括账户余额和转账历史记录。该程序还包括一个简单的用户界面,用户可以通过该界面进行转账操作和查询转账记录。

主要功能

以下是该程序的主要功能:

  1. 用户注册和登录:用户可以通过注册页面创建新账户,或者使用现有账户登录到系统中。

  2. 添加收款人:用户可以在系统中添加一名收款人,并将其名称和银行账户信息保存在系统中。

  3. 发起转账:用户可以通过输入收款人的信息和转账金额发起一笔转账。该程序会自动检查用户账户余额是否充足,并记录转账历史记录。

  4. 查询转账历史记录:用户可以在系统中查询以前发起的转账记录。该程序会显示每个转账的详细信息,包括收款人信息、转账金额和日期。

技术栈

以下是该程序所使用的主要技术栈:

  • Java 11
  • Spring Boot 2.4.0
  • MySQL 8.0.22
  • Thymeleaf 模板引擎
  • Bootstrap 5.0.0
代码片段

以下是该程序的一些重要代码片段:

  1. 定义收款人模型
@Entity
@Table(name = "payee")
public class Payee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;
    private String account;
    private String bank;
    private String email;

    // getter 和 setter 略去
}
  1. 定义转账记录模型
@Entity
@Table(name = "transfer")
public class Transfer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "payee_id")
    private Payee payee;

    private double amount;
    private String comment;
    private Date date;

    // getter 和 setter 略去
}
  1. 发起转账的控制器
@Controller
public class TransferController {
    @Autowired
    private UserService userService;

    @Autowired
    private PayeeService payeeService;

    @Autowired
    private TransferService transferService;

    @PostMapping("/transfer")
    public String doTransfer(@ModelAttribute("transfer") Transfer transfer,
                             Principal principal, Model model) {
        User user = userService.findByUsername(principal.getName());
        Payee payee = payeeService.findById(transfer.getPayee().getId());
        double balance = user.getBalance();

        if (balance < transfer.getAmount()) {
            model.addAttribute("error", "余额不足");
            return "transfer";
        }

        user.setBalance(balance - transfer.getAmount());
        transfer.setUser(user);
        transfer.setPayee(payee);
        transfer.setDate(new Date());

        userService.save(user);
        transferService.save(transfer);

        return "redirect:/history";
    }
}
结语

该程序演示了如何使用Java和Spring框架构建一个简单的在线汇款系统,其代码是开放源码的。为了确保安全,我们强烈建议您在运行该程序之前仔细审查代码并采取必要的保护措施。