public static int AddApplication(int publishmentSystemID, int actID, string uniqueID, string realName, string mobile, string email, string address) { try { var couponInfoList = DataProviderWX.CouponDAO.GetCouponInfoList(publishmentSystemID, actID); var snID = 0; var couponID = 0; var cookieSN = WeiXinManager.GetCookieSN(); snID = DataProviderWX.CouponSNDAO.Hold(publishmentSystemID, actID, cookieSN); var newCouponSNInfo = DataProviderWX.CouponSNDAO.GetSNInfo(snID); couponID = newCouponSNInfo.CouponID; var couponSNInfo = new CouponSNInfo(); couponSNInfo.PublishmentSystemID = publishmentSystemID; couponSNInfo.CookieSN = cookieSN; couponSNInfo.CouponID = couponID; couponSNInfo.ID = snID; couponSNInfo.HoldDate = DateTime.Now; couponSNInfo.HoldRealName = realName; couponSNInfo.HoldMobile = mobile; couponSNInfo.HoldEmail = email; couponSNInfo.HoldAddress = address; couponSNInfo.CashDate = DateTime.Now; couponSNInfo.Status = ECouponStatusUtils.GetValue(ECouponStatus.Hold); couponSNInfo.WXOpenID = uniqueID; if (newCouponSNInfo.Status == ECouponStatusUtils.GetValue(ECouponStatus.Cash)) { couponSNInfo.Status = ECouponStatusUtils.GetValue(ECouponStatus.Cash); } DataProviderWX.CouponSNDAO.Update(couponSNInfo); return(newCouponSNInfo.ID); } catch (Exception ex) { return(0); } }
public static bool Lottery(LotteryInfo lotteryInfo, List <LotteryAwardInfo> awardInfoList, string cookieSN, string wxOpenID, out LotteryAwardInfo awardInfo, out LotteryWinnerInfo winnerInfo, string userName, out string errorMessage) { errorMessage = string.Empty; awardInfo = null; winnerInfo = DataProviderWx.LotteryWinnerDao.GetWinnerInfo(lotteryInfo.PublishmentSystemId, lotteryInfo.Id, cookieSN, wxOpenID, userName); if (winnerInfo != null) { awardInfo = GetAwardInfo(awardInfoList, winnerInfo.AwardId); } else { var isMaxCount = false; var isMaxDailyCount = false; DataProviderWx.LotteryLogDao.AddCount(lotteryInfo.PublishmentSystemId, lotteryInfo.Id, cookieSN, wxOpenID, userName, lotteryInfo.AwardMaxCount, lotteryInfo.AwardMaxDailyCount, out isMaxCount, out isMaxDailyCount); if (isMaxCount) { errorMessage = $"对不起,每人最多允许抽奖{lotteryInfo.AwardMaxCount}次"; return(false); } else if (isMaxDailyCount) { errorMessage = $"对不起,每人每天最多允许抽奖{lotteryInfo.AwardMaxDailyCount}次"; return(false); } else { if (awardInfoList != null && awardInfoList.Count > 0) { var idWithProbabilityDictionary = new Dictionary <int, decimal>(); foreach (var lotteryAwardInfo in awardInfoList) { idWithProbabilityDictionary.Add(lotteryAwardInfo.Id, lotteryAwardInfo.Probability); } var awardID = WeiXinManager.Lottery(idWithProbabilityDictionary); if (awardID > 0) { var lotteryAwardInfo = GetAwardInfo(awardInfoList, awardID); if (lotteryAwardInfo != null && lotteryAwardInfo.TotalNum > 0) { var wonNum = DataProviderWx.LotteryWinnerDao.GetTotalNum(awardID); if (lotteryAwardInfo.TotalNum > wonNum) { awardInfo = lotteryAwardInfo; winnerInfo = new LotteryWinnerInfo { PublishmentSystemId = lotteryInfo.PublishmentSystemId, LotteryType = lotteryInfo.LotteryType, LotteryId = lotteryInfo.Id, AwardId = awardID, Status = EWinStatusUtils.GetValue(EWinStatus.Won), CookieSn = cookieSN, WxOpenId = wxOpenID, UserName = userName, AddDate = DateTime.Now }; winnerInfo.Id = DataProviderWx.LotteryWinnerDao.Insert(winnerInfo); DataProviderWx.LotteryAwardDao.UpdateWonNum(awardID); DataProviderWx.LotteryDao.AddUserCount(winnerInfo.LotteryId); } } } } } } return(true); }