using System; using System.Collections.Generic; using System.Linq; using Edu.Cache.User; using Edu.Common.API; using Edu.Common.Enum.Course; using Edu.Common.Enum.Finance; using Edu.Common.Enum.Sale; using Edu.Common.Plugin; using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Log; using Edu.Model.ViewModel.Sell; using Edu.Module.Course; using Edu.WebApi.Filter; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; namespace Edu.WebApi.Controllers.Course { [Route("api/[controller]/[action]")] [ApiExceptionFilter] [ApiController] [EnableCors("AllowCors")] public class OrderController : BaseController { /// /// 订单处理类对象 /// private readonly OrderModule orderModule = AOP.AOPHelper.CreateAOPObject(); #region 产品管理 /// /// 获取日语培训列表 /// /// [HttpPost] public ApiResult GetClassPruductList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = new RB_Class_ViewModel() { ClassName = base.ParmJObj.GetStringValue("ClassName"), ClassNo = base.ParmJObj.GetStringValue("ClassNo"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), Teacher_Id = base.ParmJObj.GetInt("Teacher_Id"), CouseId = base.ParmJObj.GetInt("CouseId"), Q_CanApply = base.ParmJObj.GetInt("Q_CanApply"), JoinStartTime = base.ParmJObj.GetStringValue("JoinStartTime"), JoinEndTime = base.ParmJObj.GetStringValue("JoinEndTime"), CourseSubject=base.ParmJObj.GetInt("CourseSubject"), }; dmodel.School_Id = -1; var schoolId = base.ParmJObj.GetStringValue("School_Id"); if (!string.IsNullOrEmpty(schoolId)) { dmodel.School_Id = base.ParmJObj.GetInt("School_Id"); } dmodel.Group_Id = userInfo.Group_Id; var list = orderModule.GetClassPruductListModule(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); List result = new List(); foreach (var x in list) { int IsInsertClass = 0;//不能插班报入 int SurplusNum = x.ClassPersion - x.OrderStudentCount; if (x.ClassStatus != ClassStatusEnum.EndClass && SurplusNum > 0) { IsInsertClass = 1;//可以插班报入 } var obj = new { x.ClassId, x.ClassName, x.ClassNo, x.CourseName, x.CouseId, x.CourseFeature, x.ClassHours, x.Teacher_Id, x.TeacherName, x.TeacherHead, x.RoomName, x.ClassStyle, ClassStyleName = x.ClassStyle.ToName(), OpenTime = x.OpenTime.ToString("yyyy年MM月dd日"), EndOrderTime =Common.ConvertHelper.FormatDate2(x.EndOrderTime), IsCanApply = x.EndOrderTime >= Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")) && x.ClassPersion > x.OrderStudentCount ? 1 : 0, OriginalPrice = x.CourseOriginalPrice, SellPrice = x.CourseSellPrice, x.IsStepPrice, x.ClassPersion, x.OutRemark, x.OrderStudentCount, SurplusNum, ClassStepPriceList = x.ClassStepPriceList.Select(z => new { z.ClassStepPriceId, z.PersionNum, z.PersionPrice }), ClassTimeList = x.DefaultTimeList, ClassPlanList = x.ClassPlanList.Select(z => new { z.WeekDay, ClassDate = x.ClassStyle == ClassStyleEnum.FixedDate ? Common.ConvertHelper.FormatDate(z.ClassDate) : "" }), x.SchoolName, UpdateTime = Common.ConvertHelper.FormatTime(x.UpdateTime), x.OtherCourseList, IsChaBan = IsInsertClass, x.CourseSubject, x.CourseSubjectName, x.B2CRatio, x.B2CReNewRatio, x.B2BRebateRatio, x.B2BReNewRatio, x.SchoolRebateRatio, x.SchoolReNewRatio }; result.Add(obj); } pageModel.PageData = result; return ApiResult.Success("", pageModel); } /// /// 获取班级名称 /// /// [HttpPost] public ApiResult GetClassNameList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); string ClassIds = parms.GetStringValue("ClassIds"); if (string.IsNullOrEmpty(ClassIds)) { return ApiResult.ParamIsNull("请传递班级ids"); } var list = orderModule.GetClassNameList(ClassIds); return ApiResult.Success("", list.Select(x => new { x.ClassId, x.ClassName, x.School_Id })); } /// /// 获取留学就业产品名称 /// /// [HttpPost] public ApiResult GetStudyNameList() { string Ids = base.ParmJObj.GetStringValue("Ids"); if (string.IsNullOrEmpty(Ids)) { return ApiResult.ParamIsNull("请传留学就业产品编号"); } var list = orderModule.GetStudyAbroadListModule(Ids); return ApiResult.Success("", list.Select(x => new { ClassId = x.Id, ClassName = x.Name, x.School_Id })); } #endregion #region 订单管理 /// /// 获取班级/留学就业订单列表 /// /// [HttpPost] public ApiResult GetClassOrderList() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); var userInfo = base.UserInfo; int ClassId = parms.GetInt("ClassId", 0); int SourceId = parms.GetInt("SourceId", 0); if (ClassId <= 0 && SourceId <= 0) { return ApiResult.ParamIsNull(); } var orderList = orderModule.GetClassOrderList(ClassId, userInfo.Group_Id, SourceId, out object ClassInfo); return ApiResult.Success("", new { ClassInfo, OrderList = new { NorList = orderList.Where(x => x.OrderState != Common.Enum.Course.OrderStateEnum.Cancel).Select(x => new { x.OrderId, x.ClassId, x.ClassName, x.CourseId, x.CourseName, x.StartClassHours, x.JoinType, x.TargetJoinType, x.TargetOrderId, x.TargetClassName, x.SourceOrderId, x.SourceClassName, x.ClassSchoolId, x.TradeWay, x.Class_Price, x.Unit_Price, x.GuestNum, x.PreferPrice, x.Income, x.Refund, x.DiscountMoney, x.PlatformTax, x.OrderType, DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney), x.OrderState, OrderStateName = x.OrderState.ToName(), x.OrderSource, OrderSourceName = x.OrderSource.ToName(), x.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "", x.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "", x.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(x.CourseConsultantId)?.AccountName ?? "", YFCommissionMoney = GetOrderYFCommission(x), x.CommissionMoney, x.ExtraCommissionMoney, x.ExtraRewardMoney, x.ExtraDeductMoney, x.IsCommissionGive, x.CommissionBack, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), x.SaleRemark, x.TeacherRemark, x.RectorRemark, x.DirectorRemark, x.OfferId, x.HelpEnterId, HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName, x.GeneralOccupation, x.EduOccupation, x.IsLessPrice, x.LessPrice, OpenTime = Common.ConvertHelper.FormatDate(x.OpenTime), x.EffectStatus, x.EffectStatusStr, EffectTime = Common.ConvertHelper.FormatDate(x.EffectTime), x.UpOrderId, x.VisitorReserveId, x.RenewOrderId, x.FirstOrderId, x.IsBackClass, x.LXConfirmState, x.CustomerId, x.CustomerName, x.CustomerTel, SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new { qitem.S_ClassId, qitem.S_ClassName, qitem.S_JoinType, S_JoinTypeName = qitem.S_JoinType.ToName(), qitem.S_OrderId, qitem.T_ClassId, qitem.T_ClassName, qitem.T_JoinType, T_JoinTypeName = qitem.T_JoinType.ToName(), qitem.T_OrderId }), SaleRemarkList = x.SaleRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), TeacherRemarkList = x.TeacherRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), RectorRemarkList = x.RectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), DirectorRemarkList = x.DirectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), GuestList = x.GuestList.Select(z => new { z.Id, z.GuestName, z.GuestState, z.GuestStateStr, z.ContractNo, z.ContractId, z.ContractStatus, z.ContractStatusStr, z.GuestContractNo, z.ContractType, z.ContractUrl, z.ContractUrlList, }), ContractList = x.ContractList.Select(z => new { z.Id, z.StudentName, z.ContractNo, z.GuestId, z.Status }) }), CancelList = orderList.Where(x => x.OrderState == Common.Enum.Course.OrderStateEnum.Cancel).Select(x => new { x.OrderId, x.ClassId, x.TradeWay, x.Class_Price, x.Unit_Price, x.GuestNum, x.PreferPrice, x.Income, x.Refund, x.DiscountMoney, x.OrderType, x.PlatformTax, DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.DiscountMoney), x.OrderState, OrderStateName = x.OrderState.ToName(), x.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "", x.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "", x.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(x.CourseConsultantId)?.AccountName ?? "", YFCommissionMoney = GetOrderYFCommission(x), x.CommissionMoney, x.ExtraCommissionMoney, x.ExtraRewardMoney, x.ExtraDeductMoney, x.IsCommissionGive, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), x.SaleRemark, x.TeacherRemark, x.RectorRemark, x.DirectorRemark, x.OfferId, x.HelpEnterId, HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName, x.GeneralOccupation, x.EduOccupation, x.IsLessPrice, x.LessPrice, x.CustomerId, x.CustomerName, x.CustomerTel, SaleRemarkList = x.SaleRemarkList.Select(z => new { z.Id, z.Content, CreateBy = UserReidsCache.GetUserLoginInfo(z.CreateBy)?.AccountName ?? "", CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), TeacherRemarkList = x.TeacherRemarkList.Select(z => new { z.Id, z.Content, CreateBy = UserReidsCache.GetUserLoginInfo(z.CreateBy)?.AccountName ?? "", CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), RectorRemarkList = x.RectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = UserReidsCache.GetUserLoginInfo(z.CreateBy)?.AccountName ?? "", CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), DirectorRemarkList = x.DirectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = UserReidsCache.GetUserLoginInfo(z.CreateBy)?.AccountName ?? "", CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), GuestList = x.GuestList.Select(z => new { z.Id, z.GuestName, z.GuestState }), ContractList = x.ContractList.Select(z => new { z.Id, z.StudentName, z.ContractNo, z.GuestId, z.Status }) }) } }); } /// /// 获取订单应发提成 /// /// /// private static decimal GetOrderYFCommission(RB_Order_ViewModel x) { if (x.CommissionType == x.CommissionTypeTH) { if (x.CommissionType == 1) { return x.CommissionRate + x.CommissionRateTH - x.LessPrice; } else { return Math.Round((x.PreferPrice - x.DiscountMoney + x.LessPrice) * (x.CommissionRate + x.CommissionRateTH) / 100, 2, MidpointRounding.AwayFromZero) - x.LessPrice; } } else { decimal commission1 = x.CommissionType == 1 ? x.CommissionRate : Math.Round((x.PreferPrice - x.DiscountMoney + x.LessPrice) * x.CommissionRate / 100, 2, MidpointRounding.AwayFromZero); decimal commission2 = x.CommissionTypeTH == 1 ? x.CommissionRateTH : Math.Round((x.PreferPrice - x.DiscountMoney + x.LessPrice) * x.CommissionRateTH / 100, 2, MidpointRounding.AwayFromZero); return commission1 + commission2 - x.LessPrice; } } /// /// 获取班级订单下拉列表 /// /// [HttpPost] public ApiResult GetSelectClassOrderList() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); var userInfo = base.UserInfo; var query = new RB_Order_ViewModel() { ClassId = parms.GetInt("ClassId", 0), OrderId = parms.GetInt("OrderId"), Group_Id = base.UserInfo.Group_Id, OrderState = OrderStateEnum.Normal }; if (query.ClassId <= 0) { return ApiResult.ParamIsNull(); } var orderList = orderModule.GetClassOrderListExtModule(query); return ApiResult.Success("", orderList.Select(x => new { x.OrderId, x.ClassId, x.ClassName, x.CourseId, x.CourseName, x.GuestList, x.ClassHours, x.StartClassHours, })); } /// /// 获取客户转订单续费状态 /// /// [HttpPost] public ApiResult GetOrderGuestRenewState() { var userInfo = base.UserInfo; string StuIds = base.ParmJObj.GetStringValue("StuIds"); if (string.IsNullOrEmpty(StuIds)) { return ApiResult.ParamIsNull("请传递学生名单"); } var Robj = orderModule.GetOrderGuestRenewState(StuIds, userInfo, out string msg); if (msg == "") { return ApiResult.Success("", Robj); } else { return ApiResult.Failed(msg); } } /// /// 新增修改订单 /// /// [HttpPost] public ApiResult SetClassOrder() { var userInfo = base.UserInfo; RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), ClassId = base.ParmJObj.GetInt("ClassId"), GuestNum = base.ParmJObj.GetInt("GuestNum"), OrderSource = (OrderSourceEnum)base.ParmJObj.GetInt("OrderSource"), OrderType = (OrderTypeEnum)base.ParmJObj.GetInt("OrderType"), PreferPrice = base.ParmJObj.GetDecimal("PreferPrice"), SaleRemark = base.ParmJObj.GetStringValue("SaleRemark"), SourceId = base.ParmJObj.GetInt("SourceId"), Unit_Price = base.ParmJObj.GetDecimal("Unit_Price"), HelpEnterId = base.ParmJObj.GetInt("HelpEnterId"), GeneralOccupation = base.ParmJObj.GetStringValue("GeneralOccupation"), EduOccupation = base.ParmJObj.GetStringValue("EduOccupation"), OrderNature = (OrderNatureEnum)base.ParmJObj.GetInt("OrderNature"), OldPreferPrice = base.ParmJObj.GetDecimal("OldPreferPrice"), CourseId = base.ParmJObj.GetInt("CourseId"), StartClassHours = base.ParmJObj.GetInt("StartClassHours"), EffectTime = base.ParmJObj.GetDateTime("EffectTime"), UpOrderId = base.ParmJObj.GetInt("UpOrderId"), VisitorReserveId = base.ParmJObj.GetInt("VisitorReserveId"), JoinType = OrderJoinTypeEnum.Normal, TargetJoinType = OrderJoinTypeEnum.Normal, DiscountMoney = base.ParmJObj.GetDecimal("DiscountMoney"), PerDiscountMoney = base.ParmJObj.GetDecimal("PerDiscountMoney"), IsLessPrice = base.ParmJObj.GetInt("IsLessPrice"), LessPrice = base.ParmJObj.GetDecimal("LessPrice"), PerLessMoney = base.ParmJObj.GetDecimal("PerLessMoney"), CustomerId = base.ParmJObj.GetInt("CustomerId"), StuIds = base.ParmJObj.GetStringValue("StuIds"), OrderIdentify = base.ParmJObj.GetInt("OrderIdentify"), CourseConsultantId = base.ParmJObj.GetInt("CourseConsultantId"), EnterID = base.ParmJObj.GetInt("EnterID") }; var IsInsertClass = base.ParmJObj.GetInt("IsChaBan"); if (IsInsertClass == 1) { demodel.JoinType = OrderJoinTypeEnum.InsertClass; } if (demodel.OrderType == OrderTypeEnum.CourseOrder && demodel.ClassId <= 0) { return ApiResult.ParamIsNull("请传递班级id"); } if (demodel.GuestNum <= 0) { return ApiResult.ParamIsNull("请传递报名人数"); } if (demodel.Unit_Price <= 0) { return ApiResult.ParamIsNull("成交单价不能小于0"); } if (demodel.OrderSource <= 0) { return ApiResult.ParamIsNull("请选择客人来源"); } if (demodel.OrderIdentify == 2 && string.IsNullOrEmpty(demodel.StuIds) && demodel.OrderId == 0) { return ApiResult.ParamIsNull("请传递选择客户"); } if (!string.IsNullOrEmpty(demodel.StuIds)) { int gNum = JsonHelper.DeserializeObject>("[" + demodel.StuIds + "]").Count(); if (demodel.GuestNum != gNum) { return ApiResult.ParamIsNull("客人数量不正确"); } } demodel.Group_Id = userInfo.Group_Id; demodel.School_Id = userInfo.School_Id; demodel.Dept_Id = userInfo.DeptId; demodel.OrderForm = OrderFormEnum.Computer; if (demodel.OrderIdentify != 2) { demodel.EnterID = userInfo.Id; //由前端传递了, 可能会不存在 (此字段为市场人员) } demodel.OrderState = OrderStateEnum.Normal; demodel.TradeWay = TradeWayEnum.OnLine; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; var flag = false; string message = ""; if (demodel.OrderType == OrderTypeEnum.CourseOrder) { if (demodel.JoinType == OrderJoinTypeEnum.Normal) { demodel.StartClassHours = 0; } else if (demodel.JoinType == OrderJoinTypeEnum.InsertClass) { if (demodel.CourseId <= 0) { return ApiResult.ParamIsNull(message: "请选择插班课程!"); } } flag = orderModule.SetClassOrderModule(demodel, userInfo, base.CheckUserActionAuth("Edit_Order"), out message); } else { flag = orderModule.SetStudyOrderModule(demodel, userInfo, out message); } return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message); } /// /// 设置订单应收总额 /// /// [HttpPost] public ApiResult SetOrderPreferPrice() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0); decimal PreferPrice = parms.GetDecimal("PreferPrice"); if (OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } bool flag = orderModule.SetOrderPreferPrice(OrderId, PreferPrice, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 获取订单详情 /// /// [HttpPost] public ApiResult GetClassOrderInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull(); } var model = orderModule.GetClassOrderInfoModule(OrderId); if (model == null) { return ApiResult.Failed("订单不存在"); } var list = new List(); if (model.OrderType == OrderTypeEnum.CourseOrder) { list = orderModule.GetClassOrderSetpPrice(OrderId); } return ApiResult.Success("", new { OrderInfo = new { model.OrderId, model.ClassId, model.GuestNum, model.Class_Price, model.Unit_Price, model.PreferPrice, model.OrderSource, OrderSourceName = model.OrderSource.ToName(), model.SaleRemark, model.OrderType, model.SourceId, model.HelpEnterId, model.GeneralOccupation, model.EduOccupation, model.IsLessPrice, model.LessPrice, model.PerLessMoney, model.DiscountMoney, model.PerDiscountMoney, model.OrderNature, OrderNatureName = model.OrderNature.ToName(), model.OldPreferPrice, IsChaBan = model.JoinType == OrderJoinTypeEnum.InsertClass ? 1 : 0, model.CourseId, model.StartClassHours, EffectTime = Common.ConvertHelper.FormatDate(model.EffectTime), model.UpOrderId, model.VisitorReserveId, model.JoinType, model.TargetJoinType, model.SourceOrderId, model.TargetOrderId, model.CustomerId, model.CourseConsultantId, model.OrderIdentify, model.B2CRatio, model.B2CReNewRatio, model.B2BRebateRatio, model.B2BReNewRatio, model.SchoolRebateRatio, model.SchoolReNewRatio }, StepPriceList = list.Select(x => new { x.Id, x.PersionNum, x.PersionPrice }) }); ; } /// /// 订单详情 /// /// [HttpPost] public ApiResult GetClassOrderForDetail() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull(); } var model = orderModule.GetClassOrderInfoModule(OrderId); if (model == null) { return ApiResult.Failed("订单不存在"); } return ApiResult.Success("", new { model.OrderId, model.ClassId, model.ClassName, model.TradeWay, model.Class_Price, model.Unit_Price, model.GuestNum, model.PreferPrice, model.Income, model.Refund, model.DiscountMoney, model.PlatformTax, DueInMoney = model.PreferPrice - (model.Income - model.Refund + model.PlatformTax + model.DiscountMoney), model.OrderState, OrderStateName = model.OrderState.ToName(), model.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(model.EnterID)?.AccountName ?? "", model.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(model.CreateBy)?.AccountName ?? "", model.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(model.CourseConsultantId)?.AccountName ?? "", model.CommissionMoney, model.ExtraRewardMoney, model.ExtraDeductMoney, model.IsCommissionGive, CreateTime = model.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateTime2 = model.CreateTime.ToString("yyyy年MM月dd日"), model.OrderType, model.SourceId, OrderTypeName = Common.Plugin.EnumHelper.ToName(model.OrderType), OpenTime = Common.ConvertHelper.FormatDate(model.OpenTime), }); } /// /// 取消订单 /// /// [HttpPost] public ApiResult CancelClassOrder() { var userInfo = base.UserInfo; JObject prams = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = prams.GetInt("OrderId", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull("订单号不存在"); } bool flag = orderModule.CancelClassOrder(OrderId, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 修改订单销售 /// /// [HttpPost] public ApiResult UpdateOrderSale() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); var userInfo = base.UserInfo; int OrderId = parms.GetInt("OrderId", 0); int EnterID = parms.GetInt("EnterID", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } if (EnterID <= 0) { return ApiResult.ParamIsNull("请传递销售id"); } string msg = orderModule.UpdateOrderSale(OrderId, EnterID, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取班级订单备注列表 /// /// [HttpPost] public ApiResult GetClassOrderRemarkList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (dmodel.OrderId <= 0) { return ApiResult.ParamIsNull(); } var list = orderModule.GetClassOrderRemarkPageModule(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.OrderId, x.Content, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy).AccountName, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), x.Type }); return ApiResult.Success("", pageModel); } /// /// 修改订单备注 /// /// [HttpPost] public ApiResult UpdateOrderRemark() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); var userInfo = base.UserInfo; int OrderId = parms.GetInt("OrderId", 0); int Type = parms.GetInt("Type", 0);// 类型 1销售 2教务 3校长 4经理 string Remark = parms.GetStringValue("Remark"); if (OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } if (Type <= 0) { return ApiResult.ParamIsNull("请传递类型"); } bool flag = orderModule.UpdateOrderRemark(OrderId, Type, Remark, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 修改订单提成 /// /// [HttpPost] public ApiResult UpdateOrderCommission() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); var userInfo = base.UserInfo; int OrderId = parms.GetInt("OrderId", 0); decimal CommissionMoney = parms.GetDecimal("CommissionMoney"); decimal ExtraRewardMoney = parms.GetDecimal("ExtraRewardMoney"); decimal ExtraDeductMoney = parms.GetDecimal("ExtraDeductMoney"); int Type = parms.GetInt("Type", 1);// 类型 1提成 2额外金额 if (OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } bool flag = orderModule.UpdateOrderCommission(OrderId, Type, CommissionMoney, ExtraRewardMoney, ExtraDeductMoney, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 获取班级订单日志列表 /// /// [HttpPost] public ApiResult GetClassOrderLogList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (dmodel.SourceId <= 0) { return ApiResult.ParamIsNull(); } dmodel.Type = 2;//订单日志 var list = orderModule.GetClassOrderLogList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.LogContent, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy).AccountName, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }); return ApiResult.Success("", pageModel); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetGuestBasicsEnumList() { var list = EnumHelper.EnumToList(typeof(GuestBasicsEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetGuestEducationEnumList() { var list = EnumHelper.EnumToList(typeof(GuestEducationEnum)); return ApiResult.Success(data:list); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetGuestLearningGoalsEnumList() { var list = EnumHelper.EnumToList(typeof(GuestLearningGoalsEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetOrderFormEnumList() { var list = EnumHelper.EnumToList(typeof(OrderFormEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetOrderSourceEnumList() { var list = EnumHelper.EnumToList(typeof(OrderSourceEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetOrderStateEnumList() { var list = EnumHelper.EnumToList(typeof(OrderStateEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 订单转班 /// /// [HttpPost] public ApiResult SetClassOrderCareOfClass() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0); int ClassId = parms.GetInt("ClassId", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } if (ClassId <= 0) { return ApiResult.ParamIsNull("请传递转入班级id"); } string msg = orderModule.SetClassOrderCareOfClass(OrderId, ClassId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 订单使用最新班级报价 /// /// [HttpPost] public ApiResult SetClassOrderUseNewClassPrice() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull(); } bool flag = orderModule.SetClassOrderUseNewClassPrice(OrderId); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } #endregion #region 学生名单 /// /// 获取学生名单分页列表 /// /// [HttpPost] public ApiResult GetOrderGuestPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = new RB_Order_Guest_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), ClassId = base.ParmJObj.GetInt("ClassId"), GuestState =(GuestStateEnum)base.ParmJObj.GetInt("GuestState"), GuestName = base.ParmJObj.GetStringValue("GuestName"), SourceId = base.ParmJObj.GetInt("SourceId"), }; dmodel.Group_Id = userInfo.Group_Id; var list = orderModule.GetOrderGuestPageModule(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.GuestName, x.OrderId, x.Profession, x.Sex, SexStr = x.Sex == 1 ? "男" : "女", x.Age, BirthDate = Common.ConvertHelper.FormatDate(x.BirthDate), Mobile=x.StuTel, x.Basics, x.Education, EducationName = x.Education.ToName(), x.GuestSource, GuestSourceName = x.GuestSource.ToName(), x.LearningGoals, x.LearningGoalsName, x.Contact, x.ContactMobile, x.IDCard, x.ContactAddress, x.Domicile, UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"), IsShow = true, x.GraduatedSchool, x.GraduatedMajor, x.VolunteerMajor, x.Price, x.StudyRemark, x.StuIcon, x.CourseId, x.CourseName, x.StartClassHours, x.JoinType, JoinTypeName = x.JoinType.ToName(), x.TargetJoinType, TargetJoinTypeName = x.TargetJoinType.ToName(), x.SourceOrderId, x.SourceClassName, x.TargetOrderId, x.TargetClassName, x.EffectStatus, x.EffectStatusStr, EffectTime = Common.ConvertHelper.FormatDate(x.EffectTime), x.UpOrderId, x.GuestContractNo, x.ContractType, x.ContractUrl, x.ContractUrlList, x.TotalHours, x.ValidClassHours, x.CompleteHours, x.MakeUpHours, SurplusHours=x.TotalHours-x.CompleteHours, x.GuestState, x.GuestStateStr, GraduationTime = Common.ConvertHelper.FormatDate(x.GraduationTime), BackClassList = x?.GuestEduReceiptList?.Where(qitem => qitem.ReceiptType == ReceiptTypeEnum.BackClass)?.ToList(), StopClassList = x?.GuestEduReceiptList?.Where(qitem => qitem.ReceiptType == ReceiptTypeEnum.StopClass)?.ToList(), InvitationClassList = x?.GuestEduReceiptList?.Where(qitem => qitem.ReceiptType == ReceiptTypeEnum.InvitationClass)?.ToList(), OrderTransClassList = x?.GuestEduReceiptList?.Where(qitem => qitem.ReceiptType == ReceiptTypeEnum.OrderTransClass)?.ToList(), OrderSplitClassList = x?.GuestEduReceiptList?.Where(qitem => qitem.ReceiptType == ReceiptTypeEnum.OrderSplitClass)?.ToList(), }); return ApiResult.Success("", pageModel); } /// /// 新增 修改客人 /// /// [HttpPost] public ApiResult SetOrderGuestInfo() { var userInfo = base.UserInfo; var dmodel = new RB_Order_Guest_ViewModel() { Id = base.ParmJObj.GetInt("Id"), OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), Profession = base.ParmJObj.GetStringValue("Profession"), Sex = base.ParmJObj.GetInt("Sex", 1), Age = base.ParmJObj.GetInt("Age"), Mobile = base.ParmJObj.GetStringValue("Mobile"), Basics = base.ParmJObj.GetStringValue("Basics"), Education = (GuestEducationEnum)base.ParmJObj.GetInt("Education"), GuestSource = (OrderSourceEnum)base.ParmJObj.GetInt("GuestSource"), LearningGoals = base.ParmJObj.GetInt("LearningGoals"), Contact = base.ParmJObj.GetStringValue("Contact"), ContactMobile = base.ParmJObj.GetStringValue("ContactMobile"), IDCard = base.ParmJObj.GetStringValue("IDCard"), Domicile = base.ParmJObj.GetStringValue("Domicile"), ContactAddress = base.ParmJObj.GetStringValue("ContactAddress"), SourceId = base.ParmJObj.GetInt("SourceId"), GraduatedSchool = base.ParmJObj.GetStringValue("GraduatedSchool"), GraduatedMajor = base.ParmJObj.GetStringValue("GraduatedMajor"), VolunteerMajor = base.ParmJObj.GetStringValue("VolunteerMajor"), Price = base.ParmJObj.GetDecimal("Price"), StudyRemark = base.ParmJObj.GetStringValue("StudyRemark"), BirthDate = base.ParmJObj.GetDateTime("BirthDate"), TotalHours = base.ParmJObj.GetDecimal("TotalHours"), StuIcon = base.ParmJObj.GetStringValue("StuIcon"), GuestContractNo = base.ParmJObj.GetStringValue("GuestContractNo"), ContractType = base.ParmJObj.GetInt("ContractType"), }; if (dmodel.OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } if (string.IsNullOrEmpty(dmodel.GuestName)) { return ApiResult.ParamIsNull("请输入客人姓名"); } if (string.IsNullOrEmpty(dmodel.Mobile)) { return ApiResult.ParamIsNull("请输入手机号码"); } List contractList = new List(); var contract = base.ParmJObj.GetStringValue("ContractUrl"); if (!string.IsNullOrEmpty(contract)) { contractList = Common.Plugin.JsonHelper.DeserializeObject>(contract); } dmodel.ContractUrl = Common.Plugin.JsonHelper.Serialize(contractList); dmodel.GuestState = GuestStateEnum.Normal; dmodel.Status = 0; dmodel.Group_Id = userInfo.Group_Id; dmodel.School_Id = userInfo.School_Id; dmodel.CreateBy = userInfo.Id; dmodel.CreateTime = DateTime.Now; dmodel.UpdateBy = userInfo.Id; dmodel.UpdateTime = DateTime.Now; bool flag = orderModule.SetOrderGuestInfo(dmodel, out string message); return flag ? ApiResult.Success() : ApiResult.Failed(message); } /// /// 删除客人 /// /// [HttpPost] public ApiResult DelOrderGuestInfo() { JObject parms = JObject.Parse(RequestParm.Msg.ToString()); var userInfo = base.UserInfo; int GuestId = parms.GetInt("GuestId", 0); if (GuestId <= 0) { return ApiResult.ParamIsNull(""); } bool flag = orderModule.DelOrderGuestInfo(GuestId, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 通过我的学生直接转订单客人 /// /// [HttpPost] public ApiResult SetMyStudentToGuest() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0);//订单 string StuIds = parms.GetStringValue("StuIds");//学生Ids if (OrderId <= 0) { return ApiResult.ParamIsNull("订单不存在"); } if (string.IsNullOrEmpty(StuIds)) { return ApiResult.ParamIsNull("请选择学生"); } string msg = orderModule.SetMyStudentToGuest(OrderId, StuIds, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 销售中心 /// /// 获取我的订单列表 /// /// [HttpPost] public ApiResult GetMyOrderPageList() { var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), ClassName = base.ParmJObj.GetStringValue("ClassName"), CourseId = base.ParmJObj.GetInt("CouseId"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), OPStartTime = base.ParmJObj.GetStringValue("OPStartTime"), OPEndTime = base.ParmJObj.GetStringValue("OPEndTime"), Q_NotCollect = base.ParmJObj.GetInt("Q_NotCollect"), OrderState = (OrderStateEnum)base.ParmJObj.GetInt("OrderState"), Q_OrderState = base.ParmJObj.GetInt("Q_OrderState"), Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy"), PlatformTax = base.ParmJObj.GetDecimal("PlatformTax"), CourseSubject=base.ParmJObj.GetInt("CourseSubject"), }; demodel.Group_Id = userInfo.Group_Id; demodel.CreateBy = userInfo.Id; var orderList = orderModule.GetMyOrderPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); var orderS = orderModule.GetMyOrderStatisticsModule(demodel); pageModel.Count = Convert.ToInt32(count); var obj = new { Statistics = new { PreferPrice = orderS?.PreferPrice ?? 0, Income = orderS?.Income ?? 0, DueInMoney = orderS?.DueInMoney ?? 0, GuestNum = orderS?.GuestNum ?? 0, CancelNum = orderS?.CancelNum ?? 0, CommissionMoney = orderS?.CommissionMoney ?? 0, ExtraRewardMoney = orderS?.ExtraRewardMoney ?? 0 }, List = orderList?.Select(x => new { x.OrderId, x.ClassId, x.CourseId, x.CourseName, x.JoinType, JoinTypeName = x.JoinType.ToName(), x.TargetJoinType, TargetJoinTypeName = x.JoinType.ToName(), x.SourceOrderId, x.SourceClassName, x.TargetOrderId, x.TargetClassName, x.StartClassHours, x.OrderType, x.SourceId, x.ClassSchoolId, x.ClassName, x.TradeWay, x.Class_Price, x.Unit_Price, x.GuestNum, x.PreferPrice, x.Income, x.Refund, x.DiscountMoney, x.PlatformTax, DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney), x.OrderState, OrderStateName = x.OrderState.ToName(), x.OrderSource, OrderSourceName = x.OrderSource.ToName(), x.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "", x.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "", x.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(x.CourseConsultantId)?.AccountName ?? "", YFCommissionMoney = GetOrderYFCommission(x), x.CommissionMoney, x.ExtraCommissionMoney, x.ExtraRewardMoney, x.ExtraDeductMoney, x.IsCommissionGive, x.CommissionBack, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), SaleRemark = x?.SaleRemark ?? "", TeacherRemark = x?.TeacherRemark ?? "", RectorRemark = x?.RectorRemark ?? "", DirectorRemark = x?.DirectorRemark ?? "", x.OfferId, x.HelpEnterId, HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName, x.GeneralOccupation, x.EduOccupation, x.IsLessPrice, x.LessPrice, x.OrderNature, OrderNatureName = x.OrderNature.ToName(), x.OldPreferPrice, x.EffectStatus, x.EffectStatusStr, EffectTime = Common.ConvertHelper.FormatDate(x.EffectTime), x.UpOrderId, OpenTime = Common.ConvertHelper.FormatDate(x.OpenTime), x.VisitorReserveId, x.RenewOrderId, x.FirstOrderId, x.IsBackClass, x.CourseSubject, x.CourseSubjectName, x.CustomerId, x.CustomerName, x.CustomerTel, SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new { qitem.S_ClassId, qitem.S_ClassName, qitem.S_JoinType, S_JoinTypeName = qitem.S_JoinType.ToName(), qitem.S_OrderId, qitem.T_ClassId, qitem.T_ClassName, qitem.T_JoinType, T_JoinTypeName = qitem.T_JoinType.ToName(), qitem.T_OrderId }), SaleRemarkList = x?.SaleRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), TeacherRemarkList = x?.TeacherRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), RectorRemarkList = x?.RectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), DirectorRemarkList = x?.DirectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), GuestList = x?.GuestList.Select(z => new { z.Id, z.GuestName, z.GuestState, z.ContractId, z.ContractNo, z.ContractStatus, z.ContractStatusStr, z.GuestStateStr, z.GuestContractNo, z.ContractType, z.ContractUrl, z.ContractUrlList, }), ContractList = x?.ContractList.Select(z => new { z.Id, z.StudentName, z.ContractNo, z.GuestId, z.Status }) }) }; pageModel.PageData = obj; return ApiResult.Success("", pageModel); } /// /// 获取订单列表统计 /// /// [HttpPost] public ApiResult GetOrderPageListStatistics() { var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), ClassName = base.ParmJObj.GetStringValue("ClassName"), CourseId = base.ParmJObj.GetInt("CouseId"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), OPStartTime = base.ParmJObj.GetStringValue("OPStartTime"), OPEndTime = base.ParmJObj.GetStringValue("OPEndTime"), Q_NotCollect = base.ParmJObj.GetInt("Q_NotCollect"), OrderState = (OrderStateEnum)base.ParmJObj.GetInt("OrderState"), Q_OrderState = base.ParmJObj.GetInt("Q_OrderState"), Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy"), PlatformTax = base.ParmJObj.GetDecimal("PlatformTax"), EnterID = base.ParmJObj.GetInt("EnterID"), HelpEnterId = base.ParmJObj.GetInt("HelpEnterId", 0), ClassNo = base.ParmJObj.GetStringValue("ClassNo"), CourseSubject = base.ParmJObj.GetInt("CourseSubject"), CustomerId = base.ParmJObj.GetInt("CustomerId", 0) }; demodel.Group_Id = userInfo.Group_Id; var orderList = orderModule.GetMyOrderPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); var orderS = orderModule.GetMyOrderStatisticsModule(demodel); pageModel.Count = Convert.ToInt32(count); var obj = new { Statistics = new { PreferPrice = orderS?.PreferPrice ?? 0, Income = orderS?.Income ?? 0, DueInMoney = orderS?.DueInMoney ?? 0, GuestNum = orderS?.GuestNum ?? 0, CancelNum = orderS?.CancelNum ?? 0, CommissionMoney = (orderS?.CommissionMoney ?? 0) > 0 ? (orderS?.CommissionMoney ?? 0) : 0, ExtraRewardMoney = orderS?.ExtraRewardMoney ?? 0 }, List = orderList?.Select(x => new { x.OrderId, x.ClassId, x.ClassNo, x.OrderType, x.SourceId, x.ClassSchoolId, x.ClassName, OpenTime = Common.ConvertHelper.FormatDate(x.OpenTime), x.JoinType, JoinTypeName = x.JoinType.ToName(), x.TargetJoinType, TargetJoinTypeName = x.TargetJoinType.ToName(), x.SourceOrderId, x.SourceClassName, x.TargetOrderId, x.TargetClassName, x.StartClassHours, x.CourseName, x.TradeWay, x.Class_Price, x.Unit_Price, x.GuestNum, x.PreferPrice, x.Income, x.Refund, x.DiscountMoney, x.PlatformTax, DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney), x.OrderState, OrderStateName = x.OrderState.ToName(), x.OrderSource, OrderSourceName = x.OrderSource.ToName(), x.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "", x.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "", x.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(x.CourseConsultantId)?.AccountName ?? "", YFCommissionMoney = GetOrderYFCommission(x), x.CommissionMoney, x.ExtraCommissionMoney, x.ExtraRewardMoney, x.ExtraDeductMoney, x.IsCommissionGive, x.CommissionBack, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), SaleRemark = x?.SaleRemark ?? "", TeacherRemark = x?.TeacherRemark ?? "", RectorRemark = x?.RectorRemark ?? "", DirectorRemark = x?.DirectorRemark ?? "", x.OfferId, x.HelpEnterId, HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName, x.GeneralOccupation, x.EduOccupation, x.IsLessPrice, x.LessPrice, x.OrderNature, OrderNatureName = x.OrderNature.ToName(), x.OldPreferPrice, x.EffectStatus, x.EffectStatusStr, EffectTime = Common.ConvertHelper.FormatDate(x.EffectTime), x.UpOrderId, x.VisitorReserveId, x.RenewOrderId, x.FirstOrderId, x.IsBackClass, x.CourseSubject, x.CourseSubjectName, x.CustomerId, x.CustomerName, x.CustomerTel, SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new { qitem.S_ClassId, qitem.S_ClassName, qitem.S_JoinType, S_JoinTypeName = qitem.S_JoinType.ToName(), qitem.S_OrderId, qitem.T_ClassId, qitem.T_ClassName, qitem.T_JoinType, T_JoinTypeName = qitem.T_JoinType.ToName(), qitem.T_OrderId }), SaleRemarkList = x?.SaleRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), TeacherRemarkList = x?.TeacherRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), RectorRemarkList = x?.RectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), DirectorRemarkList = x?.DirectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), GuestList = x?.GuestList.Select(z => new { z.Id, z.GuestName, z.GuestState, z.ContractId, z.ContractNo, z.ContractStatus, z.ContractStatusStr, z.GuestStateStr, z.GuestContractNo, z.ContractType, z.ContractUrl, z.ContractUrlList, }), ContractList = x?.ContractList.Select(z => new { z.Id, z.StudentName, z.ContractNo, z.GuestId, z.Status, }) }) }; pageModel.PageData = obj; return ApiResult.Success("", pageModel); } /// /// 获取订单列表统计 Excel导出 /// /// [HttpPost] [Obsolete] public FileContentResult GetOrderPageListStatisticsToExcel() { List slist = new List(); ExcelDataSource header = new ExcelDataSource() { ExcelRows = new List(30) { new ExcelColumn(value:"订单号"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"下单日期"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"业务员"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"班级"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"开班时间"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"课程"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"人数"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"单价"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"成交单价"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"应收总额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"实收"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"优惠金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"少价金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"退款"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"平台税金"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"待收金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"状态"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"学生名单"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"销售备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"教务备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"校长备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"经理备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, } }; slist.Add(header); string ExcelName = "报名统计" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; var userInfo = base.UserInfo; RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), ClassName = base.ParmJObj.GetStringValue("ClassName"), CourseId = base.ParmJObj.GetInt("CouseId"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), OPStartTime = base.ParmJObj.GetStringValue("OPStartTime"), OPEndTime = base.ParmJObj.GetStringValue("OPEndTime"), Q_NotCollect = base.ParmJObj.GetInt("Q_NotCollect"), OrderState = (OrderStateEnum)base.ParmJObj.GetInt("OrderState"), Q_OrderState = base.ParmJObj.GetInt("Q_OrderState"), Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy"), PlatformTax = base.ParmJObj.GetDecimal("PlatformTax"), EnterID = base.ParmJObj.GetInt("EnterID"), HelpEnterId = base.ParmJObj.GetInt("HelpEnterId", 0), ClassNo = base.ParmJObj.GetStringValue("ClassNo") }; demodel.Group_Id = userInfo.Group_Id; var list = orderModule.GetMyOrderPageList(1, 100000, out long count, demodel); try { foreach (var item in list) { item.DueInMoney = item.PreferPrice - (item.Income - item.Refund + item.PlatformTax + item.DiscountMoney); string GuestNameStr = string.Join(",", item?.GuestList.Select(x => x.GuestName)); ExcelDataSource firstRow = new ExcelDataSource(30) { ExcelRows = new List() { new ExcelColumn(value: item.OrderId.ToString()){ }, new ExcelColumn(value: item.CreateTime.ToString("yyyy-MM-dd HH:mm")){ }, new ExcelColumn(value: item.EnterName){ }, new ExcelColumn(value: item.ClassName){ }, new ExcelColumn(value: item.OpenTime.ToString("yyyy-MM-dd")){ }, new ExcelColumn(value: item.CourseName){ }, new ExcelColumn(value: item.GuestNum.ToString()){ }, new ExcelColumn(value: item.Class_Price.ToString("#0.00")){ }, new ExcelColumn(value: item.Unit_Price.ToString("#0.00")){ }, new ExcelColumn(value: item.PreferPrice.ToString("#0.00")){ }, new ExcelColumn(value: item.Income.ToString("#0.00")){ }, new ExcelColumn(value: item.DiscountMoney.ToString("#0.00")){ }, new ExcelColumn(value: item.LessPrice.ToString("#0.00")){ }, new ExcelColumn(value: item.Refund.ToString("#0.00")){ }, new ExcelColumn(value: item.PlatformTax.ToString("#0.00")){ }, new ExcelColumn(value: item.DueInMoney.ToString("#0.00")){ }, new ExcelColumn(value: item.OrderState.ToName()){ }, new ExcelColumn(value: GuestNameStr){ }, new ExcelColumn(value: item?.SaleRemarkList.FirstOrDefault()?.Content??""){ }, new ExcelColumn(value: item?.TeacherRemarkList.FirstOrDefault()?.Content??""){ }, new ExcelColumn(value: item?.RectorRemarkList.FirstOrDefault()?.Content??""){ }, new ExcelColumn(value: item?.DirectorRemarkList.FirstOrDefault()?.Content??""){ }, } }; slist.Add(firstRow); } ExcelDataSource firstRowT = new ExcelDataSource(30) { ExcelRows = new List() { new ExcelColumn(value: "合计"){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: list.Sum(x=>x.GuestNum).ToString()){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: list.Sum(x=>x.PreferPrice).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.Income).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.DiscountMoney).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.LessPrice).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.Refund).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.PlatformTax).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.DueInMoney).ToString("#0.00")){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, } }; slist.Add(firstRowT); var byteData = ExcelTempLateHelper.ToExcelExtend(slist); return File(byteData, "application/octet-stream", ExcelName); } catch (Exception ex) { LogHelper.Write(ex, "OutToExcelOrderStudentClassHoursList"); var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist); return File(byteData1, "application/octet-stream", ExcelName); } } /// /// 修改订单的关联教师 /// /// [HttpPost] public ApiResult SetOrderHelpEnterId() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = parms.GetInt("OrderId", 0); int HelpEnterId = parms.GetInt("HelpEnterId", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull("请传递订单id"); } string msg = orderModule.SetOrderHelpEnterId(OrderId, HelpEnterId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取我的留学就业订单列表 /// /// [HttpPost] public ApiResult GetMyStudyOrderPageList() { var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), Q_NotCollect = base.ParmJObj.GetInt("Q_NotCollect"), OrderState = (OrderStateEnum)base.ParmJObj.GetInt("OrderState"), Q_OrderState = base.ParmJObj.GetInt("Q_OrderState"), Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy"), PlatformTax = base.ParmJObj.GetDecimal("PlatformTax"), }; demodel.Group_Id = userInfo.Group_Id; demodel.EnterID = userInfo.Id; var orderList = orderModule.GetStudyOrderPageModule(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); var orderS = orderModule.GetStudyOrderStatisticsModule(demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = new { Statistics = new { PreferPrice = orderS?.PreferPrice ?? 0, Income = orderS?.Income ?? 0, DueInMoney = orderS?.DueInMoney ?? 0, GuestNum = orderS?.GuestNum ?? 0, CancelNum = orderS?.CancelNum ?? 0, CommissionMoney = orderS?.CommissionMoney ?? 0, ExtraRewardMoney = orderS?.ExtraRewardMoney ?? 0 }, List = orderList.Select(x => new { x.OrderId, x.ClassId, x.OrderType, x.SourceId, x.ClassSchoolId, ClassName = x.StudyName, x.TradeWay, x.Class_Price, x.Unit_Price, x.GuestNum, x.PreferPrice, x.Income, x.Refund, x.DiscountMoney, x.PlatformTax, DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney), x.OrderState, OrderStateName = x.OrderState.ToName(), x.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "", x.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "", x.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(x.CourseConsultantId)?.AccountName ?? "", x.CommissionMoney, x.ExtraRewardMoney, x.ExtraDeductMoney, x.IsCommissionGive, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), x.SaleRemark, x.TeacherRemark, x.RectorRemark, x.DirectorRemark, x.OfferId, x.HelpEnterId, HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName, x.GeneralOccupation, x.EduOccupation, x.IsLessPrice, x.LessPrice, x.OrderNature, OrderNatureName = x.OrderNature.ToName(), x.OldPreferPrice, x.LXConfirmState, x.LXConfirmDate, x.LXConfirmEmpId, SaleRemarkList = x.SaleRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), TeacherRemarkList = x.TeacherRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), RectorRemarkList = x.RectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), DirectorRemarkList = x.DirectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), GuestList = x.GuestList.Select(z => new { z.Id, z.GuestName, z.GuestState }), }) }; return ApiResult.Success("", pageModel); } /// /// 获取我的留学就业订单列表 /// /// [HttpPost] public ApiResult GetStudyOrderPageListStatistics() { var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), Q_NotCollect = base.ParmJObj.GetInt("Q_NotCollect"), OrderState = (OrderStateEnum)base.ParmJObj.GetInt("OrderState"), Q_OrderState = base.ParmJObj.GetInt("Q_OrderState"), Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy"), PlatformTax = base.ParmJObj.GetDecimal("PlatformTax"), EnterID = base.ParmJObj.GetInt("EnterID") }; demodel.Group_Id = userInfo.Group_Id; var orderList = orderModule.GetStudyOrderPageModule(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); var orderS = orderModule.GetStudyOrderStatisticsModule(demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = new { Statistics = new { PreferPrice = orderS?.PreferPrice ?? 0, Income = orderS?.Income ?? 0, DueInMoney = orderS?.DueInMoney ?? 0, GuestNum = orderS?.GuestNum ?? 0, CancelNum = orderS?.CancelNum ?? 0, CommissionMoney = orderS?.CommissionMoney ?? 0, ExtraRewardMoney = orderS?.ExtraRewardMoney ?? 0 }, List = orderList.Select(x => new { x.OrderId, x.ClassId, x.OrderType, x.SourceId, x.ClassSchoolId, ClassName = x.StudyName, x.TradeWay, x.Class_Price, x.Unit_Price, x.GuestNum, x.PreferPrice, x.Income, x.Refund, x.DiscountMoney, x.PlatformTax, DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney), x.OrderState, OrderStateName = x.OrderState.ToName(), x.EnterID, EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "", x.CreateBy, CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "", x.CourseConsultantId, ConsultantName = UserReidsCache.GetUserLoginInfo(x.CourseConsultantId)?.AccountName ?? "", x.CommissionMoney, x.ExtraRewardMoney, x.ExtraDeductMoney, x.IsCommissionGive, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), x.SaleRemark, x.TeacherRemark, x.RectorRemark, x.DirectorRemark, x.OfferId, x.HelpEnterId, HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName, x.GeneralOccupation, x.EduOccupation, x.IsLessPrice, x.LessPrice, x.OrderNature, OrderNatureName = x.OrderNature.ToName(), x.OldPreferPrice, x.LXConfirmDate, x.LXConfirmEmpId, x.LXConfirmState, SaleRemarkList = x.SaleRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), TeacherRemarkList = x.TeacherRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), RectorRemarkList = x.RectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), DirectorRemarkList = x.DirectorRemarkList.Select(z => new { z.Id, z.Content, CreateBy = z.CreateByName, CreateTime = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }), GuestList = x.GuestList.Select(z => new { z.Id, z.GuestName, z.GuestState }) }) }; return ApiResult.Success("", pageModel); } /// /// 获取我的留学就业订单列表 Excel导出 /// /// [HttpPost] [Obsolete] public FileContentResult GetStudyOrderPageListStatisticsToExcel() { List slist = new List(); ExcelDataSource header = new ExcelDataSource() { ExcelRows = new List(30) { new ExcelColumn(value:"订单号"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"下单日期"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"业务员"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"项目"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"人数"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"单价"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"成交单价"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"应收总额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"实收"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"优惠金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"少价金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"退款"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"平台税金"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"待收金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"状态"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"学生名单"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"销售备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"教务备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"校长备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, new ExcelColumn(value:"经理备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }, } }; slist.Add(header); string ExcelName = "留学就业统计" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); RB_Order_ViewModel demodel = new RB_Order_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), GuestName = base.ParmJObj.GetStringValue("GuestName"), StartTime = base.ParmJObj.GetStringValue("StartTime"), EndTime = base.ParmJObj.GetStringValue("EndTime"), Q_NotCollect = base.ParmJObj.GetInt("Q_NotCollect"), OrderState = (OrderStateEnum)base.ParmJObj.GetInt("OrderState"), Q_OrderState = base.ParmJObj.GetInt("Q_OrderState"), Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy"), PlatformTax = base.ParmJObj.GetDecimal("PlatformTax"), EnterID = base.ParmJObj.GetInt("EnterID") }; demodel.Group_Id = userInfo.Group_Id; var list = orderModule.GetStudyOrderPageModule(1, 100000, out long count, demodel); try { foreach (var item in list) { item.DueInMoney = item.PreferPrice - (item.Income - item.Refund + item.PlatformTax + item.DiscountMoney); string GuestNameStr = string.Join(",", item?.GuestList.Select(x => x.GuestName)); ExcelDataSource firstRow = new ExcelDataSource(30) { ExcelRows = new List() { new ExcelColumn(value: item.OrderId.ToString()){ }, new ExcelColumn(value: item.CreateTime.ToString("yyyy-MM-dd HH:mm")){ }, new ExcelColumn(value: item.EnterName){ }, new ExcelColumn(value: item.CourseName){ }, new ExcelColumn(value: item.GuestNum.ToString()){ }, new ExcelColumn(value: item.Class_Price.ToString("#0.00")){ }, new ExcelColumn(value: item.Unit_Price.ToString("#0.00")){ }, new ExcelColumn(value: item.PreferPrice.ToString("#0.00")){ }, new ExcelColumn(value: item.Income.ToString("#0.00")){ }, new ExcelColumn(value: item.DiscountMoney.ToString("#0.00")){ }, new ExcelColumn(value: item.LessPrice.ToString("#0.00")){ }, new ExcelColumn(value: item.Refund.ToString("#0.00")){ }, new ExcelColumn(value: item.PlatformTax.ToString("#0.00")){ }, new ExcelColumn(value: item.DueInMoney.ToString("#0.000000")){ }, new ExcelColumn(value: item.OrderState.ToName()){ }, new ExcelColumn(value: GuestNameStr){ }, new ExcelColumn(value: item?.SaleRemarkList.FirstOrDefault()?.Content??""){ }, new ExcelColumn(value: item?.TeacherRemarkList.FirstOrDefault()?.Content??""){ }, new ExcelColumn(value: item?.RectorRemarkList.FirstOrDefault()?.Content??""){ }, new ExcelColumn(value: item?.DirectorRemarkList.FirstOrDefault()?.Content??""){ }, } }; slist.Add(firstRow); } ExcelDataSource firstRowT = new ExcelDataSource(30) { ExcelRows = new List() { new ExcelColumn(value: "合计"){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: list.Sum(x=>x.GuestNum).ToString()){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: list.Sum(x=>x.PreferPrice).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.Income).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.DiscountMoney).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.LessPrice).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.Refund).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.PlatformTax).ToString("#0.00")){ }, new ExcelColumn(value: list.Sum(x=>x.DueInMoney).ToString("#0.000000")){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, new ExcelColumn(value: ""){ }, } }; slist.Add(firstRowT); var byteData = ExcelTempLateHelper.ToExcelExtend(slist); return File(byteData, "application/octet-stream", ExcelName); } catch (Exception ex) { LogHelper.Write(ex, "OutToExcelOrderStudentClassHoursList"); var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist); return File(byteData1, "application/octet-stream", ExcelName); } } /// /// 订单转交 /// /// [HttpPost] public ApiResult SetClassOrderCareOf() { var userInfo = base.UserInfo; JObject prams = JObject.Parse(RequestParm.Msg.ToString()); int OrderId = prams.GetInt("OrderId", 0); int CareOfPeople = prams.GetInt("CareOfPeople", 0); if (OrderId <= 0) { return ApiResult.ParamIsNull(); } if (CareOfPeople <= 0) { return ApiResult.ParamIsNull("请选择转交人"); } bool flag = orderModule.SetClassOrderCareOf(OrderId, CareOfPeople, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } #endregion #region 退课申请 /// /// 退课申请 /// /// public ApiResult BackClassApply() { var GuestId = base.ParmJObj.GetInt("GuestId"); var OrderId = base.ParmJObj.GetInt("OrderId"); //申请原因 var applyReason = base.ParmJObj.GetStringValue("applyReason"); string receiptFile = string.Empty; try { List receiptFileList = Common.Plugin.JsonHelper.DeserializeObject>(base.ParmJObj.GetStringValue("ReceiptFileList")); if (receiptFileList == null || !receiptFileList.Any()) { return ApiResult.Failed("附件必须上传"); } else { receiptFile = JsonHelper.Serialize(receiptFileList); } } catch (Exception ex) { Common.Plugin.LogHelper.Write(ex, "BackClassApply"); } var BackAccountName = base.ParmJObj.GetStringValue("BackAccountName"); var BackAccount = base.ParmJObj.GetStringValue("BackAccount"); var StateMent = base.ParmJObj.GetStringValue("StateMent"); bool flag = orderModule.CreateBackClassApplyModule(GuestId, OrderId, applyReason, base.UserInfo, receiptFile, BackAccountName, BackAccount, StateMent, out string message); return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message); } #endregion #region 插班报入 /// /// 获取插板报入配置信息 /// /// public ApiResult GetChaClassInfo() { var ClassId = base.ParmJObj.GetInt("ClassId"); var otherClassList = orderModule.GetClassCourseListModule(ClassId); return ApiResult.Success(data: otherClassList); } #endregion #region 甲鹤小程序付款的课程同步过来 /// /// 新增修改订单 /// /// [HttpPost] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public ApiResult SetBatchClassOrder() { Model.CacheModel.UserInfo userinfo = new Model.CacheModel.UserInfo(); int EnterID = base.ParmJObj.GetInt("EnterID"); List list = JsonHelper.DeserializeObject>(base.ParmJObj.GetStringValue("Order")); list.ForEach(x => x.TargetJoinType = OrderJoinTypeEnum.Normal); list.ForEach(x => x.JoinType = OrderJoinTypeEnum.Normal); list.ForEach(x => x.JoinType = OrderJoinTypeEnum.Normal); list.ForEach(x => x.OrderSource = OrderSourceEnum.MallApplet); list.ForEach(x => x.OrderType = OrderTypeEnum.CourseOrder); list.ForEach(x => x.Income = 0); if (EnterID > 0) { userinfo = UserReidsCache.GetUserLoginInfo(EnterID); list.ForEach(x => x.School_Id = userinfo.School_Id); list.ForEach(x => x.Group_Id = userinfo.Group_Id); list.ForEach(x => x.Dept_Id = userinfo.DeptId); list.ForEach(x => x.CreateBy = EnterID); list.ForEach(x => x.UpdateBy = EnterID); } else { userinfo.Group_Id = list.FirstOrDefault()?.Group_Id ?? 0; } list.ForEach(x => x.OrderForm = OrderFormEnum.Applet); list.ForEach(x => x.TradeWay = TradeWayEnum.OnLine); list.ForEach(x => x.CreateTime = DateTime.Now); list.ForEach(x => x.UpdateTime = DateTime.Now); list.ForEach(x => x.OrderState = OrderStateEnum.Normal); list.ForEach(x => x.StartClassHours = 0); var flag = false; flag = orderModule.SetBatchClassOrder(list, userinfo, false); return flag ? ApiResult.Success("") : ApiResult.Failed(""); } /// /// 系统自动取消时同步规格库存 /// /// [HttpPost] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public ApiResult UpdateGoodsSpecification() { Model.CacheModel.UserInfo userinfo = new Model.CacheModel.UserInfo(); List list = JsonHelper.DeserializeObject>(base.ParmJObj.GetStringValue("Order")); var flag = false; flag = orderModule.UpdateGoodsSpecification(list); return flag ? ApiResult.Success("") : ApiResult.Failed(""); } #endregion #region 获取学员状态列表 /// /// 获取学员状态列表 /// /// [HttpPost] public ApiResult GetGuestStateList() { var list = Common.Plugin.EnumHelper.EnumToList(typeof(GuestStateEnum)); return ApiResult.Success(data: list); } #endregion } }