package com.fjhx.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.fjhx.base.R; import com.fjhx.config.redis.RedisCache; import com.fjhx.constants.RedisConstant; import com.fjhx.entity.EmailInfo; import com.fjhx.service.IAccountService; import com.fjhx.vo.BindingVo; import com.fjhx.vo.ListenerVo; import com.fjhx.vo.ProgressVo; import com.fjhx.vo.SubmitVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/account") public class AccountController { @Autowired private IAccountService accountService; /** * 绑定邮箱 */ @PostMapping("/binding") public R binding(@RequestBody BindingVo bindingVo) { EmailInfo emailInfo = accountService.binding(bindingVo); return R.ok(emailInfo); } /** * 查看用户账号同步进度 */ @GetMapping("getAsyncProgress") public R getAsyncProgress(@RequestParam("email") String email) { ProgressVo progressVo = RedisCache.get(RedisConstant.PROGRESS_KEY + email); if (ObjectUtils.isNull(progressVo)) { return R.ok(); } if (progressVo.getPercentage() >= 100) { RedisCache.delete(RedisConstant.PROGRESS_KEY + email); } return R.ok(progressVo); } /** * 监听邮件事件 */ @PostMapping("/listener") public R post(@RequestBody ListenerVo listenerVo) { accountService.listener(listenerVo); return R.ok(); } /** * 发送邮件 */ @PostMapping("submit") public R submit(@RequestBody SubmitVo submitVo) { System.out.println(JSON.toJSONString(submitVo)); accountService.submit(submitVo); return R.ok(); } }