Bläddra i källkod

高并发投票

孙永军 1 år sedan
förälder
incheckning
f97f03e41e

+ 2 - 2
src/main/java/com/smcic/api/operate/controller/VoteInfoController.java

@@ -34,7 +34,7 @@ public class VoteInfoController {
     }
 
     @RequestMapping("times")
-    public Map<String, Long> votedNum(@RequestParam("phone") String phone){
-        return ImmutableMap.of("times", voteInfoService.votedTimes(phone));
+    public Map<String, Long> votedNum(@RequestParam("phone") String phone, @RequestParam(value = "operateId", required = false, defaultValue = "2")Integer operateId){
+        return ImmutableMap.of("times", voteInfoService.votedTimes(operateId, phone));
     }
 }

+ 1 - 1
src/main/java/com/smcic/api/operate/service/impl/EnrollInfoServiceImpl.java

@@ -145,7 +145,7 @@ public class EnrollInfoServiceImpl extends ServiceImpl<EnrollInfoMapper, EnrollI
     }
 
     private List<EnrollInfo> getEnrollInfos(String type, Integer operate, String phone, Comparator<EnrollInfo> comparing) {
-        voteInfoService.lsVerify(phone);
+        voteInfoService.lsVerify(operate, phone);
         List<String> range = redisTemplate.opsForList().range(KeysConst.ENROLL_LIST + operate, 0, -1);
         if (null == range || range.isEmpty()) {
             return new ArrayList<>();

+ 4 - 4
src/main/java/com/smcic/api/operate/service/impl/VoteInfoServiceImpl.java

@@ -142,14 +142,14 @@ public class VoteInfoServiceImpl extends ServiceImpl<VoteInfoMapper, VoteInfo> i
 
     }
 
-    public void lsVerify(String phone){
-        if(!TextUtils.isEmpty(phone) && votedTimes(phone) < 5){
+    public void lsVerify(Integer operateId, String phone){
+        if(!TextUtils.isEmpty(phone) && votedTimes(operateId, phone) < 5){
             throw new APIException("您暂无查看权限");
         }
     }
 
-    public Long votedTimes(String phone){
-        String source = redisTemplate.opsForValue().get(KeysConst.SOURCE + formatter.format(LocalDate.now()) + phone);
+    public Long votedTimes(Integer operateId, String phone){
+        String source = redisTemplate.opsForValue().get(KeysConst.SOURCE + operateId + "_" + formatter.format(LocalDate.now()) + "_" + phone);
         if(TextUtils.isEmpty(source))
             return 0L;
         return Long.valueOf(source);