Example #1
0
        public object exchangeLottery(Dictionary <string, object> dicParas)
        {
            XCCloudManaUserTokenModel userTokenModel = (XCCloudManaUserTokenModel)(dicParas[Constant.XCGameManaUserToken]);
            string barCode    = dicParas.ContainsKey("barCode") ? dicParas["barCode"].ToString() : string.Empty;
            string icCardId   = dicParas.ContainsKey("icCardId") ? dicParas["icCardId"].ToString() : string.Empty;
            string mobileName = dicParas.ContainsKey("mobileName") ? dicParas["mobileName"].ToString() : string.Empty;

            if (string.IsNullOrEmpty(barCode))
            {
                return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "请输入条码编号"));
            }

            StoreBusiness   store         = new StoreBusiness();
            string          errMsg        = string.Empty;
            StoreCacheModel storeModel    = null;
            StoreBusiness   storeBusiness = new StoreBusiness();

            if (!storeBusiness.IsEffectiveStore(userTokenModel.StoreId, ref storeModel, out errMsg))
            {
                return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, errMsg));
            }

            if (storeModel.StoreDBDeployType == 0)
            {
                XCCloudService.BLL.IBLL.XCGame.IFlwLotteryService lotteryService  = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IFlwLotteryService>(storeModel.StoreDBName);
                XCCloudService.BLL.IBLL.XCGame.IMemberService     memberService   = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IMemberService>(storeModel.StoreDBName);
                XCCloudService.BLL.IBLL.XCGame.IScheduleService   scheduleService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IScheduleService>(storeModel.StoreDBName);

                System.DateTime startTime = System.DateTime.Parse(System.DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00");
                System.DateTime endTime   = System.DateTime.Parse(System.DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59");

                var lotteryModel  = lotteryService.GetModels(p => p.Barcode.Equals(barCode)).FirstOrDefault <flw_lottery>();
                var memberModel   = memberService.GetModels(p => p.ICCardID.ToString().Equals(icCardId)).FirstOrDefault <t_member>();
                var scheduleModel = scheduleService.GetModels(p => (p.OpenTime >= startTime && p.OpenTime <= endTime && p.UserID == userTokenModel.XCGameUserId && p.State.Equals("0"))).FirstOrDefault <flw_schedule>();

                if (scheduleModel == null)
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "用户班次信息不存在"));
                }

                if (lotteryModel == null)
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "彩票信息不存在"));
                }

                if (lotteryModel.State == 1)
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "当前彩票已使用"));
                }

                if (memberModel == null)
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "会员信息不存在"));
                }

                XCCloudService.BLL.IBLL.XCGame.IParametersService parametersService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IParametersService>(storeModel.StoreDBName);
                var paramDateValidityModel = parametersService.GetModels(p => p.System.Equals("rbnBackDateValidity", StringComparison.OrdinalIgnoreCase)).FirstOrDefault <t_parameters>();
                if (paramDateValidityModel == null)
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "返分卡有效期参数未设置,不能兑换"));
                }

                DateTime dateTime = Convert.ToDateTime(lotteryModel.PrintTime).AddDays(Convert.ToInt32(paramDateValidityModel.ParameterValue));
                if (System.DateTime.Now > dateTime)
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "已过期,不能兑换"));
                }

                using (TransactionScope ts = new TransactionScope())
                {
                    try
                    {
                        lotteryModel.State       = 1;
                        lotteryModel.RealTime    = System.DateTime.Now;
                        lotteryModel.ICCardID    = int.Parse(icCardId);
                        lotteryModel.UserID      = userTokenModel.XCGameUserId;
                        lotteryModel.ScheduleID  = scheduleModel.ID;
                        lotteryModel.WorkStation = userTokenModel.Mobile;

                        memberModel.Lottery = Convert.ToInt32(memberModel.Lottery) + lotteryModel.LotteryCount;
                        memberModel.ModTime = System.DateTime.Now;

                        lotteryService.Update(lotteryModel);
                        memberService.Update(memberModel);
                        ts.Complete();

                        return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.T, ""));
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }
            }
            else if (storeModel.StoreDBDeployType == 1)
            {
                string sn = System.Guid.NewGuid().ToString().Replace("-", "");
                UDPSocketCommonQueryAnswerModel answerModel = null;
                string radarToken = string.Empty;
                //发送彩票操作
                if (DataFactory.SendDataLotteryOperate(sn, storeModel.StoreID.ToString(), storeModel.StorePassword, barCode, icCardId, "0", mobileName, userTokenModel.Mobile, out radarToken, out errMsg))
                {
                }
                else
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, errMsg));
                }

                answerModel = null;
                int whileCount = 0;
                while (answerModel == null && whileCount <= 25)
                {
                    //获取应答缓存数据
                    whileCount++;
                    System.Threading.Thread.Sleep(1000);
                    answerModel = UDPSocketCommonQueryAnswerBusiness.GetAnswerModel(sn, 1);
                }

                if (answerModel != null)
                {
                    LotteryOperateResultNotifyRequestModel model = (LotteryOperateResultNotifyRequestModel)(answerModel.Result);
                    //移除应答缓存数据
                    UDPSocketCommonQueryAnswerBusiness.Remove(sn);

                    if (model.Result_Code == "1")
                    {
                        return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.T, ""));
                    }
                    else
                    {
                        return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, model.Result_Msg));
                    }
                }
                else
                {
                    return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.T, "", Result_Code.F, "系统没有响应"));
                }
            }
            else
            {
                return(ResponseModelFactory.CreateModel(isSignKeyReturn, Return_Code.F, "", Result_Code.T, "门店配置无效"));
            }
        }
Example #2
0
        private bool Recharge(XCGameManaDeviceStoreType deviceStoreType, string mobile, string xcGameDBName, string storeId, int icCardId, int memberLevelId, int foodId, string orderId, string money, int coins, int balance, string paymentype, string deviceId, int deviceIdentityId, out string foodName, out string errMsg)
        {
            foodName = string.Empty;
            errMsg   = string.Empty;
            balance += coins;
            if (deviceStoreType == XCGameManaDeviceStoreType.Store)
            {
                //验证套餐信息

                XCCloudService.BLL.IBLL.XCGame.IFoodsService foodservice = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IFoodsService>(xcGameDBName);
                var foodModel = foodservice.GetModels(p => p.FoodID == foodId).FirstOrDefault <XCCloudService.Model.XCGame.t_foods>();
                if (foodModel == null)
                {
                    errMsg = "套餐明细不存在";
                    return(false);
                }
                foodName = foodModel.FoodName;
                //验证班次信息
                XCCloudService.BLL.IBLL.XCGame.IScheduleService scheduleService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IScheduleService>(xcGameDBName);
                var schedulelist = scheduleService.GetModels(p => p.State.Equals("0", StringComparison.OrdinalIgnoreCase)).FirstOrDefault <XCCloudService.Model.XCGame.flw_schedule>();
                if (schedulelist == null)
                {
                    errMsg = "相关班次不存在";
                    return(false);
                }

                string         sql        = "exec RechargeFood @Balance,@ICCardID,@FoodID,@CoinQuantity,@Point,@MemberLevelID,@UserID,@ScheduleID,@WorkStation,@MacAddress,@OrderID,@FoodName,@Money,@Paymentype,@Return output ";
                SqlParameter[] parameters = new SqlParameter[15];
                parameters[0]            = new SqlParameter("@Balance", balance);
                parameters[1]            = new SqlParameter("@ICCardID", icCardId);
                parameters[2]            = new SqlParameter("@FoodID", foodId);
                parameters[3]            = new SqlParameter("@CoinQuantity", coins);
                parameters[4]            = new SqlParameter("@Point", "0");
                parameters[5]            = new SqlParameter("@MemberLevelID", memberLevelId);
                parameters[6]            = new SqlParameter("@UserID", Convert.ToInt32(schedulelist.UserID));
                parameters[7]            = new SqlParameter("@ScheduleID", schedulelist.ID.ToString());
                parameters[8]            = new SqlParameter("@WorkStation", schedulelist.WorkStation);
                parameters[9]            = new SqlParameter("@MacAddress", "");
                parameters[10]           = new SqlParameter("@OrderID", orderId);
                parameters[11]           = new SqlParameter("@FoodName", foodModel.FoodName);
                parameters[12]           = new SqlParameter("@Money", money);
                parameters[13]           = new SqlParameter("@Paymentype", paymentype);
                parameters[14]           = new SqlParameter("@Return", 0);
                parameters[14].Direction = System.Data.ParameterDirection.Output;
                XCCloudService.BLL.IBLL.XCGame.IFoodsaleService foodsale = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCGame.IFoodsaleService>(xcGameDBName);
                XCCloudService.Model.XCGame.flw_food_sale       member   = foodsale.SqlQuery(sql, parameters).FirstOrDefault <XCCloudService.Model.XCGame.flw_food_sale>();
            }
            else if (deviceStoreType == XCGameManaDeviceStoreType.Merch)
            {
                XCCloudService.BLL.IBLL.XCCloudRS232.IFoodSaleService foodsale = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCCloudRS232.IFoodSaleService>();
                XCCloudService.Model.XCCloudRS232.flw_food_sale       flwFood  = new Model.XCCloudRS232.flw_food_sale();
                flwFood.OrderID      = orderId;
                flwFood.MerchID      = int.Parse(storeId);
                flwFood.ICCardID     = icCardId;
                flwFood.DeviceID     = deviceIdentityId;
                flwFood.FlowType     = 1;
                flwFood.CoinQuantity = coins;
                flwFood.TotalMoney   = decimal.Parse(money);
                flwFood.Point        = 0;
                flwFood.Balance      = balance;
                flwFood.Note         = string.Empty;
                flwFood.PayType      = PayBusiness.GetPaymentTypeId(paymentype);
                flwFood.PayTime      = System.DateTime.Now;
                flwFood.PayState     = 1;
                flwFood.PayTotal     = 0;

                XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService memberService = BLLContainer.Resolve <XCCloudService.BLL.IBLL.XCCloudRS232.IMemberService>();
                var memberModel = memberService.GetModels(p => p.Mobile.Equals(mobile, StringComparison.OrdinalIgnoreCase)).FirstOrDefault <XCCloudService.Model.XCCloudRS232.t_member>();
                memberModel.Balance = Convert.ToInt32(memberModel.Balance) + coins;

                using (var transactionScope = new System.Transactions.TransactionScope(TransactionScopeOption.RequiresNew))
                {
                    foodsale.Add(flwFood);
                    memberService.Update(memberModel);
                    transactionScope.Complete();
                }

                return(true);
            }
            else
            {
                errMsg = "门店类型不正确";
            }
            return(true);
        }