Java tutorial
/** * Copyright mysoft Limited (c) 2014. All rights reserved. * This software is proprietary to and embodies the confidential * technology of mysoft Limited. Possession, use, or copying * of this software and media is authorized only pursuant to a * valid written license from mysoft or an authorized sublicensor. */ package com.mysoft.b2b.basicsystem.settings.provider; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mysoft.b2b.basicsystem.settings.api.VerifyCode; import com.mysoft.b2b.basicsystem.settings.api.VerifyCodeService; import com.mysoft.b2b.basicsystem.settings.mapper.VerifyCodeMapper; import com.mysoft.b2b.basicsystem.settings.util.VerifyCodeHelper; import com.mysoft.b2b.bizsupport.api.IdGenerationService; /** * chengp: Change to the actual description of this class * @version Revision History * <pre> * Author Version Date Changes * chengp 1.0 2014813 Created * * </pre> * @since b2b 2.0.0 */ @Service("verifyCodeService") public class VerifyCodeServiceImpl implements VerifyCodeService { private static final Log log = LogFactory.getLog(VerifyCodeServiceImpl.class); @Autowired private VerifyCodeMapper verifyCodeMapper; @Autowired private IdGenerationService idGenerationService; @Override public VerifyCode insertOrUpdateVerifyCode(VerifyCode verifyCode) { if (verifyCode != null) { if (StringUtils.isEmpty(verifyCode.getVerifyCodeId())) { VerifyCode oldVerifyCode = this.getVerifyCode(verifyCode); if (oldVerifyCode == null) { verifyCode .setVerifyCodeId(idGenerationService.getNextId("b2b_parameter.sysp_verify_code") + ""); verifyCodeMapper.insertVerifyCode(verifyCode); } else { verifyCode.setVerifyCodeId(oldVerifyCode.getVerifyCodeId()); verifyCodeMapper.updateVerifyCode(verifyCode); } } else { verifyCodeMapper.updateVerifyCode(verifyCode); } } return verifyCode; } /** 4???token??????????? * @param token IP???? * @param codeType ??1 ???2 ??? * @param validTime ???? * @return */ public VerifyCode generateVerifyCode(String token, int codeType, int validTime) { if (StringUtils.isEmpty(token)) { return null; } //1,token??DB? VerifyCode verifyCode = new VerifyCode(); Date now = new Date(); verifyCode.setToken(token); VerifyCode olderVerifyCode = getVerifyCode(verifyCode); //2,DB?token??, if (olderVerifyCode == null) { String code = getVerifyCodeStr(codeType, 4); verifyCode.setCreatedTime(now); verifyCode.setStatus(0); verifyCode.setCode(code); verifyCode.setLastValidatedTime(DateUtils.addMinutes(now, validTime)); verifyCode.setVerifyCodeId(idGenerationService.getNextId("b2b_parameter.sysp_verify_code") + ""); verifyCodeMapper.insertVerifyCode(verifyCode); return verifyCode; } //3,DB??????? if (olderVerifyCode != null && olderVerifyCode.getLastValidatedTime().before(new Date())) { String code = getVerifyCodeStr(codeType, 4); olderVerifyCode.setCode(code); } //4,DB???????????? olderVerifyCode.setLastValidatedTime(DateUtils.addMinutes(now, validTime)); verifyCodeMapper.updateVerifyCode(olderVerifyCode); return olderVerifyCode; } /** * ??? */ private void updateSysCode(VerifyCode verifyCode, int status) { if (null == verifyCode) { return; } if (1 != status) { verifyCode.setErrorTimes(verifyCode.getErrorTimes() + 1); } verifyCode.setStatus(status); insertOrUpdateVerifyCode(verifyCode); } /**???0 ?? 1???2: ?? 3??? 4 5 ?? * @param token * @param code * @return */ public Integer checkVerifyCode(String token, String code) { if (StringUtils.isEmpty(code)) { return 0; } VerifyCode verifyCode = new VerifyCode(); verifyCode.setToken(token); VerifyCode verifyCode1 = getVerifyCode(verifyCode); try { if (null != verifyCode1) { if (verifyCode1.getLastValidatedTime().before(new Date())) { //?? updateSysCode(verifyCode1, 3); return 1; } if (!verifyCode1.getCode().equalsIgnoreCase(StringUtils.trimToEmpty(code))) { //?? updateSysCode(verifyCode1, 2); return 2; } } else { return 3; } } catch (Exception e) { log.error("???" + e); return 4; } updateSysCode(verifyCode1, 1); return 5; } @Override public void deleteVerifyCode(String verifyCodeId) { verifyCodeMapper.deleteVerifyCode(verifyCodeId); } @Override public VerifyCode getVerifyCode(VerifyCode verifyCode) { VerifyCode result = null; if (verifyCode != null) { List<VerifyCode> list = null; if (StringUtils.isNotEmpty(verifyCode.getVerifyCodeId())) { list = verifyCodeMapper.getVerifyCode(verifyCode); } else if (StringUtils.isNotEmpty(verifyCode.getToken())) { list = verifyCodeMapper.getVerifyCode(verifyCode); if (list != null && list.size() > 1) { for (int i = 1, j = list.size(); i < j; i++) { this.deleteVerifyCode(list.get(i).getVerifyCodeId()); } } } else { //do nothing } result = (list == null || list.size() == 0) ? null : list.get(0); } else { //do nothing } return result; } @Override public String getVerifyCodeStr(int type, int length) { if (type == VERIFY_CODE) { return VerifyCodeHelper.getInstance().getVerifyCode(length); } else { return VerifyCodeHelper.getInstance().getVerifyCodeOnlyNum(length); } } }