/// <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); } }
/// <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 ? "" : "保存出错"); } }
/// <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); } }
/// <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, "", "")); } } }
/// <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); } }
/// <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 ? "" : "保存出错"); } }
/// <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); } } }