Java审核账号功能

1. 引言

在许多应用程序中,账号审核是一个重要的功能。通过审核账号,管理员可以控制哪些用户可以访问应用程序。在本文中,我们将讨论如何使用Java编写一个简单的账号审核功能。

2. 功能要求

我们的账号审核功能需要满足以下要求:

  • 管理员能够添加新用户。
  • 新用户需要经过审核才能访问应用程序。
  • 管理员能够审核和修改现有用户的状态。
  • 用户能够登录并访问应用程序,但只有审核通过的用户才能执行特定操作。

3. 数据库设计

我们将使用关系型数据库来存储用户数据。我们需要创建一个名为users的表,其中包含以下列:

  • id:用户的唯一标识符。
  • username:用户名。
  • password:用户密码的哈希值。
  • status:用户的审核状态(待审核,通过,拒绝)。

下面是一个使用mermaid语法的ER图,表示我们的数据库设计:

erDiagram
    users {
        int id
        string username
        string password
        string status
    }

4. Java代码实现

首先,我们需要创建一个User类来表示用户对象。这个类将具有以下属性和方法:

public class User {
    private int id;
    private String username;
    private String password;
    private String status;

    // 构造函数
    public User(int id, String username, String password, String status) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.status = status;
    }

    // Getter 和 Setter 方法
    // ...
}

然后,我们需要创建一个UserDao类来处理与数据库交互的操作。这个类将具有以下方法:

  • addUser(User user):将一个新用户添加到数据库。
  • getUserById(int id):根据用户ID获取用户对象。
  • getUserByUsername(String username):根据用户名获取用户对象。
  • updateUser(User user):更新用户的审核状态。
  • getAllUsers():获取所有用户的列表。
import java.util.ArrayList;
import java.util.List;

public class UserDao {
    private List<User> users;

    public UserDao() {
        this.users = new ArrayList<>();
    }

    public void addUser(User user) {
        users.add(user);
    }

    public User getUserById(int id) {
        for (User user : users) {
            if (user.getId() == id) {
                return user;
            }
        }
        return null;
    }

    public User getUserByUsername(String username) {
        for (User user : users) {
            if (user.getUsername().equals(username)) {
                return user;
            }
        }
        return null;
    }

    public void updateUser(User user) {
        User existingUser = getUserById(user.getId());
        if (existingUser != null) {
            existingUser.setStatus(user.getStatus());
        }
    }

    public List<User> getAllUsers() {
        return users;
    }
}

接下来,我们创建一个AccountService类来处理账号审核逻辑。这个类将具有以下方法:

  • register(String username, String password):注册一个新用户。
  • login(String username, String password):用户登录。
  • approveUser(String username):审核通过用户。
  • rejectUser(String username):拒绝用户。
public class AccountService {
    private UserDao userDao;

    public AccountService(UserDao userDao) {
        this.userDao = userDao;
    }

    public void register(String username, String password) {
        // 检查用户名是否已存在
        if (userDao.getUserByUsername(username) != null) {
            System.out.println("Username already exists.");
            return;
        }

        // 创建新用户对象
        int newId = userDao.getAllUsers().size() + 1;
        User newUser = new User(newId, username, password, "Pending");

        // 添加用户到数据库
        userDao.addUser(newUser);
        System.out.println("User registered successfully.");
    }

    public void login(String username, String password) {
        User user = userDao.getUserByUsername(username);

        if (user == null) {
            System.out.println("Invalid username.");
            return;
        }

        if (!user.getPassword().equals(password)) {
            System.out.println("Invalid password.");
            return;
        }

        if (!user.getStatus().equals("Approved")) {
            System.out.println("Account is not approved yet.");
            return;
        }

        System.out.println("Login successful. Welcome, " + username + "!");
    }

    public void approveUser(String username) {
        User user = userDao