|
|
package com.yj.service.impl;
|
|
|
|
|
|
import com.yj.bean.Book;
|
|
|
import com.yj.bean.Page;
|
|
|
import com.yj.bean.User;
|
|
|
import com.yj.dao.UserDao;
|
|
|
import com.yj.dao.impl.UserDaoImpl;
|
|
|
import com.yj.service.UserService;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @author yj
|
|
|
* @create 2020-08-21 15:34
|
|
|
*/
|
|
|
public class UserServiceImpl implements UserService {
|
|
|
|
|
|
// 用户数据访问对象,使用UserDaoImpl实现
|
|
|
private UserDao userDao = new UserDaoImpl();
|
|
|
|
|
|
/**
|
|
|
* 注册用户
|
|
|
* @param user 要注册的用户对象
|
|
|
*/
|
|
|
@Override
|
|
|
public void registUser(User user) {
|
|
|
userDao.saveUser(user); // 保存用户信息
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用户登录
|
|
|
* @param user 包含用户名和密码的用户对象
|
|
|
* @return 如果登录成功返回用户对象,否则返回null
|
|
|
*/
|
|
|
@Override
|
|
|
public User login(User user) {
|
|
|
return userDao.querybyUsernameAndPassword(user.getUsername(), user.getPassword()); // 验证用户名和密码
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 检查用户名是否存在
|
|
|
* @param username 要检查的用户名
|
|
|
* @return 如果不存在则返回false,反之则返回true
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean existsUsername(String username) {
|
|
|
if (userDao.querybyUsername(username) == null) {
|
|
|
return false; // 用户名不存在
|
|
|
} else {
|
|
|
return true; // 用户名存在
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加新用户
|
|
|
* @param user 要添加的用户对象
|
|
|
*/
|
|
|
@Override
|
|
|
public void addUser(User user) {
|
|
|
userDao.addUser(user); // 调用数据访问层添加用户
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据用户ID删除用户
|
|
|
* @param i 用户ID
|
|
|
*/
|
|
|
@Override
|
|
|
public void deleteUserById(int i) {
|
|
|
userDao.deleteUserById(i); // 调用数据访问层删除用户
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新用户信息
|
|
|
* @param user 要更新的用户对象
|
|
|
*/
|
|
|
@Override
|
|
|
public void updateUser(User user) {
|
|
|
userDao.updateUser(user); // 调用数据访问层更新用户
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据用户ID查询用户信息
|
|
|
* @param id 用户ID
|
|
|
* @return 返回对应的用户对象,如果用户不存在则返回null
|
|
|
*/
|
|
|
@Override
|
|
|
public User queryUserById(Integer id) {
|
|
|
return userDao.queryUserById(id); // 调用数据访问层查询用户
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询所有用户的信息
|
|
|
* @return 返回用户列表
|
|
|
*/
|
|
|
@Override
|
|
|
public List<User> queryUsers() {
|
|
|
return userDao.queryUsers(); // 调用数据访问层获取所有用户
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Page<User> page(int pageNo, int pageSize) {
|
|
|
Page<User> page = new Page<User>(); // 创建一个新的分页对象
|
|
|
|
|
|
// 设置每页记录数
|
|
|
page.setPageSize(pageSize); // 将每页的记录数设置为方法传入的pageSize
|
|
|
|
|
|
// 设置总记录数
|
|
|
Integer pageTotalCount = userDao.queryForPageTotalCount(); // 从数据库中获取总记录数
|
|
|
page.setPageTotalCount(pageTotalCount); // 将总记录数设置到分页对象中
|
|
|
|
|
|
// 计算总页码
|
|
|
Integer pageTotal = pageTotalCount / pageSize; // 根据总记录数和每页大小计算总页数
|
|
|
if (pageTotalCount % pageSize > 0) { // 如果有剩余记录,则总页数加一
|
|
|
pageTotal += 1;
|
|
|
}
|
|
|
|
|
|
// 设置当前页
|
|
|
if (pageNo > pageTotal) { // 如果请求的当前页码大于总页码,则设置为最后一页
|
|
|
pageNo = pageTotal;
|
|
|
}
|
|
|
if (pageNo < 1) { // 如果请求的当前页码小于1,则设置为第一页
|
|
|
pageNo = 1;
|
|
|
}
|
|
|
page.setPageNo(pageNo); // 将最终确定的当前页码设置到分页对象中
|
|
|
|
|
|
// 设置总页码
|
|
|
page.setPageTotal(pageTotal); // 将计算出来的总页码设置到分页对象中
|
|
|
|
|
|
// 计算当前页的起始记录索引
|
|
|
int begin = (page.getPageNo() - 1) * pageSize; // 计算当前页的开始位置
|
|
|
// 查询当前页的数据项
|
|
|
List<User> items = userDao.queryForPageItems(begin, pageSize); // 从数据库中查询当前页的数据
|
|
|
page.setItems(items); // 将查询到的数据设置到分页对象中
|
|
|
|
|
|
return page; // 返回包含分页信息的分页对象
|
|
|
}
|
|
|
|
|
|
}
|