Exemple #1
0
        /// <summary>
        ///  关闭奖单
        /// </summary>
        /// <param name="poid">奖单Id</param>
        /// <param name="state">奖单状态</param>
        public OperationResult UpdateLotteryState(Guid poid, RevealState state)
        {
            PrizeOrder entity = PrizeOrderRepository.Entities.Where(lr => lr.Id == poid).FirstOrDefault();

            if (entity == null)
            {
                return(new OperationResult(OperationResultType.Warning, string.Format("没有Id为{0}的中奖信息。", poid.ToString()), poid.ToString()));
            }

            if (state == entity.RevealState)
            {
                return(new OperationResult(OperationResultType.Warning, "要更新的状态与数据库的一致,无需更改。", entity));
            }

            entity.RevealState = state;

            int rcount = PrizeOrderRepository.Update(entity);

            if (rcount > 0)
            {
                return(new OperationResult(OperationResultType.Success, "更新状态成功。", entity));
            }
            else
            {
                return(new OperationResult(OperationResultType.Warning, "更新状态失败。"));
            }
        }
Exemple #2
0
        /// <summary>
        ///  同时发布奖品、发起抽奖
        /// </summary>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        public OperationResult BatchAdd(PrizeOrder porder, bool shouldMinus = false)
        {
            SqlTransaction tran = null;

            try
            {
                Database db = EFContext.DbContext.Database;
                using (SqlConnection conn = new SqlConnection(db.Connection.ConnectionString))
                {
                    conn.Open();
                    using (tran = conn.BeginTransaction())
                    {
                        var member = MemberRepository.Entities.Where(m => m.Id == porder.Prize.Member.Id).FirstOrDefault();
                        porder.Prize.Member = member;
                        if (shouldMinus)
                        {
                            if (member != null)
                            {
                                member.PubishingEnableTimes--;
                                MemberRepository.Update(member);
                            }
                        }
                        PrizeRepository.Insert(porder.Prize);
                        PrizeOrderRepository.Insert(porder);

                        // 现场抽奖
                        if (porder.RevealType == RevealType.Scene)
                        {
                            if (porder.SceneStaffs != null && porder.SceneStaffs.Count() > 0)
                            {
                                SceneStaffRepository.Insert(porder.SceneStaffs);
                            }
                        }
                        tran.Commit();
                    }
                }
                return(new OperationResult(OperationResultType.Success, "发布奖品、发起抽奖一次性操作成功。", porder));
            }
            catch (DataAccessException ex)
            {
                if (tran != null)
                {
                    tran.Rollback();
                }
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
            catch (Exception ex)
            {
                if (tran != null)
                {
                    tran.Rollback();
                }
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
    public int ManualPaymentMemberPlanSetup(PrizeMember member, int memberPlanId, int exercisePlanId, string sManualPaymentMode)
    {
        DIYPTEntities db = new DIYPTEntities();

        try
        {
            db.Database.Connection.Open();
            var oldOrders = db.PrizeOrders.Where(o => (o.MemberPlanId == memberPlanId && o.PaymentTransactionId == null));
            db.PrizeOrders.RemoveRange(oldOrders);
            PrizeOrder myOrder = new PrizeOrder();
            myOrder.OrderDate      = PrizeCommonUtils.GetSystemDate();
            myOrder.Username       = member.Email;
            myOrder.FirstName      = member.Firstname;
            myOrder.LastName       = member.Surname;
            myOrder.Email          = member.Email;
            myOrder.Total          = 0;
            myOrder.MemberPlanId   = memberPlanId;
            myOrder.ExercisePlanId = exercisePlanId;
            db.PrizeOrders.Add(myOrder);

            MemberExercisePlan myPlan;
            if (myOrder.OrderId >= 0)
            {
                myPlan = db.MemberExercisePlans.Single(o => o.Id == myOrder.MemberPlanId);

                myPlan.Status = PrizeConstants.STATUS_PLAN_NOT_STARTED + PrizeConstants.STATUS_PLAN_MANUAL_PAYMENT;
                MemberManualPayment manualPayment         = null;
                string manualPaymentStatus                = PrizeConstants.STATUS_PLAN_MANUAL_PAYMENT_NOT_APPROVED + sManualPaymentMode;
                List <MemberManualPayment> manualPayments = (from c in db.MemberManualPayments
                                                             where c.MemberId == member.UmbracoId && c.Status.StartsWith(PrizeConstants.STATUS_PLAN_MANUAL_PAYMENT_NOT_APPROVED)
                                                             select c).ToList();
                foreach (var notPaidRecord in manualPayments)
                {
                    db.MemberManualPayments.Remove(notPaidRecord);
                    db.SaveChanges();
                }

                manualPayment                      = new MemberManualPayment();
                manualPayment.MemberId             = myPlan.MemberId;
                manualPayment.MemberExercisePlanId = myPlan.Id;
                manualPayment.CreatedDate          = PrizeCommonUtils.GetSystemDate();
                manualPayment.Status               = manualPaymentStatus;
                db.MemberManualPayments.Add(manualPayment);
            }
            db.SaveChanges();
            return(myOrder.OrderId);
        }
        finally
        {
            db.Dispose();
        }
    }
Exemple #4
0
        /// <summary>
        ///     删除奖品
        /// </summary>
        /// <param name="member">奖品信息</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Delete(PrizeOrder prizeorder)
        {
            int rcount = PrizeOrderRepository.Delete(prizeorder);

            if (rcount > 0)
            {
                return(new OperationResult(OperationResultType.Success, "删除奖单成功。", prizeorder));
            }
            else
            {
                return(new OperationResult(OperationResultType.Warning, "删除奖单失败。"));
            }
        }
Exemple #5
0
        public OperationResult GetPrizeOrderDetail(Guid poid)
        {
            OperationResult result = PrizeOrderContract.GetPrizeOrderDetail(poid);

            if (result.ResultType == OperationResultType.Success)
            {
                PrizeOrder pomodel = (PrizeOrder)result.AppendData;
                result.AppendData = new PrizeOrderDetailView()
                {
                    PrizeView = new PrizeView()
                    {
                        Id            = pomodel.Prize.Id,
                        Name          = pomodel.Prize.Name,
                        Description   = pomodel.Prize.Description,
                        OriginalPhoto = pomodel.Prize.PrizePhotos.FirstOrDefault().ToSiteViewModel()
                    },
                    PrizeOrderView = new PrizeOrderView()
                    {
                        PrizeId                   = pomodel.Prize.Id,
                        Id                        = pomodel.Id,
                        RevealType                = pomodel.RevealType,
                        RevealState               = pomodel.RevealState,
                        LaunchTime                = pomodel.Extend.LaunchTime,
                        PoolCount                 = pomodel.Extend.PoolCount,
                        Question                  = pomodel.Extend.PrizeAsking.Question,
                        Answer                    = pomodel.Extend.PrizeAsking.Answer,
                        AnswerOptions             = pomodel.Extend.PrizeAsking.AnswerOptions,
                        AnswerRevealConditionType = pomodel.Extend.AnswerRevealConditionType,
                        ScopeType                 = pomodel.Extend.ScopeType,
                        ScopeAreaCity             = pomodel.Extend.ScopeCity,
                        IsNeedExchangeCode        = pomodel.Extend.IsNeedExchangeCode,
                        AddDate                   = pomodel.AddDate
                    },
                    MemberView = new MemberView()
                    {
                        Id             = pomodel.Prize.Member.Id,
                        Name           = pomodel.Prize.Member.Name,
                        UserName       = pomodel.Prize.Member.UserName,
                        Tel            = pomodel.Prize.Member.Extend.Tel,
                        AdvertisingUrl = pomodel.Prize.Member.Extend.AdvertisingUrl,
                        Province       = pomodel.Prize.Member.Extend.Address.Province,
                        City           = pomodel.Prize.Member.Extend.Address.City,
                        Town           = pomodel.Prize.Member.Extend.Address.Town,
                        AddrSuffix     = pomodel.Prize.Member.Extend.Address.Suffix
                    }
                };
            }
            return(result);
        }
Exemple #6
0
        public OperationResult GetPrizeAsking(Guid poid)
        {
            OperationResult result = PrizeOrderContract.GetPrizeOrderById(poid);

            if (result.ResultType == OperationResultType.Success)
            {
                PrizeOrder pomodel = (PrizeOrder)result.AppendData;
                result.AppendData = new PrizeOrderView()
                {
                    Question      = pomodel.Extend.PrizeAsking.Question,
                    AnswerOptions = pomodel.Extend.PrizeAsking.AnswerOptions
                };
            }
            return(result);
        }
Exemple #7
0
        /// <summary>
        ///     删除奖品
        /// </summary>
        /// <param name="member">奖品信息</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Delete(Guid guid)
        {
            try
            {
                PrizeOrder pmodel = PrizeOrderContract.PrizeOrders.SingleOrDefault(m => m.Id.Equals(guid));
                if (pmodel == null)
                {
                    return(new OperationResult(OperationResultType.Error, string.Format("不存在Id为{0}的奖单", guid)));
                }

                return(PrizeOrderContract.Delete(pmodel));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
    private void doNoPaymentPlan()
    {
        PrizeOrder myOrder = new PrizeOrder();

        myOrder.OrderDate      = PrizeCommonUtils.GetSystemDate();
        myOrder.Username       = PrizeMemberAuthUtils.GetMemberName();
        myOrder.FirstName      = "";
        myOrder.LastName       = "";
        myOrder.Email          = PrizeMemberAuthUtils.GetMemberEmail();
        myOrder.Total          = 0;
        myOrder.MemberPlanId   = Int32.Parse(Session["buying_my_plan_id"].ToString());
        myOrder.ExercisePlanId = Int32.Parse(Session["buying_plan_id"].ToString());

        // Get DB context.
        DIYPTEntities _db = new DIYPTEntities();

        try
        {
            // Add order to DB.
            _db.Database.Connection.Open();
            _db.PrizeOrders.Add(myOrder);
            _db.SaveChanges();
            Session["currentOrderId"] = myOrder.OrderId;
        }
        finally
        {
            _db.Database.Connection.Close();
        }
        int currentOrderId = -1;

        if (Session["currentOrderId"] != string.Empty)
        {
            currentOrderId = Convert.ToInt32(Session["currentOrderID"]);
        }

        PrizeMemberPlanManager planManager = new PrizeMemberPlanManager();

        planManager.PayMemberPlans(currentOrderId, "");

        Response.Redirect(PrizeConstants.URL_MEMBER_LANDING);
    }
Exemple #9
0
        /// <summary>
        ///     添加奖品
        /// </summary>
        /// <param name="prizebetting">奖品信息</param>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Add(PrizeOrder prizeorder, bool shouldMinus = false)
        {
            int rcount = PrizeOrderRepository.Insert(prizeorder);

            if (rcount > 0)
            {
                if (shouldMinus)
                {
                    var member = MemberRepository.Entities.Where(m => m.Id == prizeorder.Prize.Member.Id).FirstOrDefault();
                    if (member != null)
                    {
                        member.PubishingEnableTimes--;
                        MemberRepository.Update(member);
                    }
                }
                return(new OperationResult(OperationResultType.Success, "发布奖单成功。", prizeorder));
            }
            else
            {
                return(new OperationResult(OperationResultType.Warning, "发布奖单失败。"));
            }
        }
Exemple #10
0
        /// <summary>
        ///     更新奖品
        /// </summary>
        /// <param name="member">奖品信息</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Update(PrizeOrderView pvmodel)
        {
            PublicHelper.CheckArgument(pvmodel, "pvmodel");
            try
            {
                PrizeOrder dbmodel = PrizeOrderContract.PrizeOrders.SingleOrDefault(m => m.Id.Equals(pvmodel.Id));
                if (dbmodel == null)
                {
                    return(new OperationResult(OperationResultType.Error, string.Format("不存在要更新的Id为{0}的奖单", pvmodel.Id)));
                }

                //dbmodel.Name = pvmodel.Name;
                //dbmodel.Description = pvmodel.Description;
                //if (savePhoto) {
                //    dbmodel.Photo = pvmodel.Photo;
                //}
                //dbmodel.UpdateDate = DateTime.Now;
                return(PrizeOrderContract.Update(dbmodel));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Exemple #11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            NVPAPICaller payPalCaller = new NVPAPICaller();

            string   retMsg  = "";
            string   token   = "";
            string   PayerID = "";
            NVPCodec decoder = new NVPCodec();
            payPalCaller.SetCredentials(PrizeConstants.WALLET_USER_NAME,
                                        PrizeConstants.WALLET_PASSWORD,
                                        PrizeConstants.WALLET_SIGNATURE);
            token = Session["token"].ToString();

            bool ret = payPalCaller.GetCheckoutDetails(token, ref PayerID, ref decoder, ref retMsg);
            if (ret)
            {
                Session["payerId"] = PayerID;

                var myOrder = new PrizeOrder();
                myOrder.OrderDate      = Convert.ToDateTime(decoder["TIMESTAMP"].ToString());
                myOrder.Username       = PrizeMemberAuthUtils.GetMemberName();
                myOrder.FirstName      = decoder["FIRSTNAME"].ToString();
                myOrder.LastName       = decoder["LASTNAME"].ToString();
                myOrder.Email          = decoder["EMAIL"].ToString();
                myOrder.Total          = Convert.ToDecimal(decoder["AMT"].ToString());
                myOrder.MemberPlanId   = Int32.Parse(Session["buying_my_plan_id"].ToString());
                myOrder.ExercisePlanId = Int32.Parse(Session["buying_plan_id"].ToString());

                // Verify total payment amount as set on CheckoutStart.aspx.
                try
                {
                    decimal paymentAmountOnCheckout = Convert.ToDecimal(Session["payment_amt"].ToString());
                    decimal paymentAmoutFromPayPal  = Convert.ToDecimal(decoder["AMT"].ToString());
                    if (paymentAmountOnCheckout != paymentAmoutFromPayPal)
                    {
                        Response.Redirect("/Checkout/CheckoutError.aspx?" + "Desc=Amount%20total%20mismatch.");
                    }
                }
                catch (Exception)
                {
                    Response.Redirect("/Checkout/CheckoutError.aspx?" + "Desc=Amount%20total%20mismatch.");
                }

                // Get DB context.
                DIYPTEntities _db = new DIYPTEntities();
                try
                {
                    // Add order to DB.
                    _db.Database.Connection.Open();
                    _db.PrizeOrders.Add(myOrder);
                    _db.SaveChanges();
                    Session["currentOrderId"] = myOrder.OrderId;
                }
                finally
                {
                    _db.Database.Connection.Close();
                }
            }
            Session["userCheckoutCompleted"] = "true";
            Response.Redirect("~/Checkout/CheckoutComplete.aspx");
        }
    }
Exemple #12
0
        public static PrizeOrderView ToSiteViewModel(this PrizeOrder po)
        {
            if (po == null)
            {
                return(null);
            }
            var rentity = new PrizeOrderView()
            {
                Id             = po.Id,
                RevealType     = po.RevealType,
                RevealTypeNum  = po.RevealTypeNum,
                RevealState    = po.RevealState,
                RevealStateNum = po.RevealStateNum,
                ScopeType      = po.Extend.ScopeType,
                ScopeTypeNum   = po.Extend.ScopeTypeNum,
                //ScopeProvince = po.Extend.ScopeCity,
                ScopeAreaCity                = po.Extend.ScopeCity,
                AnswerRevealConditionType    = po.Extend.AnswerRevealConditionType,
                AnswerRevealConditionTypeNum = po.Extend.AnswerRevealConditionTypeNum,
                //Remarks = po.Extend,
                PrizeId       = po.Prize.Id,
                PrizeView     = po.Prize.ToSiteViewModel(),
                SortOrder     = po.SortOrder ?? 0,
                LaunchTime    = po.Extend.LaunchTime,
                RevealDate    = po.RevealDate,
                MinLuckyCount = po.Extend.MinLuckyCount,
                LuckyPercent  = po.Extend.LuckyPercent,
                PoolCount     = po.Extend.PoolCount,
                LuckyCount    = po.Extend.LuckyCount,
                Question      = po.Extend.PrizeAsking.Question,
                AnswerOptions = po.Extend.PrizeAsking.AnswerOptions,
                Answer        = po.Extend.PrizeAsking.Answer
                                //LuckyStaffsOfScenceString = po.Extend.
                                //StaffsOfScenceString = po.SceneStaffs.AsEnumerable().ToArray().,
                                //Is2Top = po.Extend,
                                //UpdateDate = po.,
            };

            if (po.RevealType == RevealType.Scene)
            {
                // 参与者数目
                if (po.SceneStaffs != null)
                {
                    rentity.BettingCount = po.SceneStaffs.Count;
                }
                // 已开奖的,取出中奖者
                if (po.RevealState == RevealState.Drawn)
                {
                    if (po.SceneStaffs != null && po.SceneStaffs.Count > 0)
                    {
                        rentity.LuckyStaffsOfScenceString = string.Join("|", po.SceneStaffs.Where(ss => ss.IsLucky).Select(ss => ss.Value).ToArray());
                    }
                }
            }
            else
            {
                // 投注者数目
                if (po.PrizeBettings != null)
                {
                    rentity.BettingCount = po.PrizeBettings.Where(pb => !pb.IsDeleted).Count();
                }
                // 白名单数目
                if (po.WhiteLists != null)
                {
                    rentity.BettingCount = rentity.BettingCount + po.WhiteLists.Where(wl => !wl.IsDeleted).Count();
                }
            }

            return(rentity);
        }
Exemple #13
0
        /// <summary>
        ///  同时发布奖品、发起抽奖
        /// </summary>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        public OperationResult BatchAdd(PrizeOrderDetailView porderdetail, bool shouldMinus = false)
        {
            int?       sortorder = PrizeOrderContract.PrizeOrders.Max(po => po.SortOrder);
            PrizeOrder porder    = new PrizeOrder()
            {
                Prize = new Prize()
                {
                    Name        = porderdetail.PrizeView.Name,
                    Description = porderdetail.PrizeView.Description,
                    Member      = new Member()
                    {
                        Id = porderdetail.MemberView.Id
                    },
                    PrizePhotos = new PrizePhoto[] {
                        new PrizePhoto()
                        {
                            Name         = porderdetail.PrizeView.OriginalPhoto.Name,
                            PhotoTypeNum = porderdetail.PrizeView.OriginalPhoto.PhotoTypeNum
                        }
                    }
                },
                RevealType  = porderdetail.PrizeOrderView.RevealType,
                RevealState = Component.Tools.RevealState.UnDrawn,
                SortOrder   = (sortorder ?? 0) + 1,
                Extend      = new PrizeOrderExtend()
                {
                    LuckyCount    = porderdetail.PrizeOrderView.LuckyCount, //中奖人数
                    MinLuckyCount = 1,                                      //最低中奖人数默认设置为1
                }
            };

            // 定员、定员、竞猜三种模式需要设置抽奖城市、是否需要兑奖码、运费
            if (RevealType.Scene != porderdetail.PrizeOrderView.RevealType)
            {
                porder.Extend.ScopeType = porderdetail.PrizeOrderView.ScopeType;
                if (porderdetail.PrizeOrderView.ScopeType == ScopeType.AreaCity)
                {
                    porder.Extend.ScopeCity = porderdetail.PrizeOrderView.ScopeAreaCity;
                }
                if (porderdetail.PrizeOrderView.ScopeType == ScopeType.Town)
                {
                    porder.Extend.ScopeCity = porderdetail.PrizeOrderView.ScopeAreaCity;
                    porder.Extend.ScopeTown = porderdetail.PrizeOrderView.ScopeTown;
                }

                // 运费
                porder.Extend.Freight = porderdetail.PrizeOrderView.Freight;
                // 预售价格
                porder.Extend.PresalePrice       = porderdetail.PrizeOrderView.PresalePrice;
                porder.Extend.IsNeedExchangeCode = porderdetail.PrizeOrderView.IsNeedExchangeCode;
            }
            switch (porderdetail.PrizeOrderView.RevealType)
            {
            case RevealType.Timing:
                porder.Extend.LaunchTime = porderdetail.PrizeOrderView.LaunchTime;     //开奖时间
                break;

            case RevealType.Quota:
                porder.Extend.PoolCount = porderdetail.PrizeOrderView.PoolCount;     //总人数
                break;

            case RevealType.Answer:
                porder.Extend.PrizeAsking.Question      = porderdetail.PrizeOrderView.Question;
                porder.Extend.PrizeAsking.AnswerOptions = porderdetail.PrizeOrderView.AnswerOptions;
                porder.Extend.RevealTypeOfAnswer        = porderdetail.PrizeOrderView.RevealTypeOfAnswer;
                // 竞猜开奖开奖方式为"自动"
                if (porder.Extend.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                {
                    porder.Extend.PrizeAsking.Answer = porderdetail.PrizeOrderView.Answer;
                    // 开奖条件
                    porder.Extend.AnswerRevealConditionType = porderdetail.PrizeOrderView.AnswerRevealConditionType;
                    switch (porder.Extend.AnswerRevealConditionType)
                    {
                    case AnswerRevealConditionType.Quota:
                        porder.Extend.PoolCount = porderdetail.PrizeOrderView.PoolCount;         //总人数
                        break;

                    case AnswerRevealConditionType.Timing:
                        porder.Extend.LaunchTime = porderdetail.PrizeOrderView.LaunchTime;         //开奖时间
                        break;
                    }
                }
                break;

            case RevealType.Scene:
                porder.Extend.LaunchTime = porderdetail.PrizeOrderView.LaunchTime;     //开奖时间
                break;
            }

            // 现场抽奖
            if (RevealType.Scene == porderdetail.PrizeOrderView.RevealType)
            {
                string            staffsString = porderdetail.PrizeOrderView.StaffsOfScenceString;
                List <SceneStaff> staffs       = new List <SceneStaff>();
                if (!string.IsNullOrEmpty(staffsString))
                {
                    string[] staffarray = staffsString.Split(new string[] { "|||" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string item in staffarray)
                    {
                        staffs.Add(new SceneStaff()
                        {
                            Value   = item,
                            IsLucky = false,
                            LuckySceneStaffStateNum = LuckySceneStaffState.Default.ToInt()
                        });
                    }
                }

                porder.SceneStaffs = staffs;
            }

            return(PrizeOrderContract.BatchAdd(porder, shouldMinus));
        }
Exemple #14
0
        private async void send_Tapped(object sender, EventArgs e)
        {
            if (NetworkCheck.IsInternet())
            {
                using (var client = new HttpClient())
                {
                    var postData = new MemberNumber
                    {
                        prizeId      = prizeId,
                        memberNumber = EnterMemberNumber.Text
                    };
                    var json     = JsonConvert.SerializeObject(postData);
                    var content  = new StringContent(json, Encoding.UTF8, "application/json");
                    var checkUri = app.url + "/AR_admin/checkMemberNumber";
                    var result   = await client.PostAsync(checkUri, content);

                    if (result.IsSuccessStatusCode)
                    {
                        var resultString = await result.Content.ReadAsStringAsync();

                        var post = JsonConvert.DeserializeObject <Result>(resultString);

                        if (post.result != null && post.result != "" && post.result == "0")
                        {
                            var postOrderData = new PrizeOrder
                            {
                                prizeId    = prizeId,
                                email      = Xamarin.Forms.Application.Current.Properties["email"].ToString(),
                                amount     = exchangeAmount,
                                prizePoint = prizeTotalPoint
                            };
                            var jsonOrder    = JsonConvert.SerializeObject(postOrderData);
                            var contentOrder = new StringContent(jsonOrder, Encoding.UTF8, "application/json");

                            var uri         = app.url + "/AR_admin/UserExchangePrize";
                            var resultOrder = await client.PostAsync(uri, contentOrder);

                            if (resultOrder.IsSuccessStatusCode)
                            {
                                var resultOrderString = await result.Content.ReadAsStringAsync();

                                var postOrder = JsonConvert.DeserializeObject <Result>(resultString);

                                if (postOrder.result != null && postOrder.result != "" && postOrder.result == "0")
                                {
                                    await DisplayAlert("訊息", "兌換成功", "Ok");

                                    var prizeItem = new PrizeDetailItem
                                    {
                                        id        = prizeId,
                                        prizeName = prizeName,
                                        amount    = exchangeAmount,
                                        point     = exchangePoint,
                                        image     = imageSource
                                    };
                                    await Navigation.PushAsync(new RatingStar(prizeItem), true);

                                    await PopupNavigation.Instance.PopAsync();
                                }
                                else
                                {
                                    await DisplayAlert("訊息", "兌換失敗!請稍候再試", "Ok");
                                }
                            }
                            else
                            {
                                await DisplayAlert("訊息", app.errorMessage, "Ok");
                            }
                        }
                        else
                        {
                            await DisplayAlert("訊息", "輸入的店家序號錯誤!", "Ok");
                        }
                    }
                    else
                    {
                        await DisplayAlert("訊息", app.errorMessage, "OK");
                    }
                }
            }
            else
            {
                await DisplayAlert("訊息", app.networkMessage, "OK");
            }
        }
Exemple #15
0
        /// <summary>
        ///     添加奖品
        /// </summary>
        /// <param name="prizebetting">奖品信息</param>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Add(PrizeOrderView povmodel, bool shouldMinus = false)
        {
            PublicHelper.CheckArgument(povmodel, "povmodel");
            int?sortorder = PrizeOrderContract.PrizeOrders.Max(po => po.SortOrder);

            PrizeOrder pmodel = new PrizeOrder
            {
                RevealTypeNum = povmodel.RevealTypeNum,
                RevealState   = Component.Tools.RevealState.UnDrawn,
                Prize         = PrizeContract.Prizes.SingleOrDefault(m => m.Id.Equals(povmodel.PrizeId)),
                Extend        = new PrizeOrderExtend()
                {
                    Id = povmodel.Id
                },
                SortOrder = (sortorder ?? 0) + 1
            };

            switch (povmodel.RevealType)
            {
            case RevealType.Timing:
                pmodel.Extend.LaunchTime    = povmodel.LaunchTime;
                pmodel.Extend.MinLuckyCount = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount    = povmodel.LuckyCount;
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Quota:
                pmodel.Extend.PoolCount     = povmodel.PoolCount;
                pmodel.Extend.MinLuckyCount = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount    = povmodel.LuckyCount;
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Answer:
                pmodel.Extend.PrizeAsking.Question      = povmodel.Question;
                pmodel.Extend.PrizeAsking.AnswerOptions = povmodel.AnswerOptions;
                pmodel.Extend.PrizeAsking.Answer        = povmodel.Answer;
                pmodel.Extend.MinLuckyCount             = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount         = povmodel.LuckyCount;
                pmodel.Extend.RevealTypeOfAnswer = povmodel.RevealTypeOfAnswer;

                if (pmodel.Extend.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                {
                    pmodel.Extend.AnswerRevealConditionTypeNum = (int)povmodel.AnswerRevealConditionType;
                    if (povmodel.AnswerRevealConditionType == AnswerRevealConditionType.Timing)
                    {
                        pmodel.Extend.LaunchTime = povmodel.LaunchTime;
                    }
                    else if (povmodel.AnswerRevealConditionType == AnswerRevealConditionType.Quota)
                    {
                        pmodel.Extend.PoolCount = povmodel.PoolCount;
                    }
                }
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Scene:
                break;
            }
            try
            {
                return(PrizeOrderContract.Add(pmodel, shouldMinus));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Exemple #16
0
        private void button1_Click(object sender, EventArgs e)
        {
            var memberSet = AccountContract.Members.ToList();

            // 构造奖品
            List <Prize> prizelist = new List <Prize>();

            for (int i = 1; i < 30; i++)
            {
                Random rnd   = new Random((int)DateTime.Now.Ticks + i);
                var    prize = new Prize()
                {
                    Name = "奖品名称奖品名称" + i.ToString(), Description = "奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述" + i.ToString(), AddDate = DateTime.Now
                };
                var memberArray = memberSet.ToArray();
                var member      = memberArray[rnd.Next(0, memberArray.Length)];
                prize.Member = member;
                //prize.Photo = StreamUtil.Base64ToBytes(StaticStrings.demoImageBase64String);
                prizelist.Add(prize);
            }
            PrizeRepository.Insert(prizelist);

            //DbSet<Prize> prizeSet = context.Set<Prize>();
            //prizeSet.AddOrUpdate(prizelist.ToArray());
            //context.SaveChanges();

            // 构造奖品
            List <PrizePhoto> photos = new List <PrizePhoto>();
            var prizeArray           = prizelist.ToArray();

            for (int i = 0; i < prizelist.Count; i++)
            {
                Random     rnd    = new Random((int)DateTime.Now.Ticks + i);
                PrizePhoto pphoto = new PrizePhoto
                {
                    Name  = "e26b4610-58fb-4ceb-ac72-a3f700c7c301.jpg",
                    Prize = prizeArray[rnd.Next(0, prizeArray.Length)]
                };

                photos.Add(pphoto);
            }
            PrizePhotoRepository.Insert(photos);
            //DbSet<PrizePhoto> pPhotoSet = context.Set<PrizePhoto>();
            //pPhotoSet.AddOrUpdate(photos.ToArray());
            //context.SaveChanges();

            var prizes = PrizeContract.Prizes.ToList();

            var prizeOrdersCount          = PrizeOrderContract.PrizeOrders.Count();
            List <PrizeOrder> prizeOrders = new List <PrizeOrder>();
            bool poAdded = false;

            if (prizeOrdersCount == 0)
            {
                for (int i = 0; i < prizes.Count; i++)
                {
                    Random rnd = new Random((int)DateTime.Now.Ticks + i);
                    //var member = AccountContract.Members.Skip(rnd.Next(0, prizesCount)).Take(1);
                    var prize      = prizes[i];
                    var prizeOrder = new PrizeOrder()
                    {
                        Prize         = prize,
                        RevealTypeNum = rnd.Next(3) + 1,
                        //RevealStateNum = rnd.Next(4) + 1,
                        RevealStateNum = (int)RevealState.UnDrawn,
                        SortOrder      = i + 1,
                        IsDeleted      = false,
                        AddDate        = DateTime.Now
                    };
                    switch (prizeOrder.RevealTypeNum)
                    {
                    case (int)RevealType.Timing:
                        prizeOrder.Extend = new PrizeOrderExtend()
                        {
                            LaunchTime    = DateTime.Now.AddMinutes(10),
                            MinLuckyCount = 1,
                            LuckyCount    = 5,
                            //,LuckyPercent = 2
                        };
                        break;

                    case (int)RevealType.Answer:
                        prizeOrder.Extend = new PrizeOrderExtend()
                        {
                            PrizeAsking = new PrizeAsking()
                            {
                                Question = "好声音冠军是谁?", Answer = "梁博"
                            },
                            MinLuckyCount = 1,
                            LuckyCount    = 5,
                            AnswerRevealConditionTypeNum = rnd.Next(2) + 1,
                            //,LuckyPercent = 2
                        };
                        switch (prizeOrder.Extend.AnswerRevealConditionTypeNum)
                        {
                        case (int)AnswerRevealConditionType.Timing:
                            prizeOrder.Extend.LaunchTime = DateTime.Now.AddMinutes(10);
                            break;

                        case (int)AnswerRevealConditionType.Quota:
                            prizeOrder.Extend.PoolCount = 50;
                            break;
                        }
                        break;

                    case (int)RevealType.Quota:
                        prizeOrder.Extend = new PrizeOrderExtend()
                        {
                            PoolCount     = 10,
                            MinLuckyCount = 1,
                            LuckyCount    = 5
                                            //,LuckyPercent = 2
                        };
                        break;
                    }

                    prizeOrders.Add(prizeOrder);
                }
                poAdded = true;
            }
            OperationResult result = new OperationResult(OperationResultType.NoChanged);

            if (poAdded)
            {
                result = PrizeOrderContract.Add(prizeOrders);
            }
            if (result.ResultType == OperationResultType.Success || !poAdded)
            {
                if (PrizeBettingContract.PrizeBettings.Count() == 0)
                {
                    var members = AccountContract.Members.OrderBy(po => po.Id).Skip(2).ToList();
                    var porders = PrizeOrderContract.PrizeOrders.ToList();

                    List <PrizeBetting> prizeBettings = new List <PrizeBetting>();
                    for (int i = 0; i < porders.Count; i++)
                    {
                        var prizeorder = porders[i];
                        for (int j = 0; j < members.Count; j++)
                        {
                            var member       = members[j];
                            var prizeBetting = new PrizeBetting()
                            {
                                PrizeOrder = prizeorder,
                                Member     = member,
                                Address    = "青岛市市南区江西路软件大厦",
                                Phone      = "18829876354",
                                IsDeleted  = false,
                                AddDate    = DateTime.Now
                            };
                            prizeBettings.Add(prizeBetting);
                        }
                    }
                    PrizeBettingContract.Add(prizeBettings);
                }
                MessageBox.Show("构造奖单数据成功");
                btnCreateData.Enabled = false;
            }
            else
            {
                MessageBox.Show(result.Message);
            }
        }
Exemple #17
0
        public ActionResult LaunchLottery(PrizeOrderDetailView model)
        {
            ViewBag.IsPostBack = true;

            ViewBag.RevealType    = model.PrizeOrderView.RevealType.ToInt().ToString();
            ViewBag.ScopeType     = model.PrizeOrderView.ScopeType.ToInt().ToString();
            ViewBag.ScopeProvince = model.PrizeOrderView.ScopeProvince;
            ViewBag.ScopeAreaCity = model.PrizeOrderView.ScopeAreaCity;

            //if (this.PubishingEnableTimes == 0)
            //{
            //    //验证码验证通过
            //    ViewBag.Message = "抱歉,您可发起抽奖的次数为0,请续费后再继续使用该功能。";
            //    return View(model);
            //}

            // 竞猜开奖并且开奖方式为“手动”,则取消对“开奖条件”的验证
            if (model.PrizeOrderView.RevealType == RevealType.Answer &&
                model.PrizeOrderView.RevealTypeOfAnswer == RevealTypeOfAnswer.Manual)
            {
                ModelState.Remove("PrizeOrderView.AnswerRevealConditionType");
            }

            // 非竞猜开奖,则取消对“揭晓答案(先知、后知)方式”的验证
            if (model.PrizeOrderView.RevealType != RevealType.Answer)
            {
                ModelState.Remove("PrizeOrderView.RevealTypeOfAnswer");
                ModelState.Remove("PrizeOrderView.AnswerRevealConditionType");
            }

            // 现场开奖,则取消对“是否需要兑奖码”的验证
            if (model.PrizeOrderView.RevealType == RevealType.Scene)
            {
                ModelState.Remove("PrizeOrderView.IsNeedExchangeCode");
                ModelState.Remove("PrizeOrderView.RevealTypeOfAnswer");
                ModelState.Remove("PrizeOrderView.AnswerRevealConditionType");
            }

            // 非现场开奖,则取消对“人员录入方式”的验证
            if (model.PrizeOrderView.RevealType != RevealType.Scene)
            {
                ModelState.Remove("PrizeOrderView.InputTypeOfStaff");
            }

            if (ModelState.IsValid)
            {
                //验证码验证通过
            }
            else
            {
                //验证码验证失败
                //ModelState.AddModelError("", e.Message);
                ViewBag.Message = "验证码输入不正确";
                return(View(model));
            }
            if ((this.UserId ?? 0) == 0)
            {
                //验证码验证失败
                //ModelState.AddModelError("", e.Message);
                ViewBag.Message = "当前登录的用户Id莫名的为空,无法发布奖品,请尝试退出并重新登录。";
                return(View(model));
            }
            else
            {
                model.MemberView.Id = this.UserId.Value;
            }

            if (!ValidatePrizeOrderDetailViewModel(model))
            {
                return(View(model));
            }

            // 先上传图片
            string upmessage    = string.Empty;
            string photoname    = string.Empty;
            bool   uploadResult = UploadPhoto(out upmessage, out photoname);

            if (!uploadResult)
            {
                ViewBag.Message = upmessage;
                return(View(model));
            }

            // 保存数据到数据库
            model.PrizeView.OriginalPhoto = new PrizePhotoView()
            {
                Name = photoname, PhotoTypeNum = PhotoType.Original.ToInt()
            };

            bool shouldMinus = this.PubishingEnableTimes < 1000000 ? true : false;

            OperationResult result = PrizeOrderSiteContract.BatchAdd(model, shouldMinus);

            if (result.ResultType == OperationResultType.Success)
            {
                if (shouldMinus)
                {
                    if (!this.UpdatePubishingEnableTimes())
                    {
                        //记日志(更新可发布奖品次数失败)
                    }
                }
                PrizeOrder porder = (PrizeOrder)result.AppendData;
                //ViewBag.OkMessage = "发布抽奖成功";
                //TempData["Message"] = string.Format("发起抽奖成功。<br /><a href='/Vip/PrizeOrderDetail/{0}'>查看<a>奖单", porder.Id);
                //return RedirectToAction("InfoPage");
                ViewBag.PostBackIsOK  = true;
                ViewBag.SuccessString = "发布抽奖成功,请等待审核。";
                return(View(model));
            }
            else
            {
                // 删除图片
                bool delresult = DeletePhoto(photoname);
                ViewBag.Message = "发布抽奖失败" + (delresult ? string.Empty : ",已经上传的图片在删除过程中也失败,可能已产生图片冗余");
            }
            return(View(model));
        }