public virtual List <ContentPost> GetRelatedPosts(ContentPost post)
        {
            List <Tag> tags = post.Tag.List;

            List <int> ids = new List <int>();

            foreach (Tag t in tags)
            {
                List <DataTagShip> list = DataTagShip.find("TagId=" + t.Id + " and TypeFullName=:tname")
                                          .set("tname", typeof(ContentPost).FullName)
                                          .list();

                getPostIds(ids, list, post);
            }

            if (ids.Count == 0)
            {
                return(new List <ContentPost>());
            }

            String strIds = "";

            for (int i = 0; i < ids.Count; i++)
            {
                strIds += ids[i];
                if (i < ids.Count - 1)
                {
                    strIds += ",";
                }
            }

            List <ContentPost> posts = ContentPost.find("Id in (" + strIds + ") and SaveStatus=" + SaveStatus.Normal).list();

            return(posts);
        }
示例#2
0
        public void Show(String tagName)
        {
            bindMyTags();

            set("tagName", tagName);

            set("allLink", to(Index));

            ctx.Page.SetTitle(tagName, "tag");
            ctx.Page.Keywords = tagName;

            Tag tag = Tag.find("Name=:name").set("name", tagName).first();

            DataPage <DataTagShip> list;

            if (tag == null)
            {
                list = DataPage <DataTagShip> .GetEmpty();
            }
            else
            {
                list = DataTagShip.findPage("TagId=" + tag.Id);
            }

            bindResults(list);
        }
示例#3
0
        public virtual void Execute()
        {
            // 4点多执行
            if (DateTime.Now.Hour <= 3 || DateTime.Now.Hour >= 5)
            {
                return;
            }


            List <BlogApp>  blogs  = blogService.GetBlogAppAll();
            List <PhotoApp> photos = photoService.GetAppAll();
            List <Tag>      tags   = Tag.findAll();

            foreach (BlogApp blog in blogs)
            {
                blogService.UpdateCount(blog);
                DbContext.closeConnectionAll(); // 每执行一个app即关闭,以免超时
            }

            foreach (PhotoApp app in photos)
            {
                photoService.UpdateCount(app);
                DbContext.closeConnectionAll();
            }

            foreach (Tag tag in tags)
            {
                int count = DataTagShip.find("Tag.Id=" + tag.Id).count();
                tag.DataCount = count;
                tag.update("DataCount");
                DbContext.closeConnectionAll();
            }


            //// 得到所有用户
            //foreach (User user in users) {

            //    // 根据帖子数,算出积分:按照每帖5分计算
            //    user.Credit = user.PostCount * 5;
            //    db.update( user, "Credit" );

            //    // 更新 UserIncome 表中的中心货币的收入
            //    UserIncomeService incomeService = new UserIncomeService();
            //    UserIncome income = incomeService.GetUserIncome( user.Id, KeyCurrency.Instance.Id );
            //    income.Income = user.Credit;
            //    db.update( income, "Income" );

            //    // 更新等级
            //    int newRankId = roleService.GetRankByCredit( user.Credit ).Id;
            //    if (user.RankId != newRankId) {
            //        user.RankId = newRankId;
            //        db.update( user, "RankId" );
            //    }
            //    DbContext.closeConnectionAll();

            //}
        }
示例#4
0
        public virtual List <DataTagShip> GetRelatedDatas(ContentPost post, int count)
        {
            String tagIds = post.Tag.TagIds;

            if (strUtil.IsNullOrEmpty(tagIds))
            {
                return(new List <DataTagShip>());
            }

            return(DataTagShip.find("TagId in (" + tagIds + ")").list(count));
        }
        private bool containsDataTag(List <DataTagShip> results, DataTagShip dt)
        {
            foreach (DataTagShip d in results)
            {
                if (d.DataId == dt.DataId && d.TypeFullName.Equals(dt.TypeFullName))
                {
                    return(true);
                }
            }

            return(false);
        }
        public virtual List <DataTagShip> GetRelatedDatas(ContentPost post)
        {
            List <Tag> tags = post.Tag.List;

            List <DataTagShip> results = new List <DataTagShip>();

            foreach (Tag t in tags)
            {
                List <DataTagShip> list = DataTagShip.find("TagId=" + t.Id + "").list();
                mergeTagDatas(results, list, post);
            }

            return(results);
        }
示例#7
0
        public virtual void DataList(  )
        {
            load("toolbar", Toolbar);
            set("tagName", ctx.Get("tag"));

            Tag tag = Tag.find("Name=:name").set("name", ctx.Get("tag")).first();

            if (tag == null)
            {
                echo(lang("exDataNotFound"));
                return;
            }

            DataPage <DataTagShip> list = DataTagShip.findPage("TagId=" + tag.Id);

            bindResults(list);
        }
示例#8
0
        public virtual List <ContentPost> GetRelatedPosts(ContentPost post, int count)
        {
            String tagIds = post.Tag.TagIds;

            if (strUtil.IsNullOrEmpty(tagIds))
            {
                return(new List <ContentPost>());
            }

            List <DataTagShip> list = DataTagShip.find("TagId in (" + tagIds + ") and TypeFullName=:tname")
                                      .set("tname", typeof(ContentPost).FullName)
                                      .list(count);

            List <int> ids = new List <int>();

            foreach (DataTagShip x in list)
            {
                if (ids.Contains(x.DataId))
                {
                    continue;
                }
                ids.Add(x.DataId);
            }

            if (ids.Count == 0)
            {
                return(new List <ContentPost>());
            }

            String strIds = "";

            for (int i = 0; i < ids.Count; i++)
            {
                strIds += ids[i];
                if (i < ids.Count - 1)
                {
                    strIds += ",";
                }
            }

            return(GetByIds(strIds));
        }
示例#9
0
        private static void joinTag_Data( Tag tag, IAppData data )
        {
            if (DataTagShip.find( "DataId=:dataId and Tag.Id=:tagId and TypeFullName=:dataType" )
                .set( "dataId", data.Id )
                .set( "tagId", tag.Id )
                .set( "dataType", data.GetType().FullName )
                .count() == 0) {

                DataTagShip ship = new DataTagShip();
                ship.DataId = data.Id;
                ship.TypeFullName = data.GetType().FullName;
                ship.Tag = tag;
                db.insert( ship );
            }
        }
示例#10
0
        private string getRelativePosts(ForumPost data)
        {
            if (data.ParentId > 0)
            {
                return("");
            }
            ForumTopic topic = data.Topic;

            if (topic == null)
            {
                return("");
            }

            String tagIds = topic.Tag.TagIds;

            if (strUtil.IsNullOrEmpty(tagIds))
            {
                return("");
            }

            List <DataTagShip> list = DataTagShip.find("TagId in (" + tagIds + ")").list(21);

            if (list.Count <= 1)
            {
                return("");
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("<div class=\"relative-post\">");
            sb.AppendLine("<div class=\"relative-title\">相关文章</div>");
            sb.AppendLine("<ul>");

            List <IAppData> addList = new List <IAppData>();

            foreach (DataTagShip dt in list)
            {
                if (dt.DataId == topic.Id && dt.TypeFullName == typeof(ForumTopic).FullName)
                {
                    continue;
                }

                EntityInfo ei = Entity.GetInfo(dt.TypeFullName);
                if (ei == null)
                {
                    continue;
                }

                IAppData obj = ndb.findById(ei.Type, dt.DataId) as IAppData;
                if (obj == null)
                {
                    continue;
                }

                if (hasAdded(addList, obj))
                {
                    continue;
                }

                sb.AppendFormat("<li><div><a href=\"{0}\">{1}</a></div></li>", alink.ToAppData(obj), obj.Title);
                sb.AppendLine();

                addList.Add(obj);
            }

            sb.AppendLine("</ul>");
            sb.AppendLine("<div style=\"clear:both;\"></div>");
            sb.AppendLine("</div>");

            return(sb.ToString());
        }
        private bool containsDataTag( List<DataTagShip> results, DataTagShip dt )
        {
            foreach (DataTagShip d in results) {

                if (d.DataId == dt.DataId && d.TypeFullName.Equals( dt.TypeFullName )) return true;

            }

            return false;
        }