Commit 43d2b1e8 authored by liudong1993's avatar liudong1993

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

parents 0f6048b8 1cfbcff5
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.Exam
{
/// <summary>
/// 题库类型
/// </summary>
public enum BankTypeEnum
{
/// <summary>
/// N5
/// </summary>
[EnumField("N5")]
N5 = 1,
/// <summary>
/// N4
/// </summary>
[EnumField("N4")]
N4 = 2,
/// <summary>
/// N3
/// </summary>
[EnumField("N3")]
N3 = 3,
/// <summary>
/// N2
/// </summary>
[EnumField("N2")]
N2 = 4,
/// <summary>
/// N1
/// </summary>
[EnumField("N1")]
N1 = 5,
/// <summary>
/// 高考
/// </summary>
[EnumField("高考")]
CollegeEntranceExamination =6,
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Plugin
{
public class FriendTimeHelper
{
public static String FriendFormat(long dateTime)
{
String fTime = String.Empty;
try
{
DateTime dt = new DateTime(dateTime);
return FriendFormat(dt);
}
catch
{
return dateTime.ToString();
}
}
public static String FriendFormat(String dateTime)
{
String fTime = String.Empty;
try
{
DateTime dt = DateTime.Parse(dateTime);
return FriendFormat(dt);
}
catch
{
return dateTime;
}
}
public static String FriendFormat(DateTime dateTime)
{
if (dateTime == null)
{
return String.Empty;
}
int nowYear = DateTime.Now.Year;
int year = dateTime.Year;
if (nowYear - year == 0)
{
//本年内
int nowMounth = DateTime.Now.Month;
int mounth = dateTime.Month;
if (nowMounth - mounth == 0)
{
//本月内
int nowDay = DateTime.Now.Day;
int day = dateTime.Day;
if (nowDay - day == 0)
{
//当天
int nowHour = DateTime.Now.Hour;
int hour = dateTime.Hour;
if (nowHour - hour == 0)
{
int nowMinute = DateTime.Now.Minute;
int minute = dateTime.Minute;
int diff = nowMinute - minute;
if (diff < 2)
{
return "刚刚";
}
else
{
return $"{diff} 分钟前";
}
}
else
{
return dateTime.ToString("HH:mm:ss");
}
}
else
{
return dateTime.ToString("dd HH:mm:ss");
}
}
else
{
//跨月
return dateTime.ToString("MM-dd HH:mm:ss");
}
}
else
{
//跨年
return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
}
}
}
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Question;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Exam
{
/// <summary>
/// 学员练习实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_Practice
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 学员编号
/// </summary>
public int StudentId { get; set; }
/// <summary>
/// 分类
/// </summary>
public QuestionCategoryEnum Category { get; set; }
/// <summary>
/// 考级程度(N1,N2...)
/// </summary>
public LevelTypeEnum LevelType { get; set; }
/// <summary>
/// 问题编号
/// </summary>
public int QuestionId { get; set; }
/// <summary>
/// 问题名称(题干)
/// </summary>
public string Title { get; set; }
/// <summary>
/// 问题内容
/// </summary>
public string QuestionContent { get; set; }
/// <summary>
/// 问题类型编号
/// </summary>
public int? QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
/// </summary>
public string QuestionTypeKey { get; set; }
/// <summary>
/// 问题答案
/// </summary>
public string Answer { get; set; }
/// <summary>
/// 答案解析
/// </summary>
public string AnswerParse { get; set; }
/// <summary>
/// 是否作答(1-是)
/// </summary>
public int IsAnswer { get; set; }
/// <summary>
/// 是否作答错误(1-是)
/// </summary>
public int IsWrong { get; set; }
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Exam;
using System;
using VT.FW.DB;
......@@ -62,5 +63,10 @@ namespace Edu.Model.Entity.Question
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 题库类型(见枚举)
/// </summary>
public BankTypeEnum BankType { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.System
{
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_General_Manager_View
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 日期
/// </summary>
public DateTime Day { get; set; }
/// <summary>
/// Stu
/// </summary>
public string Stu { get; set; }
/// <summary>
/// Visit
/// </summary>
public string Visit { get; set; }
/// <summary>
/// Reserve
/// </summary>
public string Reserve { get; set; }
/// <summary>
/// Follow
/// </summary>
public string Follow { get; set; }
/// <summary>
/// Invalid
/// </summary>
public string Invalid { get; set; }
/// <summary>
/// UnFollow
/// </summary>
public int UnFollow { get; set; }
/// <summary>
/// MakeCall
/// </summary>
public string MakeCall { get; set; }
/// <summary>
/// InvalidCall
/// </summary>
public string InvalidCall { get; set; }
/// <summary>
/// Company
/// </summary>
public string Company { get; set; }
/// <summary>
/// Contacts
/// </summary>
public string Contacts { get; set; }
/// <summary>
/// LangOrder
/// </summary>
public string LangOrder { get; set; }
/// <summary>
/// LangMoney
/// </summary>
public string LangMoney { get; set; }
/// <summary>
/// LangGuest
/// </summary>
public string LangGuest { get; set; }
/// <summary>
/// LangOutPayOrder
/// </summary>
public string LangOutPayOrder { get; set; }
/// <summary>
/// LangOutPayMoney
/// </summary>
public decimal LangOutPayMoney { get; set; }
/// <summary>
/// LiuOrder
/// </summary>
public string LiuOrder { get; set; }
/// <summary>
/// LiuMoney
/// </summary>
public string LiuMoney { get; set; }
/// <summary>
/// LiuGuest
/// </summary>
public string LiuGuest { get; set; }
/// <summary>
/// LiuOutPayOrder
/// </summary>
public int LiuOutPayOrder { get; set; }
/// <summary>
/// LiuOutPayMoney
/// </summary>
public decimal LiuOutPayMoney { get; set; }
/// <summary>
/// Activity
/// </summary>
public string Activity { get; set; }
/// <summary>
/// ActivityOrder
/// </summary>
public string ActivityOrder { get; set; }
/// <summary>
/// ActivityGuest
/// </summary>
public string ActivityGuest { get; set; }
/// <summary>
/// ActivityMoney
/// </summary>
public string ActivityMoney { get; set; }
/// <summary>
/// ActivityOutPayMoney
/// </summary>
public decimal ActivityOutPayMoney { get; set; }
/// <summary>
/// TradeStu
/// </summary>
public int TradeStu { get; set; }
/// <summary>
/// StopStu
/// </summary>
public string StopStu { get; set; }
/// <summary>
/// FinishStu
/// </summary>
public string FinishStu { get; set; }
/// <summary>
/// ArrearsStu
/// </summary>
public string ArrearsStu { get; set; }
/// <summary>
/// ImArrearsStu
/// </summary>
public int ImArrearsStu { get; set; }
/// <summary>
/// ImFinishStu
/// </summary>
public int ImFinishStu { get; set; }
/// <summary>
/// RenewStu
/// </summary>
public string RenewStu { get; set; }
/// <summary>
/// RecommendStu
/// </summary>
public string RecommendStu { get; set; }
/// <summary>
/// FollowStu
/// </summary>
public string FollowStu { get; set; }
/// <summary>
/// StudyStu
/// </summary>
public string StudyStu { get; set; }
/// <summary>
/// AbsenceStu
/// </summary>
public string AbsenceStu { get; set; }
/// <summary>
/// ConsumeHour
/// </summary>
public string ConsumeHour { get; set; }
/// <summary>
/// ConsumeMoney
/// </summary>
public string ConsumeMoney { get; set; }
/// <summary>
/// TimeHourFee
/// </summary>
public string TimeHourFee { get; set; }
/// <summary>
/// EmpCount
/// </summary>
public int EmpCount { get; set; }
/// <summary>
/// InactiveEmpCount
/// </summary>
public int InactiveEmpCount { get; set; }
/// <summary>
/// NewEmpCount
/// </summary>
public string NewEmpCount { get; set; }
/// <summary>
/// LeaveEmpCount
/// </summary>
public string LeaveEmpCount { get; set; }
/// <summary>
/// RedEventCount
/// </summary>
public string RedEventCount { get; set; }
/// <summary>
/// BlackEventCount
/// </summary>
public string BlackEventCount { get; set; }
/// <summary>
/// AbsenceCount
/// </summary>
public string AbsenceCount { get; set; }
/// <summary>
/// AbsenteeismCount
/// </summary>
public string AbsenteeismCount { get; set; }
/// <summary>
/// AFLeaveCount
/// </summary>
public string AFLeaveCount { get; set; }
/// <summary>
/// CourseCount
/// </summary>
public int CourseCount { get; set; }
/// <summary>
/// SellCourseCount
/// </summary>
public int SellCourseCount { get; set; }
/// <summary>
/// CourseRank
/// </summary>
public string CourseRank { get; set; }
/// <summary>
/// PlanCount
/// </summary>
public string PlanCount { get; set; }
/// <summary>
/// FullRate
/// </summary>
public string FullRate { get; set; }
/// <summary>
/// AvgClassTime
/// </summary>
public string AvgClassTime { get; set; }
/// <summary>
/// NoneClassTeacher
/// </summary>
public string NoneClassTeacher { get; set; }
/// <summary>
/// ExamCount
/// </summary>
public string ExamCount { get; set; }
/// <summary>
/// UnLessonClass
/// </summary>
public string UnLessonClass { get; set; }
/// <summary>
/// UnLessonTeacher
/// </summary>
public string UnLessonTeacher { get; set; }
/// <summary>
/// IncomeMoney
/// </summary>
public string IncomeMoney { get; set; }
/// <summary>
/// PayMoney
/// </summary>
public string PayMoney { get; set; }
/// <summary>
/// UnIncomeMoney
/// </summary>
public decimal UnIncomeMoney { get; set; }
/// <summary>
/// UnPayMoney
/// </summary>
public decimal UnPayMoney { get; set; }
/// <summary>
/// MonthCommission
/// </summary>
public decimal MonthCommission { get; set; }
/// <summary>
/// SumCommission
/// </summary>
public decimal SumCommission { get; set; }
/// <summary>
/// UnPubCommission
/// </summary>
public decimal UnPubCommission { get; set; }
/// <summary>
/// RewardInfo
/// </summary>
public string RewardInfo { get; set; }
/// <summary>
/// PrivateReturnCommission
/// </summary>
public string PrivateReturnCommission { get; set; }
/// <summary>
/// CustomerReturnCommission
/// </summary>
public string CustomerReturnCommission { get; set; }
/// <summary>
/// StuReturnCommission
/// </summary>
public string StuReturnCommission { get; set; }
/// <summary>
/// SurplusHours
/// </summary>
public string SurplusHours { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.User
{
/// <summary>
/// 市场部客户数据统计实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_Market
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 日期
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 进单人数
/// </summary>
public decimal PushCount { get; set; }
/// <summary>
/// 语培需求
/// </summary>
public decimal TrainCount { get; set; }
/// <summary>
/// 留学需求
/// </summary>
public decimal StudyCount { get; set; }
/// <summary>
/// 美团点评
/// </summary>
public decimal MeiTuanCount { get; set; }
/// <summary>
/// 教育同行(签约)
/// </summary>
public decimal EduCustomerSign { get; set; }
/// <summary>
/// 教育同行(未签约)
/// </summary>
public decimal EduCustomerNotSign { get; set; }
/// <summary>
/// 过路客(直客)
/// </summary>
public decimal PassBy { get; set; }
/// <summary>
/// 朋友圈
/// </summary>
public decimal WeChatFriend { get; set; }
/// <summary>
/// 学员转介绍
/// </summary>
public decimal TransCount { get; set; }
/// <summary>
/// 校园推广
/// </summary>
public decimal SchoolPromote { get; set; }
/// <summary>
/// 校园代理
/// </summary>
public decimal SchoolAgent { get; set; }
/// <summary>
/// 线下活动
/// </summary>
public decimal OfflineActivity { get; set; }
/// <summary>
/// 公众号
/// </summary>
public decimal OfficialAccount { get; set; }
/// <summary>
/// 教师推荐
/// </summary>
public decimal TeacherRecommend { get; set; }
/// <summary>
/// 字节跳动
/// </summary>
public decimal ByteDance { get; set; }
/// <summary>
/// 第三方平台
/// </summary>
public decimal ThirdPartyPlatform { get; set; }
/// <summary>
/// 其他
/// </summary>
public decimal Other { get; set; }
/// <summary>
/// A类客户
/// </summary>
public decimal ClassACount { get; set; }
/// <summary>
/// B类客户
/// </summary>
public decimal ClassBCount { get; set; }
/// <summary>
/// C类客户
/// </summary>
public decimal ClassCCount { get; set; }
/// <summary>
/// D类客户
/// </summary>
public decimal ClassDCount { get; set; }
/// <summary>
/// 无效
/// </summary>
public decimal InvalidCount { get; set; }
/// <summary>
/// 签约(成交、续费)
/// </summary>
public decimal ContractCount { get; set; }
/// <summary>
/// 语培签约金额
/// </summary>
public decimal OrderMoney { get; set; }
/// <summary>
/// 留学签约金额
/// </summary>
public decimal StudyOrderMoney { get; set; }
/// <summary>
/// 年
/// </summary>
public int YearStr { get; set; }
/// <summary>
/// 月
/// </summary>
public int MonthStr { get; set; }
/// <summary>
/// 次
/// </summary>
public int Times { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}
}
......@@ -6,7 +6,7 @@ using VT.FW.DB;
namespace Edu.Model.Entity.User
{
/// <summary>
/// 客户数据统计实体类
/// 课程顾问部客户数据统计实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
......
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
/// <summary>
/// 学员练习扩展实体类
/// </summary>
public class RB_Student_Practice_Extend : RB_Student_Practice
{
}
}
using Edu.Common;
using Edu.Common.Enum.Exam;
using Edu.Common.Plugin;
using System.Collections.Generic;
......@@ -122,5 +123,10 @@ namespace Edu.Model.ViewModel.Question
/// 阅读理解、听力、完型,答案列表
/// </summary>
public List<object> QuestionAnswerList { get; set; }
/// <summary>
/// 题库类型(见枚举)
/// </summary>
public BankTypeEnum BankType { get; set; }
}
}
\ No newline at end of file
......@@ -33,6 +33,16 @@ namespace Edu.Model.ViewModel.Sell
/// </summary>
public int EnterID { get; set; }
/// <summary>
/// 订单创建人
/// </summary>
public int OrderCreateBy { get; set; }
/// <summary>
/// 协助老师
/// </summary>
public int HelpEnterId { get; set; }
/// <summary>
/// 业务员
/// </summary>
......
using Edu.Common.Plugin;
using Edu.Model.Entity.System;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.System
{
public class RB_General_Manager_ViewModel : RB_General_Manager_View
{
/// <summary>
/// 友好的时间格式
/// </summary>
public string FirendTime {
get
{
if (Day != null)
return FriendTimeHelper.FriendFormat(Day);
return "";
}
}
}
}
using Edu.Model.Entity.User;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.User
{
/// <summary>
/// 市场部客户数据统计扩展实体类
/// </summary>
public class RB_Student_Market_Extend: RB_Student_Market
{
/// <summary>
/// 月份
/// </summary>
public string ShowMonthStr { get; set; }
/// <summary>
/// 日期字符串
/// </summary>
public string DateStr
{
get
{
return Common.ConvertHelper.FormatDate2(this.Date);
}
}
}
}
......@@ -622,7 +622,7 @@ namespace Edu.Module.Customer
{
List<WhereHelper> list = new List<WhereHelper>
{
new WhereHelper(nameof(RB_Customer_Category_Extend.CategoryName), model.CategoryName),
new WhereHelper(nameof(RB_Customer_Category_Extend.CategoryName), model.CategoryName.Trim()),
new WhereHelper(nameof(RB_Customer_Category_Extend.Status), 0),
new WhereHelper(nameof(RB_Customer_Category_Extend.Group_Id), model.Group_Id)
};
......@@ -666,6 +666,37 @@ namespace Edu.Module.Customer
return flag;
}
/// <summary>
/// 同行合并
/// </summary>
/// <param name="CategoryId"></param>
/// <param name="NewCategoryId"></param>
/// <returns></returns>
public bool ReplaceCustomerCategoryModule(int CategoryId, int NewCategoryId)
{
bool flag = false;
var list = customerRepository.GetCustomerListRepository(new RB_Customer_Extend() { CategoryId = CategoryId });
var cateModel = GetCustomerCategoryModule(NewCategoryId);
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Customer_Extend.CategoryId),NewCategoryId},
{nameof(RB_Customer_Extend.CustomerType),(int)cateModel.CatetoryType},
};
customerRepository.Update(fileds, new WhereHelper(nameof(RB_Customer_Extend.CustomerId), item.CustomerId));
}
}
Dictionary<string, object> cateFileds = new Dictionary<string, object>()
{
{nameof(RB_Customer_Category_Extend.Status),(int)DateStateEnum.Delete}
};
flag = customer_CategoryRepository.Update(cateFileds, new WhereHelper(nameof(RB_Customer_Category_Extend.CategoryId), CategoryId));
return flag;
}
/// <summary>
/// 根据编号获取同行信息
/// </summary>
......
......@@ -742,7 +742,36 @@ namespace Edu.Module.Customer
model.Id = newId;
flag = newId > 0;
}
//推送
var stuAssistList = student_AssistRepository.GetStudentAssistListRepository(new RB_Student_Assist_Extend() { StuId = StuId });
if (stuAssistList != null && stuAssistList.Count > 0)
{
var stuModel= studentRepository.GetEntity(StuId);
var empModel = accountRepository.GetEmployeeInfo(Uid);
foreach (var item in stuAssistList)
{
var queryTargetWorkId = accountRepository.GetWorkUserIdRepository(item.AssistId);
if (!string.IsNullOrEmpty(queryTargetWorkId))
{
string markdownContent = $"`学员推送提醒` \n>**概要信息** \n>学员姓名:{stuModel.StuName}\n>推送人:{empModel.EmployeeName}\n>备注:您收到了一个新的学员名单,请及时跟进\n>";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
CategoryId = Common.Enum.System.PushMessageCategoryEnum.B2BCustomerStu,
Content = markdownContent,
CoverImg = "",
CreateByName = "系统",
JumpUrl = "",
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "学员推送提醒",
Platform = 5,
ReceiveId = queryTargetWorkId
};
Common.Message.MessageHelper.SendMessage(modelWork);
}
}
}
student_LogRepository.AddStuLogRepository(StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, Uid);
return flag;
}
......
......@@ -8,6 +8,9 @@ using Edu.Model.ViewModel.Question;
using Edu.Repository.Exam;
using Edu.Model.ViewModel.Exam;
using VT.FW.DB;
using Edu.Repository.Question;
using Edu.Module.Question;
using Edu.Common.Plugin;
namespace Edu.Module.Exam
{
......@@ -41,6 +44,22 @@ namespace Edu.Module.Exam
/// </summary>
private readonly RB_StuWords_ExamDetailRepository stuWords_ExamDetailRepository = new RB_StuWords_ExamDetailRepository();
/// <summary>
/// 问题仓储层对象
/// </summary>
private readonly RB_QuestionRepository questionRepository = new RB_QuestionRepository();
/// <summary>
/// 问题解析处理类
/// </summary>
private readonly AnalysisQuestionTypeModule analysisQuestion = new AnalysisQuestionTypeModule();
/// <summary>
/// 题库仓储层对象
/// </summary>
private readonly RB_Question_BankRepository question_BankRepository = new RB_Question_BankRepository();
#region 单词测试和复习
/// <summary>
/// 生成课程复习和预习单词
/// </summary>
......@@ -73,7 +92,7 @@ namespace Edu.Module.Exam
{
var titleRandomNum = Common.ConvertHelper.CreateRandomNum();
var tempWords = reviewList[i];
var count = totalList?.Where(qitem => qitem.Id != tempWords.Id)?.Count()??0;
var count = totalList?.Where(qitem => qitem.Id != tempWords.Id)?.Count() ?? 0;
//reviewGroupList.Add(CreateSingleModule(tempWords,totalList));
//选择题
if (titleRandomNum % 2 == 0)
......@@ -254,7 +273,7 @@ namespace Edu.Module.Exam
break;
//根据中文意思选日语书写
case 3:
if (!string.IsNullOrEmpty(item.WordWrite)&&!string.IsNullOrEmpty(item.ChineseMean))
if (!string.IsNullOrEmpty(item.WordWrite) && !string.IsNullOrEmpty(item.ChineseMean))
{
title = string.Format("请选择【{0}】所对应日语书写.", item.ChineseMean);
options.Add(new optionItem()
......@@ -272,7 +291,7 @@ namespace Edu.Module.Exam
{
Content = totalList
?.OrderBy(qitem => Guid.NewGuid())
?.FirstOrDefault(qitem =>qitem.Id != cItem.Id && qitem.Id != item.Id && !string.IsNullOrEmpty(qitem.WordWrite))
?.FirstOrDefault(qitem => qitem.Id != cItem.Id && qitem.Id != item.Id && !string.IsNullOrEmpty(qitem.WordWrite))
?.WordWrite ?? "";
}
if (options.Where(qitem => qitem.Content.Equals(Content)).Count() > 0)
......@@ -634,5 +653,237 @@ namespace Edu.Module.Exam
var list = stuWords_ExamRepository.GetStuWordsExamListRepository(query);
return list;
}
#endregion
#region 题库相关测试
/// <summary>
/// 题型数量统计
/// </summary>
/// <param name="query"></param>
public object GetAppQuestionStaticModule(RB_Question_ViewModel query)
{
object obj = new object();
int readingCount = 0;
int listeningCount = 0;
int grammarCount = 0;
int wordsCount = 0;
var list = questionRepository.GetQuestionCategoryListRepository(query);
if (list != null && list.Count > 0)
{
readingCount = list?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ReadingChoose)?.Sum(qitem => qitem.QuestionCount) ?? 0;
listeningCount= list?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.Listening)?.Sum(qitem => qitem.QuestionCount) ?? 0;
grammarCount = list?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseGrammarUse)?.Sum(qitem => qitem.QuestionCount) ?? 0;
}
obj = new
{
readingCount,
listeningCount,
grammarCount,
wordsCount
};
return obj;
}
public List<object> GetAppQuestionCategoryListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_ViewModel query)
{
List<object> list = new List<object>();
var dataList = questionRepository.GetQuestionPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (dataList != null && dataList.Count > 0)
{
foreach (var item in dataList)
{
var QuestionContentObj = analysisQuestion.ParsingQuestion(item.QuestionTypeKey, item.QuestionContent);
List<object> answerList = new List<object>();
List<object> quesAnswerList = new List<object>();
//填空题、分录题、资料题
if (item.QuestionTypeKey == "fill-in" || item.QuestionTypeKey == "entry-problem" || item.QuestionTypeKey == "data-question")
{
var tempList = item.Answer.Split('★');
if (tempList != null && tempList.Count() > 0)
{
foreach (var tItem in tempList)
{
answerList.Add(tItem);
}
}
}
//完型填空
else if (item.QuestionTypeKey == "cloze")
{
if (!string.IsNullOrEmpty(item.Answer.ToString()))
{
var qAnsList = Common.Plugin.JsonHelper.DeserializeObject<List<SubAnswerItem>>(item.Answer.ToString());
if (qAnsList != null && qAnsList.Count() > 0)
{
foreach (var tItem in qAnsList)
{
quesAnswerList.Add(tItem);
}
}
}
}
else if (item.QuestionTypeKey == "reading-comprehensio" || item.QuestionTypeKey == "listening")
{
if (!string.IsNullOrEmpty(item.Answer.ToString()))
{
try
{
var tempList = Common.ConvertHelper.StringToFileList(item.Answer);
if (tempList != null && tempList.Count > 0)
{
foreach (var tItem in tempList)
{
quesAnswerList.Add(tItem);
}
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "GetAppQuestionCategoryListModule_:" + Common.Plugin.JsonHelper.Serialize(item));
}
}
}
var obj = new
{
item.QuestionId,
item.QuestionTypeId,
item.QuestionTypeKey,
item.Title,
item.DifficultyType,
item.DifficultyTypeStr,
item.AnswerParse,
QuestionContentObj,
QuestionAnswerList = quesAnswerList,
AnswerList = answerList,
};
list.Add(obj);
}
}
return list;
}
/// <summary>
/// 获取题库分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<object> GetAppBankPageModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_Bank_ViewModel query)
{
List<object> result = new List<object>();
var bankList = question_BankRepository.GetQuestionBankPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (bankList != null && bankList.Count > 0)
{
foreach (var item in bankList)
{
var obj = new
{
item.BankId,
item.BankName,
JoinNum = new Random().Next(1, 100),
LeastTime = "30:55",
HighestScore = new Random().Next(1, 100),
MyUseTime = "55:55",
MyScore = new Random().Next(1, 100),
MyRank = new Random().Next(1, 10),
};
result.Add(obj);
}
}
return result;
}
/// <summary>
/// 获取题库详情分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<object> GetAppBankDetailsPageModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_ViewModel query)
{
List<object> result = new List<object>();
var questionList = questionRepository.GetQuestionPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (questionList != null && questionList.Count > 0)
{
foreach (var item in questionList)
{
var QuestionContentObj = analysisQuestion.ParsingQuestion(item.QuestionTypeKey, item.QuestionContent);
List<object> answerList = new List<object>();
List<object> quesAnswerList = new List<object>();
//填空题、分录题、资料题
if (item.QuestionTypeKey == "fill-in" || item.QuestionTypeKey == "entry-problem" || item.QuestionTypeKey == "data-question")
{
var tempList = item.Answer.Split('★');
if (tempList != null && tempList.Count() > 0)
{
foreach (var tItem in tempList)
{
answerList.Add(tItem);
}
}
}
//完型填空
else if (item.QuestionTypeKey == "cloze")
{
if (!string.IsNullOrEmpty(item.Answer.ToString()))
{
var qAnsList = Common.Plugin.JsonHelper.DeserializeObject<List<SubAnswerItem>>(item.Answer.ToString());
if (qAnsList != null && qAnsList.Count() > 0)
{
foreach (var tItem in qAnsList)
{
quesAnswerList.Add(tItem);
}
}
}
}
else if (item.QuestionTypeKey == "reading-comprehensio" || item.QuestionTypeKey == "listening")
{
if (!string.IsNullOrEmpty(item.Answer.ToString()))
{
try
{
var tempList = Common.ConvertHelper.StringToFileList(item.Answer);
if (tempList != null && tempList.Count > 0)
{
foreach (var tItem in tempList)
{
quesAnswerList.Add(tItem);
}
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "GetAppQuestionCategoryListModule_:" + Common.Plugin.JsonHelper.Serialize(item));
}
}
}
var obj = new
{
item.QuestionId,
item.QuestionTypeId,
item.QuestionTypeKey,
item.Title,
item.DifficultyType,
item.DifficultyTypeStr,
item.AnswerParse,
QuestionContentObj,
QuestionAnswerList = quesAnswerList,
AnswerList = answerList,
};
result.Add(obj);
}
}
return result;
}
#endregion
}
}
......@@ -68,6 +68,7 @@ namespace Edu.Module.Question
{
{nameof(RB_Question_Bank_ViewModel.BankName), model.BankName },
{nameof(RB_Question_Bank_ViewModel.BankNo), model.BankNo },
{nameof(RB_Question_Bank_ViewModel.BankType), model.BankType },
};
flag = question_BankRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Bank_ViewModel.BankId), model.BankId));
}
......
using Edu.Model.ViewModel.System;
using Edu.Repository.System;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Edu.Module.System
{
public class DataServiceModule
{
/// <summary>
/// 总经理视图仓储
/// </summary>
private readonly RB_General_Manager_ViewRepository gmViewRepository = new RB_General_Manager_ViewRepository();
/// <summary>
/// 获取指定日期的数据
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public RB_General_Manager_ViewModel GetViewModelModule(string datetime)
{
return gmViewRepository.GetViewModel(datetime);
}
public async Task<RB_General_Manager_ViewModel> UpdateTodayViewModuleAsync()
{
var day = DateTime.Now.ToString("yyyy-MM-dd");
var p = await gmViewRepository.UpdateTodayView();
return GetViewModelModule(day);
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Exam
{
/// <summary>
/// 学员练习仓储层对象
/// </summary>
public class RB_Student_PracticeRepository : BaseRepository<RB_Student_Practice>
{
/// <summary>
/// 获取学生练习列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Practice_Extend> GetStudentPracticeListRepository(RB_Student_Practice_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Practice AS A
WHERE 1=1
");
if (query != null)
{
if (query.StudentId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.StudentId), query.StudentId);
}
if (query.Category > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.Category), query.Category);
}
if (query.LevelType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.LevelType), (int)query.LevelType);
}
}
return Get<RB_Student_Practice_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 获取学员练习分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Practice_Extend> GetStudentPracticePageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_Practice_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Practice AS A
WHERE 1=1
");
if (query != null)
{
if (query.StudentId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.StudentId), query.StudentId);
}
if (query.Category > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.Category), query.Category);
}
if (query.LevelType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.LevelType), (int)query.LevelType);
}
}
return GetPage<RB_Student_Practice_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
}
}
......@@ -48,6 +48,10 @@ WHERE 1=1 AND B.Status=0
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Question_ViewModel.Category), query.QCategoryId);
}
if (query.BankType > 0)
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Question_ViewModel.BankType), (int)query.BankType);
}
return Get<RB_Question_ViewModel>(builder.ToString()).ToList();
}
}
......@@ -88,6 +92,47 @@ WHERE 1=1 AND B.Status=0 AND A.Status=0
}
}
/// <summary>
/// 问题分类统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Question_ViewModel> GetQuestionCategoryListRepository(RB_Question_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.Category,Count(A.QuestionId) AS QuestionCount
FROM RB_Question AS A INNER JOIN rb_question_bank AS B ON A.BankId=B.BankId
WHERE 1=1 AND B.Status=0 AND A.Status=0
");
if (query == null)
{
return new List<RB_Question_ViewModel>();
}
else
{
if (!string.IsNullOrEmpty(query.QBankIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Question_ViewModel.BankId), query.QBankIds);
}
if (query.CourseId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Question_ViewModel.CourseId), query.CourseId);
}
if (!string.IsNullOrEmpty(query.Q_QuestionTypeIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Question_ViewModel.QuestionTypeId), query.Q_QuestionTypeIds);
}
if (query.BankType > 0)
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Question_ViewModel.BankType), (int)query.BankType);
}
builder.AppendFormat(" GROUP BY A.Category ");
return Get<RB_Question_ViewModel>(builder.ToString()).ToList();
}
}
/// <summary>
/// 获取问题分页列表
/// </summary>
......@@ -148,6 +193,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Question_ViewModel.Category), query.QCategoryId);
}
if (query.BankType > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Question_ViewModel.BankType), (int)query.BankType);
}
builder.AppendFormat(" ORDER BY A.{0} ASC ", nameof(RB_Question_ViewModel.SortNum));
return GetPage<RB_Question_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
......
......@@ -342,7 +342,7 @@ WHERE {where}";
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName
,class.ClassName,b.EnterID,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId,stu.StuTel,stu.StuRealMobile
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId,stu.StuTel,stu.StuRealMobile,IFNULL(B.CreateBy,0) AS OrderCreateBy,IFNULL(stu.StuId,0) AS StudentId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as class on class.ClassId=a.ClassId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=a.Id
......@@ -365,9 +365,10 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3
{
builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.OrderId)} ={demodel.OrderId}");
}
if (demodel.Teacher_Id > 0)
if (demodel.Teacher_Id > 0 || demodel.HelpEnterId>0)
{
builder.AppendFormat($@" and class.Teacher_Id ={demodel.Teacher_Id}");
//builder.AppendFormat($@" and (class.Teacher_Id ={demodel.Teacher_Id} OR o.HelpEnterId ={demodel.HelpEnterId} )");
builder.AppendFormat($@" and (class.Teacher_Id ={demodel.Teacher_Id} OR stu.StuId IN(SELECT StuId FROM rb_student_assist WHERE `Status`=0 AND AssistId={demodel.HelpEnterId}) ) ");
}
if (!string.IsNullOrEmpty(demodel.GuestName))
{
......
using Edu.Model.Entity.System;
using Edu.Model.ViewModel.System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VT.FW.DB.Dapper;
namespace Edu.Repository.System
{
public class RB_General_Manager_ViewRepository:BaseRepository<RB_General_Manager_View>
{
/// <summary>
/// 查询指定日期的数据
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public RB_General_Manager_ViewModel GetViewModel(string datetime)
{
string sql = $"select * from {nameof(RB_General_Manager_View)} where DATE_FORMAT(`Day`,'%Y-%m-%d')=@date";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("date", datetime);
return Get<RB_General_Manager_ViewModel>(sql, parameters).FirstOrDefault();
}
/// <summary>
/// 更新今日数据
/// </summary>
public async Task<bool> UpdateTodayView()
{
try
{
var sql = "call proc_GeneralManagerView(100000)";
Execute(sql);
return true;
}
catch (Exception)
{
return false;
}
}
}
}
using Edu.Model.Entity.User;
using Edu.Model.ViewModel.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.User
{
/// <summary>
/// 市场部客户数据统计仓储层
/// </summary>
public class RB_Student_MarketRepository : BaseRepository<RB_Student_Market>
{
/// <summary>
/// 市场部客户数据统计列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Market_Extend> GetStudentMarketListRepository(RB_Student_Market_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Market AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.YearStr), query.YearStr);
}
if (query.MonthStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.MonthStr), query.MonthStr);
}
if (query.Times > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.Times), query.Times);
}
}
builder.AppendFormat(" ORDER BY A.{0} ASC ", nameof(RB_Student_Static_Extend.Id));
return Get<RB_Student_Market_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 市场部客户数据月份统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Market_Extend> GetStudentMarketMonthListRepository(RB_Student_Market_Extend query, bool isYear = false)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT CONCAT(DATE_FORMAT(A.Date, '%Y-%m'),'-01') AS Date,A.YearStr,A.MonthStr,SUM(A.PushCount) AS PushCount,SUM(A.TrainCount) AS TrainCount,SUM(A.StudyCount) AS StudyCount
,SUM(A.MeiTuanCount) AS MeiTuanCount,SUM(A.EduCustomerSign) AS EduCustomerSign,SUM(A.EduCustomerNotSign) AS EduCustomerNotSign,SUM(A.PassBy) AS PassBy
,SUM(A.WeChatFriend) AS WeChatFriend,SUM(A.TransCount) AS TransCount,SUM(A.SchoolPromote) AS SchoolPromote,SUM(A.SchoolAgent) AS SchoolAgent,SUM(A.OfflineActivity) AS OfflineActivity
,SUM(A.OfficialAccount) AS OfficialAccount,SUM(A.TeacherRecommend) AS TeacherRecommend,SUM(A.ByteDance) AS ByteDance,SUM(A.ThirdPartyPlatform) AS ThirdPartyPlatform
,SUM(A.Other) AS Other,SUM(A.ClassACount) AS ClassACount,SUM(A.ClassBCount) AS ClassBCount,SUM(A.ClassCCount) AS ClassCCount,SUM(A.ClassDCount) AS ClassDCount
,SUM(A.InvalidCount) AS InvalidCount,SUM(A.ContractCount) AS ContractCount,SUM(A.OrderMoney) AS OrderMoney,SUM(A.StudyOrderMoney) AS StudyOrderMoney
FROM RB_Student_Market AS A
WHERE 1=1 AND A.Date<>'0001-01-01 00:00:00'
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
if (isYear)
{
builder.AppendFormat(" AND A.{0}<={1} ", nameof(RB_Student_Market_Extend.YearStr), query.YearStr);
}
else
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.YearStr), query.YearStr);
}
}
}
builder.AppendFormat(" GROUP BY DATE_FORMAT(A.Date, '%Y-%m') ");
builder.AppendFormat(" ORDER BY DATE_FORMAT(A.Date, '%Y-%m') ASC ");
return Get<RB_Student_Market_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 市场部客户数据年份统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Market_Extend> GetStudentMarketYearListRepository(RB_Student_Market_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT CONCAT(DATE_FORMAT(A.Date, '%Y-%m'),'-01') AS Date,A.YearStr,A.MonthStr,SUM(A.PushCount) AS PushCount,SUM(A.TrainCount) AS TrainCount,SUM(A.StudyCount) AS StudyCount
,SUM(A.MeiTuanCount) AS MeiTuanCount,SUM(A.EduCustomerSign) AS EduCustomerSign,SUM(A.EduCustomerNotSign) AS EduCustomerNotSign,SUM(A.PassBy) AS PassBy
,SUM(A.WeChatFriend) AS WeChatFriend,SUM(A.TransCount) AS TransCount,SUM(A.SchoolPromote) AS SchoolPromote,SUM(A.SchoolAgent) AS SchoolAgent,SUM(A.OfflineActivity) AS OfflineActivity
,SUM(A.OfficialAccount) AS OfficialAccount,SUM(A.TeacherRecommend) AS TeacherRecommend,SUM(A.ByteDance) AS ByteDance,SUM(A.ThirdPartyPlatform) AS ThirdPartyPlatform
,SUM(A.Other) AS Other,SUM(A.ClassACount) AS ClassACount,SUM(A.ClassBCount) AS ClassBCount,SUM(A.ClassCCount) AS ClassCCount,SUM(A.ClassDCount) AS ClassDCount
,SUM(A.InvalidCount) AS InvalidCount,SUM(A.ContractCount) AS ContractCount,SUM(A.OrderMoney) AS OrderMoney,SUM(A.StudyOrderMoney) AS StudyOrderMoney
FROM RB_Student_Market AS A
WHERE 1=1 AND A.Date<>'0001-01-01 00:00:00'
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Market_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}<={1} ", nameof(RB_Student_Market_Extend.YearStr), query.YearStr);
}
}
builder.AppendFormat(" GROUP BY A.YearStr ");
builder.AppendFormat(" ORDER BY A.YearStr ASC ");
return Get<RB_Student_Market_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 根据存储过程统计市场部客户信息
/// </summary>
/// <param name="DateStr"></param>
/// <returns></returns>
public RB_Student_Market_Extend GetStudentMarketByProcRepository(string DateStr)
{
string sql = string.Format("call proc_student_market('{0}') ", DateStr);
var list = Get<RB_Student_Market_Extend>(sql);
return list?.FirstOrDefault();
}
/// <summary>
/// 清除市场部客户数据统计信息
/// </summary>
public void DeleteStudentMarketByProcRepository()
{
string sql = "TRUNCATE TABLE RB_Student_Market ";
base.Execute(sql);
}
}
}
......@@ -56,11 +56,11 @@ WHERE 1=1
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Static_Extend> GetStudentStaticMonthListRepository(RB_Student_Static_Extend query)
public List<RB_Student_Static_Extend> GetStudentStaticMonthListRepository(RB_Student_Static_Extend query,bool isYear=false)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT CONCAT(DATE_FORMAT(A.Date, '%Y-%m'),'-01') AS Date,SUM(A.PushCount) AS PushCount,SUM(A.NewCount) AS NewCount,SUM(A.CommunicationCount) AS CommunicationCount
SELECT CONCAT(DATE_FORMAT(A.Date, '%Y-%m'),'-01') AS Date,A.YearStr,A.MonthStr,SUM(A.PushCount) AS PushCount,SUM(A.NewCount) AS NewCount,SUM(A.CommunicationCount) AS CommunicationCount
,SUM(A.TrialLessonCount) AS TrialLessonCount,SUM(A.NotContacted) AS NotContacted,SUM(A.JPCount) AS JPCount,SUM(A.KRCount) AS KRCount,SUM(A.FRCount) AS FRCount
,SUM(A.JPStudyCount) AS JPStudyCount,SUM(A.KRStudyCount) AS KRStudyCount,SUM(A.YGAStudyCount) AS YGAStudyCount,SUM(A.USStudyCount) AS USStudyCount
,SUM(A.SGStudyCount) AS SGStudyCount,SUM(A.AXStudyCount) AS AXStudyCount,SUM(A.OtherCount) AS OtherCount,SUM(A.ClassACount) AS ClassACount,SUM(A.ClassBCount) AS ClassBCount
......@@ -79,11 +79,18 @@ WHERE 1=1 AND A.Date<>'0001-01-01 00:00:00'
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Static_Extend.YearStr), query.YearStr);
if (isYear)
{
builder.AppendFormat(" AND A.{0}<={1} ", nameof(RB_Student_Static_Extend.YearStr), query.YearStr);
}
else
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Static_Extend.YearStr), query.YearStr);
}
}
}
builder.AppendFormat(" GROUP BY DATE_FORMAT(A.Date, '%Y-%m') ");
builder.AppendFormat(" ORDER BY DATE_FORMAT(A.Date, '%Y-%m') ASC ", nameof(RB_Student_Static_Extend.Id));
builder.AppendFormat(" ORDER BY DATE_FORMAT(A.Date, '%Y-%m') ASC ");
return Get<RB_Student_Static_Extend>(builder.ToString()).ToList();
}
......@@ -128,7 +135,7 @@ WHERE 1=1 AND A.Date<>'0001-01-01 00:00:00'
/// </summary>
/// <param name="DateStr"></param>
/// <returns></returns>
public RB_Student_Static_Extend GetStudentStaticByProcRepository(string DateStr)
public RB_Student_Static_Extend GetStudentStaticByProcRepository(string DateStr,string empIds)
{
string sql = string.Format("call proc_student_static('{0}') ", DateStr);
var list = Get<RB_Student_Static_Extend>(sql);
......
......@@ -1207,6 +1207,10 @@ namespace Edu.WebApi.Controllers.Course
{
return ApiResult.ParamIsNull(message: "请选择签到学员!");
}
if (list != null && list.Where(qitem => qitem.TeacherId <= 0).Count() > 0)
{
return ApiResult.ParamIsNull(message: "未设置上课老师!请联系学管!");
}
#region 验证是否已轧账
string MonthStr = list.FirstOrDefault().ClassDate.ToString("yyyy-MM");
int schoolId = list.FirstOrDefault().School_Id;
......
......@@ -2,6 +2,7 @@
using Edu.Common.API;
using Edu.Common.Data;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Question;
......@@ -63,7 +64,9 @@ namespace Edu.WebApi.Controllers.Course
item.BankNo,
item.BankName,
item.CreateByName,
item.QuestionCount
item.QuestionCount,
item.BankType,
BankTypeName = item.BankType.ToName(),
});
index++;
}
......@@ -92,7 +95,13 @@ namespace Edu.WebApi.Controllers.Course
[HttpPost]
public ApiResult SetQuestionBank()
{
var extModel = Common.Plugin.JsonHelper.DeserializeObject<RB_Question_Bank_ViewModel>(RequestParm.Msg.ToString());
var extModel = new RB_Question_Bank_ViewModel()
{
BankId=base.ParmJObj.GetInt("BankId"),
BankNo=base.ParmJObj.GetStringValue("BankNo"),
BankName=base.ParmJObj.GetStringValue("BankName"),
BankType=(BankTypeEnum)base.ParmJObj.GetInt("BankType"),
};
extModel.CreateTime = DateTime.Now;
extModel.CreateBy = base.UserInfo.Id;
extModel.UpdateBy = base.UserInfo.Id;
......@@ -104,6 +113,17 @@ namespace Edu.WebApi.Controllers.Course
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 题库等级列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetBankTypeList()
{
var list = Common.Plugin.EnumHelper.EnumToList(typeof(BankTypeEnum));
return ApiResult.Success(data:list);
}
/// <summary>
/// 删除题库
/// </summary>
......
......@@ -234,6 +234,10 @@ namespace Edu.WebApi.Controllers.Course
CourseId = base.ParmJObj.GetInt("CourseId", 0),
EnterID = base.ParmJObj.GetInt("EnterID", 0),
};
if (model.Teacher_Id > 0)
{
model.HelpEnterId = base.UserInfo.Id;
}
model.Group_Id = base.UserInfo.Group_Id;
var list = classModule.GetTeacherStudentPage(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, model);
List<object> result = new List<object>();
......@@ -244,6 +248,10 @@ namespace Edu.WebApi.Controllers.Course
{
item.EnterName = UserReidsCache.GetUserLoginInfo(item.EnterID)?.AccountName ?? "";
}
else if (item.OrderCreateBy > 0)
{
item.EnterName = UserReidsCache.GetUserLoginInfo(item.OrderCreateBy)?.AccountName ?? "";
}
result.Add(new
{
item.Id,
......@@ -259,6 +267,7 @@ namespace Edu.WebApi.Controllers.Course
item.Teacher_Id,
item.TotalPlanNum,
item.Ranks,
item.OrderId,
item.EnterName,
item.EnterID,
item.IsRenewOrder,
......
......@@ -170,15 +170,37 @@ namespace Edu.WebApi.Controllers.Customer
};
if (!string.IsNullOrEmpty(categoryModel.CategoryName))
{
bool cflag = customerModule.SetCustomerCategoryModule(categoryModel);
model.CategoryId = categoryModel.CategoryId;
if (customerModule.CheckCustomerCategoryModule(categoryModel))
{
return ApiResult.Failed("已存在此同行,请重新选择!");
}
else
{
bool cflag = customerModule.SetCustomerCategoryModule(categoryModel);
model.CategoryId = categoryModel.CategoryId;
}
}
var flag = customerModule.SetCustomerModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 替换同行
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult ReplaceCategory()
{
var CategoryId = base.ParmJObj.GetInt("CategoryId");
var NewCategoryId= base.ParmJObj.GetInt("NewCategoryId");
if (NewCategoryId <= 0)
{
return ApiResult.Failed("请选择目标企业或校代!");
}
bool flag = customerModule.ReplaceCustomerCategoryModule(CategoryId, NewCategoryId);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 根据编号删除客户
/// </summary>
......@@ -1037,20 +1059,16 @@ namespace Edu.WebApi.Controllers.Customer
CategoryName = base.ParmJObj.GetStringValue("CategoryName"),
CatetoryType = (CatetoryTypeEnum)base.ParmJObj.GetInt("CatetoryType"),
};
query.CreateBy = userInfo.Id;
var list = customerModule.GetCustomerCategoryListModule(query);
List<object> result = new List<object>();
foreach (var item in list)
{
string CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
result.Add(new
{
item.CategoryId,
item.CategoryName,
CreateByName,
item.CatetoryType,
CatetoryTypeName = item.CatetoryType.ToName(),
CreateTime = Common.ConvertHelper.FormatTime(item.CreateTime),
});
}
return ApiResult.Success(data: result);
......
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.Module.System;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System;
namespace Edu.WebApi.Controllers.DataService
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class DataServiceController : BaseController
{
private DataServiceModule dataServiceModule = new DataServiceModule();
/// <summary>
/// 获取总经理视图数据
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetGMView()
{
var param = JObject.FromObject(RequestParm.Msg);
var day = param.GetStringValue("day");
day = String.IsNullOrEmpty(day) ? DateTime.Now.ToString("yyyy-MM-dd") : day;
var result = dataServiceModule.GetViewModelModule(day);
return ApiResult.Success(data: result);
}
/// <summary>
/// 手动更新今日数据
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult UpdateGMView()
{
var result = dataServiceModule.UpdateTodayViewModuleAsync();
return ApiResult.Success(data: result);
}
}
}
......@@ -45,6 +45,11 @@ namespace Edu.WebApi.Controllers.Exam
/// </summary>
private readonly AnalysisQuestionTypeModule analysisQuestion = new AnalysisQuestionTypeModule();
/// <summary>
/// 课程测试处理类对象
/// </summary>
private readonly CourseExamModule courseExamModule = AOP.AOPHelper.CreateAOPObject<CourseExamModule>();
/// <summary>
/// 获取试卷分页列表
/// </summary>
......@@ -60,9 +65,9 @@ namespace Edu.WebApi.Controllers.Exam
ParentId = base.ParmJObj.GetInt("ParentId"),
QPaperIds = base.ParmJObj.GetStringValue("QPaperIds"),
QStartTime = base.ParmJObj.GetStringValue("QStartTime"),
QEndTime=base.ParmJObj.GetStringValue("QEndTime"),
QExamineStatus=-1,
QCreateBy=base.ParmJObj.GetInt("QCreateBy"),
QEndTime = base.ParmJObj.GetStringValue("QEndTime"),
QExamineStatus = -1,
QCreateBy = base.ParmJObj.GetInt("QCreateBy"),
};
if (!string.IsNullOrEmpty(base.ParmJObj.GetStringValue("QExamineStatus")))
{
......@@ -136,8 +141,8 @@ namespace Edu.WebApi.Controllers.Exam
PaperType = base.ParmJObj.GetInt("PaperType"),
ParentId = base.ParmJObj.GetInt("ParentId"),
IsOpen = base.ParmJObj.GetInt("IsOpen"),
GroupType=(ExamGroupTypeEnum)base.ParmJObj.GetInt("GroupType"),
PaperScore=base.ParmJObj.GetDecimal("PaperScore"),
GroupType = (ExamGroupTypeEnum)base.ParmJObj.GetInt("GroupType"),
PaperScore = base.ParmJObj.GetDecimal("PaperScore"),
};
if (string.IsNullOrEmpty(extModel.PaperName))
{
......@@ -162,7 +167,7 @@ namespace Edu.WebApi.Controllers.Exam
GSortNum = gSortNum,
GScore = jobj.GetDecimal("GScore"),
DetailsList = new List<RB_Examination_Details_ViewModel>(),
GroupType=extModel.GroupType,
GroupType = extModel.GroupType,
};
if (extModel.GroupType == ExamGroupTypeEnum.QuestionType)
{
......@@ -258,7 +263,7 @@ namespace Edu.WebApi.Controllers.Exam
IsSaveTemplate = base.ParmJObj.GetBoolValue("IsSaveTemplate"),
ParentId = base.ParmJObj.GetInt("ParentId"),
IsOpen = base.ParmJObj.GetInt("IsOpen"),
GroupType=(ExamGroupTypeEnum)base.ParmJObj.GetInt("GroupType"),
GroupType = (ExamGroupTypeEnum)base.ParmJObj.GetInt("GroupType"),
};
string TemplateData = base.ParmJObj.GetStringValue("TemplateData");
if (!string.IsNullOrEmpty(TemplateData))
......@@ -330,7 +335,7 @@ namespace Edu.WebApi.Controllers.Exam
item.TemplateBankIds,
QuestionStructure = QuestionStructure.TrimStart(';'),
item.GroupType,
GroupTypeName=item.GroupType.ToName(),
GroupTypeName = item.GroupType.ToName(),
});
}
pageModel.Count = rowsCount;
......@@ -524,7 +529,7 @@ namespace Edu.WebApi.Controllers.Exam
FillInIsSubject = base.ParmJObj.GetInt("FillInIsSubject"),
FillInIsIgnore = base.ParmJObj.GetInt("FillInIsIgnore"),
IsHalfScore = base.ParmJObj.GetInt("IsHalfScore"),
PublishPic=base.ParmJObj.GetStringValue("PublishPic"),
PublishPic = base.ParmJObj.GetStringValue("PublishPic"),
};
var studentStr = base.ParmJObj.GetStringValue("StudentList");
if (!string.IsNullOrEmpty(studentStr))
......@@ -547,7 +552,7 @@ namespace Edu.WebApi.Controllers.Exam
{
return ApiResult.ParamIsNull("考试开始时间不能大于结束时间!");
}
model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id;
......@@ -581,10 +586,10 @@ namespace Edu.WebApi.Controllers.Exam
{
PaperId = base.ParmJObj.GetInt("PaperId"),
PaperName = base.ParmJObj.GetStringValue("PaperName"),
IsQueryAll=base.ParmJObj.GetInt("IsQueryAll"),
QTestStatus=base.ParmJObj.GetInt("QTestStatus"),
QStartTime=base.ParmJObj.GetStringValue("QStartTime"),
QEndTime=base.ParmJObj.GetStringValue("QEndTime"),
IsQueryAll = base.ParmJObj.GetInt("IsQueryAll"),
QTestStatus = base.ParmJObj.GetInt("QTestStatus"),
QStartTime = base.ParmJObj.GetStringValue("QStartTime"),
QEndTime = base.ParmJObj.GetStringValue("QEndTime"),
};
if (query.IsQueryAll != 1)
{
......@@ -888,7 +893,7 @@ namespace Edu.WebApi.Controllers.Exam
CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "",
item.ExamStatus,
ExamStatusName = item.ExamStatus.ToName(),
ExamStartTime= Common.ConvertHelper.FormatTime(item.ExamStartTime),
ExamStartTime = Common.ConvertHelper.FormatTime(item.ExamStartTime),
ExamEndTime = Common.ConvertHelper.FormatTime(item.ExamEndTime),
PaperStartTime = Common.ConvertHelper.FormatTime(item.PaperStartTime),
PaperEndTime = Common.ConvertHelper.FormatTime(item.PaperEndTime),
......@@ -931,7 +936,7 @@ namespace Edu.WebApi.Controllers.Exam
{
JObject sObj = JObject.Parse(sItem.ToString());
var qKey = sObj.GetStringValue("QuestionTypeKey");
string answer= sObj.GetStringValue("AnswerList");
string answer = sObj.GetStringValue("AnswerList");
List<SubAnswerItem> subList = new List<SubAnswerItem>();
if (qKey == "reading-comprehensio" || qKey == "listening" || qKey == "cloze")
{
......@@ -940,13 +945,13 @@ namespace Edu.WebApi.Controllers.Exam
subList = Common.Plugin.JsonHelper.DeserializeObject<List<SubAnswerItem>>(answer);
}
}
var detailModel = new RB_Examination_Details_ViewModel()
{
Id = sObj.GetInt("PaperDetailsId"),
StundetDetailsId = sObj.GetInt("StundetDetailsId"),
StudentScore = sObj.GetDecimal("StudentScore"),
SubList= subList,
SubList = subList,
};
paperDetailsList.Add(detailModel);
}
......@@ -957,5 +962,132 @@ namespace Edu.WebApi.Controllers.Exam
var result = paperModule.SetTeacherScoringModule(PublishId, GuestId, PaperId, StuComment, paperDetailsList);
return result ? ApiResult.Success("阅卷成功!") : ApiResult.Failed("阅卷失败!");
}
/// <summary>
/// 获取题目类型统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAppQuestionStaticModule()
{
var query = new RB_Question_ViewModel()
{
BankType = (BankTypeEnum)base.ParmJObj.GetInt("BankType"),
};
var obj = courseExamModule.GetAppQuestionStaticModule(query);
return ApiResult.Success(data: obj);
}
/// <summary>
/// 甲小鹤小程序获取题库单词训练
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionWordsList()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_ViewModel()
{
BankType = (BankTypeEnum)base.ParmJObj.GetInt("BankType"),
QCategoryId = base.ParmJObj.GetStringValue("QCategoryId"),
};
var list = courseExamModule.GetAppQuestionCategoryListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 甲小鹤小程序获取题库语法训练
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionGrammar()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_ViewModel()
{
BankType = (BankTypeEnum)base.ParmJObj.GetInt("BankType"),
QCategoryId = string.Format("{0}", (int)QuestionCategoryEnum.ChooseGrammarUse),
};
var list = courseExamModule.GetAppQuestionCategoryListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 甲小鹤小程序获取题库听力训练
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionListening()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_ViewModel()
{
BankType = (BankTypeEnum)base.ParmJObj.GetInt("BankType"),
QCategoryId = string.Format("{0}", (int)QuestionCategoryEnum.Listening),
};
var list = courseExamModule.GetAppQuestionCategoryListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 甲小鹤小程序获取题库阅读理解训练
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionReading()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_ViewModel()
{
BankType = (BankTypeEnum)base.ParmJObj.GetInt("BankType"),
QCategoryId = string.Format("{0}", (int)QuestionCategoryEnum.ReadingChoose),
};
var list = courseExamModule.GetAppQuestionCategoryListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 获取考级题库分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAppBankPage()
{
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_Bank_ViewModel()
{
BankType = (BankTypeEnum)base.ParmJObj.GetInt("BankType"),
};
var list = courseExamModule.GetAppBankPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 获取考级题库详情分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAppBankDetails()
{
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_ViewModel()
{
BankId = base.ParmJObj.GetInt("BankId"),
};
var list = courseExamModule.GetAppBankDetailsPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
}
}
\ No newline at end of file
......@@ -68,7 +68,7 @@ namespace Edu.WebApi.Controllers.User
[AllowAnonymous]
public ApiResult Test()
{
new OrderModule().RunStudentadvisorModule();
//new OrderModule().RunStudentadvisorModule();
return ApiResult.Success();
}
......
......@@ -500,8 +500,9 @@ namespace Edu.WebApi.Controllers.User
}
#endregion
#region 课程顾问部客户数据统计
/// <summary>
/// 客户数据每日统计
/// 课程顾问部客户数据每日统计
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -517,9 +518,121 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载课程顾问部客户数据每日统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentStatic()
{
var query = new RB_Student_Static_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
MonthStr = base.ParmJObj.GetInt("MonthStr")
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentStaticListModule(query);
string excelName = "课程顾问部每日统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("日期"){ CellWidth=15},
new ExcelColumn("推送人数"){ CellWidth=15},
new ExcelColumn("新客户"){ CellWidth=15},
new ExcelColumn("初步沟通(二次沟通)"){ CellWidth=10},
new ExcelColumn("预约试听(已到店,已试听)"){ CellWidth=15},
new ExcelColumn("待联系"){ CellWidth=15},
new ExcelColumn("日语语培"){ CellWidth=15},
new ExcelColumn("韩国语培"){ CellWidth=15},
new ExcelColumn("法语语培"){ CellWidth=15},
new ExcelColumn("日本留学"){ CellWidth=15},
new ExcelColumn("韩国留学"){ CellWidth=15},
new ExcelColumn("英港澳留学"){ CellWidth=15},
new ExcelColumn("美国留学"){ CellWidth=15},
new ExcelColumn("新加坡留学"){ CellWidth=15},
new ExcelColumn("澳新留学"){ CellWidth=15},
new ExcelColumn("其他"){ CellWidth=15},
new ExcelColumn("A类客户"){ CellWidth=15},
new ExcelColumn("B类客户"){ CellWidth=15},
new ExcelColumn("C类客户"){ CellWidth=15},
new ExcelColumn("D类客户"){ CellWidth=15},
new ExcelColumn("同行介绍"){ CellWidth=15},
new ExcelColumn("直客"){ CellWidth=15},
new ExcelColumn("学员转介绍"){ CellWidth=15},
new ExcelColumn("内部介绍"){ CellWidth=15},
new ExcelColumn("无效"){ CellWidth=15},
new ExcelColumn("疑似"){ CellWidth=15},
new ExcelColumn("意向"){ CellWidth=15},
new ExcelColumn("近期可邀约"){ CellWidth=15},
new ExcelColumn("谈判"){ CellWidth=15},
new ExcelColumn("签约.成交.续费"){ CellWidth=15},
new ExcelColumn("语培签约金额"){ CellWidth=15},
new ExcelColumn("留学签约金额"){ CellWidth=15},
}
};
slist.Add(header);
foreach (var item in list)
{
JObject dObj = JObject.Parse(JsonHelper.Serialize(item));
var columns = new List<ExcelColumn>
{
new ExcelColumn(dObj.GetStringValue("DateStr"))
};
columns.Add(new ExcelColumn(dObj.GetStringValue("PushCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("NewCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("CommunicationCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TrialLessonCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("NotContacted")));
columns.Add(new ExcelColumn(dObj.GetStringValue("JPCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("KRCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("FRCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("JPStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("KRStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("YGAStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("USStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SGStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("AXStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OtherCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassACount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassBCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassCCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassDCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("CustomerCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("B2CCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TransCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InnerCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InvalidCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SuspectedCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("IntentionCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InvitationCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("NegotiationCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ContractCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OrderMoney")));
columns.Add(new ExcelColumn(dObj.GetStringValue("StudyOrderMoney")));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentStatic");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 客户数据月份统计
/// 课程顾问部客户数据每月统计
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -527,16 +640,127 @@ namespace Edu.WebApi.Controllers.User
{
var query = new RB_Student_Static_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentStaticListMonthModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载课程顾问部客户数据每月统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentStaticMonth()
{
var query = new RB_Student_Static_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentStaticListMonthModule(query);
string excelName = "课程顾问部每月统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("日期"){ CellWidth=15},
new ExcelColumn("推送人数"){ CellWidth=15},
new ExcelColumn("新客户"){ CellWidth=15},
new ExcelColumn("初步沟通(二次沟通)"){ CellWidth=10},
new ExcelColumn("预约试听(已到店,已试听)"){ CellWidth=15},
new ExcelColumn("待联系"){ CellWidth=15},
new ExcelColumn("日语语培"){ CellWidth=15},
new ExcelColumn("韩国语培"){ CellWidth=15},
new ExcelColumn("法语语培"){ CellWidth=15},
new ExcelColumn("日本留学"){ CellWidth=15},
new ExcelColumn("韩国留学"){ CellWidth=15},
new ExcelColumn("英港澳留学"){ CellWidth=15},
new ExcelColumn("美国留学"){ CellWidth=15},
new ExcelColumn("新加坡留学"){ CellWidth=15},
new ExcelColumn("澳新留学"){ CellWidth=15},
new ExcelColumn("其他"){ CellWidth=15},
new ExcelColumn("A类客户"){ CellWidth=15},
new ExcelColumn("B类客户"){ CellWidth=15},
new ExcelColumn("C类客户"){ CellWidth=15},
new ExcelColumn("D类客户"){ CellWidth=15},
new ExcelColumn("同行介绍"){ CellWidth=15},
new ExcelColumn("直客"){ CellWidth=15},
new ExcelColumn("学员转介绍"){ CellWidth=15},
new ExcelColumn("内部介绍"){ CellWidth=15},
new ExcelColumn("无效"){ CellWidth=15},
new ExcelColumn("疑似"){ CellWidth=15},
new ExcelColumn("意向"){ CellWidth=15},
new ExcelColumn("近期可邀约"){ CellWidth=15},
new ExcelColumn("谈判"){ CellWidth=15},
new ExcelColumn("签约.成交.续费"){ CellWidth=15},
new ExcelColumn("语培签约金额"){ CellWidth=15},
new ExcelColumn("留学签约金额"){ CellWidth=15},
}
};
slist.Add(header);
foreach (var item in list)
{
JObject dObj = JObject.Parse(JsonHelper.Serialize(item));
var columns = new List<ExcelColumn>
{
new ExcelColumn(dObj.GetStringValue("DateStr"))
};
columns.Add(new ExcelColumn(dObj.GetStringValue("PushCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("NewCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("CommunicationCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TrialLessonCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("NotContacted")));
columns.Add(new ExcelColumn(dObj.GetStringValue("JPCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("KRCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("FRCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("JPStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("KRStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("YGAStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("USStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SGStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("AXStudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OtherCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassACount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassBCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassCCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassDCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("CustomerCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("B2CCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TransCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InnerCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InvalidCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SuspectedCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("IntentionCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InvitationCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("NegotiationCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ContractCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OrderMoney")));
columns.Add(new ExcelColumn(dObj.GetStringValue("StudyOrderMoney")));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentStaticMonth");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 客户数据月份统计
/// 课程顾问部客户数据每月成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -551,9 +775,83 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载课程顾问部客户数据每月成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentStaticMonthRate()
{
var query = new RB_Student_Static_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentStaticRateListMonthModule(query);
string excelName = "课程顾问部月成长率统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("名称"){ CellWidth=25},
new ExcelColumn("1月"){ CellWidth=15},
new ExcelColumn("2月"){ CellWidth=15},
new ExcelColumn("3月"){ CellWidth=10},
new ExcelColumn("4月"){ CellWidth=15},
new ExcelColumn("5月"){ CellWidth=15},
new ExcelColumn("6月"){ CellWidth=15},
new ExcelColumn("7月"){ CellWidth=15},
new ExcelColumn("8月"){ CellWidth=15},
new ExcelColumn("9月"){ CellWidth=15},
new ExcelColumn("10月"){ CellWidth=15},
new ExcelColumn("11月"){ CellWidth=15},
new ExcelColumn("12月"){ CellWidth=15},
new ExcelColumn("平均"){ CellWidth=15},
}
};
slist.Add(header);
foreach (var item in list)
{
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.ItemName)
};
columns.Add(new ExcelColumn(item.JanuaryRate + "%"));
columns.Add(new ExcelColumn(item.FebruaryRate + "%"));
columns.Add(new ExcelColumn(item.MarchRate + "%"));
columns.Add(new ExcelColumn(item.AprilRate + "%"));
columns.Add(new ExcelColumn(item.MayRate + "%"));
columns.Add(new ExcelColumn(item.JuneRate + "%"));
columns.Add(new ExcelColumn(item.JulyRate + "%"));
columns.Add(new ExcelColumn(item.AugustRate + "%"));
columns.Add(new ExcelColumn(item.SeptemberRate + "%"));
columns.Add(new ExcelColumn(item.OctoberRate + "%"));
columns.Add(new ExcelColumn(item.NovemberRate + "%"));
columns.Add(new ExcelColumn(item.DecemberRate + "%"));
columns.Add(new ExcelColumn(item.AvgRate + "%"));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentStaticMonthRate");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 客户数据年份统计
/// 课程顾问部客户数据年度统计
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -569,7 +867,62 @@ namespace Edu.WebApi.Controllers.User
}
/// <summary>
/// 客户数据年份统计
/// 下载课程顾问部客户数据年度统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentStaticYear()
{
var query = new RB_Student_Static_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentStaticListYearModule(query);
string excelName = "课程顾问部年度数据统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("名称"){ CellWidth=25},
new ExcelColumn("2021"){ CellWidth=15},
new ExcelColumn("2022"){ CellWidth=15},
new ExcelColumn("成长率"){ CellWidth=10},
}
};
slist.Add(header);
foreach (var item in list)
{
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.ItemName)
};
columns.Add(new ExcelColumn(item.FirstYear.ToString()));
columns.Add(new ExcelColumn(item.SecondYear.ToString()));
columns.Add(new ExcelColumn(item.YearRate + "%"));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentStaticYear");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 课程顾问部客户数据年度成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -585,7 +938,62 @@ namespace Edu.WebApi.Controllers.User
}
/// <summary>
/// 初始化学员统计数据
/// 下载课程顾问部客户数据年度成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentStaticYearRate()
{
var query = new RB_Student_Static_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentStaticListYearRateModule(query);
string excelName = "课程顾问部年度成长率统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("名称"){ CellWidth=25},
new ExcelColumn("2021"){ CellWidth=15},
new ExcelColumn("2022"){ CellWidth=15},
new ExcelColumn("成长率"){ CellWidth=10},
}
};
slist.Add(header);
foreach (var item in list)
{
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.ItemName)
};
columns.Add(new ExcelColumn(item.FirstYear.ToString()+"%"));
columns.Add(new ExcelColumn(item.SecondYear.ToString()+"%"));
columns.Add(new ExcelColumn(item.YearRate + "%"));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentStaticYearRate");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 初始化课程顾问部学员统计数据
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -593,7 +1001,6 @@ namespace Edu.WebApi.Controllers.User
{
var userInfo = base.UserInfo;
string StartTime = base.ParmJObj.GetStringValue("StartTime");
if (string.IsNullOrEmpty(StartTime))
{
StartTime = Common.ConvertHelper.FormatDate(DateTime.Now);
......@@ -603,5 +1010,495 @@ namespace Edu.WebApi.Controllers.User
bool flag = studentStatModule.CreateStudentStaticModule(userInfo, StartTime, EndTime);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#endregion
#region 市场部客户数据统计
/// <summary>
/// 初始化市场部学员统计数据
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult InitStudentMarket()
{
var userInfo = base.UserInfo;
string StartTime = base.ParmJObj.GetStringValue("StartTime");
if (string.IsNullOrEmpty(StartTime))
{
StartTime = Common.ConvertHelper.FormatDate(DateTime.Now);
}
StartTime = "2021-12-21";
string EndTime = Common.ConvertHelper.FormatDate(DateTime.Now);
bool flag = studentStatModule.CreateStudentMarketModule(userInfo, StartTime, EndTime);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 市场部客户数据每日统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentMarket()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
MonthStr = base.ParmJObj.GetInt("MonthStr")
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载市场部客户数据每日统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentMarket()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
MonthStr = base.ParmJObj.GetInt("MonthStr")
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListModule(query);
string excelName = "市场部每日数据统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("日期"){ CellWidth=15},
new ExcelColumn("进单人数"){ CellWidth=15},
new ExcelColumn("语培需求"){ CellWidth=15},
new ExcelColumn("留学需求"){ CellWidth=10},
new ExcelColumn("美团点评"){ CellWidth=15},
new ExcelColumn("教育同行(签约)"){ CellWidth=15},
new ExcelColumn("教育同行(未签约)"){ CellWidth=15},
new ExcelColumn("过路客(直客)"){ CellWidth=15},
new ExcelColumn("朋友圈"){ CellWidth=15},
new ExcelColumn("学员转介绍"){ CellWidth=15},
new ExcelColumn("校园推广"){ CellWidth=15},
new ExcelColumn("校园代理"){ CellWidth=15},
new ExcelColumn("线下活动"){ CellWidth=15},
new ExcelColumn("公众号"){ CellWidth=15},
new ExcelColumn("教师推荐"){ CellWidth=15},
new ExcelColumn("字节跳动"){ CellWidth=15},
new ExcelColumn("第三方平台"){ CellWidth=15},
new ExcelColumn("其他"){ CellWidth=15},
new ExcelColumn("A类客户"){ CellWidth=15},
new ExcelColumn("B类客户"){ CellWidth=15},
new ExcelColumn("C类客户"){ CellWidth=15},
new ExcelColumn("D类客户"){ CellWidth=15},
new ExcelColumn("无效"){ CellWidth=15},
new ExcelColumn("签约.成交.续费"){ CellWidth=15},
new ExcelColumn("语培签约金额"){ CellWidth=15},
new ExcelColumn("留学签约金额"){ CellWidth=15},
}
};
slist.Add(header);
foreach (var item in list)
{
JObject dObj = JObject.Parse(JsonHelper.Serialize(item));
var columns = new List<ExcelColumn>
{
new ExcelColumn(dObj.GetStringValue("DateStr"))
};
columns.Add(new ExcelColumn(dObj.GetStringValue("PushCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TrainCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("StudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("MeiTuanCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("EduCustomerSign")));
columns.Add(new ExcelColumn(dObj.GetStringValue("EduCustomerNotSign")));
columns.Add(new ExcelColumn(dObj.GetStringValue("PassBy")));
columns.Add(new ExcelColumn(dObj.GetStringValue("WeChatFriend")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TransCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SchoolPromote")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SchoolAgent")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OfflineActivity")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OfficialAccount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TeacherRecommend")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ByteDance")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ThirdPartyPlatform")));
columns.Add(new ExcelColumn(dObj.GetStringValue("Other")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassACount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassBCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassCCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassDCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InvalidCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ContractCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OrderMoney")));
columns.Add(new ExcelColumn(dObj.GetStringValue("StudyOrderMoney")));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentMarket");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 市场部客户数据月度统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentMarketMonth()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListMonthModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载市场部客户数据月度统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentMarketMonth()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListMonthModule(query);
string excelName = "市场部每月数据统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("日期"){ CellWidth=15},
new ExcelColumn("进单人数"){ CellWidth=15},
new ExcelColumn("语培需求"){ CellWidth=15},
new ExcelColumn("留学需求"){ CellWidth=10},
new ExcelColumn("美团点评"){ CellWidth=15},
new ExcelColumn("教育同行(签约)"){ CellWidth=15},
new ExcelColumn("教育同行(未签约)"){ CellWidth=15},
new ExcelColumn("过路客(直客)"){ CellWidth=15},
new ExcelColumn("朋友圈"){ CellWidth=15},
new ExcelColumn("学员转介绍"){ CellWidth=15},
new ExcelColumn("校园推广"){ CellWidth=15},
new ExcelColumn("校园代理"){ CellWidth=15},
new ExcelColumn("线下活动"){ CellWidth=15},
new ExcelColumn("公众号"){ CellWidth=15},
new ExcelColumn("教师推荐"){ CellWidth=15},
new ExcelColumn("字节跳动"){ CellWidth=15},
new ExcelColumn("第三方平台"){ CellWidth=15},
new ExcelColumn("其他"){ CellWidth=15},
new ExcelColumn("A类客户"){ CellWidth=15},
new ExcelColumn("B类客户"){ CellWidth=15},
new ExcelColumn("C类客户"){ CellWidth=15},
new ExcelColumn("D类客户"){ CellWidth=15},
new ExcelColumn("无效"){ CellWidth=15},
new ExcelColumn("签约.成交.续费"){ CellWidth=15},
new ExcelColumn("语培签约金额"){ CellWidth=15},
new ExcelColumn("留学签约金额"){ CellWidth=15},
}
};
slist.Add(header);
foreach (var item in list)
{
JObject dObj = JObject.Parse(JsonHelper.Serialize(item));
var columns = new List<ExcelColumn>
{
new ExcelColumn(dObj.GetStringValue("DateStr"))
};
columns.Add(new ExcelColumn(dObj.GetStringValue("PushCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TrainCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("StudyCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("MeiTuanCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("EduCustomerSign")));
columns.Add(new ExcelColumn(dObj.GetStringValue("EduCustomerNotSign")));
columns.Add(new ExcelColumn(dObj.GetStringValue("PassBy")));
columns.Add(new ExcelColumn(dObj.GetStringValue("WeChatFriend")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TransCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SchoolPromote")));
columns.Add(new ExcelColumn(dObj.GetStringValue("SchoolAgent")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OfflineActivity")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OfficialAccount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("TeacherRecommend")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ByteDance")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ThirdPartyPlatform")));
columns.Add(new ExcelColumn(dObj.GetStringValue("Other")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassACount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassBCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassCCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ClassDCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("InvalidCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("ContractCount")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OrderMoney")));
columns.Add(new ExcelColumn(dObj.GetStringValue("StudyOrderMoney")));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentMarketMonth");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 市场部客户数据月度成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentMarketMonthRate()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketRateListMonthModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载市场部客户数据月度成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentMarketMonthRate()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketRateListMonthModule(query);
string excelName = "市场部月成长率统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("名称"){ CellWidth=25},
new ExcelColumn("1月"){ CellWidth=15},
new ExcelColumn("2月"){ CellWidth=15},
new ExcelColumn("3月"){ CellWidth=10},
new ExcelColumn("4月"){ CellWidth=15},
new ExcelColumn("5月"){ CellWidth=15},
new ExcelColumn("6月"){ CellWidth=15},
new ExcelColumn("7月"){ CellWidth=15},
new ExcelColumn("8月"){ CellWidth=15},
new ExcelColumn("9月"){ CellWidth=15},
new ExcelColumn("10月"){ CellWidth=15},
new ExcelColumn("11月"){ CellWidth=15},
new ExcelColumn("12月"){ CellWidth=15},
new ExcelColumn("平均"){ CellWidth=15},
}
};
slist.Add(header);
foreach (var item in list)
{
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.ItemName)
};
columns.Add(new ExcelColumn(item.JanuaryRate + "%"));
columns.Add(new ExcelColumn(item.FebruaryRate + "%"));
columns.Add(new ExcelColumn(item.MarchRate + "%"));
columns.Add(new ExcelColumn(item.AprilRate + "%"));
columns.Add(new ExcelColumn(item.MayRate + "%"));
columns.Add(new ExcelColumn(item.JuneRate + "%"));
columns.Add(new ExcelColumn(item.JulyRate + "%"));
columns.Add(new ExcelColumn(item.AugustRate + "%"));
columns.Add(new ExcelColumn(item.SeptemberRate + "%"));
columns.Add(new ExcelColumn(item.OctoberRate + "%"));
columns.Add(new ExcelColumn(item.NovemberRate + "%"));
columns.Add(new ExcelColumn(item.DecemberRate + "%"));
columns.Add(new ExcelColumn(item.AvgRate + "%"));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentMarketMonthRate");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 市场部客户数据年度统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentMarketYear()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListYearModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载市场部客户数据年度统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentMarketYear()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListYearModule(query);
string excelName = "市场部年度数据统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("名称"){ CellWidth=25},
new ExcelColumn("2021"){ CellWidth=15},
new ExcelColumn("2022"){ CellWidth=15},
new ExcelColumn("成长率"){ CellWidth=10},
}
};
slist.Add(header);
foreach (var item in list)
{
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.ItemName)
};
columns.Add(new ExcelColumn(item.FirstYear.ToString()));
columns.Add(new ExcelColumn(item.SecondYear.ToString()));
columns.Add(new ExcelColumn(item.YearRate + "%"));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentMarketYear");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 市场部客户数据年度成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentMarketYearRate()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListYearRateModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 下载市场部客户数据年度成长率统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentMarketYearRate()
{
var query = new RB_Student_Market_Extend()
{
YearStr = base.ParmJObj.GetInt("YearStr"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = studentStatModule.GetStudentMarketListYearRateModule(query);
string excelName = "市场部年度成长率统计.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("名称"){ CellWidth=25},
new ExcelColumn("2021"){ CellWidth=15},
new ExcelColumn("2022"){ CellWidth=15},
new ExcelColumn("成长率"){ CellWidth=10},
}
};
slist.Add(header);
foreach (var item in list)
{
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.ItemName)
};
columns.Add(new ExcelColumn(item.FirstYear.ToString()+"%"));
columns.Add(new ExcelColumn(item.SecondYear.ToString()+"%"));
columns.Add(new ExcelColumn(item.YearRate + "%"));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
slist.Add(dataRow);
}
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", excelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DownLoadStudentMarketYearRate");
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", excelName);
}
}
#endregion
}
}
using Edu.CacheManager.Base;
using Edu.Cache.User;
using Edu.CacheManager.Base;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Module.Course;
using Edu.Module.Customer;
using Edu.Module.Duty;
using Edu.Module.EduTask;
using Edu.Module.Exam;
using Edu.Module.User;
using System;
using System.IO;
using System.Threading;
......@@ -46,6 +49,11 @@ namespace Edu.WebApi.Timers
/// </summary>
private static readonly ClassModule classModule = new ClassModule();
/// <summary>
/// 学员数据统计处理类
/// </summary>
private static readonly StudentStatModule studentStatModule = new StudentStatModule();
/// <summary>
/// 使用redis第几号库
/// </summary>
......@@ -221,6 +229,10 @@ namespace Edu.WebApi.Timers
redis.Set(createMarkDataKey, Common.ConvertHelper.FormatDate(currentDate));
marketConsultantModule.CreateConsultantDataModule(currentDate);
marketConsultantModule.CreateMarketDataModule(currentDate);
UserInfo user = UserReidsCache.GetUserLoginInfo("1");
studentStatModule.CreateStudentStaticModule(user, Common.ConvertHelper.FormatDate(currentDate.AddDays(-1)), Common.ConvertHelper.FormatDate(currentDate), isInit: false);
studentStatModule.CreateStudentMarketModule(user, Common.ConvertHelper.FormatDate(currentDate.AddDays(-1)), Common.ConvertHelper.FormatDate(currentDate), isInit: false);
}
Interlocked.Exchange(ref marketconsultant_Timer, 0);
}
......
{
"ConnectionStrings": {
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
......
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