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
}
}