package com.mortals.xhx.tools.lock.service;

import com.mortals.framework.exception.AppException;
import org.springframework.validation.annotation.Validated;

/**
 * @author karlhoo
 * <p>
 * 分布式锁的加锁和解锁
 */
@Validated
public interface ILockService {
    /**
     * 分布式锁-加锁
     *
     * @param lockKey
     * @return true 成功
     */
    boolean lock(String lockKey);

    /**
     * 分布式锁-加锁
     *
     * @param lockKey
     * @param unlockSec 自动解锁失效，单位：秒
     * @return true 成功
     */
    boolean lock(String lockKey, Long unlockSec);

    /**
     * 分布式锁-解锁（和lock方法成对使用，加锁后一定要解锁）
     * @return
     * @throws AppException
     */
    boolean unlock() throws AppException;
}
