办学质量监测教学评价系统
ageerle
2025-03-11 6a1b544545ba2a005a1d6263f3b42aaeeef78bcd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package org.ruoyi.system.util;
 
import java.util.LinkedHashMap;
 
/**
 * 微信二维码缓存工具类
 *
 * @author https://www.wdbyte.com
 */
public class WeixinQrCodeCacheUtil {
    private static long MAX_CACHE_SIZE = 10000;
    private static LinkedHashMap<String, String> QR_CODE_TICKET_MAP = new LinkedHashMap<>();
 
    /**
     * 增加一个 Ticket
     * 首次 put:value 为 ""
     * 再次 put: value 有 openId,若openId已经存在,则已被扫码
     *
     * @param key
     * @param value
     */
    public synchronized static void put(String key, String value) {
        QR_CODE_TICKET_MAP.put(key, value);
        if (QR_CODE_TICKET_MAP.size() > MAX_CACHE_SIZE) {
            String first = QR_CODE_TICKET_MAP.keySet().stream().findFirst().get();
            QR_CODE_TICKET_MAP.remove(first);
        }
    }
 
    public synchronized static String get(String key) {
        return QR_CODE_TICKET_MAP.remove(key);
    }
 
}