当前位置: 首页 > news >正文

做游戏代练的网站项目投资网

做游戏代练的网站,项目投资网,网站ui案例,策划书模板word1.新建操作类型枚举&#xff08;这里的IEnum是我自定义的http请求拦截接口&#xff0c;不需要的话可以不用实现&#xff09; Getter AllArgsConstructor public enum OperationType implements IEnum<Integer> {/*** 注册*/SIGN_UP(0),/*** 密码登录*/LOGIN_BY_PWD(1),/…

1.新建操作类型枚举(这里的IEnum是我自定义的http请求拦截接口,不需要的话可以不用实现)

@Getter
@AllArgsConstructor
public enum OperationType implements IEnum<Integer> {/*** 注册*/SIGN_UP(0),/*** 密码登录*/LOGIN_BY_PWD(1),/*** 验证码登录*/LOGIN_BY_SMS(2),/*** 忘记密码*/FORGET_PWD(3),/*** 修改密码*/MODIFY_PWD(4);@JsonValueprivate final int code;@Overridepublic Integer getCode(){return code;}
}

2.新建校验注解

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SmsValidate {/*** 操作类型* @return*/OperationType operationType() default OperationType.LOGIN_BY_PWD;
}

3.创建验证码校验接口

public interface ISmsValidate {/*** 短信验证码手机号* @return*/String mobile();/*** 短信验证码内容* @return*/String smsCode();
}

4.controller方法请求参数,实现ISmsValidate接口

@Data
public class LoginBySmsDto implements ISmsValidate {@NotBlank(message = "用户名/手机号不能为空")@IsMobileprivate String username;@NotBlank(message = "短信验证码不能为空")private String code;@Overridepublic String mobile() {return this.getUsername();}@Overridepublic String smsCode() {return this.getCode();}
}

5.添加aop切面类

@Aspect
@Component
public class SmsValidateAop {@Autowiredprivate RedisTemplate<String,Object> redisTemplate;@Pointcut(value = "@annotation(com.tfyt.common.annotation.SmsValidate)")public void pointCut(){}@Before(value = "pointCut()")public void before(JoinPoint joinPoint){SmsObj smsObj = getSmsObj(joinPoint);Object cacheCode = redisTemplate.opsForValue().get(RedisKeyConstant.CACHE_SMS_CODE + smsObj.getOperationType() + ":" + smsObj.getMobile());BusinessAssert.notTrue(Objects.equals(cacheCode,smsObj.getCode()),"手机验证码不正确");}@AfterReturning(value = "pointCut()")public void after(JoinPoint joinPoint){SmsObj smsObj = getSmsObj(joinPoint);redisTemplate.delete(RedisKeyConstant.CACHE_SMS_CODE + smsObj.getOperationType() + ":" + smsObj.getMobile());}@Data@AllArgsConstructor@NoArgsConstructorprivate static class SmsObj{private String mobile;private String code;private Integer operationType;}private SmsObj getSmsObj(JoinPoint joinPoint){MethodSignature signature = (MethodSignature) joinPoint.getSignature();SmsValidate annotation = signature.getMethod().getAnnotation(SmsValidate.class);BusinessAssert.isNull(annotation,"系统异常:未查询到注解");BusinessAssert.isNull(annotation.operationType(),"系统异常:未配置操作类型");Object[] args = joinPoint.getArgs();ISmsValidate arg = null;if(args[0] instanceof ISmsValidate){arg = (ISmsValidate) args[0];}BusinessAssert.isNull(arg,"请输入用户名和手机验证码");return new SmsObj(arg.mobile(), arg.smsCode(), annotation.operationType().getCode());}
}

6.往controller的方法上注解

@SmsValidate(operationType = OperationType.LOGIN_BY_SMS)

重启springboot项目,调用接口即可生效,校验通过后会自动删除redis缓存

补一个自定义断言类

public class BusinessAssert {public static void notTrue(boolean condition, String msg){isTrue(!condition, msg);}public static void isTrue(boolean condition, String msg){if(condition){throw new BusinessException(HttpStatus.BAD_REQUEST.value(),msg);}}public static void nonNull(Object object,String msg){if(null!=object){throw new BusinessException(HttpStatus.BAD_REQUEST.value(),msg);}}public static void isNull(Object object,String msg){if(null==object){throw new BusinessException(HttpStatus.BAD_REQUEST.value(),msg);}}public static void isCollectionEmpty(Collection<?> collection,String msg){if(collection == null || collection.isEmpty()){throw new BusinessException(HttpStatus.BAD_REQUEST.value(),msg);}}public static void isCollectionNotEmpty(Collection<?> collection,String msg){if(collection != null && !collection.isEmpty()){throw new BusinessException(HttpStatus.BAD_REQUEST.value(),msg);}}

http://www.yayakq.cn/news/809588/

相关文章:

  • 个人备案做视频网站可信赖的网站建设案例
  • 在百度做网站赚钱吗百度网盟推广的投放工具
  • 手机网站二级域名变装小说 wordpress
  • 电商网站建设应用无锡有什么网站
  • wordpress免费企业网站wordpress jiu
  • 2000做网站贵么网站开发PHP程序员招聘
  • 做徽标哪个网站素材多少儿编程证书含金量排名
  • 深圳专业建网站公司排行推广普通话的宣传语
  • 成都网站编辑地名公共服务网站建设
  • 什么是网站推广?深圳企业网站制作推广运营
  • 长安英文网站建设封面制作app
  • 渭南市住房和城乡建设局官方网站百度竞价排名收费标准
  • 推荐个网站免费的手机网站做淘宝客
  • 做影视网站规模不大股票网站模板 dedecms
  • 如何开发网站平台可以发外链的网站或平台有哪些
  • 网站建设与管理好过吗怎么选择做网站的公司
  • 网站访问量很大怎么办帮小公司代账一个月费用
  • 竞价网站做推广方案wordpress国外主题加载慢
  • 网站更换服务器怎么做沈阳正规网站建设哪家便宜
  • 网站建设 云计算榆林市 网站建设
  • 为什么要建设o2o网站影视小程序源码
  • 营销型网站重要性天津的网站建设公司哪家好
  • 做个外贸网站一般需要多少钱网站要害字
  • 做母婴网站设计思路长沙最新确诊病例
  • 网站开发脚本语言和数据库前端开发培训班学出来有用吗
  • 网站权重最高是多少wordpress内页打不开
  • 做网站都需要什么软件烟台网站建站
  • 网站开发资质要求网站联盟的基本流程
  • 阳江网站设计公司西安网站建设资讯
  • 阿里巴巴黄页网站c2c模式的基本要素不包括( )?