1. 修复购物车,订单和退单后后置任务正确执行 2. 修复佣金记录金额和详情 3. 修复管理端 移动应用界面下订单管理数据统计不准确的问题 4. 修复短信API升级-后台使用一号通 5. 修复用户管理相关问题 6. 修复核销点核销后核销地址不准确 7. 修复资源同步云服务的问题 新增功能 1. 秒杀 a. 秒杀时段配置 b. 秒杀商品维护 2. 财务管理 a. 申请提现 b. 财务记录 i. 充值记录 ii. 资金监控 c. 佣金记录 3. 普通商品显示该商品正在参加的活动信息[秒杀]
98 lines
3.0 KiB
Java
98 lines
3.0 KiB
Java
package com.utils;
|
||
|
||
/**
|
||
* ThreadLocalUtil
|
||
* +----------------------------------------------------------------------
|
||
* | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
* +----------------------------------------------------------------------
|
||
* | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
|
||
* +----------------------------------------------------------------------
|
||
* | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
* +----------------------------------------------------------------------
|
||
* | Author: CRMEB Team <admin@crmeb.com>
|
||
* +----------------------------------------------------------------------
|
||
*/
|
||
|
||
import java.util.*;
|
||
|
||
public final class ThreadLocalUtil {
|
||
|
||
private ThreadLocalUtil() {
|
||
throw new IllegalStateException("Utility class");
|
||
}
|
||
|
||
private static final ThreadLocal<Map<String, Object>> threadLocal = ThreadLocal.withInitial(() -> new HashMap(4));
|
||
|
||
public static Map<String, Object> getThreadLocal(){
|
||
return threadLocal.get();
|
||
}
|
||
public static <T> T get(String key) {
|
||
Map map = (Map)threadLocal.get();
|
||
return (T)map.get(key);
|
||
}
|
||
|
||
public static <T> T get(String key,T defaultValue) {
|
||
Map map = (Map)threadLocal.get();
|
||
return (T)map.get(key) == null ? defaultValue : (T)map.get(key);
|
||
}
|
||
|
||
public static void set(String key, Object value) {
|
||
Map map = (Map)threadLocal.get();
|
||
map.put(key, value);
|
||
}
|
||
|
||
public static void set(Map<String, Object> keyValueMap) {
|
||
Map map = (Map)threadLocal.get();
|
||
map.putAll(keyValueMap);
|
||
}
|
||
|
||
public static void remove() {
|
||
threadLocal.remove();
|
||
}
|
||
|
||
public static <T> Map<String,T> fetchVarsByPrefix(String prefix) {
|
||
Map<String,T> vars = new HashMap<>();
|
||
if( prefix == null ){
|
||
return vars;
|
||
}
|
||
Map map = (Map)threadLocal.get();
|
||
Set<Map.Entry> set = map.entrySet();
|
||
|
||
for( Map.Entry entry : set ){
|
||
Object key = entry.getKey();
|
||
if( key instanceof String ){
|
||
if( ((String) key).startsWith(prefix) ){
|
||
vars.put((String)key,(T)entry.getValue());
|
||
}
|
||
}
|
||
}
|
||
return vars;
|
||
}
|
||
|
||
public static <T> T remove(String key) {
|
||
Map map = (Map)threadLocal.get();
|
||
return (T)map.remove(key);
|
||
}
|
||
|
||
public static void clear(String prefix) {
|
||
if( prefix == null ){
|
||
return;
|
||
}
|
||
Map map = (Map)threadLocal.get();
|
||
Set<Map.Entry> set = map.entrySet();
|
||
List<String> removeKeys = new ArrayList<>();
|
||
|
||
for( Map.Entry entry : set ){
|
||
Object key = entry.getKey();
|
||
if( key instanceof String ){
|
||
if( ((String) key).startsWith(prefix) ){
|
||
removeKeys.add((String)key);
|
||
}
|
||
}
|
||
}
|
||
for( String key : removeKeys ){
|
||
map.remove(key);
|
||
}
|
||
}
|
||
}
|