/// <summary> /// 根据请求参数获取对应的订单交接明细列表 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-17</para> /// </summary> /// <param name="request">订单交接明细请求对象</param> /// <returns>订单交接明细信息分页列表</returns> public PageResult <OrderHandoverDetailListResponse> GetHandDetailList(OrderHandoverDetailRequest request) { var result = _viewDetailRepository.Value.GetDetailsByHandoverId(request); if (result != null && result.Data != null && result.Data.Count > 0) { //获取校区的所有学生信息 var studentInfoList = StudentService.GetStudentByIds(result.Data.Select(a => a.StudentId).Distinct()).Result; result.Data.ForEach(a => { var studentInfo = studentInfoList.FirstOrDefault(s => s.StudentId == a.StudentId);//学生信息 a.StudentNo = studentInfo?.StudentNo; a.StudentName = studentInfo?.StudentName; a.OrderTradeTypeName = EnumName.GetDescription(typeof(OrderTradeType), a.OrderTradeType); }); return(result); } return(new PageResult <OrderHandoverDetailListResponse>()); }
/// <summary> /// 一个学生多个班级的学生班级信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-01-02</para> /// </summary> /// <param name="enoughTimeList">写生课足够课次列表</param> /// <param name="classInfoList">班级信息列表</param> /// <returns></returns> private List <LifeClassStudentClassResponse> GetLifeClassOfStudentMoreClass(IEnumerable <LifeClassLessonMakeRequest> enoughTimeList, List <TblDatClass> classInfoList) { List <LifeClassStudentClassResponse> result = new List <LifeClassStudentClassResponse>(); var studentMoreClassList = enoughTimeList.Where(a => enoughTimeList.Count(b => b.StudentId == a.StudentId) > 1); if (studentMoreClassList.Any()) { //获取该校区的所有学生 var studentInfoList = StudentService.GetStudentByIds(enoughTimeList.Select(a => a.StudentId).Distinct()).Result; foreach (var item in studentMoreClassList) { //获取班级信息 var classInfo = classInfoList.FirstOrDefault(c => c.ClassId == item.ClassId); //获取lifeRepeatList中学生对应的对象 var lifeRepeatInfo = result.FirstOrDefault(l => l.StudentId == item.StudentId); //检查重复学生是否存在于lifeRepeatList中,不存在,则新增同一学生多班级信息的对象 if (lifeRepeatInfo == null) { //获取学生信息 var studentInfo = studentInfoList.FirstOrDefault(s => s.StudentId == item.StudentId); lifeRepeatInfo = new LifeClassStudentClassResponse() { StudentId = item.StudentId, StudentName = studentInfo?.StudentName, StudentNo = studentInfo?.StudentNo }; result.Add(lifeRepeatInfo); } //StudentClassList是否存在该班级,不存在,则添加至StudentClassList if (!lifeRepeatInfo.StudentClassList.Any(a => a.ClassId == item.ClassId && a.EnrollOrderItemId == item.EnrollOrderItemId)) { lifeRepeatInfo.StudentClassList.Add(new LifeClassClassInfoResponse() { ClassId = item.ClassId, ClassNo = classInfo?.ClassNo, EnrollOrderItemId = item.EnrollOrderItemId }); } } } return(result); }
/// <summary> /// 描述:预览生成优惠数据(满减金额+转介绍) /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-11-2</para> /// </summary> /// <param name="studentId">学生Id</param> /// <returns>优惠信息集合</returns> public async Task <List <CouponGenerateResponse> > Peek(long studentId) { var result = new List <CouponGenerateResponse>(); //1.满减信息 var resultFullReduce = new CouponGenerateResponse(); //获取赠与奖学金金额 var query = (await _tblDctCouponRuleRepository.Value.GetAmountByCouponRule(_schoolId, _totalAmount)).FirstOrDefault(); resultFullReduce.CouponRuleId = query?.CouponRuleId ?? 0; resultFullReduce.CouponRuleAmount = query?.CouponAmount ?? 0; resultFullReduce.CouponType = CouponType.FullReduce; result.Add(resultFullReduce); //2.转介绍信息 //获取学生是否有转介绍Id var studentService = new StudentService(_schoolId); var studenInfo = studentService.GetStudent(studentId); //获取学生是否有报名信息 var enrollOrderService = new EnrollOrderService(_schoolId); var studentOrder = enrollOrderService.GetStudentOrders(studentId).Result; if (!studentOrder.Any()) //没有报过名,并且有转介绍人 才返回转介绍信息 { if (studenInfo.ParentId <= 0) { return(result); } var couponRuleService = new CouponRuleService(_schoolId); var couponRuleResult = couponRuleService.GetTblDctCouponRuleInfo(); var resultRecommend = new CouponGenerateResponse { CouponRuleId = couponRuleResult?.CouponRuleId ?? 0, CouponRuleAmount = couponRuleResult?.CouponAmount ?? 0, CouponType = CouponType.Recommend }; result.Add(resultRecommend); } return(result); }
/// <summary> /// 获取定金详情信息 /// <para>作 者:Huang GaoLiang </para> /// <para>创建时间:2018-11-15 </para> /// </summary> /// <param name="depositOrderId">订单编号</param> /// <param name="companyId">公司编号</param> /// <returns>返回订金详情数据</returns> /// <exception cref="BussinessException"> /// 异常ID:5,数据异常 /// </exception> public DepositOrderDetailResponse GetPrintOrderDetail(long depositOrderId, string companyId) { DepositOrderDetailResponse order = (DepositOrderDetailResponse)GetOrderDetail(depositOrderId, companyId); order.SchoolName = new OrgService().GetAllSchoolList().FirstOrDefault(m => m.SchoolId == order.SchoolId)?.SchoolName; order.PrintNumber = PrintCounterService.Print(_schoolId, PrintBillType.DepositOrderBill); // 根据学生编号获取学生信息 StudentDetailResponse studentInfo = new StudentService(_schoolId).GetStudent(order.StudentId); if (studentInfo == null) { throw new BussinessException((byte)ModelType.Cash, 5); } order.StudentName = studentInfo.StudentName; order.StudentNo = studentInfo.StudentNo; order.LinkMobile = studentInfo.LinkMail; order.Age = studentInfo.Age; return(order); }
/// <summary> /// 描述:获取所有奖学金券(未使用/已使用/已过期) /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-11-4</para> /// </summary> /// <returns>校长奖学金列表分页</returns> public static PageResult <CouponResponse> GetAllCoupons(string currentUserId, int pageIndex, int pageSize) { var currentDate = DateTime.Now; var query = new TblDctCouponRepository().GetAllCoupons(currentUserId, pageIndex, pageSize); var result = new PageResult <CouponResponse>(); result.Data = Mapper.Map <List <CouponResponse> >(query.Data); result.PageSize = query.PageSize; result.TotalData = query.TotalData; result.CurrentPage = query.CurrentPage; var studentInfoList = StudentService.GetStudentByIds(result.Data.Select(x => x.StudentId)).Result; var schoolList = new OrgService().GetAllSchoolList(); foreach (var item in result.Data) { if (item.Status == Dto.CouponStatus.HasUse) //已使用 { item.StatusName = EnumName.GetDescription(typeof(Dto.CouponStatus), Dto.CouponStatus.HasUse); } else if (item.Status == Dto.CouponStatus.NoUse && currentDate <= item.ExpireTime) //未使用 { item.StatusName = EnumName.GetDescription(typeof(Dto.CouponStatus), Dto.CouponStatus.NoUse); } else if (item.Status == Dto.CouponStatus.NoUse && item.ExpireTime < currentDate) //已过期 { item.StatusName = EnumName.GetDescription(typeof(Dto.CouponStatus), Dto.CouponStatus.NoEffect); item.Status = Dto.CouponStatus.NoEffect; } item.StudentName = studentInfoList.FirstOrDefault(x => x.StudentId == item.StudentId)?.StudentName; item.SchoolName = schoolList.FirstOrDefault(x => x.SchoolId.Trim() == item.SchoolId.Trim())?.SchoolName; } return(result); }
/// <summary> /// 根据订单Id获取定金信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-16</para> /// <param name="orderId">订单Id</param> /// </summary> /// <returns>订单未交接详情</returns> public OrderUnHandoverDetailResponse GetUnHandoverDetail(long orderId) { var result = new OrderUnHandoverDetailResponse(); var orderInfo = _depositRepository.Value.GetOdrDepositOrderById(orderId).Result;//定金订单信息 if (orderInfo != null) { //获取学生信息 var studentInfo = new StudentService(orderInfo.SchoolId).GetStudent(orderInfo.StudentId); result = new OrderUnHandoverDetailResponse { OrderId = orderInfo.DepositOrderId, PersonalId = orderInfo.PayeeId, PersonalName = orderInfo.Payee, StudentName = studentInfo?.StudentName, StudentNo = studentInfo?.StudentNo, OrderType = (int)OrderTradeType.DepositOrder, OrderTypeName = EnumName.GetDescription(typeof(OrderTradeType), (int)OrderTradeType.DepositOrder), CreateTime = DateTime.Now }; } return(result); }
/// <summary> /// 办理前获取学生的余额信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-08</para> /// </summary> /// <param name="iRequest">退费订单办理前获取详情的参数</param> /// <param name="companyId">公司编号</param> /// <returns>退费订单办理前的详情信息</returns> public override IRefundOrderTransactDetailReponse GetTransactDetail(IRefundOrderTransacDetailtRequest iRequest, string companyId) { BalanceRefundOrderTransactDetailResponse result = new BalanceRefundOrderTransactDetailResponse(); //获取学生相关信息 var studentInfo = new StudentService(this._schoolId).GetStudent(this._studentId); if (studentInfo != null) { List <GuardianRequest> guardianList = studentInfo.ContactPerson; result = new BalanceRefundOrderTransactDetailResponse() { StudentId = studentInfo.StudentId, StudentName = studentInfo.StudentName, StudentNo = studentInfo.StudentNo, Sex = EnumName.GetDescription(typeof(SexEnum), studentInfo.Sex), Mobile = studentInfo.LinkMobile, GuardianName = guardianList?[0].GuardianName, Age = Age.GetAgeByDate(studentInfo.Birthday, DateTime.Now), Amount = studentInfo.Balance }; } return(result); }
/// <summary> /// 补签-微信通知 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-03-15</para> /// </summary> /// <param name="className">班级名称</param> /// <param name="classRoom">教室</param> /// <param name="classTime">上课时间</param> /// <param name="replenishCode">补签码</param> /// <param name="studentId">学生Id</param> /// private void PushWeChatNotice(long studentId, string className, string classRoom, string classTime, string replenishCode) { //获取学生信息 var stuInfo = StudentService.GetStudentInfo(studentId); //微信推送标题 string title = string.Format(ClientConfigManager.HssConfig.WeChatTemplateTitle.SignReplenishNotice, stuInfo.StudentName); //家长确认补签地址 string signUrl = ClientConfigManager.HssConfig.ParentsConfirmSignUrl + "?replenishCode=" + replenishCode; WxNotifyProducerService wxNotifyProducerService = WxNotifyProducerService.Instance; WxNotifyInDto wxNotify = new WxNotifyInDto { Data = new List <WxNotifyItemInDto> { new WxNotifyItemInDto { DataKey = "first", Value = title }, new WxNotifyItemInDto { DataKey = "keyword1", Value = className }, new WxNotifyItemInDto { DataKey = "keyword2", Value = classRoom }, new WxNotifyItemInDto { DataKey = "keyword3", Value = classTime }, new WxNotifyItemInDto { DataKey = "remark", Value = ScanCodeAttendConstants.Msg, Color = "#FF2500" } }, ToUser = StudentService.GetWxOpenId(stuInfo), TemplateId = WeChatTemplateConstants.SignReplenishNotice, Url = signUrl }; wxNotifyProducerService.Publish(wxNotify); }
/// <summary> /// 课次不够扣的学生列表 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-21</para> /// </summary> /// <param name="lifeClassInfo">写生课信息</param> /// <param name="enrollOrderItemInfo">报名订单课程明细信息</param> /// <param name="classInfoList">班级信息列表</param> /// <param name="lifeInfoList">课次基础信息列表</param> /// <returns></returns> private List <LifeClassLackTimesListResponse> GetNotEnoughTimeStudnetList(TblTimLifeClass lifeClassInfo, IEnumerable <LifeClassStudentListResponse> enrollOrderItemInfo, List <TblDatClass> classInfoList, List <TblTimLesson> lifeInfoList) { List <LifeClassLackTimesListResponse> result = new List <LifeClassLackTimesListResponse>(); //课次不够扣的学生列表 var notEnoughTimeList = enrollOrderItemInfo.Where(a => (a.ClassTimes - a.ClassTimesUse < lifeClassInfo.UseLessonCount) && !lifeInfoList.Any(l => l.EnrollOrderItemId == a.EnrollOrderItemId)) .GroupBy(g => new { g.EnrollOrderItemId, g.StudentId, g.ClassId }) .Select(b => new { b.Key.EnrollOrderItemId, b.Key.ClassId, b.Key.StudentId }); if (notEnoughTimeList != null && notEnoughTimeList.Any()) { //获取该校区的所有学生 var studentInfoList = StudentService.GetStudentByIds(notEnoughTimeList.Select(a => a.StudentId).Distinct()).Result; foreach (var item in notEnoughTimeList) { var studentInfo = studentInfoList.FirstOrDefault(a => a.StudentId == item.StudentId); //学生对应的学生信息 var classInfo = classInfoList.FirstOrDefault(a => a.ClassId == item.ClassId); //班级信息 if (!result.Any(a => a.ClassNo == classInfo?.ClassNo && a.StudentName == studentInfo?.StudentName && a.StudentNo == studentInfo?.StudentNo)) { result.Add(new LifeClassLackTimesListResponse { ClassNo = classInfo?.ClassNo, StudentName = studentInfo?.StudentName, StudentNo = studentInfo?.StudentNo }); } } } return(result); }
/// <summary> /// 获取班级学生的考勤信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-03-13</para> /// </summary> /// <param name="studentLessonList">学生课程考勤列表信息</param> /// <param name="teacherInfoList">老师信息</param> /// <param name="year">年份</param> /// <param name="month">0表示学期,其他数字表示月份</param> /// <returns>班级学生的考勤信息</returns> private async Task <List <StudentAttendInfoResponse> > GetStudentAttendList(List <ViewStudentAttendance> studentLessonList, List <ClassTimetableTeacherResponse> teacherInfoList, int year, int month) { List <StudentAttendInfoResponse> result = new List <StudentAttendInfoResponse>(); //获取学生信息 var studentIdList = studentLessonList.GroupBy(g => g.StudentId).Select(a => a.Key.Value); var studentInfoList = await StudentService.GetStudentByIds(studentIdList); //获取学生补课信息 var replenishLessonList = await _vReplenishRepository.Value.GetLessonListByRootLessonIdAsync(studentLessonList.Select(a => a.LessonId).ToList()); //定义未考勤集合 List <int> notAttendStatusList = new List <int>() { (int)LessonStatus.None, (int)LessonStatus.NotCheckIn, (int)LessonStatus.Absent, (int)LessonStatus.Leave }; //获取学生某班级的课程考勤详情信息 foreach (var studentId in studentIdList) { //学生信息 var studentInfo = studentInfoList.FirstOrDefault(a => a.StudentId == studentId); //获取学生课程考勤信息(不包括补课、调课) var studentLessonInfo = studentLessonList.Where(a => a.StudentId == studentId); //获取学生补课考勤信息 var replenishLessonInfo = replenishLessonList.Where(a => a.StudentId == studentId); if (studentLessonInfo.Any()) { var attendInfo = GetStudentAttendInfo(studentLessonInfo, studentInfo, teacherInfoList, notAttendStatusList, replenishLessonInfo, year, month); result.Add(attendInfo); } } return(result); }
/// <summary> /// 描述:保存转班办理 /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-11-7</para> /// </summary> /// <param name="dto">要保存的转班信息</param> /// <returns>无</returns> public void ChangeIn(ChangeClassAddRequest dto) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, this._studentId.ToString())) { //验证 var outClassTimes = this.ValidateSubmit(dto); //实际转出课次 using (var unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); //1、插入转班表 var timChangeClassEntity = AddTimChangeClass(dto, outClassTimes, unitOfWork); //2、课表数据操作---作废 ChangeClassLessonFinisher lessonFinisher = new ChangeClassLessonFinisher(timChangeClassEntity, unitOfWork); LessonService lessonService = new LessonService(unitOfWork); lessonService.Finish(lessonFinisher);//课次销毁 //3、课表数据操作---转班重新排课 ChangeClassLessonCreator creator = new ChangeClassLessonCreator(timChangeClassEntity, lessonFinisher.EnrollOrderItemId, unitOfWork); lessonService.Create(creator); //4.修改学生状态及课次 var studentService = new StudentService(this._schoolId); studentService.UpdateStudentStatusById(this._studentId, unitOfWork); unitOfWork.CommitTransaction(); } catch (Exception e) { unitOfWork.RollbackTransaction(); throw; } } } }
/// <summary> /// 根据订金编号获取订金详情 /// <para>作 者::Huang GaoLiang </para> /// <para>创建时间:2018-11-10 </para> /// </summary> /// <param name="orderId">订金编号</param> /// <param name="companyId">公司编号</param> /// <returns>返回获取订金详情</returns> /// <exception cref="AMS.Core.BussinessException"> /// 异常ID:7,数据异常 /// </exception> public override IOrderDetailResponse GetOrderDetail(long orderId, string companyId) { TblOdrDepositOrder odrDepositOrder = _odrDepositOrderRepository.Value.GetOdrDepositOrderById(orderId).Result; DepositOrderDetailResponse info = Mapper.Map <TblOdrDepositOrder, DepositOrderDetailResponse>(odrDepositOrder); // 根据学生编号查询学生信心 StudentDetailResponse s = new StudentService(_schoolId).GetStudent(info.StudentId); if (s == null) { throw new BussinessException((byte)ModelType.SignUp, 7); } info.StudentName = s.StudentName; info.SexName = s.SexName; info.HeadFaceUrl = s.HeadFaceUrl; info.Age = s.Age; info.IDNumber = s.IDNumber; info.IDType = s.IDType; info.IDTypeName = s.IdTypeName; info.ContactPerson = s.ContactPerson; return(info); }
/// <summary> /// 获取上课学生列表 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-03-11</para> /// </summary> /// <param name="stuLessonList">学生课次信息</param> /// <returns>学生列表</returns> private List <ClassStudent> GetClassStudentList(IEnumerable <StudentLesson> stuLessonList) { List <ClassStudent> res = new List <ClassStudent>(); //2.筛选学生ID var stuIdList = stuLessonList.Select(x => x.StudentId).Distinct().ToList(); //3.获取学生信息 var studentList = StudentService.GetStudentByIds(stuIdList) .Result .OrderBy(x => x.StudentName) .ToList(); // 0=未考勤 // 1=正常签到 显示考勤时间 // 2=补签未确认(缺勤) 显示撤回补签 // 3=补签已确认 显示考勤时间 // 4=请假(当前时间之前) 判断AdjustStatus是否已安排补课 // 5=缺勤 判断AdjustStatus是否已安排补课 // 6=请假(当前时间之后) 无需判断AdjustStatus是否已安排补课 显示 -- // 7=补签未确认(请假) 显示撤回补签 //4.生成考勤状态 foreach (var stu in studentList) { var stuLesson = stuLessonList.FirstOrDefault(x => x.StudentId == stu.StudentId); if (stuLesson == null) { continue; } ClassStudent student = new ClassStudent { StudentId = stu.StudentId, StudentName = stu.StudentName, LessonId = stuLesson.LessonId, AttendStatus = 0, AdjustStatus = false }; AdjustType stuAdjustType = (AdjustType)stuLesson.AdjustType; AttendStatus stuAttendStatus = (AttendStatus)stuLesson.AttendStatus; //上课结束时间+缓冲时间 DateTime eTime; if (stuLesson.LessonType == (int)LessonType.RegularCourse) { //上课结束时间+缓冲时间 eTime = DateTime.Parse(stuLesson.ClassDate.ToString("yyyy-MM-dd") + " " + stuLesson.ClassEndTime); } else { eTime = DateTime.Parse(stuLesson.ClassEndTime); } //0=未考勤 if (DateTime.Now < eTime) { student.AttendStatus = 0; } //1=正常签到 显示考勤时间 if (stuAttendStatus == AttendStatus.Normal) { student.AttendStatus = 1; if (stuLesson.AttendDate.Value.Date == stuLesson.ClassDate.Date) { student.AttendTime = stuLesson.AttendDate.Value.ToString("HH:mm"); } else { student.AttendTime = stuLesson.AttendDate.Value.ToString("yyyy-MM-dd HH:mm"); } } //2=补签未确认(缺勤) 显示撤回补签 if (stuAttendStatus != AttendStatus.Leave && stuAdjustType == AdjustType.SUPPLEMENTNOTCONFIRMED) { student.AttendStatus = 2; } //3=补签已确认 显示考勤时间 else if (stuAdjustType == AdjustType.SUPPLEMENTCONFIRMED) { student.AttendStatus = 3; if (stuLesson.AttendDate.Value.Date == stuLesson.ClassDate.Date) { student.AttendTime = stuLesson.AttendDate.Value.ToString("HH:mm"); } else { student.AttendTime = stuLesson.AttendDate.Value.ToString("yyyy-MM-dd HH:mm"); } } //4=请假(当前时间之前) 判断AdjustStatus是否已安排补课 else if (eTime < DateTime.Now && stuAttendStatus == AttendStatus.Leave) { student.AttendStatus = 4; if (stuLesson.AdjustType == (int)AdjustType.MAKEUP || stuLesson.AdjustType == (int)AdjustType.SUPPLEMENTARYWEEK) { student.AdjustStatus = true; } } //5=缺勤(当前时间之后) 判断AdjustStatus是否已安排补课 else if (DateTime.Now > eTime && stuAttendStatus == AttendStatus.NotClockIn) { student.AttendStatus = 5; if (stuAdjustType == AdjustType.MAKEUP || stuAdjustType == AdjustType.SUPPLEMENTARYWEEK) { student.AdjustStatus = true; } } //6=请假(当前时间之后) 无需判断AdjustStatus是否已安排补课 显示 -- else if (eTime > DateTime.Now && stuAttendStatus == AttendStatus.Leave) { student.AttendStatus = 6; } //7=补签未确认(请假) 显示撤回补签 else if (stuAttendStatus == AttendStatus.Leave && stuAdjustType == AdjustType.SUPPLEMENTNOTCONFIRMED) { student.AttendStatus = 7; } res.Add(student); } return(res); }
/// <summary> /// 描述:办理 /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-11-8</para> /// </summary> /// <param name="iRequest">要退费的信息</param> /// <param name="companyId">公司编号</param> /// <returns>无</returns> /// <exception cref="AMS.Core.BussinessException"> /// 异常ID:22,异常描述:找不到可退班的订单课程 /// 异常ID:20,异常描述:该订单课程已退班退费 /// </exception> public override void Transact(IRefundOrderTransactRequest iRequest, string companyId) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, this._studentId.ToString())) { var request = iRequest as LeaveClassOrderAddRequest; var vailteRequest = EnrollOrderService.GetEnrollOrderItemIdByEnroOrderList(request.RefundCourseLesson); if (!request.RefundCourseLesson.Any()) { throw new BussinessException((byte)ModelType.Order, 22); } if (vailteRequest.Any(x => x.Status != OrderItemStatus.Enroll)) //如果订单课程不是已报名,则抛出异常 { throw new BussinessException((byte)ModelType.Order, 20); } //获取要退班的课次 var courseLessonList = base.GetCourseLessonList(request.LeaveTime, companyId).Where(x => request.RefundCourseLesson.Contains(x.EnrollOrderItemId)).ToList(); if (!courseLessonList.Any()) //如果要退费的订单课程为空,则抛出异常 { throw new BussinessException((byte)ModelType.Order, 22); } using (var unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); //1.退费订单 var tblOdrRefundOrder = AddOdrRefundOrder(request, courseLessonList, unitOfWork); //2.退费订单课程明细 AddOdrRefundOrdeEnroll(courseLessonList, tblOdrRefundOrder, unitOfWork); //3.其他费用 AddOdrRefundOrderCost(request, tblOdrRefundOrder, unitOfWork); //4.支付信息 AddOdrRefundPay(request, tblOdrRefundOrder, unitOfWork); //5.退班详细信息 var tblOdrLeaveClassOrder = AddOdrLeaveClassOrder(request, tblOdrRefundOrder, unitOfWork); //6.添加附件 AddAttachment(request, tblOdrRefundOrder, unitOfWork); //7、课次调用 LeaveClassLessonFinisher leaveSchoolFinisher = new LeaveClassLessonFinisher(tblOdrRefundOrder, tblOdrLeaveClassOrder, request.RefundCourseLesson, unitOfWork); LessonService lessonService = new LessonService(unitOfWork); lessonService.Finish(leaveSchoolFinisher);//课次销毁 //8、资金调用 LeaveClassOrderTrade orderTrade = new LeaveClassOrderTrade(tblOdrRefundOrder, request.RefundType); TradeService trade = new TradeService(orderTrade, unitOfWork); trade.Trade(); //9、修改为退班状态 EnrollOrderService service = new EnrollOrderService(this._schoolId); var enrollOrderItemIdList = courseLessonList.Select(x => x.EnrollOrderItemId).ToList(); service.ChangeToLeaveClass(enrollOrderItemIdList, unitOfWork).Wait(); //10.修改学生状态 var studentService = new StudentService(this._schoolId); studentService.UpdateStudentStatusById(this._studentId, unitOfWork); unitOfWork.CommitTransaction(); } catch (Exception ex) { unitOfWork.RollbackTransaction(); throw; } } } }
/// <summary> /// 微信通知 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-03-15</para> /// </summary> private void PushWeChatNotice() { var stuInfo = StudentService.GetStudentInfo(_request.StudentId); var inLesson = this._inLessonList.FirstOrDefault(); string pushClassTime = this._outLessonList .Select(x => DateTime.Parse(x.ClassDate.ToString("yyyy-MM-dd") + " " + x.ClassBeginTime)) .Min().ToString("yyyy.MM.dd HH:mm"); //first={0}家长,您好!因{1}于{2}请假,为了保证孩子的学习效果,我们特别为孩子安排了补课,具体时间如下: string title = string.Format( ClientConfigManager.HssConfig.WeChatTemplateTitle.MakeupNotice, stuInfo.StudentName, stuInfo.StudentName, pushClassTime); //keyword1=上课时间 var classTimeList = this._inLessonList.Select(x => x.ClassBeginTime + "-" + x.ClassEndTime); string classTime = $"{inLesson.ClassDate.ToString("yyyy.MM.dd")} {string.Join("、", classTimeList)}"; //keyword2=班级名称 string className = CourseService.GetByCourseId(inLesson.CourseId)?.ClassCnName ?? string.Empty; //keyword3=教室 string classRoom = new ClassRoomService(inLesson.ClassRoomId)?.ClassRoomInfo?.RoomNo ?? string.Empty; //keyword4=老师名称 string teacherName = TeachService.GetTeacher(inLesson.TeacherId)?.TeacherName ?? string.Empty; //remark=校区名称 string schoolName = OrgService.GetSchoolBySchoolId(_schoolId)?.SchoolName ?? string.Empty; WxNotifyProducerService wxNotifyProducerService = WxNotifyProducerService.Instance; WxNotifyInDto wxNotify = new WxNotifyInDto { Data = new List <WxNotifyItemInDto> { new WxNotifyItemInDto { DataKey = "first", Value = title }, new WxNotifyItemInDto { DataKey = "keyword1", Value = classTime }, new WxNotifyItemInDto { DataKey = "keyword2", Value = className }, new WxNotifyItemInDto { DataKey = "keyword3", Value = classRoom }, new WxNotifyItemInDto { DataKey = "keyword4", Value = teacherName }, new WxNotifyItemInDto { DataKey = "remark", Value = schoolName } }, ToUser = StudentService.GetWxOpenId(stuInfo), TemplateId = WeChatTemplateConstants.MakeupNotice, Url = string.Empty }; wxNotifyProducerService.Publish(wxNotify); }