using Edu.AOP.CustomerAttribute; using Edu.Common; using Edu.Common.Enum; using Edu.Common.Enum.Mall; using Edu.Common.Plugin; using Edu.Model.Entity.Mall; using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Mall; using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Question; using Edu.Model.ViewModel.User; using Edu.Repository.Course; using Edu.Repository.Question; using Edu.Repository.User; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using VT.FW.DB; using Edu.Repository.Grade; namespace Edu.Module.Course { /// /// 课程处理类 /// public class CourseModule { /// /// 课程章节仓储层对象 /// private readonly RB_Course_ChapterRepository chapterRepository = new RB_Course_ChapterRepository(); /// /// 课程讨论仓储层对象 /// private readonly RB_Course_DiscussRepository discussRepository = new RB_Course_DiscussRepository(); /// /// 课程通知仓储层对象 /// private readonly RB_Course_NoticeRepository noticeRepository = new RB_Course_NoticeRepository(); /// /// 课程通知接收仓储层对象 /// private readonly RB_Course_NoticeReviceRepository noticeReviceRepository = new RB_Course_NoticeReviceRepository(); /// /// 课程设置仓储层对象 /// private readonly RB_Course_SettingRepository settingRepository = new RB_Course_SettingRepository(); /// /// 课程资料仓储层对象 /// private readonly RB_Course_SourceRepository sourceRepository = new RB_Course_SourceRepository(); /// /// 课程教案仓储层对象 /// private readonly RB_Course_TeachPlanRepository teachPlanRepository = new RB_Course_TeachPlanRepository(); /// /// 课程处理仓储层对象 /// private readonly RB_CourseRepository courseRepository = new RB_CourseRepository(); /// /// 课程作业仓储层对象 /// private readonly RB_Course_JobRepository courseJobRepository = new RB_Course_JobRepository(); /// /// 课程作业详情仓储层对象 /// private readonly RB_Course_JobDetailsRepository course_JobDetailsRepository = new RB_Course_JobDetailsRepository(); /// /// 课程分类处理类 /// private readonly CourseCategoryModule courseCategoryModule = new CourseCategoryModule(); /// /// 课程阶梯价格仓储层对象 /// private readonly RB_Course_StepPriceRepository course_StepPriceRepository = new RB_Course_StepPriceRepository(); /// /// 课程优惠仓储层对象 /// private readonly RB_Course_PreferentialRepository course_PreferentialRepository = new RB_Course_PreferentialRepository(); /// /// 讲师管理仓储层对象 /// private readonly RB_TeacherRepository teacherRepository = new RB_TeacherRepository(); /// /// 问题仓储层对象 /// private readonly RB_QuestionRepository questionRepository = new RB_QuestionRepository(); /// /// 班级仓储层对象 /// private readonly RB_ClassRepository classRepository = new RB_ClassRepository(); /// /// 班级基础配置仓储层对象 /// private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository(); /// /// 非法用户信息 /// private readonly RB_Class_Time_UnKnowRepository unKnowRepository = new RB_Class_Time_UnKnowRepository(); /// /// 小程序对应的商品仓储对象 /// private readonly Repository.Mall.RB_GoodsRepository mallGoodsRepository = new Repository.Mall.RB_GoodsRepository(); /// /// 小程序对应的商品分类仓储对象 /// private readonly Repository.Mall.RB_Goods_CategoryRepository MallGoodsCategoryRepository = new Repository.Mall.RB_Goods_CategoryRepository(); /// /// 小程序对应的商品优惠仓储对象 /// private readonly Repository.Mall.RB_Goods_PreferentialRepository MallGoodsPreferentialRepository = new Repository.Mall.RB_Goods_PreferentialRepository(); /// /// 商品规格 /// private readonly Repository.Mall.RB_Goods_SpecificationRepository goods_SpecificationRepository = new Repository.Mall.RB_Goods_SpecificationRepository(); /// /// 商品规格值 /// private readonly Repository.Mall.RB_Goods_SpecificationValueRepository goods_SpecificationValueRepository = new Repository.Mall.RB_Goods_SpecificationValueRepository(); /// /// 商品规格价格 /// private readonly Repository.Mall.RB_Goods_SpecificationPriceRepository goods_SpecificationPriceRepository = new Repository.Mall.RB_Goods_SpecificationPriceRepository(); #region 课程管理 public List GetAllCourseChapterCountModule(int groupId, int courseId) { return courseRepository.GetCourseAllChapterCount(groupId, courseId) ?? new List(); } /// /// 获取课程列表 /// /// /// public List GetCourseListModule(RB_Course_ViewModel query) { var list = courseRepository.GetCourseListRepository(query); if (query.IsQPrice == 1 && list != null && list.Count > 0) { var ids = string.Join(",", list.Select(qitem => qitem.CourseId)); var preferentialList = course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend() { QCourseIds = ids }); foreach (var item in list) { item.PreferentialList = preferentialList?.Where(qitem => qitem.CourseId == item.CourseId)?.OrderBy(qitem => qitem.PriceDiscountType)?.ToList() ?? new List(); } } return list; } /// /// 获取课程分页列表 /// /// /// /// /// /// public List GetCoursePageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_ViewModel query) { if (!string.IsNullOrWhiteSpace(query.QCateIds) && query.QCateIds != "0") { string cateIds = courseCategoryModule.GetChildCategoryStringModule(query.QCateIds); if (!string.IsNullOrWhiteSpace(cateIds)) { query.QCateIds = cateIds; } } var list = courseRepository.GetCoursePageListRepository(pageIndex, pageSize, out rowsCount, query); if (list != null && list.Count > 0) { var ids = string.Join(",", list.Select(qitem => qitem.CourseId)); var preferentialList = new List(); List teacherList = new List(); if (query.IsQPrice == 1) { preferentialList = course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend() { QCourseIds = ids }); } if (query.IsQTeacher == 1) { var teacherids = string.Join(",", list.Where(qitem => !string.IsNullOrEmpty(qitem.Teacher_Ids)).Select(qitem => qitem.Teacher_Ids)); teacherList = teacherRepository.GetTeacherListRepository(new RB_Teacher_ViewModel() { QTIds = teacherids }); } foreach (var item in list) { item.PreferentialList = preferentialList?.Where(qitem => qitem.CourseId == item.CourseId)?.OrderBy(qitem => qitem.PriceDiscountType)?.ToList() ?? new List(); item.TeacherList = new List(); if (item.TeacherIdList != null && item.TeacherIdList.Count > 0) { foreach (var subItem in item.TeacherIdList) { var teacher = teacherList?.Where(qitem => qitem.TId == subItem)?.FirstOrDefault(); if (teacher != null && teacher.TId > 0) { item.TeacherList.Add(teacher); } } } } } return list; } /// /// 根据课程编号获取课程实体 /// /// /// 是否获取优惠信息 /// public RB_Course_ViewModel GetCourseModule(object CourseId, int IsGetDiscount = 0) { var extModel = courseRepository.GetEntity(CourseId); if (extModel != null && extModel.CourseId > 0) { var stepPriceList = course_StepPriceRepository.GetCourseStepPriceListRepository(new RB_Course_StepPrice_ViewModel() { CourseId = extModel.CourseId }); extModel.StepPriceList = stepPriceList ?? new List(); if (IsGetDiscount == 1) { var coursePreferentiaList = GetCoursePreferentialListModule(new RB_Course_Preferential_Extend() { CourseId = extModel.CourseId }); extModel.PreferentialList = coursePreferentiaList ?? new List(); } if (extModel.MallGoodsId > 0)//小程序端查询出当前商品对应的分类 { extModel.CategoryList = new List(); var clist = MallGoodsCategoryRepository.GetList(new RB_Goods_Category_Extend() { GoodsId = extModel.MallGoodsId, TenantId = Convert.ToInt32(Config.JHTenantId), MallBaseId = Convert.ToInt32(Config.JHMallBaseId) }); extModel.CategoryList = clist; } } return extModel; } /// /// 新增修改课程 /// /// public virtual bool SetCourseModule(RB_Course_ViewModel model) { bool flag; if (model.IsRenew == 0) { model.RenewOgPrice = 0; model.RenewSlPrice = 0; } if (model.CourseId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_ViewModel.CoverImg),model.CoverImg }, {nameof(RB_Course_ViewModel.CourseName),model.CourseName }, {nameof(RB_Course_ViewModel.CourseIntro),model.CourseIntro }, {nameof(RB_Course_ViewModel.CateId),model.CateId }, {nameof(RB_Course_ViewModel.UpdateBy),model.UpdateBy }, {nameof(RB_Course_ViewModel.UpdateTime),model.UpdateTime }, {nameof(RB_Course_ViewModel.Teacher_Ids),model.Teacher_Ids }, {nameof(RB_Course_ViewModel.CourseFeature),model.CourseFeature }, {nameof(RB_Course_ViewModel.IsOpenStepPrice),model.IsOpenStepPrice }, {nameof(RB_Course_ViewModel.IsRenew),model.IsRenew }, {nameof(RB_Course_ViewModel.RenewOgPrice),model.RenewOgPrice }, {nameof(RB_Course_ViewModel.RenewSlPrice),model.RenewSlPrice }, {nameof(RB_Course_ViewModel.Saleplat),model.Saleplat }, {nameof(RB_Course_ViewModel.IsKCourse),model.IsKCourse }, {nameof(RB_Course_ViewModel.ClassHours),model.ClassHours }, {nameof(RB_Course_ViewModel.CourseRate),model.CourseRate }, }; flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), model.CourseId)); } else { var newId = courseRepository.Insert(model); model.CourseId = newId; flag = newId > 0; } if (model.SalePlatList != null && model.SalePlatList.Any(x => x == 4))//上架小程序端,则要同步到小程序 { int GoodsId = SetMallGoods(model);//新增字段保存返回电商商品ID Dictionary fileds = new Dictionary() { {nameof(RB_Course_ViewModel.MallGoodsId),GoodsId }, }; flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), model.CourseId)); } if (model.MallGoodsId > 0 && !model.SalePlatList.Any(x => x == 4))//之前上架了小程序端,现在取消了则下架商品 { Dictionary fileds = new Dictionary() { {nameof(RB_Goods.GoodsStatus),2 }, }; flag = mallGoodsRepository.Update(fileds, new WhereHelper(nameof(RB_Goods.Id), model.MallGoodsId)); } return flag; } /// /// 是否显示章节编号 /// /// /// 是否显示章节编号(1-显示,0-不显示) /// public bool SetCourseIsShowChapterNoModule(int CourseId, int IsShowChapterNo) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_ViewModel.IsShowChapterNo),IsShowChapterNo }, }; bool flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), CourseId)); return flag; } /// /// 设置课程教师 /// /// /// 教师编号 /// public bool SetCourseTeacherModule(int CourseId, int Teacher_Id) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_ViewModel.Teacher_Ids),Teacher_Id }, }; bool flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), CourseId)); return flag; } /// /// 修改课程状态 /// /// /// 1-删除,0-启用 /// /// public bool RemoveCourseModule(int CourseId, int Status, out string message) { message = ""; var classList = classRepository.GetClassListRepository(new RB_Class_ViewModel() { CouseId = CourseId }); if (classList != null && classList.Count > 0) { message = "此课程下存在正常的班级信息,不能删除!"; return false; } Dictionary fileds = new Dictionary() { {nameof(RB_Course_ViewModel.Status),Status}, }; bool flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), CourseId)); return flag; } #endregion #region 课程通知管理 /// /// 获取课程通知分页列表 /// /// /// /// /// /// public List GetNoticePageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_Notice_ViewModel query) { return noticeRepository.GetNoticePageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 新增修改课程通知 /// /// /// public bool SetNoticeModule(RB_Course_Notice_ViewModel model) { bool flag; if (model.NoticeId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Notice_ViewModel.Title),model.Title } }; flag = noticeRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Notice_ViewModel.NoticeId), model.NoticeId)); } else { var newId = noticeRepository.Insert(model); model.NoticeId = newId; flag = newId > 0; } return flag; } /// /// 获取课程通知实体 /// /// /// public RB_Course_Notice_ViewModel GetNoticeModule(object NoticeId) { return noticeRepository.GetEntity(NoticeId); } /// /// 根据通知编号删除通知 /// /// /// public bool RemoveNoticeModule(object NoticeId) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Notice_ViewModel.Status), (int)DateStateEnum.Delete} }; bool flag = noticeRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Notice_ViewModel.NoticeId), NoticeId)); return flag; } /// /// 新增通知阅读 /// /// /// public bool AddNoticeReviceModule(RB_Course_NoticeRevice_ViewModel model) { var newId = noticeReviceRepository.Insert(model); model.ReviceId = newId; return newId > 0; } #endregion #region 课程章节管理 /// /// 获取课程章节列表 /// /// /// public List GetChapterListModule(RB_Course_Chapter_ViewModel query) { return chapterRepository.GetChapterListRepository(query); } public List SetImportChapterModule(RB_Course_Chapter_ViewModel query) { var result = GetChapterTreeListModule(query); int maxLength = query.MaxLength; string[] ids = query.CourseIds.Split(',', System.StringSplitOptions.RemoveEmptyEntries); foreach (var item in ids) { var temp = result.Where(x => x.CourseId.ToString().Equals(item)).ToList(); var array = new List(); temp.ForEach(x => { maxLength++; x.ChapterNo = maxLength.ToString(); x.ChapterName = FormatNum(x.ChapterName, maxLength); int pid = GenernalNewChapterNode(x, query); x.ChapterId = pid; x.ChildList = x.ChildList != null && x.ChildList.Count > 0 ? ReChangeChapterNo(x.ChildList, maxLength, pid, query) : new List(); }); } SetBatchAllChapterCurrentHoursModule(query.NewCourseId); return result; } public List ReChangeChapterNo(List list, int parentNo, int parentId, RB_Course_Chapter_ViewModel query) { list.ForEach(x => { var oldNo = x.ChapterNo.Split('.'); oldNo[0] = parentNo.ToString(); x.ChapterNo = string.Join(".", oldNo); //x.ChapterName = FormatNum(x.ChapterName, parentNo); x.ParentId = parentId; int pid = GenernalNewChapterNode(x, query); x.ChapterId = pid; x.ChildList = ReChangeChapterNo(x.ChildList, parentNo, pid, query); }); return list; } public int GenernalNewChapterNode(ChapterTree_ViewModel model, RB_Course_Chapter_ViewModel query) { RB_Course_Chapter_ViewModel newModel = new RB_Course_Chapter_ViewModel() { ChapterContent = model.ChapterContent, ChapterId = 0, ChapterName = model.ChapterName, ChapterNo = model.ChapterNo, CourseId = query.NewCourseId, CourseRate = model.CourseRate, CreateBy = query.CreateBy, CreateTime = DateTime.Now, CurrentHours = model.CurrentHours, Group_Id = query.Group_Id, Objectives = model.Objectives, OpenStatus = model.OpenStatus, ParentId = model.ParentId, Requirement = model.Requirement, School_Id = query.School_Id, Status = DateStateEnum.Normal, StudyHours = model.StudyHours, StudyMinutes = model.StudyMinutes }; SetChapterModule(newModel); return newModel.ChapterId; } /// /// 重新生成单元标题序号 /// /// public string FormatNum(string name, int length) { Regex regex = new Regex(@"(?<=第)(.*?)(?=单|次|课|章|节)"); string temp = regex.Match(name).Value; if (!string.IsNullOrEmpty(temp)) { var newTemp = new WordToNumHelper().NumToChinese(length.ToString()); name = name.Replace(temp, newTemp); } return name; } /// /// 获取课程章节树形列表 /// /// /// public List GetChapterTreeListModule(RB_Course_Chapter_ViewModel query) { var list = GetChapterListModule(query); list.ForEach(x => { x.SerialNumber = int.Parse(x.ChapterNo.Replace(".", "")); }); List treeList = GetChapterChild(list, 0); return treeList; } public List GetMatchHoursChapterModule(int courseId, double currentHours) { var list = chapterRepository.GetMatchHoursChapterRepository(courseId, currentHours); list.ForEach(x => { x.SerialNumber = int.Parse(x.ChapterNo.Replace(".", "")); }); List treeList = GetChapterChild(list, 0); return treeList; } /// /// 查询符合的课程章节 /// /// /// /// public List GetMatchChapterRepository(int courseId, string currentHours) { var list = chapterRepository.GetMatchChapterRepository(courseId, currentHours); list.ForEach(x => { x.SerialNumber = int.Parse(x.ChapterNo.Replace(".", "")); }); List treeList = GetChapterChild(list, 0); return treeList; } /// /// 递归遍历所有章节 /// /// 源数据 /// 父节点编号 /// public List GetChapterChild(List sourceList, int parentId) { List resultList = new List(); //获取下级节点 var subList = sourceList?.Where(qItem => qItem.ParentId == parentId).OrderBy(qitem => qitem.SerialNumber).ToList(); //如果存在下级节点 if (subList != null && subList.Count > 0) { foreach (var childItem in subList) { var childModel = new ChapterTree_ViewModel() { ChapterId = childItem.ChapterId, ParentId = childItem.ParentId, ChapterContent = childItem.ChapterContent, ChapterName = childItem.ChapterName, ChapterNo = childItem.ChapterNo, CourseId = childItem.CourseId, ChildList = new List(), OpenStatus = childItem.OpenStatus, Progress = childItem.Progress, StudyHours = childItem.StudyHours, Objectives = childItem.Objectives, Requirement = childItem.Requirement, CourseRate = childItem.CourseRate, StudyMinutes = childItem.StudyMinutes, CurrentHours = childItem.CurrentHours, CourseRateName = EnumHelper.ToName(childItem.CourseRate) }; childModel.ChildList.AddRange(GetChapterChild(sourceList, childItem.ChapterId)); resultList.Add(childModel); } } return resultList; } public bool SetBatchAllChapterCurrentHoursModule(int courseId) { RB_Course_Chapter_ViewModel query = new RB_Course_Chapter_ViewModel() { CourseId = courseId }; var result = GetChapterTreeListModule(query); List list = new List(); var currentHours = 0.00; result.ForEach(x => { if (x.ChildList != null && x.ChildList.Count > 0) { list.Add(new RB_Course_Chapter_ViewModel() { ChapterId = x.ChapterId, CurrentHours = -1.00 }); x.ChildList.ForEach(y => { if (y.StudyHours > 0) { list.Add(new RB_Course_Chapter_ViewModel() { ChapterId = y.ChapterId, CurrentHours = currentHours }); currentHours += y.StudyHours; } else { list.Add(new RB_Course_Chapter_ViewModel() { ChapterId = y.ChapterId, CurrentHours = -1.00 }); } }); } else { if (x.StudyHours > 0) { list.Add(new RB_Course_Chapter_ViewModel() { ChapterId = x.ChapterId, CurrentHours = currentHours }); currentHours += x.StudyHours; } else { list.Add(new RB_Course_Chapter_ViewModel() { ChapterId = x.ChapterId, CurrentHours = -1 }); } } }); return chapterRepository.SetBatchCurrentHoursRepository(list); } /// /// 新增修改课程章节 /// /// public bool SetChapterModule(RB_Course_Chapter_ViewModel model) { bool flag; if (model.StudyMinutes > 0) { model.StudyHours = model.StudyMinutes / Convert.ToDouble(class_ConfigRepository.GetBasicMinutesRepository(model.Group_Id)); } if (model.ChapterId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Chapter_ViewModel.ChapterNo) ,model.ChapterNo}, {nameof(RB_Course_Chapter_ViewModel.ChapterName) ,model.ChapterName}, {nameof(RB_Course_Chapter_ViewModel.ChapterContent) ,model.ChapterContent}, {nameof(RB_Course_Chapter_ViewModel.ParentId) ,model.ParentId}, {nameof(RB_Course_Chapter_ViewModel.StudyHours) ,model.StudyHours}, {nameof(RB_Course_Chapter_ViewModel.StudyMinutes) ,model.StudyMinutes}, {nameof(RB_Course_Chapter_ViewModel.Objectives) ,model.Objectives}, {nameof(RB_Course_Chapter_ViewModel.Requirement) ,model.Requirement}, {nameof(RB_Course_Chapter_ViewModel.CourseRate) ,model.CourseRate}, }; flag = chapterRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Chapter_ViewModel.ChapterId), model.ChapterId)); } else { var newId = chapterRepository.Insert(model); model.ChapterId = newId; flag = newId > 0; } SetBatchAllChapterCurrentHoursModule(model.CourseId); return flag; } /// /// 批量更新当前课时 /// /// /// public virtual List BatchUpdateChapterCurrentHoursModule(int courseId) { List chapterList = new List(); List treeList = GetChapterTreeListModule(new RB_Course_Chapter_ViewModel() { CourseId = courseId }); CalcChapterClassHours(treeList, chapterList); var resultList = chapterList; if (resultList != null && resultList.Count > 0) { for (var i = 0; i < resultList.Count; i++) { resultList[i].CurrentHours = resultList.Where(qitem => qitem.SerialNumber <= (i + 1)).Sum(qitem => qitem.StudyHours); } } return resultList; } /// /// 计算 /// /// /// public void CalcChapterClassHours(List treeList, List chapterList) { foreach (var item in treeList) { RB_Course_Chapter_ViewModel model = new RB_Course_Chapter_ViewModel() { ChapterId = item.ChapterId, ChapterNo = item.ChapterNo, ChapterName = item.ChapterName, SerialNumber = chapterList.Count() + 1, }; if (item.ChildList != null && item.ChildList.Count > 0) { model.StudyHours = 0; } else { model.StudyHours = item.StudyHours; } chapterList.Add(model); if (item.ChildList != null && item.ChildList.Count > 0) { CalcChapterClassHours(item.ChildList, chapterList); } } } /// /// 获取章节实体类 /// /// /// public RB_Course_Chapter_ViewModel GetChapterModule(object ChapterId) { return chapterRepository.GetEntity(ChapterId); } /// /// 删除章节 /// /// /// public bool RemoveChapterModule(object ChapterId) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Chapter_ViewModel.Status) ,(int)DateStateEnum.Delete}, }; bool flag = chapterRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Chapter_ViewModel.ChapterId), ChapterId)); return flag; } /// /// 批量删除章节 /// /// /// public bool BatchRemoveChapterModule(RB_Course_Chapter_ViewModel model) { var flag = chapterRepository.DeleteBatchChpterRepository(model); SetBatchAllChapterCurrentHoursModule(model.CourseId); return flag; } /// /// 批量更新等级 /// /// /// public bool BatchUpdateChapterRateModule(RB_Course_Chapter_ViewModel model) { return chapterRepository.SetBatchUpdateCourseRateRepository(model); } /// /// 设置章节开发状态 /// /// /// public bool SetChapterOpenStatusModule(RB_Course_Chapter_ViewModel model) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Chapter_ViewModel.OpenStatus) ,model.OpenStatus}, {nameof(RB_Course_Chapter_ViewModel.OpenStart) ,model.OpenStart}, {nameof(RB_Course_Chapter_ViewModel.OpenEnd) ,model.OpenEnd}, }; bool flag = chapterRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Chapter_ViewModel.ChapterId), model.ChapterId)); return flag; } /// /// 设置章节名称 /// /// /// public bool SetChapterNameModule(RB_Course_Chapter_ViewModel model) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Chapter_ViewModel.ChapterName) ,model.ChapterName} }; bool flag = chapterRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Chapter_ViewModel.ChapterId), model.ChapterId)); return flag; } /// /// 批量更新编号 /// /// /// public bool SetBatchChapterNoModule(List chapters) { var flag = chapterRepository.SetBatchUpdateChapterNoRepository(chapters); //SetBatchAllChapterCurrentHoursModule(chapters[0].CourseId); return flag; } /// /// 设置章节进度 /// /// /// /// public bool SetChapterProgressModule(object ChapterId, int Progress) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Chapter_ViewModel.Progress) ,Progress}, }; bool flag = chapterRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Chapter_ViewModel.ChapterId), ChapterId)); return flag; } #endregion #region 课程讨论管理 /// /// 获取课程讨论分页列表 /// /// /// /// /// /// public List GetDiscussPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_Discuss_ViewModel query) { return discussRepository.GetDiscussPageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 新增修改讨论话题 /// /// /// public bool SetDiscussModule(RB_Course_Discuss_ViewModel model) { bool flag; if (model.DiscussId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Discuss_ViewModel.DiscussTitle),model.DiscussTitle }, {nameof(RB_Course_Discuss_ViewModel.DiscussContent),model.DiscussContent }, {nameof(RB_Course_Discuss_ViewModel.DiscussUrl),model.DiscussUrl }, }; flag = discussRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Discuss_ViewModel.DiscussId), model.DiscussId)); } else { var newId = discussRepository.Insert(model); model.DiscussId = newId; flag = newId > 0; } return flag; } /// /// 获取讨论话题 /// /// /// public RB_Course_Discuss_ViewModel GetDiscussModule(object DiscussId) { return discussRepository.GetEntity(DiscussId); } /// /// 删除讨论话题 /// /// /// public bool RemoveDiscussModule(object DiscussId) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Discuss_ViewModel.Status),(int)DateStateEnum.Delete }, }; bool flag = discussRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Discuss_ViewModel.DiscussId), DiscussId)); return flag; } #endregion #region 课程配置 /// /// 新增修改课程配置 /// /// /// public bool SetCourseSettingModule(RB_Course_Setting_ViewModel model) { var oldModel = settingRepository.GetCourseSettingRepository(model); bool flag; if (oldModel != null && oldModel.SettingId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Setting_ViewModel.AppIsCache),model.AppIsCache }, {nameof(RB_Course_Setting_ViewModel.PlayType),model.PlayType }, }; flag = settingRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Setting_ViewModel.SettingId), oldModel.SettingId)); } else { var newId = settingRepository.Insert(model); model.SettingId = newId; flag = newId > 0; } return flag; } #endregion #region 课程资料管理 /// /// 获取课程资料分页列表 /// /// /// /// /// /// public List GetSourcePageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_Source_ViewModel query) { return sourceRepository.GetSourcePageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 新增修改课程资料 /// /// /// public bool SetCourseSourceModule(RB_Course_Source_ViewModel model) { bool flag; if (model.SourceId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Source_ViewModel.SourceName),model.SourceName }, {nameof(RB_Course_Source_ViewModel.SourceType),model.SourceType }, {nameof(RB_Course_Source_ViewModel.SourceUrl),model.SourceUrl }, {nameof(RB_Course_Source_ViewModel.SourceSize),model.SourceSize }, {nameof(RB_Course_Source_ViewModel.ParentSourceId),model.ParentSourceId }, }; flag = sourceRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Source_ViewModel.SourceId), model.SourceId)); } else { var newId = sourceRepository.Insert(model); model.SourceId = newId; flag = newId > 0; } return flag; } /// /// 根据编号获取课程资料实体 /// /// /// public RB_Course_Source_ViewModel GetCourseSourceModule(object SourceId) { return sourceRepository.GetEntity(SourceId); } /// /// 更新资料共享类型 /// /// /// 共享类型 /// public bool SetCourseSourceShareTypeModule(object SourceId, int ShareType) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Source_ViewModel.ShareType),ShareType}, }; bool flag = sourceRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Source_ViewModel.SourceId), SourceId)); return flag; } /// /// 根据编号删除课程资料 /// /// /// public bool RemoveCourseSourceModule(object SourceId) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Source_ViewModel.Status),(int)DateStateEnum.Delete}, }; bool flag = sourceRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Source_ViewModel.SourceId), SourceId)); return flag; } #endregion #region 课程教案管理 /// /// 获取课程教案分页列表 /// /// /// /// /// /// public List GetCourseTeachPlanPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_TeachPlan_ViewModel query) { return teachPlanRepository.GetCourseTeachPlanPageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 添加修改课程教案 /// /// /// public bool SetTeachPlanModule(RB_Course_TeachPlan_ViewModel model) { bool flag; if (model.PlanId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_TeachPlan_ViewModel.PlanName),model.PlanName }, {nameof(RB_Course_TeachPlan_ViewModel.ClassBefore),model.ClassBefore }, {nameof(RB_Course_TeachPlan_ViewModel.ClassIn),model.ClassIn }, {nameof(RB_Course_TeachPlan_ViewModel.ClassAfter),model.ClassAfter }, {nameof(RB_Course_TeachPlan_ViewModel.ParentPlanId),model.ParentPlanId }, {nameof(RB_Course_TeachPlan_ViewModel.SourceUrl),model.SourceUrl }, {nameof(RB_Course_TeachPlan_ViewModel.PlanFileExtension),model.PlanFileExtension }, {nameof(RB_Course_TeachPlan_ViewModel.PlanNodeType),model.PlanNodeType }, {nameof(RB_Course_TeachPlan_ViewModel.ExtUrl),model.ExtUrl }, {nameof(RB_Course_TeachPlan_ViewModel.Remark),model.Remark }, {nameof(RB_Course_TeachPlan_ViewModel.IsTop),model.IsTop }, }; flag = teachPlanRepository.Update(fileds, new WhereHelper(nameof(RB_Course_TeachPlan_ViewModel.PlanId), model.PlanId)); } else { var newId = teachPlanRepository.Insert(model); model.PlanId = newId; flag = newId > 0; } return flag; } /// /// 根据编号获取教案实体 /// /// /// public RB_Course_TeachPlan_ViewModel GetTeachPlanModule(object PlanId) { return teachPlanRepository.GetEntity(PlanId); } /// /// 删除教案 /// /// /// public bool RemoveTeachPlanModule(object PlanId) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_TeachPlan_ViewModel.Status),(int)DateStateEnum.Delete }, }; bool flag = teachPlanRepository.Update(fileds, new WhereHelper(nameof(RB_Course_TeachPlan_ViewModel.PlanId), PlanId)); return flag; } #endregion #region 课程作业管理 /// /// 新增修改课程作业 /// /// /// [TransactionCallHandler] public virtual bool SetCourseJobModule(RB_Course_Job_ViewModel model) { bool flag; if (model.JobId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Job_ViewModel.JobName),model.JobName }, {nameof(RB_Course_Job_ViewModel.JobType),model.JobType }, {nameof(RB_Course_Job_ViewModel.ScoreType),model.ScoreType }, {nameof(RB_Course_Job_ViewModel.TopicType),model.TopicType }, }; flag = courseJobRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Job_ViewModel.JobId), model.JobId)); } else { var newId = courseJobRepository.Insert(model); model.JobId = newId; flag = newId > 0; } var oldJobDetailsList = course_JobDetailsRepository.GetCourseJobDetailsListRepository(new RB_Course_JobDetails_ViewModel() { JobId = model.JobId }); if (oldJobDetailsList == null || (oldJobDetailsList != null && oldJobDetailsList.Count == 0)) { if (model.JobDetailsList != null && model.JobDetailsList.Count > 0) { foreach (var item in model.JobDetailsList) { item.JobId = model.JobId; item.QuestionId = SetQuestionModule(model, item); flag = course_JobDetailsRepository.Insert(item) > 0; } } else { //现在没有详情列表【直接删除以前的详情列表】 if (model.JobDetailsList == null || (model.JobDetailsList != null && model.JobDetailsList.Count == 0)) { course_JobDetailsRepository.RemoveCourseJobDetailsRepository(model.JobId); } //找出差异的数据 var deleteList = oldJobDetailsList.Where(qitem => !model.JobDetailsList.Any(oldItem => qitem.DetailsId == oldItem.DetailsId)).ToList(); foreach (var dItem in deleteList) { if (dItem.DetailsId > 0) { course_JobDetailsRepository.Delete(dItem.DetailsId); } } foreach (var dItem in model.JobDetailsList) { dItem.QuestionId = SetQuestionModule(model, dItem); dItem.JobId = model.JobId; if (dItem.DetailsId == 0) { course_JobDetailsRepository.Insert(dItem); } else { course_JobDetailsRepository.Update(dItem); } } } } return flag; } /// /// 处理作业问题 /// /// /// public int SetQuestionModule(RB_Course_Job_ViewModel jobModel, RB_Course_JobDetails_ViewModel item) { var model = new RB_Question_ViewModel() { QuestionId = item.QuestionId, CourseId = jobModel.CourseId, Title = item.Title, QuestionContent = item.QuestionContent, DifficultyType = item.DifficultyType, AnswerParse = item.AnswerParse, QuestionTypeId = item.QuestionTypeId, QuestionTypeName = item.QuestionTypeKey, Knowledge = item.Knowledge, CreateBy = jobModel.CreateBy, CreateTime = jobModel.CreateTime, UpdateBy = jobModel.UpdateBy, UpdateTime = jobModel.UpdateTime, IsUpdateJobExam = item.IsUpdateJobExam, Status = 0, SortNum = 0, Answer = item.Answer, IsMutex = item.IsMutex, Category = item.Category, LevelType = item.LevelType, }; if (model.QuestionId > 0) { var newId = questionRepository.Insert(model); model.QuestionId = newId; if (newId > 0) { Dictionary sortFileds = new Dictionary() { {nameof(RB_Question_ViewModel.SortNum),newId }, }; //更新问题排序 questionRepository.Update(sortFileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), newId)); } } else { questionRepository.Update(model); } return model.QuestionId; } /// /// 设置作业其他配置 /// /// /// public bool SetCourseJobOtherConfigModule(RB_Course_Job_ViewModel model) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Job_ViewModel.ReciveClass),model.ReciveClass }, {nameof(RB_Course_Job_ViewModel.StartTime),model.StartTime }, {nameof(RB_Course_Job_ViewModel.EndTime),model.EndTime }, {nameof(RB_Course_Job_ViewModel.IsAllowDelay),model.IsAllowDelay }, {nameof(RB_Course_Job_ViewModel.PassBasicScore),model.PassBasicScore }, {nameof(RB_Course_Job_ViewModel.IsAgain),model.IsAgain }, {nameof(RB_Course_Job_ViewModel.AgainTimes),model.AgainTimes }, {nameof(RB_Course_Job_ViewModel.IsGetHighScore),model.IsGetHighScore }, {nameof(RB_Course_Job_ViewModel.IsLookAnswer),model.IsLookAnswer }, {nameof(RB_Course_Job_ViewModel.LookAnswerType),model.LookAnswerType }, {nameof(RB_Course_Job_ViewModel.IsLookScore),model.IsLookScore }, {nameof(RB_Course_Job_ViewModel.IsLookQTypeScore),model.IsLookQTypeScore }, {nameof(RB_Course_Job_ViewModel.IsPaste),model.IsPaste }, {nameof(RB_Course_Job_ViewModel.IsAgainShowTrueFalse),model.IsAgainShowTrueFalse }, {nameof(RB_Course_Job_ViewModel.IsOutOrder),model.IsOutOrder }, {nameof(RB_Course_Job_ViewModel.IsRandom),model.IsRandom }, {nameof(RB_Course_Job_ViewModel.RandomNum),model.RandomNum }, {nameof(RB_Course_Job_ViewModel.IsSendMsg),model.IsSendMsg }, {nameof(RB_Course_Job_ViewModel.SendMsgHour),model.SendMsgHour }, {nameof(RB_Course_Job_ViewModel.IsWork),model.IsWork }, {nameof(RB_Course_Job_ViewModel.WorkProcess),model.WorkProcess }, {nameof(RB_Course_Job_ViewModel.IsBlankobj),model.IsBlankobj }, {nameof(RB_Course_Job_ViewModel.IsCompletionIngoreCase),model.IsCompletionIngoreCase }, {nameof(RB_Course_Job_ViewModel.IsBlankIgnoreComma),model.IsBlankIgnoreComma }, {nameof(RB_Course_Job_ViewModel.IsMultiHalfScore),model.IsMultiHalfScore }, {nameof(RB_Course_Job_ViewModel.UpdateBy),model.UpdateBy }, {nameof(RB_Course_Job_ViewModel.UpdateTime),model.UpdateTime }, }; var flag = courseJobRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Job_ViewModel.JobId), model.JobId)); return flag; } /// /// 获取课程作业分页列表 /// /// /// /// /// /// public List GetCourseJobPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_Job_ViewModel query) { return courseJobRepository.GetCourseJobPageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 删除课程作业 /// /// 作业编号 /// 1-删除,0-恢复 /// public bool RemoveCourseJobModule(int JobId, int Status) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Job_ViewModel.Status),Status }, }; var flag = courseJobRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Job_ViewModel.JobId), JobId)); return flag; } #endregion #region 课程优惠设置 /// /// 获取课程优惠列表 /// /// /// public List GetCoursePreferentialListModule(RB_Course_Preferential_Extend query) { return course_PreferentialRepository.GetCoursePreferentialListRepostory(query); } /// /// 根据编号获取课程优惠信息 /// /// /// public RB_Course_Preferential_Extend GetCoursePreferentialModule(int Id) { return course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend() { Id = Id })?.FirstOrDefault(); } /// /// 新增修改课程优惠 /// /// /// public bool SetCoursePreferentialModule(RB_Course_Preferential_Extend model) { bool flag = false; //买赠 if (model.PriceDiscountType == Common.Enum.Course.CoursePriceDiscountEnum.BuySend) { model.PriceType = 0; model.PriceMoney = 0; } //非买赠 else { model.BuyNum = 0; model.SendNum = 0; } if (model.Id > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Preferential_Extend.PreferentialTerms),model.PreferentialTerms }, {nameof(RB_Course_Preferential_Extend.B2BCommissionType),model.B2BCommissionType }, {nameof(RB_Course_Preferential_Extend.B2BCommissionMoney),model.B2BCommissionMoney }, {nameof(RB_Course_Preferential_Extend.SaleCommissionType),model.SaleCommissionType }, {nameof(RB_Course_Preferential_Extend.SaleCommissionMoney),model.SaleCommissionMoney }, {nameof(RB_Course_Preferential_Extend.PriceDiscountType),model.PriceDiscountType }, {nameof(RB_Course_Preferential_Extend.BuyNum),model.BuyNum }, {nameof(RB_Course_Preferential_Extend.SendNum),model.SendNum }, {nameof(RB_Course_Preferential_Extend.PriceType),model.PriceType }, {nameof(RB_Course_Preferential_Extend.PriceMoney),model.PriceMoney }, {nameof(RB_Course_Preferential_Extend.UpdateBy),model.UpdateBy }, {nameof(RB_Course_Preferential_Extend.UpdateTime),model.UpdateTime }, }; flag = course_PreferentialRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Preferential_Extend.Id), model.Id)); } else { var newId = course_PreferentialRepository.Insert(model); model.Id = newId; flag = newId > 0; } return flag; } /// /// 根据编删除课程优惠 /// /// /// /// public bool RemoveCoursePreferentialModule(int Id, int status) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_Preferential_Extend.Status),status } }; return course_PreferentialRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Preferential_Extend.Id), Id)); } /// /// 批量新增修改课程优惠信息 /// /// /// [TransactionCallHandler] public virtual bool SetCoursePreferentialListModule(RB_Course_ViewModel courseModel, List list) { bool flag = false; if (courseModel.CourseId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Course_ViewModel.OriginalPrice),courseModel.OriginalPrice }, {nameof(RB_Course_ViewModel.SellPrice),courseModel.SellPrice }, }; flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), courseModel.CourseId)); } var oldList = GetCoursePreferentialListModule(new RB_Course_Preferential_Extend() { CourseId = courseModel.CourseId }); //原来没有优惠数据 if (oldList == null || (oldList != null && oldList.Count == 0)) { foreach (var item in list) { flag = course_PreferentialRepository.Insert(item) > 0; } } //原来有优惠数据 else { if (list == null || (list != null && list.Count == 0)) { flag = course_PreferentialRepository.DeleteCoursePreferentialRepostory(courseModel.CourseId); } else { //找出差异的数据 var deleteList = oldList.Where(qitem => !list.Any(oldItem => qitem.Id == oldItem.Id)).ToList(); foreach (var dItem in deleteList) { if (dItem.Id > 0) { flag = course_PreferentialRepository.Delete(dItem.Id) > 0; } } foreach (var priceItem in list) { if (priceItem.Id == 0) { flag = course_PreferentialRepository.Insert(priceItem) > 0; } else { flag = course_PreferentialRepository.Update(priceItem); } } } } if (flag && courseModel.SalePlatList != null && courseModel.SalePlatList.Any(x => x == 4))//上架小程序端,则要同步到小程序 { System.Threading.Tasks.Task.Run(() => UpdateMallGoodsPrice(courseModel, list)); } return flag; } #endregion #region 非法访问用户 /// /// 保存非法访问用信息 /// /// /// public bool SetUnKnownUserModule(RB_Class_Time_UnKnowUser_ViewModel model) { bool flag; if (model.Id > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Class_Time_UnKnowUser_ViewModel.ClassTimeId) ,model.ClassTimeId}, {nameof(RB_Class_Time_UnKnowUser_ViewModel.UserAvatar) ,model.UserAvatar} }; flag = chapterRepository.Update(fileds, new WhereHelper(nameof(RB_Class_Time_UnKnowUser_ViewModel.Id), model.Id)); } else { var newId = unKnowRepository.Insert(model); model.Id = newId; flag = newId > 0; } return flag; } /// /// 查询指定课程的非法访问用户数据 /// /// public List GetUnKnowUserByClassTimeModule(int classId) { var list = unKnowRepository.GetUnKnowUsersByClassIdRepository(classId); return list; } #endregion #region 小程序商品 public int SetMallGoods(RB_Course_ViewModel model) { int goodsId = 0; Model.ViewModel.Mall.RB_Goods_Extend demodel = new Model.ViewModel.Mall.RB_Goods_Extend(); if (model.MallGoodsId > 0) { demodel = mallGoodsRepository.GetGoodsList(new Model.ViewModel.Mall.RB_Goods_Extend { Id = model.MallGoodsId }).FirstOrDefault(); if (demodel == null || demodel.Id == 0)//不存在 { demodel = new Model.ViewModel.Mall.RB_Goods_Extend(); } } demodel.CarouselImageList = new List(); if (!string.IsNullOrWhiteSpace(model.CoverImg)) { demodel.CarouselImageList.Add(new Model.ViewModel.Mall.RB_ImageCommonModel { Id = 0, Name = "", Path = model.CoverImg, Type = 0 }); demodel.CarouselImage = JsonHelper.Serialize(demodel.CarouselImageList.Select(x => x.Path)); } demodel.Name = model.CourseName; demodel.Remark ??= model.CourseFeature; demodel.VideoAddress = ""; demodel.CustomShareTitles = ""; demodel.CustomShareImage = ""; demodel.GoodsStatus = 1; demodel.InventoryNum = 100;// demodel.DefaultSpecificationName = ""; demodel.SellingPrice = model.SellPrice; demodel.OriginalPrice = model.OriginalPrice; demodel.Unit = "课";// demodel.CostPrice = 0;// demodel.IsGoodsNegotiable = 0; demodel.SalesNum = 0; demodel.GoodsNumbers = ""; demodel.IsCustomSpecification = 1;// demodel.GoodsWeight = 0; demodel.IsDefaultService = 1; demodel.FreightId = -1; demodel.FormsId = 1; demodel.LimitBuyGoodsNum = -1; demodel.LimitBuyOrderNum = -1; demodel.IsAreaBuy = 0; demodel.IntegralPresent = 0; demodel.IntegralPresentType = 2; demodel.PointsDeduction = 0; demodel.PointsDeductionType = 2; demodel.IsMultipleDeduction = 2; demodel.GoodsDetails = model.CourseIntro; demodel.SeparateDistribution = 0;// demodel.SeparateDistributionType = 1; demodel.SeparateDistributionMoneyType = 2; demodel.EnjoyMember = 1; demodel.SeparateSetMember = 0; demodel.IsQuickBuy = 1; demodel.FullNumPinkage = 0; demodel.FullMoneyPinkage = 0; demodel.SupplierId = 0; demodel.Sort = 1; demodel.Commission = 0; demodel.SendArea = ""; demodel.VideoType = 1; demodel.GoodsPageType = 0; demodel.IsNoTax = 0; demodel.GoodsCountry = ""; demodel.FatCode = ""; demodel.GoodsUrl = ""; demodel.goodsLogo = ""; demodel.SeparateDistributionMoneyType ??= 1; demodel.EnjoyMember ??= 2; demodel.SeparateSetMember ??= 2; demodel.IsQuickBuy ??= 2; demodel.IsSellWell ??= 2; demodel.GoodsType ??= OrderTypeEnum.Mall; demodel.GoodsStatus ??= 2; demodel.IsProxy ??= 2; demodel.ProxyType ??= 1; demodel.ProxyRises ??= 0; demodel.ProxyMoney ??= 0; demodel.IsProcurement = 2;//新增时 demodel.PresentFXGrade ??= 0;//赠送粉象等级 demodel.PresentFXMonth ??= 0; demodel.Advertising ??= "";//广告词 demodel.SubName ??= "";//副标题 demodel.IsLiveGoods ??= 2;//是否直播商品 1是 2否 demodel.SendArea ??= "";//发货地 demodel.GoodsClassify = 0; demodel.IntegralComment ??= 0;//评论反积分 demodel.IntegralCommentType ??= 1; demodel.GoodsPageType ??= GoodsPageTypeEnum.All; demodel.TenantId = Convert.ToInt32(Config.JHTenantId); demodel.MallBaseId = Convert.ToInt32(Config.JHMallBaseId); #region 商品规格信息 demodel.SpecificationList = new List(); demodel.SpecificationPriceList = new List(); RB_Goods_Specification_Extend modelSpecification = new RB_Goods_Specification_Extend { Id = 0,//暂定 EnabledImage = 2, Name = "开班日期", Sort = 1, SpecificationValueList = new List() }; //查询课程对应班级开课时间大于今天的班级 var classList = classRepository.GetClassAndCourseListRepository(new RB_Class_ViewModel { CouseId = model.CourseId, StartTime = System.DateTime.Now.ToString("yyyy-MM-dd") }).Where(x => x.ClassStatus == Common.Enum.Course.ClassStatusEnum.NonOpenClass && x.OpenTime > System.DateTime.Now).ToList(); if (classList != null && classList.Any()) { int Sort = 1; foreach (var item in classList) { RB_Goods_SpecificationValue_Extend modelSpecificationValue = new RB_Goods_SpecificationValue_Extend { Id = 0, Image = "", ImagePath = "", Name = item.OpenTime.ToString("MM月dd日"), Sort = Sort,///暂定1 ClassId = item.ClassId }; modelSpecification.SpecificationValueList.Add(modelSpecificationValue); RB_Goods_SpecificationPrice_Extend pModel = new RB_Goods_SpecificationPrice_Extend() { Commission = 0, CostMoney = 0, GoodsNumbers = item.ClassNo, GoodsWeight = 0, InventoryNum = item.ClassPersion - item.OrderStudentCount,//暂 SellingPrice = model.SellPrice, SpecificationSort = Sort.ToString(),//暂定 AttrList = new object() }; demodel.SpecificationPriceList.Add(pModel); Sort += 1; } } demodel.SpecificationList.Add(modelSpecification); #endregion if (demodel.Id == 0)//已存在,更新 { demodel.Status = 0; demodel.CreateDate = System.DateTime.Now; demodel.UpdateDate = System.DateTime.Now; goodsId = mallGoodsRepository.Insert(demodel); if (goodsId > 0) { //插入分类 foreach (var item in model.CategoryList) { MallGoodsCategoryRepository.Insert(new RB_Goods_Category() { CategoryId = item.CategoryId, CreateDate = demodel.CreateDate, GoodsId = goodsId, Id = 0, MallBaseId = demodel.MallBaseId, Status = 0, TenantId = demodel.TenantId }); } } } else { //修改 Dictionary keyValues = new Dictionary() { { nameof(RB_Goods.Name),demodel.Name}, { nameof(RB_Goods.CarouselImage),demodel.CarouselImage}, { nameof(RB_Goods.VideoAddress),demodel.VideoAddress}, { nameof(RB_Goods.CustomShareTitles),demodel.CustomShareTitles}, { nameof(RB_Goods.CustomShareImage),demodel.CustomShareImage}, { nameof(RB_Goods.GoodsStatus),demodel.GoodsStatus}, { nameof(RB_Goods.InventoryNum),demodel.InventoryNum}, { nameof(RB_Goods.DefaultSpecificationName),demodel.DefaultSpecificationName}, { nameof(RB_Goods.IsCustomSpecification),demodel.IsCustomSpecification}, { nameof(RB_Goods.Sort),demodel.Sort}, { nameof(RB_Goods.SellingPrice),demodel.SellingPrice}, { nameof(RB_Goods.OriginalPrice),demodel.OriginalPrice}, { nameof(RB_Goods.Unit),demodel.Unit}, { nameof(RB_Goods.CostPrice),demodel.CostPrice}, { nameof(RB_Goods.IsGoodsNegotiable),demodel.IsGoodsNegotiable}, { nameof(RB_Goods.SalesNum),demodel.SalesNum}, { nameof(RB_Goods.GoodsNumbers),demodel.GoodsNumbers}, { nameof(RB_Goods.GoodsWeight),demodel.GoodsWeight}, { nameof(RB_Goods.IsDefaultService),demodel.IsDefaultService}, { nameof(RB_Goods.GoodsService),demodel.GoodsService}, { nameof(RB_Goods.FreightId),demodel.FreightId}, { nameof(RB_Goods.FormsId),demodel.FormsId}, { nameof(RB_Goods.LimitBuyGoodsNum),demodel.LimitBuyGoodsNum}, { nameof(RB_Goods.LimitBuyOrderNum),demodel.LimitBuyOrderNum}, { nameof(RB_Goods.FullNumPinkage),demodel.FullNumPinkage}, { nameof(RB_Goods.FullMoneyPinkage),demodel.FullMoneyPinkage}, { nameof(RB_Goods.IsAreaBuy),demodel.IsAreaBuy}, { nameof(RB_Goods.IntegralPresent),demodel.IntegralPresent}, { nameof(RB_Goods.IntegralPresentType),demodel.IntegralPresentType}, { nameof(RB_Goods.PointsDeduction),demodel.PointsDeduction}, { nameof(RB_Goods.PointsDeductionType),demodel.PointsDeductionType}, { nameof(RB_Goods.IsMultipleDeduction),demodel.IsMultipleDeduction}, { nameof(RB_Goods.GoodsDetails),demodel.GoodsDetails}, { nameof(RB_Goods.UpdateDate),demodel.UpdateDate}, { nameof(RB_Goods.SeparateDistribution),demodel.SeparateDistribution}, { nameof(RB_Goods.SeparateDistributionType),demodel.SeparateDistributionType}, { nameof(RB_Goods.SeparateDistributionMoneyType),demodel.SeparateDistributionMoneyType}, { nameof(RB_Goods.EnjoyMember),demodel.EnjoyMember}, { nameof(RB_Goods.SeparateSetMember),demodel.SeparateSetMember}, { nameof(RB_Goods.IsQuickBuy),demodel.IsQuickBuy}, { nameof(RB_Goods.SupplierId),demodel.SupplierId}, { nameof(RB_Goods.IsProxy),demodel.IsProxy}, { nameof(RB_Goods.ProxyType),demodel.ProxyType}, { nameof(RB_Goods.ProxyRises),demodel.ProxyRises}, { nameof(RB_Goods.ProxyMoney),demodel.ProxyMoney}, { nameof(RB_Goods.Commission),demodel.Commission}, { nameof(RB_Goods.PresentFXGrade),demodel.PresentFXGrade}, { nameof(RB_Goods.PresentFXMonth),demodel.PresentFXMonth}, { nameof(RB_Goods.Advertising),demodel.Advertising}, { nameof(RB_Goods.SubName),demodel.SubName}, { nameof(RB_Goods.MarketingLogo),demodel.MarketingLogo}, { nameof(RB_Goods.IsLiveGoods),demodel.IsLiveGoods}, { nameof(RB_Goods.ShelvesDate),demodel.ShelvesDate }, { nameof(RB_Goods.DownDate),demodel.DownDate }, { nameof(RB_Goods.SendArea),demodel.SendArea }, { nameof(RB_Goods.VideoType),demodel.VideoType }, { nameof(RB_Goods.IntegralComment),demodel.IntegralComment }, { nameof(RB_Goods.IntegralCommentType),demodel.IntegralCommentType }, { nameof(RB_Goods.Remark),demodel.Remark }, { nameof(RB_Goods.GoodsPageType),demodel.GoodsPageType }, { nameof(RB_Goods.IsNoTax),demodel.IsNoTax }, { nameof(RB_Goods.MinProfitRate),demodel.MinProfitRate }, { nameof(RB_Goods.GoodsCountry),demodel.GoodsCountry }, { nameof(RB_Goods.FatCode),demodel.FatCode }, { nameof(RB_Goods.GoodsUrl),demodel.GoodsUrl }, { nameof(RB_Goods.goodsLogo),demodel.goodsLogo }, }; List wheres = new List() { new WhereHelper(){ FiledName=nameof(RB_Goods.Id), FiledValue=demodel.Id, OperatorEnum=OperatorEnum.Equal }, new WhereHelper(){ FiledName=nameof(RB_Goods.TenantId), FiledValue=demodel.TenantId, OperatorEnum=OperatorEnum.Equal }, new WhereHelper(){ FiledName=nameof(RB_Goods.MallBaseId), FiledValue=demodel.MallBaseId, OperatorEnum=OperatorEnum.Equal } }; bool flag = mallGoodsRepository.Update(keyValues, wheres); if (flag) { #region 删除规格 var slist = goods_SpecificationRepository.GetList(new RB_Goods_Specification_Extend() { GoodsId = demodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }); var svlist = goods_SpecificationValueRepository.GetList(new RB_Goods_SpecificationValue_Extend() { GoodsId = demodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }); var splist = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsId = demodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }); if (slist != null && slist.Any()) { //删除后新增 goods_SpecificationRepository.DeleteBatch(slist); } if (svlist != null && svlist.Any()) { goods_SpecificationValueRepository.DeleteBatch(svlist); } if (splist != null && splist.Any()) { goods_SpecificationPriceRepository.DeleteBatch(splist); } #endregion #region 修改分类 var clist = MallGoodsCategoryRepository.GetList(new RB_Goods_Category_Extend() { GoodsId = demodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }); var insertList = model.CategoryList.Where(x => !clist.Select(y => y.CategoryId).Contains(x.CategoryId)).ToList(); var deleteList = clist.Where(x => !model.CategoryList.Select(y => y.CategoryId).Contains(x.CategoryId)).ToList(); foreach (var item in insertList) { MallGoodsCategoryRepository.Insert(new RB_Goods_Category() { CategoryId = item.CategoryId, CreateDate = demodel.CreateDate, GoodsId = demodel.Id, Id = 0, MallBaseId = demodel.MallBaseId, Status = 0, TenantId = demodel.TenantId }); } foreach (var item in deleteList) { MallGoodsCategoryRepository.Delete(item.Id); } #endregion } goodsId = demodel.Id; } //插入规格 if (demodel.IsCustomSpecification == 1) { foreach (var item in demodel.SpecificationList) { int sid = goods_SpecificationRepository.Insert(new RB_Goods_Specification() { CreateDate = demodel.CreateDate, EnabledImage = item.EnabledImage, GoodsId = goodsId, Id = 0, MallBaseId = demodel.MallBaseId, Name = item.Name, Sort = item.Sort, Status = 0, TenantId = demodel.TenantId }); if (sid > 0) { foreach (var qitem in item.SpecificationValueList) { goods_SpecificationValueRepository.Insert(new RB_Goods_SpecificationValue() { CreateDate = demodel.CreateDate, GoodsId = goodsId, Id = 0, Image = qitem.Image, MallBaseId = demodel.MallBaseId, Name = qitem.Name, Sort = qitem.Sort, Status = 0, TenantId = demodel.TenantId, SpecificationId = sid, ClassId = qitem.ClassId }); } } } foreach (var item in demodel.SpecificationPriceList) { goods_SpecificationPriceRepository.Insert(new RB_Goods_SpecificationPrice() { CreateDate = demodel.CreateDate, GoodsId = goodsId, Id = 0, GoodsNumbers = item.GoodsNumbers, GoodsWeight = item.GoodsWeight, InventoryNum = item.InventoryNum, MallBaseId = demodel.MallBaseId, SellingPrice = item.SellingPrice, SpecificationSort = item.SpecificationSort, Status = 0, TenantId = demodel.TenantId, UpdateDate = System.DateTime.Now, Commission = item.Commission, CostMoney = item.CostMoney }); } } #region 商品优惠价格 var oldList = MallGoodsPreferentialRepository.GetGoodsPreferentialListRepostory(new RB_Goods_Preferential_Extend() { GoodsId = goodsId }); List goodsPreferentialLsit = new List(); if (model.PreferentialList != null && model.PreferentialList.Any()) { foreach (var item in model.PreferentialList) { RB_Goods_Preferential_Extend goodsPreferential = new RB_Goods_Preferential_Extend() { Id = 0, GoodsId = goodsId, PreferentialTerms = item.PreferentialTerms, SaleCommissionType = item.SaleCommissionType, SaleCommissionMoney = item.SaleCommissionMoney, B2BCommissionType = item.B2BCommissionType, B2BCommissionMoney = item.B2BCommissionMoney, PriceDiscountType = item.PriceDiscountType, BuyNum = item.BuyNum, SendNum = item.SendNum, PriceType = item.PriceType, PriceMoney = item.PriceMoney, TenantId = Convert.ToInt32(Config.JHTenantId), MallBaseId = Convert.ToInt32(Config.JHMallBaseId), Status = 0, EduCommissionType = item.EduCommissionType, EduCommissionMoney = item.EduCommissionMoney }; goodsPreferentialLsit.Add(goodsPreferential); } } if (oldList == null || !oldList.Any()) { foreach (var item in goodsPreferentialLsit) { MallGoodsPreferentialRepository.Insert(item); } } //原来有优惠数据 else { if (model.PreferentialList == null || (model.PreferentialList != null && model.PreferentialList.Count == 0)) { MallGoodsPreferentialRepository.DeleteGoodsPreferentialRepostory(goodsId); } else { //找出差异的数据 var deleteList = oldList.Where(qitem => !goodsPreferentialLsit.Any(oldItem => qitem.PriceDiscountType == oldItem.PriceDiscountType)).ToList(); foreach (var dItem in deleteList) { if (dItem.Id > 0) { MallGoodsPreferentialRepository.Delete(dItem.Id); } } foreach (var priceItem in goodsPreferentialLsit) { var nowItem = oldList.Where(x => x.PriceDiscountType == priceItem.PriceDiscountType).FirstOrDefault(); if (nowItem != null && nowItem.Id > 0) { priceItem.Id = nowItem.Id; } if (priceItem.Id == 0) { MallGoodsPreferentialRepository.Insert(priceItem); } else { MallGoodsPreferentialRepository.Update(priceItem); } } } } #endregion return goodsId; } /// /// 更新商品的售价-卖价;原价-基础收费以及优惠政策 /// /// /// /// public bool UpdateMallGoodsPrice(RB_Course_ViewModel courseModel, List list) { bool flag = false; if (courseModel.MallGoodsId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Goods.SellingPrice),courseModel.SellPrice }, {nameof(RB_Goods.OriginalPrice),courseModel.OriginalPrice }, }; flag = mallGoodsRepository.Update(fileds, new WhereHelper(nameof(RB_Goods.Id), courseModel.MallGoodsId)); var oldList = MallGoodsPreferentialRepository.GetGoodsPreferentialListRepostory(new RB_Goods_Preferential_Extend() { GoodsId = courseModel.MallGoodsId }); List goodsPreferentialLsit = new List(); foreach (var item in list) { RB_Goods_Preferential_Extend goodsPreferential = new RB_Goods_Preferential_Extend() { Id = 0, GoodsId = courseModel.MallGoodsId, PreferentialTerms = item.PreferentialTerms, SaleCommissionType = item.SaleCommissionType, SaleCommissionMoney = item.SaleCommissionMoney, B2BCommissionType = item.B2BCommissionType, B2BCommissionMoney = item.B2BCommissionMoney, PriceDiscountType = item.PriceDiscountType, BuyNum = item.BuyNum, SendNum = item.SendNum, PriceType = item.PriceType, PriceMoney = item.PriceMoney, TenantId = Convert.ToInt32(Config.JHTenantId), MallBaseId = Convert.ToInt32(Config.JHMallBaseId), Status = 0, EduCommissionType = item.EduCommissionType, EduCommissionMoney = item.EduCommissionMoney }; goodsPreferentialLsit.Add(goodsPreferential); } var splist = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsId = courseModel.MallGoodsId, TenantId = Convert.ToInt32(Config.JHTenantId), MallBaseId = Convert.ToInt32(Config.JHMallBaseId) }); if (splist != null && splist.Any()) { splist.ForEach(x => x.SellingPrice = courseModel.SellPrice); goods_SpecificationPriceRepository.UpdateBatch(splist); } if (oldList == null || !oldList.Any()) { foreach (var item in goodsPreferentialLsit) { flag = MallGoodsPreferentialRepository.Insert(item) > 0; } } //原来有优惠数据 else { if (list == null || (list != null && list.Count == 0)) { flag = MallGoodsPreferentialRepository.DeleteGoodsPreferentialRepostory(courseModel.MallGoodsId); } else { //找出差异的数据 var deleteList = oldList.Where(qitem => !goodsPreferentialLsit.Any(oldItem => qitem.PriceDiscountType == oldItem.PriceDiscountType)).ToList(); foreach (var dItem in deleteList) { if (dItem.Id > 0) { flag = MallGoodsPreferentialRepository.Delete(dItem.Id) > 0; } } foreach (var priceItem in goodsPreferentialLsit) { var nowItem = oldList.Where(x => x.PriceDiscountType == priceItem.PriceDiscountType).FirstOrDefault(); if (nowItem != null && nowItem.Id > 0) { priceItem.Id = nowItem.Id; } if (priceItem.Id == 0) { flag = MallGoodsPreferentialRepository.Insert(priceItem) > 0; } else { flag = MallGoodsPreferentialRepository.Update(priceItem); } } } } } return flag; } #endregion } }