1
0
mirror of synced 2025-12-18 05:47:58 +08:00

🎨 #1521 微信小程序 spring-boot-starter 增加一些新特性

This commit is contained in:
Mario Luo
2020-04-18 23:08:25 +08:00
committed by GitHub
parent 340f341947
commit 7feca8d962
16 changed files with 477 additions and 63 deletions

View File

@@ -1,8 +1,8 @@
package me.chanjar.weixin.mp.config.impl;
import lombok.Data;
import me.chanjar.weixin.mp.config.redis.JedisWxMpRedisOps;
import me.chanjar.weixin.mp.config.redis.WxMpRedisOps;
import me.chanjar.weixin.common.redis.JedisWxRedisOps;
import me.chanjar.weixin.common.redis.WxRedisOps;
import me.chanjar.weixin.mp.enums.TicketType;
import redis.clients.jedis.JedisPool;
@@ -22,22 +22,22 @@ import java.util.concurrent.TimeUnit;
@SuppressWarnings("hiding")
public class WxMpRedisConfigImpl extends WxMpDefaultConfigImpl {
private static final long serialVersionUID = -988502871997239733L;
private static final String ACCESS_TOKEN_KEY_TPL = "%s:access_token:%s";
private static final String TICKET_KEY_TPL = "%s:ticket:key:%s:%s";
private static final String LOCK_KEY_TPL = "%s:lock:%s:";
private final WxMpRedisOps redisOps;
private final WxRedisOps redisOps;
private final String keyPrefix;
private String accessTokenKey;
private String lockKey;
public WxMpRedisConfigImpl(JedisPool jedisPool) {
this(new JedisWxMpRedisOps(jedisPool), "wx");
this(new JedisWxRedisOps(jedisPool), "wx");
}
public WxMpRedisConfigImpl(WxMpRedisOps redisOps, String keyPrefix) {
public WxMpRedisConfigImpl(WxRedisOps redisOps, String keyPrefix) {
this.redisOps = redisOps;
this.keyPrefix = keyPrefix;
}

View File

@@ -1,37 +0,0 @@
package me.chanjar.weixin.mp.config.redis;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
/**
* 微信公众号redis操作基本类
* <p>
* 非内置实现redis相关操作, 请实现该类
*/
public class BaseWxMpRedisOps implements WxMpRedisOps {
@Override
public String getValue(String key) {
throw new UnsupportedOperationException();
}
@Override
public void setValue(String key, String value, int expire, TimeUnit timeUnit) {
throw new UnsupportedOperationException();
}
@Override
public Long getExpire(String key) {
throw new UnsupportedOperationException();
}
@Override
public void expire(String key, int expire, TimeUnit timeUnit) {
throw new UnsupportedOperationException();
}
@Override
public Lock getLock(String key) {
throw new UnsupportedOperationException();
}
}

View File

@@ -1,51 +0,0 @@
package me.chanjar.weixin.mp.config.redis;
import lombok.AllArgsConstructor;
import me.chanjar.weixin.common.util.locks.JedisDistributedLock;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
/**
* Jedis实现相关操作
*/
@AllArgsConstructor
public class JedisWxMpRedisOps implements WxMpRedisOps {
private JedisPool jedisPool;
@Override
public String getValue(String key) {
try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.get(key);
}
}
@Override
public void setValue(String key, String value, int expire, TimeUnit timeUnit) {
try (Jedis jedis = this.jedisPool.getResource()) {
jedis.psetex(key, timeUnit.toMillis(expire), value);
}
}
@Override
public Long getExpire(String key) {
try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.ttl(key);
}
}
@Override
public void expire(String key, int expire, TimeUnit timeUnit) {
try (Jedis jedis = this.jedisPool.getResource()) {
jedis.pexpire(key, timeUnit.toMillis(expire));
}
}
@Override
public Lock getLock(String key) {
return new JedisDistributedLock(jedisPool, key);
}
}

View File

@@ -1,25 +0,0 @@
package me.chanjar.weixin.mp.config.redis;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
/**
* 微信公众号Redis相关操作
* <p>
* 该接口不承诺稳定, 外部实现请继承{@link BaseWxMpRedisOps}
*
* @see BaseWxMpRedisOps 实现需要继承该类
* @see JedisWxMpRedisOps jedis实现
*/
public interface WxMpRedisOps {
String getValue(String key);
void setValue(String key, String value, int expire, TimeUnit timeUnit);
Long getExpire(String key);
void expire(String key, int expire, TimeUnit timeUnit);
Lock getLock(String key);
}