//package com.dhcc.finance.util;
//
//import java.util.concurrent.TimeUnit;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.data.redis.core.ValueOperations;
//import org.springframework.stereotype.Component;
//import org.springframework.util.StringUtils;
//
//
//
///**
// * 功能描述：分布式锁工具类
// * 
// * @author 17411
// * @date 2018年12月6日 上午9:41:17 @修改日志：
// */
//@Component
//public class DistributedLockHandler {
//
//    private static final Logger logger = LoggerFactory.getLogger(DistributedLockHandler.class);
//    private final static long LOCK_EXPIRE = 60 * 1000L;// 单个业务持有锁的时间30s，防止死锁
//
//    @Autowired
//    private StringRedisTemplate redisTemplate;
//
//    /**
//     * 尝试获取全局锁
//     *
//     * @param lock
//     *            锁的名称
//     * @return true 获取成功，false获取失败
//     */
//    public boolean tryLock(String key) {
//        return getLock(key, LOCK_EXPIRE);
//    }
//
//    /**
//     * 尝试获取全局锁
//     *
//     * @param lock
//     *            锁的名称
//     * @param lockExpireTime
//     *            锁的过期
//     * @return true 获取成功，false获取失败
//     */
//    public boolean tryLock(String key, long lockExpireTime) {
//        return getLock(key, lockExpireTime);
//    }
//
//    /**
//     * 操作redis获取全局锁
//     *
//     * @param lock
//     *            锁的名称
//     * @param lockExpireTime
//     *            获取成功后锁的过期时间
//     * @return true 获取成功，false获取失败
//     */
//    public boolean getLock(String key, long lockExpireTime) {
//        try {
//            if (StringUtils.isEmpty(key) ) {
//                return false;
//            }
//            if (!redisTemplate.hasKey(key)) {
//                ValueOperations<String, String> ops = redisTemplate.opsForValue();
//                ops.set(key, key, lockExpireTime, TimeUnit.MILLISECONDS);
//                return true;
//            } else {// 存在锁
//                logger.error("lock is exist!！！");
//                return false;
//            }
//        } catch (Exception e) {
//            logger.error(e.getMessage());
//            return false;
//        }
//    }
//
//    /**
//     * 释放锁
//     */
//    public void releaseLock(String key) {
//        if (!StringUtils.isEmpty(key)) {
//            redisTemplate.delete(key);
//        }
//    }
//
//}
