Esempio n. 1
0
        /// <summary>
        /// 检验用户是否已经授权访问系统
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static System.Web.Http.IHttpActionResult CheckAuthorized(System.Net.Http.HttpRequestMessage request)
        {
            if (!IsSignin())
            {
                var errorResult = new Prepaid.Results.InternalServerErrorTextPlainResult("未授权访问,请先登录!", request);
                errorResult.StatusCode = System.Net.HttpStatusCode.Unauthorized;
                return(errorResult);
            }

            return(null);
        }
        public IHttpActionResult PostRecharge([FromUri]Recharge recharge)
        {
            var errResult = TextHelper.CheckAuthorized(Request);
            if (errResult != null)
                return errResult;

            // 检测两次充值时间间隔是否过于频繁,防止误充
            Setting setting = TextHelper.GetSystemConfig();
            if (setting.IsRechargeSettle)
            {
                bool isValid = ChkValidPeriod(recharge.RoomNo, setting.RechargeLimitInterval);
                if (!isValid)
                {
                    string msg = string.Format("两次充值时间间隔不到{0}分钟,请稍后重试!", setting.RechargeLimitInterval);
                    var errorResult = new Prepaid.Results.InternalServerErrorTextPlainResult(msg, Request);
                    errorResult.StatusCode = System.Net.HttpStatusCode.Forbidden;
                    return errorResult;
                }
            }

            Room room = null;
            Log log = new Log();
            AdminSession admin = HttpContext.Current.Session["mySession"] as AdminSession;
            string money = TextHelper.ConvertMoney(recharge.Money);
            log.UserID = admin.UUID;
            log.Type = 2; // 1:登录日志 2:操作日志
            log.ClientAddr = TextHelper.GetHostAddress();
            log.Remark = "";
            log.DateTime = DateTime.Now;

            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    room = this.roomRespository.GetByID(recharge.RoomNo);
                    room.AccountBalance += recharge.Money;
                    this.roomRespository.Put(room);

                    recharge.UUID = TextHelper.GenerateUUID();
                    recharge.DateTime = DateTime.Now;
                    this.rechargeRespository.Add(recharge);

                    log.Content = string.Format("管理员:{0}对房间:{1}成功充值¥{2}元!", admin.UserName, recharge.RoomNo, money);
                    ts.Complete(); // 提交事务
                }
            }
            catch (DbUpdateException)
            {
                if (this.rechargeRespository.IsExist(recharge.UUID))
                    return Conflict();
                else
                    log.Content = string.Format("管理员:{0}对房间:{1}充值金额¥{2}元失败!", admin.UserName, recharge.RoomNo, money);
            }
            this.logRespository.Add(log);

            // 消息通知处理
            if (room != null)
                TextHelper.NotifyProcess(setting.Notify, room, money, log.Content);

            return Ok();
        }
Esempio n. 3
0
        public IHttpActionResult PostRecharge([FromUri] Recharge recharge)
        {
            var errResult = TextHelper.CheckAuthorized(Request);

            if (errResult != null)
            {
                return(errResult);
            }

            // 检测两次充值时间间隔是否过于频繁,防止误充
            Setting setting = TextHelper.GetSystemConfig();

            if (setting.IsRechargeSettle)
            {
                bool isValid = ChkValidPeriod(recharge.RoomNo, setting.RechargeLimitInterval);
                if (!isValid)
                {
                    string msg         = string.Format("两次充值时间间隔不到{0}分钟,请稍后重试!", setting.RechargeLimitInterval);
                    var    errorResult = new Prepaid.Results.InternalServerErrorTextPlainResult(msg, Request);
                    errorResult.StatusCode = System.Net.HttpStatusCode.Forbidden;
                    return(errorResult);
                }
            }

            Room         room  = null;
            Log          log   = new Log();
            AdminSession admin = HttpContext.Current.Session["mySession"] as AdminSession;
            string       money = TextHelper.ConvertMoney(recharge.Money);

            log.UserID     = admin.UUID;
            log.Type       = 2; // 1:登录日志 2:操作日志
            log.ClientAddr = TextHelper.GetHostAddress();
            log.Remark     = "";
            log.DateTime   = DateTime.Now;

            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    room = this.roomRespository.GetByID(recharge.RoomNo);
                    room.AccountBalance += recharge.Money;
                    this.roomRespository.Put(room);

                    recharge.UUID     = TextHelper.GenerateUUID();
                    recharge.DateTime = DateTime.Now;
                    this.rechargeRespository.Add(recharge);

                    log.Content = string.Format("管理员:{0}对房间:{1}成功充值¥{2}元!", admin.UserName, recharge.RoomNo, money);
                    ts.Complete(); // 提交事务
                }
            }
            catch (DbUpdateException)
            {
                if (this.rechargeRespository.IsExist(recharge.UUID))
                {
                    return(Conflict());
                }
                else
                {
                    log.Content = string.Format("管理员:{0}对房间:{1}充值金额¥{2}元失败!", admin.UserName, recharge.RoomNo, money);
                }
            }
            this.logRespository.Add(log);

            // 消息通知处理
            if (room != null)
            {
                TextHelper.NotifyProcess(setting.Notify, room, money, log.Content);
            }

            return(Ok());
        }