Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
0084e760
Commit
0084e760
authored
Nov 06, 2019
by
杨锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add annotation AccessLimit。
parent
4bb5e3a1
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
68 additions
and
1 deletion
+68
-1
AccessLimit.java
...ain/java/cn/quantgroup/xyqb/aspect/limit/AccessLimit.java
+23
-0
AccessLimitAspect.java
...va/cn/quantgroup/xyqb/aspect/limit/AccessLimitAspect.java
+43
-0
ModifyPhoneNoServiceImpl.java
...roup/xyqb/service/user/impl/ModifyPhoneNoServiceImpl.java
+2
-1
No files found.
src/main/java/cn/quantgroup/xyqb/aspect/limit/AccessLimit.java
0 → 100644
View file @
0084e760
package
cn
.
quantgroup
.
xyqb
.
aspect
.
limit
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* 禁止接口频繁访问
* <p>
* 使用该组件,方法入参,首参数应为userId
* </p>
* Date: 2019/11/6
* Time: 下午5:07
*
* @author: yangrui
*/
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
AccessLimit
{
String
redisKey
();
}
src/main/java/cn/quantgroup/xyqb/aspect/limit/AccessLimitAspect.java
0 → 100644
View file @
0084e760
package
cn
.
quantgroup
.
xyqb
.
aspect
.
limit
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.concurrent.TimeUnit
;
@Aspect
@Component
public
class
AccessLimitAspect
{
@Resource
private
StringRedisTemplate
stringRedisTemplate
;
/**
* 要求不高时 可使用。
* setnx + expire 问题,lua解决。
* expire问题,严谨可使用Redission。
*
* @param pjp
* @throws Throwable
*/
@Around
(
"@annotation(cn.quantgroup.xyqb.aspect.limit.AccessLimit)"
)
public
void
accessLimit
(
ProceedingJoinPoint
pjp
)
throws
Throwable
{
AccessLimit
accessLimit
=
((
MethodSignature
)
pjp
.
getSignature
()).
getMethod
().
getAnnotation
(
AccessLimit
.
class
);
String
redisKey
=
accessLimit
.
redisKey
()
+
"_"
+
pjp
.
getArgs
()[
0
];
boolean
lock
=
stringRedisTemplate
.
opsForValue
().
setIfAbsent
(
redisKey
,
""
);
if
(
lock
)
{
stringRedisTemplate
.
expire
(
redisKey
,
1
,
TimeUnit
.
MINUTES
);
try
{
pjp
.
proceed
();
}
finally
{
stringRedisTemplate
.
delete
(
redisKey
);
}
}
}
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/ModifyPhoneNoServiceImpl.java
View file @
0084e760
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.user.impl;
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.user.impl;
import
cn.quantgroup.user.enums.ModifyPhoneNoApplyStatusEnum
;
import
cn.quantgroup.user.enums.ModifyPhoneNoApplyStatusEnum
;
import
cn.quantgroup.user.enums.ModifyPhoneNoProcessingStatusEnum
;
import
cn.quantgroup.user.enums.ModifyPhoneNoProcessingStatusEnum
;
import
cn.quantgroup.xyqb.aspect.limit.AccessLimit
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.AuditReq
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.AuditReq
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.ModifyPhoneNoQueryReq
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.ModifyPhoneNoQueryReq
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.Step1Req
;
import
cn.quantgroup.xyqb.controller.modifyphoneno.req.Step1Req
;
...
@@ -72,9 +73,9 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
...
@@ -72,9 +73,9 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
* @return
* @return
*/
*/
@Override
@Override
@AccessLimit
(
redisKey
=
"saveStep1"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Long
saveStep1
(
Long
userId
,
Step1Req
step1Req
)
{
public
Long
saveStep1
(
Long
userId
,
Step1Req
step1Req
)
{
// TODO: 2019/11/4 并发访问
allowModify
(
userId
,
step1Req
.
getName
(),
step1Req
.
getIdCard
(),
step1Req
.
getPrevPhoneNo
(),
step1Req
.
getCurPhoneNo
(),
allowModify
(
userId
,
step1Req
.
getName
(),
step1Req
.
getIdCard
(),
step1Req
.
getPrevPhoneNo
(),
step1Req
.
getCurPhoneNo
(),
step1Req
.
getSmsCode
());
step1Req
.
getSmsCode
());
ModifyPhoneNo
modifyPhoneNo
=
Step1Req
.
adapt
(
step1Req
);
ModifyPhoneNo
modifyPhoneNo
=
Step1Req
.
adapt
(
step1Req
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment