Commit 48e46747 authored by 吴春's avatar 吴春

解决冲突

parents 001bc0bd b1a3c582
......@@ -10,22 +10,34 @@ namespace Edu.Common.Enum.Exam
/// </summary>
public enum ExamTestStatusEnum
{
/// <summary>
/// 未开始
/// </summary>
[EnumField("未开始")]
NotStarted = 1,
/// <summary>
/// 已开始
/// </summary>
[EnumField("已开始")]
FinishStarted = 2,
/// <summary>
/// 已考试
/// </summary>
[EnumField("已考试")]
FinishTest = 1,
FinishTest = 3,
/// <summary>
/// 未考试
/// 缺考
/// </summary>
[EnumField("未考试")]
NotFinishTest = 2,
[EnumField("缺考")]
MissedTest = 4,
/// <summary>
/// 已阅卷
/// </summary>
[EnumField("已阅卷")]
FinishScoring = 3,
FinishScoring = 5,
}
}
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.WeChat
{
/// <summary>
/// 企业微信客户字段类型枚举
/// </summary>
public enum CustomerFieldInputTypeEnum
{
/// <summary>
/// 汉字
/// </summary>
[EnumField("汉字")]
Chinese = 1,
/// <summary>
/// 数字
/// </summary>
[EnumField("数字")]
Number = 2,
/// <summary>
/// 字母
/// </summary>
[EnumField("字母")]
Letter = 3,
/// <summary>
/// 符号
/// </summary>
[EnumField("符号")]
Symbol = 4
}
}
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.WeChat
{
/// <summary>
/// 企业微信客户字段类型枚举
/// </summary>
public enum CustomerFieldTypeEnum
{
/// <summary>
/// 单行文本
/// </summary>
[EnumField("单行文本")]
Text = 1,
/// <summary>
/// 多行文本
/// </summary>
[EnumField("多行文本")]
MText = 2,
/// <summary>
/// 单选
/// </summary>
[EnumField("单选")]
Radio = 3,
/// <summary>
/// 多选
/// </summary>
[EnumField("多选")]
MultiSelect = 4,
/// <summary>
/// 日期
/// </summary>
[EnumField("日期")]
Date = 5,
/// <summary>
/// 日期时间
/// </summary>
[EnumField("日期时间")]
Time = 6,
/// <summary>
/// 数值
/// </summary>
[EnumField("数值")]
Number = 7
}
}
......@@ -127,5 +127,10 @@ namespace Edu.Model.Entity.Exam
/// 题目分数
/// </summary>
public decimal Score { get; set; }
/// <summary>
/// 分组编号
/// </summary>
public int GId { get; set; }
}
}
using System;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Exam;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
......@@ -28,12 +30,12 @@ namespace Edu.Model.Entity.Exam
public string GroupName { get; set; }
/// <summary>
/// 问题类型编号
/// 问题类型编号【GroupType=1时使用】
/// </summary>
public int QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
/// 问题类型Key【GroupType=1时使用】
/// </summary>
public string QuestionTypeKey { get; set; }
......@@ -46,5 +48,15 @@ namespace Edu.Model.Entity.Exam
/// 分数
/// </summary>
public decimal GScore { get; set; }
/// <summary>
/// 组卷类型
/// </summary>
public ExamGroupTypeEnum GroupType { get; set; }
/// <summary>
/// 题目分类编号【GroupType=2时使用】
/// </summary>
public QuestionCategoryEnum CategoryId { get; set; }
}
}
using Edu.Common.Enum.Question;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -102,5 +103,15 @@ namespace Edu.Model.Entity.Exam
/// 审核和备注
/// </summary>
public string ExamineRemark { get; set; }
/// <summary>
/// 组卷类型
/// </summary>
public ExamGroupTypeEnum GroupType { get; set; }
/// <summary>
/// 试卷总分数
/// </summary>
public decimal PaperScore { get; set; }
}
}
......@@ -74,7 +74,7 @@ namespace Edu.Model.Entity.Exam
public int Status { get; set; }
/// <summary>
/// 考试状态,0-没考,1-已考
/// 考试状态(见枚举)
/// </summary>
public ExamTestStatusEnum ExamStatus { get; set; }
......
using Edu.Common.Enum;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using System;
using System.Collections.Generic;
......@@ -73,5 +74,10 @@ namespace Edu.Model.Entity.Exam
/// 模板题库编号
/// </summary>
public string TemplateBankIds { get; set; }
/// <summary>
/// 组卷类型
/// </summary>
public ExamGroupTypeEnum GroupType { get; set; }
}
}
\ No newline at end of file
using Edu.Common.Enum.WeChat;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.WeChat
{
/// <summary>
/// 企业微信客户字段扩展类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_WeChat_CustomerField
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 类型 枚举
/// </summary>
public CustomerFieldTypeEnum Type { get; set; }
/// <summary>
/// 字段名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 必填 1是
/// </summary>
public int Required { get; set; }
/// <summary>
/// 部门id (0表示通用)
/// </summary>
public int DeptId { get; set; }
/// <summary>
/// 字数
/// </summary>
public int WordNum { get; set; }
/// <summary>
/// 输入类型 多选 英文逗号分隔
/// </summary>
public string InputType { get; set; }
/// <summary>
/// 列表选项 json格式 key-value
/// </summary>
public string Options { get; set; }
/// <summary>
/// 小数位数
/// </summary>
public int Digits { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 是否启用 1是
/// </summary>
public int Enable { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 是否系统字段 1是
/// </summary>
public int IsSystem { get; set; }
/// <summary>
/// 是否默认字段 1是 (默认字段无法删除)
/// </summary>
public int IsDefault { get; set; }
/// <summary>
/// 是否锁定字段 1是 (锁定字段无法禁用)
/// </summary>
public int IsLock { get; set; }
}
}
using Edu.Common.Enum.WeChat;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.WeChat
{
/// <summary>
/// 企业微信客户阶段扩展类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_WeChat_CustomerStage
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 类型 1跟进阶段 2结束跟进
/// </summary>
public int Type { get; set; }
/// <summary>
/// 阶段名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 排序
/// </summary>
public int? Sort { get; set; }
/// <summary>
/// 结束跟进 原因选项 json格式
/// </summary>
public string Options { get; set; }
/// <summary>
/// 是否默认 1是 (默认表示无法修改Name)
/// </summary>
public int IsDefault { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
using Edu.Common.Enum.WeChat;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.WeChat
{
/// <summary>
/// 企业微信客户阶段流程扩展类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_WeChat_CustomerStageFlow
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 流程名称
/// </summary>
public string FlowName { get; set; }
/// <summary>
/// 适用部门Ids -1表示通用
/// </summary>
public string DeptIds { get; set; }
/// <summary>
/// 适用人员ids -1表示通用
/// </summary>
public string EmpIds { get; set; }
/// <summary>
/// 使用阶段 英文逗号分隔
/// </summary>
public string UseStage { get; set; }
/// <summary>
/// 选择输单原因 英文逗号分隔
/// </summary>
public string LoseCause { get; set; }
/// <summary>
/// 选择无效原因 英文逗号分隔
/// </summary>
public string InvalidCause { get; set; }
/// <summary>
/// 是否默认 1是 2否
/// </summary>
public int IsDefault { get; set; }
/// <summary>
/// 启用 1是 2否
/// </summary>
public int Enable { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
......@@ -11,13 +10,14 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public class ExamTemplate
{
/// <summary>
/// 问题类型编号
/// 问题类型编号【GroupType=1时使用】
/// </summary>
public int QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
/// 问题类型Key【GroupType=1时使用】
/// </summary>
public string QuestionTypeKey { get; set; }
......@@ -51,10 +51,6 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public List<DifficultyTypeItem> ChooseList { get; set; }
/// <summary>
/// 题目分类列表
/// </summary>
public List<CategoryItem> CategoryList { get; set; }
}
/// <summary>
......@@ -72,26 +68,4 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public int ChooseNum { get; set; }
}
/// <summary>
/// 题型分类
/// </summary>
public class CategoryItem
{
/// <summary>
/// 题型分类
/// </summary>
public QuestionCategoryEnum Category { get; set; }
/// <summary>
/// 选择题目数
/// </summary>
public int ChooseNum { get; set; }
/// <summary>
/// 难易程度选题【ChooseType=2时使用】
/// </summary>
public List<DifficultyTypeItem> ChooseList { get; set; }
}
}
using Edu.Model.Entity.Exam;
using Edu.Common.Enum.Exam;
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -46,9 +47,9 @@ namespace Edu.Model.ViewModel.Exam
public int GuestId { get; set; }
/// <summary>
/// 考试状态,0-没考,1-已考(查询条件的时候,1-未开始,2-已开始,3-已缺考,4-已完成)
/// 考试状态(见枚举)
/// </summary>
public int ExamStatus { get; set; }
public ExamTestStatusEnum ExamStatus { get; set; }
/// <summary>
/// 考试状态
......@@ -80,5 +81,20 @@ namespace Edu.Model.ViewModel.Exam
/// 账号编号
/// </summary>
public string QAccountIds { get; set; }
/// <summary>
/// 查询考试状态【1-未开始,2-进行中,3-已结束】
/// </summary>
public int QTestStatus { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string QStartTime { get; set; }
/// <summary>
/// 结束试卷
/// </summary>
public string QEndTime { get; set; }
}
}
......@@ -37,5 +37,14 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public string StuIcon { get; set; }
/// <summary>
/// 考试开始时间
/// </summary>
public DateTime ExamStartTime { get; set; }
/// <summary>
/// 考试结束时间
/// </summary>
public DateTime EndTime { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Sale;
using Edu.Model.Entity.WeChat;
namespace Edu.Model.ViewModel.WeChat
{
/// <summary>
/// 企业微信客户字段扩展类
/// </summary>
public class RB_WeChat_CustomerField_ViewModel : RB_WeChat_CustomerField
{
/// <summary>
/// 选项列表
/// </summary>
public List<CustomerOptions> OptionsList { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DeptName { get; set; }
}
/// <summary>
/// 选项列表
/// </summary>
public class CustomerOptions
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Sale;
using Edu.Model.Entity.WeChat;
namespace Edu.Model.ViewModel.WeChat
{
/// <summary>
/// 企业微信客户阶段流程扩展类
/// </summary>
public class RB_WeChat_CustomerStageFlow_ViewModel : RB_WeChat_CustomerStageFlow
{
/// <summary>
/// 阶段ID
/// </summary>
public int StageId { get; set; }
/// <summary>
/// 输单id
/// </summary>
public int LoseId { get; set; }
/// <summary>
/// 无效id
/// </summary>
public int InvalidId { get; set; }
/// <summary>
/// 阶段列表
/// </summary>
public List<string> StageList { get; set; }
/// <summary>
/// 部门/人员列表
/// </summary>
public List<DeptAndEmpModel> DeptEmpList { get; set; }
}
/// <summary>
/// 部门+人员
/// </summary>
public class DeptAndEmpModel {
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 类型 1部门 2人员
/// </summary>
public int Type { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Sale;
using Edu.Model.Entity.WeChat;
namespace Edu.Model.ViewModel.WeChat
{
/// <summary>
/// 企业微信客户阶段扩展类
/// </summary>
public class RB_WeChat_CustomerStage_ViewModel : RB_WeChat_CustomerStage
{
/// <summary>
/// 选项列表
/// </summary>
public List<CauseOptions> OptionsList { get; set; }
/// <summary>
/// 阶段ids
/// </summary>
public string StageIds { get; set; }
}
/// <summary>
/// 原因选项
/// </summary>
public class CauseOptions
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
}
}
......@@ -18,6 +18,7 @@ using Edu.Model.ViewModel.EduTask;
using Edu.Common.Enum.Finance;
using Edu.Repository.EduTask;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Course;
namespace Edu.Module.Exam
{
......@@ -309,6 +310,8 @@ namespace Edu.Module.Exam
{nameof(RB_Examination_Group_ViewModel.QuestionTypeKey),gitem.QuestionTypeKey },
{nameof(RB_Examination_Group_ViewModel.GSortNum),gitem.GSortNum },
{nameof(RB_Examination_Group_ViewModel.GScore),gitem.GScore },
{nameof(RB_Examination_Group_ViewModel.GroupType),gitem.GroupType },
{nameof(RB_Examination_Group_ViewModel.CategoryId),gitem.CategoryId },
};
flag = examination_GroupRepository.Update(fileds, new WhereHelper(nameof(RB_Examination_Group_ViewModel.GId), gitem.GId));
}
......@@ -324,6 +327,7 @@ namespace Edu.Module.Exam
foreach (var dItem in gitem.DetailsList)
{
dItem.PaperId = model.PaperId;
dItem.GId = gitem.GId;
if (dItem.Id > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
......@@ -347,6 +351,7 @@ namespace Edu.Module.Exam
{nameof(RB_Examination_Details_ViewModel.Category),dItem.Category },
{nameof(RB_Examination_Details_ViewModel.LevelType),dItem.LevelType },
{nameof(RB_Examination_Details_ViewModel.Score),dItem.Score },
{nameof(RB_Examination_Details_ViewModel.GId),dItem.GId },
};
flag = examination_DetailsRepository.Update(fileds, new WhereHelper(nameof(RB_Examination_Details_ViewModel.Id), dItem.Id));
}
......@@ -383,6 +388,7 @@ namespace Edu.Module.Exam
{nameof(RB_Examination_Template_ViewModel.TemplateDifficultyType),model.TemplateDifficultyType },
{nameof(RB_Examination_Template_ViewModel.TemplateData),model.TemplateData },
{nameof(RB_Examination_Template_ViewModel.TemplateBankIds),model.TemplateBankIds },
//{nameof(RB_Examination_Template_ViewModel.GroupType),model.GroupType },
};
flag = examination_TemplateRepository.Update(fileds, new WhereHelper(nameof(RB_Examination_Template_ViewModel.TemplateId), model.TemplateId));
}
......@@ -395,6 +401,7 @@ namespace Edu.Module.Exam
}
//获取问题列表
var questionList = new List<RB_Question_ViewModel>();
string Q_QuestionTypeIds = "";
if (model.TempDataList != null && model.TempDataList.Count > 0)
{
......@@ -403,32 +410,39 @@ namespace Edu.Module.Exam
questionList = questionRepository.GetQuestionListRepository(new RB_Question_ViewModel()
{
QBankIds = model.TemplateBankIds,
Q_QuestionTypeIds = Q_QuestionTypeIds
Q_QuestionTypeIds = model.GroupType == ExamGroupTypeEnum.QuestionType ? Q_QuestionTypeIds : "",
QCategoryId = model.GroupType == ExamGroupTypeEnum.QuestionClassify ? Q_QuestionTypeIds : "",
});
//文件夹
var paperModel = new RB_Examination_Paper_ViewModel()
var newPaperId = 0;
if (model.TemplateNum > 1)
{
PaperId = 0,
PaperName = model.TemplateName,
QuestionBandIds = model.TemplateBankIds,
DifficultyType = model.TemplateDifficultyType,
CreateTime = model.CreateTime,
CreateBy = model.CreateBy,
PublishCount = 0,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
GenerateType = 1,
CreateNum = model.TemplateNum,
PaperType = 1,
ParentId = model.ParentId,
IsOpen = model.IsOpen,
};
var newPaperId = examination_PaperRepository.Insert(paperModel);
paperModel.PaperId = newPaperId;
flag = newPaperId > 0;
if (paperModel.CreateNum > 0)
//文件夹
var paperModel = new RB_Examination_Paper_ViewModel()
{
PaperId = 0,
PaperName = model.TemplateName,
QuestionBandIds = model.TemplateBankIds,
DifficultyType = model.TemplateDifficultyType,
CreateTime = model.CreateTime,
CreateBy = model.CreateBy,
PublishCount = 0,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
GenerateType = 1,
CreateNum = model.TemplateNum,
PaperType = 1,
ParentId = model.ParentId,
IsOpen = model.IsOpen,
GroupType=model.GroupType,
};
newPaperId = examination_PaperRepository.Insert(paperModel);
paperModel.PaperId = newPaperId;
flag = newPaperId > 0;
}
if (model.TemplateNum > 0)
{
for (var i = 0; i < paperModel.CreateNum; i++)
for (var i = 0; i < model.TemplateNum; i++)
{
var subModel = new RB_Examination_Paper_ViewModel()
{
......@@ -446,8 +460,9 @@ namespace Edu.Module.Exam
PaperType = 2,
ParentId = newPaperId,
IsOpen = model.IsOpen,
GroupType=model.GroupType,
PaperScore=model.TemplateScore,
};
var newSubPaperId = examination_PaperRepository.Insert(subModel);
subModel.PaperId = newSubPaperId;
flag = newSubPaperId > 0;
......@@ -456,7 +471,15 @@ namespace Edu.Module.Exam
int G_Sort = 1;
foreach (var item in model.TempDataList)
{
var tempQuestioinList = questionList?.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId)?.ToList();
var tempQuestioinList = new List<RB_Question_ViewModel>();
if (model.GroupType == ExamGroupTypeEnum.QuestionType)
{
tempQuestioinList = questionList?.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId)?.ToList();
}
else if (model.GroupType == ExamGroupTypeEnum.QuestionClassify)
{
tempQuestioinList = questionList?.Where(qitem => qitem.Category.ToInt() == item.QuestionTypeId)?.ToList();
}
var subTempQuestionList = new List<RB_Question_ViewModel>();
//题库随机选题
if (item.ChooseType == 1)
......@@ -475,29 +498,26 @@ namespace Edu.Module.Exam
}
}
}
else if (item.ChooseType == 3)
{
if (item.CategoryList != null && item.CategoryList.Count > 0)
{
foreach (var subItem in item.CategoryList.Where(qitem => qitem.ChooseNum > 0))
{
var tempList = tempQuestioinList?.Where(qitem => qitem.Category == subItem.Category)?.OrderBy(qitem => Guid.NewGuid())?.Take(subItem.ChooseNum)?.ToList();
if (tempList != null && tempList.Count > 0)
{
subTempQuestionList.AddRange(tempList);
}
}
}
}
var groupModel = new RB_Examination_Group_ViewModel()
{
GId = 0,
PaperId = subModel.PaperId,
GroupName = !string.IsNullOrEmpty(item.QuestionDesc) ? item.QuestionDesc : item.QuestionTypeName,
GSortNum = G_Sort,
QuestionTypeId = item.QuestionTypeId,
GScore=item.QuestionScore,
QuestionTypeKey = item.QuestionTypeKey,
GroupType=model.GroupType,
};
if (model.GroupType == ExamGroupTypeEnum.QuestionType)
{
groupModel.QuestionTypeId = item.QuestionTypeId;
groupModel.CategoryId = 0;
}
else if (model.GroupType == ExamGroupTypeEnum.QuestionClassify)
{
groupModel.QuestionTypeId = 0;
groupModel.CategoryId = (QuestionCategoryEnum)item.QuestionTypeId;
}
G_Sort++;
var newGId = examination_GroupRepository.Insert(groupModel);
groupModel.GId = newGId;
......@@ -508,6 +528,7 @@ namespace Edu.Module.Exam
var detailsModel = new RB_Examination_Details_ViewModel()
{
Id = 0,
GId= groupModel.GId,
PaperId = subModel.PaperId,
BankId = qItem.BankId,
QuestionId = qItem.QuestionId,
......@@ -523,7 +544,7 @@ namespace Edu.Module.Exam
UpdateBy = model.CreateBy,
UpdateTime = model.CreateTime,
IsUpdateJobExam = qItem.IsUpdateJobExam,
Status = Common.Enum.DateStateEnum.Normal,
Status = DateStateEnum.Normal,
SortNum = Q_SortNum,
Answer = qItem.Answer,
IsMutex = qItem.IsMutex,
......@@ -569,16 +590,18 @@ namespace Edu.Module.Exam
if (model.PaperId > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Examination_Paper_ViewModel.PaperName),model.PaperName },
{nameof(RB_Examination_Paper_ViewModel.QuestionBandIds),model.QuestionBandIds },
{nameof(RB_Examination_Paper_ViewModel.DifficultyType),model.DifficultyType },
{nameof(RB_Examination_Paper_ViewModel.GenerateType),model.GenerateType },
{nameof(RB_Examination_Paper_ViewModel.CreateNum),model.CreateNum },
{nameof(RB_Examination_Paper_ViewModel.PaperType),model.PaperType },
{nameof(RB_Examination_Paper_ViewModel.ParentId),model.ParentId },
{nameof(RB_Examination_Paper_ViewModel.IsOpen),model.IsOpen }
};
{
{nameof(RB_Examination_Paper_ViewModel.PaperName),model.PaperName },
{nameof(RB_Examination_Paper_ViewModel.QuestionBandIds),model.QuestionBandIds },
{nameof(RB_Examination_Paper_ViewModel.DifficultyType),model.DifficultyType },
{nameof(RB_Examination_Paper_ViewModel.GenerateType),model.GenerateType },
{nameof(RB_Examination_Paper_ViewModel.CreateNum),model.CreateNum },
{nameof(RB_Examination_Paper_ViewModel.PaperType),model.PaperType },
{nameof(RB_Examination_Paper_ViewModel.ParentId),model.ParentId },
{nameof(RB_Examination_Paper_ViewModel.IsOpen),model.IsOpen },
{nameof(RB_Examination_Paper_ViewModel.GroupType),model.GroupType },
{nameof(RB_Examination_Paper_ViewModel.PaperScore),model.PaperScore },
};
flag = examination_PaperRepository.Update(fileds, new WhereHelper(nameof(RB_Examination_Paper_ViewModel.PaperId), model.PaperId));
}
else
......@@ -691,11 +714,10 @@ namespace Edu.Module.Exam
}
foreach (var gItem in extModel.GroupList)
{
gItem.DetailsList = detailsList?.Where(qitem => qitem.QuestionTypeId == gItem.QuestionTypeId)?.OrderBy(qitem => qitem.SortNum)?.ToList() ?? new List<RB_Examination_Details_ViewModel>();
gItem.DetailsList = detailsList?.Where(qitem => qitem.GId == gItem.GId)?.OrderBy(qitem => qitem.SortNum)?.ToList() ?? new List<RB_Examination_Details_ViewModel>();
if (gItem.DetailsList != null && gItem.DetailsList.Count > 0)
{
gItem.GScore = gItem?.DetailsList?.Sum(qitem => qitem.Score) ?? 0;
foreach (var sItem in gItem.DetailsList)
{
List<object> quesAnswerList = new List<object>();
......@@ -1062,7 +1084,7 @@ namespace Edu.Module.Exam
item.PaperId = model.PaperId;
item.Group_Id = model.Group_Id;
item.School_Id = model.School_Id;
item.ExamStatus = ExamTestStatusEnum.NotFinishTest;
item.ExamStatus = ExamTestStatusEnum.NotStarted;
examination_StudentRepository.Insert(item);
}
}
......@@ -1094,7 +1116,7 @@ namespace Edu.Module.Exam
if (dItem.Id == 0)
{
dItem.ExamStatus = ExamTestStatusEnum.NotFinishTest;
dItem.ExamStatus = ExamTestStatusEnum.NotStarted;
examination_StudentRepository.Insert(dItem);
}
else
......@@ -1307,6 +1329,7 @@ namespace Edu.Module.Exam
foreach (var sItem in stuTempList)
{
var questionModel = gItem?.DetailsList.Where(qitem => qitem.Id == sItem.DetailsId)?.FirstOrDefault();
ExamScore += questionModel.Score;
var QuestionContentObj = new object();
if (isShowAnswer)
{
......@@ -1416,6 +1439,7 @@ namespace Edu.Module.Exam
List<RB_Examination_StudentDetails_ViewModel> tempStudentList = new List<RB_Examination_StudentDetails_ViewModel>();
foreach (var sItem in tempDetailsList)
{
ExamScore += sItem.Score;
sItem.QuestionContentObj = analysisQuestion.ParsingQuestion(sItem.QuestionTypeKey, sItem.QuestionContent, isNoAnswer: true, isOptionRandom: examPublish.IsOptionRandom);
var qObj = new
{
......@@ -1438,8 +1462,6 @@ namespace Edu.Module.Exam
questionList.Add(qObj);
}
}
ExamScore += gItem.GScore;
paperTypeList.Add(new
{
gItem.GId,
......@@ -1463,40 +1485,25 @@ namespace Edu.Module.Exam
}
examPublish.GuestId = GuestId;
extModel.GuestId = GuestId;
int ExamStatusTemp = 0;//-1-缺考, 0-未开始,1-已开始,2-已考试,3-已阅卷
if (examPublish.ExamStartTime > System.DateTime.Now)
if (examinationStudentModel == null)
{
ExamStatusTemp = 0;
examinationStudentModel = new RB_Examination_Student_ViewModel
{
ExamStatus = ExamTestStatusEnum.NotStarted
};
}
else if (examPublish.ExamStartTime < System.DateTime.Now && examPublish.ExamEndTime > System.DateTime.Now)
if (examPublish.ExamStartTime < System.DateTime.Now && examPublish.ExamEndTime > System.DateTime.Now)
{
if (Convert.ToInt32(examinationStudentModel?.ExamStatus ?? ExamTestStatusEnum.NotFinishTest) == 2)
{
ExamStatusTemp = 1;
}
if (Convert.ToInt32(examinationStudentModel?.ExamStatus ?? ExamTestStatusEnum.NotFinishTest) == 1)
if (examinationStudentModel.ExamStatus != ExamTestStatusEnum.FinishTest && examinationStudentModel.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
ExamStatusTemp = 2;
}
if (Convert.ToInt32(examinationStudentModel?.ExamStatus ?? ExamTestStatusEnum.NotFinishTest) == 3)
{
ExamStatusTemp = 3;
examinationStudentModel.ExamStatus = ExamTestStatusEnum.FinishStarted;
}
}
else if (examPublish.ExamEndTime < System.DateTime.Now)
{
if (Convert.ToInt32(examinationStudentModel?.ExamStatus ?? ExamTestStatusEnum.NotFinishTest) == 2)
{
ExamStatusTemp = -1;
}
else if (Convert.ToInt32(examinationStudentModel?.ExamStatus ?? ExamTestStatusEnum.NotFinishTest) == 1)
{
ExamStatusTemp = 2;
}
else if (Convert.ToInt32(examinationStudentModel?.ExamStatus ?? ExamTestStatusEnum.NotFinishTest) == 3)
if (examinationStudentModel.ExamStatus != ExamTestStatusEnum.FinishTest && examinationStudentModel.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
ExamStatusTemp = 3;
examinationStudentModel.ExamStatus = ExamTestStatusEnum.MissedTest;
}
}
return new
......@@ -1524,7 +1531,7 @@ namespace Edu.Module.Exam
TotalScore = examinationStudentModel?.TotalScore ?? 0,
StuComment = examinationStudentModel?.StuComment ?? "",
ExamStatus = examinationStudentModel?.ExamStatus ?? 0,
ExamStatusTemp,
ExamStatusName = examinationStudentModel?.ExamStatus.ToName() ?? "",
Paper = paperObj
};
}
......
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using Edu.Cache.WeChat;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Finance;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.User;
using Edu.Model.ViewModel.WeChat;
using Edu.Repository.User;
using Edu.Repository.WeChat;
using Edu.ThirdCore.QYWinXin;
using Edu.ThirdCore.QYWinXin.Model;
using Newtonsoft.Json.Linq;
using Senparc.Weixin.Work.AdvancedAPIs.OAuth2;
using VT.FW.DB;
namespace Edu.Module.QYWeChat
{
/// <summary>
/// 企业微信客户管理处理类
/// </summary>
public class QYCustomerModule
{
/// <summary>
/// 客户字段
/// </summary>
private RB_WeChat_CustomerFieldRepository weChat_CustomerFieldRepository = new RB_WeChat_CustomerFieldRepository();
/// <summary>
/// 客户阶段
/// </summary>
private RB_WeChat_CustomerStageRepository weChat_CustomerStageRepository = new RB_WeChat_CustomerStageRepository();
/// <summary>
/// 阶段流程
/// </summary>
private RB_WeChat_CustomerStageFlowRepository weChat_CustomerStageFlowRepository = new RB_WeChat_CustomerStageFlowRepository();
/// <summary>
/// 部门
/// </summary>
private RB_DepartmentRepository departmentRepository = new RB_DepartmentRepository();
/// <summary>
/// 账号
/// </summary>
private RB_AccountRepository accountRepository = new RB_AccountRepository();
#region 客户字段
/// <summary>
/// 获取客户字段列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerField_ViewModel> GetCustomerFieldList(RB_WeChat_CustomerField_ViewModel dmodel) {
var list = weChat_CustomerFieldRepository.GetList(dmodel);
if (list.Any()) {
string deptIds = string.Join(",", list.Where(x => x.DeptId > 0).Select(x => x.DeptId));
List<RB_Department_ViewModel> dlist = new List<RB_Department_ViewModel>();
if (!string.IsNullOrEmpty(deptIds)) {
dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds });
}
foreach (var item in list) {
item.OptionsList = new List<CustomerOptions>();
if (!string.IsNullOrEmpty(item.Options)) {
item.OptionsList = JsonHelper.DeserializeObject<List<CustomerOptions>>(item.Options);
}
if (item.DeptId == 0)
{
item.DeptName = "-";
}
else {
item.DeptName = dlist.Where(x => x.DeptId == item.DeptId).FirstOrDefault()?.DeptName ?? "";
}
}
}
return list;
}
/// <summary>
/// 新增修改客户字段
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetCustomerFiledInfo(RB_WeChat_CustomerField_ViewModel demodel)
{
#region 验证字段名称重复
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper(){
FiledName=nameof(RB_WeChat_CustomerField_ViewModel.Name),
FiledValue= demodel.Name,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_WeChat_CustomerField_ViewModel.Status),
FiledValue= 0,
OperatorEnum=OperatorEnum.Equal
},
};
if (demodel.Id > 0) {
wheres.Add(new WhereHelper()
{
FiledName = nameof(RB_WeChat_CustomerField_ViewModel.Id),
FiledValue = demodel.Id,
OperatorEnum = OperatorEnum.NotEqual
});
}
if (weChat_CustomerFieldRepository.Exists(wheres))
{
return "字段名称已经存在,请核实后再试";
}
#endregion
if (demodel.Id > 0)
{
var oldModel = weChat_CustomerFieldRepository.GetEntity(demodel.Id);
if (oldModel.IsLock == 1 && demodel.Enable !=1) {
return "已锁定,无法修改启用状态";
}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_WeChat_CustomerField_ViewModel.Name), demodel.Name},
{ nameof(RB_WeChat_CustomerField_ViewModel.Required), demodel.Required},
{ nameof(RB_WeChat_CustomerField_ViewModel.WordNum), demodel.WordNum},
{ nameof(RB_WeChat_CustomerField_ViewModel.InputType), demodel.InputType},
{ nameof(RB_WeChat_CustomerField_ViewModel.Options), demodel.Options},
{ nameof(RB_WeChat_CustomerField_ViewModel.Digits), demodel.Digits},
{ nameof(RB_WeChat_CustomerField_ViewModel.Enable), demodel.Enable},
{ nameof(RB_WeChat_CustomerField_ViewModel.UpdateBy), demodel.UpdateBy},
{ nameof(RB_WeChat_CustomerField_ViewModel.UpdateTime), DateTime.Now}
};
if (oldModel.IsDefault != 1)
{
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.DeptId), demodel.DeptId);
}
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_WeChat_CustomerField_ViewModel.Id),
FiledValue= demodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = weChat_CustomerFieldRepository.Update(keyValues, wheres1);
return flag ? "" : "出错了,请联系管理员";
}
else {
//查询最大的排序
int MaxSort = weChat_CustomerFieldRepository.GetSortMax(demodel.Group_Id) + 1;
demodel.Sort = MaxSort;
bool flag = weChat_CustomerFieldRepository.Insert(demodel) > 0;
return flag ? "" : "出错了,请联系管理员";
}
}
/// <summary>
/// 修改字段状态
/// </summary>
/// <param name="type"></param>
/// <param name="filedId"></param>
/// <param name="sortFiledId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetCustomerFiledState(int type, int filedId, int sortFiledId, UserInfo userInfo)
{
//类型 1启用 2是否必填 3删除 4排序
var model = weChat_CustomerFieldRepository.GetEntity(filedId);
if (model == null) { return "字段不存在"; }
Dictionary<string, object> keyValues = new Dictionary<string, object>();
if (type == 1)
{
if (model.IsLock == 1) { return "该字段已锁定,无法修改启用状态"; }
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Enable), model.Enable == 1 ? 2 : 1);
}
else if (type == 2)
{
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Required), model.Required == 1 ? 2 : 1);
}
else if (type == 3)
{
if (model.IsDefault == 1) { return "该字段无法删除"; }
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Status), 1);
}
else if (type == 4) {
//排序
int Sort = 0;
if (sortFiledId > 0) {
//排此字段的后面
var sortModel = weChat_CustomerFieldRepository.GetEntity(sortFiledId);
Sort = sortModel.Sort;
}
// 此排序后面的字段排序都加1
weChat_CustomerFieldRepository.SetSortNumAdd(Sort, userInfo.Group_Id);
//当前字段的排序 = Sort +1
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Sort), Sort + 1);
}
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_WeChat_CustomerField_ViewModel.Id),
FiledValue=filedId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = weChat_CustomerFieldRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
#region 客户阶段
/// <summary>
/// 获取客户阶段列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStage_ViewModel> GetCustomerStageList(RB_WeChat_CustomerStage_ViewModel demodel)
{
var list = weChat_CustomerStageRepository.GetList(demodel);
if (list.Any()) {
foreach (var item in list)
{
item.OptionsList = new List<CauseOptions>();
if (!string.IsNullOrEmpty(item.Options))
{
item.OptionsList = JsonHelper.DeserializeObject<List<CauseOptions>>(item.Options);
}
}
}
return list;
}
/// <summary>
/// 新增修改客户阶段
/// </summary>
/// <param name="delist"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetCustomerStageInfo(List<RB_WeChat_CustomerStage_ViewModel> delist, UserInfo userInfo)
{
var oldList = weChat_CustomerStageRepository.GetList(new RB_WeChat_CustomerStage_ViewModel() { Group_Id = userInfo.Group_Id });
var delList = oldList.Where(x => !delist.Where(y => y.Id > 0).Select(y => y.Id).Contains(x.Id)).ToList();
#region 验证需删除的这些 是否有流程在使用
#endregion
try
{
foreach (var item in delist)
{
item.Status = 0;
item.Group_Id = userInfo.Group_Id;
item.CreateBy = userInfo.Id;
item.CreateTime = DateTime.Now;
item.UpdateBy = userInfo.Id;
item.UpdateTime = DateTime.Now;
if (item.Id > 0)
{
var oldModel = oldList.Where(x => x.Id == item.Id).FirstOrDefault();
if (oldModel == null)
{
//新增
weChat_CustomerStageRepository.Insert(item);
}
else
{
//修改
oldModel.Name = item.Name;
oldModel.Sort = item.Sort;
oldModel.Options = item.Options;
oldModel.IsDefault = item.IsDefault;
oldModel.UpdateBy = userInfo.Id;
oldModel.UpdateTime = DateTime.Now;
weChat_CustomerStageRepository.Update(oldModel);
}
}
else
{
//新增
weChat_CustomerStageRepository.Insert(item);
}
}
foreach (var item in delList)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_WeChat_CustomerStage_ViewModel.Status),1}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_WeChat_CustomerStage_ViewModel.Id),
FiledValue= item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
weChat_CustomerStageRepository.Update(keyValues, wheres);
}
#region 修改默认流程
var flowModel = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = userInfo.Group_Id, IsDefault = 1 }).FirstOrDefault();
if (flowModel != null) {
flowModel.UseStage = string.Join(",", delist.Where(x => x.Type == 1).OrderBy(x => x.Sort).Select(x => x.Id));
flowModel.LoseCause = string.Join(",", delist.Where(x => x.Name == "已输单" && x.Type == 2).FirstOrDefault().OptionsList.Select(x => x.Id));
flowModel.InvalidCause = string.Join(",", delist.Where(x => x.Name == "无效" && x.Type == 2).FirstOrDefault().OptionsList.Select(x => x.Id));
weChat_CustomerStageFlowRepository.Update(flowModel);
}
#endregion
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetCustomerStageInfo");
return "出错了,请联系管理员";
}
return "";
}
/// <summary>
/// 验证该客户阶段是否可以删除
/// </summary>
/// <param name="stageId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public bool ValidataCustomerStageDel(int stageId, int group_Id)
{
var list = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = group_Id, StageId = stageId });
if (list.Any())
{
return true;
}
else {
return false;
}
}
/// <summary>
/// 验证原因是否可以删除
/// </summary>
/// <param name="causeId"></param>
/// <param name="type"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public bool ValidataCustomerCauseDel(int causeId, int type, int group_Id)
{
if (type == 1)
{
var list = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = group_Id, LoseId = causeId });
return list.Any() ? true : false;
}
else {
var list = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = group_Id, InvalidId = causeId });
return list.Any() ? true : false;
}
}
#endregion
#region 客户阶段流程
/// <summary>
/// 获取客户阶段流程
/// </summary>
/// <param name="demdoel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStageFlow_ViewModel> GetCustomerStageFlowList(RB_WeChat_CustomerStageFlow_ViewModel demdoel)
{
var list = weChat_CustomerStageFlowRepository.GetList(demdoel);
if (list.Any()) {
//查询部门 / 人员列表
string deptIds = string.Join(",", list.Where(x => !string.IsNullOrEmpty(x.DeptIds) && x.DeptIds != "-1" && x.DeptIds != "0").Select(x => x.DeptIds));
string empIds = string.Join(",", list.Where(x => !string.IsNullOrEmpty(x.EmpIds) && x.EmpIds != "-1" && x.EmpIds != "0").Select(x => x.EmpIds));
List<RB_Department_ViewModel> deptList = new List<RB_Department_ViewModel>();
if (!string.IsNullOrEmpty(deptIds)) {
//查询部门
deptList = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = demdoel.Group_Id, QDeptIds = deptIds });
}
List<Employee_ViewModel> empList = new List<Employee_ViewModel>();
if (!string.IsNullOrEmpty(empIds)) {
empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = demdoel.Group_Id, QIds = empIds });
}
//查询阶段
string stageIds = string.Join(",", list.Select(x => x.UseStage));
var slist = weChat_CustomerStageRepository.GetList(new RB_WeChat_CustomerStage_ViewModel() { Group_Id = demdoel.Group_Id, StageIds = stageIds });
foreach (var item in list) {
item.DeptEmpList = new List<DeptAndEmpModel>();
if (!string.IsNullOrEmpty(item.DeptIds) && item.DeptIds != "-1" && item.DeptIds != "0") {
var dlist = deptList.Where(x => ("," + item.DeptIds + ",").Contains("," + x.DeptId + ",")).ToList();
if (dlist.Any()) {
item.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.DeptId,
Name = x.DeptName,
Type = 1
}));
}
}
if (!string.IsNullOrEmpty(item.EmpIds) && item.EmpIds != "-1" && item.EmpIds != "0") {
var dlist = empList.Where(x => ("," + item.EmpIds + ",").Contains("," + x.Id + ",")).ToList();
if (dlist.Any())
{
item.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.Id,
Name = x.EmployeeName,
Type = 2
}));
}
}
if (item.DeptIds == "-1" && item.EmpIds == "-1") {
//通用
item.DeptEmpList.Add(new DeptAndEmpModel()
{
Id = -1,
Name = "通用",
Type = 0
});
}
var sclist = slist.Where(x => ("," + item.UseStage + ",").Contains("," + x.Id + ",")).ToList();
item.StageList = sclist.OrderBy(x => x.Sort).Select(x => x.Name).ToList();
}
}
return list;
}
/// <summary>
/// 获取客户阶段流程详情
/// </summary>
/// <param name="flowId"></param>
/// <returns></returns>
public RB_WeChat_CustomerStageFlow_ViewModel GetCustomerStageFlowInfo(int flowId)
{
var model = weChat_CustomerStageFlowRepository.GetEntity<RB_WeChat_CustomerStageFlow_ViewModel>(flowId);
if (model == null) { return null; }
model.DeptEmpList = new List<DeptAndEmpModel>();
if (!string.IsNullOrEmpty(model.DeptIds) && model.DeptIds != "-1" && model.DeptIds != "0")
{
var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = model.Group_Id, QDeptIds = model.DeptIds });
if (dlist.Any())
{
model.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.DeptId,
Name = x.DeptName,
Type = 1
}));
}
}
if (!string.IsNullOrEmpty(model.EmpIds) && model.EmpIds != "-1" && model.EmpIds != "0")
{
var dlist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = model.Group_Id, QIds = model.EmpIds });
if (dlist.Any())
{
model.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.Id,
Name = x.EmployeeName,
Type = 2
}));
}
}
if (model.DeptIds == "-1" && model.EmpIds == "-1")
{
//通用
model.DeptEmpList.Add(new DeptAndEmpModel()
{
Id = -1,
Name = "通用",
Type = 0
});
}
return model;
}
/// <summary>
/// 保存客户阶段流程
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetCustomerStageFlowInfo(RB_WeChat_CustomerStageFlow_ViewModel demodel)
{
bool flag = true;
if (demodel.Id > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.FlowName), demodel.FlowName},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.DeptIds), demodel.DeptIds},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.EmpIds), demodel.EmpIds},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.UseStage), demodel.UseStage},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.LoseCause), demodel.LoseCause},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.InvalidCause), demodel.InvalidCause},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.UpdateBy), demodel.UpdateBy},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.UpdateTime), demodel.UpdateTime},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_WeChat_CustomerStageFlow_ViewModel.Id),
FiledValue= demodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
flag = weChat_CustomerStageFlowRepository.Update(keyValues, wheres);
}
else {
flag = weChat_CustomerStageFlowRepository.Insert(demodel) > 0;
}
return flag ? "" : "出错了,请联系管理员";
}
/// <summary>
/// 更新阶段流程状态
/// </summary>
/// <param name="flowId"></param>
/// <param name="type"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetCustomerStageFlowState(int flowId, int type, UserInfo userInfo)
{
var oldModel = weChat_CustomerStageFlowRepository.GetEntity(flowId);
if (oldModel == null) { return "流程不存在"; }
Dictionary<string, object> keyValues = new Dictionary<string, object>();
if (type == 1)
{
keyValues.Add(nameof(RB_WeChat_CustomerStageFlow_ViewModel.Enable), oldModel.Enable == 1 ? 2 : 1);//启用禁用
}
else if (type == 2)
{
keyValues.Add(nameof(RB_WeChat_CustomerStageFlow_ViewModel.Status), 1);//删除
}
else {
return "类型传递有误";
}
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_WeChat_CustomerStageFlow_ViewModel.Id),
FiledValue= flowId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = weChat_CustomerStageFlowRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
}
}
......@@ -143,7 +143,7 @@ namespace Edu.Module.Question
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<object> GetQuestionCategoryListModule(RB_Question_ViewModel query)
public List<object> GetQuestionTypeStaticListModule(RB_Question_ViewModel query)
{
List<object> list = new List<object>();
var dataList = questionRepository.GetQuestionStaticsListRepository(query);
......@@ -158,11 +158,12 @@ namespace Edu.Module.Question
{
var qType = questionTypeList?.Where(qitem => qitem.QId == item.QuestionTypeId)?.FirstOrDefault();
var diffTypeList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId)
.GroupBy(qitem =>new { qitem.DifficultyType })
.Select(qitem => new
{
qitem.DifficultyType,
DifficultyTypeName = qitem.DifficultyType.ToName(),
DifficultyTypeCount = qitem.QuestionCount,
qitem.Key.DifficultyType,
DifficultyTypeName = qitem.Key.DifficultyType.ToName(),
DifficultyTypeCount = qitem.Sum(sItem=>sItem.QuestionCount),
ChooseNum = 0
});
......@@ -190,22 +191,21 @@ namespace Edu.Module.Question
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<object> GetQuestionCategoryList_V2Module(RB_Question_ViewModel query)
public List<object> GetQuestionCategoryStaticListModule(RB_Question_ViewModel query)
{
List<object> list = new List<object>();
var dataList = questionRepository.GetQuestionStaticsListRepository(query);
if (dataList != null && dataList.Count > 0)
{
var questionTypeList = GetQuestionTypeListModule(new RB_Question_Type_ViewModel());
var groupList = dataList.GroupBy(qitem => new { qitem.QuestionTypeId, }).Select(qitem => new
var groupList = dataList.GroupBy(qitem => new { qitem.Category, }).Select(qitem => new
{
qitem.Key.QuestionTypeId
qitem.Key.Category
});
foreach (var item in groupList)
{
var qType = questionTypeList?.Where(qitem => qitem.QId == item.QuestionTypeId)?.FirstOrDefault();
var diffTypeList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId)
.GroupBy(qitem => new { qitem.QuestionTypeId,qitem.DifficultyType})
var diffTypeList = dataList.Where(qitem => qitem.Category == item.Category)
.GroupBy(qitem => new {qitem.DifficultyType})
.Select(qitem => new
{
qitem.Key.DifficultyType,
......@@ -213,41 +213,17 @@ namespace Edu.Module.Question
DifficultyTypeCount = qitem.Sum(c=>c.QuestionCount),
ChooseNum = 0
});
var categoryList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId).GroupBy(qitem => new { qitem.Category }).Select(qitem => new { qitem.Key.Category });
List<object> resultCategoryList = new List<object>();
foreach (var subItem in categoryList)
{
var tempCategoryList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId && qitem.Category == subItem.Category)?.ToList();
if (tempCategoryList != null && tempCategoryList.Count > 0)
{
var cObj = new
{
subItem.Category,
CategoryName = subItem.Category.ToName(),
QuestionTypeNum = tempCategoryList.Sum(qitem=>qitem.QuestionCount),
ChooseNum = 0,
ChooseList= tempCategoryList?.Select(qitem => new
{
qitem.DifficultyType,
DifficultyTypeName = qitem.DifficultyType.ToName(),
DifficultyTypeCount = qitem.QuestionCount,
ChooseNum = 0
})
};
resultCategoryList.Add(cObj);
}
}
var obj = new
{
item.QuestionTypeId,
QuestionTypeKey = qType?.Key,
QuestionTypeName = qType?.Name,
QuestionTypeId=item.Category,
QuestionTypeKey = "",
QuestionTypeName =item.Category.ToName(),
QuestionScore = 0,
QuestionDesc = "",
ChooseType = 1,
ChooseNum = 0,
QuestionTypeNum = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId).Sum(qitem => qitem.QuestionCount),
CategoryList= resultCategoryList,
QuestionTypeNum = dataList.Where(qitem => qitem.Category == item.Category).Sum(qitem => qitem.QuestionCount),
ChooseList = diffTypeList,
};
list.Add(obj);
......
using Edu.Common.Enum;
using Edu.Common.Enum.Exam;
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
......@@ -47,6 +48,35 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Publish_ViewModel.CreateBy), query.CreateBy);
}
if (!string.IsNullOrEmpty(query.QStartTime))
{
builder.AppendFormat(@" AND A.{0}>='{1}' ",nameof(RB_Examination_Publish_ViewModel.ExamStartTime),query.QStartTime);
}
if (!string.IsNullOrEmpty(query.QEndTime))
{
builder.AppendFormat(@" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), query.QEndTime);
}
if (query.QTestStatus > 0)
{
//未开始
if (query.QTestStatus == 1)
{
builder.AppendFormat(" AND A.{0}>'{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), Common.ConvertHelper.FormatTime(DateTime.Now));
}
//进行中
if (query.QTestStatus == 2)
{
builder.AppendFormat(" AND A.{0}<='{1}' AND '{1}'<=A.{2} ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime)
,Common.ConvertHelper.FormatTime(DateTime.Now)
,nameof(RB_Examination_Publish_ViewModel.ExamEndTime)
);
}
//已结束
if (query.QTestStatus == 3)
{
builder.AppendFormat(" AND A.{0}<'{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), Common.ConvertHelper.FormatTime(DateTime.Now));
}
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Examination_Publish_ViewModel.Id));
return GetPage<RB_Examination_Publish_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
......@@ -131,21 +161,21 @@ WHERE 1=1 and a.ExamineStatus=2 and b.ExamineStatus=2
}
if (query.ExamStatus > 0)
{
if (query.ExamStatus == 1)
if (query.ExamStatus == ExamTestStatusEnum.NotStarted)
{
builder.AppendFormat(" AND a.{0} > '{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
else if (query.ExamStatus == 2)
else if (query.ExamStatus == ExamTestStatusEnum.FinishStarted)
{
builder.AppendFormat(" AND a.{0} < '{1}' and a.{2} > '{1}' and c.{3}=2 ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamEndTime), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
builder.AppendFormat(" AND a.{0} < '{1}' and a.{2} > '{1}' and c.{3}=1 ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamEndTime), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
}
else if (query.ExamStatus == 3)
else if (query.ExamStatus == ExamTestStatusEnum.MissedTest)
{
builder.AppendFormat(" AND a.{0} < '{1}' and c.{2}=2 ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
builder.AppendFormat(" AND a.{0} < '{1}' and c.{2} NOT IN(3,5) ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
}
else if (query.ExamStatus == 4)
else if (query.ExamStatus == ExamTestStatusEnum.FinishTest)
{
builder.AppendFormat(" AND (c.{0}=1 or c.{0}=3)", nameof(RB_Examination_Publish_ViewModel.ExamStatus));
builder.AppendFormat(" AND c.{0} IN(3,5)", nameof(RB_Examination_Publish_ViewModel.ExamStatus));
}
}
}
......
......@@ -24,11 +24,12 @@ namespace Edu.Repository.Exam
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,c.ClassName,b.Mobile,s.StuIcon
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,c.ClassName,b.Mobile,s.StuIcon,p.ExamStartTime ,p.ExamEndTime AS EndTime
FROM RB_Examination_Student AS A LEFT JOIN rb_order_guest AS B ON A.GuestId=B.Id
LEFT JOIN rb_class as c on c.ClassId=a.ClassId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=a.GuestId
LEFT JOIN rb_student as s on s.StuId = sog.Student_Id
LEFT JOIN rb_class as c on c.ClassId=a.ClassId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=a.GuestId
LEFT JOIN rb_student as s on s.StuId = sog.Student_Id
LEFT JOIN rb_examination_publish AS p ON A.PublishId=P.Id
WHERE 1=1
");
if (query != null)
......
......@@ -44,6 +44,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND {0} IN({1}) ", nameof(RB_Question_ViewModel.QuestionTypeId), query.Q_QuestionTypeIds);
}
if (!string.IsNullOrEmpty(query.QCategoryId))
{
builder.AppendFormat(" AND {0} IN({1}) ", nameof(RB_Question_ViewModel.Category), query.QCategoryId);
}
return Get<RB_Question_ViewModel>(builder.ToString()).ToList();
}
}
......@@ -84,6 +88,7 @@ WHERE 1=1 AND `Status`=0
}
}
/// <summary>
/// 获取问题分页列表
/// </summary>
......
using Edu.Common.Enum;
using Edu.Model.Entity.WeChat;
using Edu.Model.ViewModel.WeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.WeChat
{
/// <summary>
/// 企业微信客户字段仓储层
/// </summary>
public class RB_WeChat_CustomerFieldRepository : BaseRepository<RB_WeChat_CustomerField>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerField_ViewModel> GetList(RB_WeChat_CustomerField_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_WeChat_CustomerField_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Enable > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Enable)} ={demodel.Enable}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Type)} ={(int)demodel.Type}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Name)} like @Name";
parameters.Add("Name", "%" + demodel.Name + "%");
}
string sql = $@"
SELECT * From RB_WeChat_CustomerField r
WHERE {where}
ORDER BY r.Sort asc, r.Id asc ";
return Get<RB_WeChat_CustomerField_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取最大排序
/// </summary>
/// <param name="group_Id"></param>
/// <returns></returns>
public int GetSortMax(int group_Id)
{
string sql = $@" select Max(Sort) from RB_WeChat_CustomerField where Group_Id ={group_Id}";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj);
}
/// <summary>
/// 此排序后面的字段排序都加1
/// </summary>
/// <param name="sort"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public bool SetSortNumAdd(int sort, int group_Id)
{
string sql = $@" update RB_WeChat_CustomerField set Sort = Sort +1 where Group_Id ={group_Id} and Sort >{sort}";
return Execute(sql) > 0;
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.WeChat;
using Edu.Model.ViewModel.WeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.WeChat
{
/// <summary>
/// 企业微信客户阶段流程仓储层
/// </summary>
public class RB_WeChat_CustomerStageFlowRepository : BaseRepository<RB_WeChat_CustomerStageFlow>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStageFlow_ViewModel> GetList(RB_WeChat_CustomerStageFlow_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Enable > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.Enable)} ={demodel.Enable}";
}
if (demodel.IsDefault > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} ={demodel.IsDefault}";
}
if (demodel.StageId > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} <>1";
where += $@" and FIND_IN_SET('{demodel.StageId}',r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.UseStage)})";
}
if (demodel.LoseId > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} <>1";
where += $@" and FIND_IN_SET('{demodel.LoseId}',r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.LoseCause)})";
}
if (demodel.InvalidId > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} <>1";
where += $@" and FIND_IN_SET('{demodel.InvalidId}',r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.InvalidCause)})";
}
if (!string.IsNullOrEmpty(demodel.FlowName))
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.FlowName)} like @FlowName";
parameters.Add("FlowName", "%" + demodel.FlowName + "%");
}
string sql = $@"
SELECT * From RB_WeChat_CustomerStageFlow r
WHERE {where}
ORDER BY r.Id desc ";
return Get<RB_WeChat_CustomerStageFlow_ViewModel>(sql, parameters).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.WeChat;
using Edu.Model.ViewModel.WeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.WeChat
{
/// <summary>
/// 企业微信客户阶段仓储层
/// </summary>
public class RB_WeChat_CustomerStageRepository : BaseRepository<RB_WeChat_CustomerStage>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStage_ViewModel> GetList(RB_WeChat_CustomerStage_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Type)} ={demodel.Type}";
}
if (!string.IsNullOrEmpty(demodel.StageIds))
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Id)} in({demodel.StageIds})";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Name)} like @Name";
parameters.Add("Name", "%" + demodel.Name + "%");
}
string sql = $@"
SELECT * From RB_WeChat_CustomerStage r
WHERE {where}
ORDER BY r.Type asc, r.Sort asc, r.Id asc ";
return Get<RB_WeChat_CustomerStage_ViewModel>(sql, parameters).ToList();
}
}
}
using Senparc.Weixin.Entities;
using Senparc.Weixin.Work.AdvancedAPIs.MailList.Member;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.ThirdCore.QYWinXin.Model
{
/// <summary>
/// GetMemberResult【QY移植修改】
/// </summary>
public class GetMemberResult_V2 : WorkJsonResult
{
/// <summary>
/// 员工UserID
/// </summary>
public string userid { get; set; }
/// <summary>
/// 成员名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 别名
/// </summary>
public string alias { get; set; }
/// <summary>
/// 成员所属部门id列表
/// </summary>
public long[] department { get; set; }
/// <summary>
/// 部门内的排序值,默认为0。数量必须和department一致,数值越大排序越前面。值范围是[0, 2^32)
/// </summary>
public int[] order { get; set; }
/// <summary>
/// 职位信息
/// </summary>
public string position { get; set; }
/// <summary>
/// 手机号码
/// </summary>
public string mobile { get; set; }
/// <summary>
/// 性别。gender=0表示男,=1表示女
/// </summary>
public int gender { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string email { get; set; }
/// <summary>
/// 上级字段,标识是否为上级。第三方暂不支持
/// </summary>
public int[] is_leader_in_dept { get; set; }
/// <summary>
/// 头像url。注:小图将url最后的"/0"改成"/64"
/// </summary>
public string avatar { get; set; }
/// <summary>
/// 激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业。 已激活代表已激活企业微信或已关注微信插件。未激活代表既未激活企业微信又未关注微信插件。
/// </summary>
public int status { get; set; }
/// <summary>
/// 座机。第三方暂不支持
/// </summary>
public string telephone { get; set; }
/// <summary>
/// 英文名。第三方暂不支持
/// </summary>
public string english_name { get; set; }
/// <summary>
/// 全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的open_userid是相同的,最多64个字节。仅第三方应用可获取
/// </summary>
public string open_userid { get; set; }
/// <summary>
/// 主部门
/// </summary>
public int main_department { get; set; }
/// <summary>
/// 扩展属性
/// </summary>
public Extattr extattr { get; set; }
/// <summary>
/// 启用/禁用成员,第三方不可获取。1表示启用成员,0表示禁用成员
/// </summary>
public int enable { get; set; }
/// <summary>
/// 关注微信插件的状态: 1=已关注,0=未关注
/// </summary>
public string wxplugin_status { get; set; }
/// <summary>
/// 员工个人二维码,扫描可添加为外部联系人(注意返回的是一个url,可在浏览器上打开该url以展示二维码);第三方仅通讯录应用可获取
/// </summary>
public string qr_code { get; set; }
}
}
......@@ -196,6 +196,27 @@ namespace Edu.ThirdCore.QYWinXin
return MailListApi.GetMember(accessTokenOrAppKey, userId);
}
/// <summary>
/// 获取成员(包含别名)
/// </summary>
/// <param name="accessTokenOrAppKey"></param>
/// <param name="userId"></param>
/// <returns></returns>
public static GetMemberResult_V2 GetMember_V2(string accessTokenOrAppKey, string userId) {
string url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=" + accessTokenOrAppKey + "&userid=" + userId;
string Rmsg = HttpHelper.HttpGet(url);
if (!string.IsNullOrEmpty(Rmsg))
{
var rmodel = JsonHelper.DeserializeObject<GetMemberResult_V2>(Rmsg);
return rmodel;
}
return new GetMemberResult_V2()
{
errcode = Senparc.Weixin.ReturnCode_Work.系统繁忙,
errmsg = "未请求到数据"
};
}
/// <summary>
/// 更新人员
/// </summary>
......
......@@ -2,14 +2,12 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Enum;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.LearningGarden;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
using Edu.Module.EduTask;
......@@ -57,11 +55,6 @@ namespace Edu.WebApi.Controllers.Applet
/// </summary>
private readonly Module.Exam.PaperModule paperModule = AOP.AOPHelper.CreateAOPObject<Module.Exam.PaperModule>();
/// <summary>
/// 学习园地处理类对象
/// </summary>
private readonly LearningGardenModule learningGardenModule = AOP.AOPHelper.CreateAOPObject<LearningGardenModule>();
#region 小程序首页
/// <summary>
/// 小程序首页
......@@ -123,30 +116,23 @@ namespace Edu.WebApi.Controllers.Applet
{
if (item.ExamStartTime > System.DateTime.Now)
{
item.ExamStatusStr = "未开始";
item.ExamStatus = ExamTestStatusEnum.NotStarted;
}
else if (item.ExamStartTime < System.DateTime.Now && item.ExamEndTime > System.DateTime.Now)
{
if (item.ExamStatus == 2)
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatusStr = "已开始";
}
if (item.ExamStatus == 1 || item.ExamStatus == 3)
{
item.ExamStatusStr = "完成";
item.ExamStatus = ExamTestStatusEnum.FinishStarted;
}
}
else if (item.ExamEndTime < System.DateTime.Now)
{
if (item.ExamStatus == 2)
{
item.ExamStatusStr = "缺考";
}
else if (item.ExamStatus == 1 || item.ExamStatus == 3)
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatusStr = "完成";
item.ExamStatus = ExamTestStatusEnum.MissedTest;
}
}
item.ExamStatusStr = item.ExamStatus.ToName();
}
}
}
......@@ -526,7 +512,7 @@ namespace Edu.WebApi.Controllers.Applet
var query = new Model.ViewModel.Exam.RB_Examination_Publish_ViewModel()
{
Group_Id = base.AppletUserInfo.Group_Id,
ExamStatus = base.ParmJObj.GetInt("ExamStatus", 0),
ExamStatus = (ExamTestStatusEnum)base.ParmJObj.GetInt("ExamStatus", 0),
GuestId = base.ParmJObj.GetInt("GuestId", 0),
};
var list = paperModule.GetGuestExaminationPublishPage(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
......@@ -534,28 +520,20 @@ namespace Edu.WebApi.Controllers.Applet
{
if (item.ExamStartTime > System.DateTime.Now)
{
item.ExamStatusStr = "未开始";
item.ExamStatus = ExamTestStatusEnum.NotStarted;
}
else if (item.ExamStartTime < System.DateTime.Now && item.ExamEndTime > System.DateTime.Now)
{
if (item.ExamStatus == 2)
{
item.ExamStatusStr = "已开始";
}
if (item.ExamStatus == 1 || item.ExamStatus == 3)
if (item.ExamStatus != ExamTestStatusEnum.FinishTest &&item.ExamStatus!= ExamTestStatusEnum.FinishScoring )
{
item.ExamStatusStr = "完成";
item.ExamStatus = ExamTestStatusEnum.FinishStarted;
}
}
else if (item.ExamEndTime < System.DateTime.Now)
{
if (item.ExamStatus == 2)
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatusStr = "缺考";
}
else if (item.ExamStatus == 1 || item.ExamStatus == 3)
{
item.ExamStatusStr = "完成";
item.ExamStatus = ExamTestStatusEnum.MissedTest;
}
}
}
......@@ -571,7 +549,7 @@ namespace Edu.WebApi.Controllers.Applet
ExamEndTime = Common.ConvertHelper.FormatTime(x.ExamEndTime),
x.ExamTimes,
x.ExamStatus,
x.ExamStatusStr
ExamStatusStr=x.ExamStatus.ToName()
});
pageModel.Count = rowsCount;
return ApiResult.Success(data: pageModel);
......@@ -671,84 +649,5 @@ namespace Edu.WebApi.Controllers.Applet
}
#endregion
#region 学习园地
/// <summary>
/// 获取学习园地分页
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GeLearningGardenPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_LearningGarden_ViewModel()
{
Title = base.ParmJObj.GetStringValue("Title"),
Group_Id = base.ParmJObj.GetInt("Group_Id")
};
query.Status = DateStateEnum.Normal;
query.Group_Id = base.AppletUserInfo.Group_Id;
var list = learningGardenModule.GetLearningGardenPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
List<object> resultList = new List<object>();
foreach (var item in list)
{
string CreateByName = "甲鹤教育";
if (item.CreateBy > 0)
{
CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
}
resultList.Add(new
{
item.Id,
item.Title,
item.Content,
item.Img,
item.Digest,
item.LinkUrl,
CreateByName,
CreateTime = Common.Plugin.StringHelper.DateFormatToString(item.CreateDate)
});
}
pageModel.Count = rowsCount;
pageModel.PageData = resultList;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 获取学习园地详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetLearningGarden()
{
var Id = base.ParmJObj.GetInt("Id", 0);
var extModel = learningGardenModule.GetLearningGardenModule(Id);
object obj = new object();
if (extModel != null && extModel.Id > 0)
{
string CreateByName = "甲鹤教育";
if (extModel.CreateBy > 0)
{
CreateByName = UserReidsCache.GetUserLoginInfo(extModel.CreateBy)?.AccountName ?? "";
}
obj = new
{
extModel.Id,
extModel.Title,
extModel.Img,
extModel.Content,
extModel.Digest,
extModel.LinkUrl,
CreateByName,
CreateTime = Common.Plugin.StringHelper.DateFormatToString(extModel.CreateDate)
};
}
return ApiResult.Success(data: obj);
}
#endregion
}
}
......@@ -241,13 +241,31 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 根据题库编号获取题库题型列表【试卷组卷使用】
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionTypeStaticList()
{
var query = new RB_Question_ViewModel()
{
CourseId = base.ParmJObj.GetInt("CourseId"),
Title = base.ParmJObj.GetStringValue("Title"),
PointName = base.ParmJObj.GetStringValue("PointName"),
BankId = base.ParmJObj.GetInt("BankId"),
QBankIds = base.ParmJObj.GetStringValue("QBankIds"),
};
var data = questionModule.GetQuestionTypeStaticListModule(query);
return ApiResult.Success(data: data);
}
/// <summary>
/// 根据题库编号获取题库题型分类列表【试卷组卷使用】
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionCategoryList()
public ApiResult GetQuestionCategoryStaticList()
{
var query = new RB_Question_ViewModel()
{
......@@ -257,11 +275,10 @@ namespace Edu.WebApi.Controllers.Course
BankId = base.ParmJObj.GetInt("BankId"),
QBankIds = base.ParmJObj.GetStringValue("QBankIds"),
};
var data = questionModule.GetQuestionCategoryList_V2Module(query);
var data = questionModule.GetQuestionCategoryStaticListModule(query);
return ApiResult.Success(data: data);
}
/// <summary>
/// 获取问题难易列表
/// </summary>
......
......@@ -2,6 +2,7 @@
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Exam;
......@@ -135,6 +136,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"),
};
if (string.IsNullOrEmpty(extModel.PaperName))
{
......@@ -156,12 +159,24 @@ namespace Edu.WebApi.Controllers.Exam
GId = jobj.GetInt("GId"),
PaperId = jobj.GetInt("PaperId"),
GroupName = jobj.GetStringValue("GroupName"),
QuestionTypeId = jobj.GetInt("QuestionTypeId"),
QuestionTypeKey = jobj.GetStringValue("QuestionTypeKey"),
GSortNum = gSortNum,
GScore = jobj.GetDecimal("GScore"),
DetailsList = new List<RB_Examination_Details_ViewModel>(),
GroupType=extModel.GroupType,
};
if (extModel.GroupType == ExamGroupTypeEnum.QuestionType)
{
gModel.QuestionTypeId = jobj.GetInt("QuestionTypeId");
gModel.QuestionTypeKey = jobj.GetStringValue("QuestionTypeKey");
gModel.CategoryId = 0;
}
else if (extModel.GroupType == ExamGroupTypeEnum.QuestionClassify)
{
gModel.QuestionTypeId = 0;
gModel.QuestionTypeKey = "";
gModel.CategoryId = (QuestionCategoryEnum)jobj.GetInt("QuestionTypeId");
}
gSortNum++;
string details = jobj.GetStringValue("DetailsList");
if (!string.IsNullOrEmpty(details))
......@@ -244,6 +259,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"),
};
string TemplateData = base.ParmJObj.GetStringValue("TemplateData");
if (!string.IsNullOrEmpty(TemplateData))
......@@ -565,6 +581,9 @@ 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"),
};
if (query.IsQueryAll != 1)
{
......@@ -575,6 +594,24 @@ namespace Edu.WebApi.Controllers.Exam
var list = paperModule.GetExaminationPublishPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
string TestStatusStr = "未开始";
var startTime = Convert.ToDateTime(item.ExamStartTime);
var endTime = Convert.ToDateTime(item.ExamEndTime);
//未开始
if (startTime > DateTime.Now)
{
TestStatusStr = "未开始";
}
//进行中
else if (startTime <= DateTime.Now && DateTime.Now <= endTime)
{
TestStatusStr = "进行中";
}
//已结束
else if (endTime < DateTime.Now)
{
TestStatusStr = "已结束";
}
var obj = new
{
item.Id,
......@@ -583,12 +620,14 @@ namespace Edu.WebApi.Controllers.Exam
CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "",
StartTime = Common.ConvertHelper.FormatTime(item.ExamStartTime),
EndTime = Common.ConvertHelper.FormatTime(item.ExamEndTime),
IsEdit = item.ExamStartTime > DateTime.Now ? 1 : 0,
item.ExamTimes,
item.StudentCount,
ReviewerName = item.Reviewer > 0 ? (UserReidsCache.GetUserLoginInfo(item.Reviewer)?.AccountName ?? "") : "",
item.Reviewer,
item.ExamineStatus,
ExamineStatusStr =paperModule.GetExamineStatusStr(item.ExamineStatus)
TestStatusStr,
ExamineStatusStr = paperModule.GetExamineStatusStr(item.ExamineStatus)
};
result.Add(obj);
}
......@@ -814,6 +853,24 @@ namespace Edu.WebApi.Controllers.Exam
var list = paperModule.GetExaminationStudentPageRepository(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
if (item.ExamStartTime > System.DateTime.Now)
{
item.ExamStatus = ExamTestStatusEnum.NotStarted;
}
else if (item.ExamStartTime < System.DateTime.Now && item.EndTime > System.DateTime.Now)
{
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatus = ExamTestStatusEnum.FinishStarted;
}
}
else if (item.EndTime < System.DateTime.Now)
{
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatus = ExamTestStatusEnum.MissedTest;
}
}
var obj = new
{
item.Id,
......@@ -830,6 +887,8 @@ namespace Edu.WebApi.Controllers.Exam
CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "",
item.ExamStatus,
ExamStatusName = item.ExamStatus.ToName(),
ExamStartTime = Common.ConvertHelper.FormatTime(item.ExamStartTime),
EndTime = Common.ConvertHelper.FormatTime(item.EndTime),
};
result.Add(obj);
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Finance;
using Edu.Common.Enum.WeChat;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.WeChat;
using Edu.Module.QYWeChat;
using Edu.Module.User;
using Edu.ThirdCore.QYWinXin;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.QYWeChat
{
/// <summary>
/// 企业微信客户管理接口
/// </summary>
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class QYCustomerController : BaseController
{
/// <summary>
/// 企业微信客户处理对象
/// </summary>
private readonly QYCustomerModule customerModule = new QYCustomerModule();
#region 客户字段
/// <summary>
/// 获取客户字段列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerFiledList() {
var userInfo = base.UserInfo;
var req = base.RequestParm;
RB_WeChat_CustomerField_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerField_ViewModel>(req.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
var list = customerModule.GetCustomerFieldList(demodel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Type,
TypeName = x.Type.ToName(),
x.Name,
x.Required,
x.DeptId,
x.DeptName,
x.WordNum,
x.InputType,
x.Options,
x.OptionsList,
x.Digits,
x.Sort,
x.Enable,
x.UpdateBy,
x.IsSystem,
x.IsDefault,
x.IsLock,
UpdateByName = Cache.User.UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName??"",
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"),
}));
}
/// <summary>
/// 保存客户字段
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerFiledInfo() {
var userInfo = base.UserInfo;
var req = base.RequestParm;
RB_WeChat_CustomerField_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerField_ViewModel>(req.Msg.ToString());
if (string.IsNullOrEmpty(demodel.Name)) {
return ApiResult.ParamIsNull("请传递字段名称");
}
if (demodel.OptionsList != null && demodel.OptionsList.Any()) {
demodel.Options = JsonHelper.Serialize(demodel.OptionsList);
}
demodel.Group_Id = userInfo.Group_Id;
demodel.Status = 0;
demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = userInfo.Id;
demodel.UpdateTime = DateTime.Now;
demodel.IsSystem = 0;
demodel.IsDefault = 0;
demodel.IsLock = 0;
string msg = customerModule.SetCustomerFiledInfo(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 设置客户字段状态
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerFiledState() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int Type = parms.GetInt("Type", 1);//类型 1启用 2是否必填 3删除 4排序
int FiledId = parms.GetInt("FiledId", 0);//字段id
int SortFiledId = parms.GetInt("SortFiledId", 0);
if (FiledId <= 0) {
return ApiResult.ParamIsNull("请传递字段id");
}
string msg = customerModule.SetCustomerFiledState(Type, FiledId, SortFiledId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 获取客户子段类型枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerFieldTypeEnumList()
{
var list = EnumHelper.EnumToList(typeof(CustomerFieldTypeEnum));
return ApiResult.Success("", list);
}
/// <summary>
/// 获取客户子段输入类型枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerFieldInputTypeEnumList()
{
var list = EnumHelper.EnumToList(typeof(CustomerFieldInputTypeEnum));
return ApiResult.Success("", list);
}
#endregion
#region 客户管理
#endregion
#region 客户阶段
/// <summary>
/// 获取客户阶段列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerStageList() {
var userInfo = base.UserInfo;
RB_WeChat_CustomerStage_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerStage_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
var list = customerModule.GetCustomerStageList(demodel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Type,
x.Name,
x.Sort,
x.OptionsList,
x.IsDefault
}));
}
/// <summary>
/// 新增修改客户阶段
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerStageInfo() {
var userInfo = base.UserInfo;
List<RB_WeChat_CustomerStage_ViewModel> delist = JsonHelper.DeserializeObject<List<RB_WeChat_CustomerStage_ViewModel>>(base.RequestParm.Msg.ToString());
if (delist == null || !delist.Any()) {
return ApiResult.ParamIsNull("数据为空");
}
foreach (var item in delist) {
if (string.IsNullOrEmpty(item.Name)) {
return ApiResult.ParamIsNull("请输入阶段名称");
}
item.Options = "";
if (item.Type == 2) {
if (item.OptionsList == null || !item.OptionsList.Any()) {
return ApiResult.ParamIsNull("原因选项不能为空");
}
item.Options = JsonHelper.Serialize(item.OptionsList);
}
}
string msg = customerModule.SetCustomerStageInfo(delist, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 验证该阶段是否可以删除
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult ValidataCustomerStageDel() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int StageId = parms.GetInt("StageId", 0);
if (StageId <= 0) {
return ApiResult.ParamIsNull();
}
bool flag = customerModule.ValidataCustomerStageDel(StageId, userInfo.Group_Id);
return ApiResult.Success("", new
{
UseState = flag
});
}
/// <summary>
/// 验证该阶段原因选项是否可以删除
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult ValidataCustomerCauseDel()
{
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int CauseId = parms.GetInt("CauseId", 0);
int Type = parms.GetInt("Type", 1);//类型 1输单 2无效
if (CauseId <= 0)
{
return ApiResult.ParamIsNull();
}
bool flag = customerModule.ValidataCustomerCauseDel(CauseId, Type, userInfo.Group_Id);
return ApiResult.Success("", new
{
UseState = flag
});
}
#region 客户阶段流程
/// <summary>
/// 获取客户阶段流程
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerStageFlowList() {
var userInfo = base.UserInfo;
RB_WeChat_CustomerStageFlow_ViewModel demdoel = JsonHelper.DeserializeObject<RB_WeChat_CustomerStageFlow_ViewModel>(base.RequestParm.Msg.ToString());
demdoel.Group_Id = userInfo.Group_Id;
var list = customerModule.GetCustomerStageFlowList(demdoel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.FlowName,
x.DeptIds,
x.EmpIds,
x.DeptEmpList,
x.UseStage,
x.StageList,
x.LoseCause,
x.InvalidCause,
x.IsDefault,
x.Enable,
UpdateByName = Cache.User.UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "",
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"),
}));
}
/// <summary>
/// 获取客户阶段流程详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerStageFlowInfo() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int FlowId = parms.GetInt("FlowId", 0);//流程id
if (FlowId <= 0) {
return ApiResult.ParamIsNull();
}
var model = customerModule.GetCustomerStageFlowInfo(FlowId);
if (model == null || model.Group_Id != userInfo.Group_Id) { return ApiResult.Failed("流程不存在"); }
return ApiResult.Success("", new
{
model.Id,
model.FlowName,
model.DeptIds,
model.EmpIds,
model.DeptEmpList,
model.UseStage,
model.LoseCause,
model.InvalidCause,
model.IsDefault,
model.Enable,
});
}
/// <summary>
/// 保存客户阶段流程
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerStageFlowInfo() {
var userInfo = base.UserInfo;
RB_WeChat_CustomerStageFlow_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerStageFlow_ViewModel>(base.RequestParm.Msg.ToString());
if (string.IsNullOrEmpty(demodel.FlowName)) {
return ApiResult.ParamIsNull("请输入流程名称");
}
if (demodel.DeptEmpList == null || !demodel.DeptEmpList.Any()) {
return ApiResult.ParamIsNull("请选择适用的部门/成员");
}
demodel.DeptIds = "-1";
demodel.EmpIds = "-1";
if (demodel.DeptEmpList.Where(x => x.Type == 1).Any()) {
demodel.DeptIds = string.Join(",", demodel.DeptEmpList.Where(x => x.Type == 1).Select(x => x.Id));
}
if (demodel.DeptEmpList.Where(x => x.Type == 2).Any()) {
demodel.EmpIds = string.Join(",", demodel.DeptEmpList.Where(x => x.Type == 2).Select(x => x.Id));
}
if (string.IsNullOrEmpty(demodel.UseStage)) {
return ApiResult.ParamIsNull("请选择适用阶段");
}
demodel.LoseCause ??= "";
demodel.InvalidCause ??= "";
demodel.IsDefault = 2;
demodel.Enable = 2;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = userInfo.Id;
demodel.UpdateTime = DateTime.Now;
string msg = customerModule.SetCustomerStageFlowInfo(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 设置客户阶段流程状态
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerStageFlowState() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int FlowId = parms.GetInt("FlowId", 0);//流程id
int Type = parms.GetInt("Type", 1);//类型 1启用禁用 2删除
if (FlowId <= 0) {
return ApiResult.ParamIsNull("请传递流程ID");
}
string msg = customerModule.SetCustomerStageFlowState(FlowId, Type, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
#endregion
}
}
......@@ -189,6 +189,19 @@ namespace Edu.WebApi.Controllers.QYWeChat
string ContactName = ContactModel?.external_contact?.name ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##客户名称##", ContactName);
}
if (welcomeModel.Content.Contains("##员工姓名##"))
{
//替换员工姓名
welcomeModel.Content = welcomeModel.Content.Replace("##员工姓名##", empModel.EmployeeName);
}
if (welcomeModel.Content.Contains("##员工别名##"))
{
//替换客户名称
var MemberModel = QYWeiXinHelper.GetMember_V2(token, UserID);
string Alias = MemberModel?.alias ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##员工别名##", Alias);
}
//开始状态欢迎语 掉推送接口
string RMsg = weChatModule.SendNewCustomerWelcome(token, WelcomeCode, welcomeModel);
//处理消息
......@@ -223,6 +236,19 @@ namespace Edu.WebApi.Controllers.QYWeChat
welcomeModel.Content = welcomeModel.Content.Replace("##客户名称##", ContactName);
}
if (welcomeModel.Content.Contains("##员工姓名##"))
{
//替换员工姓名
welcomeModel.Content = welcomeModel.Content.Replace("##员工姓名##", empModel.EmployeeName);
}
if (welcomeModel.Content.Contains("##员工别名##"))
{
//替换客户名称
var MemberModel = QYWeiXinHelper.GetMember_V2(token, UserID);
string Alias = MemberModel?.alias ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##员工别名##", Alias);
}
//开始状态欢迎语 掉推送接口
string RMsg = weChatModule.SendNewCustomerWelcome(token, WelcomeCode, welcomeModel);
//处理消息
......@@ -327,6 +353,19 @@ namespace Edu.WebApi.Controllers.QYWeChat
welcomeModel.Content = welcomeModel.Content.Replace("##客户名称##", ContactName);
}
if (welcomeModel.Content.Contains("##员工姓名##"))
{
//替换员工姓名
welcomeModel.Content = welcomeModel.Content.Replace("##员工姓名##", empModel.EmployeeName);
}
if (welcomeModel.Content.Contains("##员工别名##"))
{
//替换客户名称
var MemberModel = QYWeiXinHelper.GetMember_V2(token, UserID);
string Alias = MemberModel?.alias ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##员工别名##", Alias);
}
//开始状态欢迎语 掉推送接口
string RMsg = weChatModule.SendNewCustomerWelcome(token, WelcomeCode, welcomeModel);
//处理消息
......
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