@@ -103,6 +103,16 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
{ | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 综合查询 | |||
/// </summary> | |||
/// <returns></returns> | |||
[HttpGet] | |||
public ActionResult IndexQuery() | |||
{ | |||
return View(); | |||
} | |||
#endregion | |||
#region 获取数据 | |||
@@ -0,0 +1,54 @@ | |||
@{ | |||
ViewBag.Title = "学籍异动列表"; | |||
Layout = "~/Views/Shared/_Index.cshtml"; | |||
} | |||
<div class="lr-layout "> | |||
<div class="lr-layout-center"> | |||
<div class="lr-layout-wrap lr-layout-wrap-notitle"> | |||
<div class="lr-layout-tool"> | |||
<div class="lr-layout-tool-left"> | |||
<div class="lr-layout-tool-item"> | |||
<div id="multiple_condition_query"> | |||
<div class="lr-query-formcontent"> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">异动类型</div> | |||
<div id="AnomalousType"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">姓名</div> | |||
<input id="StuName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">申请人</div> | |||
<div id="CreateUserId"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">审核人</div> | |||
<div id="CheckUserId"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">保留学籍</div> | |||
<div id="StuStatus"></div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-tool-right"> | |||
<div class=" btn-group btn-group-sm"> | |||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||
</div> | |||
<div class=" btn-group btn-group-sm"> | |||
<a id="lr_views" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 查看</a> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-body" id="gridtable"></div> | |||
</div> | |||
</div> | |||
</div> | |||
@Html.AppendJsFile("/Areas/EducationalAdministration/Views/StuTransferInfo/IndexQuery.js") |
@@ -0,0 +1,323 @@ | |||
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn) | |||
* Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||
* 创建人:超级管理员 | |||
* 日 期:2023-01-04 15:03 | |||
* 描 述:学籍异动列表 | |||
*/ | |||
var selectedRow; | |||
var refreshGirdData; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
init: function () { | |||
page.initGird(); | |||
page.bind(); | |||
}, | |||
bind: function () { | |||
// 查询 | |||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||
page.search(queryJson); | |||
}, 290, 400); | |||
$('#AnomalousType').lrDataItemSelect({ code: 'StuChangeType' }); | |||
$('#ClassNo').lrselect({ | |||
allowSearch: true, | |||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||
param: { strWhere: "1=1 AND CheckMark=1 order by classno desc" }, | |||
value: "classno", | |||
text: "classname" | |||
}); | |||
$('#CheckUserId').lrDataSourceSelect({ code: 'teacheruserdata', value: 'f_encode', text: 'f_realname' }); | |||
$('#CreateUserId').lrDataSourceSelect({ code: 'teacheruserdata', value: 'f_encode', text: 'f_realname' }); | |||
$('#StuStatus').lrDataItemSelect({ code: 'YesOrNoInt' }); | |||
// 刷新 | |||
$('#lr_refresh').on('click', function () { | |||
location.reload(); | |||
}); | |||
// 查看 | |||
$('#lr_views').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('ID'); | |||
if (learun.checkrow(keyValue)) { | |||
if (keyValue.indexOf(',') != -1) { | |||
learun.alert.warning("只能选择一条记录进行查看!"); | |||
return; | |||
} | |||
learun.layerForm({ | |||
id: 'formview', | |||
title: '查看', | |||
url: top.$.rootUrl + '/EducationalAdministration/StuTransferInfo/FormView?keyValue=' + keyValue, | |||
width: 1000, | |||
height: 600, | |||
btn: null | |||
}); | |||
} | |||
}); | |||
}, | |||
initGird: function () { | |||
$('#gridtable').lrAuthorizeJfGridLei({ | |||
url: top.$.rootUrl + '/EducationalAdministration/StuTransferInfo/GetPageList', | |||
headData: [ | |||
{ label: '姓名', name: 'StuName', width: 100, align: "left" }, | |||
{ label: '学号', name: 'StuNo', width: 160, align: "left" }, | |||
{ | |||
label: "性别", name: "GenderNo", width: 80, align: "left", | |||
formatter: function (cellvalue) { | |||
return cellvalue == true ? "男" : "女"; | |||
} | |||
}, | |||
{ label: '身份证号', name: 'IdentityCardNo', width: 200, align: "left" }, | |||
{ | |||
label: '原班级', name: 'ClassNo', width: 150, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'bjsj', | |||
key: value, | |||
keyId: 'classno', | |||
callback: function (_data) { | |||
callback(_data['classname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ | |||
label: '原专业', name: 'MajorNo', width: 150, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdMajorInfo', | |||
key: value, | |||
keyId: 'majorno', | |||
callback: function (_data) { | |||
callback(_data['majorname']); | |||
} | |||
}); | |||
} | |||
}, | |||
//{ | |||
// label: '原系部', name: 'DeptNo', width: 100, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('custmerData', { | |||
// url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdDeptInfo', | |||
// key: value, | |||
// keyId: 'deptno', | |||
// callback: function (_data) { | |||
// callback(_data['deptname']); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
{ label: '年级', name: 'Grade', width: 100, align: "left" }, | |||
{ | |||
label: '学制', name: 'EduSystem', width: 200, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('dataItem', { | |||
key: value, | |||
code: 'EduSystem', | |||
callback: function (_data) { | |||
callback(_data.text); | |||
} | |||
}); | |||
} | |||
}, | |||
//{ | |||
// label: '入班日期', name: 'LeaveDate', width: 100, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ | |||
// label: '离班日期', name: 'EnteDate', width: 100, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ | |||
// label: '现班级', name: 'NewClassNo', width: 100, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('custmerData', { | |||
// url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'bjsj', | |||
// key: value, | |||
// keyId: 'classno', | |||
// callback: function (_data) { | |||
// callback(_data['classname']); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ | |||
// label: '现专业', name: 'NewMajorNo', width: 100, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('custmerData', { | |||
// url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdMajorInfo', | |||
// key: value, | |||
// keyId: 'majorno', | |||
// callback: function (_data) { | |||
// callback(_data['majorname']); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ | |||
// label: '现系部', name: 'NewDeptNo', width: 100, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('custmerData', { | |||
// url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdDeptInfo', | |||
// key: value, | |||
// keyId: 'deptno', | |||
// callback: function (_data) { | |||
// callback(_data['deptname']); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ label: '现年级', name: 'NewGrade', width: 60, align: "left" }, | |||
//{ | |||
// label: '创建时间', name: 'CreateTime', width: 100, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ | |||
// label: '创建用户', name: 'CreateUserId', width: 200, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('custmerData', { | |||
// url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'BaseUser', | |||
// key: value, | |||
// keyId: 'f_userid', | |||
// callback: function (_data) { | |||
// callback(_data['f_realname']); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ | |||
// label: '审核时间', name: 'CheckTime', width: 200, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ | |||
// label: '审核用户', name: 'CheckUserId', width: 200, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('custmerData', { | |||
// url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'BaseUser', | |||
// key: value, | |||
// keyId: 'f_userid', | |||
// callback: function (_data) { | |||
// callback(_data['f_realname']); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
{ | |||
label: '审核状态', name: 'F_EnabledMark', width: 200, align: "left", | |||
formatter: function (cellvalue) { | |||
return cellvalue == "1" ? "<span class=\"label label-success\">已生效</span>" : "<span class=\"label label-danger\">未生效</span>"; | |||
} | |||
}, | |||
{ | |||
label: '异动类型', name: 'AnomalousType', width: 100, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('dataItem', { | |||
key: value, | |||
code: 'StuChangeType', | |||
callback: function (_data) { | |||
callback(_data.text); | |||
} | |||
}); | |||
} | |||
}, | |||
//{ label: '异动原因', name: 'ChangeReason', width: 300, align: "left" }, | |||
//{ | |||
// label: '是否保留学籍', name: 'StuStatus', width: 80, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('dataItem', { | |||
// key: value, | |||
// code: 'YesOrNoInt', | |||
// callback: function (_data) { | |||
// callback(_data.text); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ | |||
// label: '是否注销账号', name: 'F_WriteMark', width: 80, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('dataItem', { | |||
// key: value, | |||
// code: 'YesOrNoInt', | |||
// callback: function (_data) { | |||
// callback(_data.text); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ | |||
// label: '是否恢复学籍', name: 'RecoverStuStatus', width: 80, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('dataItem', { | |||
// key: value, | |||
// code: 'YesOrNoInt', | |||
// callback: function (_data) { | |||
// callback(_data.text); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ | |||
// label: '是否恢复账号', name: 'RecoverWriteMark', width: 80, align: "left", | |||
// formatterAsync: function (callback, value, row, op, $cell) { | |||
// learun.clientdata.getAsync('dataItem', { | |||
// key: value, | |||
// code: 'YesOrNoInt', | |||
// callback: function (_data) { | |||
// callback(_data.text); | |||
// } | |||
// }); | |||
// } | |||
//}, | |||
//{ label: '修学年限', name: 'SuspensionPeriod', width: 200, align: "left" }, | |||
//{ | |||
// label: '休学开始时间', name: 'SuspensionBeginTime', width: 100, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ | |||
// label: '休学结束时间', name: 'SuspensionEndTime', width: 100, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ label: '转学前学校', name: 'TransferSchool', width: 150, align: "left" }, | |||
//{ label: '转学前学号', name: 'TransferStuNo', width: 100, align: "left" }, | |||
//{ | |||
// label: '出身日期', name: 'Birthday', width: 100, align: "left", | |||
// formatter: function (cellvalue) { | |||
// return learun.formatDate(cellvalue, 'yyyy-MM-dd'); | |||
// } | |||
//}, | |||
//{ label: '民族', name: 'NationalityNo', width: 80, align: "left" }, | |||
//{ label: '省', name: 'Province', width: 100, align: "left" }, | |||
//{ label: '市', name: 'City', width: 100, align: "left" }, | |||
//{ label: '县/区', name: 'County', width: 100, align: "left" }, | |||
//{ label: '联系电话', name: 'Mobile', width: 100, align: "left" }, | |||
//{ label: '家庭地址', name: 'MailAddress', width: 200, align: "left" }, | |||
//{ label: '转出学校', name: 'OutSchool', width: 100, align: "left" }, | |||
//{ label: '备注', name: 'Remark', width: 500, align: "left" }, | |||
], | |||
mainId: 'ID', | |||
isPage: true, | |||
rows: 100, | |||
}); | |||
page.search(); | |||
}, | |||
search: function (param) { | |||
param = param || {}; | |||
param.SqlParameter = ' and F_EnabledMark = 1 '; | |||
$('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); | |||
} | |||
}; | |||
refreshGirdData = function () { | |||
$('#gridtable').jfGridSet('reload'); | |||
}; | |||
page.init(); | |||
} |
@@ -1366,6 +1366,7 @@ | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\ScoreQueryAllIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\CheckIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\FormView.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\IndexQuery.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\RolloffIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\ReturnIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\IntoIndex.js" /> | |||
@@ -8074,6 +8075,7 @@ | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\ReturnIndex.cshtml" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\RolloffIndex.cshtml" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\FormView.cshtml" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuTransferInfo\IndexQuery.cshtml" /> | |||
<None Include="Properties\PublishProfiles\CustomProfile.pubxml" /> | |||
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" /> | |||
<Content Include="Views\Login\Default-beifen.cshtml" /> | |||
@@ -128,6 +128,12 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
strSql.Append("SELECT "); | |||
strSql.Append(fieldSql); | |||
strSql.Append(" FROM StuScoreNotPassTran t "); | |||
var userlogin = LoginUserInfo.Get(); | |||
if (userlogin.Description == "学生") | |||
{ | |||
strSql.Append(" where 1= 1 and Stuno = '" + userlogin.account + "'"); | |||
} | |||
return this.BaseRepository("CollegeMIS").FindList<StuScoreNotPassTranEntity>(strSql.ToString(), pagination); | |||
} | |||
catch (Exception ex) | |||
@@ -128,6 +128,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
strSql.Append("SELECT "); | |||
strSql.Append(fieldSql); | |||
strSql.Append(" FROM StuScoreNotPassTwoTran t "); | |||
var userlogin = LoginUserInfo.Get(); | |||
if (userlogin.Description == "学生") | |||
{ | |||
strSql.Append(" where 1= 1 and Stuno = '" + userlogin.account + "'"); | |||
} | |||
return this.BaseRepository("CollegeMIS").FindList<StuScoreNotPassTwoTranEntity>(strSql.ToString(), pagination); | |||
} | |||
catch (Exception ex) | |||
@@ -130,6 +130,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
strSql.Append("SELECT "); | |||
strSql.Append(fieldSql); | |||
strSql.Append(" FROM StuScoreTran t "); | |||
var userlogin = LoginUserInfo.Get(); | |||
if (userlogin.Description == "学生") | |||
{ | |||
strSql.Append(" where 1= 1 and Stuno = '" + userlogin.account + "'"); | |||
} | |||
return this.BaseRepository("CollegeMIS").FindList<StuScoreTranEntity>(strSql.ToString(), pagination); | |||
} | |||
catch (Exception ex) | |||
@@ -90,10 +90,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
dp.Add("ClassNo", queryParam["ClassNo"].ToString(), DbType.String); | |||
strSql.Append(" AND t.ClassNo = @ClassNo "); | |||
} | |||
if (!queryParam["ClassNo"].IsEmpty()) | |||
if (!queryParam["CreateUserId"].IsEmpty()) | |||
{ | |||
dp.Add("CheckUserId", queryParam["CheckUserId"].ToString(), DbType.String); | |||
strSql.Append(" AND t.CheckUserId = @CheckUserId "); | |||
dp.Add("CreateUserId", queryParam["CreateUserId"].ToString(), DbType.String); | |||
strSql.Append(" AND t.CreateUserId = @CreateUserId "); | |||
} | |||
if (!queryParam["CheckUserId"].IsEmpty()) | |||
{ | |||
@@ -0,0 +1,10 @@ | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<configuration> | |||
<startup> | |||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> | |||
</startup> | |||
<appSettings> | |||
<!--长阳API地址,如有多个请用英文分号隔开--> | |||
<add key="cyapi" value="https://www.baidu.com/" /> | |||
</appSettings> | |||
</configuration> |
@@ -0,0 +1,27 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.ServiceProcess; | |||
using System.Text; | |||
using System.Threading; | |||
using System.Threading.Tasks; | |||
namespace VisitService | |||
{ | |||
static class Program | |||
{ | |||
/// <summary> | |||
/// 应用程序的主入口点。 | |||
/// </summary> | |||
static void Main() | |||
{ | |||
ServiceBase[] ServicesToRun; | |||
ServicesToRun = new ServiceBase[] | |||
{ | |||
new QuanjiangDigitalSchollVisitService() | |||
}; | |||
ServiceBase.Run(ServicesToRun); | |||
} | |||
} | |||
} |
@@ -0,0 +1,60 @@ | |||
namespace VisitService | |||
{ | |||
partial class ProjectInstaller | |||
{ | |||
/// <summary> | |||
/// 必需的设计器变量。 | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// 清理所有正在使用的资源。 | |||
/// </summary> | |||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region 组件设计器生成的代码 | |||
/// <summary> | |||
/// 设计器支持所需的方法 - 不要修改 | |||
/// 使用代码编辑器修改此方法的内容。 | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller(); | |||
this.QuanjiangDigitalSchollVisitService = new System.ServiceProcess.ServiceInstaller(); | |||
// | |||
// serviceProcessInstaller1 | |||
// | |||
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; | |||
this.serviceProcessInstaller1.Password = null; | |||
this.serviceProcessInstaller1.Username = null; | |||
// | |||
// QuanjiangDigitalSchollVisitService | |||
// | |||
this.QuanjiangDigitalSchollVisitService.Description = "定时访问api"; | |||
this.QuanjiangDigitalSchollVisitService.DisplayName = "QuanjiangDigitalSchollVisitService"; | |||
this.QuanjiangDigitalSchollVisitService.ServiceName = "QuanjiangDigitalSchollVisitService"; | |||
this.QuanjiangDigitalSchollVisitService.StartType = System.ServiceProcess.ServiceStartMode.Automatic; | |||
// | |||
// ProjectInstaller | |||
// | |||
this.Installers.AddRange(new System.Configuration.Install.Installer[] { | |||
this.serviceProcessInstaller1, | |||
this.QuanjiangDigitalSchollVisitService}); | |||
} | |||
#endregion | |||
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1; | |||
private System.ServiceProcess.ServiceInstaller QuanjiangDigitalSchollVisitService; | |||
} | |||
} |
@@ -0,0 +1,19 @@ | |||
using System; | |||
using System.Collections; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Configuration.Install; | |||
using System.Linq; | |||
using System.Threading.Tasks; | |||
namespace VisitService | |||
{ | |||
[RunInstaller(true)] | |||
public partial class ProjectInstaller : System.Configuration.Install.Installer | |||
{ | |||
public ProjectInstaller() | |||
{ | |||
InitializeComponent(); | |||
} | |||
} | |||
} |
@@ -0,0 +1,129 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<root> | |||
<!-- | |||
Microsoft ResX Schema | |||
Version 2.0 | |||
The primary goals of this format is to allow a simple XML format | |||
that is mostly human readable. The generation and parsing of the | |||
various data types are done through the TypeConverter classes | |||
associated with the data types. | |||
Example: | |||
... ado.net/XML headers & schema ... | |||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||
<resheader name="version">2.0</resheader> | |||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||
</data> | |||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
<comment>This is a comment</comment> | |||
</data> | |||
There are any number of "resheader" rows that contain simple | |||
name/value pairs. | |||
Each data row contains a name, and value. The row also contains a | |||
type or mimetype. Type corresponds to a .NET class that support | |||
text/value conversion through the TypeConverter architecture. | |||
Classes that don't support this are serialized and stored with the | |||
mimetype set. | |||
The mimetype is used for serialized objects, and tells the | |||
ResXResourceReader how to depersist the object. This is currently not | |||
extensible. For a given mimetype the value must be set accordingly: | |||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||
that the ResXResourceWriter will generate, however the reader can | |||
read any of the formats listed below. | |||
mimetype: application/x-microsoft.net.object.binary.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.soap.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
value : The object must be serialized into a byte array | |||
: using a System.ComponentModel.TypeConverter | |||
: and then encoded with base64 encoding. | |||
--> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<metadata name="serviceProcessInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
<value>17, 55</value> | |||
</metadata> | |||
<metadata name="QuanjiangDigitalSchollVisitService.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
<value>208, 17</value> | |||
</metadata> | |||
<metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||
<value>False</value> | |||
</metadata> | |||
</root> |
@@ -0,0 +1,36 @@ | |||
using System.Reflection; | |||
using System.Runtime.CompilerServices; | |||
using System.Runtime.InteropServices; | |||
// 有关程序集的一般信息由以下 | |||
// 控制。更改这些特性值可修改 | |||
// 与程序集关联的信息。 | |||
[assembly: AssemblyTitle("VisitService")] | |||
[assembly: AssemblyDescription("")] | |||
[assembly: AssemblyConfiguration("")] | |||
[assembly: AssemblyCompany("HP Inc.")] | |||
[assembly: AssemblyProduct("VisitService")] | |||
[assembly: AssemblyCopyright("Copyright © HP Inc. 2023")] | |||
[assembly: AssemblyTrademark("")] | |||
[assembly: AssemblyCulture("")] | |||
// 将 ComVisible 设置为 false 会使此程序集中的类型 | |||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 | |||
//请将此类型的 ComVisible 特性设置为 true。 | |||
[assembly: ComVisible(false)] | |||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID | |||
[assembly: Guid("1d482884-8749-41e7-b1e3-362612799615")] | |||
// 程序集的版本信息由下列四个值组成: | |||
// | |||
// 主版本 | |||
// 次版本 | |||
// 生成号 | |||
// 修订号 | |||
// | |||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 | |||
// 方法是按如下所示使用“*”: : | |||
// [assembly: AssemblyVersion("1.0.*")] | |||
[assembly: AssemblyVersion("1.0.0.0")] | |||
[assembly: AssemblyFileVersion("1.0.0.0")] |
@@ -0,0 +1,74 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||
<PropertyGroup> | |||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||
<ProjectGuid>{1D482884-8749-41E7-B1E3-362612799615}</ProjectGuid> | |||
<OutputType>WinExe</OutputType> | |||
<RootNamespace>Quanjiang.DigitalScholl.VisitService</RootNamespace> | |||
<AssemblyName>Quanjiang.DigitalScholl.VisitService</AssemblyName> | |||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> | |||
<FileAlignment>512</FileAlignment> | |||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> | |||
<Deterministic>true</Deterministic> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||
<PlatformTarget>AnyCPU</PlatformTarget> | |||
<DebugSymbols>true</DebugSymbols> | |||
<DebugType>full</DebugType> | |||
<Optimize>false</Optimize> | |||
<OutputPath>bin\Debug\</OutputPath> | |||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||
<ErrorReport>prompt</ErrorReport> | |||
<WarningLevel>4</WarningLevel> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||
<PlatformTarget>AnyCPU</PlatformTarget> | |||
<DebugType>pdbonly</DebugType> | |||
<Optimize>true</Optimize> | |||
<OutputPath>bin\Release\</OutputPath> | |||
<DefineConstants>TRACE</DefineConstants> | |||
<ErrorReport>prompt</ErrorReport> | |||
<WarningLevel>4</WarningLevel> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<Reference Include="System" /> | |||
<Reference Include="System.configuration" /> | |||
<Reference Include="System.Configuration.Install" /> | |||
<Reference Include="System.Core" /> | |||
<Reference Include="System.Management" /> | |||
<Reference Include="System.Xml.Linq" /> | |||
<Reference Include="System.Data.DataSetExtensions" /> | |||
<Reference Include="Microsoft.CSharp" /> | |||
<Reference Include="System.Data" /> | |||
<Reference Include="System.Net.Http" /> | |||
<Reference Include="System.ServiceProcess" /> | |||
<Reference Include="System.Xml" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Compile Include="ProjectInstaller.cs"> | |||
<SubType>Component</SubType> | |||
</Compile> | |||
<Compile Include="ProjectInstaller.Designer.cs"> | |||
<DependentUpon>ProjectInstaller.cs</DependentUpon> | |||
</Compile> | |||
<Compile Include="Service1.cs"> | |||
<SubType>Component</SubType> | |||
</Compile> | |||
<Compile Include="Service1.Designer.cs"> | |||
<DependentUpon>Service1.cs</DependentUpon> | |||
</Compile> | |||
<Compile Include="Program.cs" /> | |||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<None Include="App.config" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<EmbeddedResource Include="ProjectInstaller.resx"> | |||
<DependentUpon>ProjectInstaller.cs</DependentUpon> | |||
</EmbeddedResource> | |||
</ItemGroup> | |||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||
</Project> |
@@ -0,0 +1,37 @@ | |||
namespace VisitService | |||
{ | |||
partial class QuanjiangDigitalSchollVisitService | |||
{ | |||
/// <summary> | |||
/// 必需的设计器变量。 | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// 清理所有正在使用的资源。 | |||
/// </summary> | |||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region 组件设计器生成的代码 | |||
/// <summary> | |||
/// 设计器支持所需的方法 - 不要修改 | |||
/// 使用代码编辑器修改此方法的内容。 | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
components = new System.ComponentModel.Container(); | |||
this.ServiceName = "QuanjiangDigitalSchollVisitService"; | |||
} | |||
#endregion | |||
} | |||
} |
@@ -0,0 +1,91 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Data; | |||
using System.Diagnostics; | |||
using System.IO; | |||
using System.Linq; | |||
using System.Net; | |||
using System.ServiceProcess; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace VisitService | |||
{ | |||
public partial class QuanjiangDigitalSchollVisitService : ServiceBase | |||
{ | |||
public QuanjiangDigitalSchollVisitService() | |||
{ | |||
InitializeComponent(); | |||
} | |||
private System.Timers.Timer timer1 = new System.Timers.Timer(60000); | |||
private static string pathbase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; | |||
//private static string logPath = pathbase + @"\" + DateTime.Now.ToString("yyyyMMdd") + @"\log_start.txt"; | |||
protected override void OnStart(string[] args) | |||
{ | |||
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed); | |||
timer1.AutoReset = true; | |||
timer1.Enabled = true; | |||
timer1.Start(); | |||
} | |||
protected override void OnStop() | |||
{ | |||
this.timer1.Enabled = false; | |||
} | |||
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) | |||
{ | |||
var logPath_timer = pathbase + @"\" + DateTime.Now.ToString("yyyyMMdd") + @"\log.txt"; | |||
try | |||
{ | |||
//记录日志 | |||
if (!Directory.Exists(pathbase + @"\" + DateTime.Now.ToString("yyyyMMdd"))) | |||
{ | |||
//不存在文件夹则创建 | |||
DirectoryInfo directoryInfo = new DirectoryInfo(pathbase + @"\" + DateTime.Now.ToString("yyyyMMdd")); | |||
directoryInfo.Create(); | |||
} | |||
if (!File.Exists(logPath_timer)) | |||
{ | |||
FileStream fs = File.Create(logPath_timer);//创建文件 | |||
fs.Close(); | |||
} | |||
var url = System.Configuration.ConfigurationManager.AppSettings["cyapi"].ToString(); | |||
var arr = url.Split(';'); | |||
foreach (var item in arr) | |||
{ | |||
try | |||
{ | |||
System.IO.File.AppendAllText(logPath_timer, | |||
"\r\n" + DateTime.Now + "\r\n开始访问:" + item); | |||
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); | |||
myRequest.KeepAlive = false; | |||
myRequest.Method = "HEAD"; //设置提交方式可以为"get","head"等 | |||
//myRequest.Timeout = 60000; //设置网页响应时间长度 | |||
myRequest.AllowAutoRedirect = false; //是否允许自动重定向 | |||
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); | |||
// return (myResponse.StatusCode == HttpStatusCode.OK);//返回响应的状态 | |||
System.IO.File.AppendAllText(logPath_timer, | |||
"\r\n" + DateTime.Now + "\r\n访问结果:" + myResponse.StatusCode); | |||
myResponse.Dispose(); | |||
} | |||
catch (Exception ex) | |||
{ | |||
System.IO.File.AppendAllText(logPath_timer, | |||
"\r\n" + DateTime.Now + "\r\n访问结果异常,异常信息:" + ex.Message + ",访问地址:" + item); | |||
} | |||
} | |||
} | |||
catch (Exception ex) | |||
{ | |||
System.IO.File.AppendAllText(logPath_timer, | |||
"\r\n" + DateTime.Now + "\r\n访问结果异常,异常信息:" + ex.Message); | |||
} | |||
} | |||
} | |||
} |
@@ -128,6 +128,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quanjiang.DigitalSchool.Asp | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quanjiang.DigitalScholl.SendSms", "Quanjiang.DigitalScholl.SendSms\Quanjiang.DigitalScholl.SendSms.csproj", "{65CC5CDC-9638-4DD0-B2D6-3182CC16D2DA}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quanjiang.DigitalScholl.VisitService", "VisitService\Quanjiang.DigitalScholl.VisitService.csproj", "{1D482884-8749-41E7-B1E3-362612799615}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
Debug|Android = Debug|Android | |||
@@ -1662,6 +1664,42 @@ Global | |||
{65CC5CDC-9638-4DD0-B2D6-3182CC16D2DA}.Release|Windows-x64.Build.0 = Release|Any CPU | |||
{65CC5CDC-9638-4DD0-B2D6-3182CC16D2DA}.Release|Windows-x86.ActiveCfg = Release|Any CPU | |||
{65CC5CDC-9638-4DD0-B2D6-3182CC16D2DA}.Release|Windows-x86.Build.0 = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Android.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Android.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|iOS.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|iOS.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Windows-ARM.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Windows-ARM.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Windows-x64.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Windows-x64.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Windows-x86.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Debug|Windows-x86.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Android.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Android.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Any CPU.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Any CPU.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|iOS.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|iOS.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Windows-ARM.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Windows-ARM.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Windows-x64.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Windows-x64.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Windows-x86.ActiveCfg = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Development|Windows-x86.Build.0 = Debug|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Android.ActiveCfg = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Android.Build.0 = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|iOS.ActiveCfg = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|iOS.Build.0 = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Windows-ARM.ActiveCfg = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Windows-ARM.Build.0 = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Windows-x64.ActiveCfg = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Windows-x64.Build.0 = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Windows-x86.ActiveCfg = Release|Any CPU | |||
{1D482884-8749-41E7-B1E3-362612799615}.Release|Windows-x86.Build.0 = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
@@ -1713,7 +1751,7 @@ Global | |||
{E05A2B9A-A939-450F-9A44-A8B3201D055A} = {ED258CD0-0A0C-490B-9D8F-B4CEC4467251} | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35 | |||
SolutionGuid = {968C278F-4142-4DFF-96B0-B3D70A649451} | |||
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35 | |||
EndGlobalSection | |||
EndGlobal |