예제 #1
0
        public List <LotteryWinnerInfo> GetWinnerInfoList(int publishmentSystemId, ELotteryType lotteryType, int lotteryId)
        {
            var winnerInfoList = new List <LotteryWinnerInfo>();

            string sqlWhere =
                $"WHERE {LotteryWinnerAttribute.PublishmentSystemId} = {publishmentSystemId} AND {LotteryWinnerAttribute.LotteryType} = '{ELotteryTypeUtils.GetValue(lotteryType)}'";

            if (lotteryId > 0)
            {
                sqlWhere =
                    $"WHERE {LotteryWinnerAttribute.PublishmentSystemId} = {publishmentSystemId} AND {LotteryWinnerAttribute.LotteryId} = {lotteryId}";
            }

            var sqlSelect = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TableName, 0, SqlUtils.Asterisk, sqlWhere, "ORDER BY ID DESC");

            using (var rdr = ExecuteReader(sqlSelect))
            {
                while (rdr.Read())
                {
                    var winnerInfo = new LotteryWinnerInfo(rdr);
                    winnerInfoList.Add(winnerInfo);
                }
                rdr.Close();
            }

            return(winnerInfoList);
        }
예제 #2
0
        public void Update(LotteryWinnerInfo winnerInfo)
        {
            IDataParameter[] parms = null;
            var SQL_UPDATE         = BaiRongDataProvider.TableStructureDao.GetUpdateSqlString(winnerInfo.ToNameValueCollection(), ConnectionString, TABLE_NAME, out parms);

            ExecuteNonQuery(SQL_UPDATE, parms);
        }
예제 #3
0
        public List <LotteryWinnerInfo> GetWinnerInfoList(int publishmentSystemID, ELotteryType lotteryType, int lotteryID)
        {
            var winnerInfoList = new List <LotteryWinnerInfo>();

            string SQL_WHERE =
                $"WHERE {LotteryWinnerAttribute.PublishmentSystemID} = {publishmentSystemID} AND {LotteryWinnerAttribute.LotteryType} = '{ELotteryTypeUtils.GetValue(lotteryType)}'";

            if (lotteryID > 0)
            {
                SQL_WHERE =
                    $"WHERE {LotteryWinnerAttribute.PublishmentSystemID} = {publishmentSystemID} AND {LotteryWinnerAttribute.LotteryID} = {lotteryID}";
            }

            var SQL_SELECT = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TABLE_NAME, 0, SqlUtils.Asterisk, SQL_WHERE, "ORDER BY ID DESC");

            using (var rdr = ExecuteReader(SQL_SELECT))
            {
                while (rdr.Read())
                {
                    var winnerInfo = new LotteryWinnerInfo(rdr);
                    winnerInfoList.Add(winnerInfo);
                }
                rdr.Close();
            }

            return(winnerInfoList);
        }
예제 #4
0
        public int Insert(LotteryWinnerInfo winnerInfo)
        {
            var winnerID = 0;

            IDataParameter[] parms = null;

            var SQL_INSERT = BaiRongDataProvider.TableStructureDao.GetInsertSqlString(winnerInfo.ToNameValueCollection(), ConnectionString, TABLE_NAME, out parms);


            using (var conn = GetConnection())
            {
                conn.Open();
                using (var trans = conn.BeginTransaction())
                {
                    try
                    {
                        ExecuteNonQuery(trans, SQL_INSERT, parms);

                        winnerID = BaiRongDataProvider.DatabaseDao.GetSequence(trans, TABLE_NAME);

                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }

            return(winnerID);
        }
예제 #5
0
        public int Insert(LotteryWinnerInfo winnerInfo)
        {
            var winnerId = 0;

            IDataParameter[] parms = null;

            var sqlInsert = BaiRongDataProvider.TableStructureDao.GetInsertSqlString(winnerInfo.ToNameValueCollection(), ConnectionString, TableName, out parms);


            using (var conn = GetConnection())
            {
                conn.Open();
                using (var trans = conn.BeginTransaction())
                {
                    try
                    {
                        winnerId = ExecuteNonQueryAndReturnId(trans, sqlInsert, parms);

                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }

            return(winnerId);
        }
예제 #6
0
        public LotteryWinnerInfo GetWinnerInfo(int publishmentSystemID, int lotteryID, string cookieSN, string wxOpenID, string userName)
        {
            ///改成 wxopenID

            var SQL_WHERE = "";

            LotteryWinnerInfo winnerInfo = null;

            if (string.IsNullOrEmpty(wxOpenID))
            {
                SQL_WHERE =
                    $"WHERE {LotteryWinnerAttribute.PublishmentSystemID} = {publishmentSystemID} AND {LotteryWinnerAttribute.LotteryID} = {lotteryID} AND {LotteryWinnerAttribute.CookieSN}= '{cookieSN}'";
            }
            else
            {
                SQL_WHERE =
                    $"WHERE {LotteryWinnerAttribute.PublishmentSystemID} = {publishmentSystemID} AND {LotteryWinnerAttribute.LotteryID} = {lotteryID} AND {LotteryWinnerAttribute.WXOpenID}= '{wxOpenID}'";
            }
            var SQL_SELECT = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TABLE_NAME, 0, SqlUtils.Asterisk, SQL_WHERE, null);

            using (var rdr = ExecuteReader(SQL_SELECT))
            {
                if (rdr.Read())
                {
                    winnerInfo = new LotteryWinnerInfo(rdr);
                }
                rdr.Close();
            }

            if (winnerInfo == null)
            {
                //6月30日需要删除
                if (!string.IsNullOrEmpty(wxOpenID))
                {
                    SQL_WHERE += $" AND {LotteryWinnerAttribute.WXOpenID} = '{wxOpenID}'";
                }
                else if (!string.IsNullOrEmpty(userName))
                {
                    SQL_WHERE += $" AND {LotteryWinnerAttribute.UserName} = '{userName}'";
                }

                SQL_SELECT = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TABLE_NAME, 0, SqlUtils.Asterisk, SQL_WHERE, null);

                using (var rdr = ExecuteReader(SQL_SELECT))
                {
                    if (rdr.Read())
                    {
                        winnerInfo = new LotteryWinnerInfo(rdr);
                    }
                    rdr.Close();
                }
            }

            return(winnerInfo);
        }
예제 #7
0
        public LotteryWinnerInfo GetWinnerInfo(int publishmentSystemId, int lotteryId, string cookieSn, string wxOpenId, string userName)
        {
            ///改成 wxopenID

            var sqlWhere = "";

            LotteryWinnerInfo winnerInfo = null;

            if (string.IsNullOrEmpty(wxOpenId))
            {
                sqlWhere =
                    $"WHERE {LotteryWinnerAttribute.PublishmentSystemId} = {publishmentSystemId} AND {LotteryWinnerAttribute.LotteryId} = {lotteryId} AND {LotteryWinnerAttribute.CookieSn}= '{cookieSn}'";
            }
            else
            {
                sqlWhere =
                    $"WHERE {LotteryWinnerAttribute.PublishmentSystemId} = {publishmentSystemId} AND {LotteryWinnerAttribute.LotteryId} = {lotteryId} AND {LotteryWinnerAttribute.WxOpenId}= '{wxOpenId}'";
            }
            var sqlSelect = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TableName, 0, SqlUtils.Asterisk, sqlWhere, null);

            using (var rdr = ExecuteReader(sqlSelect))
            {
                if (rdr.Read())
                {
                    winnerInfo = new LotteryWinnerInfo(rdr);
                }
                rdr.Close();
            }

            if (winnerInfo == null)
            {
                //6月30日需要删除
                if (!string.IsNullOrEmpty(wxOpenId))
                {
                    sqlWhere += $" AND {LotteryWinnerAttribute.WxOpenId} = '{wxOpenId}'";
                }
                else if (!string.IsNullOrEmpty(userName))
                {
                    sqlWhere += $" AND {LotteryWinnerAttribute.UserName} = '{userName}'";
                }

                sqlSelect = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TableName, 0, SqlUtils.Asterisk, sqlWhere, null);

                using (var rdr = ExecuteReader(sqlSelect))
                {
                    if (rdr.Read())
                    {
                        winnerInfo = new LotteryWinnerInfo(rdr);
                    }
                    rdr.Close();
                }
            }

            return(winnerInfo);
        }
예제 #8
0
        void rptContents_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var winnerInfo = new LotteryWinnerInfo(e.Item.DataItem);

                var ltlItemIndex = e.Item.FindControl("ltlItemIndex") as Literal;
                var ltlAward     = e.Item.FindControl("ltlAward") as Literal;
                var ltlRealName  = e.Item.FindControl("ltlRealName") as Literal;
                var ltlMobile    = e.Item.FindControl("ltlMobile") as Literal;
                var ltlEmail     = e.Item.FindControl("ltlEmail") as Literal;
                var ltlAddress   = e.Item.FindControl("ltlAddress") as Literal;
                var ltlStatus    = e.Item.FindControl("ltlStatus") as Literal;
                var ltlAddDate   = e.Item.FindControl("ltlAddDate") as Literal;
                var ltlCashSN    = e.Item.FindControl("ltlCashSN") as Literal;
                var ltlCashDate  = e.Item.FindControl("ltlCashDate") as Literal;

                ltlItemIndex.Text = (e.Item.ItemIndex + 1).ToString();

                LotteryAwardInfo awardInfo = null;
                if (awardInfoMap.ContainsKey(winnerInfo.AwardID))
                {
                    awardInfo = awardInfoMap[winnerInfo.AwardID];
                }
                else
                {
                    awardInfo = DataProviderWX.LotteryAwardDAO.GetAwardInfo(winnerInfo.AwardID);
                    awardInfoMap.Add(winnerInfo.AwardID, awardInfo);
                }
                if (awardInfo != null)
                {
                    ltlAward.Text =
                        $@"<a href=""{GetRedirectUrl(PublishmentSystemID,
                            ELotteryTypeUtils.GetEnumType(winnerInfo.LotteryType), winnerInfo.LotteryID, winnerInfo.AwardID,
                            returnUrl)}"">{awardInfo.AwardName + ":" + awardInfo.Title}</a>";
                }

                ltlRealName.Text = winnerInfo.RealName;
                ltlMobile.Text   = winnerInfo.Mobile;
                ltlEmail.Text    = winnerInfo.Email;
                ltlAddress.Text  = winnerInfo.Address;
                ltlStatus.Text   = EWinStatusUtils.GetText(EWinStatusUtils.GetEnumType(winnerInfo.Status));
                ltlAddDate.Text  = DateUtils.GetDateAndTimeString(winnerInfo.AddDate);
                ltlCashSN.Text   = winnerInfo.CashSN;
                ltlCashDate.Text = DateUtils.GetDateAndTimeString(winnerInfo.CashDate);
            }
        }
예제 #9
0
        public LotteryWinnerInfo GetWinnerInfo(int winnerID)
        {
            LotteryWinnerInfo winnerInfo = null;

            string SQL_WHERE  = $"WHERE ID = {winnerID}";
            var    SQL_SELECT = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TABLE_NAME, 0, SqlUtils.Asterisk, SQL_WHERE, null);

            using (var rdr = ExecuteReader(SQL_SELECT))
            {
                if (rdr.Read())
                {
                    winnerInfo = new LotteryWinnerInfo(rdr);
                }
                rdr.Close();
            }

            return(winnerInfo);
        }
예제 #10
0
        public LotteryWinnerInfo GetWinnerInfo(int winnerId)
        {
            LotteryWinnerInfo winnerInfo = null;

            string sqlWhere  = $"WHERE ID = {winnerId}";
            var    sqlSelect = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TableName, 0, SqlUtils.Asterisk, sqlWhere, null);

            using (var rdr = ExecuteReader(sqlSelect))
            {
                if (rdr.Read())
                {
                    winnerInfo = new LotteryWinnerInfo(rdr);
                }
                rdr.Close();
            }

            return(winnerInfo);
        }
예제 #11
0
        public List <LotteryWinnerInfo> GetLotteryWinnerInfoList(int publishmentSystemID, int lotteryID, int awardID)
        {
            var lotteryWinnerInfoList = new List <LotteryWinnerInfo>();

            string SQL_WHERE =
                $"WHERE {LotteryWinnerAttribute.PublishmentSystemID} = {publishmentSystemID} AND {LotteryWinnerAttribute.LotteryID} = {lotteryID} AND {LotteryWinnerAttribute.AwardID} = {awardID}";

            var SQL_SELECT = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TABLE_NAME, 0, SqlUtils.Asterisk, SQL_WHERE, null);

            using (var rdr = ExecuteReader(SQL_SELECT))
            {
                while (rdr.Read())
                {
                    var lotteryWinnerInfo = new LotteryWinnerInfo(rdr);
                    lotteryWinnerInfoList.Add(lotteryWinnerInfo);
                }
                rdr.Close();
            }

            return(lotteryWinnerInfoList);
        }
예제 #12
0
        public List <LotteryWinnerInfo> GetLotteryWinnerInfoList(int publishmentSystemId, int lotteryId, int awardId)
        {
            var lotteryWinnerInfoList = new List <LotteryWinnerInfo>();

            string sqlWhere =
                $"WHERE {LotteryWinnerAttribute.PublishmentSystemId} = {publishmentSystemId} AND {LotteryWinnerAttribute.LotteryId} = {lotteryId} AND {LotteryWinnerAttribute.AwardId} = {awardId}";

            var sqlSelect = BaiRongDataProvider.TableStructureDao.GetSelectSqlString(ConnectionString, TableName, 0, SqlUtils.Asterisk, sqlWhere, null);

            using (var rdr = ExecuteReader(sqlSelect))
            {
                while (rdr.Read())
                {
                    var lotteryWinnerInfo = new LotteryWinnerInfo(rdr);
                    lotteryWinnerInfoList.Add(lotteryWinnerInfo);
                }
                rdr.Close();
            }

            return(lotteryWinnerInfoList);
        }
예제 #13
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);
        }