using System; using System.Collections.Generic; using System.Linq; using System.Web; using Edu.Cache.User; using Edu.Common; using Edu.Common.API; using Edu.Common.Enum.Course; using Edu.Common.Plugin; using Edu.Model.ViewModel.Contract; using Edu.Model.ViewModel.Course; using Edu.Module.Course; using Edu.WebApi.Filter; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; namespace Edu.WebApi.Controllers.Course { [Route("api/[controller]/[action]")] [ApiExceptionFilter] [ApiController] [EnableCors("AllowCors")] public class EducationContractController : BaseController { /// <summary> /// 教育合同处理类对象 /// </summary> private readonly EducationContractModule educationContractModule = AOP.AOPHelper.CreateAOPObject<EducationContractModule>(); #region 合同列表 /// <summary> /// 获取学员信息 /// </summary> /// <returns></returns> [HttpPost] public ApiResult GetStudentInfo() { int OrderId = base.ParmJObj.GetInt("OrderId", 0);//订单编号 int GuestId = base.ParmJObj.GetInt("GuestId", 0);//学员编号 var model = educationContractModule.GetStudentInfoModule(OrderId, GuestId); return ApiResult.Success("", model); } /// <summary> /// 获取合同分页列表 /// </summary> /// <returns></returns> [HttpPost] public ApiResult GetEducationContractPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString()); var dmodel = new RB_Education_Contract_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), ContractNo = base.ParmJObj.GetStringValue("ContractNo"), CType = (ContractTypeEnum)base.ParmJObj.GetInt("CType"), Status = base.ParmJObj.GetInt("Status"), StudentName = base.ParmJObj.GetStringValue("StudentName"), IsAduit = base.ParmJObj.GetInt("IsAduit") }; dmodel.Group_Id = userInfo.Group_Id; dmodel.CreateBy = userInfo.Id; var list = educationContractModule.GetEducationContractPageListModule(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.CType, CTypeName = x.CType.ToName(), IsStuSign = !string.IsNullOrEmpty(x.Sign) ? 1 : 0, x.OrderId, x.GuestId, x.ContractNo, x.StudentName, x.SchoolName, x.CourseName, x.CNYCaps, x.Money, x.Exam, x.Sign, x.Status, x.StatusStr, x.IsCompanySeal, x.CreateBy, x.CreateByName, x.CreateByPhoto, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } /// <summary> /// 获取合同分页列表 /// </summary> /// <returns></returns> [HttpPost] public ApiResult GetMyEducationContractPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString()); var dmodel = new RB_Education_Contract_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), ContractNo = base.ParmJObj.GetStringValue("ContractNo"), CType = (ContractTypeEnum)base.ParmJObj.GetInt("CType"), Status = base.ParmJObj.GetInt("Status"), StudentName = base.ParmJObj.GetStringValue("StudentName"), IsAduit = base.ParmJObj.GetInt("IsAduit"), IsQueryAll=base.ParmJObj.GetInt("IsQueryAll"), QCreateBy=base.ParmJObj.GetInt("QCreateBy"), }; dmodel.Group_Id = userInfo.Group_Id; if (dmodel.IsQueryAll == 0) { dmodel.CreateBy = userInfo.Id; } var list = educationContractModule.GetEducationContractPageListModule_V3(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.CType, CTypeName = x.CType.ToName(), IsStuSign = !string.IsNullOrEmpty(x.Sign) ? 1 : 0, x.OrderId, x.GuestId, x.ContractNo, x.StudentName, x.SchoolName, x.CourseName, x.CNYCaps, x.Money, x.Exam, x.Sign, x.Status, x.StatusStr, x.IsCompanySeal, x.CreateBy, x.CreateByName, x.CreateByPhoto, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm"), x.SchoolStatusStr, x.AdminStatusStr }); return ApiResult.Success("", pageModel); } /// <summary> /// 获取合同分页列表 /// </summary> /// <returns></returns> [HttpPost] public ApiResult GetEducationContractPageCodeList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString()); var dmodel = new RB_Education_Contract_ViewModel() { OrderId = base.ParmJObj.GetInt("OrderId"), ContractNo = base.ParmJObj.GetStringValue("ContractNo"), CType = (ContractTypeEnum)base.ParmJObj.GetInt("CType"), StudentName = base.ParmJObj.GetStringValue("StudentName"), IsAduit = base.ParmJObj.GetInt("IsAduit") }; List<RB_Education_Contract_ViewModel> list = new List<RB_Education_Contract_ViewModel>(); dmodel.Group_Id = userInfo.Group_Id; dmodel.CreateBy = userInfo.Id; int Type = 0; if (CheckUserActionAuth(Config.EducationContractSchool)) { dmodel.SelectEexamineStatus = "1"; Type = 1; } else if (CheckUserActionAuth(Config.EducationContractAdmin)) { dmodel.SelectEexamineStatus = "5,2"; Type = 2; } else { pageModel.Count = 0; pageModel.PageData = new { Type, Result = new List<object>() }; return ApiResult.Success("您暂无审核权限", pageModel); } list = educationContractModule.GetEducationContractPageList_V2(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); var Result = list.Select(x => new { x.Id, x.CType, CTypeName = x.CType.ToName(), IsStuSign = !string.IsNullOrEmpty(x.Sign) ? 1 : 0, x.OrderId, x.GuestId, x.ContractNo, x.StudentName, x.SchoolName, x.CourseName, x.CNYCaps, x.Money, x.Exam, x.Sign, x.Status, x.StatusStr, x.IsCompanySeal, x.CreateBy, x.CreateByName, x.CreateByPhoto, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm"), x.SchoolStatusStr, x.AdminStatusStr }); pageModel.PageData = new { Type, Result }; return ApiResult.Success("", pageModel); } /// <summary> /// 获取合同详情 /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] public ApiResult GetEducationContractInfo() { int ContractId = base.ParmJObj.GetInt("ContractId", 0);//合同id var model = educationContractModule.GetEducationContractModule(ContractId); if (model == null) { return ApiResult.Failed("合同不存在"); } return ApiResult.Success(data: model); } /// <summary> /// 单独新增合同 /// </summary> /// <returns></returns> [HttpPost] public ApiResult SetEducationContractInfo() { var userInfo = base.UserInfo; var dmodel = new RB_Education_Contract_ViewModel() { Id = base.ParmJObj.GetInt("Id"), CType = (ContractTypeEnum)base.ParmJObj.GetInt("CType"), OrderId = base.ParmJObj.GetInt("OrderId"), GuestId = base.ParmJObj.GetInt("GuestId"), ContractNo = base.ParmJObj.GetStringValue("ContractNo"), StudentName = base.ParmJObj.GetStringValue("StudentName"), StuBirth = base.ParmJObj.GetDateTime("StuBirth"), StuSex = base.ParmJObj.GetInt("StuSex"), StuAddress = base.ParmJObj.GetStringValue("StuAddress"), StuTel = base.ParmJObj.GetStringValue("StuTel"), StuEmail = base.ParmJObj.GetStringValue("StuEmail"), ParentName = base.ParmJObj.GetStringValue("ParentName"), ParentRelation = base.ParmJObj.GetStringValue("ParentRelation"), ParentTel = base.ParmJObj.GetStringValue("ParentTel"), ParentEmail = base.ParmJObj.GetStringValue("ParentEmail"), UrgentName = base.ParmJObj.GetStringValue("UrgentName"), UrgentRelation = base.ParmJObj.GetStringValue("UrgentRelation"), UrgentTel = base.ParmJObj.GetStringValue("UrgentTel"), UrgentEmail = base.ParmJObj.GetStringValue("UrgentEmail"), GuardianIDCard = base.ParmJObj.GetStringValue("GuardianIDCard"), CourseName = base.ParmJObj.GetStringValue("CourseName"), SchoolName = base.ParmJObj.GetStringValue("SchoolName"), SchoolPrincipal = base.ParmJObj.GetStringValue("SchoolPrincipal"), StartLevel = base.ParmJObj.GetStringValue("StartLevel"), CourseConsultant = base.ParmJObj.GetStringValue("CourseConsultant"), Payee = base.ParmJObj.GetStringValue("Payee"), FirstClassHours = base.ParmJObj.GetDecimal("FirstClassHours"), FirstCourseFee = base.ParmJObj.GetDecimal("FirstCourseFee"), FirstBookFee = base.ParmJObj.GetDecimal("FirstBookFee"), FirstClassFee = base.ParmJObj.GetDecimal("FirstClassFee"), FirstDiscountMoney = base.ParmJObj.GetDecimal("FirstDiscountMoney"), FirstMoney = base.ParmJObj.GetDecimal("FirstMoney"), FirstPayDate = base.ParmJObj.GetDateTime("FirstPayDate"), SecondClassHours = base.ParmJObj.GetDecimal("SecondClassHours"), SecondCourseFee = base.ParmJObj.GetDecimal("SecondCourseFee"), SecondBookFee = base.ParmJObj.GetDecimal("SecondBookFee"), SecondClassFee = base.ParmJObj.GetDecimal("SecondClassFee"), SecondDiscountMoney = base.ParmJObj.GetDecimal("SecondDiscountMoney"), SecondMoney = base.ParmJObj.GetDecimal("SecondMoney"), SecondPayDate = base.ParmJObj.GetDateTime("SecondPayDate"), ThirdClassHours = base.ParmJObj.GetDecimal("ThirdClassHours"), ThirdCourseFee = base.ParmJObj.GetDecimal("ThirdCourseFee"), ThirdBookFee = base.ParmJObj.GetDecimal("ThirdBookFee"), ThirdClassFee = base.ParmJObj.GetDecimal("ThirdClassFee"), ThirdDiscountMoney = base.ParmJObj.GetDecimal("ThirdDiscountMoney"), ThirdMoney = base.ParmJObj.GetDecimal("ThirdMoney"), ThirdPayDate = base.ParmJObj.GetDateTime("ThirdPayDate"), CNYCaps = base.ParmJObj.GetStringValue("CNYCaps"), Money = base.ParmJObj.GetDecimal("Money"), Exam = base.ParmJObj.GetStringValue("Exam"), IsSupplement = base.ParmJObj.GetInt("IsSupplement"), }; dmodel.Group_Id = userInfo.Group_Id; dmodel.CreateBy = userInfo.Id; dmodel.CreateTime = DateTime.Now; dmodel.UpdateBy = userInfo.Id; dmodel.UpdateTime = DateTime.Now; dmodel.Status = 0; bool flag = educationContractModule.SetEducationContractModule(dmodel); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// <summary> /// 设置合同审核 /// </summary> /// <returns></returns> [HttpPost] public ApiResult SetEducationContractAudit() { var userInfo = base.UserInfo; int ContractId = base.ParmJObj.GetInt("ContractId", 0);//合同id int State = base.ParmJObj.GetInt("State", 1);// 状态 1提交审核 2通过 3驳回 4取消 5盖章 if (ContractId <= 0) { return ApiResult.ParamIsNull("请传递合同id"); } bool flag = educationContractModule.SetEducationContractAuditModule(ContractId, State, userInfo); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// <summary> /// 设置合同审核 /// </summary> /// <returns></returns> [HttpPost] public ApiResult SetEducationContractAuditCode() { var userInfo = base.UserInfo; int ContractId = base.ParmJObj.GetInt("ContractId", 0);//合同id int oldType = 0; if (CheckUserActionAuth(Config.EducationContractSchool)) { oldType = 1; } else if (CheckUserActionAuth(Config.EducationContractAdmin)) { oldType = 2; } if (oldType == 0)//没有审核权限的 { return ApiResult.ParamIsNull("您暂无审核权限"); } int State = base.ParmJObj.GetInt("State", 1);// 状态 1提交审核 2通过 3驳回 4取消 5盖章,6-学管审核通过 if (oldType == 1)//学管审核 { if (State == 2 || State == 5) { return ApiResult.ParamIsNull("您暂无审核权限"); } } else if (oldType == 2) { if (State == 6) { return ApiResult.ParamIsNull("您暂无审核权限"); } } if (ContractId <= 0) { return ApiResult.ParamIsNull("请传递合同id"); } bool flag = educationContractModule.SetEducationContractAuditModule_V2(ContractId, State, oldType, userInfo); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// <summary> /// 复制合同 /// </summary> /// <returns></returns> [HttpPost] public ApiResult SetEducationContractCopy() { var userInfo = base.UserInfo; int ContractId = base.ParmJObj.GetInt("ContractId", 0);//合同id if (ContractId <= 0) { return ApiResult.ParamIsNull("请传递合同id"); } var model = educationContractModule.GetEducationContractModule(ContractId); model.Id = 0; model.Group_Id = userInfo.Group_Id; model.CreateBy = userInfo.Id; model.CreateTime = DateTime.Now; model.UpdateBy = userInfo.Id; model.UpdateTime = DateTime.Now; model.Status = 0; bool flag = educationContractModule.SetEducationContractModule(model); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// <summary> /// 合同签字 /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] public ApiResult SetEducationContractSign() { int ContractId = base.ParmJObj.GetInt("ContractId", 0);//合同id string Sign = base.ParmJObj.GetStringValue("Sign");//签名 if (ContractId <= 0) { return ApiResult.ParamIsNull("请传递合同id"); } bool flag = educationContractModule.SetEducationContractSignModule(ContractId, Sign); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// <summary> /// 下载pdf /// </summary> /// <returns></returns> public ApiResult GetDownLoadEducationContract() { string time = DateTime.Now.Ticks.ToString(); string path = "/upfile/Temporary/" + time + ".pdf"; string basepath = AppContext.BaseDirectory; string tempPath = basepath + "\\upfile\\Temporary\\" + time + ".pdf"; var ID = base.ParmJObj.GetInt("ContractId"); var CType = base.ParmJObj.GetInt("CType"); string curl = Common.Config.UploadSiteUrl + string.Format(@"/Home/EducationContractInfo?ID={0}&CType={1}", ID, CType); var flag = new ToPdfHelper().HtmlWJtoPdf(tempPath, curl); return ApiResult.Success("", path); } #endregion /// <summary> /// 获取退课分页列表 /// </summary> /// <returns></returns> [HttpPost] public ApiResult GetBackClassProtocolPage() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString()); var query = new RB_BackClass_Protocol_ViewModel() { PartyAName = base.ParmJObj.GetStringValue("PartyAName"), AuditStatus = base.ParmJObj.GetInt("AuditStatus"), QOrderId = base.ParmJObj.GetInt("QOrderId"), ProtocolNum = base.ParmJObj.GetStringValue("ProtocolNum"), IsQueryAll=base.ParmJObj.GetInt("IsQueryAll"), QCreateBy=base.ParmJObj.GetInt("QCreateBy"), Id=base.ParmJObj.GetInt("Id"), }; query.Group_Id = userInfo.Group_Id; if (query.IsQueryAll == 0) { query.CreateBy = userInfo.Id; } var list = educationContractModule.GetBackClassProtocolPageModule(pageModel.PageIndex, pageModel.PageSize, query, out long count); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.ReceiptId, x.ProtocolNum, x.PartyAName, x.OldCourseName, CreateByName= UserReidsCache.GetUserLoginInfo((x?.CreateBy??0))?.AccountName??"", x.CreateTimeStr, x.AuditStatusStr, x.AuditStatus, IsStuSign = !string.IsNullOrEmpty(x.PartyASign) ? 1 : 0, x.IsCompanySeal, x.IsSure, x.PartyASign, x.BackAccount, x.BackAccountName, x.GuestId, }); return ApiResult.Success("", pageModel); } /// <summary> /// 获取退课协议详情 /// </summary> /// <returns></returns> [AllowAnonymous] [HttpPost] public ApiResult GetBackClassProtocol() { int Id = base.ParmJObj.GetInt("Id"); var model = educationContractModule.GetBackClassProtocolModule(Id); return ApiResult.Success(data: model); } /// <summary> /// 退课协议学员签字 /// </summary> /// <returns></returns> [AllowAnonymous] [HttpPost] public ApiResult SetBackClassProtocolSign() { int Id = base.ParmJObj.GetInt("Id"); string sign = base.ParmJObj.GetStringValue("sign"); var flag = educationContractModule.SetBackClassProtocolSignModule(Id, sign); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// <summary> /// 退课协议销售确认 /// </summary> /// <returns></returns> public ApiResult SetBackClassProtocolSure() { int Id = base.ParmJObj.GetInt("Id"); int IsSure = base.ParmJObj.GetInt("IsSure"); int ClientId = base.ParmJObj.GetInt("ClientId", 0); var flag = educationContractModule.SetBackClassProtocolSureModule(Id, IsSure, ClientId,base.UserInfo,out string message); return flag ? ApiResult.Success() : ApiResult.Failed(message: message); } /// <summary> /// 生成小程序二维码 /// </summary> /// <returns></returns> public ApiResult CreateWeChatCode() { string url = base.ParmJObj.GetStringValue("url"); var newUrl = "/pages/webbox/webbox?u="+ HttpUtility.UrlEncode(url); int width = base.ParmJObj.GetInt("width"); if (width <= 0) { width = 430; } string tokenKey = "DATA_WeiXinToken_" + Common.Config.AppID; string token = Cache.WeChat.WeChatReidsCache2.GetToken(tokenKey); if (Config.IsLocal == 1) { token = Common.Config.TempToken; } if (string.IsNullOrEmpty(token)) { token = Common.Plugin.WeChatHelper.GetAccessToken(Common.Config.AppID, Common.Config.AppSecret); Cache.WeChat.WeChatReidsCache2.Set(tokenKey, token); } string filePath = Common.Plugin.WeChatHelper.GetWeChatQRCode(token, newUrl, width); return ApiResult.Success(data: filePath); } /// <summary> /// 生成小程序二维码(财务收据) /// </summary> /// <returns></returns> public ApiResult CreateWeChatCodeForReceipt() { string url = base.ParmJObj.GetStringValue("url"); var newUrl = "/pages/index/index?id=" + HttpUtility.UrlEncode(url) + "&JumpType=20"; int width = base.ParmJObj.GetInt("width"); if (width <= 0) { width = 430; } string tokenKey = "DATA_WeiXinToken_" + Common.Config.AppID; string token = Cache.WeChat.WeChatReidsCache2.GetToken(tokenKey); if (Config.IsLocal == 1) { token = Common.Config.TempToken; } if (string.IsNullOrEmpty(token)) { token = Common.Plugin.WeChatHelper.GetAccessToken(Common.Config.AppID, Common.Config.AppSecret); Cache.WeChat.WeChatReidsCache2.Set(tokenKey, token); } string filePath = Common.Plugin.WeChatHelper.GetWeChatQRCode(token, newUrl, width); return ApiResult.Success(data: filePath); } } }