diff --git a/common/src/main/java/com/storeroom/annotaion/AnonymousAccess.java b/common/src/main/java/com/storeroom/annotaion/AnonymousAccess.java new file mode 100644 index 0000000..b2d2042 --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/AnonymousAccess.java @@ -0,0 +1,11 @@ +package com.storeroom.annotaion; + + +import java.lang.annotation.*; + +@Inherited +@Documented +@Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface AnonymousAccess { +} diff --git a/common/src/main/java/com/storeroom/annotaion/Limit.java b/common/src/main/java/com/storeroom/annotaion/Limit.java new file mode 100644 index 0000000..e5223a6 --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/Limit.java @@ -0,0 +1,23 @@ +package com.storeroom.annotaion; + +import com.storeroom.aspect.LimitType; + +public @interface Limit { + //资源名称,用于描述资源接口功能 + String name() default ""; + + // 资源 key + String key() default ""; + + // key prefix + String prefix() default ""; + + // 时间的,单位秒 + int period(); + + // 限制访问次数 + int count(); + + // 限制类型 + LimitType limitType() default LimitType.CUSTOMER; +} diff --git a/common/src/main/java/com/storeroom/annotaion/Query.java b/common/src/main/java/com/storeroom/annotaion/Query.java new file mode 100644 index 0000000..6f14f28 --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/Query.java @@ -0,0 +1,71 @@ +package com.storeroom.annotaion; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Query { + + //基本对象的属性名 + String propName() default ""; + + //查询方式 + Type type() default Type.EQUAL; + + /** + * 连接查询的属性名,如User类中的dept + */ + String joinName() default ""; + + /** + * 默认左连接 + */ + Join join() default Join.LEFT; + + /** + * 多字段模糊搜索,仅支持String类型字段,多个用逗号隔开, 如@Query(blurry = "email,username") + */ + String blurry() default ""; + + enum Type { + // 相等 + EQUAL + // 大于等于 + , GREATER_THAN + // 小于等于 + , LESS_THAN + // 中模糊查询 + , INNER_LIKE + // 左模糊查询 + , LEFT_LIKE + // 右模糊查询 + , RIGHT_LIKE + // 小于 + , LESS_THAN_NQ + // 包含 + , IN + // 不包含 + , NOT_IN + // 不等于 + ,NOT_EQUAL + // between + ,BETWEEN + // 不为空 + ,NOT_NULL + // 为空 + ,IS_NULL + } + + /** + * @author + * 适用于简单连接查询,复杂的请自定义该注解,或者使用sql查询 + */ + enum Join { + + LEFT, RIGHT, INNER + } +} diff --git a/common/src/main/java/com/storeroom/annotaion/rest/AnonymousDeleteMapping.java b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousDeleteMapping.java new file mode 100644 index 0000000..ccf1c8a --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousDeleteMapping.java @@ -0,0 +1,45 @@ +package com.storeroom.annotaion.rest; + + +import com.storeroom.annotaion.AnonymousAccess; +import org.springframework.core.annotation.AliasFor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.lang.annotation.*; + +@AnonymousAccess +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@RequestMapping(method = RequestMethod.DELETE) +public @interface AnonymousDeleteMapping { + + + @AliasFor(annotation = RequestMapping.class) + String name() default ""; + + + @AliasFor(annotation = RequestMapping.class) + String[] value() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] path() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] params() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] headers() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] consumes() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] produces() default {}; +} diff --git a/common/src/main/java/com/storeroom/annotaion/rest/AnonymousGetMapping.java b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousGetMapping.java new file mode 100644 index 0000000..040ccd2 --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousGetMapping.java @@ -0,0 +1,45 @@ +package com.storeroom.annotaion.rest; + + +import com.storeroom.annotaion.AnonymousAccess; +import org.springframework.core.annotation.AliasFor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.lang.annotation.*; + +@AnonymousAccess +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@RequestMapping(method = RequestMethod.GET) +public @interface AnonymousGetMapping { + + + @AliasFor(annotation = RequestMapping.class) + String name() default ""; + + + @AliasFor(annotation = RequestMapping.class) + String[] value() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] path() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] params() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] headers() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] consumes() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] produces() default {}; +} diff --git a/common/src/main/java/com/storeroom/annotaion/rest/AnonymousPostMapping.java b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousPostMapping.java new file mode 100644 index 0000000..1b53fb4 --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousPostMapping.java @@ -0,0 +1,45 @@ +package com.storeroom.annotaion.rest; + + +import com.storeroom.annotaion.AnonymousAccess; +import org.springframework.core.annotation.AliasFor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.lang.annotation.*; + +@AnonymousAccess +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@RequestMapping(method = RequestMethod.POST) +public @interface AnonymousPostMapping { + + + @AliasFor(annotation = RequestMapping.class) + String name() default ""; + + + @AliasFor(annotation = RequestMapping.class) + String[] value() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] path() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] params() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] headers() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] consumes() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] produces() default {}; +} diff --git a/common/src/main/java/com/storeroom/annotaion/rest/AnonymousPutMapping.java b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousPutMapping.java new file mode 100644 index 0000000..33eb10c --- /dev/null +++ b/common/src/main/java/com/storeroom/annotaion/rest/AnonymousPutMapping.java @@ -0,0 +1,45 @@ +package com.storeroom.annotaion.rest; + + +import com.storeroom.annotaion.AnonymousAccess; +import org.springframework.core.annotation.AliasFor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.lang.annotation.*; + +@AnonymousAccess +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@RequestMapping(method = RequestMethod.PUT) +public @interface AnonymousPutMapping { + + + @AliasFor(annotation = RequestMapping.class) + String name() default ""; + + + @AliasFor(annotation = RequestMapping.class) + String[] value() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] path() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] params() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] headers() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] consumes() default {}; + + + @AliasFor(annotation = RequestMapping.class) + String[] produces() default {}; +} diff --git a/common/src/main/java/com/storeroom/aspect/LimitType.java b/common/src/main/java/com/storeroom/aspect/LimitType.java new file mode 100644 index 0000000..1f22c7b --- /dev/null +++ b/common/src/main/java/com/storeroom/aspect/LimitType.java @@ -0,0 +1,9 @@ +package com.storeroom.aspect; + +public enum LimitType { + + // 默认 + CUSTOMER, + // by ip addr + IP +}