@Slf4j
@RestController
@RequestMapping(value = "/Email")
public class EmailApi {
@Autowired
private EmailService emailservice;
@GetMapping("/workEmailOnce")
public ResponseResult workEmailOnce(@RequestParam("email") String email) {
log.info("workEmailOnce == >"+email);
return emailservice.workEmailOnce(email);
}
}
代码大概是这样,一个controller下面有一个接口,然后用户点击按钮访问这个接口,这个接口的作用是给用户发送一封验证码邮件,但是问题来了,在用户第一次访问这个接口后的4-10分钟内这个接口会自己奇妙的运行一次,因为这个接口会往mysql存数据,所以发现了这个问题,然后app端的话,点击按钮进入页面啥的都有收集log,我看log确定用户就是真实的访问了一次,第二次不知道什么原因自己执行了,然后数据库里就有两条数据。今天早上发现一个更离谱的,用户凌晨00:40访问了一次,然后刚才9点半这个接口又执行了一次,同一个qq邮箱,说明是一个用户了,我看app的日志,除了凌晨那次开始这个用户压根就没有打开app,迷惑住了,用户可能会说我连你app都没打开,你居然给我发验证码


8569这个用户就是40分真实访问了一次,然后44:42接口自己又跑了一次,然后今天早上这个3569又跑了一次

项目里面没有定时任务,这个workEmailOnce也是Controller下的get方法,log打在了其下面
你去看看这个workEmailOnce()方法具体实现,比如是不是异步执行,结束后没销毁掉什么的