Commit 6532cc5e authored by shiyu's avatar shiyu

重复打卡提交

parent 48ec9854
...@@ -5,6 +5,7 @@ import com.wwdz.ch.core.api.qiandao.QdWxAppletApi; ...@@ -5,6 +5,7 @@ import com.wwdz.ch.core.api.qiandao.QdWxAppletApi;
import com.wwdz.ch.core.api.wxpay.WxPayServiceApi; import com.wwdz.ch.core.api.wxpay.WxPayServiceApi;
import com.wwdz.ch.core.consts.CommConsts; import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.DistributionEnum; import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.consts.SigninEnum; import com.wwdz.ch.core.consts.SigninEnum;
import com.wwdz.ch.core.consts.qiandao.SignInTaskEnum; import com.wwdz.ch.core.consts.qiandao.SignInTaskEnum;
import com.wwdz.ch.core.consts.qiandao.WxCheckEnum; import com.wwdz.ch.core.consts.qiandao.WxCheckEnum;
...@@ -21,6 +22,8 @@ import com.wwdz.ch.db.dto.request.qiandao.QdUserSignInRequestDto; ...@@ -21,6 +22,8 @@ import com.wwdz.ch.db.dto.request.qiandao.QdUserSignInRequestDto;
import com.wwdz.ch.wx.service.qiandao.QdUserSignInService; import com.wwdz.ch.wx.service.qiandao.QdUserSignInService;
import com.xxdxxs.utils.DateUtils; import com.xxdxxs.utils.DateUtils;
import com.xxdxxs.utils.StringUtils; import com.xxdxxs.utils.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -37,6 +40,7 @@ import java.time.format.DateTimeFormatter; ...@@ -37,6 +40,7 @@ import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
@Service @Service
public class QdUserSignInServiceImpl implements QdUserSignInService { public class QdUserSignInServiceImpl implements QdUserSignInService {
...@@ -76,6 +80,9 @@ public class QdUserSignInServiceImpl implements QdUserSignInService { ...@@ -76,6 +80,9 @@ public class QdUserSignInServiceImpl implements QdUserSignInService {
@Autowired @Autowired
QdSignInRankingDao qdSignInRankingDao; QdSignInRankingDao qdSignInRankingDao;
@Autowired
RedissonClient redissonClient;
@Override @Override
public Result check(QdUserSignInRequestDto dto) { public Result check(QdUserSignInRequestDto dto) {
try { try {
...@@ -115,9 +122,14 @@ public class QdUserSignInServiceImpl implements QdUserSignInService { ...@@ -115,9 +122,14 @@ public class QdUserSignInServiceImpl implements QdUserSignInService {
@Transactional @Transactional
@Override @Override
public Result signIn(QdUserSignInRequestDto dto) { public Result signIn(QdUserSignInRequestDto dto) {
long userId = dto.getUserId();
String key = "sign_in:" + userId;
RLock lock = redissonClient.getLock(key);
try { try {
if (!lock.tryLock(3, TimeUnit.SECONDS)) {
return Result.failed("请勿重复提交");
}
Date now = new Date(); Date now = new Date();
long userId = dto.getUserId();
Long taskId = dto.getTaskId() == null ? CommConsts.DEFAULT_TASK_ID : dto.getTaskId(); Long taskId = dto.getTaskId() == null ? CommConsts.DEFAULT_TASK_ID : dto.getTaskId();
SignInTask signInTask = signInTaskDao.findById(taskId); SignInTask signInTask = signInTaskDao.findById(taskId);
//签到目标天数 //签到目标天数
...@@ -268,6 +280,10 @@ public class QdUserSignInServiceImpl implements QdUserSignInService { ...@@ -268,6 +280,10 @@ public class QdUserSignInServiceImpl implements QdUserSignInService {
} catch (Exception e) { } catch (Exception e) {
logger.error("乾岛签到失败 error:{}", e); logger.error("乾岛签到失败 error:{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
}
} }
return Result.failed(); return Result.failed();
} }
......
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