Commit daf88ea1 authored by liudong1993's avatar liudong1993

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

parents 6e85a8c3 f1970a59
......@@ -286,8 +286,16 @@ namespace Edu.Common
/// <returns></returns>
public static int CalcMinutes(DateTime start, DateTime end)
{
int minutes = Convert.ToInt32((end - start).TotalSeconds);
minutes /= 60;
int minutes = 0;
try
{
minutes = Convert.ToInt32((end - start).TotalSeconds);
minutes /= 60;
}
catch
{
}
return minutes;
}
......
......@@ -63,5 +63,15 @@ namespace Edu.Model.Entity.Customer
/// 状态
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 是否签约(1-已签约)
/// </summary>
public int IsContract { get; set; }
/// <summary>
/// 合同附件
/// </summary>
public string ContractUrl { get; set; }
}
}
......@@ -66,5 +66,20 @@ namespace Edu.Model.Entity.Exam
/// 是否作答错误(1-是)
/// </summary>
public int IsWrong { get; set; }
/// <summary>
/// 学生答案
/// </summary>
public string StudentAnswer { get; set; }
/// <summary>
/// 学生得分
/// </summary>
public decimal Score { get; set; }
/// <summary>
/// 学生得分
/// </summary>
public decimal StudentScore { get; set; }
}
}
......@@ -83,5 +83,10 @@ namespace Edu.Model.Entity.Exam
/// 学生答案
/// </summary>
public string StudentAnswer { get; set; }
/// <summary>
/// 是否复习
/// </summary>
public int IsReview { 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_Company
{
/// <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 NewCount { get; set; }
/// <summary>
/// 初步沟通/二次沟通
/// </summary>
public decimal CommunicationCount { get; set; }
/// <summary>
/// 预约试听(已到店,已试听)
/// </summary>
public decimal TrialLessonCount { get; set; }
/// <summary>
/// 待联系
/// </summary>
public decimal NotContacted { get; set; }
/// <summary>
/// 日本语培
/// </summary>
public decimal JPCount { get; set; }
/// <summary>
/// 韩国语培
/// </summary>
public decimal KRCount { get; set; }
/// <summary>
/// 法国语培
/// </summary>
public decimal FRCount { get; set; }
/// <summary>
/// 日本留学
/// </summary>
public decimal JPStudyCount { get; set; }
/// <summary>
/// 韩国留学
/// </summary>
public decimal KRStudyCount { get; set; }
/// <summary>
/// 英港澳留学
/// </summary>
public decimal YGAStudyCount { get; set; }
/// <summary>
/// 美国留学
/// </summary>
public decimal USStudyCount { get; set; }
/// <summary>
/// 新加坡留学
/// </summary>
public decimal SGStudyCount { get; set; }
/// <summary>
/// 澳新留学
/// </summary>
public decimal AXStudyCount { get; set; }
/// <summary>
/// 其他
/// </summary>
public decimal OtherCount { 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 CustomerCount { get; set; }
/// <summary>
/// 直客
/// </summary>
public decimal B2CCount { get; set; }
/// <summary>
/// 学员转介绍
/// </summary>
public decimal TransCount { get; set; }
/// <summary>
/// 内部介绍
/// </summary>
public decimal InnerCount { get; set; }
/// <summary>
/// 无效
/// </summary>
public decimal InvalidCount { get; set; }
/// <summary>
/// 疑似
/// </summary>
public decimal SuspectedCount { get; set; }
/// <summary>
/// 意向
/// </summary>
public decimal IntentionCount { get; set; }
/// <summary>
/// 近期可邀约
/// </summary>
public decimal InvitationCount { get; set; }
/// <summary>
/// 谈判
/// </summary>
public decimal NegotiationCount { 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>
/// 次(0-上旬,1-中旬,2-下旬)
/// </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; }
}
}
......@@ -133,5 +133,10 @@ namespace Edu.Model.ViewModel.Customer
/// 同业名称
/// </summary>
public string CategoryName { get; set; }
/// <summary>
/// 是否签约
/// </summary>
public int IsContract { get; set; }
}
}
......@@ -14,5 +14,15 @@ namespace Edu.Model.ViewModel.Exam
/// 考试编号【查询使用】
/// </summary>
public string QExamIds { get; set; }
/// <summary>
/// 题库编号
/// </summary>
public int BankId { get; set; }
/// <summary>
/// 学员编号
/// </summary>
public int StudentId { get; set; }
}
}
using Edu.Model.Entity.Exam;
using Edu.Common.Enum.Question;
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -35,5 +36,9 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public int ExamMinutes { get { return Common.ConvertHelper.CalcMinutes(this.StartTime, this.EndTime); } }
/// <summary>
/// 题库类型(见枚举)
/// </summary>
public LevelTypeEnum BankType { get; set; }
}
}
......@@ -10,5 +10,29 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public class RB_Student_Practice_Extend : RB_Student_Practice
{
/// <summary>
/// 错题数量
/// </summary>
public int WrongCount { get; set; }
/// <summary>
/// 开始编号
/// </summary>
public int StartId { get; set; }
/// <summary>
/// 是否只查询错题
/// </summary>
public int IsQueryWrong { get; set; }
/// <summary>
/// 是否查询已复习的
/// </summary>
public int IsQueryReview { get; set; }
/// <summary>
/// 分类编号
/// </summary>
public string QCategoryIds { get; set; }
}
}
......@@ -139,5 +139,10 @@ namespace Edu.Model.ViewModel.Question
/// 排序类型(1-问题编号)
/// </summary>
public int OrderByType { get; set; }
/// <summary>
/// 问题编号
/// </summary>
public string QuestionIds { get; set; }
}
}
\ No newline at end of file
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_Company_Extend : RB_Student_Company
{
/// <summary>
/// 月份
/// </summary>
public string ShowMonthStr { get; set; }
/// <summary>
/// 日期字符串
/// </summary>
public string DateStr
{
get
{
return Common.ConvertHelper.FormatDate2(this.Date);
}
}
}
}
......@@ -546,12 +546,11 @@ namespace Edu.Module.Course
{
foreach (var sItem in subItem.WordsList)
{
Int32.TryParse(subItem.ChapterNo, out int ChapterId);
wordsList.Add(new RB_Course_Words_Extend()
{
Id = 0,
CourseId = query.NewCourseId,
ChapterId = ChapterId,
ChapterId = maxLength,
WordType = sItem.WordType,
WordContent = sItem.WordContent,
WordTone = sItem.WordTone,
......
......@@ -646,6 +646,10 @@ namespace Edu.Module.Customer
public bool SetCustomerCategoryModule(RB_Customer_Category_Extend model)
{
bool flag = false;
if (model.IsContract == 0)
{
model.ContractUrl = "";
}
if (model.CategoryId > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
......@@ -654,6 +658,8 @@ namespace Edu.Module.Customer
{ nameof(RB_Customer_Category_Extend.CatetoryType),model.CatetoryType},
{ nameof(RB_Customer_Category_Extend.UpdateBy),model.UpdateBy},
{ nameof(RB_Customer_Category_Extend.UpdateTime),model.UpdateTime},
{ nameof(RB_Customer_Category_Extend.IsContract),model.IsContract},
{ nameof(RB_Customer_Category_Extend.ContractUrl),model.ContractUrl},
};
flag = customer_CategoryRepository.Update(fileds, new WhereHelper(nameof(RB_Customer_Category_Extend.CategoryId), model.CategoryId));
}
......
......@@ -1335,6 +1335,8 @@ namespace Edu.Module.Customer
List<MarketChannelStaticModel> schoolDataList = new List<MarketChannelStaticModel>();
List<MarketChannelStaticModel> innerDataList = new List<MarketChannelStaticModel>();
List<MarketChannelStaticModel> transDataList = new List<MarketChannelStaticModel>();
//签约渠道
List<MarketChannelStaticModel> contractDataList = new List<MarketChannelStaticModel>();
foreach (var item in enumList)
{
if (item.Id == (int)StuCreateTypeEnum.EmployeeInput)
......@@ -1363,10 +1365,10 @@ namespace Edu.Module.Customer
var tempCusList = dataList?.Where(qitem => qitem.CreateType == StuCreateTypeEnum.CustomerInput && qitem.CategoryId == subItem.CategoryId)?.ToList();
var tempCustomer = customerList?.FirstOrDefault(qitem => qitem.CategoryId == subItem.CategoryId);
string channelName = tempCustomer?.CategoryName ?? "其他";
if (sItem.CatetoryType == CatetoryTypeEnum.Company)
//舒翰
if ((tempCustomer?.IsContract??0)==1)
{
customerDataList.Add(new MarketChannelStaticModel()
contractDataList.Add(new MarketChannelStaticModel()
{
ChannelName = channelName,
ChannelId = subItem.CategoryId,
......@@ -1376,17 +1378,32 @@ namespace Edu.Module.Customer
OrderIncome = tempCusList?.Sum(qitem => qitem.OrderIncome) ?? 0
});
}
if (sItem.CatetoryType == CatetoryTypeEnum.School)
else
{
schoolDataList.Add(new MarketChannelStaticModel()
if (sItem.CatetoryType == CatetoryTypeEnum.Company)
{
ChannelName = channelName,
ChannelId = subItem.CategoryId,
ClueCount = tempCusList?.Count() ?? 0,
VisitCount = tempCusList?.Sum(qitem => qitem.VisitCount) ?? 0,
OrderCount = tempCusList?.Sum(qitem => qitem.OrderCount) ?? 0,
OrderIncome = tempCusList?.Sum(qitem => qitem.OrderIncome) ?? 0
});
customerDataList.Add(new MarketChannelStaticModel()
{
ChannelName = channelName,
ChannelId = subItem.CategoryId,
ClueCount = tempCusList?.Count() ?? 0,
VisitCount = tempCusList?.Sum(qitem => qitem.VisitCount) ?? 0,
OrderCount = tempCusList?.Sum(qitem => qitem.OrderCount) ?? 0,
OrderIncome = tempCusList?.Sum(qitem => qitem.OrderIncome) ?? 0
});
}
if (sItem.CatetoryType == CatetoryTypeEnum.School)
{
schoolDataList.Add(new MarketChannelStaticModel()
{
ChannelName = channelName,
ChannelId = subItem.CategoryId,
ClueCount = tempCusList?.Count() ?? 0,
VisitCount = tempCusList?.Sum(qitem => qitem.VisitCount) ?? 0,
OrderCount = tempCusList?.Sum(qitem => qitem.OrderCount) ?? 0,
OrderIncome = tempCusList?.Sum(qitem => qitem.OrderIncome) ?? 0
});
}
}
}
}
......@@ -1448,6 +1465,7 @@ namespace Edu.Module.Customer
schoolDataList,
innerDataList,
transDataList,
contractDataList,
};
}
......
This diff is collapsed.
......@@ -448,13 +448,13 @@ namespace Edu.Module.User
/// <summary>
/// 学员转交
/// </summary>
/// <param name="StuId">学员编号</param>
/// <param name="StuIds">学员编号</param>
/// <param name="CreateBy">负责人</param>
/// <param name="OperateId">操作人</param>
/// <returns></returns>
public bool ForwardStudentModule(int StuId, int CreateBy, int OperateId)
public bool ForwardStudentModule(string StuIds, int CreateBy, int OperateId)
{
return studentRepository.ForwardStudentRepository(StuId, CreateBy, OperateId);
return studentRepository.ForwardStudentRepository(StuIds, CreateBy, OperateId);
}
/// <summary>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -114,7 +114,7 @@ WHERE 1=1
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.CategoryName,'') AS CategoryName
SELECT A.*,IFNULL(B.CategoryName,'') AS CategoryName,IFNULL(B.IsContract,0) AS IsContract
FROM RB_Customer AS A LEFT JOIN rb_customer_category AS B ON A.CategoryId=B.CategoryId
WHERE 1=1
");
......
......@@ -25,18 +25,22 @@ SELECT A.*
FROM RB_Student_ExamDetails AS A
WHERE 1=1
");
if (query != null)
{
if (query.ExamId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_ExamDetails_Extend.ExamId), query.ExamId);
}
if (!string.IsNullOrEmpty(query.QExamIds))
{
builder.AppendFormat(@" AND A.{0} IN ({1}) ", nameof(RB_Student_ExamDetails_Extend.ExamId), query.QExamIds);
}
}
builder.AppendFormat(@" AND ExamId IN(SELECT MAX(id) FROM rb_student_exam WHERE StudentId IN({0}) AND BankId={1} AND Score>0) ", query.StudentId, query.BankId);
return Get<RB_Student_ExamDetails_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 批量提交考试
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public bool BatchStudentExamDetailsRepository(List<RB_Student_ExamDetails_Extend> list)
{
StringBuilder builder = new StringBuilder();
builder.Append("INSERT INTO RB_Student_ExamDetails (ExamId,QuestionId,Title,QuestionContent,QuestionTypeId,QuestionTypeKey,Answer,AnswerParse,IsAnswer,IsWrong,StudentAnswer,Score,StudentScore) ");
builder.Append(" VALUES(@ExamId,@QuestionId,@Title,@QuestionContent,@QuestionTypeId,@QuestionTypeKey,@Answer,@AnswerParse,@IsAnswer,@IsWrong,@StudentAnswer,@Score,@StudentScore) ");
return base.Execute(builder.ToString(), list) > 0;
}
}
}
......@@ -13,19 +13,16 @@ namespace Edu.Repository.Exam
public class RB_Student_ExamRepository : BaseRepository<RB_Student_Exam>
{
/// <summary>
/// 获取学员练习考试分页列表
/// 获取学员练习考试参与人数统计
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Exam_Extend> GetStudentExamPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_Exam_Extend query)
public List<RB_Student_Exam_Extend> GetStudentExamStaticRepository(RB_Student_Exam_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Exam AS A
SELECT B.BankType,A.StudentId
FROM RB_Student_Exam AS A INNER JOIN rb_question_bank AS B ON A.BankId=B.BankId
WHERE 1=1
");
if (query != null)
......@@ -47,7 +44,8 @@ WHERE 1=1
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Student_Exam_Extend.BankId), query.QBankIds);
}
}
return GetPage<RB_Student_Exam_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
builder.Append(" GROUP BY B.BankType,A.StudentId ");
return Get<RB_Student_Exam_Extend>(builder.ToString()).ToList();
}
......
......@@ -35,6 +35,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.Category), query.Category);
}
if (!string.IsNullOrEmpty(query.QCategoryIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Student_Practice_Extend.Category), query.QCategoryIds);
}
if (query.LevelType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.LevelType), (int)query.LevelType);
......@@ -43,6 +47,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.QuestionId), query.QuestionId);
}
if (query.IsQueryReview == 1)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.IsReview), 1);
}
}
return Get<RB_Student_Practice_Extend>(builder.ToString()).ToList();
}
......@@ -77,8 +85,53 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.LevelType), (int)query.LevelType);
}
if (query.IsQueryWrong == 1)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Practice_Extend.IsWrong), 1);
}
if (!string.IsNullOrEmpty(query.QCategoryIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Student_Practice_Extend.Category), query.QCategoryIds);
}
if (query.StartId > 0)
{
builder.AppendFormat(" AND A.{0}>{1} ", nameof(RB_Student_Practice_Extend.Id), query.StartId);
}
}
return GetPage<RB_Student_Practice_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 获取学员练习错题统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Practice_Extend> GetStudentPracticeWrongStaticRepository(RB_Student_Practice_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT Category,COUNT(1) AS WrongCount
FROM rb_student_practice
WHERE 1=1
");
builder.AppendFormat(" AND IsWrong=1 ");
if (query != null)
{
if (query.StudentId > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Student_Practice_Extend.StudentId), query.StudentId);
}
if (query.LevelType > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Student_Practice_Extend.LevelType), (int)query.LevelType);
}
if (!string.IsNullOrEmpty(query.QCategoryIds))
{
builder.AppendFormat(" AND {0} IN({1}) ", nameof(RB_Student_Practice_Extend.Category), query.QCategoryIds);
}
}
builder.AppendFormat(" GROUP BY Category ");
return Get<RB_Student_Practice_Extend>(builder.ToString()).ToList();
}
}
}
......@@ -52,6 +52,10 @@ WHERE 1=1 AND B.Status=0
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Question_ViewModel.BankType), (int)query.BankType);
}
if (!string.IsNullOrEmpty(query.QuestionIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Question_ViewModel.QuestionId), query.QuestionIds);
}
return Get<RB_Question_ViewModel>(builder.ToString()).ToList();
}
}
......
......@@ -195,10 +195,6 @@ ORDER BY {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}";
}
if (demodel.EnterID > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}";
}
if (demodel.Dept_Id > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}";
......@@ -275,9 +271,19 @@ ORDER BY {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.CustomerId)} = {demodel.CustomerId}";
}
if (demodel.CreateBy > 0)
//HK 03 - 15修改
if (demodel.CreateBy > 0|| demodel.EnterID > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.CreateBy)} = {demodel.CreateBy}";
var createBy = 0;
if (demodel.CreateBy > 0)
{
createBy = demodel.CreateBy;
}
if (createBy <= 0 && demodel.EnterID > 0)
{
createBy = demodel.EnterID;
}
where += $@" and (o.{nameof(RB_Order_ViewModel.CreateBy)} = {createBy} OR o.{nameof(RB_Order_ViewModel.EnterID)}={createBy} )";
}
if (demodel.CategoryId > 0)
{
......@@ -349,10 +355,7 @@ WHERE {where} ORDER BY {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderForm)} ={(int)demodel.OrderForm}";
}
if (demodel.EnterID > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.EnterID)} ={demodel.EnterID}";
}
if (demodel.Dept_Id > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.Dept_Id)} ={demodel.Dept_Id}";
......@@ -405,9 +408,19 @@ WHERE {where} ORDER BY {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.CustomerId)} ={demodel.CustomerId}";
}
if (demodel.CreateBy > 0)
//HK 03-15修改
if (demodel.CreateBy > 0 || demodel.EnterID > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.CreateBy)} ={demodel.CreateBy}";
var createBy = 0;
if (demodel.CreateBy > 0)
{
createBy = demodel.CreateBy;
}
if (createBy <= 0 && demodel.EnterID > 0)
{
createBy = demodel.EnterID;
}
where += $@" and (o.{nameof(RB_Order_ViewModel.CreateBy)} = {createBy} OR o.{nameof(RB_Order_ViewModel.EnterID)}={createBy} )";
}
if (demodel.CourseSubject > 0)
{
......@@ -1203,7 +1216,8 @@ FROM rb_order o
WHERE 1=1
");
builder.AppendFormat(" AND o.OrderState IN({0}) ", (int)OrderStateEnum.Normal);
builder.AppendFormat(" AND o.{0}={1} ", nameof(RB_Order_ViewModel.OrderType), (int)OrderTypeEnum.CourseOrder);
//builder.AppendFormat(" AND o.{0}={1} ", nameof(RB_Order_ViewModel.OrderType), (int)OrderTypeEnum.CourseOrder);
builder.AppendFormat(" AND o.CreateTime >= '2021-12-01' ");
builder.AppendFormat(" AND o.OrderId NOT IN(SELECT B.OrderId FROM rb_personnel_bonus AS A INNER JOIN rb_personnel_bonusdetail AS B ON A.Id=B.BonusId WHERE A.PlanType={0} AND A.EmployeeId ={1}) ", PlanType, SaleId);
//帐平
......
......@@ -806,32 +806,40 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState <>2
/// <summary>
/// 学员转交
/// </summary>
/// <param name="StuId">学员编号</param>
/// <param name="StuIds">学员编号</param>
/// <param name="CreateBy">负责人</param>
/// <param name="OperateId">操作人</param>
/// <returns></returns>
public bool ForwardStudentRepository(int StuId, int CreateBy, int OperateId)
public bool ForwardStudentRepository(string StuIds, int CreateBy, int OperateId)
{
bool flag = false;
string logTitle = "客户转交";
string logContent = "";
var oldModel = base.GetEntity(StuId);
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Student_ViewModel.CreateBy),CreateBy },
};
if (oldModel.CreateBy != CreateBy)
var stuList = GetStudentListRepository(new RB_Student_ViewModel() { StuIds = StuIds });
if (stuList != null && stuList.Count > 0)
{
string createByIds = string.Join(",", stuList.Select(qitem => qitem.CreateBy)) + "," + CreateBy;
var empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel()
{
QIds = oldModel.CreateBy + "," + CreateBy
QIds = createByIds.TrimStart(',').TrimEnd(',')
});
logContent = string.Format("负责人:由【{0}】=>【{1}】",
empList?.FirstOrDefault(qitem => qitem.CreateBy == oldModel.CreateBy)?.EmployeeName,
empList?.FirstOrDefault(qitem => qitem.CreateBy == CreateBy)?.EmployeeName
);
foreach (var oldModel in stuList)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Student_ViewModel.CreateBy),CreateBy },
};
if (oldModel.CreateBy != CreateBy)
{
logContent = string.Format("负责人:由【{0}】=>【{1}】",
empList?.FirstOrDefault(qitem => qitem.Id == oldModel.CreateBy)?.EmployeeName,
empList?.FirstOrDefault(qitem => qitem.Id == CreateBy)?.EmployeeName
);
}
flag = base.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), oldModel.StuId));
student_LogRepository.AddStuLogRepository(oldModel.StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, OperateId);
}
}
var flag = base.Update(fileds, new WhereHelper(nameof(RB_Student_ViewModel.StuId), StuId));
student_LogRepository.AddStuLogRepository(oldModel.StuId, Common.Enum.Log.StudentLogTypeEnum.BasicInfo, logTitle, logContent, OperateId);
return flag;
}
......
using Edu.Model.Entity.User;
using Edu.Model.ViewModel.User;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.User
{
/// <summary>
/// 全公司客户数据统计仓储层
/// </summary>
public class RB_Student_CompanyRepository : BaseRepository<RB_Student_Company>
{
/// <summary>
/// 全公司客户数据统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Company_Extend> GetStudentCompanyListRepository(RB_Student_Company_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Company AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Company_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Company_Extend.YearStr), query.YearStr);
}
if (query.MonthStr > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Company_Extend.MonthStr), query.MonthStr);
}
if (query.Times > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Company_Extend.Times), query.Times);
}
}
builder.AppendFormat(" ORDER BY A.{0} ASC ", nameof(RB_Student_Company_Extend.Id));
return Get<RB_Student_Company_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 全公司客户数据月份统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Company_Extend> GetStudentCompanyMonthListRepository(RB_Student_Company_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.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
,SUM(A.ClassCCount) AS ClassCCount,SUM(A.ClassDCount) AS ClassDCount,SUM(A.CustomerCount) AS CustomerCount,SUM(A.B2CCount) AS B2CCount,SUM(A.TransCount) AS TransCount
,SUM(A.InnerCount) AS InnerCount,SUM(A.InvalidCount) AS InvalidCount,SUM(A.SuspectedCount) AS SuspectedCount,SUM(A.IntentionCount) AS IntentionCount
,SUM(A.InvitationCount) AS InvitationCount,SUM(A.NegotiationCount) AS NegotiationCount,SUM(A.ContractCount) AS ContractCount,SUM(A.OrderMoney) AS OrderMoney
,SUM(A.StudyOrderMoney) AS StudyOrderMoney
FROM RB_Student_Company 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_Company_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
if (isYear)
{
builder.AppendFormat(" AND A.{0}<={1} ", nameof(RB_Student_Company_Extend.YearStr), query.YearStr);
}
else
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Company_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_Company_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 全公司客户数据年份统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Company_Extend> GetStudentCompanyYearListRepository(RB_Student_Company_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT CONCAT(A.YearStr,'-01','-01') AS Date,A.YearStr,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
,SUM(A.ClassCCount) AS ClassCCount,SUM(A.ClassDCount) AS ClassDCount,SUM(A.CustomerCount) AS CustomerCount,SUM(A.B2CCount) AS B2CCount,SUM(A.TransCount) AS TransCount
,SUM(A.InnerCount) AS InnerCount,SUM(A.InvalidCount) AS InvalidCount,SUM(A.SuspectedCount) AS SuspectedCount,SUM(A.IntentionCount) AS IntentionCount
,SUM(A.InvitationCount) AS InvitationCount,SUM(A.NegotiationCount) AS NegotiationCount,SUM(A.ContractCount) AS ContractCount,SUM(A.OrderMoney) AS OrderMoney
,SUM(A.StudyOrderMoney) AS StudyOrderMoney
FROM RB_Student_Company 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_Company_Extend.Group_Id), query.Group_Id);
}
if (query.YearStr > 0)
{
builder.AppendFormat(" AND A.{0}<={1} ", nameof(RB_Student_Company_Extend.YearStr), query.YearStr);
}
}
builder.AppendFormat(" GROUP BY A.YearStr ");
builder.AppendFormat(" ORDER BY A.YearStr ASC ");
return Get<RB_Student_Company_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 根据存储过程统计全公司客户信息
/// </summary>
/// <param name="DateStr"></param>
/// <returns></returns>
public RB_Student_Company_Extend GetStudentCompanyByProcRepository(string DateStr,string empIds)
{
string sql = string.Format("call proc_student_company('{0}') ", DateStr);
var list = Get<RB_Student_Company_Extend>(sql);
return list?.FirstOrDefault();
}
/// <summary>
/// 清楚全公司客户统计数据
/// </summary>
public void DeleteStudentCompanyByProcRepository()
{
string sql = "TRUNCATE TABLE RB_Student_Company";
base.Execute(sql);
}
}
}
......@@ -98,10 +98,10 @@ namespace Edu.WebApi.Controllers.Course
{
var extModel = new RB_Question_Bank_ViewModel()
{
BankId=base.ParmJObj.GetInt("BankId"),
BankNo=base.ParmJObj.GetStringValue("BankNo"),
BankName=base.ParmJObj.GetStringValue("BankName"),
BankType=(LevelTypeEnum)base.ParmJObj.GetInt("BankType"),
BankId = base.ParmJObj.GetInt("BankId"),
BankNo = base.ParmJObj.GetStringValue("BankNo"),
BankName = base.ParmJObj.GetStringValue("BankName"),
BankType = (LevelTypeEnum)base.ParmJObj.GetInt("BankType"),
};
extModel.CreateTime = DateTime.Now;
extModel.CreateBy = base.UserInfo.Id;
......@@ -122,7 +122,7 @@ namespace Edu.WebApi.Controllers.Course
public ApiResult GetBankTypeList()
{
var list = Common.Plugin.EnumHelper.EnumToList(typeof(LevelTypeEnum));
return ApiResult.Success(data:list);
return ApiResult.Success(data: list);
}
/// <summary>
......@@ -234,7 +234,7 @@ namespace Edu.WebApi.Controllers.Course
item.QuestionId,
item.CourseId,
Title = newTitle,
SourceTitle=item.Title,
SourceTitle = item.Title,
item.QuestionTypeId,
item.QuestionTypeKey,
QuestionTypeName = item.QuestionTypeKey != "single-number" ? item.QuestionTypeName : "选择题",
......@@ -386,7 +386,7 @@ namespace Edu.WebApi.Controllers.Course
{
return ApiResult.Failed(message: "请填写问题题干!");
}
string str = analysisQuestion.CheckQuestion(extModel.QuestionTypeKey, extModel.QuestionContent,extModel.Answer,out string newAnswer);
string str = analysisQuestion.CheckQuestion(extModel.QuestionTypeKey, extModel.QuestionContent, extModel.Answer, out string newAnswer);
if (!string.IsNullOrEmpty(str))
{
return ApiResult.Failed(message: str);
......@@ -410,15 +410,28 @@ namespace Edu.WebApi.Controllers.Course
[HttpPost]
public ApiResult RunQuestion()
{
Task.Run(() => {
var list = questionModule.GetQuestionListModule(new RB_Question_ViewModel() { Q_QuestionTypeIds = "14,16", });
Task.Run(() =>
{
var list = questionModule.GetQuestionListModule(new RB_Question_ViewModel() { Q_QuestionTypeIds = "16", });
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
try
{
var listenList = JsonHelper.DeserializeObject<List<SubAnswerItem>>(item.Answer);
if (!string.IsNullOrEmpty(item.Answer))
{
var listenList = JsonHelper.DeserializeObject<List<SubAnswerItem>>(item.Answer);
}
else
{
string str = analysisQuestion.CheckQuestion(item.QuestionTypeKey, item.QuestionContent, item.Answer, out string newAnswer, IsRequire: false);
if (!string.IsNullOrEmpty(newAnswer))
{
item.Answer = newAnswer;
bool flag = questionModule.SetQuestionModule(item);
}
}
}
catch
{
......
......@@ -948,6 +948,8 @@ namespace Edu.WebApi.Controllers.Customer
Group_Id = base.UserInfo.Group_Id,
CategoryName = base.ParmJObj.GetStringValue("CategoryName"),
CatetoryType=(CatetoryTypeEnum)base.ParmJObj.GetInt("CatetoryType"),
IsContract=base.ParmJObj.GetInt("IsContract"),
ContractUrl=base.ParmJObj.GetStringValue("ContractUrl"),
};
int IsQueryAll = base.ParmJObj.GetInt("IsQueryAll");
if (IsQueryAll ==0)
......@@ -969,6 +971,8 @@ namespace Edu.WebApi.Controllers.Customer
item.LinkManCount,
item.StudentCount,
item.OrderCount,
item.IsContract,
item.ContractUrl,
CatetoryTypeName = item.CatetoryType.ToName(),
CreateTime = Common.ConvertHelper.FormatTime(item.CreateTime),
});
......@@ -992,6 +996,8 @@ namespace Edu.WebApi.Controllers.Customer
Group_Id = base.UserInfo.Group_Id,
CategoryName = base.ParmJObj.GetStringValue("CategoryName"),
CatetoryType = (CatetoryTypeEnum)base.ParmJObj.GetInt("CatetoryType"),
IsContract = base.ParmJObj.GetInt("IsContract"),
ContractUrl = base.ParmJObj.GetStringValue("ContractUrl"),
};
int IsQueryAll = base.ParmJObj.GetInt("IsQueryAll");
if (IsQueryAll == 0)
......@@ -1087,6 +1093,8 @@ namespace Edu.WebApi.Controllers.Customer
CategoryId= CategoryId,
CategoryName = base.ParmJObj.GetStringValue("CategoryName").Trim(),
CatetoryType = (CatetoryTypeEnum)base.ParmJObj.GetInt("CatetoryType"),
IsContract=base.ParmJObj.GetInt("IsContract"),
ContractUrl=base.ParmJObj.GetStringValue("ContractUrl"),
};
var linkMan = base.ParmJObj.GetStringValue("linkMan");
var linkTel = base.ParmJObj.GetStringValue("linkTel");
......@@ -1167,6 +1175,8 @@ namespace Edu.WebApi.Controllers.Customer
extModel?.CategoryName,
extModel?.CatetoryType,
CatetoryTypeName=extModel?.CatetoryType.ToName()??"",
extModel?.ContractUrl,
extModel?.IsContract,
};
return ApiResult.Success(data: obj);
}
......
......@@ -1061,6 +1061,17 @@ namespace Edu.WebApi.Controllers.Exam
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 获取考级题库参与人数统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAppBankStatic()
{
var obj = courseExamModule.GetAppBankStaticModule();
return ApiResult.Success(data: obj);
}
/// <summary>
/// 获取考级题库分页列表
/// </summary>
......@@ -1092,7 +1103,8 @@ namespace Edu.WebApi.Controllers.Exam
{
BankId = base.ParmJObj.GetInt("BankId"),
};
var list = courseExamModule.GetAppBankDetailsPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
int StudentId = base.ParmJObj.GetInt("StudentId");
var list = courseExamModule.GetAppBankDetailsPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query, StudentId: StudentId);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
......@@ -1140,7 +1152,6 @@ namespace Edu.WebApi.Controllers.Exam
Id = base.ParmJObj.GetInt("Id"),
BankId = base.ParmJObj.GetInt("BankId"),
StudentId = base.ParmJObj.GetInt("StudentId"),
StartTime = base.ParmJObj.GetDateTime("StartTime"),
CreateTime = DateTime.Now,
GroupId = base.ParmJObj.GetInt("GroupId")
};
......@@ -1191,6 +1202,8 @@ namespace Edu.WebApi.Controllers.Exam
AnswerParse=sObj.GetStringValue("AnswerParse"),
IsAnswer=sObj.GetInt("IsAnswer"),
IsWrong=sObj.GetInt("IsWrong"),
StudentAnswer = sObj.GetStringValue("StudentAnswer"),
Score=sObj.GetDecimal("Score"),
};
model.ExamDetailsList.Add(sModel);
}
......@@ -1200,6 +1213,60 @@ namespace Edu.WebApi.Controllers.Exam
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 获取错题练习统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetPracticeWrongStatic()
{
var query = new RB_Student_Practice_Extend()
{
StudentId= base.ParmJObj.GetInt("StudentId"),
LevelType= (LevelTypeEnum)base.ParmJObj.GetInt("LevelType"),
};
var obj = courseExamModule.GetPracticeWrongStaticModule(query);
return ApiResult.Success(data: obj);
}
/// <summary>
/// 获取错题分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetPracticeWrongPage()
{
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Student_Practice_Extend()
{
StudentId = base.ParmJObj.GetInt("StudentId"),
LevelType = (LevelTypeEnum)base.ParmJObj.GetInt("LevelType"),
StartId=base.ParmJObj.GetInt("StartId"),
QCategoryIds = base.ParmJObj.GetStringValue("QCategoryIds"),
};
query.IsQueryWrong = 1;
var list = courseExamModule.GetPracticeWrongPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 设置错题复习
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowRepeat]
public ApiResult SetPracticeReview()
{
var model = new RB_Student_Practice_Extend()
{
Id = base.ParmJObj.GetInt("Id"),
IsReview = 1
};
bool flag = courseExamModule.SetPracticeReviewModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#endregion
}
}
\ No newline at end of file
......@@ -3128,6 +3128,11 @@ namespace Edu.WebApi.Controllers.User
{
list = JsonHelper.DeserializeObject<List<MarketChannelStaticModel>>(dataObj.GetStringValue("transDataList"));
}
//签约渠道
if (queryType == 5)
{
list = JsonHelper.DeserializeObject<List<MarketChannelStaticModel>>(dataObj.GetStringValue("contractDataList"));
}
int index = 1;
foreach (var item in list)
......
......@@ -1354,7 +1354,20 @@ namespace Edu.WebApi.Controllers.User
{
var StuId = base.ParmJObj.GetInt("StuId");
var CreateBy = base.ParmJObj.GetInt("CreateBy");
bool flag = studentModule.ForwardStudentModule(StuId, CreateBy, base.UserInfo.Id);
bool flag = studentModule.ForwardStudentModule(StuId.ToString(), CreateBy, base.UserInfo.Id);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 批量学员转交
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult BatchForwardStudent()
{
var StuIds = base.ParmJObj.GetStringValue("StuIds");
var CreateBy = base.ParmJObj.GetInt("CreateBy");
bool flag = studentModule.ForwardStudentModule(StuIds, CreateBy, base.UserInfo.Id);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......
......@@ -139,7 +139,7 @@ namespace Edu.WebApi.Timers
marketTimer = new System.Timers.Timer()
{
Interval = (1000 * 60) * (10) //10分钟执行一次
Interval = (1000 * 60) * (5) //5分钟执行一次
};
marketTimer.Elapsed += new System.Timers.ElapsedEventHandler(DealMarketConsultantData);
marketTimer.Enabled = true;
......@@ -217,22 +217,23 @@ namespace Edu.WebApi.Timers
{
if (Interlocked.Exchange(ref marketconsultant_Timer, 1) == 0)
{
var currentDate = DateTime.Now;
var today = DateTime.Now;
var currentDate = Common.ConvertHelper.FormatDate(today);
string cacheData = redis.Get(createMarkDataKey);
if (string.IsNullOrEmpty(cacheData))
{
redis.Set(createMarkDataKey, Common.ConvertHelper.FormatDate(currentDate));
cacheData = Common.ConvertHelper.FormatDate(currentDate);
redis.Set(createMarkDataKey, currentDate);
cacheData = currentDate;
}
if (!string.IsNullOrEmpty(cacheData) && cacheData != Common.ConvertHelper.FormatDate(currentDate))
if (!string.IsNullOrEmpty(cacheData) && cacheData != currentDate)
{
redis.Set(createMarkDataKey, Common.ConvertHelper.FormatDate(currentDate));
marketConsultantModule.CreateConsultantDataModule(currentDate);
marketConsultantModule.CreateMarketDataModule(currentDate);
marketConsultantModule.CreateConsultantDataModule(today);
marketConsultantModule.CreateMarketDataModule(today);
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);
studentStatModule.CreateStudentStaticModule(user, Common.ConvertHelper.FormatDate(today.AddDays(-1)), currentDate, isInit: false);
studentStatModule.CreateStudentMarketModule(user, Common.ConvertHelper.FormatDate(today.AddDays(-1)), currentDate, isInit: false);
studentStatModule.CreateStudentCompanyModule(user, Common.ConvertHelper.FormatDate(today.AddDays(-1)), currentDate, isInit: false);
redis.Set(createMarkDataKey, currentDate);
}
Interlocked.Exchange(ref marketconsultant_Timer, 0);
}
......
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