Commit efdaa7ce authored by liudong1993's avatar liudong1993

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

parents 2db27087 18c8f1bc
...@@ -309,7 +309,9 @@ namespace Edu.Common ...@@ -309,7 +309,9 @@ namespace Edu.Common
} }
} }
/// <summary>
/// 是否发送短信
/// </summary>
public static int IsSendMsg public static int IsSendMsg
{ {
get get
...@@ -333,5 +335,17 @@ namespace Edu.Common ...@@ -333,5 +335,17 @@ namespace Edu.Common
return fileExportPath; return fileExportPath;
} }
} }
/// <summary>
/// 退课流程编号
/// </summary>
public static int BackClassFlowId
{
get
{
int.TryParse(ReadConfigKey("BackClassFlowId"), out int BackClassFlowId);
return BackClassFlowId;
}
}
} }
} }
\ No newline at end of file
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.Course
{
/// <summary>
/// 退课状态枚举
/// </summary>
public enum BackClassAuditStatusEnum
{
/// <summary>
/// 审核中
/// </summary>
[EnumField("审核中")]
InReview = 1,
/// <summary>
/// 通过
/// </summary>
[EnumField("通过")]
Pass = 2,
/// <summary>
/// 驳回
/// </summary>
[EnumField("驳回")]
Rejected = 3,
/// <summary>
/// 作废
/// </summary>
[EnumField("作废")]
Delete = 4,
}
}
\ No newline at end of file
...@@ -32,7 +32,7 @@ namespace Edu.Model.Entity.Course ...@@ -32,7 +32,7 @@ namespace Edu.Model.Entity.Course
public string GuestName { get; set; } public string GuestName { get; set; }
/// <summary> /// <summary>
/// 状态 1正常 2退学 /// 状态 1正常 2退学 3-申请中,4-驳回申请
/// </summary> /// </summary>
public int GuestState { get; set; } public int GuestState { get; set; }
......
using System; using Edu.Common.Enum.Course;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using VT.FW.DB; using VT.FW.DB;
...@@ -75,7 +76,7 @@ namespace Edu.Model.Entity.Course ...@@ -75,7 +76,7 @@ namespace Edu.Model.Entity.Course
/// <summary> /// <summary>
/// 审核状态 /// 审核状态
/// </summary> /// </summary>
public int AuditStatus { get; set; } public BackClassAuditStatusEnum AuditStatus { get; set; }
/// <summary> /// <summary>
/// 抄送人(多个逗号分隔) /// 抄送人(多个逗号分隔)
......
...@@ -24,5 +24,21 @@ namespace Edu.Model.ViewModel.Course ...@@ -24,5 +24,21 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public string BirthDay { get; set; } public string BirthDay { get; set; }
/// <summary>
/// 学员状态
/// </summary>
public string GuestStateStr
{
get { string str = "";
switch (this.GuestState)
{
case 1: str = "正常";break;
case 2: str = "退学"; break;
case 3: str = "申请退学中"; break;
case 4: str = "驳回申请"; break;
}
return str;
}
}
} }
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ namespace Edu.Module.Course ...@@ -20,7 +20,7 @@ namespace Edu.Module.Course
/// <summary> /// <summary>
/// 订单处理类 /// 订单处理类
/// </summary> /// </summary>
public class OrderModule public partial class OrderModule
{ {
/// <summary> /// <summary>
/// 订单 /// 订单
...@@ -189,7 +189,7 @@ namespace Edu.Module.Course ...@@ -189,7 +189,7 @@ namespace Edu.Module.Course
if (demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum){ if (demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum){
return ApiResult.Failed("应收总额不正确"); return ApiResult.Failed("应收总额不正确");
} }
var trans = classRepository.DbTransaction; var trans = orderRepository.DbTransaction;
try try
{ {
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>() {
...@@ -549,7 +549,6 @@ namespace Edu.Module.Course ...@@ -549,7 +549,6 @@ namespace Edu.Module.Course
{ {
spList = class_StepPriceRepository.GetClassStepPriceListRepository(new RB_Class_StepPrice_ViewModel() { ClassId = demodel.ClassId }); spList = class_StepPriceRepository.GetClassStepPriceListRepository(new RB_Class_StepPrice_ViewModel() { ClassId = demodel.ClassId });
} }
return true; return true;
} }
......
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.Course;
using Edu.Repository.Course;
using Edu.Repository.Flow;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace Edu.Module.Course
{
/// <summary>
/// 订单处理类
/// </summary>
public partial class OrderModule
{
/// <summary>
/// 学员退课单据仓储层对象
/// </summary>
private readonly RB_Student_BackClassRepository student_BackClassRepository = new RB_Student_BackClassRepository();
/// <summary>
/// 退款单据审核人员信息仓储层对象
/// </summary>
private readonly RB_Student_BackRelevanceRepository student_BackRelevanceRepository = new RB_Student_BackRelevanceRepository();
/// <summary>
/// 学员退课单据审核记录仓储层对象
/// </summary>
private readonly RB_Student_BackRecordRepository student_BackRecordRepository = new RB_Student_BackRecordRepository();
/// <summary>
/// 流程仓储层对象
/// </summary>
private readonly RB_FlowRepository flowRepository = new RB_FlowRepository();
/// <summary>
/// 创建退课流程
/// </summary>
/// <param name="GuestId"></param>
/// <param name="OrderId"></param>
/// <param name="reason"></param>
/// <param name="userinfo"></param>
/// <param name="message"></param>
/// <returns></returns>
public virtual bool CreateBackClassApplyModule(int GuestId,int OrderId,string reason, UserInfo userinfo,out string message)
{
bool flag;
message = "";
var guestModel = order_GuestRepository.GetEntity(GuestId);
var orderModel = orderRepository.GetEntity(OrderId);
if (guestModel == null)
{
message = "旅客信息不正确!";
return false;
}
if (orderModel == null)
{
message = "订单信息不正确!";
return false;
}
//班级实体类
var classModel = classRepository.GetEntity(orderModel.ClassId);
if (classModel == null)
{
message = "未找到对应的班级信息!";
return false;
}
//获取退课流程
var flowModel = flowRepository.GetFlowRepository(Common.Config.BackClassFlowId);
if (flowModel == null)
{
message = "未配置退课流程!";
return false;
}
//获取教师实体信息
var teacherModel = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
AccountId = classModel.Teacher_Id,
AccountType = Common.Enum.User.AccountTypeEnum.Teacher
})?.FirstOrDefault();
var totalBackCount = student_BackClassRepository.GetStudentBackClassNumRepository();
string backNum;
if (totalBackCount < 10000)
{
backNum= String.Format("{0:00000}", totalBackCount);
}
else
{
backNum = totalBackCount.ToString();
}
var teacherId = teacherModel?.Id ?? 0;
var backClassModel = new RB_Student_BackClass_ViewModel()
{
BackId = 0,
AuditStatus = Common.Enum.Course.BackClassAuditStatusEnum.InReview,
BackMoney = 0,
BackNum = "T" + backNum,
ClassId = orderModel.ClassId,
CreateBy = userinfo.Id,
CreateTime = DateTime.Now,
FinishHours = 0,
Group_Id = userinfo.Group_Id,
GuestId = GuestId,
SchoolId = guestModel.School_Id,
StudentId = 0,
TeacherId = teacherId
};
var newBackId = student_BackClassRepository.Insert(backClassModel);
backClassModel.BackId = newBackId;
flag = newBackId > 0;
foreach (var item in flowModel.FlowNodeList)
{
if (item.FlowAduitList != null && item.FlowAduitList.Count > 0)
{
foreach (var subItem in item.FlowAduitList)
{
//指定人员
if (subItem.AuditType == 1)
{
}
//指定角色
else if (subItem.AuditType == 2)
{
}
}
}
}
return flag;
}
}
}
...@@ -30,9 +30,8 @@ namespace Edu.Module.Public ...@@ -30,9 +30,8 @@ namespace Edu.Module.Public
/// <returns></returns> /// <returns></returns>
public bool AddOrUpdateFileStore(RB_File_Store model) public bool AddOrUpdateFileStore(RB_File_Store model)
{ {
bool result = false; bool result;
int id;
int id = 0;
if (model.ID == 0) if (model.ID == 0)
{ {
id = storeRepository.Insert(model); id = storeRepository.Insert(model);
...@@ -48,11 +47,11 @@ namespace Edu.Module.Public ...@@ -48,11 +47,11 @@ namespace Edu.Module.Public
{ {
Dictionary<string, object> fileds = new Dictionary<string, object>() { { nameof(RB_File_Store.IsDefault), 0 }, }; Dictionary<string, object> fileds = new Dictionary<string, object>() { { nameof(RB_File_Store.IsDefault), 0 }, };
List<WhereHelper> whereHelpers = new List<WhereHelper>() List<WhereHelper> whereHelpers = new List<WhereHelper>()
{ {
new WhereHelper(){ FiledName=nameof(RB_File_Store.Group_Id),FiledValue=model.Group_Id ,OperatorEnum=OperatorEnum.Equal}, new WhereHelper(){ FiledName=nameof(RB_File_Store.Group_Id),FiledValue=model.Group_Id ,OperatorEnum=OperatorEnum.Equal},
new WhereHelper(){ FiledName=nameof(RB_File_Store.School_Id),FiledValue=model.School_Id, OperatorEnum=OperatorEnum.Equal }, new WhereHelper(){ FiledName=nameof(RB_File_Store.School_Id),FiledValue=model.School_Id, OperatorEnum=OperatorEnum.Equal },
new WhereHelper(){ FiledName=nameof(RB_File_Store.ID),FiledValue=id, OperatorEnum=OperatorEnum.NotEqual }, new WhereHelper(){ FiledName=nameof(RB_File_Store.ID),FiledValue=id, OperatorEnum=OperatorEnum.NotEqual },
}; };
storeRepository.Update(fileds, whereHelpers); storeRepository.Update(fileds, whereHelpers);
} }
return result; return result;
......
...@@ -45,7 +45,6 @@ namespace Edu.Module.System ...@@ -45,7 +45,6 @@ namespace Edu.Module.System
public List<RB_Flow_ViewModel> GetFlowPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Flow_ViewModel query) public List<RB_Flow_ViewModel> GetFlowPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Flow_ViewModel query)
{ {
var list = flowRepository.GetFlowPageListRepository(pageIndex, pageSize, out rowsCount, query); var list = flowRepository.GetFlowPageListRepository(pageIndex, pageSize, out rowsCount, query);
return list; return list;
} }
...@@ -56,23 +55,7 @@ namespace Edu.Module.System ...@@ -56,23 +55,7 @@ namespace Edu.Module.System
/// <returns></returns> /// <returns></returns>
public RB_Flow_ViewModel GetFlowModule(object FlowId) public RB_Flow_ViewModel GetFlowModule(object FlowId)
{ {
var extModel = flowRepository.GetEntity<RB_Flow_ViewModel>(FlowId); return flowRepository.GetFlowRepository(FlowId);
if (extModel != null)
{
if (extModel.FlowId > 0)
{
var auditList = flow_AduitInfoRepository.GetFlowAduitInfoListRepository(new RB_Flow_AduitInfo_ViewModel() { FlowId = extModel.FlowId });
extModel.FlowNodeList = flow_NodeRepository.GetFlowNodeListRepository(new RB_Flow_Node_ViewModel() { FlowId = extModel.FlowId });
if (extModel.FlowNodeList != null && extModel.FlowNodeList.Count > 0)
{
foreach (var item in extModel.FlowNodeList)
{
item.FlowAduitList = auditList?.Where(qitem => qitem.NodeId == item.NodeId)?.ToList();
}
}
}
}
return extModel;
} }
......
...@@ -43,7 +43,7 @@ namespace Edu.Repository.Course ...@@ -43,7 +43,7 @@ namespace Edu.Repository.Course
} }
if (!string.IsNullOrWhiteSpace(query.EndDate)) if (!string.IsNullOrWhiteSpace(query.EndDate))
{ {
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d') ", nameof(RB_Class_Check_ViewModel.CreateTime), query.EndDate); builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%Y-%m-%d')<=DATE_FORMAT('{1}','%Y-%m-%d') ", nameof(RB_Class_Check_ViewModel.CreateTime), query.EndDate);
} }
} }
......
...@@ -34,5 +34,21 @@ WHERE 1=1 ...@@ -34,5 +34,21 @@ WHERE 1=1
} }
return GetPage<RB_Student_BackClass_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList(); return GetPage<RB_Student_BackClass_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
} }
/// <summary>
/// 获取总退课条数
/// </summary>
/// <returns></returns>
public int GetStudentBackClassNumRepository()
{
int result = 0;
string sql = "SELECT COUNT(1) FROM RB_Student_BackClass ";
var obj = base.ExecuteScalar(sql);
if (obj != null)
{
Int32.TryParse(obj.ToString(), out result);
}
return result + 1;
}
} }
} }
\ No newline at end of file
...@@ -13,6 +13,16 @@ namespace Edu.Repository.Flow ...@@ -13,6 +13,16 @@ namespace Edu.Repository.Flow
/// </summary> /// </summary>
public class RB_FlowRepository : BaseRepository<RB_Flow> public class RB_FlowRepository : BaseRepository<RB_Flow>
{ {
/// <summary>
/// 流程节点仓储层对象
/// </summary>
private readonly RB_Flow_NodeRepository flow_NodeRepository = new RB_Flow_NodeRepository();
/// <summary>
/// 流程节点审核人
/// </summary>
private readonly RB_Flow_AduitInfoRepository flow_AduitInfoRepository = new RB_Flow_AduitInfoRepository();
/// <summary> /// <summary>
/// 获取流程设置分页列表 /// 获取流程设置分页列表
/// </summary> /// </summary>
...@@ -39,5 +49,31 @@ WHERE 1=1 ...@@ -39,5 +49,31 @@ WHERE 1=1
} }
return GetPage<RB_Flow_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList(); return GetPage<RB_Flow_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
} }
/// <summary>
/// 获取流程信息
/// </summary>
/// <param name="FlowId"></param>
/// <returns></returns>
public RB_Flow_ViewModel GetFlowRepository(object FlowId)
{
var extModel = base.GetEntity<RB_Flow_ViewModel>(FlowId);
if (extModel != null)
{
if (extModel.FlowId > 0)
{
var auditList = flow_AduitInfoRepository.GetFlowAduitInfoListRepository(new RB_Flow_AduitInfo_ViewModel() { FlowId = extModel.FlowId });
extModel.FlowNodeList = flow_NodeRepository.GetFlowNodeListRepository(new RB_Flow_Node_ViewModel() { FlowId = extModel.FlowId });
if (extModel.FlowNodeList != null && extModel.FlowNodeList.Count > 0)
{
foreach (var item in extModel.FlowNodeList)
{
item.FlowAduitList = auditList?.Where(qitem => qitem.NodeId == item.NodeId)?.ToList();
}
}
}
}
return extModel;
}
} }
} }
...@@ -36,7 +36,7 @@ WHERE 1=1 ...@@ -36,7 +36,7 @@ WHERE 1=1
} }
if (query.AccountType > 0) if (query.AccountType > 0)
{ {
builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.AccountType), query.AccountType); builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.AccountType), (int)query.AccountType);
} }
if (query.School_Id > 0) if (query.School_Id > 0)
{ {
...@@ -81,7 +81,7 @@ WHERE 1=1 ...@@ -81,7 +81,7 @@ WHERE 1=1
} }
if (query.AccountType > 0) if (query.AccountType > 0)
{ {
builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.AccountType), query.AccountType); builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.AccountType), (int)query.AccountType);
} }
if (query.School_Id > 0) if (query.School_Id > 0)
{ {
......
...@@ -368,7 +368,8 @@ namespace Edu.WebApi.Controllers.Course ...@@ -368,7 +368,8 @@ namespace Edu.WebApi.Controllers.Course
public ApiResult GetClassStudent() public ApiResult GetClassStudent()
{ {
var classId = base.ParmJObj.GetInt("ClassId"); var classId = base.ParmJObj.GetInt("ClassId");
var schoolId = base.ParmJObj.GetInt("School_Id"); var schoolId = 0;
//var schoolId = base.ParmJObj.GetInt("School_Id");
var data = classModule.GetClassStudentListModule(classId, schoolId, base.UserInfo.Group_Id); var data = classModule.GetClassStudentListModule(classId, schoolId, base.UserInfo.Group_Id);
return ApiResult.Success(data: data); return ApiResult.Success(data: data);
} }
...@@ -405,7 +406,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -405,7 +406,7 @@ namespace Edu.WebApi.Controllers.Course
} }
} }
} }
var orderGuestList = classModule.GetOrderGuest(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, School_Id = data.School_Id, ClassId = data.ClassId }); var orderGuestList = classModule.GetOrderGuest(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, School_Id =0, ClassId = data.ClassId });
var checkLogList = classModule.GetClassCheckListRepository(new RB_Class_Check_ViewModel { Group_Id = data.Group_Id, School_Id = data.School_Id, ClassId = data.ClassId, StartDate = data.ClassDate.ToString("yyyy-MM-dd HH:mm:ss"), EndDate = data.ClassDate.ToString("yyyy-MM-dd HH:mm:ss") }); var checkLogList = classModule.GetClassCheckListRepository(new RB_Class_Check_ViewModel { Group_Id = data.Group_Id, School_Id = data.School_Id, ClassId = data.ClassId, StartDate = data.ClassDate.ToString("yyyy-MM-dd HH:mm:ss"), EndDate = data.ClassDate.ToString("yyyy-MM-dd HH:mm:ss") });
List<object> guestList = new List<object>(); List<object> guestList = new List<object>();
foreach (var item in orderGuestList.Where(x => x.GuestState == 1)) foreach (var item in orderGuestList.Where(x => x.GuestState == 1))
......
...@@ -23,7 +23,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -23,7 +23,7 @@ namespace Edu.WebApi.Controllers.Course
/// <summary> /// <summary>
/// 订单处理类对象 /// 订单处理类对象
/// </summary> /// </summary>
private readonly OrderModule orderModule = new OrderModule(); private readonly OrderModule orderModule = AOP.AOPHelper.CreateAOPObject<OrderModule>();
#region 产品管理 #region 产品管理
...@@ -715,8 +715,11 @@ namespace Edu.WebApi.Controllers.Course ...@@ -715,8 +715,11 @@ namespace Edu.WebApi.Controllers.Course
x.Id, x.Id,
x.GuestName, x.GuestName,
x.GuestState, x.GuestState,
x.OrderId,
x.GuestStateStr,
x.Profession, x.Profession,
x.Sex, x.Sex,
SexStr= x.Sex==1?"男":"女",
x.Age, x.Age,
x.Mobile, x.Mobile,
x.Basics, x.Basics,
...@@ -728,7 +731,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -728,7 +731,7 @@ namespace Edu.WebApi.Controllers.Course
LearningGoalsName = x.LearningGoals.ToName(), LearningGoalsName = x.LearningGoals.ToName(),
x.Contact, x.Contact,
x.ContactMobile, x.ContactMobile,
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss") UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"),
}); });
return ApiResult.Success("", pageModel); return ApiResult.Success("", pageModel);
} }
...@@ -924,5 +927,21 @@ namespace Edu.WebApi.Controllers.Course ...@@ -924,5 +927,21 @@ namespace Edu.WebApi.Controllers.Course
} }
#endregion #endregion
#region 退课申请
/// <summary>
/// 退课申请
/// </summary>
/// <returns></returns>
public ApiResult BackClassApply()
{
var GuestId = base.ParmJObj.GetInt("GuestId");
var OrderId = base.ParmJObj.GetInt("OrderId");
//申请原因
var applyReason = base.ParmJObj.GetStringValue("applyReason");
bool flag = orderModule.CreateBackClassApplyModule(GuestId, OrderId, applyReason, base.UserInfo, out string message);
return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
}
#endregion
} }
} }
...@@ -98,10 +98,12 @@ namespace Edu.WebApi.Controllers.Finance ...@@ -98,10 +98,12 @@ namespace Edu.WebApi.Controllers.Finance
var classFinanceModel = classModule.GetClassFinanceListRepository(new RB_Class_Finance_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId }).FirstOrDefault(); var classFinanceModel = classModule.GetClassFinanceListRepository(new RB_Class_Finance_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = classId, School_Id = schoolId }).FirstOrDefault();
if (classFinanceModel == null) if (classFinanceModel == null)
{ {
classFinanceModel = new RB_Class_Finance_ViewModel(); classFinanceModel = new RB_Class_Finance_ViewModel
classFinanceModel.Group_Id = base.UserInfo.Group_Id; {
classFinanceModel.ClassId = classId; Group_Id = base.UserInfo.Group_Id,
classFinanceModel.School_Id = schoolId; ClassId = classId,
School_Id = schoolId
};
} }
var resultData = new var resultData = new
{ {
...@@ -134,6 +136,7 @@ namespace Edu.WebApi.Controllers.Finance ...@@ -134,6 +136,7 @@ namespace Edu.WebApi.Controllers.Finance
/// 用户信息下载 /// 用户信息下载
/// </summary> /// </summary>
[HttpPost] [HttpPost]
[Obsolete]
public FileContentResult GetClassBalanceSheetToExcel() public FileContentResult GetClassBalanceSheetToExcel()
{ {
int classId = base.ParmJObj.GetInt("ClassId", 0); int classId = base.ParmJObj.GetInt("ClassId", 0);
......
...@@ -50,7 +50,7 @@ namespace Edu.WebApi.Controllers.User ...@@ -50,7 +50,7 @@ namespace Edu.WebApi.Controllers.User
var model = accountModule.GetAccountListExtModule(new RB_Account_ViewModel() var model = accountModule.GetAccountListExtModule(new RB_Account_ViewModel()
{ {
Account = account.Trim(), Account = account.Trim(),
AccountType = (AccountTypeEnum)accountType //AccountType = (AccountTypeEnum)accountType
})?.FirstOrDefault(); })?.FirstOrDefault();
if (model == null) if (model == null)
{ {
......
...@@ -40,5 +40,7 @@ ...@@ -40,5 +40,7 @@
}, },
"VirtualDirectory": "WebFile", "VirtualDirectory": "WebFile",
//是否是线上环境 //是否是线上环境
"IsOnline": false "IsOnline": false,
//退课流程编号
"BackClassFlowId": 1
} }
\ No newline at end of file
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