package io.loli.sc.server.service;
import io.loli.sc.server.dao.UserDao;
import io.loli.sc.server.entity.User;
import io.loli.sc.server.exception.DBException;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Named("userService")
public class UserService {
@Inject
private UserDao userDao;
/**
* 把User实体持久化
*
* @see UserDao#save(User)
*/
@Transactional(propagation = Propagation.REQUIRED)
public void save(User user) {
if (user.getId() == 0 && this.findByEmail(user.getEmail()) != null) {
throw new DBException("已经存在相同的邮箱");
} else {
userDao.save(user);
}
}
/**
* 更新User实体
*
* @param user 需要更新的实体
* @return 更新后的实体
* @see UserDao#update(User)
*/
@Transactional(propagation = Propagation.REQUIRED)
public User update(User user) {
return userDao.update(user);
}
/**
* 根据指定的email查询出User, 如果无此User则返回null, 如果有多个, 则返回第一个
*
* @param email
* @return 查询出的User实体
* @see UserDao#findByEmail(String)
*/
public User findByEmail(String email) {
User result = null;
result = userDao.findByEmail(email);
return result;
}
/**
* 根据指定的id(User的主键)查询出User
*
* @param id
* @return 如果查询不出, 返回null
* @see UserDao#findById(int)
*/
public User findById(int id) {
User result = userDao.findById(id);
return result;
}
@Transactional
public void updateNickname(User user, String nickName) {
user.setName(nickName);
user = this.findById(user.getId());
user.setName(nickName);
}
}