package com.yami.trading.api.controller;
|
|
import com.mysql.cj.util.StringUtils;
|
import com.yami.trading.bean.log.domain.CodeLog;
|
import com.yami.trading.common.domain.Result;
|
import com.yami.trading.common.manager.email.EmailMessage;
|
import com.yami.trading.common.util.IPHelper;
|
import com.yami.trading.service.IdentifyingCodeService;
|
import com.yami.trading.service.IdentifyingCodeTimeWindowService;
|
import com.yami.trading.service.InternalEmailSenderService;
|
import com.yami.trading.service.system.CodeLogService;
|
import com.yami.trading.service.syspara.SysparaService;
|
import io.swagger.annotations.Api;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.text.MessageFormat;
|
import java.util.Date;
|
import java.util.Random;
|
|
@RequestMapping("api/idcode")
|
@RestController
|
@Api(tags = "idcode")
|
public class ApiIdentifyingCodeController {
|
|
private static final Logger logger = LoggerFactory.getLogger(ApiIdentifyingCodeController.class);
|
|
@Autowired
|
private IdentifyingCodeService identifyingCodeService;
|
|
@Autowired
|
private InternalEmailSenderService internalEmailSenderService;
|
|
@Autowired
|
private IdentifyingCodeTimeWindowService identifyingCodeTimeWindowService;
|
|
@Autowired
|
private SysparaService sysparaService;
|
|
@Autowired
|
private CodeLogService codeLogService;
|
|
@RequestMapping("execute")
|
public Result<?> execute(@RequestParam String target) {
|
String ip = IPHelper.getIpAddr();
|
|
if (target != null && target.indexOf("@") != -1) {
|
String send_code_text = this.sysparaService.find("send_code_text").getSvalue();
|
if (StringUtils.isNullOrEmpty(send_code_text)) {
|
logger.error("send_code_text 未配置");
|
return Result.succeed();
|
}
|
|
boolean send_code_always_new = this.sysparaService.find("send_code_always_new").getBoolean();
|
Object object = this.identifyingCodeTimeWindowService.getAuthCode(target);
|
String code;
|
if (object == null || send_code_always_new) {
|
Random random = new Random();
|
code = String.valueOf(random.nextInt(999999) % 900000 + 100000);
|
} else {
|
code = String.valueOf(object);
|
}
|
|
EmailMessage emailMessage = new EmailMessage();
|
emailMessage.setTomail(target);
|
emailMessage.setContent(code);
|
internalEmailSenderService.send(emailMessage);
|
|
this.identifyingCodeTimeWindowService.putAuthCode(target, code);
|
logger.info(MessageFormat.format("email--target:{0},code:{1},ip:{2}", target, code, ip));
|
CodeLog codeLog = new CodeLog();
|
codeLog.setTarget(target);
|
codeLog.setLog("发送地址:" + target + ",验证码:" + code + ",ip地址:" + ip);
|
codeLog.setCreateTime(new Date());
|
codeLogService.save(codeLog);
|
} else {
|
identifyingCodeService.send(target, ip);
|
}
|
return Result.succeed(null);
|
}
|
|
}
|