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

网站开发 h5wordpress取消邮箱验证

网站开发 h5,wordpress取消邮箱验证,美食网站开发前期准备,WordPress博客定制化首页实现思路 首先自定义参数注解,然后根据AOP思想,找到该注解作用的切点,也就是mapper层对于mapper层的接口在执行前都会执行该aop操作:获取到对于的方法对象,根据方法对象获取参数列表,根据参数列表判断某个…
实现思路

首先自定义参数注解,然后根据AOP思想,找到该注解作用的切点,也就是mapper层对于mapper层的接口在执行前都会执行该aop操作:获取到对于的方法对象,根据方法对象获取参数列表,根据参数列表判断某个参数上是否加有自定义的注解,如果有则读取注解中的value值,并通过传入对象的引用拿到该对象,此时判断该对象的id值是否位空,如果为空则生成全局唯一id并赋值

代码实现
package com.cloud.cloud_oj_learn.aspects;import com.cloud.cloud_oj_common.annotations.GenerateId;
import com.cloud.cloud_oj_common.enums.Keys;
import jakarta.annotation.Resource;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;/*** Created with IntelliJ IDEA.* Description:* User: PG* Date: 2024-04-16* Time: 18:49*/
@Aspect
@Component
public class GenerateIdAspect {@Resourceprivate StringRedisTemplate stringRedisTemplate;// 初始时间戳private static final long BEGIN_TIME = 1640995200L;// 序列化位数private static final int BITE = 32;public Long getNext(String tableName) {// 1.生成时间戳LocalDateTime now = LocalDateTime.now();long nowSecond = now.toEpochSecond(ZoneOffset.UTC);long timestamp = nowSecond - BEGIN_TIME;// 2,生成序列化号String date = now.format(DateTimeFormatter.ofPattern("yyyy:MM:dd"));long count = stringRedisTemplate.opsForValue().increment(Keys.GENERATE_ID.getKey() + tableName + ":" + date);// 3.拼接  返回return Long.valueOf(timestamp << BITE | count);}@Before("execution(* com.cloud.cloud_oj_learn.mapper.*.*(..))")public void before(JoinPoint joinPoint) {// 获取方法签名MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();// 获取方法对象Method method = methodSignature.getMethod();// 获取方法参数值数组Object[] args = joinPoint.getArgs();// 获取方法注解Annotation[][] parameterAnnotations = method.getParameterAnnotations();for (int i = 0; i < parameterAnnotations.length; i++) {for (Annotation annotation : parameterAnnotations[i]) {if (annotation instanceof GenerateId) {try {// 获取参数对象Object arg = args[i];// 获取这个对象的类文件Class<?> clazz = arg.getClass();// 获取这个对象的id属性Field idField = clazz.getDeclaredField("id");// 设置字段修改权限idField.setAccessible(true);// 获取注解上的value值String value = ((GenerateId) annotation).value();// 获取该value对应的下一个idLong nextId = getNext(value);// 判断是否为空, 如果为空就赋值 if (idField.get(arg) == null) {idField.set(arg, nextId);}} catch (NoSuchFieldException | IllegalAccessException e) {throw new RuntimeException(e);}}}}}}

图示

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

相关文章:

  • 包头网站制作 建设网站开发招标技术规范书
  • 网约车平台app网站建设我开网店一天亏几百
  • 管理平台seo优化培训学校
  • 兰州网站备案外贸网站建设策划
  • 移动营销型网站建设邢台做网站优化价格
  • 用wordpress建的网站wordpress远程包含
  • 做我的世界壁纸网站毛站
  • 二手的家具哪个网站做的好企业公示信息查询系统浙江
  • 睢宁建网站如何在木上做网站
  • 做字体网站登建设厅锁子的是哪个网站
  • 资源交易网站代码建设银行河北招聘网站
  • gis做图网站净化工程 技术支持 东莞网站建设
  • 什么是网站黑链马鞍山建设工程监督站网站
  • 有哪些网页游戏网站wordpress 4.9.8微博图床
  • 华电集团班组建设网站山东舜玉建设工程有限公司网站
  • 建个网站的流程wordpress软文文件
  • 顺德品牌网站建设咨询深圳网站设计公司 网络服务
  • 网站产品动效怎么做android 旅游网站开发
  • 网站建设是永久性的吗wordpress注册页面
  • 网站开发过什么软件wordpress仿淘宝
  • 做搜狗pc网站点wordpress多用户博客
  • 网站提交订单付款才跳转怎么做WordPress 08影院源码
  • 记事本做网站的代码中国建设手机银行网站
  • 百度做网站怎么联系东莞万江网站建设公司
  • 山东菏泽建设银行网站彻底关闭qq顶部小程序入口
  • 切图网站建设asp.net mvc 统计网站流量数据
  • 商务网站建设教程网站标题符号的应用
  • 沈阳有资质做网站的公司wordpress+读取excel
  • 广州网站建设哪好北京网站后台培训
  • 兰州seoseo监控系统