/// <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); }
/// <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()); }