示例#1
0
        public int AddActivity(dynamic requestData)
        {
            string       query = JsonConvert.SerializeObject(requestData);
            SignActivity model = JsonConvert.DeserializeObject <SignActivity>(query);

            model.RegistDate = DateTime.Now;
            db.SignActivity.Add(model);

            return(db.SaveChanges());
        }
示例#2
0
        public int UpdateActivity(dynamic requestData)
        {
            string       query       = JsonConvert.SerializeObject(requestData);
            SignActivity activity    = JsonConvert.DeserializeObject <SignActivity>(query);
            EntityState  statebefore = db.Entry(activity).State;

            db.Entry(activity).State = EntityState.Modified;

            return(db.SaveChanges());
        }
示例#3
0
        public string FindSignActivity(int activityId = 0)
        {
            if (activityId <= 0)
            {
                return("-1");
            }

            SignActivity q = (from o in db.SignActivity
                              where o.ActivityId == activityId
                              select o).FirstOrDefault();

            return(JsonConvert.SerializeObject(q));;
        }
        public void ReExportErrorData()
        {
            List <ExportError> errorActList = _exportErrorRepository.GetAllList();

            if (errorActList.Any())
            {
                foreach (var act in errorActList)
                {
                    try
                    {
                        SignActivity signActEntity = _signActRepositoryMongo.FirstOrDefault(m => m.RowId == Convert.ToInt32(act.RowId));
                        DeleteActData(signActEntity.RowId, signActEntity.ActID);
                        if (ExportAct(signActEntity.RowId))
                        {
                            _exportErrorRepository.Delete(t => t.RowId == signActEntity.RowId.ToString());
                        }
                        else
                        {
                            //加入错误队列
                            Console.WriteLine(signActEntity.RowId + "该活动导入数据出错了");
                            //加入日志
                            ExportError error = new ExportError()
                            {
                                RowId    = act.RowId,
                                ErrorMsg = "该活动导入数据失败了111"
                            };
                            _exportErrorRepository.Insert(error);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(act.RowId + "该活动导入数据出错了,错误原因:" + ex.Message);
                        //加入日志
                        ExportError error = new ExportError()
                        {
                            RowId            = act.RowId,
                            ErrorMsg         = ex.Message,
                            OperateException = ex.ToString()
                        };
                        _exportErrorRepository.Insert(error);
                    }
                }
            }
        }
        /// <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);
        }
示例#6
0
        public string SignIn(dynamic requestData)
        {
            try
            {
                int    activityId = requestData.ActivityId;
                int    memberId   = requestData.UserId;
                string openId     = requestData.OpenId;
                string signDate   = requestData.SignDate;

                //return openId + "|" + signDate + "|" + memberId + "|" + activityId;

                //查询出活动
                SignActivity activity = (from o in db.SignActivity
                                         where o.ActivityId == activityId
                                         select o).FirstOrDefault();

                if (activity == null)
                {
                    return("{ \"Count\":\"-1\",\"text\":\"\"}");;
                }

                if (string.IsNullOrEmpty(signDate))
                {
                    if (activity.ActState == -1 || activity.StartTime > DateTime.Now || DateTime.Now > activity.EndTime)
                    {
                        return("{ \"Count\":\"-1\",\"text\":\"\"}");
                    }
                }

                //验证是否签过到
                string actName = (from o in db.SignInLog
                                  where o.UserId == memberId && o.ActivityId == activityId
                                  select o.ActivityName).FirstOrDefault();

                if (!string.IsNullOrEmpty(actName))
                {
                    return("{ \"Count\":\"2\",\"text\":\"" + activity.ActName + "\"}");
                }

                //新增签到
                SignInLog model = new SignInLog();
                model.ActivityId   = activityId;
                model.ActivityName = activity.ActName;
                if (string.IsNullOrEmpty(signDate))
                {
                    model.SignDate = DateTime.Now;
                }
                else
                {
                    model.SignDate = Convert.ToDateTime(signDate);
                }
                model.OpenId = openId;
                model.UserId = memberId;

                db.SignInLog.Add(model);
                int a = db.SaveChanges();

                if (a > 0)
                {
                    //操作活动积
                    string integralSql = string.Format("update RegistMember Set LeaveIntegral = LeaveIntegral + {0} where MemberId = {1}", activity.Integral, memberId);
                    int    nums        = dataContext.ExecuteNonQuery(CommandType.Text, integralSql);

                    string logsql = string.Format("insert into MemberIntegralDetail values({0},{1},'{2}',2,'线下签到','{2}','{3}','','');", memberId, activity.Integral, model.SignDate, activity.ActName);
                    dataContext.ExecuteNonQuery(CommandType.Text, logsql);

                    return("{ \"Count\":\"1\",\"text\":\"" + activity.ActName + "\"}");
                }
                else
                {
                    return("{ \"Count\":\"2\",\"text\":\"" + activity.ActName + "\"}");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
示例#7
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);
        }