//  是否有任一档次中的任一项可以领取
        public bool CanGetAnyAward(GameClient client)
        {
            if (client == null || !InAwardTime())
            {
                return(false);
            }

            List <_AwardInfo> myDataLst = _GetMyActInfoFromDB(client);

            if (myDataLst == null)
            {
                return(false);
            }

            foreach (var info in myDataLst)
            {
                // 找到对应的充值档次
                _ChargeLvl cl = chargeLvlList.Find(_cl => _cl.Id == info.AwardId);
                if (cl == null)
                {
                    return(false);
                }

                foreach (var award in cl.AwardList)
                {
                    // 判断本档次中达成的天数中,是否有任意天数未领取
                    if (award.LianXuDay <= info.LianXuDay && Global.GetIntSomeBit(info.AwardFlag, award.LianXuDay) == 0)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        // 初始化配置文件信息
        public bool Init()
        {
            try
            {
                GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(CfgFile));
                XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(CfgFile));
                if (null == xml)
                {
                    return(false);
                }

                XElement args = xml.Element("Activities");
                if (null != args)
                {
                    FromDate     = Global.GetSafeAttributeStr(args, "FromDate");
                    ToDate       = Global.GetSafeAttributeStr(args, "ToDate");
                    ActivityType = (int)Global.GetSafeAttributeLong(args, "ActivityType");

                    AwardStartDate = Global.GetSafeAttributeStr(args, "AwardStartDate");
                    AwardEndDate   = Global.GetSafeAttributeStr(args, "AwardEndDate");
                }

                args = xml.Element("GiftList");

                Dictionary <int, _ChargeLvl> awardId2ChargeLvl = new Dictionary <int, _ChargeLvl>();

                if (null != args)
                {
                    IEnumerable <XElement> xmlItems = args.Elements();
                    foreach (var xmlItem in xmlItems)
                    {
                        if (null == xmlItem)
                        {
                            continue;
                        }

                        int        awardId    = (int)Global.GetSafeAttributeLong(xmlItem, "Group");
                        int        needCharge = (int)Global.GetSafeAttributeLong(xmlItem, "NeedZuanShi");
                        _ChargeLvl chargeLvl  = null;
                        if (!awardId2ChargeLvl.TryGetValue(awardId, out chargeLvl))
                        {
                            chargeLvl            = new _ChargeLvl();
                            chargeLvl.Id         = awardId;
                            chargeLvl.NeedCharge = needCharge;

                            awardId2ChargeLvl[awardId] = chargeLvl;
                        }

                        _DayAward dayAward = new _DayAward();
                        dayAward.LianXuDay = (int)Global.GetSafeAttributeLong(xmlItem, "Day");
                        string goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsOne");
                        if (string.IsNullOrEmpty(goodsIDs))
                        {
                            LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项为空", CfgFile));
                        }
                        else
                        {
                            string[] fields = goodsIDs.Split('|');
                            if (fields.Length <= 0)
                            {
                                LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", CfgFile));
                            }
                            else
                            {
                                dayAward.AwardGoods.GoodsDataList.AddRange(HuodongCachingMgr.ParseGoodsDataList(fields, "连续充值活动goods1配置"));
                            }
                        }

                        goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsTwo");
                        if (string.IsNullOrEmpty(goodsIDs))
                        {
                        }
                        else
                        {
                            string[] fields = goodsIDs.Split('|');
                            if (fields.Length <= 0)
                            {
                                LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", CfgFile));
                            }
                            else
                            {
                                //将物品字符串列表解析成物品数据列表
                                dayAward.AwardGoods.GoodsDataList.AddRange(HuodongCachingMgr.ParseGoodsDataList(fields, "连续充值活动goods2配置"));
                            }
                        }

                        chargeLvl.AwardList.Add(dayAward);
                    }

                    chargeLvlList.AddRange(awardId2ChargeLvl.Values.ToList());

                    PredealDateTime();
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", CfgFile, ex.Message));
                return(false);
            }

            return(true);
        }
        // 领奖
        public JieriLianXuChargeErrorCode HandleGetAward(GameClient client, int awardId, int day)
        {
            if (!InAwardTime() || client == null)
            {
                return(JieriLianXuChargeErrorCode.NotAwardTime);
            }

            _ChargeLvl cl = chargeLvlList.Find(_cl => _cl.Id == awardId);

            if (cl == null)
            {
                // 找不到该档次
                return(JieriLianXuChargeErrorCode.ConfigError);
            }

            _DayAward da = cl.AwardList.Find(_da => _da.LianXuDay == day);

            if (da == null)
            {
                // 找不到该档次的day信息
                return(JieriLianXuChargeErrorCode.ConfigError);
            }

            List <_AwardInfo> myDataLst = _GetMyActInfoFromDB(client);

            if (myDataLst == null)
            {
                // 找不到我的领奖信息
                return(JieriLianXuChargeErrorCode.DBFailed);
            }

            var info = myDataLst.Find(_info => _info.AwardId == awardId);

            if (info == null)
            {
                // 找不到该档次的领奖信息
                return(JieriLianXuChargeErrorCode.ConfigError);
            }

            if (info.LianXuDay < day || Global.GetIntSomeBit(info.AwardFlag, day) == 1)
            {
                // 尚未达成或者已经领取
                return(JieriLianXuChargeErrorCode.NotMeetAwardCond);
            }

            if (da.AwardGoods != null && da.AwardGoods.GoodsDataList != null && da.AwardGoods.GoodsDataList.Count > 0)
            {
                // 发放的是礼包,只有1个
                int AwardGoodsCnt = da.AwardGoods.GoodsDataList.Count(goods => Global.IsRoleOccupationMatchGoods(client, goods.GoodsID));
                if (!Global.CanAddGoodsNum(client, AwardGoodsCnt))
                {
                    // 背包不足
                    return(JieriLianXuChargeErrorCode.NoBagSpace);
                }
            }

            int newAwardFlag = Global.SetIntSomeBit(day, info.AwardFlag, true);

            if (!_UpdateAwardFlag2DB(client, awardId, newAwardFlag))
            {
                // 更新领奖信息失败啊啊啊啊
                return(JieriLianXuChargeErrorCode.DBFailed);
            }

            info.AwardFlag = newAwardFlag;
            GiveAward(client, da.AwardGoods);
            //_GiveAward2Client(client, da.AwardGoods1);

            // 检查图标
            if (client._IconStateMgr.CheckJieriLianXuCharge(client))
            {
                client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, client._IconStateMgr.IsAnyJieRiTipActived());
                client._IconStateMgr.SendIconStateToClient(client);
            }

            return(JieriLianXuChargeErrorCode.Success);
        }