Pu Zhibing
13 小时以前 e778f1ec4f911e0b6332432edca4650461ce5870
修改redis锁
3个文件已修改
1个文件已添加
77 ■■■■ 已修改文件
user/guns-admin/pom.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/pom.xml
@@ -67,10 +67,9 @@
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.16.8</version>
            <artifactId>redisson</artifactId>
            <version>3.14.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
@@ -143,15 +142,6 @@
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.jpush.api</groupId>
user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java
New file
@@ -0,0 +1,28 @@
package com.supersavedriving.user.config;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissonConfig {
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.port}")
    private Integer port;
    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://" + host + ":" + port);
        config.useSingleServer().setPassword(password);
        return Redisson.create(config);
    }
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -440,7 +440,7 @@
    @Override
    public ResultUtil travelOrder(Integer uid, TravelOrder travelOrder) throws Exception {
        RLock lock1 = redissonClient.getLock("travelOrder:" + uid);
        boolean lock2 = lock1.tryLock(5, TimeUnit.SECONDS);
        boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS);
        if(!lock2){
            return ResultUtil.error("系统繁忙,请稍后重试");
        }
@@ -568,6 +568,7 @@
     * 订单推送逻辑
     */
    public void pushOrder(Long orderId){
        RLock lock1 = redissonClient.getLock("pushOrder:" + orderId);
        try {
            Order order = this.selectById(orderId);
            /**
@@ -577,20 +578,8 @@
             *        合适司:积分 > 评分 > 距离
             *      3.司机没有接单直接将订单置入大厅
             */
            boolean lock = redisUtil.lock(5);
            if(!lock){
                int num1 = 1;
                while (num1 <= 10){
                    Thread.sleep(3000);//等待3秒
                    lock = redisUtil.lock(5);
                    if(lock){
                        break;
                    }else{
                        num1++;
                    }
                }
            }
            if(!lock){
            boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS);
            if(!lock2){
                order.setHallOrder(1);
                this.updateById(order);
                ExtraPushOrder(order);
@@ -786,10 +775,10 @@
                ExtraPushOrder(order);
                redisUtil.setStrValue("lobbyOrder", "true");
            }
            redisUtil.unlock();
        }catch (Exception e){
            e.printStackTrace();
            redisUtil.unlock();
        }finally {
            lock1.unlock();
        }
    }
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java
@@ -1,17 +1,10 @@
package com.supersavedriving.user.modular.system.util;
import com.supersavedriving.user.core.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Pipeline;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -103,7 +96,7 @@
                int num1 = 1;
                while (num1 <= 10){
                    try {
                        Thread.sleep(3000);//等待3秒
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
@@ -119,6 +112,7 @@
            return b;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            unlock();
        }
        return false;