Commit d051f87c authored by liudong1993's avatar liudong1993

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

parents 17540dcf 57085be6
......@@ -550,5 +550,51 @@ namespace Edu.Common
}
}
/// <summary>
/// 甲鹤教育接口请求地址
/// </summary>
public static string DmcMallApi
{
get
{
return ReadConfigKey("DmcMallApi");
}
}
/// <summary>
/// 甲鹤教育商户id
/// </summary>
public static string JHTenantId
{
get
{
return ReadConfigKey("JHTenantId");
}
}
/// <summary>
/// 甲鹤教育小程序id
/// </summary>
public static string JHMallBaseId
{
get
{
return ReadConfigKey("JHMallBaseId");
}
}
/// <summary>
/// 电商加密
/// </summary>
public static string MallJwtSecretKey
{
get
{
return ReadConfigKey("MallJwtSecretKey");
}
}
}
}
\ No newline at end of file
......@@ -38,6 +38,13 @@ namespace Edu.Common.Enum
[EnumField("ERP")]
ERP =6,
/// <summary>
/// Mall【生成Token使用】
/// </summary>
[EnumField("Mall")]
Mall = 7,
/// <summary>
/// App学生端
/// </summary>
......
......@@ -52,6 +52,18 @@ namespace Edu.Common.Enum.Course
/// 学费收入
/// </summary>
[EnumField("学费收入")]
Tuition = 8
Tuition = 8,
/// <summary>
/// 活动收入(电商)
/// </summary>
[EnumField("活动收入")]
ActivityIncome = 9,
/// <summary>
/// 活动退款(电商)
/// </summary>
[EnumField("活动退款")]
ActivityExpenditure = 10,
}
}
......@@ -24,6 +24,12 @@
/// ERP用户TokenKey
/// </summary>
public const string JWT_ERP_User_Key = "userInfo";
/// <summary>
/// Mall用户TokenKey
/// </summary>
public const string JWT_Mall_User_Key = "userInfo";
/// <summary>
/// app学生用户TokenKey
/// </summary>
......
......@@ -67,6 +67,22 @@ namespace Edu.Model.CacheModel
/// </summary>
public string ErpToken { get; set; }
/// <summary>
/// 电商-token
/// </summary>
public string MallToken { get; set; }
/// <summary>
/// 电商-JHTenantId
/// </summary>
public string JHTenantId { get; set; }
/// <summary>
/// 电商-JHMallBaseId
/// </summary>
public string JHMallBaseId { get; set; }
/// <summary>
/// 菜单列表
/// </summary>
......
......@@ -268,5 +268,10 @@ namespace Edu.Model.Entity.Course
/// 前置订单编号
/// </summary>
public int UpOrderId { get; set; }
/// <summary>
/// 预约单号
/// </summary>
public int VisitorReserveId { get; set; }
}
}
......@@ -76,5 +76,9 @@ namespace Edu.Model.Entity.Reserve
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
}
}
......@@ -192,6 +192,20 @@ namespace Edu.Model.ViewModel.Course
/// 关联其他课程列表
/// </summary>
public List<RB_Class_Course_Extend> OtherCourseList { get; set; }
/// <summary>
/// 班级状态字符串
/// </summary>
public string ClassStatusStr
{
get
{
string str = "";
str = Common.Plugin.EnumHelper.ToName(this.ClassStatus);
return str;
}
}
}
/// <summary>
......
......@@ -45,5 +45,20 @@ namespace Edu.Model.ViewModel.Question
/// 间隔多少个15分钟
/// </summary>
public int IntervalNum { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 课程进度
/// </summary>
public decimal CompleteProgress { get; set; }
/// <summary>
/// 学生
/// </summary>
public string StudentName { get; set; }
}
}
......@@ -27,6 +27,11 @@ namespace Edu.Model.ViewModel.Reserve
/// </summary>
public string ClassTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 教师编号
/// </summary>
......@@ -72,6 +77,11 @@ namespace Edu.Model.ViewModel.Reserve
/// </summary>
public string Q_ReserveClassIds { get; set; }
/// <summary>
/// 预约状态(0-跟进中,1-成交,2-流单,3-取消)
/// </summary>
public string Q_ReserveStatus { get; set; }
/// <summary>
/// 报名人数
/// </summary>
......@@ -95,5 +105,15 @@ namespace Edu.Model.ViewModel.Reserve
return str;
}
}
/// <summary>
/// 开始日期
/// </summary>
public string StartClassDate { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public string EndClassDate { get; set; }
}
}
......@@ -4,9 +4,11 @@ using Edu.Common.Enum.Course;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Reserve;
using Edu.Model.ViewModel.User;
using Edu.Repository.Course;
using Edu.Repository.Log;
using Edu.Repository.Reserve;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
......@@ -114,6 +116,16 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Class_CourseRepository class_CourseRepository = new RB_Class_CourseRepository();
/// <summary>
/// 约课仓储层对象
/// </summary>
private readonly RB_Reserve_ClassRepository reserve_ClassRepository = new RB_Reserve_ClassRepository();
/// <summary>
/// 访客预约仓储层对象
/// </summary>
private readonly RB_Visitor_ReserveRepository visitor_ReserveRepository = new RB_Visitor_ReserveRepository();
/// <summary>
/// 获取班级列表
/// </summary>
......@@ -713,6 +725,14 @@ namespace Edu.Module.Course
var extModel = classRepository.GetEntity<RB_Class_ViewModel>(ClassId);
if (extModel != null && extModel.ClassId > 0)
{
if (extModel.CouseId > 0)
{
extModel.CourseName = courseRepository.GetEntity(extModel.CouseId)?.CourseName ?? "";
}
if (extModel.Teacher_Id > 0)
{
extModel.TeacherName = teacherRepository.GetEntity(extModel.Teacher_Id)?.TeacherName ?? "";
}
//课程梯度价格
extModel.ClassStepPriceList = class_StepPriceRepository.GetClassStepPriceListRepository(new RB_Class_StepPrice_ViewModel() { ClassId = extModel.ClassId })?.ToList() ?? new List<RB_Class_StepPrice_ViewModel>();
//课程计划上课日期
......@@ -1416,7 +1436,7 @@ namespace Edu.Module.Course
public object GetClassPlanLogPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Class_Plan_ViewModel query)
{
List<object> result = new List<object>();
var list= class_PlanRepository.GetClassPlanLogPageListRepository(pageIndex, pageSize, out rowsCount, query);
var list = class_PlanRepository.GetClassPlanLogPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (list != null && list.Count > 0)
{
List<RB_Class_Check_ViewModel> checkLogList = new List<RB_Class_Check_ViewModel>();
......@@ -1465,7 +1485,7 @@ namespace Edu.Module.Course
MonthStr = item.ClassDate.ToString("MM"),
DayStr = item.ClassDate.ToString("dd"),
YearStr = item.ClassDate.ToString("yyyy"),
TimeList=time
TimeList = time
};
result.Add(planCheckObj);
}
......@@ -1534,7 +1554,27 @@ namespace Edu.Module.Course
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetClassPlanList_V2(RB_Class_Plan_ViewModel query)
{
return class_PlanRepository.GetClassPlanList_V2(query);
var list = class_PlanRepository.GetClassPlanList_V2(query);
if (list != null && list.Any())
{
string ClassIds = string.Join(",", list.Distinct().Select(x => x.ClassId));
var orderStudentList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel()
{
ClassIds = ClassIds,
Group_Id = query.Group_Id,
School_Id = -1
}).Where(x => x.GuestState == 1).ToList();
if (orderStudentList != null && orderStudentList.Any())
{
foreach (var item in list)
{
item.GuestList = new List<RB_Order_Guest_ViewModel>();
item.GuestList = orderStudentList.Where(x => x.ClassId == item.ClassId).ToList();
}
}
}
return list;
}
/// <summary>
......@@ -2147,12 +2187,36 @@ namespace Edu.Module.Course
TimeSpan sp = endTime.Subtract(startTime);
var days = sp.Days + 1;
var list = class_PlanRepository.GetClassPlanStatisticalRepository(query);
if (list != null)
//约课列表
var reserveList = reserve_ClassRepository.GetReserveClassListRepository(new Model.ViewModel.Reserve.RB_Reserve_Class_Extend()
{
StartClassDate = query.StartTime,
EndClassDate = query.EndTime,
TeacherId = query.TeacherId,
ClassRoomId = query.ClassRoomId
});
if (list != null || reserveList!=null)
{
string classIds = string.Join(",", list.Select(qitem => qitem.ClassId));
string planIds = string.Join(",", list.Select(qitem => qitem.ClassPlanId));
var timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { QClassIds = classIds, QClassPlanIds = planIds });
var guestList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { ClassIds = classIds });
var timeList = new List<RB_Class_Time_ViewModel>();
var guestList = new List<RB_Order_Guest_ViewModel>();
if (list != null&& list.Count>0)
{
string classIds = string.Join(",", list.Select(qitem => qitem.ClassId));
string planIds = string.Join(",", list.Select(qitem => qitem.ClassPlanId));
timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { QClassIds = classIds, QClassPlanIds = planIds });
guestList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { ClassIds = classIds });
}
var visitorList = new List<RB_Visitor_Reserve_Extend>();
if (reserveList != null && reserveList.Count > 0)
{
string reserveClassIds = string.Join(",", reserveList.Select(qitem => qitem.ReserveClassId));
visitorList = visitor_ReserveRepository.GetVisitorReserveListRepository(new Model.ViewModel.Reserve.RB_Visitor_Reserve_Extend()
{
Q_ReserveClassIds = reserveClassIds
});
}
for (var i = 0; i < days; i++)
{
var ClassDate = startTime.AddDays(i);
......@@ -2164,6 +2228,7 @@ namespace Edu.Module.Course
var currentDate = Common.ConvertHelper.FormatDate(ClassDate) + " " + (tempTimeList?.FirstOrDefault()?.StartTime ?? "");
subList.Add(new
{
ClassType = 1,
subItem.ClassId,
subItem.ClassName,
subItem.CourseName,
......@@ -2176,6 +2241,26 @@ namespace Edu.Module.Course
GuestList = guestList.Where(qitem => qitem.ClassId == subItem.ClassId)?.Select(qitem => new { qitem.GuestName })
});
}
var tempReserveList = reserveList.Where(qitem => qitem.ClassDate == ClassDate).OrderBy(qitem => qitem.ClassTime);
foreach (var subItem in tempReserveList)
{
var currentDate = Common.ConvertHelper.FormatDate(ClassDate) + " " + (subItem?.ClassTime ?? "");
subList.Add(new
{
ClassType=2,
ClassId= subItem.ReserveClassId,
ClassName= "试听课",
CourseName= subItem.ClassContent,
subItem.RoomName,
subItem.TeacherName,
TimeStr = Common.ConvertHelper.GetTimeStr(currentDate),
StartTime = subItem.ClassTime,
EndTime =subItem.EndTime,
CompleteProgress=-1,
GuestList = visitorList?.Where(qitem => qitem.ReserveClassId == subItem.ReserveClassId)?.Select(qitem => new { GuestName=qitem.VisitorName })
});
}
var obj = new
{
ClassDate = Common.ConvertHelper.FormatDate(ClassDate),
......
This diff is collapsed.
......@@ -7,6 +7,7 @@ using System.Text;
using VT.FW.AOP.CustomerAttribute;
using VT.FW.DB;
using System.Linq;
using Edu.Repository.Course;
namespace Edu.Module.Duty
{
......@@ -25,6 +26,13 @@ namespace Edu.Module.Duty
/// </summary>
private readonly RB_Reserve_ClassRepository reserve_ClassRepository = new RB_Reserve_ClassRepository();
/// <summary>
/// 上课计划仓储层对象
/// </summary>
private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository();
/// <summary>
/// 获取访客约课分页列表
/// </summary>
......@@ -54,8 +62,9 @@ namespace Edu.Module.Duty
/// <param name="model"></param>
/// <returns></returns>
[TransactionCallHandler]
public virtual bool SetVisitorReserveModule(RB_Visitor_Reserve_Extend model)
public virtual bool SetVisitorReserveModule(RB_Visitor_Reserve_Extend model,out string message)
{
message = "";
bool flag;
var reserveClass = new RB_Reserve_Class_Extend()
{
......@@ -71,11 +80,17 @@ namespace Edu.Module.Duty
Status = DateStateEnum.Normal,
TeacherId = model.TeacherId,
UpdateBy = model.UpdateBy,
UpdateTime = model.UpdateTime
UpdateTime = model.UpdateTime,
EndTime=model.EndTime,
};
if (model.ReserveClassId <= 0)
{
SetReserveClassModule(reserveClass);
var newFlag = SetReserveClassModule(reserveClass, out string newMsg);
if (!newFlag)
{
message = newMsg;
return false;
}
model.ReserveClassId = reserveClass.ReserveClassId;
}
if (model.Id > 0)
......@@ -189,9 +204,23 @@ namespace Edu.Module.Duty
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool SetReserveClassModule(RB_Reserve_Class_Extend model)
public bool SetReserveClassModule(RB_Reserve_Class_Extend model,out string message)
{
bool flag;
message = "";
var chooseDateTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.ClassDate) + " " + model.ClassTime);
var chooseEndTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.ClassDate) + " " + model.EndTime);
var isExists = CheckClassModule(model.TeacherId, model.Group_Id, model.ClassDate, chooseDateTime, chooseEndTime, out string newMsg);
if (!isExists)
{
message = newMsg;
return false;
}
if (CheckReserveClassExistsModule(model))
{
message = string.Format("此教师已有{0}的试听课计划!请重新选择时间", Common.ConvertHelper.FormatDate(chooseDateTime));
return false;
}
if (model.ReserveClassId > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
......@@ -199,6 +228,7 @@ namespace Edu.Module.Duty
{nameof(RB_Reserve_Class_Extend.TeacherId),model.TeacherId },
{nameof(RB_Reserve_Class_Extend.ClassDate),model.ClassDate },
{nameof(RB_Reserve_Class_Extend.ClassTime),model.ClassTime },
{nameof(RB_Reserve_Class_Extend.EndTime),model.EndTime },
{nameof(RB_Reserve_Class_Extend.ClassRoomId),model.ClassRoomId },
{nameof(RB_Reserve_Class_Extend.ClassContent),model.ClassContent },
{nameof(RB_Reserve_Class_Extend.UpdateBy),model.UpdateBy },
......@@ -215,6 +245,62 @@ namespace Edu.Module.Duty
return flag;
}
/// <summary>
/// 检查预约课程是否存在
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool CheckReserveClassExistsModule(RB_Reserve_Class_Extend model)
{
List<WhereHelper> whereHelpers = new List<WhereHelper>();
whereHelpers.Add(new WhereHelper(nameof(RB_Reserve_Class_Extend.ClassDate), model.ClassDate));
whereHelpers.Add(new WhereHelper(nameof(RB_Reserve_Class_Extend.TeacherId), model.TeacherId));
if (model.ReserveClassId > 0)
{
whereHelpers.Add(new WhereHelper()
{
FiledName = nameof(RB_Reserve_Class_Extend.TeacherId),
FiledValue = model.TeacherId,
OperatorEnum = OperatorEnum.NotEqual
});
}
return reserve_ClassRepository.Exists(whereHelpers);
}
/// <summary>
/// 检查老师是否有上课安排
/// </summary>
/// <param name="TeacherId"></param>
/// <param name="Group_Id"></param>
/// <param name="ClassDate"></param>
/// <param name="chooseDateTime"></param>
/// <param name="message"></param>
/// <returns></returns>
public bool CheckClassModule(int TeacherId,int Group_Id,DateTime ClassDate,DateTime chooseDateTime,DateTime chooseEndTime, out string message)
{
message = "";
var planList = class_PlanRepository.GetClassPlanListExtRepository(new Model.ViewModel.Course.RB_Class_Plan_ViewModel()
{
TeacherId = TeacherId,
QClassDateStr = Common.ConvertHelper.FormatDate(ClassDate),
Group_Id = Group_Id
});
if (planList != null && planList.Count > 0)
{
foreach (var item in planList)
{
var startTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.ClassDate) + " " + item.StartTime);
var endTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.ClassDate) + " " + item.EndTime);
if (chooseDateTime<endTime&& chooseEndTime>startTime)
{
message =string.Format( "此教师已有{0}的上课计划!请重新选择时间",Common.ConvertHelper.FormatDate(chooseDateTime));
return false;
}
}
}
return true;
}
/// <summary>
/// 根据编号获取约课班级
/// </summary>
......@@ -230,9 +316,20 @@ namespace Edu.Module.Duty
/// 根据编号删除约课班级
/// </summary>
/// <param name="ReserveClassId"></param>
/// <param name="message"></param>
/// <returns></returns>
public bool RemoveReserveClassModule(int ReserveClassId)
public bool RemoveReserveClassModule(int ReserveClassId, out string message)
{
message = "";
var visitorReserve = visitor_ReserveRepository.GetVisitorReserveStaticsListRepository(new RB_Visitor_Reserve_Extend()
{
Q_ReserveClassIds = ReserveClassId.ToString()
})?.FirstOrDefault();
if ((visitorReserve?.JoinNum ?? 0) > 0)
{
message = "此试听课存在客户报名信息,不能删除!";
return false;
}
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Visitor_Reserve_Extend.Status),(int)DateStateEnum.Delete },
......
......@@ -100,6 +100,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.Group_Id), query.Group_Id);
}
if (query.TeacherId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.TeacherId), query.TeacherId);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.School_Id), query.School_Id);
......@@ -124,6 +128,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.EndTime);
}
if (!string.IsNullOrEmpty(query.QClassDateStr))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%y/%m/%d')= DATE_FORMAT('{1}','%y/%m/%d') ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.QClassDateStr);
}
}
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
......@@ -228,10 +236,11 @@ WHERE ClassId={1} AND ClassDate>'{2}'
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT a.*,c.Teacher_Id,c.ClassName,c.ClassType,T.TeacherName
SELECT a.*,c.Teacher_Id,c.ClassName,c.ClassType,T.TeacherName ,cou.CourseName
FROM rb_class_plan as a
LEFT JOIN rb_class c on a.ClassId = c.ClassId
LEFT JOIN rb_teacher AS T ON a.TeacherId=T.TId
LEFT JOIN rb_course as cou on cou.CourseId=c.CouseId
where a.`Status`=0 and c.ClassStatus=2 and c.`Status`=0");
if (query != null)
{
......
......@@ -60,7 +60,7 @@ namespace Edu.Repository.Course
}
if (demodel.QEffectStatus == 1)
{
where += $@" AND (B.IsChaBan=0 OR (B.IsChaBan=1 AND B.EffectStatus IN(1,2))) ";
where += $@" AND (B.IsChaBan=0 OR (B.IsChaBan=1 AND B.EffectStatus IN(1) )) ";
}
string sql = $@"
......
using Edu.Model.Entity.Reserve;
using Edu.Common.Enum;
using Edu.Model.Entity.Reserve;
using Edu.Model.ViewModel.Reserve;
using System;
using System.Collections.Generic;
......@@ -31,6 +32,7 @@ FROM RB_Reserve_Class AS A LEFT JOIN rb_teacher AS D ON A.TeacherId=D.TId
LEFT JOIN rb_class_room AS E ON A.ClassRoomId=E.RoomId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Reserve_Class_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
......@@ -54,6 +56,7 @@ WHERE 1=1
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Reserve_Class_Extend.ClassRoomId), query.ClassRoomId);
}
}
builder.AppendFormat(" ORDER BY A.{0} ASC ", nameof(RB_Reserve_Class_Extend.ClassDate));
return GetPage<RB_Reserve_Class_Extend>(pageIndex,pageSize,out rowsCount, builder.ToString(),parameters).ToList();
}
......@@ -72,6 +75,7 @@ FROM RB_Reserve_Class AS A LEFT JOIN rb_teacher AS D ON A.TeacherId=D.TId
LEFT JOIN rb_class_room AS E ON A.ClassRoomId=E.RoomId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Reserve_Class_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
......
using Edu.Model.Entity.Reserve;
using Edu.Common.Enum;
using Edu.Model.Entity.Duty;
using Edu.Model.Entity.Reserve;
using Edu.Model.ViewModel.Duty;
using Edu.Model.ViewModel.Reserve;
using System;
using System.Collections.Generic;
......@@ -11,7 +14,7 @@ namespace Edu.Repository.Reserve
/// <summary>
/// 访客约课仓储层
/// </summary>
public class RB_Visitor_ReserveRepository:BaseRepository<RB_Visitor_Reserve>
public class RB_Visitor_ReserveRepository : BaseRepository<RB_Visitor_Reserve>
{
/// <summary>
/// 获取访客约课分页列表
......@@ -26,13 +29,47 @@ namespace Edu.Repository.Reserve
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.Append(@"
SELECT A.*,IFNULL(B.`Name`,'') AS VisitorName,C.ClassDate,C.ClassTime,C.ClassContent,IFNULL(D.TeacherName,'') AS TeacherName,IFNULL(E.RoomName,'') AS RoomName
SELECT A.*,IFNULL(B.`Name`,'') AS VisitorName,C.ClassDate,C.ClassTime,C.EndTime,C.ClassContent,IFNULL(D.TeacherName,'') AS TeacherName,IFNULL(E.RoomName,'') AS RoomName
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_visitor AS B ON A.Visitor_Id=B.Id
LEFT JOIN rb_reserve_class AS C ON A.ReserveClassId=C.ReserveClassId
LEFT JOIN rb_teacher AS D ON C.TeacherId=D.TId
LEFT JOIN rb_class_room AS E ON C.ClassRoomId=E.RoomId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.StartClassDate))
{
builder.AppendFormat(" AND C.{0}>='{1}' ", nameof(RB_Visitor_Reserve_Extend.ClassDate), query.StartClassDate);
}
if (!string.IsNullOrEmpty(query.EndClassDate))
{
builder.AppendFormat(" AND C.{0}<='{1} 23:59:59' ", nameof(RB_Visitor_Reserve_Extend.ClassDate), query.EndClassDate);
}
if (query.TeacherId > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.TeacherId), query.TeacherId);
}
if (query.ClassRoomId > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.ClassRoomId), query.ClassRoomId);
}
if (!string.IsNullOrEmpty(query.Q_ReserveStatus))
{
Int32.TryParse(query.Q_ReserveStatus, out int result);
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.ReserveStatus), result);
}
if (!string.IsNullOrEmpty(query.VisitorName))
{
builder.AppendFormat(" AND B.{0} LIKE @VisitorName ", nameof(RB_Visitor.Name));
parameters.Add("VisitorName", "%" + query.VisitorName.Trim() + "%");
}
}
return GetPage<RB_Visitor_Reserve_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
......@@ -46,10 +83,47 @@ WHERE 1=1
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.Append(@"
SELECT A.*
FROM RB_Visitor_Reserve AS A
SELECT A.*,IFNULL(B.`Name`,'') AS VisitorName,C.ClassDate,C.ClassTime,C.EndTime,C.ClassContent,IFNULL(D.TeacherName,'') AS TeacherName,IFNULL(E.RoomName,'') AS RoomName
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_visitor AS B ON A.Visitor_Id=B.Id
LEFT JOIN rb_reserve_class AS C ON A.ReserveClassId=C.ReserveClassId
LEFT JOIN rb_teacher AS D ON C.TeacherId=D.TId
LEFT JOIN rb_class_room AS E ON C.ClassRoomId=E.RoomId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.StartClassDate))
{
builder.AppendFormat(" AND C.{0}>='{1}' ", nameof(RB_Visitor_Reserve_Extend.ClassDate), query.StartClassDate);
}
if (!string.IsNullOrEmpty(query.EndClassDate))
{
builder.AppendFormat(" AND C.{0}<='{1} 23:59:59' ", nameof(RB_Visitor_Reserve_Extend.ClassDate), query.EndClassDate);
}
if (query.TeacherId > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.TeacherId), query.TeacherId);
}
if (query.ClassRoomId > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.ClassRoomId), query.ClassRoomId);
}
if (!string.IsNullOrEmpty(query.Q_ReserveStatus))
{
Int32.TryParse(query.Q_ReserveStatus, out int result);
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.ReserveStatus), result);
}
if (!string.IsNullOrEmpty(query.VisitorName))
{
builder.AppendFormat(" AND B.{0} LIKE @VisitorName ", nameof(RB_Visitor.Name));
parameters.Add("VisitorName", "%" + query.VisitorName.Trim() + "%");
}
}
return Get<RB_Visitor_Reserve_Extend>(builder.ToString(), parameters).ToList();
}
......@@ -74,5 +148,35 @@ WHERE 1=1 {0}
GROUP BY A.ReserveClassId ", builder.ToString());
return Get<RB_Visitor_Reserve_Extend>(sql, parameters).ToList();
}
/// <summary>
/// 根据约课信息获取访客列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Visitor_ViewModel> GetVisitorRepository(RB_Visitor_Reserve_Extend query)
{
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.Append(@"
SELECT B.*
FROM RB_Visitor_Reserve AS A INNER JOIN rb_visitor AS B ON A.Visitor_Id=B.Id
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Group_Id), query.Group_Id);
}
if (query.Id > 0)
{
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Visitor_Reserve_Extend.Id), query.Id);
}
}
return Get<RB_Visitor_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
......@@ -72,7 +72,7 @@ namespace Edu.WebApi.Controllers.Course
item.OrderStudentCount,
OpenTime = Common.ConvertHelper.FormatDate(item.OpenTime),
item.CompleteProgress,
ClassStatusStr = item.ClassStatus.ToName(),
item.ClassStatusStr,
item.NewPlanDateTime,
item.ClassStatus,
item.Status,
......@@ -423,6 +423,7 @@ namespace Edu.WebApi.Controllers.Course
CommissionType = extModel?.CommissionType ?? 1,
CommissionValue = extModel?.CommissionValue ?? 0,
CouseId = extModel?.CouseId ?? 0,
CourseName = extModel?.CourseName??"",
DateJson = extModel?.DateJson ?? "",
DefaultTimeJson = extModel?.DefaultTimeJson ?? "",
DefaultPlanTimeList = extModel?.DefaultTimeList ?? new List<ClassTimeItem>(),
......@@ -440,9 +441,12 @@ namespace Edu.WebApi.Controllers.Course
OutRemark = extModel?.OutRemark ?? "",
SellPrice = extModel?.SellPrice ?? 0,
Teacher_Id = extModel?.Teacher_Id ?? 0,
TeacherName= extModel?.TeacherName??"",
School_Id = extModel?.School_Id ?? 0,
ClassStepPriceList = extModel?.ClassStepPriceList ?? new List<RB_Class_StepPrice_ViewModel>(),
WeekDayList = extModel?.WeekDayList ?? new List<string>(),
CompleteProgress = extModel?.CompleteProgress ?? 0,
ClassStatusStr = extModel?.ClassStatusStr ?? "",
};
return ApiResult.Success(data: obj);
}
......@@ -741,7 +745,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("数据不存在");
}
double totalMinutes = 0;
var planTimeList = classModule.GetClassTimeListRepository(new RB_Class_Time_ViewModel { ClassId = classId, ClassPlanId = classPlanId, Group_Id = base.UserInfo.Group_Id, School_Id = schoolId });
var planTimeList = classModule.GetClassTimeListRepository(new RB_Class_Time_ViewModel { ClassId = classId, ClassPlanId = classPlanId, Group_Id = base.UserInfo.Group_Id, School_Id = schoolId ,ClassTimeId= ClassTimeId });
if (planTimeList != null && planTimeList.Any())
{
foreach (var item in planTimeList)
......@@ -754,39 +758,50 @@ namespace Edu.WebApi.Controllers.Course
}
}
var orderGuestList = classModule.GetOrderGuestListModule(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, School_Id = 0, ClassId = data.ClassId,QEffectStatus=1 });
var checkLogList = classModule.GetClassCheckList(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.GetClassCheckList(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"),
ClassTimeId= ClassTimeId,
});
List<object> guestList = new List<object>();
foreach (var item in orderGuestList.Where(x => x.GuestState == 1))
{
guestList.Add(new
if (item.IsChaBan == 0 || (item.IsChaBan == 1 && data.ClassDate >= Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.EffectTime))))
{
UserIcon = "",
item.Id,
SexStr = item.Sex == 1 ? "男" : "女",
item.GuestName,
item.Age,
CreateTimeStr = Common.ConvertHelper.FormatTime(item.CreateTime),
item.Mobile,
item.OrderId,
item.CourseName,
item.CourseId,
item.TotalHours,
item.CompleteHours,
item.StartClassHours,
item.IsChaBan,
item.EffectStatus,
item.EffectStatusStr,
EffectTime=Common.ConvertHelper.FormatDate(item.EffectTime),
item.UpOrderId,
IsCheck = (checkLogList != null && checkLogList.Any()) ? checkLogList.Where(x => x.OrderGuestId == item.Id).FirstOrDefault()?.CheckStatus ?? -1 : -1,
StudyNum = (checkLogList != null && checkLogList.Any()) ? checkLogList.Where(x => x.OrderGuestId == item.Id).FirstOrDefault()?.StudyNum ?? 0 : 0
});
guestList.Add(new
{
UserIcon = "",
item.Id,
SexStr = item.Sex == 1 ? "男" : "女",
item.GuestName,
item.Age,
CreateTimeStr = Common.ConvertHelper.FormatTime(item.CreateTime),
item.Mobile,
item.OrderId,
item.CourseName,
item.CourseId,
item.TotalHours,
item.CompleteHours,
item.StartClassHours,
item.IsChaBan,
item.EffectStatus,
item.EffectStatusStr,
EffectTime = Common.ConvertHelper.FormatDate(item.EffectTime),
item.UpOrderId,
IsCheck = (checkLogList != null && checkLogList.Any()) ? checkLogList.Where(x => x.OrderGuestId == item.Id).FirstOrDefault()?.CheckStatus ?? -1 : -1,
StudyNum = (checkLogList != null && checkLogList.Any()) ? checkLogList.Where(x => x.OrderGuestId == item.Id).FirstOrDefault()?.StudyNum ?? 0 : 0
});
}
}
return ApiResult.Success(data: new
{
data.TeacherName,
data.RoomName,
TotalHour = Convert.ToInt32(totalMinutes / 60),
TotalHour = Convert.ToDecimal(totalMinutes / 60.0),
ClassNum = Convert.ToInt32(totalMinutes / 45),
DefaultMinutes = totalMinutes,
ClassDate = data.ClassDate.ToString("yyyy-MM-dd"),
......@@ -898,7 +913,7 @@ namespace Edu.WebApi.Controllers.Course
var orderGuestList = classModule.GetOrderGuestListModule(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = list.FirstOrDefault().ClassId ,QEffectStatus=1});
if (list.Count() != orderGuestList.Where(x => x.GuestState == 1).Count())
{
return ApiResult.Failed("签到总人数错误,请先检查信息");
// return ApiResult.Failed("签到总人数错误,请先检查信息");
}
//判断今天有课没有
......
......@@ -273,7 +273,7 @@ namespace Edu.WebApi.Controllers.Course
InfoTime = item.CreateTime,
Type = item.ErrorType == 0 ? 1 : 2,
ClassStatus = -1,
IntervalNum = IntervalNum
IntervalNum = IntervalNum,
});
}
foreach (var item in timeList)
......@@ -287,17 +287,22 @@ namespace Edu.WebApi.Controllers.Course
var planModel = roomList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault();
if (planModel != null && planModel.ClassPlanId > 0)
{
var roomModel = roomList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault();
resultList.Add(new Model.ViewModel.Question.RB_Question_RoomUseLog_ViewModel
{
Id = item.ClassTimeId,
Title = roomList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault()?.ClassName,
Content = roomList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault()?.TeacherName,
Title = roomModel?.ClassName,
Content = roomModel?.TeacherName,
StartTime = item.StartTime,
EndTime = item.EndTime,
InfoTime = Convert.ToDateTime(planModel.ClassDate.ToString("yyyy-MM-dd ") + item.StartTime),
Type = 0,
ClassStatus = item.ClassStatus,
IntervalNum = IntervalNum
IntervalNum = IntervalNum,
CourseName = roomModel?.CourseName,
CompleteProgress = roomModel?.CompleteProgress ?? 0,
StudentName = (roomModel != null && roomModel.GuestList != null && roomModel.GuestList.Any()) ? string.Join(",", roomModel.GuestList.Select(x => x.GuestName)) : ""
});
}
}
......
......@@ -227,6 +227,7 @@ namespace Edu.WebApi.Controllers.Course
x.EffectStatusStr,
EffectTime = Common.ConvertHelper.FormatDate(x.EffectTime),
x.UpOrderId,
x.VisitorReserveId,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -445,6 +446,7 @@ namespace Edu.WebApi.Controllers.Course
IsChaBan=base.ParmJObj.GetInt("IsChaBan"),
EffectTime=base.ParmJObj.GetDateTime("EffectTime"),
UpOrderId=base.ParmJObj.GetInt("UpOrderId"),
VisitorReserveId=base.ParmJObj.GetInt("VisitorReserveId"),
};
if (demodel.OrderType == OrderTypeEnum.CourseOrder && demodel.ClassId <= 0)
......@@ -581,6 +583,7 @@ namespace Edu.WebApi.Controllers.Course
model.StartClassHours,
EffectTime = Common.ConvertHelper.FormatDate(model.EffectTime),
model.UpOrderId,
model.VisitorReserveId,
},
StepPriceList = list.Select(x => new
{
......@@ -1217,6 +1220,7 @@ namespace Edu.WebApi.Controllers.Course
EffectTime=Common.ConvertHelper.FormatDate(x.EffectTime),
x.UpOrderId,
OpenTime = Common.ConvertHelper.FormatDate(x.OpenTime),
x.VisitorReserveId,
SaleRemarkList = x?.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -1366,6 +1370,7 @@ namespace Edu.WebApi.Controllers.Course
x.EffectStatusStr,
EffectTime = Common.ConvertHelper.FormatDate(x.EffectTime),
x.UpOrderId,
x.VisitorReserveId,
SaleRemarkList = x?.SaleRemarkList.Select(z => new
{
z.Id,
......
......@@ -40,6 +40,12 @@ namespace Edu.WebApi.Controllers.Duty
var query = new RB_Visitor_Reserve_Extend()
{
Group_Id = base.UserInfo.Group_Id,
StartClassDate=base.ParmJObj.GetStringValue("StartClassDate"),
EndClassDate=base.ParmJObj.GetStringValue("EndClassDate"),
TeacherId=base.ParmJObj.GetInt("TeacherId"),
ClassRoomId=base.ParmJObj.GetInt("ClassRoomId"),
Q_ReserveStatus=base.ParmJObj.GetStringValue("Q_ReserveStatus"),
VisitorName=base.ParmJObj.GetStringValue("VisitorName"),
};
var list = visitorReserveModule.GetVisitorReservePageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
......@@ -92,7 +98,12 @@ namespace Edu.WebApi.Controllers.Duty
TeacherId=base.ParmJObj.GetInt("TeacherId"),
ClassRoomId=base.ParmJObj.GetInt("ClassRoomId"),
ClassContent = base.ParmJObj.GetStringValue("ClassContent"),
EndTime=base.ParmJObj.GetStringValue("EndTime"),
};
if (string.IsNullOrEmpty(model.ClassTime))
{
return ApiResult.ParamIsNull("请选择预约时间段!");
}
model.ReserveStatus = 0;
model.Group_Id = base.UserInfo.Group_Id;
model.School_Id = base.UserInfo.School_Id;
......@@ -101,8 +112,8 @@ namespace Edu.WebApi.Controllers.Duty
model.UpdateBy = base.UserInfo.Id;
model.UpdateTime = System.DateTime.Now;
model.Status = Common.Enum.DateStateEnum.Normal;
bool retult = visitorReserveModule.SetVisitorReserveModule(model);
return retult ? ApiResult.Success() : ApiResult.Failed();
bool retult = visitorReserveModule.SetVisitorReserveModule(model,out string message);
return retult ? ApiResult.Success() : ApiResult.Failed(message: message);
}
/// <summary>
......@@ -211,7 +222,12 @@ namespace Edu.WebApi.Controllers.Duty
ClassTime = base.ParmJObj.GetStringValue("ClassTime"),
ClassRoomId = base.ParmJObj.GetInt("ClassRoomId"),
ClassContent = base.ParmJObj.GetStringValue("ClassContent"),
EndTime=base.ParmJObj.GetStringValue("EndTime"),
};
if (string.IsNullOrEmpty(model.ClassTime))
{
return ApiResult.ParamIsNull("请选择预约时间!");
}
model.Group_Id = base.UserInfo.Group_Id;
model.School_Id = base.UserInfo.School_Id;
model.CreateBy = base.UserInfo.Id;
......@@ -219,8 +235,8 @@ namespace Edu.WebApi.Controllers.Duty
model.UpdateBy = base.UserInfo.Id;
model.UpdateTime = System.DateTime.Now;
model.Status = Common.Enum.DateStateEnum.Normal;
bool retult = visitorReserveModule.SetReserveClassModule(model);
return retult ? ApiResult.Success() : ApiResult.Failed();
bool retult = visitorReserveModule.SetReserveClassModule(model,out string message);
return retult ? ApiResult.Success() : ApiResult.Failed(message: message);
}
/// <summary>
......@@ -243,8 +259,8 @@ namespace Edu.WebApi.Controllers.Duty
public ApiResult RemoveReserveClass()
{
var ReserveClassId = base.ParmJObj.GetInt("ReserveClassId", 0);
var flag = visitorReserveModule.RemoveReserveClassModule(ReserveClassId);
return flag ? ApiResult.Success() : ApiResult.Failed();
var flag = visitorReserveModule.RemoveReserveClassModule(ReserveClassId,out string message);
return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
}
#endregion
}
......
......@@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.Linq;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
......@@ -108,6 +110,59 @@ namespace Edu.WebApi.Controllers.User
string token = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_User_Key, eduUserInfo);
string erpToken = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_ERP_User_Key, erpUserInfo);
#region 获取甲鹤教育Token
string JHTenantId = Config.JHTenantId;
string JHMallBaseId = Config.JHMallBaseId;
IUserInfoToken mallJHUserInfo = new ErpTokenUserInfo()
{
requestFrom = Common.Enum.ApiRequestFromEnum.Mall,
uid = JHTenantId,
groupId = model.Group_Id
};
#region JWT
// string mallToken = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_Mall_User_Key, mallJHUserInfo);
#endregion
#endregion
#region 获取甲鹤教育Token
#region JWT
JWT.IDateTimeProvider provider2 = new JWT.UtcDateTimeProvider();
var now2 = provider2.GetNow().AddMinutes(-1);
var unixEpoch2 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
var secondsSinceEpoch2 = Math.Round((now2 - unixEpoch2).TotalSeconds);
var payload2 = new Dictionary<string, object>
{
{"iat",secondsSinceEpoch2 },
{"exp",secondsSinceEpoch2+Config.JwtExpirTime},
{"mall_userInfoJH",mallJHUserInfo }
};
JWT.Algorithms.IJwtAlgorithm algorithm2 = new JWT.Algorithms.HMACSHA256Algorithm();
JWT.IJsonSerializer serializer2 = new JWT.Serializers.JsonNetSerializer();
JWT.IBase64UrlEncoder urlEncoder2 = new JWT.JwtBase64UrlEncoder();
JWT.IJwtEncoder encoder2 = new JWT.JwtEncoder(algorithm2, serializer2, urlEncoder2);
string secret2 = Config.MallJwtSecretKey;
string malltokenJH = encoder2.Encode(payload2, secret2);
#endregion
#endregion
var treeList = menuModule.GetPostMenuTreeModule(new Model.ViewModel.System.RB_Menu_ViewModel()
{
MenuType = accountType
......@@ -130,6 +185,9 @@ namespace Edu.WebApi.Controllers.User
SchoolName = model.SchoolName,
Token = token,
ErpToken = erpToken,
MallToken = malltokenJH,
JHMallBaseId = JHMallBaseId,
JHTenantId = JHTenantId,
MenuList = treeList,
UserCenterList = userCenterList,
GroupLogo = model.GroupLogo,
......
......@@ -149,7 +149,7 @@ namespace Edu.WebApi.Controllers.WeChatPay
Cache.User.UserReidsCache.Set(Cache.CacheKey.WeChatPay_Callback_Key + payModel.out_trade_no, payModel.out_trade_no, 1800);
isAdd = true;
Cache.User.UserReidsCache.Set(Cache.CacheKey.WeChatPay_Callback_Key + payModel.out_trade_no, payModel.out_trade_no, 1800);
var oldOrderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = payModel.out_trade_no }).FirstOrDefault();
var oldOrderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = payModel.out_trade_no, Type = 1 }).FirstOrDefault();
if (oldOrderRecordModel == null || oldOrderRecordModel.ID == 0)
{
isAdd = true;
......@@ -338,7 +338,7 @@ namespace Edu.WebApi.Controllers.WeChatPay
contractId = Convert.ToInt32(outTradeNo[17..]);
}
var orderModle = educationContractModule.GetEducationContractModule(contractId);
var orderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = outTradeNo }).FirstOrDefault();
var orderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = outTradeNo, Type = 2 }).FirstOrDefault();
if (orderRecordModel == null)
{
return ApiResult.Failed("未查询到当前商户订单号对应的支付记录");
......@@ -433,7 +433,7 @@ namespace Edu.WebApi.Controllers.WeChatPay
Cache.User.UserReidsCache.Set(Cache.CacheKey.WeChatPay_Callback_Key + payModel.out_trade_no, payModel.out_trade_no, 1800);
isAdd = true;
Cache.User.UserReidsCache.Set(Cache.CacheKey.WeChatPay_Callback_Key + payModel.out_trade_no, payModel.out_trade_no, 1800);
var oldOrderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = payModel.out_trade_no }).FirstOrDefault();
var oldOrderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = payModel.out_trade_no, Type = 2 }).FirstOrDefault();
if (oldOrderRecordModel == null || oldOrderRecordModel.ID == 0)
{
isAdd = true;
......@@ -442,7 +442,7 @@ namespace Edu.WebApi.Controllers.WeChatPay
{
var orderModle = educationContractModule.GetEducationContractModule(contractId);
var orderModel = orderModule.GetClassOrderInfoModule(orderModle.OrderId);
var payOrderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = payModel.out_trade_no }).FirstOrDefault();
var payOrderRecordModel = educationContractModule.GetOrderRecordList(new RB_Finance_OrderRecord { ContractId = contractId, OutTradeNo = payModel.out_trade_no, Type = 1 }).FirstOrDefault();
var userInfo = employeeModule.GetEmployeeListModule(new Model.ViewModel.User.Employee_ViewModel { Id = orderModel.EnterID, Group_Id = orderModel.Group_Id }).ToList().FirstOrDefault();
var OriginalFee = Math.Round(Convert.ToDecimal((Convert.ToDecimal(Config.SettlementRate) / 100) * (Convert.ToDecimal(payModel.amount.payer_total) / 100)), 2, MidpointRounding.AwayFromZero);//手续费
RB_Online_Trade_Detail model = new RB_Online_Trade_Detail();
......
......@@ -57,7 +57,9 @@ namespace Edu.WebApi
"http://jiahe.oytour.com",
"http://www.kookaku.com",
"http://www.kookaku.cn",
"http://kookaku.com"
"http://kookaku.com",
"https://mallapi.oytour.com",
"https://mall.oytour.com"
};
services.AddCors(options => options.AddPolicy("AllowCors", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowCredentials().WithOrigins(corsArray.ToArray())));
}
......@@ -96,7 +98,7 @@ namespace Edu.WebApi
Timers.TimerJobj.RunStop(); //网站停止完成执行
});
string filePath= Path.Combine(Directory.GetCurrentDirectory(), "upfile");
string filePath = Path.Combine(Directory.GetCurrentDirectory(), "upfile");
if (System.IO.Directory.Exists(filePath) == false)//如果不存在就创建file文件夹
{
System.IO.Directory.CreateDirectory(filePath);
......
{
"ConnectionStrings": {
"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"SettlementRate": "0.60",
"SellCommissionFFBL": "0.15",
"JwtSecretKey": "@VIITTOREBORN*2018",
"JwtExpirTime": 86400,
"IsSendMsg": 2,
"AllowedHosts": "*",
"OpenValidation": "False",
"UploadSiteUrl": "http://192.168.1.36:8120",
"ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com",
"ErpViewFileSiteUrl": "http://imgfile.oytour.com",
"Mongo": "mongodb://47.96.25.130:27017",
"MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.1.13:8083/api/Mall/InsertFinanceBatchForMallIn",
"IncomeFinanceApi": "http://192.168.20.9:8083/api/Mall/InsertFinanceBatchForMallOut",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance",
"RabbitMqConfig": {
"HostName": "47.96.25.130",
"VirtualHost": "/",
"Port": 5672,
"UserName": "guest",
"Password": "viitto2019",
"QueenName": "vt_sys_message_test"
},
"RedisSetting": {
"RedisServer": "47.96.23.199",
"RedisPort": "6379",
"RedisPwd": "Viitto2018"
},
"VirtualDirectory": "WebFile",
//未填写 未打分 下降比例
"OKRMatterValue": "30,100,100",
//是否是线上环境
"IsOnline": false,
//退课流程编号
"BackClassFlowId": 1,
//分区校长岗位编号
"SchoolPostId": 3,
//教务长
"JiaoWuZhang": 8,
//留学就业部门主管审核编号[王涛]
"StudyAbroadDirectorId": 64,
//留学就业部门负责人审核编号[姚顺先]
"StudyAbroadManagerId": 52,
//合同默认抬头
"ContractDefaultTitle": "JH-DZ-CD-",
//消息推送AppId
"PushAppId": "JiaHeJiaoYu",
//是否推送消息
"IsPushMessage": "1",
//超过下班时间60分钟不能打卡
"MoreThanMinutes": 60,
//连续缺课课时
"AbsentHours": 12
"ConnectionStrings": {
"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"SettlementRate": "0.60",
"SellCommissionFFBL": "0.15",
"JwtSecretKey": "@VIITTOREBORN*2018",
"MallJwtSecretKey": "@VIITTOREBORN*2018",
"JwtExpirTime": 86400,
"IsSendMsg": 2,
"AllowedHosts": "*",
"OpenValidation": "False",
"UploadSiteUrl": "http://192.168.1.36:8120",
"ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com",
"ErpViewFileSiteUrl": "http://imgfile.oytour.com",
"Mongo": "mongodb://47.96.25.130:27017",
"MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.1.13:8083/api/Mall/InsertFinanceBatchForMallIn",
"IncomeFinanceApi": "http://192.168.20.9:8083/api/Mall/InsertFinanceBatchForMallOut",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance",
"JHTenantId": "15",
"JHMallBaseId": "5",
"RabbitMqConfig": {
"HostName": "47.96.25.130",
"VirtualHost": "/",
"Port": 5672,
"UserName": "guest",
"Password": "viitto2019",
"QueenName": "vt_sys_message_test"
},
"RedisSetting": {
"RedisServer": "47.96.23.199",
"RedisPort": "6379",
"RedisPwd": "Viitto2018"
},
"VirtualDirectory": "WebFile",
//未填写 未打分 下降比例
"OKRMatterValue": "30,100,100",
//是否是线上环境
"IsOnline": false,
//退课流程编号
"BackClassFlowId": 1,
//分区校长岗位编号
"SchoolPostId": 3,
//教务长
"JiaoWuZhang": 8,
//留学就业部门主管审核编号[王涛]
"StudyAbroadDirectorId": 64,
//留学就业部门负责人审核编号[姚顺先]
"StudyAbroadManagerId": 52,
//合同默认抬头
"ContractDefaultTitle": "JH-DZ-CD-",
//消息推送AppId
"PushAppId": "JiaHeJiaoYu",
//是否推送消息
"IsPushMessage": "1",
//超过下班时间60分钟不能打卡
"MoreThanMinutes": 60,
//连续缺课课时
"AbsentHours": 12
}
\ No newline at end of file
......@@ -60,7 +60,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.StudyAbroad", "E
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Web", "Edu.Module.Web\Edu.Module.Web.csproj", "{380ACD87-3D6C-474C-A0ED-A91BD8E26081}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Edu.Module.Duty", "Edu.Module.Duty\Edu.Module.Duty.csproj", "{3C354B2B-8706-49A6-A12A-5A64F28E7CDC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Duty", "Edu.Module.Duty\Edu.Module.Duty.csproj", "{3C354B2B-8706-49A6-A12A-5A64F28E7CDC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......
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