Commit eaf8f986 authored by liudong1993's avatar liudong1993

1

parents 5cc039c0 a0e84e01
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.User
{
/// <summary>
/// 协助人员枚举
/// </summary>
public enum AssistTypeEnum
{
/// <summary>
/// 市场人员
/// </summary>
[EnumField("市场人员")]
Market = 1,
/// <summary>
/// 课程顾问
/// </summary>
[EnumField("课程顾问")]
CourseAdviser = 2,
/// <summary>
/// 学管
/// </summary>
[EnumField("学管")]
StuManager = 3,
/// <summary>
/// 教师
/// </summary>
[EnumField("教师")]
Teacher = 4,
/// <summary>
/// 其他
/// </summary>
[EnumField("其他")]
Other = 5,
}
}
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.User
{
/// <summary>
/// 收客渠道
/// </summary>
public enum StuChannelEnum
{
/// <summary>
/// 线下推广
/// </summary>
[EnumField("线下推广")]
OfflinePromote = 1,
/// <summary>
/// 线下活动
/// </summary>
[EnumField("线下活动")]
OfflineActivity = 2,
/// <summary>
/// 公众号
/// </summary>
[EnumField("公众号")]
OfficialAccount = 3,
/// <summary>
/// 朋友圈
/// </summary>
[EnumField("朋友圈")]
WechatMoments =4,
/// <summary>
/// 过路客
/// </summary>
[EnumField("过路客")]
PassBy = 5,
/// <summary>
/// 第三方平台
/// </summary>
[EnumField("第三方平台")]
ThirdPartyPlatform = 6,
}
}
\ No newline at end of file
......@@ -44,5 +44,10 @@ namespace Edu.Model.Entity.Customer
/// 使用值
/// </summary>
public decimal FinishValue { get; set; }
/// <summary>
/// 完成编号
/// </summary>
public int FinishId { get; set; }
}
}
using Edu.Common.Enum.User;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Customer
{
/// <summary>
/// 学员协助人员实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_Assist
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 学员编号
/// </summary>
public int StuId { get; set; }
/// <summary>
/// 协助类型(见枚举)
/// </summary>
public AssistTypeEnum AssistType { get; set; }
/// <summary>
/// 协助类型编号
/// </summary>
public int AssistId { get; set; }
}
}
......@@ -176,5 +176,15 @@ namespace Edu.Model.Entity.User
/// 客户阶段(见枚举)
/// </summary>
public StuStageEnum StuStage { get; set; }
/// <summary>
/// 收客渠道
/// </summary>
public StuChannelEnum StuChannel { get; set; }
/// <summary>
/// 第三方平台名称
/// </summary>
public string PlatformName { get; set; }
}
}
using Edu.Model.Entity.Customer;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Customer
{
/// <summary>
/// 学员协助人员扩展实体类
/// </summary>
public class RB_Student_Assist_Extend : RB_Student_Assist
{
/// <summary>
/// 学员编号【查询使用】
/// </summary>
public string QStuIds { get; set; }
/// <summary>
/// 协助人员名称
/// </summary>
public string AssistName { get; set; }
}
}
using Edu.Common;
using Edu.Common.Enum.Course;
using Edu.Model.ViewModel.Customer;
using System;
using System.Collections.Generic;
namespace Edu.Model.ViewModel.User
{
......@@ -186,5 +188,14 @@ namespace Edu.Model.ViewModel.User
/// 是否续费学生 1是
/// </summary>
public int IsRenewGuest { get; set; }
/// 协助人员
/// </summary>
public List<RB_Student_Assist_Extend> AssistList { get; set; }
/// <summary>
/// 是否查询当天访客
/// </summary>
public int IsQCurrentDay { get; set; }
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@
using Edu.Common.Enum;
using Edu.Common.Enum.User;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.Mall;
using Edu.Model.ViewModel.User;
using Edu.Repository.Customer;
......@@ -58,6 +59,11 @@ namespace Edu.Module.User
/// </summary>
private readonly RB_Student_FollowRepository followRepository = new RB_Student_FollowRepository();
/// <summary>
/// 学员协助人员仓储层对象
/// </summary>
private readonly RB_Student_AssistRepository student_AssistRepository = new RB_Student_AssistRepository();
/// <summary>
/// 获取学生列表
/// </summary>
......@@ -94,6 +100,17 @@ namespace Edu.Module.User
{
CustomerId = query.CustomerId
});
//协助人员列表
var assistList = student_AssistRepository.GetStudentAssistListRepository(new RB_Student_Assist_Extend()
{
QStuIds = stuIds
});
string aIds = string.Join(",", assistList.Select(qitem => qitem.AssistId));
List<RB_Account_ViewModel> accountList = new List<RB_Account_ViewModel>();
if (!string.IsNullOrEmpty(aIds))
{
accountList= accountModule.GetAccountListExtModule(new RB_Account_ViewModel() { QIds = aIds });
}
var provideList = list.Where(qitem => qitem.ProviceId > 0).Select(qitem => qitem.ProviceId).ToList();
var cityList = list.Where(qitem => qitem.CityId > 0).Select(qitem => qitem.CityId).ToList();
var areaList = list.Where(qitem => qitem.AreaId > 0).Select(qitem => qitem.AreaId).ToList();
......@@ -134,6 +151,12 @@ namespace Edu.Module.User
+ "/" + (destinationList?.FirstOrDefault(qitem => qitem.ID == item.CityId)?.Name ?? "")
+ "/" + (destinationList?.FirstOrDefault(qitem => qitem.ID == item.AreaId)?.Name ?? "");
var tempAssistList = assistList?.Where(qitem => qitem.StuId == item.StuId)?.ToList();
foreach (var sItem in tempAssistList)
{
sItem.AssistName = accountList?.FirstOrDefault(qitem => qitem.Id == sItem.AssistId)?.AccountName ?? "";
}
item.AssistList = tempAssistList;
}
}
return list;
......
......@@ -46,6 +46,10 @@ WHERE 1=1
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Customer_Finishdetails_Extend.CustomerId), query.CustomerId);
}
if (query.FinishId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Customer_Finishdetails_Extend.FinishId), query.FinishId);
}
}
return GetPage<RB_Customer_Finishdetails_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
......
using Edu.Model.Entity.Customer;
using Edu.Model.ViewModel.Customer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Customer
{
/// <summary>
/// 学员协助人员仓储层
/// </summary>
public class RB_Student_AssistRepository : BaseRepository<RB_Student_Assist>
{
/// <summary>
/// 获取学员协助人员列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Assist_Extend> GetStudentAssistListRepository(RB_Student_Assist_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Assist AS A
WHERE 1=1
");
if (query != null)
{
if (query.StuId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Assist_Extend.StuId), query.StuId);
}
if (!string.IsNullOrEmpty(query.QStuIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Student_Assist_Extend.StuId), query.QStuIds);
}
}
return Get<RB_Student_Assist_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 删除学员协同人员
/// </summary>
/// <param name="StuId"></param>
/// <returns></returns>
public bool DeleteStudentAssistRepository(int StuId)
{
string delSql = string.Format(" DELETE FROM RB_Student_Assist WHERE StuId={0} ", StuId);
return base.Execute(delSql)>0;
}
}
}
......@@ -157,9 +157,9 @@ WHERE 1=1
builder.AppendFormat(@" AND A.{0} IN ({1}) ", nameof(RB_Visitor_Reserve_Extend.ReserveClassId), query.Q_ReserveClassIds);
}
string sql = string.Format(@"
SELECT A.*,IFNULL(B.`Name`,'') AS VisitorName
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_visitor AS B ON A.Visitor_Id=B.Id
WHERE 1=1 {0}
SELECT A.*,IFNULL(B.StuName,'') AS VisitorName
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_student AS B ON A.Visitor_Id=B.StuId
WHERE 1=1 {0}
", builder.ToString());
return Get<RB_Visitor_Reserve_Extend>(sql, parameters).ToList();
}
......
......@@ -26,6 +26,11 @@ namespace Edu.Repository.User
/// </summary>
private readonly RB_Student_LogRepository student_LogRepository = new RB_Student_LogRepository();
/// <summary>
/// 学员协同人员仓储层对象
/// </summary>
private readonly RB_Student_AssistRepository student_AssistRepository = new RB_Student_AssistRepository();
/// <summary>
/// 获取学生列表
/// </summary>
......@@ -168,7 +173,7 @@ WHERE 1=1
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND t.{0}>='{1}' ", nameof(RB_Student_ViewModel.CreateTime),query.StartTime);
builder.AppendFormat(" AND t.{0}>='{1}' ", nameof(RB_Student_ViewModel.CreateTime), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
......@@ -255,7 +260,7 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState=1 an
}
if (oldModel.StuSex != model.StuSex)
{
logContent += string.Format("性别:由【{0}】=>【{1}】,", oldModel.StuSex==0?"男":"女", model.StuSex == 0 ? "男" : "女");
logContent += string.Format("性别:由【{0}】=>【{1}】,", oldModel.StuSex == 0 ? "男" : "女", model.StuSex == 0 ? "男" : "女");
}
if (oldModel.StuBirth != model.StuBirth)
{
......@@ -285,6 +290,14 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState=1 an
{
logContent += string.Format("来源:由【{0}】=>【{1}】,", oldModel.StuSource.ToName(), model.StuSource.ToName());
}
if (oldModel.StuChannel != model.StuChannel)
{
logContent += string.Format("收客渠道:由【{0}】=>【{1}】,", oldModel.StuChannel.ToName(), model.StuChannel.ToName());
}
if (oldModel.PlatformName != model.PlatformName)
{
logContent += string.Format("地三方平台名称:由【{0}】=>【{1}】,", oldModel.PlatformName, model.PlatformName);
}
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Student_ViewModel.StuName),model.StuName.Trim() },
......@@ -307,6 +320,8 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState=1 an
{nameof(RB_Student_ViewModel.StuIDCard),model.StuIDCard },
{nameof(RB_Student_ViewModel.StuIDCardAddress),model.StuIDCardAddress },
{nameof(RB_Student_ViewModel.StuStage),model.StuStage },
{nameof(RB_Student_ViewModel.StuChannel),model.StuChannel },
{nameof(RB_Student_ViewModel.PlatformName),model.PlatformName },
};
flag = base.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), model.StuId));
createBy = model.UpdateBy;
......@@ -346,6 +361,91 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState=1 an
logTitle = "创建客户";
}
var oldAssistList = student_AssistRepository.GetStudentAssistListRepository(new Model.ViewModel.Customer.RB_Student_Assist_Extend()
{
StuId = model.StuId
});
List<int> ids1 = new List<int>();
if (model.AssistList != null)
{
ids1 = Common.Plugin.StringHelper.StringToListInt(string.Join(",", model.AssistList.Select(qitem => qitem.AssistId)));
}
if (oldAssistList != null)
{
List<int> ids2 = Common.Plugin.StringHelper.StringToListInt(string.Join(",", oldAssistList.Select(qitem => qitem.AssistId)));
if (ids2 != null && ids2.Count > 0)
{
ids1.AddRange(ids2);
}
}
string aids = string.Join(",", ids1);
List<Employee_ViewModel> empList = new List<Employee_ViewModel>();
if (!string.IsNullOrEmpty(aids))
{
empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel()
{
QIds = aids
});
}
//以前没有协同人员【直接新增】
if (oldAssistList == null || (oldAssistList != null && oldAssistList.Count == 0))
{
foreach (var item in oldAssistList)
{
student_AssistRepository.Insert(new Model.Entity.Customer.RB_Student_Assist()
{
AssistId = item.AssistId,
AssistType = item.AssistType,
StuId = model.StuId
});
logContent+=string.Format("新增协同人员:"+ empList?.FirstOrDefault(qitem=>qitem.Id==item.AssistId)?.EmployeeName);
}
}
else
{
//现在没有协同人员了【直接删除以前的协同人员】
if (model.AssistList == null || (model.AssistList != null && model.AssistList.Count == 0))
{
student_AssistRepository.DeleteStudentAssistRepository(model.StuId);
foreach (var item in oldAssistList)
{
logContent += string.Format("删除协同人员:" + empList?.FirstOrDefault(qitem => qitem.Id == item.AssistId)?.EmployeeName);
}
}
//找出差异的数据
var deleteList = oldAssistList.Where(qitem => !model.AssistList.Any(oldItem => qitem.Id == oldItem.Id)).ToList();
foreach (var dItem in deleteList)
{
if (dItem.Id > 0)
{
logContent += string.Format("删除协同人员:" + empList?.FirstOrDefault(qitem => qitem.Id == dItem.AssistId)?.EmployeeName);
student_AssistRepository.Delete(dItem.Id);
}
}
foreach (var item in model.AssistList)
{
item.StuId = model.StuId;
if (item.Id == 0)
{
logContent += string.Format("新增协同人员:" + empList?.FirstOrDefault(qitem => qitem.Id == item.AssistId)?.EmployeeName);
student_AssistRepository.Insert(item);
}
else
{
var oldModel = oldAssistList?.FirstOrDefault(qitem => qitem.Id == item.Id);
if ((oldModel?.AssistId ?? 0) != item.AssistId)
{
logContent += string.Format("修改协同人员:【0】=>【{1}】",
empList?.FirstOrDefault(qitem => qitem.Id == (oldModel?.AssistId ?? 0))?.EmployeeName,
empList?.FirstOrDefault(qitem => qitem.Id == item.AssistId)?.EmployeeName
);
}
student_AssistRepository.Update(item);
}
}
}
student_LogRepository.AddStuLogRepository(model.StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, createBy, CreateType: model.CreateType);
return flag;
}
......
......@@ -417,6 +417,7 @@ namespace Edu.WebApi.Controllers.Customer
TaskId = base.ParmJObj.GetInt("TaskId"),
DetailId = base.ParmJObj.GetInt("DetailId"),
CustomerId=base.ParmJObj.GetInt("CustomerId"),
FinishId=base.ParmJObj.GetInt("GetCustomerFinishtaskDetailsPage"),
};
var list = taskModule.GetCustomerFinishdetailsPageModule(pageModel.PageIndex,pageModel.PageSize,out long rowsCount, query);
pageModel.Count = rowsCount;
......
......@@ -4,6 +4,7 @@ using Edu.Common.Enum.Duty;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Duty;
using Edu.Module.Duty;
using Edu.Module.User;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
......@@ -24,8 +25,16 @@ namespace Edu.WebApi.Controllers.Duty
[EnableCors("AllowCors")]
public class DutyPlanController : BaseController
{
/// <summary>
/// 值班计划处理类对象
/// </summary>
private readonly DutyPlanModule dutyPlanModule = AOP.AOPHelper.CreateAOPObject<DutyPlanModule>();
/// <summary>
/// 学员处理类对象
/// </summary>
private readonly StudentModule studentModule = AOP.AOPHelper.CreateAOPObject<StudentModule>();
/// <summary>
/// 获取值班计划分页列表【管理端】
/// </summary>
......@@ -541,6 +550,8 @@ namespace Edu.WebApi.Controllers.Duty
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 获取访客分页列表
/// </summary>
......
......@@ -9,6 +9,7 @@ using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.Log;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
......@@ -19,6 +20,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.User
{
......@@ -658,9 +660,9 @@ namespace Edu.WebApi.Controllers.User
CreateBy = base.ParmJObj.GetInt("CreateBy"),
IsQueryMyStu = base.ParmJObj.GetInt("IsQueryMyStu"),
CustomerId = base.ParmJObj.GetInt("CustomerId"),
StuStage=(StuStageEnum)base.ParmJObj.GetInt("StuStage"),
StartTime=base.ParmJObj.GetStringValue("StartTime"),
EndTime=base.ParmJObj.GetStringValue("EndTime"),
StuStage = (StuStageEnum)base.ParmJObj.GetInt("StuStage"),
StartTime = base.ParmJObj.GetStringValue("StartTime"),
EndTime = base.ParmJObj.GetStringValue("EndTime"),
};
if (query.IsQueryMyStu == 1)
{
......@@ -691,6 +693,18 @@ namespace Edu.WebApi.Controllers.User
item.CreateByName,
item.CreateType,
CreateTypeStr = item.CreateType == 1 ? "员工录入" : "同业录入",
item.StuChannel,
StuChannelName= item.StuChannel.ToName(),
item.PlatformName,
AssistList = item.AssistList.Select(qitem => new
{
qitem.Id,
qitem.StuId,
qitem.AssistId,
qitem.AssistName,
qitem.AssistType,
AssistTypeName = qitem.AssistType.ToName()
}),
});
}
pageModel.Count = rowsCount;
......@@ -741,7 +755,9 @@ namespace Edu.WebApi.Controllers.User
StuContractMobile = base.ParmJObj.GetStringValue("StuContractMobile"),
StuIDCard = base.ParmJObj.GetStringValue("StuIDCard"),
StuIDCardAddress = base.ParmJObj.GetStringValue("StuIDCardAddress"),
StuStage=(StuStageEnum)base.ParmJObj.GetInt("StuStage"),
StuStage = (StuStageEnum)base.ParmJObj.GetInt("StuStage"),
StuChannel = (StuChannelEnum)base.ParmJObj.GetInt("StuChannel"),
PlatformName = base.ParmJObj.GetStringValue("PlatformName"),
};
if (extModel.StuId == 0)
{
......@@ -762,10 +778,69 @@ namespace Edu.WebApi.Controllers.User
{
return ApiResult.Failed("此学员手机号已绑定同行!请重新录入!");
}
extModel.AssistList = new List<RB_Student_Assist_Extend>();
string AssistList = base.ParmJObj.GetStringValue("AssistList");
if (!string.IsNullOrEmpty(AssistList))
{
JArray jarray = JArray.Parse(AssistList);
if (jarray != null && jarray.Count > 0)
{
foreach (var jItem in jarray)
{
JObject jobj = JObject.Parse(jItem.ToString());
var aModel = new RB_Student_Assist_Extend()
{
Id = jobj.GetInt("Id"),
AssistId = jobj.GetInt("AssistId"),
AssistType = (AssistTypeEnum)jobj.GetInt("AssistType"),
StuId = jobj.GetInt("StuId"),
};
extModel.AssistList.Add(aModel);
}
}
}
bool flag = studentModule.SetStudentModule(extModel);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 检查学员手机号码是否存在
/// </summary>
/// <returns></returns>
public ApiResult CheckExistsStu()
{
var extModel = new RB_Student_ViewModel()
{
StuId = base.ParmJObj.GetInt("StuId"),
StuTel = base.ParmJObj.GetStringValue("StuTel"),
};
var customer = base.AppletCustomerInfo;
extModel.Group_Id = customer.GroupId;
extModel.CustomerId = customer.CustomerId;
bool flag = studentModule.CheckStudentModule(extModel);
return flag ? ApiResult.Failed(message: "此学员手机号已绑定同行!请重新录入!") : ApiResult.Success();
}
/// <summary>
/// 获取收客平台列表
/// </summary>
/// <returns></returns>
public ApiResult GetStuChannelList()
{
var list = Common.Plugin.EnumHelper.EnumToList(typeof(StuChannelEnum));
return ApiResult.Success(data: list);
}
/// <summary>
/// 获取协助人员类型列表
/// </summary>
/// <returns></returns>
public ApiResult GetAssistTypeList()
{
var list = Common.Plugin.EnumHelper.EnumToList(typeof(AssistTypeEnum));
return ApiResult.Success(data: list);
}
/// <summary>
/// 同业小程序添加学生名单
/// </summary>
......@@ -795,7 +870,7 @@ namespace Edu.WebApi.Controllers.User
StuContractMobile = base.ParmJObj.GetStringValue("StuContractMobile"),
StuIDCard = base.ParmJObj.GetStringValue("StuIDCard"),
StuIDCardAddress = base.ParmJObj.GetStringValue("StuIDCardAddress"),
StuStage =(StuStageEnum)base.ParmJObj.GetInt("StuStage"),
StuStage = (StuStageEnum)base.ParmJObj.GetInt("StuStage"),
};
extModel.CreateType = 2;
if (extModel.StuId == 0)
......@@ -820,6 +895,7 @@ namespace Edu.WebApi.Controllers.User
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 学员转交
/// </summary>
......@@ -893,7 +969,7 @@ namespace Edu.WebApi.Controllers.User
extModel.StuTel,
extModel.StuIcon,
extModel.StuSex,
StuBirth= Common.ConvertHelper.FormatDate(extModel.StuBirth),
StuBirth = Common.ConvertHelper.FormatDate(extModel.StuBirth),
StuBirthStr = Common.ConvertHelper.FormatDate(extModel.StuBirth),
extModel.ProviceId,
extModel.CityId,
......@@ -924,6 +1000,9 @@ namespace Edu.WebApi.Controllers.User
extModel.StuStage,
StuStageName = extModel.StuStage.ToName(),
extModel.CreateBy,
extModel.StuChannel,
StuChannelName = extModel.StuChannel.ToName(),
extModel.PlatformName,
};
return ApiResult.Success(data: obj);
}
......
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