package io.loli.sc.server.service; import io.loli.sc.server.dao.LoginStatusDao; import io.loli.sc.server.dao.UserDao; import io.loli.sc.server.entity.LoginStatus; import io.loli.sc.server.entity.User; import java.security.NoSuchAlgorithmException; import java.util.Date; import java.util.List; import javax.inject.Inject; import javax.inject.Named; import javax.transaction.Transactional; @Named public class LoginStatusService { @Inject private LoginStatusDao loginStatusDao; @Inject private UserDao userDao; @Transactional public void save(LoginStatus ls) { loginStatusDao.save(ls); } public LoginStatus findByUId(int uid) { return loginStatusDao.findByUId(uid); } @Transactional public void update(LoginStatus ls, String newToken) { ls.setToken(newToken); } @Transactional public void update(LoginStatus ls) { loginStatusDao.update(ls); } public User findByToken(String value) { List<User> list = loginStatusDao.listByToken(value); if (list.size() == 1) { return list.get(0); } else { return null; } } @Transactional public LoginStatus getLoginStatusByUId(int uid) { LoginStatus ls = this.findByUId(uid); if (ls == null) { ls = new LoginStatus(); ls.setUser(userDao.findById(uid)); String token = null; try { token = ls.generateToken(); } catch (NoSuchAlgorithmException e) { token = ls.getUser().getEmail() + "/" + new Date().getTime(); } ls.setToken(token); this.save(ls); return ls; } else { return ls; } } @Transactional public void updateDate(User user) { LoginStatus ls = this.findByUId(user.getId()); ls.setLastLogin(new Date()); } }