Package com.skyline.user.service.impl

Source Code of com.skyline.user.service.impl.EmailTokenServiceImpl

package com.skyline.user.service.impl;

import java.util.Date;
import java.util.List;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.skyline.user.dao.EmailTokenDao;
import com.skyline.user.model.EmailToken;
import com.skyline.user.service.EmailTokenService;
import com.skyline.user.type.EmailTokenType;

@Service("emailService")
public class EmailTokenServiceImpl implements EmailTokenService {

  @Autowired
  private EmailTokenDao emailTokenDao;

  private EmailToken genToken(long userId, String email, EmailTokenType type) {
    EmailToken token = new EmailToken();
    Date now = new Date();
    String tokenStr = genTokenStr(userId, email, type, now);
    token.setCheckTime(now);
    token.setEmail(email);
    token.setToken(tokenStr);
    token.setType(type);
    token.setUserId(userId);
    return token;
  }

  private String genTokenStr(long userId, String email, EmailTokenType type, Date now) {
    String tokenStr = userId + "-" + email + "-" + type.toString() + "-" + now.getTime();
    tokenStr = DigestUtils.md5Hex(tokenStr);
    return tokenStr;
  }

  @Override
  public EmailToken addToken(long userId, String email, EmailTokenType type) {
    List<EmailToken> uncheckedTokens = emailTokenDao.queryTokenByEmailAndTypeAndChecked(email, type, false);
    for (EmailToken ut : uncheckedTokens) {
      emailTokenDao.updateTokenChecked(ut.getId(), true);
    }
    EmailToken token = genToken(userId, email, type);
    emailTokenDao.insertToken(token);
    return token;

  }

  @Override
  public EmailToken checkToken(String tokenStr) {
    EmailToken token = emailTokenDao.queryToken(tokenStr);
    if (token == null) {
      return null;
    }
    Date now = new Date();
    if (token.getCheckTime().getTime() - now.getTime() > (long) (24 * 3600 * 1000)) {
      return null;
    }
    if (token.isChecked()) {
      return null;
    }
    // 在这里出错了,所以我把它注释掉了
    // String generatedTokenStr=genTokenStr(token.getUserId(),
    // token.getEmail(), token.getType(), token.getCheckTime());
    // if(generatedTokenStr.equals(tokenStr)==false||tokenStr.equals(token.getToken())==false){
    // return false;
    // }
    return token;
  }

  @Override
  public void updateToken(Long id) {
    emailTokenDao.updateTokenChecked(id, true);
  }

}
TOP

Related Classes of com.skyline.user.service.impl.EmailTokenServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.