Ejemplo n.º 1
0
        /// <summary>
        /// 获取用户的基本信息
        /// </summary>
        /// <param name="studentNo">学号</param>
        /// <returns></returns>
        public string GetUserInfo(string studentNo)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                ReaderInfo reader = SeatManageDateService.GetReader(studentNo, false);
                if (reader == null)
                {
                    result.Result = false;
                    result.Msg    = "对不起,不存在该读者信息!";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_Reader ajmReader = new AJM_Reader();
                ajmReader.CardId     = reader.CardID;
                ajmReader.StudentNo  = reader.CardNo;
                ajmReader.Name       = reader.Name;
                ajmReader.Sex        = reader.Sex;
                ajmReader.Department = reader.Pro;
                ajmReader.ReaderType = reader.ReaderType;
                result.Result        = true;
                result.Msg           = JSONSerializer.Serialize(ajmReader);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("根据学号获取读者信息遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取读者信息执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 获取随机座位
        /// </summary>
        /// <param name="roomNo">阅览室编号</param>
        /// <returns></returns>
        public string GetRandomSeat(string roomNo)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                AJM_Seat ajmSeat = new AJM_Seat();
                ajmSeat.SeatNo = SeatManageDateService.RandomAllotSeat(roomNo);
                if (string.IsNullOrEmpty(ajmSeat.SeatNo))
                {
                    result.Result = false;
                    result.Msg    = "阅览室已满,请稍后再试!";
                    return(JSONSerializer.Serialize(result));
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmSeat);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取随机座位遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取随机座位执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 获取读者常坐座位
        /// </summary>
        /// <param name="studentNo">学号</param>
        /// <param name="seatCount">查询座位数量</param>
        /// <param name="dayCount">统计天数</param>
        /// <returns></returns>
        public string GetOftenSeat(string studentNo, int seatCount, int dayCount)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                List <Seat>     seats    = SeatManageDateService.GetOftenUsedSeatByCardNo(studentNo, dayCount, null);
                List <AJM_Seat> ajmSeats = new List <AJM_Seat>();
                for (int i = 0; i < (seats.Count < seatCount ? seats.Count : seatCount); i++)
                {
                    AJM_Seat ajmSeat = new AJM_Seat();
                    ajmSeat.SeatNo      = seats[i].SeatNo;
                    ajmSeat.SeatShortNo = seats[i].ShortSeatNo;
                    ajmSeat.RoomName    = seats[i].ReadingRoom.Name;
                    ajmSeat.RoomNo      = seats[i].ReadingRoomNum;
                    ajmSeats.Add(ajmSeat);
                }
                if (ajmSeats.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "没有查询到常坐座位信息!";
                    return(JSONSerializer.Serialize(result));
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmSeats);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取常坐座位遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取常坐座位执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取进出记录
        /// </summary>
        /// <param name="studentNo">用户学号</param>
        /// <param name="pageIndex">页编码</param>
        /// <param name="pageSize">每页数目</param>
        /// <returns></returns>
        public string GetEnterOutLog(string studentNo, int pageIndex, int pageSize)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                if (pageIndex < 0 || pageSize < 0)
                {
                    result.Result = false;
                    result.Msg    = "页数和每页显示数目必须大于等于0";
                    return(JSONSerializer.Serialize(result));
                }
                List <EnterOutLogInfo> enterOutLogInfos = SeatManageDateService.GetEnterOutLogsByPage(studentNo, pageIndex, pageSize);
                List <AJM_EnterOutLog> ajmEnterOutLogs  = new List <AJM_EnterOutLog>();
                for (int i = 0; i < enterOutLogInfos.Count; i++)
                {
                    AJM_EnterOutLog ajmEnterOutLog = new AJM_EnterOutLog();
                    ajmEnterOutLog = new AJM_EnterOutLog();
                    ajmEnterOutLog.EnterOutState = enterOutLogInfos[i].EnterOutState.ToString();
                    ajmEnterOutLog.EnterOutTime  = enterOutLogInfos[i].EnterOutTime.ToString("yyyy-MM-d HH:mm:ss");
                    ajmEnterOutLog.Id            = enterOutLogInfos[i].EnterOutLogID;
                    ajmEnterOutLog.Remark        = enterOutLogInfos[i].Remark;
                    ajmEnterOutLog.RoomName      = enterOutLogInfos[i].ReadingRoomName;
                    ajmEnterOutLog.RoomNo        = enterOutLogInfos[i].ReadingRoomNo;
                    ajmEnterOutLog.SeatNo        = enterOutLogInfos[i].SeatNo;
                    ajmEnterOutLog.SeatShortNo   = enterOutLogInfos[i].ShortSeatNo;
                    ajmEnterOutLogs.Add(ajmEnterOutLog);
                }
                if (ajmEnterOutLogs.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "暂时没有进出记录!";
                    return(JSONSerializer.Serialize(result));
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmEnterOutLogs);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取进出记录遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取进出记录执行异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取预约记录
        /// </summary>
        /// <param name="studentNo">学号</param>
        /// <param name="pageIndex">页索引</param>
        /// <param name="pageSize">每页显示条数</param>
        /// <returns></returns>
        public string GetBesapsekLog(string studentNo, int pageIndex, int pageSize)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                if (pageIndex < 0 || pageSize < 0)
                {
                    result.Result = false;
                    result.Msg    = "页数和每页显示数目必须大于等于0";
                    return(JSONSerializer.Serialize(result));
                }
                List <BespeakLogInfo> logInfos       = SeatManageDateService.GetBespeakLogsByPage(studentNo, pageIndex, pageSize);
                List <AJM_BespeakLog> ajmBespeakLogs = new List <AJM_BespeakLog>();
                for (int i = 0; i < logInfos.Count; i++)
                {
                    AJM_BespeakLog ajmBespeakLog = new AJM_BespeakLog();
                    ajmBespeakLog.Id             = logInfos[i].BsepeaklogID;
                    ajmBespeakLog.BookTime       = logInfos[i].BsepeakTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmBespeakLog.IsValid        = logInfos[i].BsepeakState == BookingStatus.Waiting;
                    ajmBespeakLog.Remark         = logInfos[i].Remark;
                    ajmBespeakLog.RoomName       = logInfos[i].ReadingRoomName;
                    ajmBespeakLog.RoomNo         = logInfos[i].ReadingRoomNo;
                    ajmBespeakLog.SeatShortNo    = logInfos[i].ShortSeatNum;
                    ajmBespeakLog.SeatNo         = logInfos[i].SeatNo;
                    ajmBespeakLog.SubmitDateTime = logInfos[i].SubmitTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmBespeakLog.CancelTime     = logInfos[i].CancelTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmBespeakLogs.Add(ajmBespeakLog);
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmBespeakLogs);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取预约记录遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取预约记录执行异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 获取黑名单记录
        /// </summary>
        /// <param name="studentNo">学号</param>
        /// <param name="pageIndex">页索引</param>
        /// <param name="pageSize">每页显示条数</param>
        /// <returns></returns>
        public string GetBlacklist(string studentNo, int pageIndex, int pageSize)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                if (pageIndex < 0 || pageSize < 0)
                {
                    result.Result = false;
                    result.Msg    = "页数和每页显示数目必须大于等于0";
                    return(JSONSerializer.Serialize(result));
                }
                List <BlackListInfo>    blackListInfos   = SeatManageDateService.GetBlacklistInfosByPage(studentNo, pageIndex, pageSize);
                List <AJM_BlacklistLog> ajmBlacklistLogs = new List <AJM_BlacklistLog>();
                for (int i = 0; i < blackListInfos.Count; i++)
                {
                    AJM_BlacklistLog ajmBlacklistLog = new AJM_BlacklistLog();
                    ajmBlacklistLog.AddTime          = blackListInfos[i].AddTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmBlacklistLog.StudentNo        = blackListInfos[i].CardNo;
                    ajmBlacklistLog.ID               = blackListInfos[i].ID;
                    ajmBlacklistLog.IsValid          = blackListInfos[i].BlacklistState == LogStatus.Valid;
                    ajmBlacklistLog.OutBlacklistMode = blackListInfos[i].OutBlacklistMode.ToString();
                    ajmBlacklistLog.OutTime          = blackListInfos[i].OutTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmBlacklistLog.ReMark           = blackListInfos[i].ReMark;
                    ajmBlacklistLogs.Add(ajmBlacklistLog);
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmBlacklistLogs);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("查询黑名单遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "查询黑名单执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取违规记录
        /// </summary>
        /// <param name="studentNo">学号</param>
        /// <param name="pageIndex">页索引</param>
        /// <param name="pageSize">每页显示条数</param>
        /// <returns></returns>
        public string GetViolationLog(string studentNo, int pageIndex, int pageSize)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空";
                    JSONSerializer.Serialize(result);
                }
                if (pageIndex < 0 || pageSize < 0)
                {
                    result.Result = false;
                    result.Msg    = "页数和每页显示数目必须大于等于0";
                    return(JSONSerializer.Serialize(result));
                }
                List <ViolationRecordsLogInfo> violationRecordsLogInfos =
                    SeatManageDateService.GetViolationRecordsLogsByPage(studentNo, pageIndex, pageSize);
                List <AJM_ViolationRecordsLogInfo> ajmViolationRecordsLogInfos = new List <AJM_ViolationRecordsLogInfo>();
                for (int i = 0; i < violationRecordsLogInfos.Count; i++)
                {
                    AJM_ViolationRecordsLogInfo ajmViolationRecordsLogInfo = new AJM_ViolationRecordsLogInfo();
                    ajmViolationRecordsLogInfo.StudentNo    = violationRecordsLogInfos[i].CardNo;
                    ajmViolationRecordsLogInfo.EnterOutTime = violationRecordsLogInfos[i].EnterOutTime;
                    ajmViolationRecordsLogInfo.RoomName     = violationRecordsLogInfos[i].ReadingRoomName;
                    ajmViolationRecordsLogInfo.Remark       = violationRecordsLogInfos[i].Remark;
                    ajmViolationRecordsLogInfo.SeatNo       = violationRecordsLogInfos[i].SeatID;
                    ajmViolationRecordsLogInfos.Add(ajmViolationRecordsLogInfo);
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmViolationRecordsLogInfos);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("查询违规记录遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "查询违规记录执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="loginId">登录账号</param>
        /// <param name="password">登录密码</param>
        /// <returns></returns>
        public string CheckUser(string loginId, string password)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(loginId.Trim()) || string.IsNullOrEmpty(password.Trim()))
                {
                    result.Result = false;
                    result.Msg    = "用户名或密码不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                UserInfo userInfo = SeatManageDateService.GetUserInfo(loginId);
                if (userInfo == null)
                {
                    result.Result = false;
                    result.Msg    = "用户名或密码错误!";
                    return(JSONSerializer.Serialize(result));
                }
                string md5Password = MD5Algorithm.GetMD5Str32(password);
                if (!md5Password.Equals(userInfo.Password))
                {
                    result.Result = false;
                    result.Msg    = "用户名或密码错误!";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_Reader ajmReader = new AJM_Reader
                {
                    StudentNo = userInfo.LoginId,
                    Name      = userInfo.UserName
                };
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmReader);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("登录出现异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "执行登录操作遇到异常";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 获取用户当前的在座状态
        /// </summary>
        /// <param name="studentNo">学号</param>
        /// <returns></returns>
        public string GetUserNowState(string studentNo)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空";
                    return(JSONSerializer.Serialize(result));
                }
                ReaderInfo readerInfo = SeatManageDateService.GetReader(studentNo, true);

                if (readerInfo == null)
                {
                    result.Result = false;
                    result.Msg    = "未查询到该读者的当前状态";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_ReaderStatus ajmReaderStatus = new AJM_ReaderStatus();

                if (readerInfo.EnterOutLog != null)
                {
                    AJM_EnterOutLog ajmEnterOutLog = new AJM_EnterOutLog
                    {
                        EnterOutTime  = readerInfo.EnterOutLog.EnterOutTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        EnterOutState = readerInfo.EnterOutLog.EnterOutState.ToString(),
                        Id            = readerInfo.EnterOutLog.EnterOutLogID,
                        Operator      = readerInfo.EnterOutLog.Flag.ToString(),
                        Remark        = readerInfo.EnterOutLog.Remark,
                        RoomName      = readerInfo.EnterOutLog.ReadingRoomName,
                        RoomNo        = readerInfo.EnterOutLog.ReadingRoomNo,
                        SeatNo        = readerInfo.EnterOutLog.SeatNo,
                        SeatShortNo   = readerInfo.EnterOutLog.ShortSeatNo
                    };
                    switch (readerInfo.EnterOutLog.EnterOutState)
                    {
                    case EnterOutLogType.None:
                    case EnterOutLogType.Leave:
                    case EnterOutLogType.BookingCancel:
                    case EnterOutLogType.WaitingCancel:
                    case EnterOutLogType.BespeakWaiting:
                        ajmReaderStatus.Status = ReaderStatus.Leave.ToString();
                        break;

                    case EnterOutLogType.BookingConfirmation:
                    case EnterOutLogType.CancelTime:
                    case EnterOutLogType.ComeBack:
                    case EnterOutLogType.ContinuedTime:
                    case EnterOutLogType.ReselectSeat:
                    case EnterOutLogType.SelectSeat:
                    case EnterOutLogType.Timing:
                    case EnterOutLogType.WaitingSuccess:
                        ajmReaderStatus.Status = ReaderStatus.Seating.ToString();
                        break;

                    case EnterOutLogType.ShortLeave:
                        ajmReaderStatus.Status = ReaderStatus.ShortLeave.ToString();
                        break;

                    case EnterOutLogType.Waiting:
                        ajmReaderStatus.Status = ReaderStatus.Waiting.ToString();
                        break;
                    }
                    ajmReaderStatus.AjmEnterOutLog = ajmEnterOutLog;
                }
                if (readerInfo.WaitSeatLog != null)
                {
                    AJM_WaitSeatLog ajmWaitSeatLog = new AJM_WaitSeatLog
                    {
                        RoomName     = readerInfo.WaitSeatLog.EnterOutLog.ReadingRoomName,
                        RoomNo       = readerInfo.WaitSeatLog.ReadingRoomNo,
                        SeatNo       = readerInfo.WaitSeatLog.SeatNo,
                        SeatShortNo  = readerInfo.WaitSeatLog.EnterOutLog.ShortSeatNo,
                        SeatWaitId   = readerInfo.WaitSeatLog.SeatWaitingID,
                        SeatWaitTime = readerInfo.WaitSeatLog.SeatWaitTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        StudentNo_A  = readerInfo.WaitSeatLog.CardNo,
                        StudentNo_B  = readerInfo.WaitSeatLog.CardNoB
                    };
                    ajmReaderStatus.AjmWaitSeatLogs = ajmWaitSeatLog;
                    ajmReaderStatus.Status          = ReaderStatus.Waiting.ToString();
                }
                if (readerInfo.BespeakLog.Count > 0)
                {
                    foreach (BespeakLogInfo model in readerInfo.BespeakLog)
                    {
                        if (model.BsepeakTime.Date == DateTime.Now.Date)
                        {
                            ajmReaderStatus.Status = ReaderStatus.Booking.ToString();
                        }
                        AJM_BespeakLog ajmBespeakLog = new AJM_BespeakLog
                        {
                            Id             = model.BsepeaklogID,
                            BookTime       = model.BsepeakTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            IsValid        = true,
                            Remark         = model.Remark,
                            RoomName       = model.ReadingRoomName,
                            RoomNo         = model.ReadingRoomNo,
                            SeatNo         = model.SeatNo,
                            SeatShortNo    = model.ShortSeatNum,
                            SubmitDateTime = model.SubmitTime.ToString("yyyy-MM-dd HH:mm:ss")
                        };
                        ajmReaderStatus.AjmBespeakLogs.Add(ajmBespeakLog);
                    }
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmReaderStatus);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取读者当前状态发生异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取用户状态执行异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 10
0
        public string GetUserNowStateV2(string studentNo, bool isCheckCode)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空";
                    return(JSONSerializer.Serialize(result));
                }
                ReaderInfo readerInfo = SeatManageDateService.GetReader(studentNo, true);

                if (readerInfo == null)
                {
                    result.Result = false;
                    result.Msg    = "未查询到该读者的当前状态";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_UserNowStatus ajmReaderStatus = new AJM_UserNowStatus();
                ajmReaderStatus.StudentNum = readerInfo.CardNo;
                ajmReaderStatus.Name       = readerInfo.Name;
                ajmReaderStatus.Status     = ajmReaderStatus.Status = ReaderStatus.Leave.ToString();
                if (readerInfo.EnterOutLog != null && readerInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave)
                {
                    switch (readerInfo.EnterOutLog.EnterOutState)
                    {
                    case EnterOutLogType.ComeBack:
                    case EnterOutLogType.ContinuedTime:
                    case EnterOutLogType.ReselectSeat:
                    case EnterOutLogType.SelectSeat:
                    case EnterOutLogType.WaitingSuccess:
                    case EnterOutLogType.BookingConfirmation:
                        ajmReaderStatus.Status       = ReaderStatus.Seating.ToString();
                        ajmReaderStatus.CanOperation = "Leave;ShortLeave" + (isCheckCode && readerInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.IsCanContinuedTime && readerInfo.AtReadingRoom.Setting.SeatUsedTimeLimit.Used ? ";ContiuneTime" : "");
                        break;

                    case EnterOutLogType.ShortLeave:
                        ajmReaderStatus.Status       = ReaderStatus.ShortLeave.ToString();
                        ajmReaderStatus.CanOperation = "Leave;" + (isCheckCode ? ";ComeBack" : "");
                        break;
                    }
                    ajmReaderStatus.InRoom          = readerInfo.AtReadingRoom.Name;
                    ajmReaderStatus.SeatNum         = readerInfo.EnterOutLog.ShortSeatNo;
                    ajmReaderStatus.NowStatusRemark = readerInfo.EnterOutLog.Remark;
                    ajmReaderStatus.Time            = readerInfo.EnterOutLog.EnterOutTime.ToString();
                }
                if (readerInfo.WaitSeatLog != null)
                {
                    ajmReaderStatus.Status          = ReaderStatus.Waiting.ToString();
                    ajmReaderStatus.InRoom          = readerInfo.AtReadingRoom.Name;
                    ajmReaderStatus.SeatNum         = readerInfo.WaitSeatLog.EnterOutLog.ShortSeatNo;
                    ajmReaderStatus.CanOperation    = "CancelWait";
                    ajmReaderStatus.NowStatusRemark = string.Format("您正在等待,{0} {1}号座位。", ajmReaderStatus.InRoom, ajmReaderStatus.SeatNum);
                    ajmReaderStatus.Time            = readerInfo.WaitSeatLog.EnterOutLog.ToString();
                }
                if (readerInfo.BespeakLog.Count > 0 && readerInfo.BespeakLog[0].BsepeakTime.Date == DateTime.Now.Date)
                {
                    ajmReaderStatus.Status          = ReaderStatus.Booking.ToString();
                    ajmReaderStatus.InRoom          = readerInfo.BespeakLog[0].ReadingRoomName;
                    ajmReaderStatus.SeatNum         = readerInfo.BespeakLog[0].ShortSeatNum;
                    ajmReaderStatus.CanOperation    = "CancelBook" + (isCheckCode ? ";CheckBook" : "");;
                    ajmReaderStatus.NowStatusRemark = readerInfo.BespeakLog[0].Remark;
                    ajmReaderStatus.Time            = readerInfo.BespeakLog[0].SubmitTime.ToString();
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmReaderStatus);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取读者当前状态发生异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取用户状态执行异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 获取登录读者详细信息
        /// </summary>
        /// <param name="studentNo"></param>
        /// <returns></returns>
        public string GetUserInfo_WeiXin(string studentNo)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                ReaderInfo readerInfo = SeatManageDateService.GetReader(studentNo, true);
                if (readerInfo == null)
                {
                    result.Result = false;
                    result.Msg    = "未查询到该读者的当前状态";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_WeiXinUserInfo ajmWeiXinUserInfo = new AJM_WeiXinUserInfo();
                ajmWeiXinUserInfo.StudentNo  = readerInfo.CardNo;
                ajmWeiXinUserInfo.Name       = readerInfo.Name;
                ajmWeiXinUserInfo.ReaderType = readerInfo.ReaderType;
                //预约网站设置
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseBookComfirm     = readerInfo.PecketWebSetting.UseBookComfirm;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseBookNextDaySeat = readerInfo.PecketWebSetting.UseBookNextDaySeat;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseBookNowDaySeat  = readerInfo.PecketWebSetting.UseBookNowDaySeat;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseBookSeat        = readerInfo.PecketWebSetting.UseBookSeat;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseCanLeave        = readerInfo.PecketWebSetting.UseCanLeave;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseCancelBook      = readerInfo.PecketWebSetting.UseCancelBook;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseCancelWait      = readerInfo.PecketWebSetting.UseCancelWait;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseChangeSeat      = readerInfo.PecketWebSetting.UseChangeSeat;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseComeBack        = readerInfo.PecketWebSetting.UseComeBack;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseContinue        = readerInfo.PecketWebSetting.UseContinue;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseSelectSeat      = readerInfo.PecketWebSetting.UseSelectSeat;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseShortLeave      = readerInfo.PecketWebSetting.UseShortLeave;
                ajmWeiXinUserInfo.AjmPecketBookSetting.UseWaitSeat        = readerInfo.PecketWebSetting.UseWaitSeat;

                AJM_ReaderStatus ajmReaderStatus = new AJM_ReaderStatus();

                if (readerInfo.EnterOutLog != null)
                {
                    AJM_EnterOutLog ajmEnterOutLog = new AJM_EnterOutLog();
                    ajmEnterOutLog.EnterOutTime           = readerInfo.EnterOutLog.EnterOutTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmEnterOutLog.EnterOutState          = readerInfo.EnterOutLog.EnterOutState.ToString();
                    ajmEnterOutLog.Id                     = readerInfo.EnterOutLog.EnterOutLogID;
                    ajmEnterOutLog.Operator               = readerInfo.EnterOutLog.Flag.ToString();
                    ajmEnterOutLog.Remark                 = readerInfo.EnterOutLog.Remark;
                    ajmEnterOutLog.RoomName               = readerInfo.EnterOutLog.ReadingRoomName;
                    ajmEnterOutLog.RoomNo                 = readerInfo.EnterOutLog.ReadingRoomNo;
                    ajmEnterOutLog.SeatNo                 = readerInfo.EnterOutLog.SeatNo;
                    ajmEnterOutLog.SeatShortNo            = readerInfo.EnterOutLog.ShortSeatNo;
                    ajmWeiXinUserInfo.AjmReadingRoomState = GetSingleRoomOpenState(ajmEnterOutLog.RoomNo);

                    switch (readerInfo.EnterOutLog.EnterOutState)
                    {
                    case EnumType.EnterOutLogType.None:
                    case EnumType.EnterOutLogType.Leave:
                    case EnumType.EnterOutLogType.BookingCancel:
                    case EnumType.EnterOutLogType.WaitingCancel:
                    case EnumType.EnterOutLogType.BespeakWaiting:
                        ajmReaderStatus.Status = EnumType.ReaderStatus.Leave.ToString();
                        break;

                    case EnumType.EnterOutLogType.BookingConfirmation:
                    case EnumType.EnterOutLogType.CancelTime:
                    case EnumType.EnterOutLogType.ComeBack:
                    case EnumType.EnterOutLogType.ContinuedTime:
                    case EnumType.EnterOutLogType.ReselectSeat:
                    case EnumType.EnterOutLogType.SelectSeat:
                    case EnumType.EnterOutLogType.Timing:
                    case EnumType.EnterOutLogType.WaitingSuccess:
                        ajmReaderStatus.Status = EnumType.ReaderStatus.Seating.ToString();
                        break;

                    case EnumType.EnterOutLogType.ShortLeave:
                        ajmReaderStatus.Status = EnumType.ReaderStatus.ShortLeave.ToString();
                        break;

                    case EnumType.EnterOutLogType.Waiting:
                        ajmReaderStatus.Status = EnumType.ReaderStatus.Waiting.ToString();
                        break;
                    }
                    ajmReaderStatus.AjmEnterOutLog = ajmEnterOutLog;
                }
                if (readerInfo.WaitSeatLog != null)
                {
                    AJM_WaitSeatLog ajmWaitSeatLog = new AJM_WaitSeatLog();
                    ajmWaitSeatLog.RoomName               = readerInfo.WaitSeatLog.EnterOutLog.ReadingRoomName;
                    ajmWaitSeatLog.RoomNo                 = readerInfo.WaitSeatLog.ReadingRoomNo;
                    ajmWaitSeatLog.SeatNo                 = readerInfo.WaitSeatLog.SeatNo;
                    ajmWaitSeatLog.SeatShortNo            = readerInfo.WaitSeatLog.EnterOutLog.ShortSeatNo;
                    ajmWaitSeatLog.SeatWaitId             = readerInfo.WaitSeatLog.SeatWaitingID;
                    ajmWaitSeatLog.SeatWaitTime           = readerInfo.WaitSeatLog.SeatWaitTime.ToString("yyyy-MM-dd HH:mm:ss");
                    ajmWaitSeatLog.StudentNo_A            = readerInfo.WaitSeatLog.CardNo;
                    ajmWaitSeatLog.StudentNo_B            = readerInfo.WaitSeatLog.CardNoB;
                    ajmWeiXinUserInfo.AjmReadingRoomState = GetSingleRoomOpenState(ajmWaitSeatLog.RoomNo);

                    ajmReaderStatus.AjmWaitSeatLogs = ajmWaitSeatLog;
                    ajmReaderStatus.Status          = EnumType.ReaderStatus.Waiting.ToString();
                }
                if (readerInfo.BespeakLog.Count > 0)
                {
                    foreach (BespeakLogInfo model in readerInfo.BespeakLog)
                    {
                        if (model.BsepeakTime.Date == DateTime.Now.Date)
                        {
                            ajmReaderStatus.Status = EnumType.ReaderStatus.Booking.ToString();
                        }
                        AJM_BespeakLog ajmBespeakLog = new AJM_BespeakLog
                        {
                            Id             = model.BsepeaklogID,
                            BookTime       = model.BsepeakTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            IsValid        = true,
                            Remark         = model.Remark,
                            RoomName       = model.ReadingRoomName,
                            RoomNo         = model.ReadingRoomNo,
                            SeatNo         = model.SeatNo,
                            SeatShortNo    = model.ShortSeatNum,
                            SubmitDateTime = model.SubmitTime.ToString("yyyy-MM-dd HH:mm:ss")
                        };
                        ajmReaderStatus.AjmBespeakLogs.Add(ajmBespeakLog);
                    }
                }
                ajmWeiXinUserInfo.AjmReaderStatus = ajmReaderStatus;

                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmWeiXinUserInfo);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取登录读者详细信息遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取登录读者详细信息执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 获取二维码座位信息
        /// </summary>
        /// <param name="codeStr"></param>
        /// <returns></returns>
        public string QRcodeSeatInfo(string codeStr)
        {
            try
            {
                AJM_HandleResult   result          = new AJM_HandleResult();
                string[]           scanResultArray = codeStr.Split('?');
                ScanCodeParamModel scancode        = null;
                if (scanResultArray.Length >= 2)
                {
                    string[] strParam = scanResultArray[1].Split('=');
                    if (strParam.Length >= 2)
                    {
                        scancode = ScanCodeParamModel.Prase(strParam[1]);//兼容url的二维码。
                    }
                }
                else
                {
                    scancode = ScanCodeParamModel.Prase(codeStr);
                }
                if (scancode == null)
                {
                    result.Result = false;
                    result.Msg    = "二维码错误!";
                    return(JSONSerializer.Serialize(result));
                }
                Seat seatInfo = SeatManageDateService.GetSeatInfoBySeatNum(scancode.SeatNum);
                if (seatInfo == null)
                {
                    result.Result = false;
                    result.Msg    = "此座位不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                AJM_SeatStatus jm_Seat = new AJM_SeatStatus();
                jm_Seat.SeatNo      = seatInfo.SeatNo;
                jm_Seat.SeatShortNo = seatInfo.ShortSeatNo;
                jm_Seat.RoomName    = seatInfo.ReadingRoom.Name;
                jm_Seat.RoomNo      = seatInfo.ReadingRoom.No;
                jm_Seat.IsStopUse   = seatInfo.IsSuspended;

                if (seatInfo.ReadingRoom.Setting.SeatBespeak.Used && !seatInfo.IsSuspended)
                {
                    DateTime ndt = DateTime.Now;
                    if (seatInfo.ReadingRoom.Setting.SeatBespeak.NowDayBespeak && seatInfo.SeatUsedState == EnterOutLogType.Leave)
                    {
                        jm_Seat.BespeakDate.Add(ndt.ToShortDateString(), seatInfo.ReadingRoom.Setting.GetBespeakTimeList(ndt).Select(t => t.ToShortTimeString()).ToList());
                    }
                    for (int i = 1; i <= seatInfo.ReadingRoom.Setting.SeatBespeak.BespeakBeforeDays; i++)
                    {
                        List <BespeakLogInfo> list = SeatManageDateService.GetBespeakLogInfoBySeatNo(seatInfo.SeatNo, ndt.AddDays(i));
                        if (list.Count > 0 && !seatInfo.ReadingRoom.Setting.IsCanBespeakSeat(ndt.AddDays(i)))
                        {
                            continue;
                        }
                        jm_Seat.BespeakDate.Add(ndt.AddDays(i).ToShortDateString(), seatInfo.ReadingRoom.Setting.GetBespeakTimeList(ndt.AddDays(i)).Select(t => t.ToShortTimeString()).ToList());
                    }
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(jm_Seat);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write("获取二维码信息遇到异常:" + ex.Message);
                AJM_HandleResult result = new AJM_HandleResult();
                result.Result = false;
                result.Msg    = "执行遇到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
Ejemplo n.º 13
0
        public string QRcodeOperation(string codeStr, string studentNo)
        {
            try
            {
                AJM_HandleResult          result          = new AJM_HandleResult();
                string[]                  scanResultArray = codeStr.Split('?');
                ClientCheckCodeParamModel scancode        = null;
                if (scanResultArray.Length >= 2)
                {
                    string[] strParam = scanResultArray[1].Split('=');
                    if (strParam.Length >= 2)
                    {
                        scancode = ClientCheckCodeParamModel.Prase(strParam[1]);//兼容url的二维码。
                    }
                }
                else
                {
                    scancode = ClientCheckCodeParamModel.Prase(codeStr);
                }
                DateTime ndt = DateTime.Now;
                if (scancode == null)
                {
                    result.Result = false;
                    result.Msg    = "对不起,二维码错误!";
                    return(JSONSerializer.Serialize(result));
                }
                if (scancode.CodeTime.AddMinutes(1) <= ndt)
                {
                    result.Result = false;
                    result.Msg    = "对不起,二维码超时!";
                    return(JSONSerializer.Serialize(result));
                }
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "读者学号为空。";
                    return(JSONSerializer.Serialize(result));
                }
                ReaderInfo reader = SeatManageDateService.GetReader(studentNo, true);
                if (reader == null)
                {
                    result.Result = false;
                    result.Msg    = "获取读者信息失败。";
                    return(JSONSerializer.Serialize(result));
                }
                if (reader.EnterOutLog == null && reader.BespeakLog.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "对不起,您还没有座位,请先选择或预约一个座位。";
                }

                if (reader.EnterOutLog != null)
                {
                    switch (reader.EnterOutLog.EnterOutState)
                    {
                    case EnterOutLogType.BookingConfirmation: //预约入座
                    case EnterOutLogType.SelectSeat:          //选座
                    case EnterOutLogType.ContinuedTime:       //续时
                    case EnterOutLogType.ComeBack:            //暂离回来
                    case EnterOutLogType.ReselectSeat:        //重新选座
                    case EnterOutLogType.WaitingSuccess:      //等待入座
                        result.Result = false;
                        result.Msg    = "您当前已有座位。";
                        break;

                    case EnterOutLogType.ShortLeave:
                        reader.EnterOutLog.EnterOutState = EnterOutLogType.ComeBack;
                        reader.EnterOutLog.Remark        = string.Format("您在选座终端{0}扫描二维码恢复在座,本次暂离时长{1}分钟。", scancode.ClientNo, ((int)(ndt - reader.EnterOutLog.EnterOutTime).TotalMinutes));
                        reader.EnterOutLog.Flag          = Operation.Reader;
                        reader.EnterOutLog.EnterOutTime  = ndt;
                        result.Result = true;
                        int newId = -1;
                        if (SeatManageDateService.AddEnterOutLogInfo(reader.EnterOutLog, ref newId) != HandleResult.Successed)
                        {
                            result.Result = false;
                            result.Msg    = "对不起,暂离回来失败!";
                            return(JSONSerializer.Serialize(result));
                        }
                        result.Result = true;
                        result.Msg    = reader.EnterOutLog.Remark;
                        List <WaitSeatLogInfo> waitSeatLogs = SeatManageDateService.GetWaitLogList("", reader.EnterOutLog.EnterOutLogID, null, null, null);
                        if (waitSeatLogs.Count > 0)
                        {
                            WaitSeatLogInfo waitSeatLog = waitSeatLogs[0];
                            waitSeatLog.NowState     = LogStatus.Fail;
                            waitSeatLog.OperateType  = Operation.OtherReader;
                            waitSeatLog.WaitingState = EnterOutLogType.WaitingCancel;
                            SeatManageDateService.UpdateWaitLog(waitSeatLog);
                        }
                        break;

                    case EnterOutLogType.Leave:
                        result.Result = false;
                        result.Msg    = "对不起,您还没有座位,请先选择或预约一个座位。";
                        break;

                    default:
                        result.Result = false;
                        result.Msg    = "对不起,您还没有座位,请先选择或预约一个座位。";
                        break;
                    }
                    return(JSONSerializer.Serialize(result));
                }
                ReadingRoomSetting set     = reader.AtReadingRoom.Setting;
                DateTime           dtBegin = reader.BespeakLog[0].BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime));
                DateTime           dtEnd   = reader.BespeakLog[0].BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime));
                if (!DateTimeOperate.DateAccord(dtBegin, dtEnd, ndt) && (!set.SeatBespeak.NowDayBespeak || reader.BespeakLog[0].SubmitTime != reader.BespeakLog[0].BsepeakTime))
                {
                    result.Result = false;
                    result.Msg    = "对不起,您预约的座位没有到达签到时间";
                    return(JSONSerializer.Serialize(result));
                }
                EnterOutLogInfo seatUsedInfo = SeatManageDateService.GetEnterOutLogInfoBySeatNum(reader.BespeakLog[0].SeatNo);
                if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave)
                {
                    //条件满足,说明座位正在使用。
                    seatUsedInfo.EnterOutState = EnterOutLogType.Leave;
                    seatUsedInfo.EnterOutType  = LogStatus.Valid;
                    seatUsedInfo.Remark        = "您正在使用的座位已被原预约的读者";
                    seatUsedInfo.Flag          = Operation.OtherReader;
                    int newId = -1;
                    if (SeatManageDateService.AddEnterOutLogInfo(seatUsedInfo, ref newId) != HandleResult.Successed)
                    {
                        result.Result = false;
                        result.Msg    = "对不起,此阅览室尚未开放。";
                        return(JSONSerializer.Serialize(result));
                    }

                    List <WaitSeatLogInfo> waitInfoList = SeatManageDateService.GetWaitLogList(null, seatUsedInfo.EnterOutLogID, null, null, null);
                    if (waitInfoList.Count > 0)
                    {
                        WaitSeatLogInfo waitSeatLogModel = waitInfoList[0];
                        waitSeatLogModel.OperateType  = Operation.Reader;
                        waitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel;
                        waitSeatLogModel.NowState     = LogStatus.Valid;
                        SeatManageDateService.UpdateWaitLog(waitSeatLogModel);
                    }
                }
                EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造
                newEnterOutLog.CardNo          = reader.BespeakLog[0].CardNo;
                newEnterOutLog.EnterOutLogNo   = SeatComm.RndNum();
                newEnterOutLog.EnterOutState   = EnterOutLogType.BookingConfirmation;
                newEnterOutLog.EnterOutType    = LogStatus.Valid;
                newEnterOutLog.Flag            = Operation.Reader;
                newEnterOutLog.ReadingRoomNo   = reader.BespeakLog[0].ReadingRoomNo;
                newEnterOutLog.ReadingRoomName = reader.BespeakLog[0].ReadingRoomName;
                newEnterOutLog.ShortSeatNo     = reader.BespeakLog[0].ShortSeatNum;
                newEnterOutLog.SeatNo          = reader.BespeakLog[0].SeatNo;
                newEnterOutLog.Remark          = string.Format("您在选座终端{0}扫描二维码,签到入座预约的{1} {2}号座位", scancode.ClientNo, reader.BespeakLog[0].ReadingRoomName, reader.BespeakLog[0].ShortSeatNum);

                int logid = -1;
                if (SeatManageDateService.AddEnterOutLogInfo(newEnterOutLog, ref logid) == HandleResult.Successed)
                {
                    reader.BespeakLog[0].BsepeakState = BookingStatus.Confinmed;
                    reader.BespeakLog[0].CancelPerson = Operation.Reader;
                    reader.BespeakLog[0].CancelTime   = ndt;
                    reader.BespeakLog[0].Remark       = newEnterOutLog.Remark;
                    SeatManageDateService.UpdateBespeakLogInfo(reader.BespeakLog[0]);
                }
                result.Result = true;
                result.Msg    = newEnterOutLog.Remark;
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write("读者签到/回来遇到异常:" + ex.Message);
                AJM_HandleResult result = new AJM_HandleResult();
                result.Result = false;
                result.Msg    = "执行遇到异常";
                return(JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 获取座位的可预约信息
        /// </summary>
        /// <param name="seatNo"></param>
        /// <param name="roomNo"></param>
        /// <param name="bespeakTime"></param>
        /// <returns></returns>
        public string GetSeatBespeakInfo(string seatNo, string roomNo, string bespeakTime)
        {
            AJM_HandleResult result = new AJM_HandleResult();

            try
            {
                if (string.IsNullOrEmpty(roomNo) || string.IsNullOrEmpty(bespeakTime))
                {
                    result.Result = false;
                    result.Msg    = "阅览室编号或预约时间不能为空!";
                    return(JSONSerializer.Serialize(result));
                }
                //如果预约日期是当天,获取当天可用座位(排除已被预约座位)
                DateTime bespeakDate;
                if (!DateTime.TryParse(bespeakTime, out bespeakDate))
                {
                    result.Result = false;
                    result.Msg    = "日期格式不正确!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date < DateTime.Now.Date)
                {
                    result.Result = false;
                    result.Msg    = "查询日期不能早于当天日期!";
                    return(JSONSerializer.Serialize(result));
                }
                List <ReadingRoomInfo> readingRoomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> {
                    roomNo
                });
                if (readingRoomInfos.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "阅览室不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                if (!readingRoomInfos[0].SeatList.Seats.ContainsKey(seatNo))
                {
                    result.Result = false;
                    result.Msg    = "该座位不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                if (readingRoomInfos[0].SeatList.Seats[seatNo].IsSuspended)
                {
                    result.Result = false;
                    result.Msg    = "该座位暂停使用!";
                    return(JSONSerializer.Serialize(result));
                }
                if (!readingRoomInfos[0].Setting.SeatBespeak.Used)
                {
                    result.Result = false;
                    result.Msg    = "当前阅览室不提供预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if ((bespeakDate.Date - DateTime.Now.Date).Days > readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays)
                {
                    result.Result = false;
                    result.Msg    = "您选择的日期尚未开放预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date == DateTime.Now.Date && !readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak)
                {
                    result.Result = false;
                    result.Msg    = "当前阅览室未开放当天预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if ((bespeakDate.Date == DateTime.Now.Date) && readingRoomInfos[0].Setting.ReadingRoomOpenState(bespeakDate.Date) != EnumType.ReadingRoomStatus.Close)
                {
                    result.Result = false;
                    result.Msg    = "对不起当前预约时间段阅览室未开放!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date != DateTime.Now.Date && !readingRoomInfos[0].Setting.IsCanBespeakSeat(bespeakDate))
                {
                    result.Result = false;
                    result.Msg    = "当前时间暂未开放预约!";
                    return(JSONSerializer.Serialize(result));
                }
                if (bespeakDate.Date == DateTime.Now.Date)
                {
                    Seat seat = SeatManageDateService.GetSeatInfoBySeatNum(seatNo);
                    if (seat == null)
                    {
                        result.Result = false;
                        result.Msg    = "对不起,获取座位信息失败!";
                        return(JSONSerializer.Serialize(result));
                    }
                    if (seat.SeatUsedState != EnterOutLogType.Leave)
                    {
                        result.Result = false;
                        result.Msg    = "对不起此座位已被其他人使用!";
                        return(JSONSerializer.Serialize(result));
                    }
                }
                if (SeatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, bespeakDate.Date).Count > 0)
                {
                    result.Result = false;
                    result.Msg    = "对不起此座位已被其他人预约!";
                    return(JSONSerializer.Serialize(result));
                }

                AJM_SeatBespeakInfo ajmseat = new AJM_SeatBespeakInfo();
                ajmseat.SeatNo          = seatNo;
                ajmseat.SeatShortNo     = readingRoomInfos[0].SeatList.Seats[seatNo].ShortSeatNo;
                ajmseat.RoomNo          = readingRoomInfos[0].No;
                ajmseat.RoomName        = readingRoomInfos[0].Name;
                ajmseat.BespeakDate     = bespeakDate.ToShortDateString();
                ajmseat.IsCanSelectTime = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak;
                ajmseat.IsUsedSpan      = readingRoomInfos[0].Setting.SeatBespeak.SpecifiedTime;
                ajmseat.CheckKeepTime   = (int)readingRoomInfos[0].Setting.SeatBespeak.SeatKeepTime;
                ajmseat.CheckBeforeTime = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.BeginTime);
                ajmseat.CheckLastTime   = int.Parse(readingRoomInfos[0].Setting.SeatBespeak.ConfirmTime.EndTime);

                DateTime bookstartTime = readingRoomInfos[0].Setting.DateOpenTime(bespeakDate);
                if (bookstartTime > DateTime.Now)
                {
                    ajmseat.IsCanNowBook    = false;
                    ajmseat.IsCanSelectTime = true;
                }

                if (readingRoomInfos[0].Setting.SeatBespeak.SpecifiedBespeak)
                {
                    List <DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(bespeakDate);
                    foreach (var time in timeSpans)
                    {
                        ajmseat.TimeList.Add(time.ToShortTimeString());
                    }
                }
                else
                {
                    ajmseat.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(bespeakDate).ToShortTimeString());
                }


                //if (ajmseat.IsCanSelectTime)
                //{
                //    List<DateTime> timeSpans = readingRoomInfos[0].Setting.GetSelectTimeList(besppeakDate);
                //    foreach (var time in timeSpans)
                //    {
                //        ajmseat.TimeList.Add(time.ToShortTimeString());
                //    }
                //}
                //else
                //{
                //    ajmseat.TimeList.Add(readingRoomInfos[0].Setting.DateOpenTime(besppeakDate).ToShortTimeString());
                //}

                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(ajmseat);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取当前可预约座位列表遇到异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取当前阅览室可预约座位执行越到异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 获取座位信息以及操作
        /// </summary>
        /// <param name="seatNo"></param>
        /// <param name="roomNo"></param>
        /// <param name="studentNo"></param>
        /// <param name="isMessager"></param>
        /// <returns></returns>
        public string GetMessageSeatStatus(string seatNo, string roomNo)
        {
            AJM_HandleResult      result     = new AJM_HandleResult();
            AJM_SeatMessageStatus seatStatus = new AJM_SeatMessageStatus();

            try
            {
                List <ReadingRoomInfo> readingRoomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> {
                    roomNo
                });
                if (readingRoomInfos.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "阅览室不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                seatStatus.RoomNo   = readingRoomInfos[0].No;
                seatStatus.RoomName = readingRoomInfos[0].Name;
                if (!readingRoomInfos[0].SeatList.Seats.ContainsKey(seatNo))
                {
                    result.Result = false;
                    result.Msg    = "该座位不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                if (readingRoomInfos[0].SeatList.Seats[seatNo].IsSuspended)
                {
                    seatStatus.Status = "StopUsed";
                }
                else
                {
                    Seat seat = SeatManageDateService.GetSeatInfoBySeatNum(seatNo);
                    seatStatus.SeatNo        = seat.SeatNo;
                    seatStatus.SeatShortNo   = seat.ShortSeatNo;
                    seatStatus.Name          = seat.UserName;
                    seatStatus.StuedntNo     = seat.UserCardNo;
                    seatStatus.OperationTime = seat.BeginUsedTime.ToString("yyyy-MM-dd HH:mm:ss");
                    switch (seat.SeatUsedState)
                    {
                    case EnterOutLogType.ComeBack:
                    case EnterOutLogType.ContinuedTime:
                    case EnterOutLogType.ReselectSeat:
                    case EnterOutLogType.SelectSeat:
                    case EnterOutLogType.WaitingSuccess:
                        seatStatus.Status       = ReaderStatus.Seating.ToString();
                        seatStatus.CanOperation = "Leave;ShortLeave;Blacklist";
                        break;

                    case EnterOutLogType.ShortLeave:
                        seatStatus.Status       = ReaderStatus.Seating.ToString();
                        seatStatus.CanOperation = "Leave;Blacklist";
                        break;

                    case EnterOutLogType.Leave:
                        seatStatus.Status       = ReaderStatus.Leave.ToString();
                        seatStatus.CanOperation = "GiveSeat";
                        break;

                    case EnterOutLogType.BespeakWaiting:
                        seatStatus.Status       = ReaderStatus.Booking.ToString();
                        seatStatus.CanOperation = "CancelBook";
                        break;
                    }
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(seatStatus);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取读者当前状态发生异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取用户状态执行异常!";
                return(JSONSerializer.Serialize(result));
            }
        }
        /// <summary>
        /// 获取座位信息以及操作
        /// </summary>
        /// <param name="seatNo"></param>
        /// <param name="roomNo"></param>
        /// <param name="studentNo"></param>
        /// <param name="isMessager"></param>
        /// <returns></returns>
        public string GetSeatNowStatus(string seatNo, string roomNo, string studentNo)
        {
            AJM_HandleResult  result     = new AJM_HandleResult();
            AJM_SeatNowStatus seatStatus = new AJM_SeatNowStatus();

            try
            {
                if (string.IsNullOrEmpty(studentNo))
                {
                    result.Result = false;
                    result.Msg    = "学号不能为空";
                    return(JSONSerializer.Serialize(result));
                }
                List <ReadingRoomInfo> readingRoomInfos = SeatManageDateService.GetReadingRoomInfo(new List <string> {
                    roomNo
                });
                if (readingRoomInfos.Count < 1)
                {
                    result.Result = false;
                    result.Msg    = "阅览室不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                seatStatus.RoomNo   = readingRoomInfos[0].No;
                seatStatus.RoomName = readingRoomInfos[0].Name;
                if (!readingRoomInfos[0].SeatList.Seats.ContainsKey(seatNo))
                {
                    result.Result = false;
                    result.Msg    = "该座位不存在!";
                    return(JSONSerializer.Serialize(result));
                }
                seatStatus.SeatNo      = readingRoomInfos[0].SeatList.Seats[seatNo].SeatNo;
                seatStatus.SeatShortNo = readingRoomInfos[0].SeatList.Seats[seatNo].ShortSeatNo;
                Seat       seat       = SeatManageDateService.GetSeatInfoBySeatNum(seatNo);
                ReaderInfo readerInfo = SeatManageDateService.GetReader(studentNo, true);
                if (readerInfo == null)
                {
                    result.Result = false;
                    result.Msg    = "未查询到该读者的当前状态";
                    return(JSONSerializer.Serialize(result));
                }
                bool isSelfSeat = readerInfo.EnterOutLog != null && readerInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave && seat.SeatNo == readerInfo.EnterOutLog.SeatNo;
                bool isOnSeat   = (readerInfo.EnterOutLog != null && readerInfo.EnterOutLog.EnterOutState != EnterOutLogType.Leave);
                if (readingRoomInfos[0].SeatList.Seats[seatNo].IsSuspended)
                {
                    seatStatus.Status = "StopUsed";
                }
                else
                {
                    switch (seat.SeatUsedState)
                    {
                    case EnterOutLogType.ComeBack:
                    case EnterOutLogType.ContinuedTime:
                    case EnterOutLogType.ReselectSeat:
                    case EnterOutLogType.SelectSeat:
                    case EnterOutLogType.WaitingSuccess:
                    case EnterOutLogType.BookingConfirmation:
                        seatStatus.Status       = ReaderStatus.Seating.ToString();
                        seatStatus.CanOperation = isSelfSeat ? "Leave;ShortLeave" : "";
                        break;

                    case EnterOutLogType.ShortLeave:
                        seatStatus.Status       = ReaderStatus.Seating.ToString();
                        seatStatus.CanOperation = isSelfSeat ? "Leave" : "";
                        break;

                    case EnterOutLogType.Leave:
                        seatStatus.Status       = ReaderStatus.Leave.ToString();
                        seatStatus.CanOperation = !isSelfSeat && isOnSeat ? "ChangeSeat" : "";
                        break;
                    }
                    if (readerInfo.WaitSeatLog != null && readerInfo.WaitSeatLog.SeatNo == seat.SeatNo)
                    {
                        seatStatus.Status       = ReaderStatus.Waiting.ToString();
                        seatStatus.CanOperation = "CancelWait";
                    }
                    if (readerInfo.BespeakLog.Count > 0 && readerInfo.BespeakLog[0].BsepeakTime.Date == DateTime.Now.Date && readerInfo.BespeakLog[0].SeatNo == seat.SeatNo)
                    {
                        seatStatus.Status       = ReaderStatus.Booking.ToString();
                        seatStatus.CanOperation = "CancelBook";
                    }
                    if (readingRoomInfos[0].Setting.SeatBespeak.Used)
                    {
                        if (readingRoomInfos[0].Setting.SeatBespeak.NowDayBespeak && seat.SeatUsedState == EnterOutLogType.Leave && SeatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, DateTime.Now).Count < 1)
                        {
                            seatStatus.CanBookingDate.Add(DateTime.Now.ToShortDateString());
                        }
                        for (int i = 1; i <= readingRoomInfos[0].Setting.SeatBespeak.BespeakBeforeDays; i++)
                        {
                            if (SeatManageDateService.GetBespeakLogInfoBySeatNo(seatNo, DateTime.Now.AddDays(i)).Count < 1)
                            {
                                seatStatus.CanBookingDate.Add(DateTime.Now.AddDays(i).ToShortDateString());
                            }
                        }
                    }
                }
                result.Result = true;
                result.Msg    = JSONSerializer.Serialize(seatStatus);
                return(JSONSerializer.Serialize(result));
            }
            catch (Exception ex)
            {
                WriteLog.Write(string.Format("获取读者当前状态发生异常:{0}", ex.Message));
                result.Result = false;
                result.Msg    = "获取用户状态执行异常!";
                return(JSONSerializer.Serialize(result));
            }
        }