コード例 #1
0
        /// <summary>
        ///导出活动以及活动设置数据
        /// </summary>
        /// <param name="rid"></param>
        /// <returns></returns>
        public bool ExportAct(int rid)
        {
            //time.Marke("24.执行查询活动的信息 select top 1 * from SignPointActivity where  ID=@id;select  * from   SignPointSet where  ActivityID=@id ", rid.ToString());
            List <IEnumerable <object> > queryList = _signPointActivityRepository.QueryMultiple(
                "select top 1 * from SignPointActivity where  ID=@id;select  * from   SignPointSet where  ActivityID=@id",
                new { id = rid }, typeof(SignPointActivityDto), typeof(SignPointSetDto));
            //time.Marke("25.结束查询活动的信息 select top 1 * from SignPointActivity where  ID=@id;select  * from   SignPointSet where  ActivityID=@id ", rid.ToString());

            SignPointActivityDto signAct = (SignPointActivityDto)queryList[0].FirstOrDefault();
            //IEnumerable<SignPointSetDto> actSetList =(IEnumerable<SignPointSetDto>) queryList[1];
            List <SignPointSetDto> actSetList = new List <SignPointSetDto>();

            //time.Marke("26.循环更改SignPointSetDto数据结构", rid.ToString());
            foreach (var item in queryList[1])
            {
                actSetList.Add((SignPointSetDto)item);
            }
            //time.Marke("27.循环更改SignPointSetDto数据结构结束", rid.ToString());


            //time.Marke("28.SignActivity map过程开始", rid.ToString());
            SignActivity signActEntity = signAct.MapTo <SignActivity>();

            //time.Marke("29.SignActivity map过程结束", rid.ToString());

            if (signAct != null)
            {
                signActEntity.Id         = signAct.ActID.ToString();
                signActEntity.ActID      = signActEntity.Id;
                signActEntity.RowId      = rid;
                signActEntity.CreateTime = signAct.Addtime;
            }


            if (actSetList == null || !actSetList.Any())
            {
                //time.Marke("30.活动奖项不存在异常开始", rid.ToString());
                //throw new ArgumentException("活动奖项不存在。");
                //日志记录
                ExportError error = new ExportError()
                {
                    RowId            = rid.ToString(),
                    ErrorMsg         = rid + "活动没有奖项信息",
                    OperateException = ""
                };
                _exportErrorRepository.Insert(error);

                //time.Marke("31.活动奖项不存在异常结束", rid.ToString());
                return(false);
            }

            List <SignPointSetEntity> setEntityList = new List <SignPointSetEntity>();

            //time.Marke("32.循环添加对象List<SignPointSetEntity>转换开始", rid.ToString());
            foreach (var set in actSetList)
            {
                var temp = set.MapTo <SignPointSetEntity>();
                temp.ActID = signActEntity.Id;
                setEntityList.Add(temp);
            }

            //time.Marke("33.循环添加对象List<SignPointSetEntity>转换结束", rid.ToString());

            signActEntity.SignPointSet = setEntityList;

            //time.Marke("34.判断插入的数据是否重复开始", rid.ToString());

            //插入数据到mongoDB
            if (_signActRepositoryMongo.FirstOrDefault(signActEntity.Id) == null)
            {
                //time.Marke("35.判断插入的数据是否重复结束", rid.ToString());

                //time.Marke("36.插入活动信息开始", rid.ToString());
                //插入活动
                _signActRepositoryMongo.Insert(signActEntity);
                //time.Marke("37.插入活动信息结束", rid.ToString());

                //time.Marke("38.填入库存缓存数据到redis开始", rid.ToString());
                //填入库存缓存数据到redis
                //ExportCacheData(setEntityList, rid);
                //time.Marke("39.填入库存缓存数据到redis结束", rid.ToString());
                //time.Marke("40.插入用户签到,领奖记录开始", rid.ToString());
                //插入用户签到,领奖记录
                //ExportUserSign(rid, signActEntity.Id);
                //time.Marke("41.插入用户签到,领奖记录结束", rid.ToString());
                return(true);
            }
            else
            {
                Console.WriteLine(rid + "活动数据重复导入");
                //ExportError error = new ExportError()
                //{ rid = rid.ToString(), ErrorMsg = rid + "活动数据重复导入", OperateException = "" };
                //_exportErrorRepository.Insert(error);
                return(true);
            }
            return(true);
        }
コード例 #2
0
        public void IsSuccessfullyInsertData()
        {
            var actIdList = _signPointActivityRepository.Query <int>("select distinct top 1 id  from  SignPointActivity");
            var watch     = new Stopwatch();

            watch.Start();
            //数据库应该有数据
            actIdList.ShouldNotBeNull();
            //条目不为空
            actIdList.Any().ShouldBe(true);

            var node = actIdList.FirstOrDefault();
            var boo  = _actuatorAppService.ExportAct(node);

            boo.ShouldBe(true);
            //检测mongodb的字段
            List <IEnumerable <object> > queryList = _signPointActivityRepository.QueryMultiple(
                "select top 1 * from SignPointActivity where  ID=@id;select  * from   SignPointSet where  ActivityID=@id",
                new { id = node }, typeof(SignPointActivityDto), typeof(SignPointSetDto));
            SignPointActivityDto signAct = (SignPointActivityDto)queryList[0].FirstOrDefault();

            signAct.ShouldNotBeNull();
            List <SignPointSetDto> actSetList = new List <SignPointSetDto>();

            foreach (var item in queryList[1])
            {
                actSetList.Add((SignPointSetDto)item);
            }
            actSetList.Any().ShouldBe(true);

            SignActivity signMongo = _signActivityRepository.FirstOrDefault(x => x.Id == signAct.ActID.ToString());

            signMongo.ShouldNotBeNull();
            signMongo.Title.ShouldBe(signAct.Title);
            signMongo.BackGroundImg.ShouldBe(signAct.BackGroundImg);
            signMongo.BtnName.ShouldBe(signAct.BtnName);
            signMongo.BtnUrl.ShouldBe(signAct.BtnUrl);
            signMongo.BtnUrlName.ShouldBe(signAct.BtnUrlName);
            signMongo.CssStyle.ShouldBe(signAct.CssStyle);
            signMongo.FreeChance.ShouldBe(signAct.FreeChance);
            signMongo.RegistrationRemark.ShouldBe(signAct.RegistrationRemark);
            signMongo.Memberlogin.ShouldBe(signAct.Memberlogin);
            signMongo.SignPointSet.Count().ShouldBe(actSetList.Count());
            string timePattern = "yyyyMMdd";

            signMongo.BeginTime.ToString(timePattern).ShouldBe(signAct.BeginTime.ToString(timePattern));
            signMongo.EndTime.ToString(timePattern).ShouldBe(signAct.EndTime.ToString(timePattern));

            //检查奖项库存
            foreach (var item in signMongo.SignPointSet)
            {
                if (item.WxHbID > 0)//红包
                {
                    int    prizeType       = 0;
                    int    activityType    = item.IsSpecial == 0 ? 2 : 3;
                    string hbStockCountKey = string.Format(SignKeys.signactprizegrantnum_key, item.ID, prizeType);
                    hbStockCountKey = "B200016:" + hbStockCountKey;
                    int hbGrantCount = _eventAwardRecordsRepository.Count(" where MemberLogin=@Memberlogin and ActivityID=@ActID  and ActivityType=@ActivityType and (PrizeType=@PrizeType or  PrizeType=@PrizeType2 )  and AwardSetId = @AwardSetId",
                                                                          new { Memberlogin = item.Memberlogin, ActID = node, ActivityType = activityType, PrizeType = 5, PrizeType2 = 6, AwardSetId = item.ID });
                    int count = Convert.ToInt32(_redisHelper.StringGet(hbStockCountKey));
                    count.ShouldBe(hbGrantCount);
                }
                if (item.ProductID > 0)//产品
                {
                    int    prizeType            = 1;
                    int    activityType         = item.IsSpecial == 0 ? 2 : 3;
                    string productStockCountKey = string.Format(SignKeys.signactprizegrantnum_key, item.ID, prizeType);
                    productStockCountKey = "B200016:" + productStockCountKey;
                    int prizeTypeDB       = 0;
                    int productStockCount = _eventAwardRecordsRepository.Count("where MemberLogin=@Memberlogin and ActivityID=@ActID  and ActivityType=@ActivityType and PrizeType=@PrizeType  and AwardSetId = @AwardSetId",
                                                                               new { Memberlogin = item.Memberlogin, ActID = node, ActivityType = activityType, PrizeType = prizeTypeDB, AwardSetId = item.ID });
                    int count = Convert.ToInt32(_redisHelper.StringGet(productStockCountKey));
                    count.ShouldBe(productStockCount);
                }
            }


            //检查用户数据
            IEnumerable <string> openIdList = _signRecordsRepository
                                              .Query <string>("select distinct  openid  from   SignRecords where  ActivityID=@actID ",
                                                              new { actID = node });

            if (openIdList == null || !openIdList.Any())
            {
                return;                                         //无人参加
            }
            string openid = openIdList.FirstOrDefault();
            List <IEnumerable <object> > queryList2 = _signPointActivityRepository.QueryMultiple(
                "select  *   from   SignRecords where  ActivityID=@actID and Openid=@openId order by ID desc; " +
                "select  *   from   SignSpecialRecords where  ActivityID=@actID and Openid=@openId; " +
                "select  *   from   MemberSignatureCard where  ActivityID=@actID and Openid=@openId; " +
                //"select  *   from   EventAwardRecords where  ActivityID=@actID and Openid=@openId and (ActivityType=@actType or ActivityType=@actSpecialType ",
                "select  *   from   EventAwardRecords where  ActivityID=@actID and Openid=@openId and ActivityType=@actType union  select  *   from   EventAwardRecords where  ActivityID=@actID and Openid=@openId and ActivityType=@actSpecialType ",
                new { actID = node, openId = openid, actType = 2, actSpecialType = 3 }, new Type[] { typeof(SignRecordsDto), typeof(SignSpecialRecordsDto), typeof(MemberSignatureCardDto), typeof(EventAwardRecordsDto) });

            //签到记录
            UserSignActivity userSignMongo = _userSignActRepositoryMongo.FirstOrDefault(UserSignActivity.GetId(openid, signMongo.Id));

            userSignMongo.ShouldNotBeNull();
            if (queryList2[0].Any())
            {
                List <SignRecordsDto> records = new List <SignRecordsDto>();
                foreach (var item in queryList2[0])
                {
                    records.Add((SignRecordsDto)item);
                }
                userSignMongo.SignRecords.Count().ShouldBe(records.Count());
                var recordDB    = records.OrderBy(m => m.Addtime).FirstOrDefault();
                var recordMongo = userSignMongo.SignRecords.OrderBy(t => t.Addtime).FirstOrDefault();
                userSignMongo.Id.ShouldBe(UserSignActivity.GetId(openid, signMongo.Id));
                recordMongo.CustomerID.ShouldBe(recordDB.CustomerID);
                recordMongo.Day.ShouldBe(recordDB.Day);
                recordMongo.IsContinue.ShouldBe(recordDB.IsContinue);
                recordMongo.IsSignature.ShouldBe(recordDB.IsSignature);
                recordMongo.memberlogin.ShouldBe(recordDB.memberlogin);
            }
            //特殊
            if (queryList2[1].Any())
            {
                List <SignSpecialRecordsDto> specials = new List <SignSpecialRecordsDto>();
                foreach (var item in queryList2[1])
                {
                    specials.Add((SignSpecialRecordsDto)item);
                }
                userSignMongo.SignSpecialRecords.Count().ShouldBe(specials.Count);
                var recordDB    = specials.OrderBy(m => m.Addtime).FirstOrDefault();
                var recordMongo = userSignMongo.SignSpecialRecords.OrderBy(t => t.Addtime).FirstOrDefault();
                recordMongo.SpecialSDate.ShouldBe(recordDB.SpecialSDate);
                recordMongo.CustomerID.ShouldBe(recordDB.CustomerID);
            }
            //补签卡
            if (queryList2[2].Any())
            {
                List <MemberSignatureCardDto> cards = new List <MemberSignatureCardDto>();
                foreach (var item in queryList2[2])
                {
                    cards.Add((MemberSignatureCardDto)item);
                }
                userSignMongo.MemberSignatureCard.Count().ShouldBe(cards.Count());
                userSignMongo.MemberSignatureCard.Count(m => m.IsUse == 1).ShouldBe(cards.Count(m => m.IsUse == 1));
            }
            //奖项
            if (queryList2[3].Any())
            {
                List <EventAwardRecordsDto> awards = new List <EventAwardRecordsDto>();
                foreach (var item in queryList2[3])
                {
                    awards.Add((EventAwardRecordsDto)item);
                }
                userSignMongo.EventAwardRecords.Count().ShouldBe(awards.Count());
            }

            //检测完删掉mongodb的测试数据
            //   _signActivityRepository.Delete

            foreach (var user in openIdList)
            {
                _userSignActRepositoryMongo.Delete(UserSignActivity.GetId(user, signMongo.Id));
            }

            _signActivityRepository.Delete(signMongo.Id);


            watch.Stop();
            watch.ElapsedMilliseconds.ShouldBeLessThan(10000);
        }