package net.tooan.ynpay.core.ejb.user;
import com.google.gson.Gson;
import net.tooan.ynpay.commons.BusinessException;
import net.tooan.ynpay.commons.YnpayJndiConstants;
import net.tooan.ynpay.commons.helper.Encrypt;
import net.tooan.ynpay.commons.helper.Token;
import net.tooan.ynpay.commons.webapp.WebConstants;
import net.tooan.ynpay.core.ejb.dao.user.SessionDao;
import net.tooan.ynpay.core.ejb.helper.MongoDBInterceptorBean;
import net.tooan.ynpay.user.agent.bean.User;
import net.tooan.ynpay.user.agent.facade.SessionFacade;
import net.tooan.ynpay.user.agent.model.Session;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-10-14
* Time: 下午9:08
*/
@Stateless(name = YnpayJndiConstants.Mongo_Session_Facade)
@Interceptors(MongoDBInterceptorBean.class)
public class SessionFacadeBean implements SessionFacade {
private static final Gson gson = new Gson();
@Override
public Session getByToken(String token) throws BusinessException {
return SessionDao.dao.get(token);
}
@Override
public Session getByUsername(String username) throws Exception {
return SessionDao.dao.findOne("user.username", username);
}
@Override
public void removeByToken(String token) throws Exception {
SessionDao.dao.remove("token", token);
}
@Override
public Session save(User user) throws Exception {
return save(user, WebConstants.expire);
}
@Override
public Session save(User user, int expire) throws Exception {
return save(user, expire, false);
}
@Override
public Session save(User user, boolean single) throws Exception {
return save(user, WebConstants.expire, single);
}
@Override
public Session save(User user, int expire, boolean single) throws Exception {
if (single) {
SessionDao.dao.remove("user.username", user.getUsername());
}
return SessionDao.dao.add(user, Token.create(Encrypt.md5(user.toString())), expire);
}
}