Commit 8d88ed7c authored by 杨锐's avatar 杨锐

redis分布式锁,处理/user/center/save/userExtInfo并发问题,导致MySQLIntegrityConstraintViolationException

parent 591f2fb4
package cn.quantgroup.xyqb.util.lock.redislock; package cn.quantgroup.xyqb.aspect.lock;
import java.lang.annotation.*; import java.lang.annotation.*;
......
package cn.quantgroup.xyqb.util.lock.redislock; package cn.quantgroup.xyqb.aspect.lock;
import cn.quantgroup.xyqb.exception.ResubmissionException;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -33,7 +34,7 @@ public class RedisLockAspect { ...@@ -33,7 +34,7 @@ public class RedisLockAspect {
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
private RedisTemplate<String, String> stringRedisTemplate; private RedisTemplate<String, String> stringRedisTemplate;
@Pointcut("@annotation(cn.quantgroup.xyqb.util.lock.redislock.RedisLock)") @Pointcut("@annotation(cn.quantgroup.xyqb.aspect.lock.RedisLock)")
private void redisLockPointCut() { private void redisLockPointCut() {
} }
...@@ -79,7 +80,7 @@ public class RedisLockAspect { ...@@ -79,7 +80,7 @@ public class RedisLockAspect {
return pjp.proceed(); return pjp.proceed();
} }
} }
cn.quantgroup.xyqb.util.lock.RedisLock lock = new cn.quantgroup.xyqb.util.lock.RedisLock(stringRedisTemplate, lockKey, timeout, expire); cn.quantgroup.xyqb.util.RedisLock lock = new cn.quantgroup.xyqb.util.RedisLock(stringRedisTemplate, lockKey, timeout, expire);
try { try {
if (lock.lock()) { if (lock.lock()) {
return pjp.proceed(); return pjp.proceed();
......
...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.controller; ...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.controller;
import cn.quantgroup.xyqb.exception.*; import cn.quantgroup.xyqb.exception.*;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.IpUtil; import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.lock.redislock.ResubmissionException; import cn.quantgroup.xyqb.exception.ResubmissionException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.jdbc.BadSqlGrammarException;
......
...@@ -9,15 +9,13 @@ import cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator; ...@@ -9,15 +9,13 @@ import cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator;
import cn.quantgroup.xyqb.entity.*; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.util.lock.redislock.RedisLock; import cn.quantgroup.xyqb.aspect.lock.RedisLock;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
......
package cn.quantgroup.xyqb.util.lock.redislock; package cn.quantgroup.xyqb.exception;
/** /**
* @author Jie.Feng * @author Jie.Feng
......
package cn.quantgroup.xyqb.util.lock; package cn.quantgroup.xyqb.util;
import org.apache.commons.text.RandomStringGenerator; import org.apache.commons.text.RandomStringGenerator;
import org.springframework.dao.InvalidDataAccessResourceUsageException; import org.springframework.dao.InvalidDataAccessResourceUsageException;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment