Commit 13bb1c74 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents cb5806d5 97246f20
......@@ -105,6 +105,10 @@ namespace Edu.Cache.User
/// 账号仓储层对象
/// </summary>
private static readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 部门仓储层对象
/// </summary>
private static readonly RB_DepartmentRepository departmentRepository = new RB_DepartmentRepository();
/// <summary>
/// 获取用户登录信息
......@@ -138,12 +142,18 @@ namespace Edu.Cache.User
})?.FirstOrDefault();
if (model != null)
{
var deptList = departmentRepository.GetDepartmentListRepository(new Model.ViewModel.User.RB_Department_ViewModel()
{
DeptId = model.Dept_Id,
Group_Id = model.Group_Id,
ManagerIds = model.Id.ToString()
});
userInfo = new UserInfo
{
Id = model.Id,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
AccountType=model.AccountType,
AccountType = model.AccountType,
AccountName = model.AccountName,
GroupName = model.GroupName,
SchoolName = model.SchoolName,
......@@ -165,6 +175,7 @@ namespace Edu.Cache.User
IsTenCccUser = model.IsTenCccUser,
IsCourseConsultant = (model != null && model.UserRole == UserRoleEnum.CourseConsultant) ? 1 : 0,
IsMarket = (model != null && model.UserRole == UserRoleEnum.MarketPersion) ? 1 : 0,
IsManager = (deptList?.Count ?? 0) > 0 ? 1 : 0,
};
UserInfoSet(Cache.CacheKey.User_Login_Key + Id.ToString(), userInfo, Common.Config.JwtExpirTime);
}
......
......@@ -177,6 +177,11 @@ namespace Edu.Model.CacheModel
/// 是否是市场(1-是)
/// </summary>
public int IsMarket { get; set; }
/// <summary>
/// 部门负责人(1-是)
/// </summary>
public int IsManager { get; set; }
}
/// <summary>
......
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.DataStatistics
{
/// <summary>
/// 课程顾问部数据统计实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Consultant_Data
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 日期
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 试听人数
/// </summary>
public int TrialLessonCount { get; set; }
/// <summary>
/// 昨日试听人数
/// </summary>
public int YestodayTrialLesson { get; set; }
/// <summary>
/// 本周试听人数
/// </summary>
public int CurWeekTrialLesson { get; set; }
/// <summary>
/// 上周试听人数
/// </summary>
public int LastWeekTrialLesson { get; set; }
/// <summary>
/// 本月试听人数
/// </summary>
public int CurMonthTrialLesson { get; set; }
/// <summary>
/// 上月试听人数
/// </summary>
public int LastMonthTrialLesson { get; set; }
/// <summary>
/// 到访人数
/// </summary>
public int VisitCount { get; set; }
/// <summary>
/// 昨日到访人数
/// </summary>
public int YestodayVisit { get; set; }
/// <summary>
/// 本周到访人数
/// </summary>
public int CurWeekVisit { get; set; }
/// <summary>
/// 上周到访人数
/// </summary>
public int LastWeekVisit { get; set; }
/// <summary>
/// 本月到访人数
/// </summary>
public int CurMonthVisit { get; set; }
/// <summary>
/// 上月到访人数
/// </summary>
public int LastMonthVisit { get; set; }
/// <summary>
/// 转化率
/// </summary>
public decimal Rates { get; set; }
/// <summary>
/// 昨日转化率
/// </summary>
public decimal YestodayRates { get; set; }
/// <summary>
/// 本周转化率
/// </summary>
public decimal CurWeekRates { get; set; }
/// <summary>
/// 上周转化率
/// </summary>
public decimal LastWeekRates { get; set; }
/// <summary>
/// 本月转化率
/// </summary>
public decimal CurMonthRates { get; set; }
/// <summary>
/// 上月转化率
/// </summary>
public decimal LastMonthRates { get; set; }
/// <summary>
/// 有效回访总量(有跟进记录)
/// </summary>
public int FollowCount { get; set; }
/// <summary>
/// 昨日有效回访总量(有跟进记录)
/// </summary>
public int YestodayFollow { get; set; }
/// <summary>
/// 本周有效回访总量(有跟进记录)
/// </summary>
public int CurWeekFollow { get; set; }
/// <summary>
/// 上周有效回访总量(有跟进记录)
/// </summary>
public int LastWeekFollow { get; set; }
/// <summary>
/// 本月有效回访总量(有跟进记录)
/// </summary>
public int CurMonthFollow { get; set; }
/// <summary>
/// 上月有效回访总量(有跟进记录)
/// </summary>
public int LastMonthFollow { get; set; }
/// <summary>
/// 单资源回访平均数
/// </summary>
public decimal AgFollow { get; set; }
/// <summary>
/// 昨日单资源回访平均数
/// </summary>
public decimal YestodayAgFollow { get; set; }
/// <summary>
/// 本周单资源回访平均数
/// </summary>
public decimal CurWeekAgFollow { get; set; }
/// <summary>
/// 上周单资源回访平均数
/// </summary>
public decimal LastWeekAgFollow { get; set; }
/// <summary>
/// 本月单资源回访平均数
/// </summary>
public decimal CurMonthAgFollow { get; set; }
/// <summary>
/// 上月单资源回访平均数
/// </summary>
public decimal LastMonthAgFollow { get; set; }
/// <summary>
/// 当周新签数(以周为单位) [订单数量]
/// </summary>
public int CurWeekOrderNum { get; set; }
/// <summary>
/// 新签数累计 [订单数量累计】
/// </summary>
public int LastWeekOrderNum { get; set; }
/// <summary>
/// 当周签约金额(以周为单位) [订单金额]
/// </summary>
public decimal CurWeekOrderSale { get; set; }
/// <summary>
/// 签约金额累计 [订单数量金额]
/// </summary>
public decimal LastWeekOrderSale { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 所属部门编号
/// </summary>
public int DeptId { get; set; }
/// <summary>
/// 当月完成订单累计金额
/// </summary>
public decimal CurMonthOrderSale { get; set; }
/// <summary>
/// 当月效能目标金额
/// </summary>
public decimal CurMonthOrderGoal { get; set; }
/// <summary>
/// 当月新签累计 [订单数量累计】
/// </summary>
public int CurMonthOrderNum { get; set; }
/// <summary>
/// 上月新签累计 [订单数量累计】
/// </summary>
public int LastMonthOrderNum { get; set; }
/// <summary>
/// 上月累计金额
/// </summary>
public decimal LastMonthOrderSale { get; set; }
}
}
using Edu.Common.Enum;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.DataStatistics
{
/// <summary>
/// 课程顾问部月目标实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Consultant_Goal
{
/// <summary>
/// 主键
/// </summary>
public int Id { get; set; }
/// <summary>
/// 年份
/// </summary>
public int YearStr { get; set; }
/// <summary>
/// 月份
/// </summary>
public int MonthStr { get; set; }
/// <summary>
/// 目标金额
/// </summary>
public decimal GoalMoney { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 校区编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 部门编号
/// </summary>
public int Dept_Id { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public DateStateEnum Status { get; set; }
}
}
......@@ -10,7 +10,7 @@ namespace Edu.Model.Entity.DataStatistics
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_MarketConsultant
public class RB_Market_Data
{
/// <summary>
/// 主键编号
......
......@@ -39,5 +39,10 @@ namespace Edu.Model.ViewModel.Customer
/// 有效数据量 (第一次跟进且不等于流失)
/// </summary>
public int FollowCount { get; set; }
/// <summary>
/// 单资源回访平均数~~~就是一条资源跟进了几次 【平均】
/// </summary>
public decimal AgFollow { get; set; }
}
}
......@@ -76,6 +76,11 @@ namespace Edu.Model.ViewModel.Customer
/// </summary>
public int VisitCount { get; set; }
/// <summary>
/// 订单数量
/// </summary>
public int OrderCount { get; set; }
/// <summary>
/// 创建人【查询使用】
/// </summary>
......
using Edu.Model.Entity.DataStatistics;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.DataStatistics
{
/// <summary>
/// 课程顾问部数据统计扩展实体类
/// </summary>
public class RB_Consultant_Data_Extend: RB_Consultant_Data
{
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string QCreateByIds { get; set; }
}
}
using Edu.Model.Entity.DataStatistics;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.DataStatistics
{
/// <summary>
/// 课程顾问部月目标扩展实体类
/// </summary>
public class RB_Consultant_Goal_Extend : RB_Consultant_Goal
{
/// <summary>
/// 部门名称
/// </summary>
public string DeptName { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateByName { get; set; }
/// <summary>
/// 创建时间字符串
/// </summary>
public string CreateTimeStr { get { return Common.ConvertHelper.FormatTime(this.CreateTime); } }
}
}
......@@ -8,7 +8,7 @@ namespace Edu.Model.ViewModel.DataStatistics
/// <summary>
/// 市场部数据统计统计实体类
/// </summary>
public class RB_MarketConsultant_Extend : RB_MarketConsultant
public class RB_Market_Data_Extend : RB_Market_Data
{
/// <summary>
/// 开始时间
......
......@@ -216,6 +216,11 @@ namespace Edu.Model.ViewModel.Sell
/// </summary>
public string StuSourceIdName { get; set; }
/// <summary>
/// 同业企业
/// </summary>
public string EnterpriseName { get; set; }
/// <summary>
/// 学员负责人
/// </summary>
......
......@@ -309,5 +309,10 @@ namespace Edu.Model.ViewModel.Sell
/// 业务员
/// </summary>
public string QEnterIds { get; set; }
/// <summary>
/// 订单条数
/// </summary>
public int OrderCount { get; set; }
}
}
\ No newline at end of file
......@@ -220,6 +220,11 @@ namespace Edu.Model.ViewModel.User
/// </summary>
public string StuSourceIdName { get; set; }
/// <summary>
/// 同业企业
/// </summary>
public string EnterpriseName { get; set; }
/// <summary>
/// 客户阶段名称
/// </summary>
......
......@@ -513,6 +513,7 @@ namespace Edu.Module.Course
else if (item.CreateType == StuCreateTypeEnum.CustomerInput)
{
item.StuSourceIdName = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId)?.CustomerName ?? "";
item.EnterpriseName = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId)?.EnterpriseName ?? "";
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
......
......@@ -569,28 +569,31 @@ namespace Edu.Module.Duty
};
var flag = reserve_ClassRepository.Update(fileds, new WhereHelper(nameof(RB_Reserve_Class_Extend.ReserveClassId), ReserveClassId));
var model = GetReserveClassModule(ReserveClassId);
var teacherModel = accountRepository.GetAccountListRepository(new Model.ViewModel.User.RB_Account_ViewModel()
if (model != null)
{
Group_Id = model.Group_Id,
AccountId = model.TeacherId,
AccountType= Common.Enum.User.AccountTypeEnum.Teacher
})?.FirstOrDefault();
Common.Message.PushMessageModel pushModel = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.ReserveClass,
Content = "您有试听课信息被取消!请查收",
CoverImg = "",
CreateByName = UserInfo.AccountName,
JumpUrl = $"/course/classPlan?ClassType=2",
SendTime = DateTime.Now,
SendType = 0,
Title = "试听课",
Platform = 2,
ReceiveId = (teacherModel?.Id??0).ToString(),
};
if (flag)
{
Common.Message.MessageHelper.SendMessage(pushModel);
var teacherModel = accountRepository.GetAccountListRepository(new RB_Account_ViewModel()
{
Group_Id = model.Group_Id,
AccountId = model.TeacherId,
AccountType = Common.Enum.User.AccountTypeEnum.Teacher
})?.FirstOrDefault();
Common.Message.PushMessageModel pushModel = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.ReserveClass,
Content = "您有试听课信息被取消!请查收",
CoverImg = "",
CreateByName = UserInfo.AccountName,
JumpUrl = $"/course/classPlan?ClassType=2",
SendTime = DateTime.Now,
SendType = 0,
Title = "试听课",
Platform = 2,
ReceiveId = (teacherModel?.Id ?? 0).ToString(),
};
if (flag)
{
Common.Message.MessageHelper.SendMessage(pushModel);
}
}
return flag;
}
......
......@@ -276,6 +276,7 @@ namespace Edu.Module.User
else if (item.CreateType == StuCreateTypeEnum.CustomerInput)
{
item.StuSourceIdName = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId)?.CustomerName ?? "";
item.EnterpriseName = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId)?.EnterpriseName ?? "";
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
......
......@@ -183,6 +183,7 @@ namespace Edu.Module.User
else if (item.CreateType == StuCreateTypeEnum.CustomerInput)
{
item.StuSourceIdName = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId)?.CustomerName ?? "";
item.EnterpriseName = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId)?.EnterpriseName ?? "";
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
......@@ -220,7 +221,8 @@ namespace Edu.Module.User
item.CreateType,
CreateTypeName = item.CreateType.ToName(),
item.StuSourceId,
item.StuSourceIdName
item.StuSourceIdName,
item.EnterpriseName
};
RList.Add(StuObj);
}
......
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Edu.Module.User")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Edu.Module.User")]
[assembly: System.Reflection.AssemblyTitleAttribute("Edu.Module.User")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// 由 MSBuild WriteCodeFragment 类生成。
......@@ -170,7 +170,216 @@ SELECT A.CreateBy,COUNT(1) AS FollowCount
FROM rb_student_follow AS A INNER JOIN(SELECT StuId,CreateBy,MIN(Id) AS Id FROM rb_student_follow WHERE `Status`=0 GROUP BY StuId,CreateBy) AS B ON A.Id=B.Id
INNER JOIN RB_student AS C ON A.StuId=C.StuId
WHERE A.Status=0 AND C.Status=0 AND C.StuStage<>7 {0}
GROUP BY A.CreateBy
";
if (query.CreateBy > 0)
{
sql += string.Format(" AND A.CreateBy={0} ", query.CreateBy);
}
sql += " GROUP BY A.CreateBy ";
string todayWhere = "";
if (!string.IsNullOrEmpty(query.STime))
{
todayWhere += string.Format(" AND to_days(A.CreateTime)=to_days('{0}') ", query.STime);
}
else
{
todayWhere += string.Format(" AND to_days(A.CreateTime)=to_days(now()) ");
}
//今日
var todayList = Get<RB_Student_Follow_Extend>(string.Format(sql.ToString(), todayWhere)).ToList();
dicList.Add("today", todayList);
//昨日
string yesWhere = "";
if (!string.IsNullOrEmpty(query.STime))
{
yesWhere += string.Format(" AND TO_DAYS('{0}')-TO_DAYS(A.CreateTime)=1 ", query.STime);
}
else
{
yesWhere += string.Format(" AND TO_DAYS(now())-TO_DAYS(A.CreateTime)=1 ");
}
var yesList = Get<RB_Student_Follow_Extend>(string.Format(sql, yesWhere)).ToList();
dicList.Add("yestoday", yesList);
//本周
string curWeek = "";
if (!string.IsNullOrEmpty(query.STime))
{
curWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d' )) = YEARWEEK('{0}') ", query.STime);
}
else
{
curWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d')) = YEARWEEK(now()) ");
}
var curWeekList = Get<RB_Student_Follow_Extend>(string.Format(sql, curWeek)).ToList();
dicList.Add("currentWeek", curWeekList);
//上周
string lastWeek = "";
if (!string.IsNullOrEmpty(query.STime))
{
lastWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d')) = YEARWEEK('{0}')-1 ", query.STime);
}
else
{
lastWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d')) = YEARWEEK(now())-1 ");
}
var lastWeekList = Get<RB_Student_Follow_Extend>(string.Format(sql, lastWeek)).ToList();
dicList.Add("lastWeek", lastWeekList);
//本月
string curMonth = "";
if (!string.IsNullOrEmpty(query.STime))
{
curMonth += string.Format(" AND DATE_FORMAT(A.CreateTime,'%Y%m')=DATE_FORMAT('{0}','%Y%m') ", query.STime);
}
else
{
curMonth += string.Format(" AND DATE_FORMAT(A.CreateTime,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m') ");
}
var curMonthList = Get<RB_Student_Follow_Extend>(string.Format(sql, curMonth)).ToList();
dicList.Add("curMonth", curMonthList);
//上月
string lastMonth = "";
if (!string.IsNullOrEmpty(query.STime))
{
lastMonth += string.Format(" AND PERIOD_DIFF(date_format('{0}','%Y%m'),date_format(A.CreateTime,'%Y%m')) =1 ", query.STime);
}
else
{
lastMonth += string.Format(" AND PERIOD_DIFF(date_format(now(),'%Y%m'),date_format(A.CreateTime,'%Y%m')) =1 ");
}
var lastMonthList = Get<RB_Student_Follow_Extend>(string.Format(sql, lastMonth)).ToList();
dicList.Add("lastMonth", lastMonthList);
return dicList;
}
/// <summary>
/// 课程顾问部有效回访总量
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public Dictionary<string, List<RB_Student_Follow_Extend>> GetConsultantFollowStaticRepository(RB_Student_Follow_Extend query)
{
Dictionary<string, List<RB_Student_Follow_Extend>> dicList = new Dictionary<string, List<RB_Student_Follow_Extend>>();
string sql = @"
SELECT A.CreateBy,COUNT(1) AS FollowCount
FROM rb_student_follow AS A
WHERE A.Status=0 {0}
";
if (query.CreateBy > 0)
{
sql += string.Format(" AND A.CreateBy={0} ", query.CreateBy);
}
sql += " GROUP BY A.CreateBy ";
string todayWhere = "";
if (!string.IsNullOrEmpty(query.STime))
{
todayWhere += string.Format(" AND to_days(A.CreateTime)=to_days('{0}') ", query.STime);
}
else
{
todayWhere += string.Format(" AND to_days(A.CreateTime)=to_days(now()) ");
}
//今日
var todayList = Get<RB_Student_Follow_Extend>(string.Format(sql.ToString(), todayWhere)).ToList();
dicList.Add("today", todayList);
//昨日
string yesWhere = "";
if (!string.IsNullOrEmpty(query.STime))
{
yesWhere += string.Format(" AND TO_DAYS('{0}')-TO_DAYS(A.CreateTime)=1 ", query.STime);
}
else
{
yesWhere += string.Format(" AND TO_DAYS(now())-TO_DAYS(A.CreateTime)=1 ");
}
var yesList = Get<RB_Student_Follow_Extend>(string.Format(sql, yesWhere)).ToList();
dicList.Add("yestoday", yesList);
//本周
string curWeek = "";
if (!string.IsNullOrEmpty(query.STime))
{
curWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d' )) = YEARWEEK('{0}') ", query.STime);
}
else
{
curWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d')) = YEARWEEK(now()) ");
}
var curWeekList = Get<RB_Student_Follow_Extend>(string.Format(sql, curWeek)).ToList();
dicList.Add("currentWeek", curWeekList);
//上周
string lastWeek = "";
if (!string.IsNullOrEmpty(query.STime))
{
lastWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d')) = YEARWEEK('{0}')-1 ", query.STime);
}
else
{
lastWeek += string.Format(" AND YEARWEEK(date_format(A.CreateTime,'%Y-%m-%d')) = YEARWEEK(now())-1 ");
}
var lastWeekList = Get<RB_Student_Follow_Extend>(string.Format(sql, lastWeek)).ToList();
dicList.Add("lastWeek", lastWeekList);
//本月
string curMonth = "";
if (!string.IsNullOrEmpty(query.STime))
{
curMonth += string.Format(" AND DATE_FORMAT(A.CreateTime,'%Y%m')=DATE_FORMAT('{0}','%Y%m') ", query.STime);
}
else
{
curMonth += string.Format(" AND DATE_FORMAT(A.CreateTime,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m') ");
}
var curMonthList = Get<RB_Student_Follow_Extend>(string.Format(sql, curMonth)).ToList();
dicList.Add("curMonth", curMonthList);
//上月
string lastMonth = "";
if (!string.IsNullOrEmpty(query.STime))
{
lastMonth += string.Format(" AND PERIOD_DIFF(date_format('{0}','%Y%m'),date_format(A.CreateTime,'%Y%m')) =1 ", query.STime);
}
else
{
lastMonth += string.Format(" AND PERIOD_DIFF(date_format(now(),'%Y%m'),date_format(A.CreateTime,'%Y%m')) =1 ");
}
var lastMonthList = Get<RB_Student_Follow_Extend>(string.Format(sql, lastMonth)).ToList();
dicList.Add("lastMonth", lastMonthList);
return dicList;
}
/// <summary>
/// 单资源回访平均数~~~就是一条资源跟进了几次 【平均】
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public Dictionary<string, List<RB_Student_Follow_Extend>> GetConsultantAvgFollowStaticRepository(RB_Student_Follow_Extend query)
{
Dictionary<string, List<RB_Student_Follow_Extend>> dicList = new Dictionary<string, List<RB_Student_Follow_Extend>>();
string whereStr = "";
if (query.CreateBy > 0)
{
whereStr += string.Format(" AND CreateBy={0} ", query.CreateBy);
}
string sql = @"
SELECT Avg(FollowCount) AS AgFollow FROM
(
SELECT A.StuId,COUNT(1) AS FollowCount
FROM rb_student_follow AS A
WHERE A.Status=0 " + whereStr + @" {0}
GROUP BY A.StuId
) AS A
";
string todayWhere = "";
......
......@@ -143,11 +143,21 @@ WHERE 1=1
{
Dictionary<string, List<RB_Student_Visit_Extend>> dicList = new Dictionary<string, List<RB_Student_Visit_Extend>>();
string sql = @"
SELECT A.CreateBy,Count(1) AS VisitCount
SELECT A.CreateBy,Count(1) AS VisitCount,IFNULL(C.OrderCount,0) AS OrderCount
FROM RB_Student_Visit AS A INNER JOIN rb_student AS B ON A.StuId=B.StuId
LEFT JOIN (
SELECT sog.Student_Id,COUNT(1) AS OrderCount
FROM rb_student_orderguest AS sog INNER JOIN rb_order AS o ON sog.OrderId=o.OrderId
WHERE o.OrderState IN(1,2)
GROUP BY sog.Student_Id
) AS C ON A.StuId=C.Student_Id
WHERE 1=1 AND B.Status=0 {0}
GROUP BY A.CreateBy
";
if (query.CreateBy > 0)
{
sql += string.Format(" AND A.CreateBy={0} ", query.CreateBy);
}
sql += " GROUP BY A.CreateBy ";
string todayWhere = "";
if (!string.IsNullOrEmpty(query.StartDate))
{
......
using Edu.Model.Entity.DataStatistics;
using Edu.Model.ViewModel.DataStatistics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.DataStatistics
{
/// <summary>
/// 课程顾问部数据统计仓储层
/// </summary>
public class RB_Consultant_DataRepository:BaseRepository<RB_Consultant_Data>
{
/// <summary>
/// 获取课程顾问部数据统计列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Consultant_Data_Extend> GetConsultantListRepository(RB_Consultant_Data_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Consultant_Data AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Consultant_Data_Extend.Group_Id), query.Group_Id);
}
if (query.CreateBy > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Consultant_Data_Extend.CreateBy), query.CreateBy);
}
if (!string.IsNullOrEmpty(query.QCreateByIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Market_Data_Extend.CreateBy), query.QCreateByIds);
}
if (query.DeptId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Consultant_Data_Extend.DeptId), query.DeptId);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Consultant_Data_Extend.Date), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Market_Data_Extend.Date), query.EndTime);
}
}
return Get<RB_Consultant_Data_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 新增课程顾问部数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool InsertConsultantRepository(RB_Consultant_Data_Extend model)
{
var newModel = new RB_Consultant_Data_Extend()
{
Date = model.Date,
TrialLessonCount = model.TrialLessonCount,
YestodayTrialLesson = model.YestodayTrialLesson,
CurWeekTrialLesson = model.CurWeekTrialLesson,
LastWeekTrialLesson = model.LastWeekTrialLesson,
CurMonthTrialLesson = model.CurMonthTrialLesson,
LastMonthTrialLesson = model.LastMonthTrialLesson,
VisitCount = model.VisitCount,
YestodayVisit = model.YestodayVisit,
CurWeekVisit = model.CurWeekVisit,
LastWeekVisit = model.LastWeekVisit,
CurMonthVisit = model.CurMonthVisit,
LastMonthVisit = model.LastMonthVisit,
Rates = model.Rates,
YestodayRates = model.YestodayRates,
CurWeekRates = model.CurWeekRates,
LastWeekRates = model.LastWeekRates,
CurMonthRates = model.CurMonthRates,
LastMonthRates = model.LastMonthRates,
FollowCount = model.FollowCount,
YestodayFollow = model.YestodayFollow,
CurWeekFollow = model.CurWeekFollow,
LastWeekFollow = model.LastWeekFollow,
CurMonthFollow = model.CurMonthFollow,
LastMonthFollow = model.LastMonthFollow,
AgFollow = model.AgFollow,
YestodayAgFollow = model.YestodayAgFollow,
CurWeekAgFollow = model.CurWeekAgFollow,
LastWeekAgFollow=model.LastWeekAgFollow,
CurMonthAgFollow=model.CurMonthAgFollow,
LastMonthAgFollow=model.LastMonthAgFollow,
CurWeekOrderNum=model.CurWeekOrderNum,
LastWeekOrderNum=model.LastWeekOrderNum,
CurWeekOrderSale=model.CurWeekOrderSale,
LastWeekOrderSale=model.LastWeekOrderSale,
CurMonthOrderGoal=model.CurMonthOrderGoal,
LastMonthOrderSale=model.LastMonthOrderSale,
CurMonthOrderSale=model.CurMonthOrderSale,
CurMonthOrderNum=model.CurMonthOrderNum,
LastMonthOrderNum=model.LastMonthOrderNum,
CreateBy = model.CreateBy,
CreateTime = DateTime.Now,
DeptId = model.DeptId,
Group_Id = model.Group_Id
};
var newId = base.Insert(newModel);
newModel.Id = newId;
return newId > 0;
}
/// <summary>
/// 清除课程顾问部历史数据
/// </summary>
/// <returns></returns>
public void ClearConsultantRepository()
{
string sql = "TRUNCATE TABLE RB_Consultant_Data ";
base.Execute(sql);
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.DataStatistics;
using Edu.Model.ViewModel.DataStatistics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.DataStatistics
{
/// <summary>
/// 课程顾问部月目标仓储层
/// </summary>
public class RB_Consultant_GoalRepository : BaseRepository<RB_Consultant_Goal>
{
/// <summary>
/// 获取课程顾问部目标分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Consultant_Goal_Extend> GetConsultantGoalPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Consultant_Goal_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append(@"
SELECT A.*
FROM RB_Consultant_Goal AS A
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.YearStr), query.YearStr);
}
if (query.MonthStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.MonthStr), query.MonthStr);
}
}
builder.Append(" ORDER BY A.YearStr,A.MonthStr ");
return GetPage<RB_Consultant_Goal_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 获取课程顾问部目标列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Consultant_Goal_Extend> GetConsultantGoalListRepository(RB_Consultant_Goal_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append(@"
SELECT A.*
FROM RB_Consultant_Goal AS A
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.YearStr), query.YearStr);
}
if (query.MonthStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.MonthStr), query.MonthStr);
}
if (query.Dept_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Consultant_Goal_Extend.Dept_Id), query.Dept_Id);
}
}
return Get<RB_Consultant_Goal_Extend>(builder.ToString()).ToList();
}
}
}
......@@ -10,49 +10,49 @@ namespace Edu.Repository.DataStatistics
/// <summary>
/// 市场部数据统计仓储层
/// </summary>
public class RB_MarketConsultantRepository : BaseRepository<RB_MarketConsultant>
public class RB_Market_DataRepository : BaseRepository<RB_Market_Data>
{
/// <summary>
/// 获取市场部数据统计列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_MarketConsultant_Extend> GetMarketConsultantListRepository(RB_MarketConsultant_Extend query)
public List<RB_Market_Data_Extend> GetMarketListRepository(RB_Market_Data_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_MarketConsultant AS A
FROM RB_Market_Data AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_MarketConsultant_Extend.Group_Id), query.Group_Id);
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Market_Data_Extend.Group_Id), query.Group_Id);
}
if (query.CreateBy > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_MarketConsultant_Extend.CreateBy), query.CreateBy);
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Market_Data_Extend.CreateBy), query.CreateBy);
}
if (!string.IsNullOrEmpty(query.QCreateByIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_MarketConsultant_Extend.CreateBy), query.QCreateByIds);
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Market_Data_Extend.CreateBy), query.QCreateByIds);
}
if (query.DeptId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_MarketConsultant_Extend.DeptId), query.DeptId);
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Market_Data_Extend.DeptId), query.DeptId);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_MarketConsultant_Extend.Date), query.StartTime);
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Market_Data_Extend.Date), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_MarketConsultant_Extend.Date), query.EndTime);
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Market_Data_Extend.Date), query.EndTime);
}
}
return Get<RB_MarketConsultant_Extend>(builder.ToString()).ToList();
return Get<RB_Market_Data_Extend>(builder.ToString()).ToList();
}
/// <summary>
......@@ -60,31 +60,47 @@ WHERE 1=1
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool InsertMarketConsultantRepository(RB_MarketConsultant_Extend model)
public bool InsertMarketRepository(RB_Market_Data_Extend model)
{
var newModel = new RB_MarketConsultant_Extend()
var newModel = new RB_Market_Data_Extend()
{
Date = model.Date,
ClueCount = model.ClueCount,
YestodayClue = model.YestodayClue,
CurWeekClue=model.CurWeekClue,
LastWeekClue = model.LastWeekClue,
CurMonthClue=model.CurMonthClue,
LastMonthClue = model.LastMonthClue,
VisitCount = model.VisitCount,
YestodayVisit = model.YestodayVisit,
CurWeekVisit=model.CurWeekVisit,
LastWeekVisit = model.LastWeekVisit,
CurMonthVisit=model.CurMonthVisit,
LastMonthVisit = model.LastMonthVisit,
TrialLessonCount = model.TrialLessonCount,
YestodayTrialLesson = model.YestodayTrialLesson,
CurWeekTrialLesson=model.CurWeekTrialLesson,
LastWeekTrialLesson = model.LastWeekTrialLesson,
CurMonthTrialLesson=model.CurMonthTrialLesson,
LastMonthTrialLesson = model.LastMonthTrialLesson,
FollowCount = model.FollowCount,
YestodayFollow = model.YestodayFollow,
CurWeekFollow=model.CurWeekFollow,
LastWeekFollow = model.LastWeekFollow,
CurMonthFollow=model.CurMonthFollow,
LastMonthFollow = model.LastMonthFollow,
SaleMoney = model.SaleMoney,
YestodaySale = model.YestodaySale,
CurWeekSale=model.CurWeekSale,
LastWeekSale = model.LastWeekSale,
CurMonrhSale=model.CurMonrhSale,
LastMonthSale = model.LastMonthSale,
CreateBy = model.CreateBy,
CreateTime = DateTime.Now,
DeptId = model.DeptId,
......@@ -99,9 +115,9 @@ WHERE 1=1
/// 清楚历史数据
/// </summary>
/// <returns></returns>
public void ClearMarketConsultantRepository()
public void ClearMarketRepository()
{
string sql = "TRUNCATE TABLE RB_MarketConsultant ";
string sql = "TRUNCATE TABLE RB_Market_Data ";
base.Execute(sql);
}
}
......
......@@ -318,8 +318,12 @@ WHERE 1=1
SELECT A.CreateBy,COUNT(1) AS TrialLessonCount
FROM RB_Visitor_Reserve AS A
WHERE 1=1 AND A.Status=0 {0}
GROUP BY A.CreateBy
";
if (query.CreateBy > 0)
{
sql += string.Format(@" AND A.CreateBy={0} ", query.CreateBy);
}
sql += " GROUP BY A.CreateBy ";
string todayWhere = "";
if (!string.IsNullOrEmpty(query.StartClassDate))
{
......
......@@ -1218,16 +1218,39 @@ WHERE 1=1
/// 市场部和课程顾问部销售额统计
/// </summary>
/// <param name="query"></param>
/// <param name="qType">1-市场部,2-课程顾问部</param>
/// <returns></returns>
public Dictionary<string, List<RB_Order_ViewModel>> GetMarketMarketConsultantStaticRepository(RB_Order_ViewModel query)
public Dictionary<string, List<RB_Order_ViewModel>> GetMarketConsultantStaticRepository(RB_Order_ViewModel query,int qType=1)
{
Dictionary<string, List<RB_Order_ViewModel>> dicList = new Dictionary<string, List<RB_Order_ViewModel>>();
string sql = @"
SELECT A.EnterID,A.CourseConsultantId,SUM(A.Income) AS Income
string sql = "";
if (qType == 1)
{
sql = @"
SELECT A.EnterID,SUM(A.Income) AS Income
FROM RB_Order AS A
WHERE 1=1 AND A.OrderState IN(1,2) {0}
GROUP BY A.EnterID,A.CourseConsultantId
";
if (query.EnterID > 0)
{
sql += string.Format(" AND A.EnterID={0} ", query.EnterID);
}
sql += " GROUP BY A.EnterID ";
}
else
{
sql = @"
SELECT A.CourseConsultantId,Count(1) AS OrderCount, SUM(A.Income) AS Income
FROM RB_Order AS A
WHERE 1=1 AND A.OrderState IN(1,2) {0}
";
if (query.CourseConsultantId > 0)
{
sql += string.Format(" AND A.CourseConsultantId={0} ", query.CourseConsultantId);
}
sql += " GROUP BY A.CourseConsultantId ";
}
string todayWhere = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
......
......@@ -832,14 +832,23 @@ WHERE 1=1
public Dictionary<string,List<RB_Student_ViewModel>> GetStudentClueRepository(RB_Student_ViewModel query)
{
Dictionary<string, List<RB_Student_ViewModel>> dicList = new Dictionary<string, List<RB_Student_ViewModel>>();
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}
GROUP BY CreateBy
");
if (!string.IsNullOrEmpty(whereStr))
{
builder.Append(whereStr);
}
builder.Append(" GROUP BY CreateBy ");
string todayWhere = "";
if (!string.IsNullOrEmpty(query.StartTime))
{
......
......@@ -544,7 +544,7 @@ namespace Edu.WebApi.Controllers.Applet
var MaxChapterNo = planList.Max(x => x.LessonPlanNum);
//查询所有的章节
var chapterTreeList = courseModule.GetChapterTreeListModule_V2(new Model.ViewModel.Course.RB_Course_Chapter_ViewModel() { Group_Id = appletUserInfo.Group_Id, CourseId = CourseId });
var ctList = chapterTreeList.Where(x => Convert.ToInt32(x.ChapterNo) <= MaxChapterNo).ToList();
var ctList = chapterTreeList.Where(x => Convert.ToInt32(x.ChapterNo) <= MaxChapterNo).OrderByDescending(qitem=> Convert.ToInt32(qitem.ChapterNo)).ToList();
//章节单词得分
var prepWordsList = courseExamModule.GetStuWordsPrepListModule(new RB_StuWords_Prep_Extend()
{
......
......@@ -126,7 +126,8 @@ namespace Edu.WebApi.Controllers.Course
{
qitem.ClassId,
qitem.ClassName,
qitem.CourseName
qitem.CourseName,
qitem.ClassNo
}));
}
......
......@@ -405,7 +405,8 @@ namespace Edu.WebApi.Controllers.Course
item.CreateType,
CreateTypeName = item.CreateType.ToName(),
item.StuSourceId,
item.StuSourceIdName
item.StuSourceIdName,
item.EnterpriseName
});
}
pageModel.Count = rowsCount;
......
......@@ -543,7 +543,7 @@ namespace Edu.WebApi.Controllers.Customer
Group_Id = base.UserInfo.Group_Id
};
var list = customerStudentModule.GetStageListModule(query);
return ApiResult.Success(data: list.Select(qitem => new { Id = qitem.Id, Name = qitem.StageName }));
return ApiResult.Success(data: list.Select(qitem => new { qitem.Id, Name = qitem.StageName }));
}
/// <summary>
......@@ -617,7 +617,7 @@ namespace Edu.WebApi.Controllers.Customer
Group_Id = base.UserInfo.Group_Id
};
var list = customerStudentModule.GetStudentTypeListModule(query);
return ApiResult.Success(data: list.Select(qitem => new { Id = qitem.Id, Name = qitem.Name }));
return ApiResult.Success(data: list.Select(qitem => new { qitem.Id, qitem.Name }));
}
/// <summary>
......
......@@ -180,8 +180,8 @@ namespace Edu.WebApi.Controllers.LearningGarden
List<WeChatLearningGardenItem> allList = new List<WeChatLearningGardenItem>();
pageCount = parm.GetInt("news_count");//图文总数
while (((pageIndex - 1) * pageSize) <= pageCount)
int dataCount = 1;
while (dataCount>0)
{
string dt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var tempImgList = GetGoodsList(pageIndex, pageSize);
......@@ -189,10 +189,10 @@ namespace Edu.WebApi.Controllers.LearningGarden
{
allList.AddRange(tempImgList);
}
dataCount = tempImgList?.Count ?? 0;
pageIndex++;
}
Common.Plugin.LogHelper.WriteInfo("GetGoodsData: " + allList.Count());
Common.Plugin.LogHelper.WriteInfo("GetGoodsData: " + Common.Plugin.JsonHelper.Serialize(allList));
List<RB_LearningGarden_ViewModel> learningGardenList = new List<RB_LearningGarden_ViewModel>();
//查询数据库信息
......
......@@ -51,15 +51,16 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
private readonly TeacherModule teacherModule = new TeacherModule();
private readonly StudentModule studentModule = new StudentModule();
/// <summary>
/// 部门处理类对象
/// </summary>
private readonly DepartmentModule departmentModule = new DepartmentModule();
[HttpGet]
[HttpPost]
[AllowAnonymous]
public ApiResult Test()
{
studentModule.UpdateTel();
return ApiResult.Success();
}
......@@ -153,10 +154,6 @@ namespace Edu.WebApi.Controllers.User
string erpToken = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_ERP_User_Key, erpUserInfo);
#region 获取甲鹤教育Token
string JHTenantId = Config.JHTenantId;
string JHMallBaseId = Config.JHMallBaseId;
......@@ -190,6 +187,7 @@ namespace Edu.WebApi.Controllers.User
#endregion
var treeList = menuModule.GetPostMenuTreeModule(new Model.ViewModel.System.RB_Menu_ViewModel()
{
MenuType = accountType
......@@ -198,6 +196,7 @@ namespace Edu.WebApi.Controllers.User
var actionList = menuModule.GetPostMenuFunctionListModule(model.Post_Id.ToString());
//上传配置
var uploadConfig = publicModule.GetFileStoreList(new Model.Public.RB_File_Store() { Group_Id = model.Group_Id, IsDefault = 1 })?.FirstOrDefault();
var deptList= departmentModule.GetDepartmentListModule(new RB_Department_ViewModel() { DeptId = model.Dept_Id, Group_Id = model.Group_Id, ManagerIds = model.Id.ToString() });
UserInfo obj = new UserInfo
{
......@@ -225,6 +224,7 @@ namespace Edu.WebApi.Controllers.User
PostId = model.Post_Id,
PostName = model.PostName,
Email = model.Email,
IsManager=(deptList?.Count??0)>0?1:0,
IsTenCccUser = model.IsTenCccUser,
IsCourseConsultant = (model != null && model.UserRole == UserRoleEnum.CourseConsultant) ? 1 : 0,
IsMarket= (model != null && model.UserRole == UserRoleEnum.MarketPersion) ? 1 : 0,
......
......@@ -13,6 +13,7 @@ using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Public;
using Edu.Model.ViewModel.DataStatistics;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
using Edu.Module.Customer;
......@@ -2530,17 +2531,18 @@ namespace Edu.WebApi.Controllers.User
[HttpPost]
public ApiResult CreateMarketData()
{
string startTime = "2022-01-01";
string endTime = "2022-01-17";
string startTime = "2022-01-02";
string endTime = Common.ConvertHelper.FormatDate(DateTime.Now);
var start = Convert.ToDateTime(startTime);
var end = Convert.ToDateTime(endTime);
var days = (end - start).Days;
marketConsultantModule.ClearData();
Task.Run(() =>
{
for (var i = 0; i < days; i++)
for (var i = 0; i <= days; i++)
{
marketConsultantModule.CreateDataModule(start.AddDays(i));
marketConsultantModule.CreateMarketDataModule(start.AddDays(i));
marketConsultantModule.CreateConsultantDataModule(start.AddDays(i));
}
});
return ApiResult.Success();
......@@ -2551,11 +2553,31 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowRepeatAttribute]
public ApiResult MarketStatic()
{
string startTime = "2022-01-01";
string endTime = "2022-01-17";
var obj = marketConsultantModule.MarketStaticModule("", startTime, endTime);
string startTime = base.ParmJObj.GetStringValue("startTime");
if (string.IsNullOrEmpty(startTime))
{
startTime = "2022-01-01";
}
string endTime = base.ParmJObj.GetStringValue("endTime");
if (string.IsNullOrEmpty(endTime))
{
endTime = Common.ConvertHelper.FormatDate(DateTime.Now);
}
string empIds= base.ParmJObj.GetStringValue("empList");
List<int> empList = new List<int>();
if (!string.IsNullOrEmpty(empIds))
{
empList = JsonHelper.DeserializeObject<List<int>>(empIds);
}
string qEmpIds = "";
if (empList != null&&empList.Count>0)
{
qEmpIds = string.Join(",", empList);
}
var obj = marketConsultantModule.MarketStaticModule(qEmpIds, startTime, endTime);
return ApiResult.Success(data: obj);
}
......@@ -2564,14 +2586,176 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowRepeatAttribute]
public ApiResult ConsultantStatic()
{
string employeeIds = "";
string startTime = "";
string endTime = "";
var obj = marketConsultantModule.ConsultantStaticModule(employeeIds, startTime, endTime);
string startTime = base.ParmJObj.GetStringValue("startTime");
if (string.IsNullOrEmpty(startTime))
{
startTime = "2022-01-01";
}
string endTime = base.ParmJObj.GetStringValue("endTime");
if (string.IsNullOrEmpty(endTime))
{
endTime = Common.ConvertHelper.FormatDate(DateTime.Now);
}
string empIds = base.ParmJObj.GetStringValue("empList");
List<int> empList = new List<int>();
if (!string.IsNullOrEmpty(empIds))
{
empList = JsonHelper.DeserializeObject<List<int>>(empIds);
}
string qEmpIds = "";
if (empList != null && empList.Count > 0)
{
qEmpIds = string.Join(",", empList);
}
var obj = marketConsultantModule.ConsultantStaticModule(qEmpIds, startTime, endTime);
return ApiResult.Success(data: obj);
}
#endregion
#region 课程顾问部目标
/// <summary>
/// 获取课程顾问部目标分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetConsultantGoalPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Consultant_Goal_Extend()
{
YearStr=base.ParmJObj.GetInt("YearStr"),
MonthStr=base.ParmJObj.GetInt("MonthStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
List<object> list = new List<object>();
var data= marketConsultantModule.GetConsultantGoalPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
if (data != null && data.Count > 0)
{
foreach (var item in data)
{
string CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
list.Add(new
{
item.Id,
item.YearStr,
item.MonthStr,
item.GoalMoney,
CreateByName,
item.CreateTimeStr,
item.Dept_Id,
item.DeptName,
});
}
}
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 修改课程顾问部目标
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult UpdateConsultantGoal()
{
var model = new RB_Consultant_Goal_Extend()
{
Id=base.ParmJObj.GetInt("Id"),
YearStr=base.ParmJObj.GetInt("YearStr"),
MonthStr=base.ParmJObj.GetInt("MonthStr"),
GoalMoney=base.ParmJObj.GetDecimal("GoalMoney"),
Dept_Id=base.ParmJObj.GetInt("Dept_Id"),
};
model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id;
model.School_Id = base.UserInfo.School_Id;
model.Status = Common.Enum.DateStateEnum.Normal;
bool flag = marketConsultantModule.SetConsultantGoalModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 新增课程顾问部目标
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AddConsultantGoal()
{
List<RB_Consultant_Goal_Extend> list = new List<RB_Consultant_Goal_Extend>();
var timeListStr = base.ParmJObj.GetStringValue("TimeList");
if (!string.IsNullOrEmpty(timeListStr))
{
List<string> timeList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(timeListStr);
if (timeList != null && timeList.Count > 0)
{
foreach (var item in timeList)
{
var tempArray = item.Split('-');
if (tempArray != null && tempArray.Length == 2)
{
Int32.TryParse(tempArray[0], out int YearStr);
Int32.TryParse(tempArray[1], out int MonthStr);
var model = new RB_Consultant_Goal_Extend()
{
Id = 0,
YearStr = YearStr,
MonthStr = MonthStr,
GoalMoney = base.ParmJObj.GetDecimal("GoalMoney"),
Dept_Id = base.ParmJObj.GetInt("Dept_Id"),
};
model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id;
model.School_Id = base.UserInfo.School_Id;
model.Status = Common.Enum.DateStateEnum.Normal;
if (YearStr > 0 && MonthStr > 0)
{
list.Add(model);
}
}
}
}
}
bool flag = marketConsultantModule.AddConsultantGoalModule(list);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 根据编号获取目标
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetConsultantGoal()
{
var Id = base.ParmJObj.GetInt("Id");
var extModel = marketConsultantModule.GetConsultantGoalModule(Id);
return ApiResult.Success(data: extModel);
}
/// <summary>
/// 根据编号删除目标
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult RemoveConsultantGoal()
{
var Id = base.ParmJObj.GetInt("Id");
var extModel = marketConsultantModule.RemoveConsultantGoalModule(Id);
return ApiResult.Success(data: extModel);
}
#endregion
}
}
\ No newline at end of file
......@@ -761,6 +761,7 @@ namespace Edu.WebApi.Controllers.User
item.StuRealMobile,
item.OrderCount,
item.RenewOrderCount,
item.EnterpriseName
});
}
pageModel.Count = rowsCount;
......@@ -1272,7 +1273,6 @@ namespace Edu.WebApi.Controllers.User
var customer = base.AppletCustomerInfo;
var query = new RB_Student_ViewModel()
{
QQ = base.ParmJObj.GetStringValue("QQ"),
WeChatNo = base.ParmJObj.GetStringValue("WeChatNo")
};
......@@ -1292,7 +1292,6 @@ namespace Edu.WebApi.Controllers.User
extModel.CreateByName = UserReidsCache.GetUserLoginInfo(extModel.CreateBy)?.AccountName ?? "";
if (customer != null)
{
Common.Plugin.LogHelper.Write("查重推送消息");
studentModule.PushMessageModule(extModel,1);
}
}
......
using Edu.Common.Plugin;
using Edu.Module.Course;
using Edu.Module.Customer;
using Edu.Module.Duty;
using Edu.Module.EduTask;
using Edu.Module.Exam;
......@@ -39,6 +40,11 @@ namespace Edu.WebApi.Timers
/// </summary>
private static readonly PaperModule paperModule = new PaperModule();
/// <summary>
/// 课程顾问部和市场部数据统计
/// </summary>
private static readonly MarketConsultantModule marketConsultantModule = new MarketConsultantModule();
static System.Timers.Timer timer1;//计时器
static System.Timers.Timer timer2;//定期处理未值班数据
......@@ -53,6 +59,8 @@ namespace Edu.WebApi.Timers
static System.Timers.Timer finishGuest;//处理学生毕业状态
static System.Timers.Timer marketTimer;//处理市场部和课程顾问部数据统计
public static void RunTimer()
{
timer1 = new System.Timers.Timer
......@@ -104,6 +112,13 @@ namespace Edu.WebApi.Timers
};
finishGuest.Elapsed += new System.Timers.ElapsedEventHandler(DealGuestFinish);
finishGuest.Enabled = true;
marketTimer= new System.Timers.Timer()
{
Interval = (1000) * (1) //1秒检测一次 00:30:00 每天执行一次
};
marketTimer.Elapsed += new System.Timers.ElapsedEventHandler(DealMarketConsultantData);
marketTimer.Enabled = true;
}
public static void RunStop()
......@@ -115,6 +130,7 @@ namespace Edu.WebApi.Timers
changeOrder.Enabled = false;
examTimer.Enabled = false;
finishGuest.Enabled = false;
marketTimer.Enabled = false;
}
/// <summary>
......@@ -127,6 +143,34 @@ namespace Edu.WebApi.Timers
private static int changeOrder_Timer = 0;
private static int examPublish_Timer = 0;
private static int guestfinish_Timer = 0;
private static int marketconsultant_Timer = 0;
/// <summary>
/// 定时生成市场部和课程顾问部数据统计
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void DealMarketConsultantData(object sender, System.Timers.ElapsedEventArgs e)
{
if (Interlocked.Exchange(ref marketconsultant_Timer, 1) == 0)
{
int intHour = e.SignalTime.Hour;
int intMinute = e.SignalTime.Minute;
int intSecond = e.SignalTime.Second;
// 定制时间;比如 在00:30:00 的时候执行某个函数
int iHour = 00;
int iMinute = 30;
int iSecond = 00;
// 设置每天的
if (intHour == iHour && intMinute == iMinute && intSecond == iSecond)
{
marketConsultantModule.CreateConsultantDataModule(DateTime.Now);
marketConsultantModule.CreateMarketDataModule(DateTime.Now);
}
Interlocked.Exchange(ref marketconsultant_Timer, 0);
}
}
/// <summary>
/// 处理学员毕业状态
......
......@@ -105,7 +105,7 @@
//是否是本地服务
"IsLocal": "1",
//临时Token
"TempToken": "52_qHSqAI2gO0U9vrM7VAHkZ9dK-sR3RlQDGYJsvxypmPut16Hs7CvtoUGp2I3vYfQyehH1nrn1CDscWbBf4gN9-n9g45PAbqau4OTsj19pATUEYIOyAPl4xU_tHX7H2LsErkGYOV9dY7cwOHB-HRRfAAABLL",
"TempToken": "53_OVLlSPNJ0hmSrsEUfnJ6kTxFRGxfkcuJJjpBjsDuaSGmtYu95vZNNyh-wIXbFSZ9DtxzFJ1eN0At2QmJ_aWLPFjz4yrz2VrWvmR3KrEQKqfwvxesG82V2WpAgDnxW_tvvWYXRRRX1oguxCtHXSShADAKFF",
//学生请假流程编号
"StudentLeaveFlowId": 7,
//组卷审批流程编号
......
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