Commit c254352b authored by liudong1993's avatar liudong1993

1客人咨询

parent e231d1eb
...@@ -240,6 +240,11 @@ namespace Edu.Model.ViewModel.User ...@@ -240,6 +240,11 @@ namespace Edu.Model.ViewModel.User
/// </summary> /// </summary>
public int OperateType { get; set; } public int OperateType { get; set; }
/// <summary>
/// 课程顾问
/// </summary>
public int ConsultantId { get; set; }
/// <summary> /// <summary>
/// 渠道名称 /// 渠道名称
/// </summary> /// </summary>
......
...@@ -40,6 +40,14 @@ namespace Edu.Module.User ...@@ -40,6 +40,14 @@ namespace Edu.Module.User
/// 学员续费介绍 /// 学员续费介绍
/// </summary> /// </summary>
private readonly RB_Student_RenewOrderRepository student_RenewOrderRepository = new RB_Student_RenewOrderRepository(); private readonly RB_Student_RenewOrderRepository student_RenewOrderRepository = new RB_Student_RenewOrderRepository();
/// <summary>
/// 服务人员
/// </summary>
private readonly RB_Student_AssistRepository student_AssistRepository = new RB_Student_AssistRepository();
/// <summary>
/// 账户
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
#region 学员跟进 #region 学员跟进
...@@ -67,6 +75,8 @@ namespace Edu.Module.User ...@@ -67,6 +75,8 @@ namespace Edu.Module.User
var TotalData = student_OrderGuestRepository.GetStudentFollowUpStat(demodel); var TotalData = student_OrderGuestRepository.GetStudentFollowUpStat(demodel);
//查询每月续费介绍情况 //查询每月续费介绍情况
var ROList = student_RenewOrderRepository.GetStuMonthList(demodel.Group_Id); var ROList = student_RenewOrderRepository.GetStuMonthList(demodel.Group_Id);
//查询课程顾问
var stuAssistList = student_AssistRepository.GetStudentAssistListRepository(new RB_Student_Assist_Extend() { QStuIds = stuIds });
#region 组装数据 #region 组装数据
int MaxMonth = 2;//最大月份 int MaxMonth = 2;//最大月份
...@@ -124,12 +134,19 @@ namespace Edu.Module.User ...@@ -124,12 +134,19 @@ namespace Edu.Module.User
}); });
} }
var AssistId = stuAssistList.Where(x => x.StuId == item.StuId && x.AssistType == AssistTypeEnum.CourseAdviser).FirstOrDefault()?.AssistId ?? 0;
string AssistName = "";
if (AssistId > 0) {
AssistName = accountRepository.GetEmployeeInfo(AssistId)?.EmployeeName ?? "";
}
var StuObj = new var StuObj = new
{ {
item.StuId, item.StuId,
item.StuName, item.StuName,
item.StuTel, item.StuTel,
item.StuRealMobile, item.StuRealMobile,
AssistId,
AssistName,
ContractSTime = item.followUpTime, ContractSTime = item.followUpTime,
item.CourseName, item.CourseName,
JapanBaseInfo = item.JapanBaseInfo.ToName(), JapanBaseInfo = item.JapanBaseInfo.ToName(),
...@@ -194,13 +211,23 @@ namespace Edu.Module.User ...@@ -194,13 +211,23 @@ namespace Edu.Module.User
string stuIds = string.Join(",", slist.Select(x => x.StuId)); string stuIds = string.Join(",", slist.Select(x => x.StuId));
//查询学员最近的一条跟进记录 //查询学员最近的一条跟进记录
var flist = followRepository.GetStudentFollowUpLatelyList(stuIds, demodel.Group_Id); var flist = followRepository.GetStudentFollowUpLatelyList(stuIds, demodel.Group_Id);
//查询课程顾问
var stuAssistList = student_AssistRepository.GetStudentAssistListRepository(new RB_Student_Assist_Extend() { QStuIds = stuIds });
foreach (var item in slist) { foreach (var item in slist) {
var fmodel = flist.Where(x => x.StuId == item.StuId).FirstOrDefault(); var fmodel = flist.Where(x => x.StuId == item.StuId).FirstOrDefault();
var AssistId = stuAssistList.Where(x => x.StuId == item.StuId && x.AssistType == AssistTypeEnum.CourseAdviser).FirstOrDefault()?.AssistId ?? 0;
string AssistName = "";
if (AssistId > 0)
{
AssistName = accountRepository.GetEmployeeInfo(AssistId)?.EmployeeName ?? "";
}
RList.Add(new RList.Add(new
{ {
item.StuId, item.StuId,
item.StuName, item.StuName,
AssistId,
AssistName,
item.StuBirthStr, item.StuBirthStr,
item.StuTel, item.StuTel,
item.StuRealMobile, item.StuRealMobile,
......
...@@ -245,7 +245,7 @@ INNER JOIN rb_order o on sog.OrderId = o.OrderId ...@@ -245,7 +245,7 @@ INNER JOIN rb_order o on sog.OrderId = o.OrderId
public List<RB_Student_ViewModel> GetStudentFollowUpPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel) public List<RB_Student_ViewModel> GetStudentFollowUpPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{ {
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 "; string where = " 1=1 and s.Status =0 and c.CourseId <>1";//排除内部班课程
if (demodel.Group_Id > 0) { if (demodel.Group_Id > 0) {
where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}"; where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}";
} }
...@@ -270,11 +270,27 @@ INNER JOIN rb_order o on sog.OrderId = o.OrderId ...@@ -270,11 +270,27 @@ INNER JOIN rb_order o on sog.OrderId = o.OrderId
if (demodel.StuType > 0) if (demodel.StuType > 0)
{ {
where += $" and s.{nameof(RB_Student_ViewModel.StuType)} ={demodel.StuType}"; where += $" and s.{nameof(RB_Student_ViewModel.StuType)} ={demodel.StuType}";
} }
if (demodel.StuGuestState > 0) if (demodel.StuGuestState > 0)
{ {
where += $" and org.GuestState ={(int)demodel.StuGuestState}"; where += $" and org.GuestState ={(int)demodel.StuGuestState}";
} }
if (demodel.StuStage > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.StuStage)} ={demodel.StuStage}";
}
if (demodel.School_Id > -1)
{
where += $" and cl.School_Id ={demodel.School_Id}";
}
if (demodel.ConsultantId > 0)
{
where += $@" AND s.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId ={demodel.ConsultantId} AND `Status`=0)";
}
if (demodel.CourseId > 0)
{
where += $" and o.CourseId ={demodel.CourseId}";
}
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{ {
if (demodel.Q_FType == 1) if (demodel.Q_FType == 1)
...@@ -336,11 +352,12 @@ INNER JOIN rb_order o on og.OrderId = o.OrderId ...@@ -336,11 +352,12 @@ INNER JOIN rb_order o on og.OrderId = o.OrderId
WHERE o.OrderState <>3 GROUP BY og.Student_Id) stu on og.Id = stu.Id and og.Student_Id = s.StuId WHERE o.OrderState <>3 GROUP BY og.Student_Id) stu on og.Id = stu.Id and og.Student_Id = s.StuId
INNER JOIN rb_order_guest org on org.Id = og.GuestId INNER JOIN rb_order_guest org on org.Id = og.GuestId
INNER JOIN rb_order o on og.OrderId = o.OrderId INNER JOIN rb_order o on og.OrderId = o.OrderId
inner join rb_class cl on cl.ClassId = o.ClassId
INNER JOIN rb_course c on o.CourseId = c.CourseId INNER JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) { if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) {
//增加跟进链表 //增加跟进链表
sql += $@"LEFT JOIN rb_student_follow f on s.StuId = f.StuId and f.`Status` =0 and f.CreateTime >='{demodel.SFTime}' and f.CreateTime <='{demodel.EFTime} 23:59:59'"; sql += $@" LEFT JOIN rb_student_follow f on s.StuId = f.StuId and f.`Status` =0 and f.AssistType in(2,4) and f.CreateTime >='{demodel.SFTime}' and f.CreateTime <='{demodel.EFTime} 23:59:59'";
} }
sql += $" where {where} "; sql += $" where {where} ";
if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))) if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)))
...@@ -358,7 +375,7 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; ...@@ -358,7 +375,7 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
/// <returns></returns> /// <returns></returns>
public RB_Student_ViewModel GetStudentFollowUpStat(RB_Student_ViewModel demodel) { public RB_Student_ViewModel GetStudentFollowUpStat(RB_Student_ViewModel demodel) {
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 "; string where = " 1=1 and s.Status =0 and c.CourseId <>1";//排除内部班
if (demodel.Group_Id > 0) if (demodel.Group_Id > 0)
{ {
where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}"; where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}";
...@@ -391,6 +408,22 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; ...@@ -391,6 +408,22 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
{ {
where += $" and org.GuestState ={(int)demodel.StuGuestState}"; where += $" and org.GuestState ={(int)demodel.StuGuestState}";
} }
if (demodel.StuStage > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.StuStage)} ={demodel.StuStage}";
}
if (demodel.School_Id > -1)
{
where += $" and cl.School_Id ={demodel.School_Id}";
}
if (demodel.ConsultantId > 0)
{
where += $@" AND s.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId ={demodel.ConsultantId} AND `Status`=0)";
}
if (demodel.CourseId > 0)
{
where += $" and o.CourseId ={demodel.CourseId}";
}
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{ {
if (demodel.Q_FType == 1) if (demodel.Q_FType == 1)
...@@ -402,10 +435,51 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; ...@@ -402,10 +435,51 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
where += $" and f.Id is null"; where += $" and f.Id is null";
} }
} }
if (demodel.BelongType > 0)
{
//全部
if (demodel.BelongType == 1)
{
where += $@" AND (s.CreateBy={demodel.CreateBy} OR s.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId ={demodel.CreateBy} AND `Status`=0))";
}
//我负责的
else if (demodel.BelongType == 2)
{
where += $" AND s.{nameof(RB_Student_ViewModel.CreateBy)} ={demodel.CreateBy} ";
}
//我协同的
else if (demodel.BelongType == 3)
{
where += $" AND s.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId ={demodel.CreateBy} AND `Status`=0) ";
}
//我下属的
else if (demodel.BelongType == 4)
{
if (demodel.CreateIds != null && demodel.CreateIds.Count > 0)
{
string createIds = string.Join(",", demodel.CreateIds);
if (!string.IsNullOrEmpty(createIds))
{
where += $" AND (s.{nameof(RB_Student_ViewModel.CreateBy)} IN({createIds}) OR s.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId IN({createIds}) AND `Status`=0)) ";
}
}
else
{
where += $" AND s.{nameof(RB_Student_ViewModel.CreateBy)} ={demodel.CreateBy} ";
}
}
}
else
{
if (demodel.CreateBy > 0)
{
where += $" AND s.{nameof(RB_Student_ViewModel.CreateBy)} ={demodel.CreateBy} ";
}
}
string sql = $@" string sql = $@"
select count(0) as OrderCount,sum(case when t.RenewState = 1 then 1 else 0 end) AS RenewOrderCount, select count(0) as OrderCount,sum(case when t.RenewState = 1 then 1 else 0 end) AS RenewOrderCount,
SUM(CASE WHEN t.StuGuestState =1 THEN 1 ELSE 0 END) AS StudyNum, SUM(CASE WHEN t.StuGuestState in(1,3,4,6,8,9) THEN 1 ELSE 0 END) AS StudyNum,
SUM(CASE WHEN t.StuGuestState =2 THEN 1 ELSE 0 END) AS DropOutNum, SUM(CASE WHEN t.StuGuestState =2 THEN 1 ELSE 0 END) AS DropOutNum,
SUM(CASE WHEN t.StuGuestState =5 THEN 1 ELSE 0 END) AS SuspendNum, SUM(CASE WHEN t.StuGuestState =5 THEN 1 ELSE 0 END) AS SuspendNum,
SUM(CASE WHEN t.StuGuestState =7 THEN 1 ELSE 0 END) AS GraduateNum SUM(CASE WHEN t.StuGuestState =7 THEN 1 ELSE 0 END) AS GraduateNum
...@@ -413,22 +487,22 @@ SUM(CASE WHEN t.StuGuestState =7 THEN 1 ELSE 0 END) AS GraduateNum ...@@ -413,22 +487,22 @@ SUM(CASE WHEN t.StuGuestState =7 THEN 1 ELSE 0 END) AS GraduateNum
SELECT s.StuId,s.StuName,s.StuTel,s.StuRealMobile,s.QQ,ec.CreateTime,c.CourseId,c.CourseName,s.JapanBaseInfo,s.StuBirth,org.GuestState as StuGuestState, SELECT s.StuId,s.StuName,s.StuTel,s.StuRealMobile,s.QQ,ec.CreateTime,c.CourseId,c.CourseName,s.JapanBaseInfo,s.StuBirth,org.GuestState as StuGuestState,
case when o.RenewOrderId >0 or org.RenewState =2 then 1 else 0 end AS RenewState case when o.RenewOrderId >0 or org.RenewState =2 then 1 else 0 end AS RenewState
FROM rb_student s FROM rb_student s
{(demodel.IsQueryMyStu == 1 ? "INNER JOIN rb_student_assist sa on s.StuId = sa.StuId and sa.`Status` =0 and sa.AssistId =" + demodel.CreateBy : "")}
INNER JOIN rb_student_orderguest og on og.Student_Id = s.StuId INNER JOIN rb_student_orderguest og on og.Student_Id = s.StuId
INNER JOIN (SELECT og.Student_Id,MAX(og.Id) as Id FROM rb_student_orderguest og INNER JOIN (SELECT og.Student_Id,MAX(og.Id) as Id FROM rb_student_orderguest og
INNER JOIN rb_order o on og.OrderId = o.OrderId INNER JOIN rb_order o on og.OrderId = o.OrderId
WHERE o.OrderState <>3 GROUP BY og.Student_Id) stu on og.Id = stu.Id and og.Student_Id = s.StuId WHERE o.OrderState <>3 GROUP BY og.Student_Id) stu on og.Id = stu.Id and og.Student_Id = s.StuId
INNER JOIN rb_order_guest org on org.Id = og.GuestId INNER JOIN rb_order_guest org on org.Id = og.GuestId
INNER JOIN rb_order o on og.OrderId = o.OrderId INNER JOIN rb_order o on og.OrderId = o.OrderId
inner join rb_class cl on cl.ClassId = o.ClassId
INNER JOIN rb_course c on o.CourseId = c.CourseId INNER JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{ {
//增加跟进链表 //增加跟进链表
sql += $@"LEFT JOIN rb_student_follow f on s.StuId = f.StuId and f.`Status` =0 and f.CreateTime >='{demodel.SFTime}' and f.CreateTime <='{demodel.EFTime} 23:59:59'"; sql += $@" LEFT JOIN rb_student_follow f on s.StuId = f.StuId and f.`Status` =0 and f.AssistType in(2,4) and f.CreateTime >='{demodel.SFTime}' and f.CreateTime <='{demodel.EFTime} 23:59:59'";
} }
sql += $" where {where} "; sql += $" where {where} ";
if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) || demodel.IsQueryMyStu == 1) if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)))
{ {
sql += $" GROUP BY s.StuId"; sql += $" GROUP BY s.StuId";
} }
...@@ -478,17 +552,25 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; ...@@ -478,17 +552,25 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
} }
if (demodel.StuGuestState > 0) if (demodel.StuGuestState > 0)
{ {
where += $" and org.GuestState ={(int)demodel.StuGuestState}"; where += $" and og.GuestState ={(int)demodel.StuGuestState}";
} }
if (demodel.Q_EnrollState > 0) { if (demodel.Q_EnrollState > 0) {
if (demodel.Q_EnrollState == 1) if (demodel.Q_EnrollState == 1)
{ {
where += $" and o.OrderId is not null"; where += $" and o.OrderId is not null and c.CourseId <>1";//排除内部班
} }
else { else {
where += $" and o.OrderId is null"; where += $" and o.OrderId is null";
} }
} }
if (demodel.StuStage > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.StuStage)} ={demodel.StuStage}";
}
if (demodel.ConsultantId > 0)
{
where += $@" AND s.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId ={demodel.ConsultantId} AND `Status`=0)";
}
if (demodel.BelongType > 0) if (demodel.BelongType > 0)
{ {
//全部 //全部
...@@ -531,7 +613,7 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; ...@@ -531,7 +613,7 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
} }
} }
string sql = $@"SELECT s.*,case when o.OrderId is null then 2 else 1 end as Q_EnrollState,og.GuestState,c.CourseId,c.CourseName,ch.Name as StuChannelName string sql = $@"SELECT s.*,case when o.OrderId is null then 2 else 1 end as Q_EnrollState,og.GuestState as StuGuestState,c.CourseId,c.CourseName,ch.Name as StuChannelName
FROM rb_student s FROM rb_student s
LEFT JOIN ( LEFT JOIN (
SELECT sog.Student_Id,MAX(og.Id) AS GuestId FROM rb_student_orderguest sog SELECT sog.Student_Id,MAX(og.Id) AS GuestId FROM rb_student_orderguest sog
...@@ -543,7 +625,7 @@ LEFT JOIN rb_order_guest og on ot.GuestId = og.Id ...@@ -543,7 +625,7 @@ LEFT JOIN rb_order_guest og on ot.GuestId = og.Id
LEFT JOIN rb_order o on og.OrderId = o.OrderId LEFT JOIN rb_order o on og.OrderId = o.OrderId
LEFT JOIN rb_course c on o.CourseId = c.CourseId LEFT JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_channel ch on s.StuChannel = ch.Id LEFT JOIN rb_channel ch on s.StuChannel = ch.Id
WHERE 1=1 WHERE {where}
GROUP BY s.StuId order by s.StuId desc"; GROUP BY s.StuId order by s.StuId desc";
return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList(); return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
} }
......
...@@ -48,9 +48,14 @@ namespace Edu.WebApi.Controllers.User ...@@ -48,9 +48,14 @@ namespace Edu.WebApi.Controllers.User
demodel.CreateBy = userInfo.Id; demodel.CreateBy = userInfo.Id;
} }
else { else {
if (demodel.BelongType == 1) { if (demodel.BelongType == 1)
{
demodel.BelongType = 0;//暂先查全部 demodel.BelongType = 0;//暂先查全部
} }
if (demodel.BelongType > 1)
{
demodel.CreateBy = userInfo.Id;
}
} }
var list = studentStatModule.GetStudentFollowUpPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel); var list = studentStatModule.GetStudentFollowUpPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
...@@ -78,6 +83,18 @@ namespace Edu.WebApi.Controllers.User ...@@ -78,6 +83,18 @@ namespace Edu.WebApi.Controllers.User
{ {
demodel.CreateBy = userInfo.Id; demodel.CreateBy = userInfo.Id;
} }
else
{
if (demodel.BelongType == 1)
{
demodel.BelongType = 0;//暂先查全部
}
if (demodel.BelongType > 1)
{
demodel.CreateBy = userInfo.Id;
}
}
var list = studentStatModule.GetStudentConsultPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel); var list = studentStatModule.GetStudentConsultPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = count; pmodel.Count = count;
pmodel.PageData = list; pmodel.PageData = list;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment