using LJLib.DAL.SQL;
using System;

namespace JLHHJSvr.Com.Model
{
    /// <summary>
    /// 数据库表: u_lock_table
    /// 用于记录单据的锁状态
    /// </summary>
    [PK(new[] { "logid" })]
    public class u_lock_table
    {
        /// <summary>
        /// 主键，自增ID
        /// </summary>
        public int logid { get; set; }
        /// <summary>
        /// 锁定关键字（业务类型标识，例如单据类型）
        /// </summary>
        public string keyword { get; set; }
        /// <summary>
        /// 被锁定的单据
        /// </summary>
        public int billid { get; set; }
        /// <summary>
        /// 被锁定的单据
        /// </summary>
        public string billcode { get; set; }
        /// <summary>
        /// 是否锁定（1=锁定，0=未锁定）
        /// </summary>
        public byte is_locked { get; set; }
        /// <summary>
        /// 操作人（加锁人）
        /// </summary>
        public string opemp { get; set; }
        /// <summary>
        /// 锁定时间
        /// </summary>
        public DateTime lock_time { get; set; }
        /// <summary>
        /// 锁过期时间（可空）
        /// </summary>
        public DateTime? expire_time { get; set; }
        /// <summary>
        /// 相关锁信息
        /// </summary>
        public string log_msg { get; set; }
        /// <summary>
        /// 结果枚举
        /// </summary>
        public LockCheckResultCode Code { get; set; }
    }

    public enum LockCheckResultCode
    {
        Success = 0,       // 可以继续操作
        LockedBySelf = 1,   // 被自己锁住（允许操作）
        LockedByOther = 2,  // 被别人锁住（禁止操作）
        Expired = 3,       // 锁过期
        NotFound = 4,      // 没有找到单据
        Error = 99         // 其他未知错误
    }
}
