|
|
@@ -1,8 +1,17 @@ |
|
|
|
using Learun.Application.TwoDevelopment.EducationalAdministration; |
|
|
|
using Learun.Application.Organization; |
|
|
|
using Learun.Application.TwoDevelopment.EducationalAdministration; |
|
|
|
using Learun.Application.TwoDevelopment.LR_Desktop; |
|
|
|
using Learun.Util; |
|
|
|
using Learun.Util.Operat; |
|
|
|
using Microsoft.AspNet.SignalR.Client; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Configuration; |
|
|
|
using System.Data; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using System.Web; |
|
|
|
using System.Web.Mvc; |
|
|
|
|
|
|
|
namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
@@ -17,6 +26,10 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
public class ArrangeLessonTermController : MvcControllerBase |
|
|
|
{ |
|
|
|
private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL(); |
|
|
|
private Sys_InformationPushIBLL sys_InformationPushIBLL = new Sys_InformationPushBLL(); |
|
|
|
private UserIBLL userIbll = new UserBLL(); |
|
|
|
private WeChatConfigIBLL weChatConfigIbll = new WeChatConfigBLL(); |
|
|
|
private WeChatTempletIBLL weChatTempletIbll = new WeChatTempletBLL(); |
|
|
|
|
|
|
|
#region 视图功能 |
|
|
|
|
|
|
@@ -27,7 +40,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
[HttpGet] |
|
|
|
public ActionResult Index() |
|
|
|
{ |
|
|
|
return View(); |
|
|
|
return View(); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 表单页 |
|
|
@@ -36,7 +49,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
[HttpGet] |
|
|
|
public ActionResult Form() |
|
|
|
{ |
|
|
|
return View(); |
|
|
|
return View(); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 按条件清空排课数据 |
|
|
@@ -71,7 +84,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
/// <returns></returns> |
|
|
|
[HttpGet] |
|
|
|
[AjaxOnly] |
|
|
|
public ActionResult GetList( string queryJson ) |
|
|
|
public ActionResult GetList(string queryJson) |
|
|
|
{ |
|
|
|
var data = arrangeLessonTermIBLL.GetList(queryJson).ToList() |
|
|
|
.OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ThenBy(x => x.DeptNo).ThenBy(x => x.MajorNo).ThenBy(x => x.LessonNo).ThenBy(x => x.TeachClassNo.Replace(x.LessonName, "")).ThenBy(x => x.EmpNo).ThenBy(x => x.ClassroomNo).ThenBy(x => x.LessonDate); |
|
|
@@ -133,7 +146,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
[HttpPost] |
|
|
|
[ValidateAntiForgeryToken] |
|
|
|
[AjaxOnly] |
|
|
|
public ActionResult SaveForm(string keyValue,ArrangeLessonTermEntity entity) |
|
|
|
public ActionResult SaveForm(string keyValue, ArrangeLessonTermEntity entity) |
|
|
|
{ |
|
|
|
arrangeLessonTermIBLL.SaveEntity(keyValue, entity); |
|
|
|
return Success("保存成功!"); |
|
|
@@ -148,7 +161,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
[AjaxOnly] |
|
|
|
public async Task<ActionResult> AsyncArrangeLessonData() |
|
|
|
{ |
|
|
|
var data =await arrangeLessonTermIBLL.AsyncArrangeLessonData(); |
|
|
|
var data = await arrangeLessonTermIBLL.AsyncArrangeLessonData(); |
|
|
|
return Success(data); |
|
|
|
} |
|
|
|
|
|
|
@@ -185,6 +198,34 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
public async Task<ActionResult> AsyncArrangeLessonDataByCondition(ArrangeLessonTermEntity entity) |
|
|
|
{ |
|
|
|
var data = await arrangeLessonTermIBLL.AsyncArrangeLessonDataByCondition(entity); |
|
|
|
if (data) |
|
|
|
{ |
|
|
|
//读取信息推送管理-课表同步推送(09)的配置 |
|
|
|
var informationPushEntity = sys_InformationPushIBLL.GetEntityByPushItem("09"); |
|
|
|
if (informationPushEntity != null && informationPushEntity.Status == true) |
|
|
|
{ |
|
|
|
var title = string.Format("{0}学年第{1}学期必修课课表同步", entity.AcademicYearNo, entity.Semester); |
|
|
|
var needpostuserlist = userIbll.GetAllList().Where(m => m.F_DeleteMark != 1 && m.F_EnabledMark == 1 && m.F_Description == "教师").ToList(); |
|
|
|
//微信推送 |
|
|
|
try |
|
|
|
{ |
|
|
|
PushWeixin(needpostuserlist, title); |
|
|
|
} |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
} |
|
|
|
//飞星推送 |
|
|
|
await Task.Run(async () => |
|
|
|
{ |
|
|
|
using (var hubConnection = new HubConnection(ConfigurationManager.AppSettings["CommunicationServeraddress"])) |
|
|
|
{ |
|
|
|
var hubProxy = hubConnection.CreateHubProxy("SignalRHub"); |
|
|
|
await hubConnection.Start(); |
|
|
|
await hubProxy.Invoke("PushAnnouncement", LoginUserInfo.Get().userId, "课表同步", Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(title)).Length < 20 ? Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(title)) : Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(title)).Substring(0, 20), "synclesson", string.Join(",", needpostuserlist.Select(m => m.F_UserId)), ""); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
return Success(data); |
|
|
|
} |
|
|
|
/// <summary> |
|
|
@@ -194,11 +235,68 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers |
|
|
|
/// <returns></returns> |
|
|
|
[HttpPost] |
|
|
|
[AjaxOnly] |
|
|
|
public ActionResult InitAsyncDataByCondition(ArrangeLessonTermEntity entity) |
|
|
|
public ActionResult InitAsyncDataByCondition(ArrangeLessonTermEntity entity) |
|
|
|
{ |
|
|
|
var data = arrangeLessonTermIBLL.InitAsyncDataByCondition(entity); |
|
|
|
return Success(data); |
|
|
|
} |
|
|
|
public void PushWeixin(List<UserEntity> needpostuserlist, string title) |
|
|
|
{ |
|
|
|
var WeChatConfigentity = weChatConfigIbll.GetEnableEntity(); |
|
|
|
string appid = WeChatConfigentity.APPId; |
|
|
|
string secret = WeChatConfigentity.secret; |
|
|
|
var wechatemplete = weChatTempletIbll.GetWeChatTemplateEntityByCodeConfigId(WeChatConfigentity.ID, "task"); |
|
|
|
string weixintaskurl = wechatemplete.TUrl; |
|
|
|
string weixintasktempid = wechatemplete.TempId; |
|
|
|
var responsejson = Util.HttpMethods.HttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret); |
|
|
|
|
|
|
|
OperateLogModel operateLogModel = new OperateLogModel(); |
|
|
|
operateLogModel.title = title; |
|
|
|
operateLogModel.type = OperationType.Other; |
|
|
|
operateLogModel.url = "ArrangeLessonTermController"; |
|
|
|
operateLogModel.sourceObjectId = "002"; |
|
|
|
operateLogModel.sourceContentJson = responsejson; |
|
|
|
OperatorHelper.Instance.WriteOperateLog(operateLogModel); |
|
|
|
|
|
|
|
foreach (UserEntity userinfo in needpostuserlist) |
|
|
|
{ |
|
|
|
if (userinfo != null && !string.IsNullOrEmpty(userinfo.OpenIdForWeixin)) |
|
|
|
{ |
|
|
|
//执行推送任务 |
|
|
|
if (!string.IsNullOrEmpty(appid) && !string.IsNullOrEmpty(secret) && !string.IsNullOrEmpty(weixintaskurl) && !string.IsNullOrEmpty(weixintasktempid)) |
|
|
|
{ |
|
|
|
if (!string.IsNullOrEmpty(responsejson)) |
|
|
|
{ |
|
|
|
var weixintokenobj = JsonConvert.DeserializeObject<dynamic>(responsejson); |
|
|
|
if (string.IsNullOrEmpty(weixintokenobj.errcode)) |
|
|
|
{ |
|
|
|
string access_token = weixintokenobj.access_token; |
|
|
|
string jsondata = "{\"touser\":\"" + userinfo.OpenIdForWeixin + "\"," + |
|
|
|
"\"template_id\":\"" + weixintasktempid + "\"," + |
|
|
|
"\"url\":\"" + weixintaskurl + "\"," + |
|
|
|
"\"data\":{" + |
|
|
|
"\"first\": {\"value\":\"您有新的课表同步\",\"color\":\"#173177\"}," + |
|
|
|
"\"keyword1\":{\"value\":\"课表同步\",\"color\":\"#173177\"}," + |
|
|
|
"\"keyword2\": {\"value\":\"" + title + "\",\"color\":\"#173177\"}," + |
|
|
|
"\"keyword3\": {\"value\":\"待查看\",\"color\":\"#173177\"}," + |
|
|
|
"\"keyword4\": {\"value\":\"您有新的课表同步【" + title + "】\",\"color\":\"#173177\"}" + |
|
|
|
"}" + |
|
|
|
"}"; |
|
|
|
string pushresult = Util.HttpMethods.HttpPost("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token, jsondata); |
|
|
|
|
|
|
|
operateLogModel.title = title; |
|
|
|
operateLogModel.type = OperationType.Other; |
|
|
|
operateLogModel.url = "ArrangeLessonTermController"; |
|
|
|
operateLogModel.sourceObjectId = "002"; |
|
|
|
operateLogModel.sourceContentJson = pushresult; |
|
|
|
OperatorHelper.Instance.WriteOperateLog(operateLogModel); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |