123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package com.company;
- import java.io.Serializable;
- import java.util.Random;
- import java.util.UUID;
- public class Bill implements Serializable {
- /**
- * Ссылка на следующий элемент списка или null
- */
- public Bill next;
- /**
- * Текущий баланс счёта
- */
- private double balance;
- /**
- * Номер счёта (карты). Генерируется автоматически при открытии счёта.
- */
- private String number;
- /**
- * Пин-код для авторизации. Генерируется рандомно при открытии счёта.
- */
- private String pincode;
- /**
- * Уникальный идентификатор пользователя, к которому принадлежит данный счёт.
- */
- private UUID uuid;
- /**
- * Конструктор. Открытие нового счёта.
- *
- * @param balance первоначальный баланс
- * @param num порядковый номер нового клиента
- */
- public Bill(UUID userUUID, double balance, int num) {
- this.balance = balance;
- this.uuid = userUUID;
- // Генерация пин-кода
- Random random = new Random(System.currentTimeMillis());
- pincode = String.format("%04d", random.nextInt(10000));
- // Генерация номера карты
- number = String.format("%04d %04d %04d %04d", 3202, 2200, 5420, num);
- next = null;
- }
- /**
- * Проверка пин-кода
- *
- * @param pin пин-код для сравнения
- * @return true, если пин-коды совпадают
- */
- public boolean checkPincode(String pin) {
- return pincode.equals(pin);
- }
- /**
- * Получить текущий баланс счёта
- *
- * @return баланс
- */
- public double getBalance() {
- return balance;
- }
- /**
- * Пополнить баланс
- *
- * @param value пополняемое значение
- */
- public void deposit(double value) {
- if (value > 0) {
- balance += value;
- }
- }
- /**
- * Списать со счёта
- *
- * @param value списываемое значение
- */
- public void withdraw(double value) {
- if (value > 0) {
- if (balance >= value) {
- balance -= value;
- }
- }
- }
- /**
- * Получить номер счёта (карты)
- * @return номер карты
- */
- public String getNumber() {
- return number;
- }
- /**
- * Получить регистрационные данные
- *
- * @return структура с номером карты и пин-кодом
- */
- public SecretData getSecretData() {
- return new SecretData(number, pincode);
- }
- }
|