Esempio n. 1
0
        public ActionResult EditRecommend(string ID)
        {
            RecommendView re = reManager.FindDetailById(ID);

            return(View(re));
        }
Esempio n. 2
0
        public ActionResult Recommend()
        {
            //根据用户标签获取拥有相似标签的对象,目前每组标签推荐2组,不重复
            UserNumber    me   = db.UserNumbers.Find(User.Identity.Name);
            List <string> labs = new List <string>();

            if (!string.IsNullOrEmpty(me.Labels))
            {
                labs = me.Labels.Split(',').ToList();
            }
            //List<string> labs = me.Labels.Length>0?me.Labels.Split(',').ToList():new List<string>();
            List <UserNumber> users = new List <UserNumber>();
            List <Activities> Acts  = new List <Activities>();
            List <ClubNumber> Clubs = new List <ClubNumber>();
            //Acts = db.Activities.Where(a => a.Label.Split(',').Any(lab => labs.Contains(lab))).Take(6).ToList();
            //Clubs = db.ClubNumbers.Where(a => a.Label.Split(',').Any(lab => labs.Contains(lab))).Take(6).ToList();
            //users = db.UserNumbers.Where(a => a.Labels.Split(',').Any(lab => labs.Contains(lab))).Take(6).ToList();
            List <string> uid = new List <string>();

            uid.Add(me.UserId);//把自己从推荐用户中排除
            List <int>    aid = new List <int>();
            List <string> cid = new List <string>();
            Random        r1  = new Random();

            foreach (string lab in labs)
            {
                int ucount           = db.UserNumbers.Where(u => u.Labels.Contains(lab) && !uid.Contains(u.UserId)).Count();
                int i                = r1.Next(ucount);
                List <UserNumber> us = db.UserNumbers.Where(u => u.State == (int)EnumState.正常 && u.Labels.Contains(lab) && !uid.Contains(u.UserId)).OrderBy(u => u.UserId).Skip(i).Take(2).ToList();
                foreach (UserNumber u0 in us)
                {
                    uid.Add(u0.UserId);
                    users.Add(u0);
                }
                List <Activities> ats = db.Activities.Where(a => a.State == (int)EnumState.正常 && a.Label.Contains(lab) && !aid.Contains(a.Id)).OrderByDescending(a => a.Id).Take(2).ToList();
                foreach (Activities a0 in ats)
                {
                    aid.Add(a0.Id);
                    Acts.Add(a0);
                }
                List <ClubNumber> cs = db.ClubNumbers.Where(c => c.State == (int)EnumState.正常 && c.Label.Contains(lab) && !cid.Contains(c.ClubId)).OrderByDescending(c => c.ClubId).Take(2).ToList();
                foreach (ClubNumber c0 in cs)
                {
                    cid.Add(c0.ClubId);
                    Clubs.Add(c0);
                }
                //UserNumber u1 = db.UserNumbers.Where(u => u.Labels.Contains(lab)&&!uid.Contains(u.UserId)).FirstOrDefault();
                //Activities a1 = db.Activities.Where(a => a.Label.Contains(lab)&&!aid.Contains(a.Id)).OrderByDescending(a => a.Id).FirstOrDefault();
                //ClubNumber c1 = db.ClubNumbers.Where(c => c.Label.Contains(lab) && !cid.Contains(c.ClubId)).OrderByDescending(c => c.ClubId).FirstOrDefault();
                //if (u1 != null)
                //{
                //    uid.Add(u1.UserId);
                //    users.Add(u1);
                //}
                //if (a1 != null)
                //{
                //    aid.Add(a1.Id);
                //    Acts.Add(a1);
                //}
                //if (c1 != null)
                //{
                //    cid.Add(c1.ClubId);
                //    Clubs.Add(c1);
                //}
            }
            RecommendView model = new RecommendView
            {
                Uid    = me.UserId,
                Labels = me.Labels,
                Acts   = Acts,
                Clubs  = Clubs,
                Users  = users
            };

            return(View(model));
        }