//package cn.exrick.xboot.base.controller.common;
|
//
|
//import cn.exrick.xboot.core.common.annotation.RateLimiter;
|
//import cn.exrick.xboot.core.common.constant.CommonConstant;
|
//import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
|
//import cn.exrick.xboot.core.common.sms.SmsUtil;
|
//import cn.exrick.xboot.core.common.utils.CommonUtil;
|
//import cn.exrick.xboot.core.common.utils.CreateVerifyCode;
|
//import cn.exrick.xboot.core.common.utils.IpInfoUtil;
|
//import cn.exrick.xboot.core.common.utils.ResultUtil;
|
//import cn.exrick.xboot.core.common.vo.Result;
|
//import cn.exrick.xboot.core.service.SettingService;
|
//import cn.exrick.xboot.core.service.UserService;
|
//import cn.hutool.core.util.IdUtil;
|
//import cn.hutool.core.util.StrUtil;
|
//import io.swagger.annotations.Api;
|
//import io.swagger.annotations.ApiOperation;
|
//import lombok.extern.slf4j.Slf4j;
|
//import org.springframework.beans.factory.annotation.Autowired;
|
//import org.springframework.transaction.annotation.Transactional;
|
//import org.springframework.web.bind.annotation.PathVariable;
|
//import org.springframework.web.bind.annotation.RequestMapping;
|
//import org.springframework.web.bind.annotation.RequestMethod;
|
//import org.springframework.web.bind.annotation.RestController;
|
//
|
//import javax.servlet.http.HttpServletRequest;
|
//import javax.servlet.http.HttpServletResponse;
|
//import java.io.IOException;
|
//import java.util.concurrent.TimeUnit;
|
//
|
///**
|
// * @author Exrickx
|
// */
|
//@Api(tags = "验证码接口")
|
//@RequestMapping("/xboot/common/captcha")
|
//@RestController
|
//@Transactional
|
//@Slf4j
|
//public class CaptchaController {
|
//
|
// @Autowired
|
// private SmsUtil smsUtil;
|
//
|
// @Autowired
|
// private RedisTemplateHelper redisTemplate;
|
//
|
// @Autowired
|
// private IpInfoUtil ipInfoUtil;
|
//
|
// @Autowired
|
// private UserService userService;
|
//
|
// @Autowired
|
// private SettingService settingService;
|
//
|
// @RequestMapping(value = "/init", method = RequestMethod.GET)
|
// @ApiOperation(value = "初始化验证码")
|
// public Result<Object> initCaptcha() {
|
//
|
// String captchaId = IdUtil.simpleUUID();
|
// String code = new CreateVerifyCode().randomStr(4);
|
// // 缓存验证码
|
// redisTemplate.set(captchaId, code, 2L, TimeUnit.MINUTES);
|
// return ResultUtil.data(captchaId);
|
// }
|
//
|
// @RequestMapping(value = "/draw/{captchaId}", method = RequestMethod.GET)
|
// @ApiOperation(value = "根据验证码ID获取图片")
|
// public void drawCaptcha(@PathVariable("captchaId") String captchaId,
|
// HttpServletResponse response) throws IOException {
|
//
|
// // 得到验证码 生成指定验证码
|
// String code = redisTemplate.get(captchaId);
|
// CreateVerifyCode vCode = new CreateVerifyCode(116, 36, 4, 10, code);
|
// response.setContentType("image/png");
|
// vCode.write(response.getOutputStream());
|
// }
|
//
|
// @RequestMapping(value = "/sendRegistSms/{mobile}", method = RequestMethod.GET)
|
// @ApiOperation(value = "发送注册短信验证码")
|
// public Result<Object> sendRegistSmsCode(@PathVariable String mobile, HttpServletRequest request) {
|
//
|
// return sendSms(mobile, 2, 0, request);
|
// }
|
//
|
// @RequestMapping(value = "/sendLoginSms/{mobile}", method = RequestMethod.GET)
|
// @ApiOperation(value = "发送登录短信验证码")
|
// @RateLimiter(name="sendLoginSms", rate = 1, ipLimit = true)
|
// public Result<Object> sendLoginSmsCode(@PathVariable String mobile, HttpServletRequest request) {
|
//
|
// return sendSms(mobile, 1, 0, request);
|
// }
|
//
|
// @RequestMapping(value = "/sendResetSms/{mobile}", method = RequestMethod.GET)
|
// @ApiOperation(value = "发送重置密码短信验证码")
|
// public Result<Object> sendResetSmsCode(@PathVariable String mobile, HttpServletRequest request) {
|
//
|
// return sendSms(mobile, 1, 5, request);
|
// }
|
//
|
// @RequestMapping(value = "/sendEditMobileSms/{mobile}", method = RequestMethod.GET)
|
// @ApiOperation(value = "发送修改手机短信验证码")
|
// public Result<Object> sendEditMobileSmsCode(@PathVariable String mobile, HttpServletRequest request) {
|
//
|
// if (userService.findByMobile(mobile) != null) {
|
// return ResultUtil.error("该手机号已绑定账户");
|
// }
|
// return sendSms(mobile, 0, 0, request);
|
// }
|
//
|
// /**
|
// * @param mobile 手机号
|
// * @param range 发送范围 0发送给所有手机号 1只发送给注册手机 2只发送给未注册手机
|
// * @param templateType 0通用模版 1注册 2登录 3修改手机 4修改密码 5重置密码 6工作流模版
|
// */
|
// public Result<Object> sendSms(String mobile, Integer range, Integer templateType, HttpServletRequest request) {
|
//
|
// if (range == 1 && userService.findByMobile(mobile) == null) {
|
// return ResultUtil.error("手机号未注册");
|
// } else if (range == 2 && userService.findByMobile(mobile) != null) {
|
// return ResultUtil.error("手机号已注册");
|
// }
|
// // IP限流 1分钟限1个请求
|
// String key = "sendSms:" + ipInfoUtil.getIpAddr(request);
|
// String value = redisTemplate.get(key);
|
// if (StrUtil.isNotBlank(value)) {
|
// return ResultUtil.error("您发送的太频繁啦,请稍后再试");
|
// }
|
// // 生成6位数验证码
|
// String code = CommonUtil.getRandomNum();
|
// // 缓存验证码
|
// redisTemplate.set(CommonConstant.PRE_SMS + mobile, code, 5L, TimeUnit.MINUTES);
|
// // 发送验证码
|
// smsUtil.sendCode(mobile, code, templateType);
|
// // 请求成功 标记限流
|
// redisTemplate.set(key, "sended", 1L, TimeUnit.MINUTES);
|
// return ResultUtil.success("发送短信验证码成功");
|
// }
|
//}
|