using Edu.Common.Enum; using Edu.Common.Enum.Sale; using Edu.Model.Entity.Course; using Edu.Model.ViewModel.Course; using System; using System.Collections.Generic; using System.Linq; using System.Text; using VT.FW.DB.Dapper; namespace Edu.Repository.Course { /// /// 订单仓储层 /// public class RB_OrderRepository : BaseRepository { /// /// 获取列表 /// /// /// public List GetOrderListRepository(RB_Order_ViewModel demodel) { string where = $@" 1=1 "; if (demodel.Group_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}"; } if (demodel.School_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}"; } if (demodel.OrderId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}"; } if (demodel.OrderType > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)demodel.OrderType}"; } if (demodel.ClassId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}"; } if (demodel.SourceId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.SourceId)} ={demodel.SourceId}"; } if (demodel.CourseId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.CourseId)} ={demodel.CourseId}"; } if (!string.IsNullOrEmpty(demodel.ClassIds)) { where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} in({demodel.ClassIds})"; } if (!string.IsNullOrEmpty(demodel.SourceIds)) { where += $@" and o.{nameof(RB_Order_ViewModel.SourceId)} in({demodel.SourceIds})"; } if (demodel.OrderState > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} ={(int)demodel.OrderState}"; } if (demodel.OrderSource > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderSource)} ={(int)demodel.OrderSource}"; } if (demodel.OrderForm > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}"; } if (demodel.EnterID > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}"; } if (demodel.Dept_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}"; } if (demodel.Q_OrderState > 0) { if (demodel.Q_OrderState == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} in(1,2)"; } else if (demodel.Q_OrderState == 2) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} =3"; } } if (demodel.IsChaBan ==1 ) { where += $@" and o.{nameof(RB_Order_ViewModel.IsChaBan)} ={demodel.IsChaBan}"; } if (!string.IsNullOrEmpty(demodel.Q_EffectTime)) { where += string.Format(" and DATE_FORMAT(o.EffectTime,'%y/%m/%d')=DATE_FORMAT('{0}','%y/%m/%d') ", demodel.Q_EffectTime); } string orderBy = " o.OrderId asc"; if (demodel.Q_OrderBy == 1) { orderBy = " o.OrderId asc"; } else if (demodel.Q_OrderBy == 2) { orderBy = " o.CreateTime desc"; } string sql = $@" SELECT o.*,c.ClassName,t.TeacherName,t.TeacherIcon,IFNULL(course.CourseName,'') AS CourseName,c.OpenTime,IFNULL(course.ClassHours,0) AS ClassHours FROM RB_Order o LEFT JOIN rb_class c on o.ClassId = c.ClassId LEFT JOIN rb_teacher t on c.Teacher_Id = t.TId LEFT JOIN rb_course AS course ON (o.CourseId=course.CourseId AND o.CourseId>0 AND o.OrderType=1) WHERE {where} ORDER BY {orderBy} "; return Get(sql).ToList(); } /// /// 获取课程班级订单分页列表 /// /// /// /// /// /// public List GetOrderPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Order_ViewModel demodel) { string where = $@" 1=1"; where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)OrderTypeEnum.CourseOrder} "; if (demodel.Group_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}"; } if (demodel.School_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}"; } if (demodel.OrderId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}"; } else { if (demodel.ClassId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}"; } if (demodel.OrderState > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} ={(int)demodel.OrderState}"; } if (demodel.OrderSource > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderSource)} ={(int)demodel.OrderSource}"; } if (demodel.OrderForm > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}"; } if (demodel.EnterID > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}"; } if (demodel.Dept_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}"; } if (demodel.Q_OrderState > 0) { if (demodel.Q_OrderState == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} in(1,2)"; } else if (demodel.Q_OrderState == 2) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} =3"; } } if (!string.IsNullOrEmpty(demodel.ClassName)) { where += $@" and c.{nameof(RB_Class.ClassName)} like '%{demodel.ClassName}%'"; } if (!string.IsNullOrEmpty(demodel.GuestName)) { if (demodel.Group_Id > 0) { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and Group_Id ={demodel.Group_Id} and GuestName like '%{demodel.GuestName}%')"; } else { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and GuestName like '%{demodel.GuestName}%')"; } } if (demodel.CourseId > 0) { where += $@" and c.{nameof(RB_Class.CouseId)} ={demodel.CourseId}"; } if (!string.IsNullOrEmpty(demodel.StartTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} >='{demodel.StartTime}'"; } if (!string.IsNullOrEmpty(demodel.EndTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} <='{demodel.EndTime} 23:59:59'"; } if (!string.IsNullOrEmpty(demodel.OPStartTime)) { where += $@" and c.{nameof(RB_Class.OpenTime)} >='{demodel.OPStartTime}'"; } if (!string.IsNullOrEmpty(demodel.OPEndTime)) { where += $@" and c.{nameof(RB_Class.OpenTime)} <='{demodel.OPEndTime} 23:59:59'"; } if (demodel.Q_NotCollect == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.PreferPrice)} > (o.{nameof(RB_Order_ViewModel.Income)} - o.{nameof(RB_Order_ViewModel.Refund)} + o.{nameof(RB_Order_ViewModel.PlatformTax)} + o.{nameof(RB_Order_ViewModel.DiscountMoney)}) "; } } string orderBy = " o.OrderId asc"; if (demodel.Q_OrderBy == 1) { orderBy = " o.OrderId asc"; } else if (demodel.Q_OrderBy == 2) { orderBy = " o.CreateTime desc"; } string sql = $@" select o.*,c.ClassName,c.School_Id as ClassSchoolId,t.TeacherName,t.TeacherIcon,IFNULL(course.CourseName,'') AS CourseName,C.OpenTime from RB_Order o left join rb_class c on o.ClassId = c.ClassId left join rb_teacher t on c.Teacher_Id = t.TId LEFT JOIN rb_course AS course ON (o.CourseId=course.CourseId AND o.CourseId>0 AND o.OrderType=1) where {where} order by {orderBy} "; return GetPage(pageIndex, pageSize, out rowsCount, sql).ToList(); } /// /// 获取我的订单统计 /// /// /// public RB_Order_ViewModel GetMyOrderStatisticsRepository(RB_Order_ViewModel demodel) { string where = $@" 1=1"; where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)OrderTypeEnum.CourseOrder} "; if (demodel.Group_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}"; } if (demodel.School_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}"; } if (demodel.OrderId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}"; } else { if (demodel.ClassId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}"; } if (demodel.OrderSource > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderSource)} ={(int)demodel.OrderSource}"; } if (demodel.OrderForm > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}"; } if (demodel.EnterID > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}"; } if (demodel.Dept_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}"; } if (!string.IsNullOrEmpty(demodel.ClassName)) { where += $@" and c.{nameof(RB_Class.ClassName)} like '%{demodel.ClassName}%'"; } if (!string.IsNullOrEmpty(demodel.GuestName)) { if (demodel.Group_Id > 0) { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and Group_Id ={demodel.Group_Id} and GuestName like '%{demodel.GuestName}%')"; } else { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and GuestName like '%{demodel.GuestName}%')"; } } if (demodel.CourseId > 0) { where += $@" and c.{nameof(RB_Class.CouseId)} ={demodel.CourseId}"; } if (!string.IsNullOrEmpty(demodel.StartTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} >='{demodel.StartTime}'"; } if (!string.IsNullOrEmpty(demodel.EndTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} <='{demodel.EndTime} 23:59:59'"; } if (!string.IsNullOrEmpty(demodel.OPStartTime)) { where += $@" and c.{nameof(RB_Class.OpenTime)} >='{demodel.OPStartTime}'"; } if (!string.IsNullOrEmpty(demodel.OPEndTime)) { where += $@" and c.{nameof(RB_Class.OpenTime)} <='{demodel.OPEndTime} 23:59:59'"; } if (demodel.Q_NotCollect == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.PreferPrice)} > (o.{nameof(RB_Order_ViewModel.Income)} - o.{nameof(RB_Order_ViewModel.Refund)} + o.{nameof(RB_Order_ViewModel.PlatformTax)} + o.{nameof(RB_Order_ViewModel.DiscountMoney)}) "; } } string sql = $@" select SUM(CASE WHEN o.OrderState <> 3 THEN o.PreferPrice ELSE 0 END) AS PreferPrice, SUM(CASE WHEN o.OrderState <> 3 THEN o.Income ELSE 0 END) AS Income, SUM(CASE WHEN o.OrderState <> 3 THEN o.PreferPrice - o.Income + o.Refund - o.DiscountMoney - o.PlatformTax ELSE 0 END) AS DueInMoney, SUM(CASE WHEN o.OrderState <> 3 THEN o.GuestNum ELSE 0 END) AS GuestNum, SUM(CASE WHEN o.OrderState = 3 THEN o.GuestNum ELSE 0 END) AS CancelNum, SUM(CASE WHEN o.CommissionMoney <> -1 AND o.OrderState <> 3 THEN o.CommissionMoney ELSE 0 END) AS CommissionMoney, SUM(CASE WHEN o.OrderState <> 3 THEN o.ExtraRewardMoney - o.ExtraDeductMoney ELSE 0 END) AS ExtraRewardMoney from RB_Order o left join rb_class c on o.ClassId = c.ClassId where {where} "; return Get(sql).FirstOrDefault(); } /// /// 获取留学就业订单分页列表 /// /// /// /// /// /// public List GetStudyOrderPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Order_ViewModel demodel) { string where = $@" 1=1"; where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)OrderTypeEnum.StudyabroadOrder} "; if (demodel.Group_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}"; } if (demodel.School_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}"; } if (demodel.OrderId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}"; } else { if (demodel.ClassId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}"; } if (demodel.SourceId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.SourceId)} ={demodel.SourceId}"; } if (demodel.OrderState > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} ={(int)demodel.OrderState}"; } if (demodel.OrderSource > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderSource)} ={(int)demodel.OrderSource}"; } if (demodel.OrderForm > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}"; } if (demodel.EnterID > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}"; } if (demodel.Dept_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}"; } if (demodel.Q_OrderState > 0) { if (demodel.Q_OrderState == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} in(1,2)"; } else if (demodel.Q_OrderState == 2) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} =3"; } } if (!string.IsNullOrEmpty(demodel.GuestName)) { if (demodel.Group_Id > 0) { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and Group_Id ={demodel.Group_Id} and GuestName like '%{demodel.GuestName}%')"; } else { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and GuestName like '%{demodel.GuestName}%')"; } } if (!string.IsNullOrEmpty(demodel.StartTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} >='{demodel.StartTime}'"; } if (!string.IsNullOrEmpty(demodel.EndTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} <='{demodel.EndTime} 23:59:59'"; } if (demodel.Q_NotCollect == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.PreferPrice)} > (o.{nameof(RB_Order_ViewModel.Income)} - o.{nameof(RB_Order_ViewModel.Refund)} + o.{nameof(RB_Order_ViewModel.PlatformTax)} + o.{nameof(RB_Order_ViewModel.DiscountMoney)}) "; } if (demodel.OrderType > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)demodel.OrderType} "; } } string orderBy = " o.OrderId asc"; if (demodel.Q_OrderBy == 1) { orderBy = " o.OrderId asc"; } else if (demodel.Q_OrderBy == 2) { orderBy = " o.CreateTime desc"; } string sql = $@" SELECT o.*,C.`Name` AS StudyName,C.School_Id AS ClassSchoolId FROM RB_Order o LEFT JOIN rb_studyabroad c ON o.SourceId = c.Id WHERE {where} ORDER BY {orderBy} "; return GetPage(pageIndex, pageSize, out rowsCount, sql).ToList(); } /// /// 获取我的订单统计 /// /// /// public RB_Order_ViewModel GetStudyOrderStatisticsRepository(RB_Order_ViewModel demodel) { string where = $@" 1=1"; where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)OrderTypeEnum.StudyabroadOrder} "; if (demodel.Group_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}"; } if (demodel.School_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}"; } if (demodel.OrderId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}"; } else { if (demodel.ClassId > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}"; } if (demodel.OrderSource > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderSource)} ={(int)demodel.OrderSource}"; } if (demodel.OrderForm > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}"; } if (demodel.EnterID > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}"; } if (demodel.Dept_Id > 0) { where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}"; } if (!string.IsNullOrEmpty(demodel.GuestName)) { if (demodel.Group_Id > 0) { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and Group_Id ={demodel.Group_Id} and GuestName like '%{demodel.GuestName}%')"; } else { where += $@" and o.OrderId in (select OrderId from rb_order_guest where Status =0 and GuestName like '%{demodel.GuestName}%')"; } } if (!string.IsNullOrEmpty(demodel.StartTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} >='{demodel.StartTime}'"; } if (!string.IsNullOrEmpty(demodel.EndTime)) { where += $@" and o.{nameof(RB_Order_ViewModel.CreateTime)} <='{demodel.EndTime} 23:59:59'"; } if (demodel.Q_NotCollect == 1) { where += $@" and o.{nameof(RB_Order_ViewModel.PreferPrice)} > (o.{nameof(RB_Order_ViewModel.Income)} - o.{nameof(RB_Order_ViewModel.Refund)} + o.{nameof(RB_Order_ViewModel.PlatformTax)} + o.{nameof(RB_Order_ViewModel.DiscountMoney)}) "; } } string sql = $@" SELECT SUM(CASE WHEN o.OrderState <> 3 THEN o.PreferPrice ELSE 0 END) AS PreferPrice, SUM(CASE WHEN o.OrderState <> 3 THEN o.Income ELSE 0 END) AS Income, SUM(CASE WHEN o.OrderState <> 3 THEN o.PreferPrice - o.Income + o.Refund - o.DiscountMoney - o.PlatformTax ELSE 0 END) AS DueInMoney, SUM(CASE WHEN o.OrderState <> 3 THEN o.GuestNum ELSE 0 END) AS GuestNum, SUM(CASE WHEN o.OrderState = 3 THEN o.GuestNum ELSE 0 END) AS CancelNum, SUM(CASE WHEN o.CommissionMoney <> -1 AND o.OrderState <> 3 THEN o.CommissionMoney ELSE 0 END) AS CommissionMoney, SUM(CASE WHEN o.OrderState <> 3 THEN o.ExtraRewardMoney - o.ExtraDeductMoney ELSE 0 END) AS ExtraRewardMoney FROM RB_Order o left join rb_studyabroad c on o.SourceId = c.Id WHERE {where} "; return Get(sql).FirstOrDefault(); } /// /// 获取班级报名人数 /// /// /// public List GetClassOrderPeopleNumRepository(string classIds) { string sql = $@" SELECT ClassId, SUM(GuestNum) AS GuestNum FROM rb_order WHERE OrderState in (1,2) AND ClassId in ({classIds}) GROUP BY ClassId;"; return Get(sql).ToList(); } #region 销售提成 /// /// 查询所有款收齐的订单 /// /// /// 开班时间 /// 内部班课程 /// public List GetAllMoneyCollectedOrderList(int group_Id, string eDate,string courseIds) { string where = ""; if (!string.IsNullOrEmpty(courseIds)) { where += $" and c.CouseId not in ({courseIds})";//排除内部班 } string sql = $@"SELECT o.* FROM rb_order o inner join rb_class c on o.ClassId = c.ClassId WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.EffectStatus in(1,2) and o.CommissionRate >0 and c.OpenTime <= '{eDate} 23:59:59' {where} and o.PreferPrice <= (o.Income - o.Refund + o.DiscountMoney + o.PlatformTax) and (o.IsCommissionGiveOK =0 or (o.ExtraRewardMoney -o.ExtraDeductMoney)<> o.ExtraCommissionMoney);"; return Get(sql).ToList(); } /// /// 获取销售 需补提成的订单数量 /// /// /// /// public int GetUserLeaveOrderCommission(int userId, int group_Id) { string sql = $@"SELECT COUNT(0) FROM rb_order WHERE Group_Id ={group_Id} and OrderState =1 and (EnterID ={userId} or HelpEnterId ={userId} ) and CommissionBack >0"; var obj = ExecuteScalar(sql); return obj != null ? Convert.ToInt32(obj) : 0; } #endregion } }