コード例 #1
0
ファイル: TagsManager.cs プロジェクト: radtek/yiqixicai
        /// <summary>
        ///     添加标签,返回ID
        ///     如果已经存在,则返回ID
        /// </summary>
        /// <param name="tag"></param>
        /// <returns></returns>
        public int Insert(KL_Tags tag)
        {
            var list = _dataAccess.GetList <KL_Tags>(string.Format(" KL_Tags.TenantId = {0} and KL_Tags.TagName = '{1}'", tag.TenantId, tag.TagName.ReplaceSql()));

            if (list.Count > 0)
            {
                return(list[0].TagId);
            }

            _dataAccess.AddEntity(tag);
            return(tag.TagId);
        }
コード例 #2
0
ファイル: TagsManager.cs プロジェクト: radtek/yiqixicai
        /// <summary>
        /// 获取标签列表,用于显示在用户评价处
        /// 显示默认的和用户选择次数最多的 top 个
        /// </summary>
        /// <param name="tenantId"></param>
        /// <param name="resourceId"></param>
        /// <param name="top"></param>
        /// <param name="showFlag">显示  0:以系统提供为主;1:以数量为主</param>
        /// <returns></returns>
        public List <KL_Tags> GetTagList(int tenantId, int resourceId, int top, int showFlag)
        {
            var list = _dataAccess.GetListBySql <KL_Tags>(string.Format("select *,(select count(0) from KL_ResourceTagUser where tagId = KL_Tags.TagId and ResourceId = {1}) as UsedCount from KL_Tags where KL_Tags.TenantId = {0} and KL_Tags.UserId = 0", tenantId, resourceId)).ToList();

            if (list.Count == 0)
            {
                string[] tags = new string[] { "最新", "专业", "有用", "适合新手", "内容过时", "好多错误", "文不对题" };
                for (int i = 0; i < tags.Length; i++)
                {
                    var tmp = new KL_Tags {
                        TenantId = tenantId, UserId = 0, LastUpdateTime = DateTime.Now, TagName = tags[i]
                    };
                    tmp.TagId = _dataAccess.AddEntity(tmp);
                    list.Add(tmp);
                }
            }
            var result = _dataAccess.GetListBySql <KL_Tags>(string.Format(@"
select top {2} * from (
	select *
	,(select count(0) from KL_ResourceTagUser where tagId = KL_Tags.TagId and ResourceId = {1}) as UsedCount
	from KL_Tags 
	where KL_Tags.TenantId = {0}
) a where UsedCount > 0 order by UsedCount desc", tenantId, resourceId, top)).ToList();

            if (showFlag == 0)
            {
                int i = 0;
                foreach (var item in result)
                {
                    if (list.Any(p => p.TagId == item.TagId))
                    {
                        continue;
                    }
                    i++;
                    list.Add(item);
                    if (i == 3)
                    {
                        break;
                    }
                }
                return(list);
            }
            if (result.Count() < top)
            {
                int i = result.Count();
                foreach (var item in list)
                {
                    if (result.Any(p => p.TagId == item.TagId))
                    {
                        continue;
                    }
                    i++;
                    result.Add(item);
                    if (i == top)
                    {
                        break;
                    }
                }
            }
            return(result.OrderBy(p => p.UserId).ToList());
        }