package com.yami.trading.service.impl;
|
|
import com.mysql.cj.util.StringUtils;
|
import com.yami.trading.bean.log.domain.CodeLog;
|
import com.yami.trading.common.http.HttpHelper;
|
import com.yami.trading.common.manager.BlacklistIpTimeWindow;
|
import com.yami.trading.common.manager.SendCountTimeWindow;
|
import com.yami.trading.common.manager.sms.BUKASmsUtils;
|
import com.yami.trading.common.manager.sms.GoToneSmsUtils;
|
import com.yami.trading.service.EmailSendService;
|
import com.yami.trading.service.IdentifyingCodeService;
|
import com.yami.trading.service.IdentifyingCodeTimeWindowService;
|
import com.yami.trading.service.SmsSendService;
|
import com.yami.trading.service.syspara.SysparaService;
|
import com.yami.trading.service.system.CodeLogService;
|
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.lang3.StringEscapeUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.IOException;
|
import java.text.MessageFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Random;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
@Service
|
public class IdentifyingCodeServiceImpl implements IdentifyingCodeService {
|
|
|
|
private Logger logger = LoggerFactory.getLogger(IdentifyingCodeServiceImpl.class);
|
|
@Autowired
|
private SmsSendService smsSendService;
|
@Autowired
|
private EmailSendService emailSendService;
|
|
@Autowired
|
private IdentifyingCodeTimeWindowService identifyingCodeTimeWindowService;
|
|
@Autowired
|
private SendCountTimeWindow sendCountTimeWindow;
|
|
|
@Autowired
|
private BlacklistIpTimeWindow blacklistIpTimeWindow;
|
|
@Autowired
|
private SysparaService sysparaService;
|
|
@Autowired
|
private CodeLogService codeLogService;
|
|
private Map<String, Integer> ipCache = new ConcurrentHashMap<String, Integer>();
|
|
@Autowired
|
GoToneSmsUtils goToneSmsUtils;
|
|
@Autowired
|
BUKASmsUtils bukasmsUtils;
|
|
@Override
|
public void send(String target, String ip) throws IOException {
|
String code;
|
//是否每次发送的code都不一样
|
boolean send_code_always_new = this.sysparaService.find("send_code_always_new").getBoolean();
|
|
Object object = this.identifyingCodeTimeWindowService.getAuthCode(target);
|
if (object == null || send_code_always_new) {
|
Random random = new Random();
|
code = String.valueOf(random.nextInt(999999) % 900000 + 100000);
|
} else {
|
code = String.valueOf(object);
|
}
|
|
emailSendService.sendEmail(target,null, code);
|
logger.info(MessageFormat.format("email--target:{0},code:{1},ip:{2}", target, code, ip));
|
this.identifyingCodeTimeWindowService.putAuthCode(target, code);
|
CodeLog codeLog = new CodeLog();
|
codeLog.setTarget(target);
|
codeLog.setLog("发送地址:" + target + ",验证码:" + code + ",ip地址:" + ip);
|
codeLog.setCreateTime(new Date());
|
codeLogService.save(codeLog);
|
}
|
}
|