using Edu.Common.Enum;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.Entity.User;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.User;
using Edu.Repository.Customer;
using Edu.Repository.System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB;
using VT.FW.DB.Dapper;
namespace Edu.Repository.User
{
///
/// 学生仓储层
///
public class RB_StudentRepository : BaseRepository
{
///
/// 账号
///
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
///
/// 学员日志仓储层对象
///
private readonly RB_Student_LogRepository student_LogRepository = new RB_Student_LogRepository();
///
/// 客户阶段仓储层对象
///
private readonly RB_StageRepository stageRepository = new RB_StageRepository();
///
/// 同业客户仓储层对象
///
private readonly RB_CustomerRepository customerRepository = new RB_CustomerRepository();
///
/// 客户类型仓储层对象
///
private readonly RB_Student_TypeRepository student_TypeRepository = new RB_Student_TypeRepository();
///
/// 收客渠道仓储层对象
///
private readonly RB_ChannelRepository channelRepository = new RB_ChannelRepository();
///
/// 学习目的仓储层对象
///
private readonly RB_LearningGoalsRepository learningGoalsRepository = new RB_LearningGoalsRepository();
///
/// 客户需求仓储层对象
///
private readonly RB_NeedsRepository needsRepository = new RB_NeedsRepository();
///
/// 学员协助人员仓储层对象
///
private readonly RB_Student_AssistRepository student_AssistRepository = new RB_Student_AssistRepository();
///
/// 获取学生列表
///
///
///
public List GetStudentListRepository(RB_Student_ViewModel query, bool isQueryCreateType = false, bool isQueryAssist = false)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
if (isQueryCreateType && !string.IsNullOrEmpty(query.QOrderIds))
{
builder.AppendFormat(@"
SELECT t.*,g.GroupName,s.SName,stuog.OrderId
FROM rb_student AS t LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
LEFT JOIN rb_student_orderguest AS stuog ON t.StuId=stuog.Student_Id
WHERE 1=1
");
}
else
{
builder.AppendFormat(@"
SELECT t.*,g.GroupName,s.SName,acc.Id AS Account_Id
FROM rb_student AS t LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
LEFT JOIN rb_account AS acc ON t.StuId=acc.AccountId AND acc.AccountType=4
WHERE 1=1
");
}
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrWhiteSpace(query.StuName))
{
builder.AppendFormat(" AND t.{0} LIKE @StuName ", nameof(RB_Student_ViewModel.StuName));
parameters.Add("StuName", "%" + query.StuName.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.StuTel))
{
builder.AppendFormat(" AND t.{0} LIKE @StuTel ", nameof(RB_Student_ViewModel.StuTel));
parameters.Add("StuTel", "%" + query.StuTel.Trim() + "%");
}
if (query.ProviceId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.ProviceId), query.ProviceId);
}
if (query.CityId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CityId), query.CityId);
}
if (query.AreaId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.AreaId), query.AreaId);
}
if (query.CustomerId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CustomerId), query.CustomerId);
}
if (query.StuId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuId), query.StuId);
}
if (!string.IsNullOrEmpty(query.StuIds))
{
builder.AppendFormat(" AND t.{0} in({1}) ", nameof(RB_Student_ViewModel.StuId), query.StuIds);
}
if (query.StuStage > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuStage), (int)query.StuStage);
}
if (query.CreateBy > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CreateBy), query.CreateBy);
}
if (!string.IsNullOrEmpty(query.QCreateBys))
{
builder.AppendFormat(@" AND (t.CreateBy IN({0}) OR t.StuId IN(SELECT StuId FROM rb_student_assist WHERE AssistId IN({0}) AND `Status`= 0) ) ", query.QCreateBys);
}
//根据订单编号查询学员
if (!string.IsNullOrEmpty(query.QOrderIds))
{
builder.AppendFormat(" AND stuog.OrderId IN({0}) ", query.QOrderIds);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND t.{0}>='{1}' ", nameof(RB_Student_ViewModel.CreateTime), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(" AND t.{0}<='{1} 23:59:59' ", nameof(RB_Student_ViewModel.CreateTime), query.EndTime);
}
}
var stuList = Get(builder.ToString(), parameters).ToList();
if (isQueryCreateType)
{
//转介人列表
List transStudentList = new List();
//同业录入列表
List customerList = new List();
//内部介绍人
List accountList = new List();
if (stuList != null && stuList.Count > 0)
{
List customerIdList = Common.ConvertHelper.StringToList(string.Join(",", stuList.Where(qitem => qitem.CreateType == StuCreateTypeEnum.CustomerInput).Select(qitem => qitem.StuSourceId)));
if (customerIdList != null && customerIdList.Count > 0)
{
customerList = customerRepository.GetCustomerListRepository(new RB_Customer_Extend()
{
CustomerIds = string.Join(",", customerIdList)
});
}
List transIdList = Common.ConvertHelper.StringToList(string.Join(",", stuList.Where(qitem => qitem.CreateType == StuCreateTypeEnum.TransIntroduction).Select(qitem => qitem.StuSourceId)));
if (transIdList != null && transIdList.Count > 0)
{
transStudentList = GetStudentListRepository(new RB_Student_ViewModel()
{
StuIds = string.Join(",", transIdList)
});
}
List empIdList = Common.ConvertHelper.StringToList(string.Join(",", stuList.Where(qitem => qitem.CreateType == StuCreateTypeEnum.InternalIntroduction).Select(qitem => qitem.StuSourceId)));
if (empIdList != null && empIdList.Count > 0)
{
accountList = accountRepository.GetAccountListExtRepository(new RB_Account_ViewModel() { QIds = string.Join(",", empIdList) });
}
foreach (var item in stuList)
{
if (item.CreateType == StuCreateTypeEnum.InternalIntroduction)
{
item.StuSourceIdName = accountList?.FirstOrDefault(qitem => qitem.Id == item.StuSourceId)?.AccountName ?? "";
}
else if (item.CreateType == StuCreateTypeEnum.CustomerInput)
{
var tempCustomer = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId);
var tempStr = (tempCustomer?.CustomerName ?? "");
if (tempCustomer != null)
{
if (tempCustomer.CustomerType == Common.Enum.Customer.CatetoryTypeEnum.Other)
{
tempStr += "(" + (tempCustomer?.EnterpriseName ?? "") + ")";
}
else
{
tempStr += "(" + (tempCustomer?.CategoryName ?? "") + ")";
}
}
item.StuSourceIdName = tempStr;
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
item.StuSourceIdName = transStudentList?.FirstOrDefault(qitem => qitem.StuId == item.StuSourceId)?.StuName ?? "";
}
}
}
}
if (isQueryAssist)
{
if (stuList != null && stuList.Count > 0)
{
string stuIds = string.Join(",", stuList.Select(qitem => qitem.StuId));
List assistList = student_AssistRepository.GetStudentAssistListRepository(new RB_Student_Assist_Extend() { QStuIds = stuIds });
foreach (var item in stuList)
{
item.AssistList = assistList?.Where(qitem => qitem.StuId == item.StuId)?.ToList() ?? new List();
}
}
}
return stuList;
}
///
/// 查询学员的有效订单数(正常,退课)
///
///
public int GetStudentOrderCount(int studentId)
{
var sql = "select Count(0) from rb_student_orderguest a left join rb_order b on a.OrderId=b.OrderId where a.Student_Id=@stuId and b.OrderState!=3";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("stuId", studentId);
var result = ExecuteScalar(sql, parameters);
return Convert.ToInt32(result);
}
///
/// 获取学生分页列表
///
///
///
///
///
///
public List GetStudentPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT t.*,g.GroupName,s.SName,IFNULL(a.Account,'') AS StudentAccount ,c.CustomerName,IFNULL(B.Name,'') AS AdvisorStatusName
FROM rb_student AS t LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
LEFT JOIN rb_customer c on (c.CustomerId = t.StuSourceId AND t.CreateType=2)
LEFT JOIN rb_account as a ON (t.StuId=a.AccountId AND a.AccountType=4 )
LEFT JOIN rb_student_advisorconfig AS b ON t.AdvisorStatus=B.Id
LEFT JOIN (
SELECT A.Student_Id,Count(1) AS OrderCount
FROM rb_student_orderguest AS A INNER JOIN RB_Order AS B ON A.OrderId=B.OrderId
WHERE B.OrderState IN(1)
GROUP BY A.Student_Id
) AS org ON t.StuId=org.Student_Id
WHERE 1=1
");
if (query != null)
{
if (query.Status >= 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Status), (int)query.Status);
}
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.School_Id), query.School_Id);
}
if (query.QStudentType == 1)
{
builder.AppendFormat(" AND t.{0}=0 ", nameof(RB_Student_ViewModel.CustomerId));
}
if (query.StuId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuId), query.StuId);
}
if (!string.IsNullOrEmpty(query.StuIds))
{
builder.AppendFormat(" AND t.{0} IN({1}) ", nameof(RB_Student_ViewModel.StuId), query.StuIds);
}
if (!string.IsNullOrWhiteSpace(query.StuName))
{
builder.AppendFormat(" AND t.{0} LIKE @StuName ", nameof(RB_Student_ViewModel.StuName));
parameters.Add("StuName", "%" + query.StuName.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.StuTel))
{
builder.AppendFormat(" AND t.{0} LIKE @StuTel ", nameof(RB_Student_ViewModel.StuRealMobile));
parameters.Add("StuTel", "%" + query.StuTel.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.QQ))
{
builder.AppendFormat(" AND t.{0} LIKE @QQ ", nameof(RB_Student_ViewModel.QQ));
parameters.Add("QQ", "%" + query.QQ.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.WeChatNo))
{
builder.AppendFormat(" AND t.{0} LIKE @WeChatNo ", nameof(RB_Student_ViewModel.WeChatNo));
parameters.Add("WeChatNo", "%" + query.WeChatNo.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.KeyWords))
{
builder.AppendFormat(" AND (t.{0} LIKE @KeyWords OR t.{1} LIKE @KeyWords OR t.{2} LIKE @KeyWords) ", nameof(RB_Student_ViewModel.StuName), nameof(RB_Student_ViewModel.WeChatNo), nameof(RB_Student_ViewModel.StuRealMobile));
parameters.Add("KeyWords", "%" + query.KeyWords.Trim() + "%");
}
if (query.StuType > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuType), query.StuType);
}
if (query.ProviceId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.ProviceId), query.ProviceId);
}
if (query.CityId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CityId), query.CityId);
}
if (query.AreaId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.AreaId), query.AreaId);
}
if (query.StuStage > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuStage), (int)query.StuStage);
}
if (query.CustomerId > 0)
{
builder.AppendFormat(" AND (t.{0}={1} OR (t.StuSourceId={1} AND t.CreateType=2) ) ", nameof(RB_Student_ViewModel.CustomerId), query.CustomerId);
}
if (query.StuStage > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuStage), query.StuStage);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND t.{0}>='{1}' ", nameof(RB_Student_ViewModel.CreateTime), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(" AND t.{0}<='{1} 23:59:59' ", nameof(RB_Student_ViewModel.CreateTime), query.EndTime);
}
if (!string.IsNullOrEmpty(query.QDate))
{
builder.AppendFormat(" AND DATE_FORMAT(t.{0},'%y/%m/%d')= DATE_FORMAT('{1}','%y/%m/%d') ", nameof(RB_Student_ViewModel.CreateTime), query.QDate);
}
if (query.BelongType > 0)
{
//全部
if (query.BelongType == 1)
{
string tempCreateIds = query.CreateBy.ToString();
if (!string.IsNullOrEmpty(query.QCreateBys))
{
tempCreateIds += "," + query.QCreateBys;
}
builder.AppendFormat(@"
AND ( t.CreateBy IN({0})
OR t.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId IN({0}) AND `Status`=0)
)
", tempCreateIds.TrimStart(',').TrimEnd(','));
}
//我负责的
if (query.BelongType == 2 && query.CreateBy > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CreateBy), query.CreateBy);
}
//我协同的
if (query.BelongType == 3)
{
builder.AppendFormat(" AND t.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId={0} AND `Status`=0) ", query.CreateBy);
}
//我下属的
if (query.BelongType == 4)
{
if (query.CreateIds != null && query.CreateIds.Count > 0)
{
string createIds = string.Join(",", query.CreateIds);
if (!string.IsNullOrEmpty(createIds))
{
builder.AppendFormat(" AND (t.{0} IN({1}) OR t.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId IN({1}) AND `Status`=0)) ", nameof(RB_Student_ViewModel.CreateBy), createIds);
}
}
else
{
builder.AppendFormat(" AND t.{0} IN({1}) ", nameof(RB_Student_ViewModel.CreateBy), query.CreateBy);
}
}
}
else
{
if (query.CreateBy > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CreateBy), query.CreateBy);
}
}
if (query.ExistCourseConsultant > 0)
{
if (query.ExistCourseConsultant == 1)
{
builder.AppendFormat(" AND Exists (SELECT StuId FROM rb_student_assist WHERE AssistType=2 AND `Status`=0 AND t.StuId=StuId) ");
}
if (query.ExistCourseConsultant == 2)
{
builder.AppendFormat(" AND NOT Exists (SELECT StuId FROM rb_student_assist WHERE AssistType=2 AND `Status`=0 AND t.StuId=StuId) ");
}
}
if (query.CategoryId > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Student_ViewModel.CategoryId), query.CategoryId);
}
if (query.AdvisorStatus > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.AdvisorStatus), query.AdvisorStatus);
}
//有效客户
if (query.QStudentStatus == 1)
{
builder.AppendFormat(" AND t.StuStage<>{0} AND t.AdvisorStatus<>{1} ", 7, 7);
}
//无效客户
if (query.QStudentStatus == 2)
{
builder.AppendFormat(" AND (t.StuStage={0} OR t.AdvisorStatus={1}) ", 7, 7);
}
//渠道
if (query.StuChannel > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuChannel), query.StuChannel);
}
if (query.CreateType > 0 && query.StuSourceId > 0)
{
builder.AppendFormat(" AND t.{0}={1} AND t.{2}={3} ",
nameof(RB_Student_ViewModel.CreateType),
(int)query.CreateType,
nameof(RB_Student_ViewModel.StuSourceId),
query.StuSourceId);
}
//分配给我的线索(无订单&&从未跟进学员)
if (query.IsQueryMyClue == 1)
{
builder.Append(" AND IFNULL(org.OrderCount,0)=0 ");
builder.AppendFormat(" AND NOT Exists (SELECT StuId FROM rb_student_follow WHERE `Status`=0 AND t.StuId=StuId AND CreateBy={0}) ", query.CreateBy);
}
//分配给我的学员(有订单&&从未跟进该学员)
if (query.IsSelectMyStu == 1)
{
builder.Append(" AND IFNULL(org.OrderCount,0)>0 ");
builder.AppendFormat(" AND NOT Exists (SELECT StuId FROM rb_student_follow WHERE `Status`=0 AND t.StuId=StuId AND CreateBy={0}) ", query.CreateBy);
}
//查询今日被跟进学员(有订单&&有跟进记录)
if (query.IsQueryTodayFollow == 1)
{
builder.Append(" AND IFNULL(org.OrderCount,0)>0 ");
builder.AppendFormat(" AND Exists (SELECT StuId FROM rb_student_follow WHERE `Status`=0 AND t.StuId=StuId AND CreateBy={0} AND CreateTime>='{1}' AND CreateTime<='{2} 23:59:59') ", query.CreateBy, query.FollowStartTime, query.FollowEndTime);
}
}
builder.AppendFormat(" ORDER BY t.{0} DESC ", nameof(RB_Student_ViewModel.StuId));
return GetPage(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
///
/// 根据学生id获取同班账户,必须是未开班/学习中的
///
///
///
public List GetListByStudentId(int Student_Id, int Group_Id)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"
SELECT c.*,rbc.ClassName
FROM rb_student as c
LEFT JOIN rb_student_orderguest as sog on sog.Student_Id=c.StuId
LEFT JOIN rb_class as rbc on rbc.ClassId=sog.ClassId
where sog.ClassId in(SELECT a.ClassId from rb_student_orderguest as a LEFT JOIN rb_class as b on a.ClassId=b.ClassId
LEFT JOIN rb_student as c on c.StuId =a.Student_Id
LEFT JOIN rb_order as o on a.OrderId=o.OrderId
where b.`Status`=0 and b.ClassStatus in(1,2) and a.status=0 and a.Account_Id={Student_Id} and o.OrderState=1 AND c.Group_Id={Group_Id} ) and sog.Account_Id!={Student_Id}
AND c.Group_Id={Group_Id}");
return Get(builder.ToString(), parameters).ToList();
}
///
/// 根据学生id获取学生的班级课程学校信息
///
///
///
public List GetStudentInfoRepository(int Student_Id, int Group_Id)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"
SELECT s.*,sog.GuestId,o.OrderState,cou.CourseName,cou.CourseId,cou.B2BIcon,cou.B2BBackground,c.ClassName,c.ClassId,c.ClassScrollType,
case when og.TotalHours <= og.CompleteHours then 3 else
case when og.CompleteHours = 0 then 1 else
case when og.TotalHours > og.CompleteHours then 2 else 0 end end end as ClassStatus,
sch.SName,sch.SId,t.TeacherName,o.EnterID,og.TotalHours,og.CompleteHours, if((og.ValidClassHours-og.CompleteHours)<0,0,(og.ValidClassHours-og.CompleteHours)) as SurplusHours
,cou.OpenBankLevel
FROM rb_student as s LEFT JOIN rb_student_orderguest as sog on s.StuId=sog.Student_Id
LEFT JOIN rb_order_guest as og on og.Id=sog.GuestId
LEFT JOIN rb_order as o on og.OrderId=o.OrderId
LEFT JOIN rb_course as cou on o.CourseId=cou.CourseId
LEFT JOIN rb_class as c on c.ClassId=o.ClassId
LEFT JOIN rb_school as sch on sch.SId=c.School_Id
LEFT JOIN rb_teacher as t on t.TId=c.Teacher_Id
WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState <>2 and cou.`Status`=0 and c.`Status`=0 and s.`Status`=0 and s.StuId={Student_Id} and s.Group_Id={Group_Id}");
return Get(builder.ToString(), parameters).ToList();
}
///
/// 获取学生课程的上课次数
///
///
///
///
public List GetStudentClassNumber(string guestIds, int groupId)
{
string sql = $@"SELECT GuestId,COUNT(0) as CompleteHours FROM rb_scroll_appointment
WHERE Group_Id ={groupId} and `Status`=0 and State =3 and AppointType =1 and GuestId in({guestIds})
GROUP BY GuestId";
return Get(sql).ToList();
}
///
/// 新增修改学员资料
///
///
///
public bool SetStudentRepository(RB_Student_ViewModel model)
{
bool flag;
string logContent = "";
string logTitle = "";
int createBy = 0;
if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput)
{
model.StuSourceId = 0;
}
else if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.CustomerInput)
{
if (model.CustomerId <= 0 && model.StuSourceId > 0)
{
model.CustomerId = model.StuSourceId;
}
}
//内部介绍=>直接修改内部介绍人为学员创建人
else if (model.CreateType == StuCreateTypeEnum.InternalIntroduction)
{
model.CreateBy = model.StuSourceId;
}
model.StuTel = Common.Plugin.StringHelper.ReplaceMobile(model.StuRealMobile);
if (model.StuId > 0)
{
logTitle = "修改客户";
var oldModel = base.GetEntity(model.StuId);
if (oldModel.StuName != model.StuName)
{
logContent += string.Format("昵称:由【{0}】=>【{1}】,", oldModel.StuName, model.StuName);
}
if (oldModel.StuTel != model.StuTel)
{
logContent += string.Format("电话:由【{0}】=>【{1}】,", oldModel.StuTel, model.StuTel);
}
if (oldModel.StuIcon != model.StuIcon)
{
logContent += string.Format("头像:由【{0}】=>【{1}】,", oldModel.StuIcon, model.StuIcon);
}
if (oldModel.StuSex != model.StuSex)
{
logContent += string.Format("性别:由【{0}】=>【{1}】,", oldModel.StuSex == 0 ? "男" : "女", model.StuSex == 0 ? "男" : "女");
}
if (oldModel.StuBirth != model.StuBirth)
{
logContent += string.Format("出生日期:由【{0}】=>【{1}】,", Common.ConvertHelper.FormatDate(oldModel.StuBirth), Common.ConvertHelper.FormatDate(model.StuBirth));
}
if (oldModel.JapanBaseInfo != model.JapanBaseInfo)
{
logContent += string.Format("日语基础:由【{0}】=>【{1}】,", oldModel.JapanBaseInfo.ToName(), model.JapanBaseInfo.ToName());
}
if (oldModel.StuEducation != model.StuEducation)
{
logContent += string.Format("学历:由【{0}】=>【{1}】,", oldModel.StuEducation.ToName(), model.StuEducation.ToName());
}
if (oldModel.StuPurpose != model.StuPurpose)
{
string oldName = learningGoalsRepository.GetLearningGoalsExtEntityRepository(oldModel.StuPurpose)?.Name ?? "";
string newName = learningGoalsRepository.GetLearningGoalsExtEntityRepository(model.StuPurpose)?.Name ?? "";
logContent += string.Format("学习目的:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.StuProfession != model.StuProfession)
{
logContent += string.Format("职业:由【{0}】=>【{1}】,", oldModel.StuProfession, model.StuProfession);
}
if (oldModel.StuStage != model.StuStage)
{
var oldName = stageRepository.GetEntity(oldModel.StuStage)?.StageName ?? "";
var newName = stageRepository.GetEntity(model.StuStage)?.StageName ?? "";
logContent += string.Format("客户阶段:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.StuSource != model.StuSource)
{
logContent += string.Format("来源:由【{0}】=>【{1}】,", oldModel.StuSource.ToName(), model.StuSource.ToName());
}
if (oldModel.StuChannel != model.StuChannel)
{
string oldName = channelRepository.GetChannelExtEntityRepository(oldModel.StuChannel)?.Name ?? "";
string newName = channelRepository.GetChannelExtEntityRepository(model.StuChannel)?.Name ?? "";
logContent += string.Format("收客渠道:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.PlatformName != model.PlatformName)
{
logContent += string.Format("地三方平台名称:由【{0}】=>【{1}】,", oldModel.PlatformName, model.PlatformName);
}
if (oldModel.CreateType != model.CreateType)
{
logContent += string.Format("客人来源:由【{0}】=>【{1}】,", oldModel.CreateType.ToName(), model.CreateType.ToName());
}
if (oldModel.StuSourceId != model.StuSourceId)
{
string oldName = "";
string newName = "";
if (oldModel.CreateType == Common.Enum.User.StuCreateTypeEnum.InternalIntroduction)
{
oldName = accountRepository.GetEmployeeInfo(oldModel.StuSourceId)?.EmployeeName ?? "";
}
if (oldModel.CreateType == Common.Enum.User.StuCreateTypeEnum.TransIntroduction)
{
oldName = customerRepository.GetEntity(oldModel.StuSourceId)?.CustomerName ?? "";
}
if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.InternalIntroduction)
{
newName = accountRepository.GetEmployeeInfo(model.StuSourceId)?.EmployeeName ?? "";
}
if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.TransIntroduction)
{
newName = customerRepository.GetEntity(model.StuSourceId)?.CustomerName ?? "";
}
logContent += string.Format("来源人:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.CustomerId != model.CustomerId)
{
string oldName = customerRepository.GetEntity(oldModel.CustomerId)?.CustomerName ?? "";
string newName = customerRepository.GetEntity(model.CustomerId)?.CustomerName ?? "";
logContent += string.Format("同行:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.QQ != model.QQ)
{
logContent += string.Format("QQ:由【{0}】=>【{1}】,", oldModel.QQ, model.QQ);
}
if (oldModel.WeChatNo != model.WeChatNo)
{
logContent += string.Format("微信号:由【{0}】=>【{1}】,", oldModel.WeChatNo, model.WeChatNo);
}
if (oldModel.StuType != model.StuType)
{
string oldName = student_TypeRepository.GetEntity(oldModel.StuType)?.Name;
string newName = student_TypeRepository.GetEntity(model.StuType)?.Name;
logContent += string.Format("客户类型:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.StuNeeds != model.StuNeeds)
{
string oldName = needsRepository.GetNeedsExtEntityRepository(oldModel.StuNeeds)?.Name;
string newName = needsRepository.GetNeedsExtEntityRepository(model.StuNeeds)?.Name;
logContent += string.Format("客户需求:由【{0}】=>【{1}】,", oldName, newName);
}
Dictionary fileds = new Dictionary()
{
{nameof(RB_Student_ViewModel.StuName),model.StuName.Trim() },
{nameof(RB_Student_ViewModel.StuTel),model.StuTel.Trim() },
{nameof(RB_Student_ViewModel.StuSex),model.StuSex },
{nameof(RB_Student_ViewModel.StuBirth),model.StuBirth },
{nameof(RB_Student_ViewModel.ProviceId),model.ProviceId },
{nameof(RB_Student_ViewModel.CityId),model.CityId },
{nameof(RB_Student_ViewModel.AreaId),model.AreaId },
{nameof(RB_Student_ViewModel.JapanBaseInfo),model.JapanBaseInfo },
{nameof(RB_Student_ViewModel.StuProfession),model.StuProfession },
{nameof(RB_Student_ViewModel.StuEducation),model.StuEducation },
{nameof(RB_Student_ViewModel.StuPurpose),model.StuPurpose },
{nameof(RB_Student_ViewModel.StuSource),model.StuSource },
{nameof(RB_Student_ViewModel.CreateType),model.CreateType },
{nameof(RB_Student_ViewModel.CustomerId),model.CustomerId},
{nameof(RB_Student_ViewModel.QQ),model.QQ},
{nameof(RB_Student_ViewModel.WeChatNo),model.WeChatNo},
{nameof(RB_Student_ViewModel.StuType),model.StuType},
{nameof(RB_Student_ViewModel.StuRealMobile),model.StuRealMobile},
};
if (!string.IsNullOrEmpty(model.FileVoucher))
{
fileds.Add(nameof(RB_Student_ViewModel.FileVoucher), model.FileVoucher);
}
//教育后台操作
if (model.OperateType == 1)
{
fileds.Add(nameof(RB_Student_ViewModel.StuSourceId), model.StuSourceId);
fileds.Add(nameof(RB_Student_ViewModel.StuStage), model.StuStage);
fileds.Add(nameof(RB_Student_ViewModel.StuChannel), model.StuChannel);
fileds.Add(nameof(RB_Student_ViewModel.PlatformName), model.PlatformName);
fileds.Add(nameof(RB_Student_ViewModel.StuNeeds), model.StuNeeds);
fileds.Add(nameof(RB_Student_ViewModel.StuIcon), model.StuIcon.Trim());
}
//App小程序操作
else
{
fileds.Add(nameof(RB_Student_ViewModel.StuAddress), model.StuAddress);
fileds.Add(nameof(RB_Student_ViewModel.StuContract), model.StuContract);
fileds.Add(nameof(RB_Student_ViewModel.StuContractMobile), model.StuContractMobile);
fileds.Add(nameof(RB_Student_ViewModel.StuIDCard), model.StuIDCard);
fileds.Add(nameof(RB_Student_ViewModel.StuIDCardAddress), model.StuIDCardAddress);
fileds.Add(nameof(RB_Student_ViewModel.StuIcon), model.StuIcon.Trim());
}
flag = base.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), model.StuId));
createBy = model.UpdateBy;
}
else
{
model.FirstEnrollDate = DateTime.Now;//2022-01-12 ld
if (model.StuStage <= 0)
{
model.StuStage = 1;
}
var newId = base.Insert(model);
model.StuId = newId;
flag = newId > 0;
if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput)
{
createBy = model.CreateBy;
}
else
{
createBy = model.CustomerId;
}
logContent = "创建了该客户";
logTitle = "创建客户";
}
#region 处理学员账号信息
var accountModel = accountRepository.GetAccountListRepository(new RB_Account_ViewModel() { Group_Id = model.Group_Id, AccountType = Common.Enum.User.AccountTypeEnum.Student, AccountId = model.StuId }).FirstOrDefault();
string account = "";
if (!string.IsNullOrEmpty(model.WeChatNo))
{
account = model.WeChatNo;
}
if (!string.IsNullOrEmpty(model.QQ))
{
account = model.QQ;
}
if (!string.IsNullOrEmpty(model.StuRealMobile))
{
account = model.StuRealMobile;
}
if (accountModel == null)
{
//创建学生账号
model.Account_Id = accountRepository.Insert(new RB_Account()
{
Id = 0,
Account = account,
AccountId = model.StuId,
AccountType = Common.Enum.User.AccountTypeEnum.Student,
AnnualLeaveDay = 0,
CreateBy = model.CreateBy,
CreateTime = DateTime.Now,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
Status = DateStateEnum.Normal,
UpdateBy = model.UpdateBy,
UpdateTime = DateTime.Now,
Password = Common.DES.Encrypt(Common.Config.DefaultPwd)
});
}
else
{
if (account != accountModel.Account)
{
Dictionary accountFileds = new Dictionary()
{
{nameof(RB_Account.Account),account}
};
accountRepository.Update(accountFileds, new WhereHelper(nameof(RB_Account.Id), accountModel.Id));
}
}
#endregion
student_LogRepository.AddStuLogRepository(model.StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, createBy, CreateType: model.OperateType);
return flag;
}
///
/// 修改客户阶段
///
///
///
///
///
public bool SetStudentStageRepository(int StuId, int StuStage, int Uid)
{
string logContent = "";
string logTitle = "";
bool flag = false;
var oldModel = base.GetEntity(StuId);
if (oldModel != null)
{
if (oldModel.StuStage != StuStage)
{
var oldName = stageRepository.GetEntity(oldModel.StuStage)?.StageName ?? "";
var newName = stageRepository.GetEntity(StuStage)?.StageName ?? "";
logContent += string.Format("客户阶段:由【{0}】=>【{1}】,", oldName, newName);
}
Dictionary fileds = new Dictionary()
{
{nameof(RB_Student_ViewModel.StuStage),StuStage }
};
flag = base.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), StuId));
student_LogRepository.AddStuLogRepository(oldModel.StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, Uid, CreateType: 1);
}
return flag;
}
///
/// 学员转交
///
/// 学员编号
/// 负责人
/// 操作人
///
public bool ForwardStudentRepository(string StuIds, int CreateBy, int OperateId)
{
bool flag = false;
string logTitle = "客户转交";
string logContent = "";
var stuList = GetStudentListRepository(new RB_Student_ViewModel() { StuIds = StuIds });
if (stuList != null && stuList.Count > 0)
{
string createByIds = string.Join(",", stuList.Select(qitem => qitem.CreateBy)) + "," + CreateBy;
var empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel()
{
QIds = createByIds.TrimStart(',').TrimEnd(',')
});
foreach (var oldModel in stuList)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Student_ViewModel.CreateBy),CreateBy },
};
if (oldModel.CreateBy != CreateBy)
{
logContent = string.Format("负责人:由【{0}】=>【{1}】",
empList?.FirstOrDefault(qitem => qitem.Id == oldModel.CreateBy)?.EmployeeName,
empList?.FirstOrDefault(qitem => qitem.Id == CreateBy)?.EmployeeName
);
}
flag = base.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), oldModel.StuId));
student_LogRepository.AddStuLogRepository(oldModel.StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, OperateId);
}
}
return flag;
}
/// 获取同业下学生阶段人数统计
///
///
///
///
public List GetCustomerStuStageStatistics(int customerId, int CategoryId, int group_Id)
{
StringBuilder builder = new StringBuilder();
if (customerId > 0)
{
builder.AppendFormat(" AND A.StuSourceId = {0}", customerId);
}
if (CategoryId > 0)
{
builder.AppendFormat(" AND B.CategoryId = {0}", CategoryId);
}
string sql = $@"
SELECT A.StuStage,COUNT(0) AS OrderCount
FROM rb_student AS A INNER JOIN rb_customer AS B ON (A.CreateType=2 AND A.StuSourceId=B.CustomerId)
WHERE A.Group_Id ={group_Id} AND A.CreateType=2 {builder}
GROUP BY A.StuStage ";
return Get(sql).ToList();
}
///
/// 获取同行每周新增客户数量
///
///
///
public List GetCustomerStuWeekListRepository(RB_Student_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT t.*,g.GroupName,s.SName
FROM rb_student AS t LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
WHERE 1=1 AND YEARWEEK(date_format(t.CreateTime, '%Y-%m-%d'),1) = YEARWEEK(now(),1)
");
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > -1)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.School_Id), query.School_Id);
}
if (!string.IsNullOrWhiteSpace(query.StuName))
{
builder.AppendFormat(" AND t.{0} LIKE @StuName ", nameof(RB_Student_ViewModel.StuName));
parameters.Add("StuName", "%" + query.StuName.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.StuTel))
{
builder.AppendFormat(" AND t.{0} LIKE @StuTel ", nameof(RB_Student_ViewModel.StuTel));
parameters.Add("StuTel", "%" + query.StuTel.Trim() + "%");
}
if (query.ProviceId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.ProviceId), query.ProviceId);
}
if (query.CityId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CityId), query.CityId);
}
if (query.AreaId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.AreaId), query.AreaId);
}
if (query.CustomerId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CustomerId), query.CustomerId);
}
}
return Get(builder.ToString(), parameters).ToList();
}
///
/// 根据电话号码、QQ、微信号获取学员信息
///
///
///
public RB_Student_ViewModel GetStuByTelRepository(RB_Student_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT t.*,B.Id AS Account_Id
FROM rb_student AS t LEFT JOIN rb_account AS B ON t.StuId=B.AccountId AND B.AccountType=4
WHERE 1=1
");
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrWhiteSpace(query.StuTel))
{
builder.AppendFormat(" AND t.{0}=@StuTel ", nameof(RB_Student_ViewModel.StuTel));
parameters.Add("StuTel", query.StuTel.Trim());
}
if (!string.IsNullOrWhiteSpace(query.StuRealMobile))
{
builder.AppendFormat(" AND t.{0}=@StuRealMobile ", nameof(RB_Student_ViewModel.StuRealMobile));
parameters.Add("StuRealMobile", query.StuRealMobile.Trim());
}
if (!string.IsNullOrWhiteSpace(query.QQ))
{
builder.AppendFormat(" AND t.{0}=@QQ ", nameof(RB_Student_ViewModel.QQ));
parameters.Add("QQ", query.QQ.Trim());
}
if (!string.IsNullOrWhiteSpace(query.WeChatNo))
{
builder.AppendFormat(" AND t.{0}=@WeChatNo ", nameof(RB_Student_ViewModel.WeChatNo));
parameters.Add("WeChatNo", query.WeChatNo.Trim());
}
if (query.StuId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuId), query.StuId);
}
}
return Get(builder.ToString(), parameters)?.FirstOrDefault();
}
///
/// 线索统计
///
///
public List GetStudentStaticRepository(string createByIds, string startDate, string endDate)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT CreateBy,DATE_FORMAT(CreateTime,'%Y-%m-%d') AS CreateTime,Count(1) AS ClueCount
FROM RB_Student
WHERE Status=0
");
if (!string.IsNullOrEmpty(createByIds))
{
builder.AppendFormat(" AND CreateBy IN({0}) ", createByIds);
}
if (!string.IsNullOrEmpty(startDate))
{
builder.AppendFormat(" AND CreateTime>='{0}' ", startDate);
}
if (!string.IsNullOrEmpty(endDate))
{
builder.AppendFormat(" AND CreateTime<='{0} 23:59:59' ", endDate);
}
builder.AppendFormat(" GROUP BY CreateBy,DATE_FORMAT(CreateTime,'%Y/%m/%d') ");
builder.AppendFormat(" ORDER BY CreateBy,DATE_FORMAT(CreateTime,'%Y/%m/%d') ");
var list = Get(builder.ToString()).ToList();
return list;
}
///
/// 市场部、课程顾问部、线索统计
///
/// 线索创建人
/// 开始时间
/// 结束时间
/// 客户阶段
///
public Dictionary> GetStudentClueRepository(RB_Student_ViewModel query)
{
Dictionary> dicList = new Dictionary>();
string whereStr = "";
if (query.CreateBy > 0)
{
whereStr += string.Format(" AND CreateBy={0} ", query.CreateBy);
}
StringBuilder builder = new StringBuilder();
builder.Append(@"
SELECT Count(1) AS ClueCount,CreateBy
FROM RB_Student
WHERE Status=0 {0}
");
if (!string.IsNullOrEmpty(whereStr))
{
builder.Append(whereStr);
}
builder.Append(" GROUP BY CreateBy ");
string todayWhere = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
todayWhere += string.Format(" AND to_days(CreateTime)=to_days('{0}') ", query.StartTime);
}
else
{
todayWhere += string.Format(" AND to_days(CreateTime)=to_days(now()) ");
}
//今日
var todayList = Get(string.Format(builder.ToString(), todayWhere)).ToList();
dicList.Add("today", todayList);
//昨日
string yesWhere = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
yesWhere += string.Format(" AND TO_DAYS('{0}')-TO_DAYS(CreateTime)=1 ", query.StartTime);
}
else
{
yesWhere += string.Format(" AND TO_DAYS(now())-TO_DAYS(CreateTime)=1 ");
}
var yesList = Get(string.Format(builder.ToString(), yesWhere)).ToList();
dicList.Add("yestoday", yesList);
//本周
string curWeek = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
curWeek += string.Format(" AND YEARWEEK(date_format(CreateTime,'%Y-%m-%d'),1) = YEARWEEK('{0}',1) ", query.StartTime);
}
else
{
curWeek += string.Format(" AND YEARWEEK(date_format(CreateTime,'%Y-%m-%d'),1) = YEARWEEK(now(),1) ");
}
var curWeekList = Get(string.Format(builder.ToString(), curWeek)).ToList();
dicList.Add("currentWeek", curWeekList);
//上周
string lastWeek = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
lastWeek += string.Format(" AND YEARWEEK(date_format(CreateTime,'%Y-%m-%d'),1) = YEARWEEK('{0}',1)-1 ", query.StartTime);
}
else
{
lastWeek += string.Format(" AND YEARWEEK(date_format(CreateTime,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1 ");
}
var lastWeekList = Get(string.Format(builder.ToString(), lastWeek)).ToList();
dicList.Add("lastWeek", lastWeekList);
//本月
string curMonth = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
curMonth += string.Format(" AND DATE_FORMAT(CreateTime,'%Y%m')=DATE_FORMAT('{0}','%Y%m') ", query.StartTime);
}
else
{
curMonth += string.Format(" AND DATE_FORMAT(CreateTime,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m') ");
}
var curMonthList = Get(string.Format(builder.ToString(), curMonth)).ToList();
dicList.Add("curMonth", curMonthList);
//上月
string lastMonth = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
lastMonth += string.Format(" AND PERIOD_DIFF(date_format('{0}','%Y%m'),date_format(CreateTime,'%Y%m')) =1 ", query.StartTime);
}
else
{
lastMonth += string.Format(" AND PERIOD_DIFF(date_format(now(),'%Y%m'),date_format(CreateTime,'%Y%m')) =1 ");
}
var lastMonthList = Get(string.Format(builder.ToString(), lastMonth)).ToList();
dicList.Add("lastMonth", lastMonthList);
return dicList;
}
///
/// 市场部渠道数据统计
///
///
///
public List GetStudentChannelStaticRepository(RB_Student_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.StuId,A.CreateBy,A.StuChannel,A.CreateType,IFNULL(B.VisitCount,0) AS VisitCount,IFNULL(C.CourseOrderCount,0) AS OrderCount,IFNULL(c.Income,0) AS OrderInCome
,A.CustomerId,A.StuSourceId,IFNULL(D.CustomerType,0) AS CustomerType,IFNULL(D.CategoryId,0) AS CategoryId,IFNULL(E.CategoryName,'') AS CategoryName,IFNULL(E.CatetoryType,0) AS CatetoryType
FROM RB_Student AS A
LEFT JOIN(SELECT StuId,Count(1) AS VisitCount FROM rb_student_visit WHERE Status=0 GROUP BY StuId) AS B ON A.StuId=B.StuId
LEFT JOIN(SELECT og.Student_Id,COUNT(1) AS CourseOrderCount,SUM(o.Income) AS Income FROM rb_student_orderguest AS og INNER JOIN rb_order AS o ON og.OrderId=o.OrderId WHERE O.OrderState NOT IN(3,4) GROUP BY og.Student_Id ) AS C ON A.StuId=C.Student_Id
LEFT JOIN rb_customer AS D ON A.StuSourceId=D.CustomerId AND A.CreateType=2
LEFT JOIN rb_customer_category AS E ON D.CategoryId=E.CategoryId
WHERE A.Status=0
");
builder.AppendFormat(" AND A.StuStage<>{0} AND A.AdvisorStatus<>{1} ", 7, 7);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Student_ViewModel.CreateTime), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Student_ViewModel.CreateTime), query.EndTime);
}
if (query.CreateIds != null && query.CreateIds.Count > 0)
{
string str = string.Join(",", query.CreateIds);
if (!string.IsNullOrEmpty(str))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Student_ViewModel.CreateBy), str);
}
}
}
var list = Get(builder.ToString()).ToList();
return list;
}
///
/// 获取转交学员
///
///
///
///
public List GetUserStudentCareOf(int userId, int group_Id)
{
string sql = $@"SELECT s.* FROM rb_student s
LEFT JOIN rb_student_assist a on s.StuId = a.StuId and a.`Status` =0
WHERE s.`Status`=0 and s.Group_Id ={group_Id} and (s.CreateBy ={userId} or a.AssistId ={userId})
group by s.StuId";
return Get(sql).ToList();
}
}
}