public static bool SaveCourseTags(int cid, int tagid) { db.ObjectTags.Add(new ObjectTags() { Obj_TagID = tagid, Obj_Type = 32, Obj_ID = cid }); return(db.SaveChanges() > 0 ? true : false); }
//-----------------------------------------------------提交笔记 /// <summary> /// /// </summary> /// <param name="uid"></param> /// <param name="title"></param> /// <param name="content"></param> /// <param name="content_style"></param> /// <param name="tags"></param> /// <returns></returns> public static bool Submit_Note(int uid, string title, string content, string content_style, List <string> tags) { ZZULIEntities ef = GetEntity(); //提交笔记 Notes note = new Notes() { User_ID = uid, N_Title = title, N_Content = content, N_Content_Style = content_style, N_Time = DateTime.Now, N_IsOriginal = true }; ef.Notes.Add(note); ef.SaveChanges(); int nid = note.N_ID; //提交标签 var taglist = ef.Navigations.Where(n => n.Nav_ID > 0); List <string> exits_id = taglist.Select(n => n.Nav_Name).ToList(); tags.ForEach(t => { //如果用户提交的标签不存在,就将该标签添加到数据库 if (!exits_id.Contains(t)) { Navigations nav = new Navigations() { Nav_Name = t, Nav_Type = 3, Nav_UseNum = 1, Ower_ID = 0, Nav_Describe = "", Nav_FollowNum = 0 }; ef.Navigations.Add(nav); ef.SaveChanges(); int tid = nav.Nav_ID; ef.ObjectTags.Add(new ObjectTags() { Obj_ID = nid, Obj_TagID = tid, Obj_Type = 34 }); } else//如果用户提交的标签已经存在,就将标签的使用量加1 { var ta = taglist.Single(tag => tag.Nav_Name == t); ef.ObjectTags.Add(new ObjectTags() { Obj_ID = nid, Obj_TagID = ta.Nav_ID, Obj_Type = 34 }); ta.Nav_UseNum++; } }); //保存用户为笔记设置的标签 return(ef.SaveChanges() > 0 ? true : false); }
public static bool Collect(int target_id, int optionType) { ZZULIEntities ef = GetEntity(); switch (optionType) { case 8: var course = ef.Courses.Where(c => c.Cou_ID == target_id).FirstOrDefault(); course.Cou_CollectNum++; break; case 9: var question = ef.Questions.Where(q => q.Q_ID == target_id).FirstOrDefault(); question.Q_CollectNum++; break; case 10: var note = ef.Notes.Where(n => n.N_ID == target_id).FirstOrDefault(); note.N_CollectNum++; break; default: break; } if (ef.SaveChanges() > 0) { return(true); } else { return(false); } }
/// <summary> /// 取消关注分类 /// </summary> /// <param name="u_id"></param> /// <param name="target_id"></param> /// <returns></returns> public static bool AbortFollow(int u_id, int target_id) { ZZULIEntities ef = GetEntity(); var data = ef.Navigations.Where(n => n.Nav_ID == target_id).FirstOrDefault(); data.Nav_FollowNum--; return(ef.SaveChanges() > 0 ? true : false); }
//记录用户的推荐操作 /// <summary> /// 记录用户的推荐操作 /// </summary> /// <param name="u_id">用户ID</param> /// <param name="target_id">操作对象ID</param> /// <param name="type_id">操作对象类型</param> /// <returns></returns> public static bool Recommend(int u_id, int target_id, int type_id) { UserLikes data = new UserLikes() { User_ID = u_id, UL_Type = type_id, UL_Target = target_id, UL_Time = DateTime.Now }; db.UserLikes.Add(data); return(db.SaveChanges() > 0 ? true : false); }
/// <summary> /// 取消踩 /// </summary> /// <param name="target_id"></param> /// <param name="error"></param> /// <returns></returns> public static bool AbortNotLike(int target_id, int optionType) { ZZULIEntities ef = GetEntity(); bool res = false; switch (optionType) { case 18: //课程 var course = ef.Courses.Where(c => c.Cou_ID == target_id).FirstOrDefault(); course.Cou_NotLikes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateCourseHotByCou_ID(target_id); res = true; } break; case 19: //问题回复 var answer = ef.Answers.Where(a => a.A_ID == target_id).FirstOrDefault(); answer.A_NotLikes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateQuestionHotByQ_ID(target_id); res = true; } break; case 20: //笔记 var note = ef.Notes.Where(n => n.N_ID == target_id).FirstOrDefault(); note.N_NotLikes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateNoteHotByN_ID(target_id); res = true; } break; default: res = false; break; } return(res); }
//-----------------------------------------------------回复问题的回复 public static bool Submit_QuestionAnswerOfAnswer(int uid, int qid, int aid, string content) { ZZULIEntities ef = GetEntity(); ef.Answers.Add(new Answers() { User_ID = uid, Q_ID = qid, A_Target = aid, A_Content = content, A_Time = DateTime.Now }); return(ef.SaveChanges() > 0 ? true : false); }
//-----------------------------------------------------提交笔记评论 public static bool Submit_NoteComment(int uid, int nid, string content) { ZZULIEntities ef = GetEntity(); ef.NotesComments.Add(new NotesComments() { N_ID = nid, User_ID = uid, NC_Content = content, NC_Time = DateTime.Now }); return(ef.SaveChanges() > 0 ? true : false); }
//-----------------------------------------------------提交课程问题 public static bool Submit_CourseQuestion(int uid, int cid, int mid, string title, string content) { ZZULIEntities ef = GetEntity(); ef.CoursesQuestions.Add(new CoursesQuestions() { User_ID = uid, Cou_ID = cid, Mov_ID = mid, CQ_Title = title, CQ_Content = content, CQ_Time = DateTime.Now }); return(ef.SaveChanges() > 0 ? true : false); }
//______________________________________________________课程评论 /// <summary> /// 提交课程评论 /// </summary> /// <param name="uid">用户ID</param> /// <param name="couid">课程ID</param> /// <param name="movid">章节ID</param> /// <param name="content">评论内容</param> /// <returns></returns> public static bool Submit_CourseComment(int uid, int couid, int movid, string content) { ZZULIEntities ef = GetEntity(); CoursesComment cc = new CoursesComment() { User_ID = uid, Cou_ID = couid, Mov_ID = movid, CCom_Content = content, CCom_Likes = 0, CCom_Time = DateTime.Now }; ef.CoursesComment.Add(cc); return(ef.SaveChanges() > 0 ? true : false); }
//______________________________________________________课程笔记 public static bool Submit_CourseNote(int uid, int couid, int movid, string content) { ZZULIEntities ef = GetEntity(); CoursesNotes cn = new CoursesNotes() { User_ID = uid, Cou_ID = couid, Mov_ID = movid, CN_Content = content, CN_Time = DateTime.Now }; ef.CoursesNotes.Add(cn); return(ef.SaveChanges() > 0 ? true : false); }
/// <summary> /// 记录用户的浏览行为 /// </summary> /// <param name="uid">用户id,如果用户尚未登录,则为-1</param> /// <param name="target">浏览的对象</param> /// <param name="optionType">浏览对象的类型</param> public static bool PageView(int target, int optionType, int uid = 0) { ZZULIEntities ef = GetEntity(); if (uid == 0) { ef.UserPageViews.Add(new UserPageViews() { UPV_Target = target, UPV_Type = optionType, UPV_Time = DateTime.Now }); } else { ef.UserPageViews.Add(new UserPageViews() { UPV_Target = target, UPV_Type = optionType, User_ID = uid, UPV_Time = DateTime.Now }); } return(ef.SaveChanges() > 0 ? true : false); }
/// <summary> /// 修改浏览量的值 /// </summary> /// <param name="target"></param> /// <param name="optionType"></param> /// <returns></returns> public static bool ModifyPageView(int target, int optionType) { ZZULIEntities ef = GetEntity(); switch (optionType) { case 1: //浏览课程 break; case 2: //浏览问题 var question = ef.Questions.Where(q => q.Q_ID == target).FirstOrDefault(); question.Q_PageViews++; break; case 3: //浏览笔记 var note = ef.Notes.Where(n => n.N_ID == target).FirstOrDefault(); note.N_PageViews++; break; default: break; } return(ef.SaveChanges() > 0 ? true : false); }
public static bool AbortCollect(int target_id, int optionType) { ZZULIEntities ef = GetEntity(); var data = ef.UserCollections.Where(u => u.UC_Target == target_id && u.UC_Type == optionType && u.User_ID == Common.UserInfo.User_ID).FirstOrDefault(); ef.UserCollections.Remove(data); switch (optionType) { case 8: var course = ef.Courses.Where(c => c.Cou_ID == target_id).FirstOrDefault(); course.Cou_CollectNum--; break; case 9: var question = ef.Questions.Where(q => q.Q_ID == target_id).FirstOrDefault(); question.Q_CollectNum--; break; case 10: var note = ef.Notes.Where(n => n.N_ID == target_id).FirstOrDefault(); note.N_CollectNum--; break; default: break; } if (ef.SaveChanges() > 0) { return(true); } else { return(false); } }
//[Route("upload")] public ActionResult uploadbigfile() { //前端传输是否为切割文件最后一个小文件 var isLast = System.Web.HttpContext.Current.Request["isLast"]; //前端传输当前为第几次切割小文件 var count = System.Web.HttpContext.Current.Request["count"]; //获取前端处理过的传输文件名 string fileName = System.Web.HttpContext.Current.Request["name"]; //存储接受到的切割文件 HttpPostedFile file = System.Web.HttpContext.Current.Request.Files[0]; //获取重传次数 var retransNum_Part = System.Web.HttpContext.Current.Request["retransNum_Part"]; //处理文件名称(去除.part*,还原真实文件名称) string newFileName = fileName.Substring(0, fileName.LastIndexOf('.')); //获取临时文件夹、压缩包文件、解压文件夹的路径 string tempUrl = Server.MapPath(@"\upload\temp\"); string videoUrl = Server.MapPath(@"\video\"); //判断指定目录是否存在临时存储文件夹,没有就创建 if (!System.IO.Directory.Exists(tempUrl + "\\" + newFileName)) { //不存在就创建目录 System.IO.Directory.CreateDirectory(tempUrl + "\\" + newFileName); } if (file == null) { return(Json("{'status':'2','statusText':'" + "分片文件保存失败!" + "','partIndex':'" + count + "','retransNum_Part':'" + retransNum_Part + "'}")); } try { //存储文件 file.SaveAs(tempUrl + "\\" + newFileName + "\\" + fileName); } catch { if (Convert.ToInt32(retransNum_Part) >= 3) { Upload.ClearErrorFile(0, newFileName, tempUrl, Server.MapPath(@"\upload\zip\"), Server.MapPath(@"\upload\unzip\"), videoUrl); } return(Json("{'status':'2','statusText':'" + "分片文件保存失败!" + "','partIndex':'" + count + "','retransNum_Part':'" + retransNum_Part + "'}")); } //判断是否为最后一次切割文件传输 int cid = 0; int errorNum = 0; bool res = false; if (isLast == "true") { //课程名称 var couName = System.Web.HttpContext.Current.Request["Cou_Name"]; //课程介绍 var couDescribe = System.Web.HttpContext.Current.Request["Cou_Describe"]; //课程标签 int couTag = Convert.ToInt32(System.Web.HttpContext.Current.Request["Cou_Tag"]); int num = System.Web.HttpContext.Current.Request.Files.Count; HttpPostedFile image = System.Web.HttpContext.Current.Request.Files[1]; //获取重传次数 var retransNum = System.Web.HttpContext.Current.Request["retransNum"]; string zipUrl = Server.MapPath(@"\upload\zip\"); string unzipUrl = Server.MapPath(@"\upload\unzip\"); //将课程的信息保存到数据库中,此时课程的状态为正在上传,用户不可以查看和学习该课程 cid = Upload.SaveCourseInfo(couName, couDescribe); while (cid <= 0 && errorNum < 3) { cid = Upload.SaveCourseInfo(couName, couDescribe); errorNum++; } if (cid <= 0) { return(Json("{'status':'3','statusText':'" + "保存课程信息失败!" + "'}")); } errorNum = 0; //将分片文件,组合成上传的压缩包源文件 res = Upload.ComposeFile(cid, newFileName, zipUrl, tempUrl); while (!res && errorNum < 3) { res = Upload.ComposeFile(cid, newFileName, zipUrl, tempUrl); errorNum++; } if (!res) { Upload.ClearErrorFile(cid, newFileName, tempUrl, zipUrl, unzipUrl, videoUrl); return(Json("{'status':'4','statusText':'" + "文件合成失败!" + "'}")); } errorNum = 0; res = false; //解压课程文件 res = Upload.UnZip(cid, newFileName, zipUrl + cid + ".zip", unzipUrl); while (!res && errorNum < 3) { res = Upload.ComposeFile(cid, newFileName, zipUrl + cid + ".zip", unzipUrl); errorNum++; } if (!res) { return(Json("{'status':'5','statusText':'" + "文件解压失败!" + "'}")); } errorNum = 0; res = false; //检查文件是否是有效的文件 res = Upload.CheckCourseFile(unzipUrl + cid); if (!res) { Upload.ClearErrorFile(cid, newFileName, tempUrl, zipUrl, unzipUrl, videoUrl); return(Json("{'status':'6','statusText':'" + "该文件不符合上传要求!" + "'}")); } errorNum = 0; res = false; //将课程的章节放到video对应目录下,并将章节信息写入数据库,并将数据库中课程对应的状态为已上传,允许用户访问 res = Upload.SaveChapterSectionInfo(cid, unzipUrl + cid, Server.MapPath(@"\video\")); while (!res && errorNum < 3) { res = Upload.SaveChapterSectionInfo(cid, unzipUrl + cid, videoUrl); errorNum++; } if (!res) { return(Json("{'status':'7','statusText':'" + "课程章节信息保存失败!" + "'}")); } errorNum = 0; res = false; var course = db.Courses.Where(c => c.Cou_ID == cid).FirstOrDefault(); course.Is_UpLoading = false; db.SaveChanges(); //将课程的标签保存到数据库中 res = Upload.SaveCourseTags(cid, couTag); while (!res && errorNum < 3) { res = Upload.SaveCourseTags(cid, couTag); errorNum++; } if (!res) { return(Json("{'status':'8','statusText':'" + "课程标签保存失败!" + "'}")); } errorNum = 0; res = false; //保存课程图片 res = Upload.SaveCourseImage(cid, image, Server.MapPath(@"\images\course\") + cid + ".png"); if (res == null) { return(Json("{'status':'9','statusText':'" + "课程图片保存失败!" + "','retransNum':'" + retransNum + "'}")); } while (!res && errorNum < 3) { res = Upload.SaveCourseImage(cid, image, Server.MapPath(@"\images\course\") + cid + ".png"); errorNum++; } if (!res) { Upload.ClearErrorFile(cid, newFileName, tempUrl, zipUrl, unzipUrl, videoUrl); return(Json("{'status':'9','statusText':'" + "课程图片保存失败!" + "'}")); } } return(Json("{'status':'1','statusText':'" + cid + "'}")); //return int.Parse(count) + 1; }
/// <summary> /// 向数据库中添加一条数据 /// </summary> /// <param name="model">要添加数据的实体对象</param> /// <returns></returns> public int Add(T model) { EF.Set <T>().Add(model); return(EF.SaveChanges()); }
public void Test() { ZZULIEntities ZZUL = new ZZULIEntities(); #region 重置数据库 using (ZZULIEntities ZZU = new ZZULIEntities()) { var na = ZZU.Database.ExecuteSqlCommand("truncate table UserAry"); var nl = ZZU.Database.ExecuteSqlCommand("truncate table NewAry"); ZZU.SaveChanges(); } #endregion var UID = ZZUL.PR_UserID().ToArray(); //获取所有用户ID var AID = ZZUL.PR_AllID().ToArray(); //获取浏览、推荐、收藏用户ID var LID = ZZUL.PR_learnID().ToArray(); //获取学习课程用户ID var CID = ZZUL.PR_CouID().ToArray(); //获取所有课程所属标签ID #region 原始矩阵 #region 学习 //查找用户的学习记录,如果有 5分 if (LID.Length > 0) { for (int i = 0; i < LID.Length; i++) //控制用户 { for (int j = 0; j < CID.Length; j++) //控制课程 { var num = ZZUL.PR_Learn(LID[i], CID[j]).ToArray(); //判断用户是否学习过该课程 if (num[0] > 0) { ZZUL.PR_UserAry(LID[i], CID[j], 5); //将用户ID,课程ID,分数增加到UserAry中 continue; } } } ZZUL.SaveChanges(); } #endregion #region 收藏、推荐、浏览 //先查找用户在改标签是否学习过,如果有结束,如果没在进行判断收藏4,,推荐3,浏览1 int sum; //操作类型 if (AID.Length != 0) //判断是否有数据 { for (int i = 0; i < AID.Length; i++) //控制用户 { for (int j = 0; j < CID.Length; j++) { sum = 0; var num = ZZUL.PR_Learn(AID[i], CID[j]).ToArray(); if (num[0] > 0) //判断用户是否学习过该课程 { continue; } else { var n = ZZUL.PR_ALL(AID[i], CID[j]).ToArray(); //如果用户进行过收藏、浏览、推荐,返回推荐类型 if (n.Length > 0) //判断用户是否进行过推荐收藏、浏览、推荐 { for (int p = 0; p < n.Length; p++) { sum += Convert.ToInt32(n[p]); } switch (sum) { case 20: //该用户对该课程都进行过浏览、推荐、收藏,取最高分收藏 case 19: //该用户对该课程进行过推荐、收藏,取最高分收藏 case 9: //该用户对该课程进行过浏览、收藏,取最高分收藏 case 8: ZZUL.PR_UserAry(AID[i], CID[j], 4); break; //8代表收藏 4分 case 12: //该用户对该课程进行过浏览、推荐、取最高分推荐 case 11: ZZUL.PR_UserAry(AID[i], CID[j], 3); break; //推荐 3分 case 1: ZZUL.PR_UserAry(AID[i], CID[j], 1); break; //浏览一分 } } else { ZZUL.PR_UserAry(AID[i], CID[j], 0); //用户未对该课程进行过任何操作,0 } } } } } ZZUL.SaveChanges(); //有些用户只进行过学习操作,则需要下面循环来给0分 for (int i = 0; i < LID.Length; i++) //控制用户 { for (int j = 0; j < CID.Length; j++) //控制课程 { var num = ZZUL.PR_SelAll(LID[i], CID[j]).ToArray(); if (num.Length == 0) { ZZUL.PR_UserAry(LID[i], CID[j], 0); } } } ZZUL.SaveChanges(); #endregion #endregion #region 矩阵分解 var U = ZZUL.PR_SelectAll().GroupBy(G => G.User_ID).Select(G => G.Key).ToArray();//查找原始矩阵中的所有用户ID var list = ZZUL.PR_SelectAll().ToList(); List <List <double> > shu = new List <List <double> >(); for (int p = 0; p < U.Length; p++) { List <double> a = new List <double>(); foreach (var i in list) { if (i.User_ID == U[p]) { a.Add(Convert.ToDouble(i.Ary_Sco)); } } shu.Add(a); } Matix_Decompose matrix = new Matix_Decompose(UID.Length, CID.Length); matrix.get_Matrix(shu); #endregion #region 将分解后的矩阵写会数据库 double[,] NewArr = new double[U.Length, CID.Length]; NewArr = matrix.GetR(); //得到分解后的矩阵 var ArrID = ZZUL.PR_SelectAll().GroupBy(G => G.User_ID).Select(G => G.Key).ToArray(); for (int i = 0; i < U.Length; i++) { for (int j = 0; j < CID.Length; j++) { ZZUL.PR_NewAry(U[i], CID[j], NewArr[i, j]); } } ZZUL.SaveChanges(); #endregion }
/// <summary> /// 取消点赞 /// </summary> /// <param name="target_id"></param> /// <param name="error"></param> /// <returns></returns> public static bool AbortLike(int target_id, int optionType) { ZZULIEntities ef = GetEntity(); bool res = false; switch (optionType) { case 11: //课程 var course = ef.Courses.Where(cou => cou.Cou_ID == target_id).FirstOrDefault(); course.Cou_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateCourseHotByCou_ID(target_id); res = true; } break; case 12: //课程评论 var ccom = ef.CoursesComment.Where(cc => cc.CCom_ID == target_id).FirstOrDefault(); ccom.CCom_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateCourseHotByCou_ID(target_id); res = true; } break; case 13: //课程问题回复 var couA = ef.CoursesAnswers.Where(ca => ca.CA_ID == target_id).FirstOrDefault(); couA.CA_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateCourseQuestionHot(target_id); res = true; } break; case 14: //课程笔记 var couN = ef.CoursesNotes.Where(cn => cn.CN_ID == target_id).FirstOrDefault(); couN.CN_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateCourseNoteHot(target_id); res = true; } break; case 15: //问题回复 var answer = ef.Answers.Where(a => a.A_ID == target_id).FirstOrDefault(); answer.A_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateQuestionHotByQ_ID(target_id); res = true; } break; case 16: //笔记 var note = ef.Notes.Where(n => n.N_ID == target_id).FirstOrDefault(); note.N_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateNoteHotByN_ID(target_id); res = true; } break; case 17: //笔记评论 var ncom = ef.NotesComments.Where(nc => nc.NC_ID == target_id).FirstOrDefault(); ncom.NC_Likes--; if (ef.SaveChanges() > 0) { ef.SP_UpdateNoteHotByN_ID(target_id); res = true; } break; default: break; } return(res); }