public class LoginServiceImpl implementsLoginService {private static final Logger logger = Logger.getLogger(LoginServiceImpl.class);/*** 业务模块-用户Manager接口*/
privatePerUsersManager perUsersManager;/*** 业务模块- 登录票据Manager接口*/
privateLoginTicketManager loginTicketManager;/*** 业务模块 - 系统接口*/
privatePerSysManager perSysManager;/*** 默认失效时间是1个月,单位是秒*/
private Long expireTime = 30 * 24 * 3600l;
@Overridepublic Result login(LoginParam loginParam, booleanpdDecrpty) {
Result result= newResult();try{//验证参数是否为空,为空返回自定义错误信息(Code 、 Message)
if (null ==loginParam|| !StringUtils.validateStringNotNull(loginParam.getUserCode())|| !StringUtils.validateStringNotNull(loginParam.getUserPd())
) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_OBJ_NULL_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_OBJ_NULL_MESSAGE);returnresult;
}
PerUsers perUsers=perUsersManager.getUserPd(loginParam.getUserCode());if (perUsers != null) {if (perUsers.getUserStatus() == null || perUsers.getUserStatus() == 1) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_USER_STATUS_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_STATUS_ERROR_MESSAGE);returnresult;
}
String userPd=loginParam.getUserPd();//把明文密码+随机盐加密和数据库里取到的密码进行比较,如果相同登录成功
String successPwd =UserPdEncryptUtils.encryPd(userPd, perUsers.getSalt());//登录成功,返回
if(successPwd.equals(perUsers.getUserPd())) {
LoginTicket loginTicket= newLoginTicket();long nowTime =System.currentTimeMillis();long expire = nowTime + expireTime * 1000;
loginTicket.setExpireTime(newDate(expire));
loginTicket.setUserCode(perUsers.getUserCode());
loginTicket.setCreateUser(perUsers.getUserCode());
loginTicket.setUpdateUser(perUsers.getUserCode());
loginTicket.setTicket(createTicket());
loginTicketManager.insertLoginTicket(loginTicket);
result.setSuccess(true);
result.setResultCode(BaseConstants.SERVICE_RESULT_SUCCESS_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_OBJ_DEFAULT_KEY,
loginTicket.getTicket());
}else{
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_USER_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_ERROR_MESSAGE);returnresult;
}
}else{
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_USER_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_ERROR_MESSAGE);returnresult;
}
}catch(Exception e) {
logger.error("LoginServiceImpl!login -> error!!", e);
result.setSuccess(false);
result.setResultCode(LoginConstants.SERVICE_RETURN_FALSE_CODE);
}returnresult;
}
@OverridepublicResult verifyTicket(TicketParam ticketParam) {
Result result= newResult();try{//验证参数是否为空,为空返回自定义错误信息(Code 、 Message)
if (null ==ticketParam|| !StringUtils.validateStringNotNull(ticketParam.getTicket())
) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_OBJ_NULL_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_OBJ_NULL_MESSAGE);returnresult;
}
LoginTicket loginTicket=loginTicketManager.getLoginTicket(ticketParam.getTicket());if (loginTicket == null) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;
}if (loginTicket.getExpireTime().before(newDate())) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;
}
PerUsers perUsers=perUsersManager.getPerUsers(loginTicket.getUserCode());if (perUsers == null) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;
}if (perUsers.getUserStatus() == null || perUsers.getUserStatus() == 1) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_USER_STATUS_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_STATUS_ERROR_MESSAGE);returnresult;
}
PerUsersDto perUsersVo= newPerUsersDto();
perUsersVo.setId(perUsers.getId());
perUsersVo.setUserCode(perUsers.getUserCode());//设置页面需要的对象
result.setResultCode(BaseConstants.SERVICE_RESULT_SUCCESS_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_OBJ_DEFAULT_KEY, perUsersVo);
result.setSuccess(true);
}catch(Exception e) {
logger.error("LoginServiceImpl!login -> error!!", e);
result.setSuccess(false);
}returnresult;
}
@OverridepublicResult loginOut(TicketParam ticketParam) {
Result result= newResult();try{//验证参数是否为空,为空返回自定义错误信息(Code 、 Message)
if (null ==ticketParam|| !StringUtils.validateStringNotNull(ticketParam.getTicket())
) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_OBJ_NULL_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_OBJ_NULL_MESSAGE);returnresult;
}
LoginTicket loginTicket= newLoginTicket();//loginTicketManager.getLoginTicket(ticketParam.getTicket());
if (loginTicket == null) {
result.setSuccess(false);
result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;
}
LoginTicket update= newLoginTicket();
update.setUpdateUser(loginTicket.getUserCode());
update.setTicket(loginTicket.getTicket());//loginTicketManager.deleteTicket(update);//设置页面需要的对象
result.setResultCode(BaseConstants.SERVICE_RESULT_SUCCESS_CODE);
result.addDefaultModel(BaseConstants.SERVICE_RETURN_OBJ_DEFAULT_KEY, BaseConstants.SERVICE_RESULT_SUCCESS_MESSAGE);
result.setSuccess(true);
}catch(Exception e) {
logger.error("LoginServiceImpl!loginOut -> error!!", e);
result.setSuccess(false);
}returnresult;
}private String createTicket() throwsNoSuchAlgorithmException {returnDigestUtils.md5(RandomTokenUtils.createToken());
}public voidsetExpireTime(Long expireTime) {this.expireTime =expireTime;
}public voidsetPerUsersManager(PerUsersManager perUsersManager) {this.perUsersManager =perUsersManager;
}public voidsetLoginTicketManager(LoginTicketManager loginTicketManager) {this.loginTicketManager =loginTicketManager;
}public voidsetPerSysManager(PerSysManager perSysManager) {this.perSysManager =perSysManager;
}
}