Ejemplo n.º 1
0
        /// <summary>
        /// 获取2两小时内的订单
        /// </summary>
        /// <returns></returns>
        public Domain.Dinner.OrderModel Get_CurrentOrder()
        {
            using (DbRepository entities = new DbRepository())
            {
                var    user   = CookieHelper.GetCurrentWxUser();
                string shopId = CookieHelper.GetCurrentShopId();
                if (user == null)
                {
                    return(null);
                }
                if (!shopId.IsNotNullOrEmpty())
                {
                    return(null);
                }

                var model = new Domain.Dinner.OrderModel();
                //2小时有效订单
                var limitTime = DateTime.Now.AddHours(-2);
                var order     = entities.DinnerOrder.OrderByDescending(x => x.CreatedTime).FirstOrDefault(x => x.OpenId.Equals(user.openid) && x.ShopId.Equals(shopId) && x.CreatedTime > limitTime);

                if (order != null)
                {
                    model.Order   = order;
                    model.Details = entities.OrderDetails.Where(x => x.OrderId.Equals(order.UNID)).ToList();
                    model.Remark  = model.Order.Remark;
                }

                return(model);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 增加订单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public string Add_DinnerOrder(string info)
        {
            if (!info.IsNotNullOrEmpty()
                )
            {
                return("数据为空");
            }
            using (DbRepository entities = new DbRepository())
            {
                var model = info.DeserializeJson <Domain.Dinner.OrderModel>();

                var    user   = CookieHelper.GetCurrentWxUser();
                string shopId = CookieHelper.GetCurrentShopId();
                if (user == null)
                {
                    return("微信授权过期");
                }
                if (!shopId.IsNotNullOrEmpty())
                {
                    return("店铺不存在");
                }
                var addEntity = new DinnerOrder();
                addEntity.UNID    = Guid.NewGuid().ToString("N");
                addEntity.OpenId  = user.openid;
                addEntity.Details = "";

                decimal totalPrice = 0;
                model.Details.ForEach(x => {
                    entities.OrderDetails.Add(new OrderDetails()
                    {
                        UNID     = Guid.NewGuid().ToString("N"),
                        DishId   = x.DishId,
                        DishName = x.DishName,
                        Number   = x.Number,
                        OrderId  = addEntity.UNID,
                        Price    = x.Price,
                    });
                    totalPrice       += (x.Price * x.Number);
                    addEntity.Details = string.Format("{0} {1}X{2}份 ", addEntity.Details, x.DishName, x.Number);
                });
                addEntity.OrderNum    = string.Format("DC{0}-{1}", DateTime.Now.ToString("yyMMddhhmmss"), addEntity.UNID.SubString(4));
                addEntity.TotalPrice  = totalPrice;
                addEntity.CreatedTime = DateTime.Now;
                addEntity.UpdatedTime = DateTime.Now;
                addEntity.State       = (int)DinnerOrderState.Audting;
                addEntity.ShopId      = shopId;
                addEntity.Remark      = model.Remark;

                entities.DinnerOrder.Add(addEntity);
                return(entities.SaveChanges() > 0 ? "" : "保存出错");
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 显示活动和奖品情况
        /// </summary>
        /// <param name="unid"></param>
        /// <returns></returns>
        public Domain.ScratchCard.Update Show_ScratchCard(string unid)
        {
            if (!unid.IsNotNullOrEmpty())
            {
                return(null);
            }
            using (DbRepository entities = new DbRepository())
            {
                Domain.ScratchCard.Update model = new Update();
                var scratchScardEntity          = entities.ScratchCard.Find(unid);
                var prizeEntity = entities.Prize.Where(x => x.TargetCode == (int)TargetCode.ScratchCard && x.TargetID.Equals(unid)).FirstOrDefault();
                if (prizeEntity != null)
                {
                    prizeEntity.AutoMap <Prize, Domain.ScratchCard.Update>(model);
                }
                if (scratchScardEntity != null)
                {
                    scratchScardEntity.AutoMap <ScratchCard, Domain.ScratchCard.Update>(model);
                }

                var startDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                var endDate   = DateTime.Parse(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"));

                //当前用户的参与状况
                var hadJoinEntity = entities.UserJoinCounter.Where(x => x.TargetCode == (int)TargetCode.ScratchCard && x.TargetID.Equals(unid));

                var user = CookieHelper.GetCurrentWxUser();
                if (user != null)
                {
                    var todayHadJoinCount = hadJoinEntity.Where(x => x.CreatedTime >= startDate && x.CreatedTime < endDate && x.OpenID.Equals(user.openid)).Count();

                    model.HadPrizeOnePrizeCount   = hadJoinEntity.Where(x => x.IsPrize == 1 && x.PrizeGrade == 1).Count();
                    model.HadPrizeTwoPrizeCount   = hadJoinEntity.Where(x => x.IsPrize == 1 && x.PrizeGrade == 2).Count();
                    model.HadPrizeThreePrizeCount = hadJoinEntity.Where(x => x.IsPrize == 1 && x.PrizeGrade == 3).Count();

                    if (todayHadJoinCount == prizeEntity.DayLimt)
                    {
                        model.TodayIsHadPrize = true;
                    }
                }
                return(model);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 完成拼图结果
        /// </summary>
        /// <returns>操作结果  提示语句  是否绑定平台活动  平台活动名 绑定地址</returns>
        public Tuple <bool, string, bool, string, string> Complete(string unid)
        {
            var user   = CookieHelper.GetCurrentWxUser();
            var person = CookieHelper.GetCurrentPeople();

            if (user == null || person == null)
            {
                return(new Tuple <bool, string, bool, string, string>(false, "身份过期", false, "", ""));
            }
            using (DbRepository entities = new DbRepository())
            {
                var puzzle = entities.Puzzle.Find(unid);
                if (puzzle == null)
                {
                    return(new Tuple <bool, string, bool, string, string>(false, "参数错误", false, "", ""));
                }
                var dateTime = DateTime.Now.Date;

                if (entities.UserPuzzle.FirstOrDefault(x => x.PuzzleId.Equals(unid) && x.PuzzleDate == dateTime) != null)
                {
                    return(new Tuple <bool, string, bool, string, string>(false, "该拼图已玩过", false, "", ""));
                }
                var userPuzzle = new UserPuzzle()
                {
                    UNID       = Guid.NewGuid().ToString("N"),
                    OpenId     = user.openid,
                    PuzzleDate = dateTime,
                    PuzzleId   = unid
                };
                entities.UserPuzzle.Add(userPuzzle);

                if (puzzle.IsBindScore == (int)YesOrNoCode.Yes)
                {
                    //日常签到积分
                    var scoreDetials = new ScoreDetails()
                    {
                        UNID        = Guid.NewGuid().ToString("N"),
                        OpenId      = user.openid,
                        CreatedTime = DateTime.Now,
                        Description = "完成拼图获得积分",
                        IsAdd       = (int)YesOrNoCode.Yes,
                        Value       = puzzle.Score,
                        Type        = (int)ScoreType.Puzzle,
                        PersonId    = person.UNID,
                        TargetId    = unid
                    };

                    entities.ScoreDetails.Add(scoreDetials);
                    //用户积分增加
                    var updateUserScore = entities.UserScore.FirstOrDefault(x => x.OpenId.Equals(user.openid) && x.PersonId.Equals(person.UNID));
                    if (updateUserScore == null)
                    {
                        var addUserScore = new UserScore()
                        {
                            UNID     = Guid.NewGuid().ToString("N"),
                            OpenId   = user.openid,
                            PersonId = person.UNID,
                            Score    = puzzle.Score
                        };
                        entities.UserScore.Add(addUserScore);
                    }
                    else
                    {
                        updateUserScore.Score += puzzle.Score;
                    }

                    return(entities.SaveChanges() > 0?new Tuple <bool, string, bool, string, string>(true, string.Format("恭喜你获得:{0}积分", puzzle.Score), false, "", ""):new Tuple <bool, string, bool, string, string>(false, "保存出错", false, "", ""));
                }
                else
                {
                    return(entities.SaveChanges() > 0?new Tuple <bool, string, bool, string, string>(true, puzzle.BindTitle, true, puzzle.BindName, puzzle.BindUrl): new Tuple <bool, string, bool, string, string>(false, "保存出错", false, "", ""));
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 签到
        /// </summary>
        /// <param name="openId">微信openId</param>
        /// <returns></returns>
        public bool User_Sign()
        {
            var user   = CookieHelper.GetCurrentWxUser();
            var person = CookieHelper.GetCurrentPeople();

            if (user == null || person == null)
            {
                return(false);
            }
            using (DbRepository entities = new DbRepository())
            {
                var userEntity = entities.User.Find(user.openid);
                if (userEntity == null)
                {
                    return(false);
                }
                var yesterday = DateTime.Now.AddDays(-1).Date;
                var lastSign  = entities.UserSign.Where(x => x.OpenId.Equals(user.openid) && x.PersonId.Equals(person.UNID)).OrderByDescending(x => x.SignDate).FirstOrDefault();


                //判断是否连续签到
                if (lastSign != null)
                {
                    //判断今天是否已签到
                    if (lastSign.SignDate > yesterday)
                    {
                        return(false);
                    }

                    var todaySign = new UserSign()
                    {
                        UNID     = Guid.NewGuid().ToString("N"),
                        SignDate = DateTime.Now,
                        OpenId   = user.openid,
                        PersonId = person.UNID
                    };
                    if (lastSign.SignDate == yesterday)
                    {
                        todaySign.SignNum = lastSign.SignNum + 1;

                        //签到10天判断
                        if (todaySign.SignNum % 10 == 0 && todaySign.SignNum >= 10)
                        {
                            var tenScoreDetials = new ScoreDetails()
                            {
                                UNID        = Guid.NewGuid().ToString("N"),
                                OpenId      = user.openid,
                                CreatedTime = DateTime.Now,
                                Description = "连续签到10天获得积分",
                                IsAdd       = (int)YesOrNoCode.Yes,
                                Value       = Params.TendayScore,
                                Type        = (int)ScoreType.Sign,
                                PersonId    = person.UNID
                            };
                            entities.ScoreDetails.Add(tenScoreDetials);

                            //是否初次签到
                            var userScore = entities.UserScore.FirstOrDefault(x => x.OpenId.Equals(user.openid) && x.PersonId.Equals(person.UNID));
                            if (userScore == null)
                            {
                                var addUserScore = new UserScore()
                                {
                                    UNID     = Guid.NewGuid().ToString("N"),
                                    OpenId   = user.openid,
                                    PersonId = person.UNID,
                                    Score    = Params.TendayScore
                                };
                                entities.UserScore.Add(addUserScore);
                            }
                            else
                            {
                                userScore.Score += Params.TendayScore;
                            }
                        }
                    }
                    else
                    {
                        todaySign.SignNum = 1;
                    }


                    entities.UserSign.Add(todaySign);
                }
                else
                {
                    var todaySign = new UserSign()
                    {
                        UNID     = Guid.NewGuid().ToString("N"),
                        SignDate = DateTime.Now,
                        SignNum  = 1,
                        OpenId   = user.openid,
                        PersonId = person.UNID
                    };
                    entities.UserSign.Add(todaySign);
                }

                //日常签到积分
                var scoreDetials = new ScoreDetails()
                {
                    UNID        = Guid.NewGuid().ToString("N"),
                    OpenId      = user.openid,
                    CreatedTime = DateTime.Now,
                    Description = "签到获得积分",
                    IsAdd       = (int)YesOrNoCode.Yes,
                    Value       = Params.SignScore,
                    Type        = (int)ScoreType.Sign,
                    PersonId    = person.UNID
                };
                //用户积分增加
                var updateUserScore = entities.UserScore.FirstOrDefault(x => x.OpenId.Equals(user.openid) && x.PersonId.Equals(person.UNID));
                if (updateUserScore == null)
                {
                    var addUserScore = new UserScore()
                    {
                        UNID     = Guid.NewGuid().ToString("N"),
                        OpenId   = user.openid,
                        PersonId = person.UNID,
                        Score    = Params.SignScore
                    };
                    entities.UserScore.Add(addUserScore);
                }
                else
                {
                    updateUserScore.Score += Params.SignScore;
                }
                entities.ScoreDetails.Add(scoreDetials);

                return(entities.SaveChanges() > 0 ? true : false);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 增加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public string Add_Order(GoodsOrder model)
        {
            if (model == null ||
                !model.GoodsId.IsNotNullOrEmpty() ||
                model.Count == 0
                )
            {
                return("数据错误");
            }
            var user   = CookieHelper.GetCurrentWxUser();
            var person = CookieHelper.GetCurrentPeople();

            if (user == null || person == null)
            {
                return("身份验证过期");
            }
            using (DbRepository entities = new DbRepository())
            {
                var userEntity = entities.User.Find(user.openid);
                if (userEntity == null)
                {
                    return("用户不存在");
                }

                var goods = entities.Goods.Find(model.GoodsId);
                if (goods == null)
                {
                    return("数据错误");
                }

                if (goods.OngoingTime > DateTime.Now)
                {
                    return("还没到活动时间");
                }
                if (goods.OverTime < DateTime.Now)
                {
                    return("已过活动时间");
                }

                if (goods.SurplusNum < model.Count)
                {
                    return("商品库存不足");
                }

                //商品库存减少
                goods.SurplusNum -= (int)model.Count;
                //积分总计
                model.ScoreNum = model.Count * goods.ScoreNum;

                var userScore = entities.UserScore.FirstOrDefault(x => x.OpenId.Equals(user.openid) && x.PersonId.Equals(person.UNID));
                if (userScore == null || userScore.Score < model.ScoreNum)
                {
                    return("用户积分不足");
                }

                //扣减用户积分
                userScore.Score -= (int)model.ScoreNum;

                //消费积分
                var scoreDetials = new ScoreDetails()
                {
                    UNID        = Guid.NewGuid().ToString("N"),
                    OpenId      = user.openid,
                    CreatedTime = DateTime.Now,
                    Description = string.Format("购买商品:{0},数量{1},消费积分{2}", goods.Name, model.Count, model.Count * goods.ScoreNum),
                    IsAdd       = (int)YesOrNoCode.No,
                    Value       = (int)(model.Count * goods.ScoreNum),
                    Type        = (int)ScoreType.Mall,
                    PersonId    = person.UNID
                };
                entities.ScoreDetails.Add(scoreDetials);


                model.UNID        = Guid.NewGuid().ToString("N");
                model.OpenId      = user.openid;
                model.PersonId    = person.UNID;
                model.AllPrice    = model.Count * goods.SellingPrice;
                model.CreatedTime = DateTime.Now;

                entities.GoodsOrder.Add(model);

                return(entities.SaveChanges() > 0 ? "" : "保存出错");
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 参与刮刮卡活动
        /// </summary>
        /// <param name="unid"></param>
        /// <returns></returns>
        public PrizeResult Do_ScratchCard(string unid)
        {
            PrizeResult result = new PrizeResult();

            result.IsPrize = false;
            if (!unid.IsNotNullOrEmpty())
            {
                result.Result = "数据为空";
                return(result);
            }
            using (DbRepository entities = new DbRepository())
            {
                //找到实体
                var scratchScardEntity = entities.ScratchCard.Find(unid);
                //奖品设置
                var prizeEntity = entities.Prize.Where(x => x.TargetCode == (int)TargetCode.ScratchCard && x.TargetID.Equals(unid)).FirstOrDefault();
                if (prizeEntity == null || scratchScardEntity == null)
                {
                    result.Result = "数据为空";
                    return(result);
                }

                if (scratchScardEntity.OngoingTime > DateTime.Now)
                {
                    result.Result = "还没到活动时间,请耐心等待";
                    return(result);
                }
                else if (scratchScardEntity.OverTime < DateTime.Now)
                {
                    result.Result = "活动已经结束,敬请期待下次活动";
                    return(result);
                }

                //当前的微信 openid
                var user = CookieHelper.GetCurrentWxUser();
                if (user == null)
                {
                    result.Result = "身份授权已过期,请重新刷新页面授权";
                    return(result);
                }

                //参与抽奖的参与情况
                var hadPrizeList = entities.UserJoinCounter.Where(x => x.TargetCode == (int)TargetCode.ScratchCard && x.TargetID.Equals(unid)).ToList();
                //一等奖个数
                int onePrizeNum = hadPrizeList.Where(x => x.IsPrize == 1 && x.PrizeGrade == 1).Count();
                //二等奖个数
                int twoPrizeNum = hadPrizeList.Where(x => x.IsPrize == 1 && x.PrizeGrade == 2).Count();
                //三等奖个数
                int threePrizeNum = hadPrizeList.Where(x => x.IsPrize == 1 && x.PrizeGrade == 3).Count();

                //个人参与总次数
                int hadJoinCount = hadPrizeList.Where(x => x.OpenID.Equals(user.openid)).Count();
                if (prizeEntity.AllCountLimt <= hadJoinCount)
                {
                    result.Result = "对不起,您活动次数已经达到最大次数限制";
                    return(result);
                }
                //当前参与情况
                var startDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                var endDate   = DateTime.Parse(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"));
                //当天参与情况
                if (hadPrizeList.Where(x => x.OpenID.Equals(user.openid) && x.CreatedTime >= startDate && x.CreatedTime < endDate).Count() >= prizeEntity.DayLimt)
                {
                    result.Result = scratchScardEntity.RepeatNotice;
                    return(result);
                }

                //随机概率
                Random randow = new Random();
                int    num    = randow.Next(1, prizeEntity.ExpectedPeopleCount - onePrizeNum - twoPrizeNum - threePrizeNum);

                //保存的参与抽奖情况
                var userJoin = new UserJoinCounter();
                userJoin.UNID        = Guid.NewGuid().ToString("N");
                userJoin.TargetCode  = (int)TargetCode.ScratchCard;
                userJoin.TargetID    = unid;
                userJoin.CreatedTime = DateTime.Now;
                userJoin.SN          = userJoin.UNID.SubString(16);
                result.SN            = userJoin.SN;
                userJoin.OpenID      = user.openid;
                userJoin.IsCach      = 0;

                //减去已中奖个数
                if (num <= prizeEntity.OnePrizeCount - onePrizeNum)
                {
                    userJoin.IsPrize    = 1;
                    userJoin.PrizeGrade = 1;
                    result.Result       = "一等奖";
                    result.IsPrize      = true;
                }
                else if (prizeEntity.OnePrizeCount - onePrizeNum < num && num <= (prizeEntity.OnePrizeCount - onePrizeNum + prizeEntity.TwoPrizeCount - twoPrizeNum))
                {
                    userJoin.IsPrize    = 1;
                    userJoin.PrizeGrade = 2;
                    result.Result       = "二等奖";
                    result.IsPrize      = true;
                }
                else if ((prizeEntity.OnePrizeCount - onePrizeNum + prizeEntity.TwoPrizeCount - twoPrizeNum) < num && num <= (prizeEntity.AllCount - onePrizeNum - twoPrizeNum - threePrizeNum))
                {
                    userJoin.IsPrize    = 1;
                    userJoin.PrizeGrade = 3;
                    result.Result       = "三等奖";
                    result.IsPrize      = true;
                }
                else
                {
                    userJoin.IsPrize    = 0;
                    userJoin.PrizeGrade = 0;
                    result.Result       = "谢谢参与";
                    userJoin.SN         = null;
                    result.SN           = null;
                }
                if (result.IsPrize)
                {
                    prizeEntity.hadPrizeCount++;
                    if (prizeEntity.hadPrizeCount > prizeEntity.OnePrizeCount + prizeEntity.TwoPrizeCount + prizeEntity.ThreePrizeCount)
                    {
                        result.Result = "很抱歉,奖品已经全部派送完了";
                        return(result);
                    }
                }


                entities.UserJoinCounter.Add(userJoin);
                int effect = entities.SaveChanges();
                //保存
                if (effect < 0)
                {
                    //并发修改异常再次执行
                    if (effect == -1)
                    {
                        return(Do_ScratchCard(unid));
                    }
                    else
                    {
                        return new PrizeResult()
                               {
                                   IsError = true
                               }
                    };
                }
                else
                {
                    result.IsError = false;
                    return(result);
                }
            }
        }