Commit 5d9906f5 authored by liudong1993's avatar liudong1993

1学员跟踪统计

parent cdc5b24a
......@@ -57,5 +57,10 @@ namespace Edu.Model.Entity.Customer
/// 删除状态(0-正常,1-禁用)
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 跟进类型(见枚举)
/// </summary>
public Common.Enum.User.AssistTypeEnum AssistType { get; set; }
}
}
......@@ -216,5 +216,35 @@ namespace Edu.Model.Entity.User
/// 学员真实电话号码
/// </summary>
public string StuRealMobile { get; set; }
/// <summary>
/// 咨询日期
/// </summary>
public DateTime? ConsultDate { get; set; }
/// <summary>
/// 规划课程及报价
/// </summary>
public string PlanPrice { get; set; }
/// <summary>
/// 基本情况
/// </summary>
public string BaseCondition { get; set; }
/// <summary>
/// 需求点
/// </summary>
public string DemandPoint { get; set; }
/// <summary>
/// 抗拒点
/// </summary>
public string ResistPoint { get; set; }
/// <summary>
/// 咨询结果
/// </summary>
public string ConsultingResults { get; set; }
}
}
......@@ -14,5 +14,25 @@ namespace Edu.Model.ViewModel.Customer
/// 学员编号【查询使用】
/// </summary>
public string QStuIds { get; set; }
/// <summary>
/// 月份
/// </summary>
public string MonthStr { get; set; }
/// <summary>
/// 学员数量
/// </summary>
public int StuNum { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string STime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string ETime { get; set; }
}
}
......@@ -284,5 +284,47 @@ namespace Edu.Model.ViewModel.User
/// 已完成课时
/// </summary>
public decimal CompleteHours { get; set; }
#region 统计数量
/// <summary>
/// 开始跟进时间
/// </summary>
public string SFTime { get; set; }
/// <summary>
/// 结束跟进时间
/// </summary>
public string EFTime { get; set; }
/// <summary>
/// 根进查询类型 1范围内有 2范围内没有s
/// </summary>
public int Q_FType { get; set; }
/// <summary>
/// 学习中数量
/// </summary>
public int StudyNum { get; set; }
/// <summary>
/// 毕业数量
/// </summary>
public int GraduateNum { get; set; }
/// <summary>
/// 停课数量
/// </summary>
public int SuspendNum { get; set; }
/// <summary>
/// 退学数量
/// </summary>
public int DropOutNum { get; set; }
/// <summary>
/// 报名情况 1已报名 2未成交
/// </summary>
public int Q_EnrollState { get; set; }
#endregion
}
}
\ No newline at end of file
......@@ -811,5 +811,34 @@ namespace Edu.Module.User
studentRepository.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), item.StuId));
}
}
/// <summary>
/// 更新学员咨询信息
/// </summary>
/// <param name="demodel"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetStudentConsultResults(RB_Student_ViewModel demodel, UserInfo userInfo)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Student_ViewModel.ConsultDate), demodel.ConsultDate},
{ nameof(RB_Student_ViewModel.PlanPrice), demodel.PlanPrice},
{ nameof(RB_Student_ViewModel.BaseCondition), demodel.BaseCondition},
{ nameof(RB_Student_ViewModel.DemandPoint), demodel.DemandPoint},
{ nameof(RB_Student_ViewModel.ResistPoint), demodel.ResistPoint},
{ nameof(RB_Student_ViewModel.ConsultingResults), demodel.ConsultingResults},
{ nameof(RB_Student_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Student_ViewModel.UpdateTime), DateTime.Now}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Student_ViewModel.StuId),
FiledValue = demodel.StuId,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = studentRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
}
}
......@@ -40,6 +40,14 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Follow_Extend.StuId), query.StuId);
}
if (!string.IsNullOrEmpty(query.STime))
{
builder.AppendFormat(" AND A.{0} >='{1}' ", nameof(RB_Student_Follow_Extend.CreateTime), query.STime);
}
if (!string.IsNullOrEmpty(query.ETime))
{
builder.AppendFormat(" AND A.{0} <='{1} 23:59:59' ", nameof(RB_Student_Follow_Extend.CreateTime), query.ETime);
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Student_Follow_Extend.Id));
return GetPage<RB_Student_Follow_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
......@@ -78,5 +86,75 @@ WHERE 1=1
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Student_Follow_Extend.Id));
return Get<RB_Student_Follow_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 获取学员跟进月度列表
/// </summary>
/// <param name="stuIds"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Student_Follow_Extend> GetStudentFollowUpMonthList(string stuIds, int group_Id)
{
string sql = $@"SELECT f.*,f1.Remark,f1.CreateTime FROM
(SELECT StuId,AssistType,DATE_FORMAT(CreateTime,'%Y-%m') as MonthStr,MAX(Id) AS Id FROM rb_student_follow WHERE Group_Id ={group_Id} and `Status` =0 and StuId in ({stuIds}) and AssistType in(2,4)
GROUP BY StuId,AssistType,DATE_FORMAT(CreateTime,'%Y-%m')
) f
INNER JOIN rb_student_follow f1 on f.Id = f1.Id
";
return Get<RB_Student_Follow_Extend>(sql).ToList();
}
/// <summary>
/// 获取学员续费月度列表
/// </summary>
/// <param name="stuIds"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Student_Follow_Extend> GetStudentRenewMonthList(string stuIds, int group_Id)
{
string sql = $@"SELECT s.StuId,DATE_FORMAT(o.CreateTime,'%Y-%m') AS MonthStr FROM rb_student s
INNER JOIN rb_student_orderguest sog on s.StuId = sog.Student_Id
INNER JOIN rb_order o on sog.OrderId = o.OrderId
INNER JOIN rb_order_guest og on og.Id = sog.GuestId
where s.Group_Id ={group_Id} and s.`Status` =0 and sog.`Status` =0 and o.OrderState <>3 and (o.RenewOrderId >0 or og.RenewState =2) and s.StuId in({stuIds})
GROUP BY s.StuId,DATE_FORMAT(o.CreateTime,'%Y-%m')
";
return Get<RB_Student_Follow_Extend>(sql).ToList();
}
/// <summary>
/// 获取学员介绍月度列表
/// </summary>
/// <param name="stuIds"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Student_Follow_Extend> GetStudentIntroductionMonthList(string stuIds, int group_Id)
{
string sql = $@"SELECT s.StuSourceId as StuId,DATE_FORMAT(o.CreateTime,'%Y-%m') AS MonthStr,COUNT(0) AS StuNum FROM rb_student s
INNER JOIN rb_student_orderguest sog on s.StuId = sog.Student_Id
INNER JOIN rb_order o on sog.OrderId = o.OrderId
INNER JOIN rb_order_guest og on og.Id = sog.GuestId
where s.Group_Id ={group_Id} and s.`Status` =0 and sog.`Status` =0 and o.OrderState <>3 and s.StuSource =4 and s.StuSourceId in({stuIds})
GROUP BY s.StuSourceId,DATE_FORMAT(o.CreateTime,'%Y-%m')
";
return Get<RB_Student_Follow_Extend>(sql).ToList();
}
/// <summary>
/// 获取学员最近的一条跟进记录
/// </summary>
/// <param name="stuIds"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Student_Follow_Extend> GetStudentFollowUpLatelyList(string stuIds, int group_Id)
{
string sql = $@"SELECT f.*,f1.Remark,f1.CreateTime FROM
(SELECT StuId,AssistType,MAX(Id) AS Id FROM rb_student_follow WHERE Group_Id ={group_Id} and `Status` =0 and StuId in ({stuIds}) and AssistType =2
GROUP BY StuId,AssistType
) f
INNER JOIN rb_student_follow f1 on f.Id = f1.Id
";
return Get<RB_Student_Follow_Extend>(sql).ToList();
}
}
}
......@@ -219,5 +219,322 @@ WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState
ORDER BY {(Type == 1 ? "c.OpenTime asc" : "c.OpenTime desc")} LIMIT 1";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
}
#region 学员跟进
/// <summary>
/// 获取学员跟进分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentFollowUpPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 ";
if (demodel.Group_Id > 0) {
where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.StuName)) {
where += $" and s.{nameof(RB_Student_ViewModel.StuName)} like @StuName";
parameters.Add("StuName", "%" + demodel.StuName + "%");
}
if (!string.IsNullOrEmpty(demodel.StuRealMobile)) {
where += $" and s.{nameof(RB_Student_ViewModel.StuRealMobile)} like @StuRealMobile";
parameters.Add("StuRealMobile", "%" + demodel.StuRealMobile + "%");
}
if (!string.IsNullOrEmpty(demodel.QQ))
{
where += $" and s.{nameof(RB_Student_ViewModel.QQ)} like @QQ";
parameters.Add("QQ", "%" + demodel.QQ + "%");
}
if (!string.IsNullOrEmpty(demodel.WeChatNo))
{
where += $" and s.{nameof(RB_Student_ViewModel.WeChatNo)} like @WeChatNo";
parameters.Add("WeChatNo", "%" + demodel.WeChatNo + "%");
}
if (demodel.StuType > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.StuType)} ={demodel.StuType}";
}
if (demodel.StuGuestState > 0)
{
where += $" and org.GuestState ={(int)demodel.StuGuestState}";
}
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{
if (demodel.Q_FType == 1)
{
where += $" and f.Id is not null";
}
else
{
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 = $@"SELECT s.StuId,s.StuName,s.StuTel,s.StuRealMobile,s.QQ,DATE_FORMAT(ec.CreateTime,'%Y-%m-%d') as followUpTime,c.CourseId,c.CourseName,s.JapanBaseInfo,s.StuBirth,org.GuestState as StuGuestState
FROM rb_student s
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 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
INNER JOIN rb_order_guest org on org.Id = og.GuestId
INNER JOIN rb_order o on og.OrderId = o.OrderId
INNER JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
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 += $" where {where} ";
if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)))
{
sql += $" GROUP BY s.StuId";
}
sql += $" order by s.StuId desc";
return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
/// <summary>
/// 获取人数统计
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public RB_Student_ViewModel GetStudentFollowUpStat(RB_Student_ViewModel demodel) {
DynamicParameters parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 ";
if (demodel.Group_Id > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.StuName))
{
where += $" and s.{nameof(RB_Student_ViewModel.StuName)} like @StuName";
parameters.Add("StuName", "%" + demodel.StuName + "%");
}
if (!string.IsNullOrEmpty(demodel.StuRealMobile))
{
where += $" and s.{nameof(RB_Student_ViewModel.StuRealMobile)} like @StuRealMobile";
parameters.Add("StuRealMobile", "%" + demodel.StuRealMobile + "%");
}
if (!string.IsNullOrEmpty(demodel.QQ))
{
where += $" and s.{nameof(RB_Student_ViewModel.QQ)} like @QQ";
parameters.Add("QQ", "%" + demodel.QQ + "%");
}
if (!string.IsNullOrEmpty(demodel.WeChatNo))
{
where += $" and s.{nameof(RB_Student_ViewModel.WeChatNo)} like @WeChatNo";
parameters.Add("WeChatNo", "%" + demodel.WeChatNo + "%");
}
if (demodel.StuType > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.StuType)} ={demodel.StuType}";
}
if (demodel.StuGuestState > 0)
{
where += $" and org.GuestState ={(int)demodel.StuGuestState}";
}
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{
if (demodel.Q_FType == 1)
{
where += $" and f.Id is not null";
}
else
{
where += $" and f.Id is null";
}
}
string sql = $@"
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 =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 =7 THEN 1 ELSE 0 END) AS GraduateNum
from(
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
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 (SELECT og.Student_Id,MAX(og.Id) as Id FROM rb_student_orderguest og
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
INNER JOIN rb_order_guest org on org.Id = og.GuestId
INNER JOIN rb_order o on og.OrderId = o.OrderId
INNER JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
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 += $" where {where} ";
if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)) || demodel.IsQueryMyStu == 1)
{
sql += $" GROUP BY s.StuId";
}
sql += $" order by s.StuId desc)t";
return Get<RB_Student_ViewModel>(sql, parameters).FirstOrDefault();
}
/// <summary>
/// 获取学员咨询分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentConsultPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 ";
if (demodel.Group_Id > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.StuName))
{
where += $" and s.{nameof(RB_Student_ViewModel.StuName)} like @StuName";
parameters.Add("StuName", "%" + demodel.StuName + "%");
}
if (!string.IsNullOrEmpty(demodel.StuRealMobile))
{
where += $" and s.{nameof(RB_Student_ViewModel.StuRealMobile)} like @StuRealMobile";
parameters.Add("StuRealMobile", "%" + demodel.StuRealMobile + "%");
}
if (!string.IsNullOrEmpty(demodel.QQ))
{
where += $" and s.{nameof(RB_Student_ViewModel.QQ)} like @QQ";
parameters.Add("QQ", "%" + demodel.QQ + "%");
}
if (!string.IsNullOrEmpty(demodel.WeChatNo))
{
where += $" and s.{nameof(RB_Student_ViewModel.WeChatNo)} like @WeChatNo";
parameters.Add("WeChatNo", "%" + demodel.WeChatNo + "%");
}
if (demodel.StuType > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.StuType)} ={demodel.StuType}";
}
if (demodel.StuGuestState > 0)
{
where += $" and org.GuestState ={(int)demodel.StuGuestState}";
}
if (demodel.Q_EnrollState > 0) {
if (demodel.Q_EnrollState == 1)
{
where += $" and o.OrderId is not null";
}
else {
where += $" and o.OrderId 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 = $@"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
FROM rb_student s
LEFT JOIN (
SELECT sog.Student_Id,MAX(og.Id) AS GuestId FROM rb_student_orderguest sog
INNER JOIN rb_order o on sog.OrderId = o.OrderId
INNER JOIN rb_order_guest og on sog.GuestId = og.Id
WHERE o.Group_Id =100000 and sog.`Status` =0 and o.OrderState <>3 and og.`Status` =0 GROUP BY sog.Student_Id
) ot on s.StuId = ot.Student_Id
LEFT JOIN rb_order_guest og on ot.GuestId = og.Id
LEFT JOIN rb_order o on og.OrderId = o.OrderId
LEFT JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_channel ch on s.StuChannel = ch.Id
WHERE 1=1
GROUP BY s.StuId order by s.StuId desc";
return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
#endregion
}
}
......@@ -138,6 +138,8 @@ namespace Edu.WebApi.Controllers.Customer
var query = new RB_Student_Follow_Extend()
{
StuId = base.ParmJObj.GetInt("StuId"),
STime = base.ParmJObj.GetStringValue("STime"),
ETime = base.ParmJObj.GetStringValue("ETime"),
};
query.Group_Id = base.UserInfo.Group_Id;
var data = customerStudentModule.GetStudentFollowPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.AOP;
using Edu.Cache.User;
using Edu.Cache.WeChat;
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
using Edu.Module.User;
using Edu.Repository.Course;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Edu.WebApi.Controllers.User
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class StudentStatController : BaseController
{
/// <summary>
/// 学员统计
/// </summary>
private readonly StudentStatModule studentStatModule = new StudentStatModule();
#region 学员跟进
/// <summary>
/// 获取学员根据分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentFollowUpPageList() {
var userInfo = base.UserInfo;
ResultPageModel pmodel = JsonHelper.DeserializeObject<ResultPageModel>(base.RequestParm.Msg.ToString());
RB_Student_ViewModel demodel = JsonHelper.DeserializeObject<RB_Student_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
var list = studentStatModule.GetStudentFollowUpPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = count;
pmodel.PageData = list;
return ApiResult.Success("", pmodel);
}
#endregion
#region 客人咨询
/// <summary>
/// 获取学员咨询分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentConsultPageList()
{
var userInfo = base.UserInfo;
ResultPageModel pmodel = JsonHelper.DeserializeObject<ResultPageModel>(base.RequestParm.Msg.ToString());
RB_Student_ViewModel demodel = JsonHelper.DeserializeObject<RB_Student_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
if (demodel.IsQueryMyStu == 1)
{
demodel.CreateBy = userInfo.Id;
}
var list = studentStatModule.GetStudentConsultPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = count;
pmodel.PageData = list;
return ApiResult.Success("", pmodel);
}
#endregion
}
}
......@@ -1232,6 +1232,12 @@ namespace Edu.WebApi.Controllers.User
extModel.StuNeedsName,
extModel.StuRealMobile,
extModel.CustomerName,
extModel.PlanPrice,
extModel.BaseCondition,
extModel.DemandPoint,
extModel.ResistPoint,
extModel.ConsultingResults,
ConsultDate = extModel.ConsultDate.HasValue ? extModel.ConsultDate.Value.ToString("yyyy-MM-dd") : "",
};
return ApiResult.Success(data: obj);
}
......@@ -1324,6 +1330,28 @@ namespace Edu.WebApi.Controllers.User
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 保存学生咨询结果
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetStudentConsultResults() {
var userInfo = base.UserInfo;
RB_Student_ViewModel demodel = JsonHelper.DeserializeObject<RB_Student_ViewModel>(base.RequestParm.Msg.ToString());
if (demodel.StuId <= 0) {
return ApiResult.ParamIsNull("请传递学员ID");
}
string msg = studentModule.SetStudentConsultResults(demodel, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
#region 管理者管理
......
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