using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Telerik.Web.UI; using VRS.Util; namespace VRS.Management { public partial class UserManage : BaseListPage { DataService.BLL.admin_user bll = new DataService.BLL.admin_user(); DataService.BLL.admin_log log = new DataService.BLL.admin_log(); DataService.BLL.admin_user bll_user = new DataService.BLL.admin_user(); DataService.BLL.admin_school bll_school = new DataService.BLL.admin_school(); DataService.BLL.pro_subject_batch_user bll_subject_batch_user = new DataService.BLL.pro_subject_batch_user(); protected override void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); if (!IsPostBack) { var user = DataService.BLL.admin_user.load_login(); var user_login = bll.GetModel(user.user_id); //var column = dataList.MasterTableView.Columns[6]; if (bll.IsAdministrator(user_login)) { tr_school.Visible = true; #region 管理员隐藏导入模块 //excel.Visible = false; //btn_import.Visible = false; #endregion //column.Visible = true; BindSchool(dp_school, ""); } //else if (bll.IsTeacher(user_login)) else if (bll.IsTeacher(user_login) || bll.IsSchoolAdministrator(user_login)) { tr_school.Visible = false; BindSchoolGrade(user_login.school_id, cbx_schoolgrade, ""); var admin_item = ddp_role.Items.Where(s => s.Text == "管理员").FirstOrDefault(); if (null != admin_item) { ddp_role.Items.Remove(admin_item); } //column.Visible = false; excel.Visible = true; btn_import.Visible = true; excel.HRef = "~/Upload/Excel/学员管理模板.xls"; } excel.HRef = "~/Upload/Excel/学员管理模板.xls"; BindRoleFour(ddp_role, user_login); DataLoad(); } } protected void dp_school_SelectedIndexChanged(object sender, Telerik.Web.UI.DropDownListEventArgs e) { var value = dp_school.SelectedValue; BindSchoolGrade(value, cbx_schoolgrade, ""); DataLoad(); } protected void cbx_schoolgrade_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { DataLoad(); } protected void ddp_role_SelectedIndexChanged(object sender, DropDownListEventArgs e) { DataLoad(); } protected List load_data() { //StringBuilder query = new StringBuilder(" 1 = 1 and id_card!='admin' "); // 过滤总管理员 //var query = new StringBuilder(" 1 = 1 and is_lock=0 "); var adminRoleId = bll_user.getAdminRoleId(); var schoolAdminRoleId = bll_user.getSchoolAdminRoleId(); var teacherRoleId = bll_user.getTeacherRoleId(); var studentRoleId = bll_user.getStudentRoleId(); var query = new StringBuilder(string.Format(" 1 = 1 and role_id!='{0}' ", adminRoleId));// 过滤超级管理员 var userlogin = DataService.BLL.admin_user.load_login(); var user_login = bll_user.GetModel(userlogin.user_id); if (!bll.IsAdministrator(user_login)) //不是超级管理员 { query.AppendFormat(" and role_id!='{0}' ", schoolAdminRoleId);// 过滤学校管理员 } if (bll.IsAdministrator(user_login)) { if (!string.IsNullOrEmpty(dp_school.SelectedValue)) { query.AppendFormat(" AND school_id = '{0}' ", dp_school.SelectedValue); } } //else //老师只能看到自己学校的(学生和老师) $$$$ //{ // query.AppendFormat(" AND school_id = '{0}' ", user_login.school_id); //} else if (bll.IsSchoolAdministrator(user_login)) //学校管理员 只能看到自己学校的(学生和老师) $$$$ { query.AppendFormat(" AND school_id = '{0}' and (role_id ='{1}' or role_id ='{2}' ) ", user_login.school_id, teacherRoleId, studentRoleId); } else if (bll.IsTeacher(user_login)) //老师只能看到自己学校的(学生和老师) $$$$ { query.AppendFormat(" AND school_id = '{0}' and (role_id ='{1}' or role_id ='{2}' ) ", user_login.school_id, teacherRoleId, studentRoleId); } if (!string.IsNullOrWhiteSpace(ddp_role.SelectedValue)) { query.AppendFormat(" AND role_id = '{0}' ", ddp_role.SelectedValue); } if (!string.IsNullOrEmpty(cbx_schoolgrade.Text)) { query.AppendFormat(" AND grade = '{0}' ", cbx_schoolgrade.Text); } if (!string.IsNullOrWhiteSpace(login_name.Text.Trim())) { query.AppendFormat(" AND (login_name LIKE '%{0}%' or job_number LIKE '%{0}%') ", login_name.Text.Trim()); } if (!string.IsNullOrWhiteSpace(real_name.Text.Trim())) { query.AppendFormat(" AND real_name LIKE '%{0}%' ", real_name.Text.Trim()); } if (!string.IsNullOrEmpty(dp_lock.SelectedValue)) { query.AppendFormat(" AND is_lock= {0} ", dp_lock.SelectedValue); } var data = bll.GetModelList(query.ToString()).OrderByDescending(s => s.create_time).ToList(); var school_list = bll_school.GetModelList(""); foreach (var user in data) { user.role_name_dsc = ConfigInfo.DicRole.ContainsKey(user.role_id) ? ConfigInfo.DicRole[user.role_id] : ""; var obj = school_list.FirstOrDefault(s => s.id == user.school_id); if (null != obj) { user.school_name = obj.school; } if (!bll.IsAdministrator(user)) { user.IsAdministrator = false; } else { user.IsAdministrator = true; } } return data; } protected override void DataLoad() { var data = load_data(); dataList.DataSource = data; dataList.Rebind(); } protected override void GridList_PageIndexChanged(object sender, GridPageChangedEventArgs e) { DataLoad(); } protected override void GridList_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e) { DataLoad(); } protected override void GridList_SortCommand(object sender, GridSortCommandEventArgs e) { DataLoad(); } protected override void GrdList_DeleteCommand(object sender, GridCommandEventArgs e) { string Id = (e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"].ToString(); if (Id.Equals("admin")) { RadAjaxManager1.Alert("admin账户无法删除!"); return; } //bll.Delete(Id); var model = bll.GetModel(Id); model.is_lock = 1; bll.Update(model); DataLoad(); } protected override void AjaxManager_AjaxRequest(object sender, AjaxRequestEventArgs e) { } protected void btnSelect_Click(object sender, EventArgs e) { DataLoad(); } protected void btnDelete_Click(object sender, EventArgs e) { var model = bll.GetModel(IdInput.Value); //锁定 //model.is_lock = 1; //if (bll.Update(model)) //判断用户是否有成绩 var Exists = bll.IsUserExistsResult(IdInput.Value); if (Exists) { RadAjaxManager1.Alert("该账户参与过考试无法删除!"); return; } //直接删除 if (bll.Delete(IdInput.Value)) { #region 删除批次科目考试的学员 var query = string.Format(" user_id='{0}' ", IdInput.Value); var list = bll_subject_batch_user.GetModelList(query); foreach (var item in list) { bll_subject_batch_user.Delete(item.id); } #endregion log.write_log("删除成功。" + "姓名:" + model.real_name + ",ID:" + IdInput.Value); } DataLoad(); } /// /// 批量删除 /// /// /// protected void btnBatchDelete_Click(object sender, EventArgs e) { var count = dataList.SelectedItems.Count; if (count <= 0) { RadAjaxManager1.Alert("请先选择要删除的用户!"); return; } List list_admin_user = new List(); foreach (var obj in dataList.SelectedItems) { GridDataItem item = obj as GridDataItem; var user_id = item.GetDataKeyValue("user_id").ToString(); list_admin_user.Add("'"+user_id+"'"); } var sql = string.Join(",", list_admin_user.ToArray()); if (bll.DeleteList(sql)) { DataLoad(); } } /// /// 批量停用 /// /// /// protected void btnBatchLock_Click(object sender, EventArgs e) { //dataList.SelectedValues var count = dataList.SelectedItems.Count; if (count <= 0) { RadAjaxManager1.Alert("学员不能为空!"); return; } List list_admin_user = new List(); foreach (var obj in dataList.SelectedItems) { GridDataItem item = obj as GridDataItem; var user_id = item.GetDataKeyValue("user_id").ToString(); list_admin_user.Add(user_id); } foreach (var user_id in list_admin_user) { var user = bll.GetModel(user_id); user.is_lock = 1; bll.Update(user); } DataLoad(); } /// /// 导出excel /// /// /// protected void btnExportALL_Click(object sender, EventArgs e) { var list = dataList.SelectedItems.Count; List list_result = new List(); foreach (var obj in dataList.SelectedItems) { GridDataItem item = obj as GridDataItem; var result_id = item.GetDataKeyValue("user_id").ToString(); var model = bll.GetModel(result_id); if (null != model) { list_result.Add(model); } } int count = list_result.Count; string filePath = Server.MapPath("~/Download/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = string.Format("{0}.xls", "用户管理_" + DateTime.Now.ToString("yyyyMMddHHmmss")); filePath = filePath + fileName; StringBuilder query = new StringBuilder(" 1 = 1 and login_name!='admin' "); /* if (!string.IsNullOrWhiteSpace(login_name.Text.Trim())) { query.AppendFormat(" AND login_name LIKE '%{0}%' ", login_name.Text.Trim()); } */ if (!string.IsNullOrWhiteSpace(real_name.Text.Trim())) { query.AppendFormat(" AND real_name LIKE '%{0}%' ", real_name.Text.Trim()); } DataTable source; var data = bll.GetList(query.ToString()); source = data.Tables[0]; //学号 姓名 性别 身份证号 出生日期 专业 年级 手机号码 备注 var table = new DataTable(); //table.Columns.Add("账号"); table.Columns.Add("部门"); table.Columns.Add("姓名"); table.Columns.Add("性别"); table.Columns.Add("身份证号"); //table.Columns.Add("出生日期"); //table.Columns.Add("专业"); //table.Columns.Add("年级"); //table.Columns.Add("手机号码"); //table.Columns.Add("备注"); for (var i = 0; i < source.Rows.Count; i++) { var row = table.NewRow(); var res = source.Rows[i]; //row["账号"] = res["login_name"]; row["部门"] = res["dep_name"]; row["姓名"] = res["real_name"]; row["性别"] = res["sex"]; row["身份证号"] = res["id_card"]; /* var dtBirth = DateTime.Now; if (DateTime.TryParse(res["birth_date"].ToString(), out dtBirth)) { row["出生日期"] = dtBirth.ToString("yyyy-MM-dd"); } */ //row["专业"] = res["major"]; //row["年级"] = res["grade"]; //row["手机号码"] = res["mobile"]; // row["备注"] = res["r1"]; table.Rows.Add(row); } VRS.Util.Import.DateTableToExcel(table, filePath); FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } /// /// 导出excel /// /// /// protected void btnExport_Click(object sender, EventArgs e) { #region selected check box list /* var list = dataList.SelectedItems.Count; List list_result = new List(); foreach (var obj in dataList.SelectedItems) { GridDataItem item = obj as GridDataItem; var result_id = item.GetDataKeyValue("user_id").ToString(); var model = bll.GetModel(result_id); if (null != model) { list_result.Add(model); } } */ #endregion var list_result = load_data(); int count = list_result.Count; if (count <= 0) { RadAjaxManager1.Alert("请勾选导出的数据!"); return; } string filePath = Server.MapPath("~/Download/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = string.Format("{0}.xls", "用户列表_" + DateTime.Now.ToString("yyyyMMddHHmmss")); filePath = filePath + fileName; //角色 学校 班级 姓名 登录账号 手机号码 备注 var table = new DataTable(); table.Columns.Add("角色"); table.Columns.Add("学校"); table.Columns.Add("班级"); table.Columns.Add("姓名"); table.Columns.Add("登录账号"); table.Columns.Add("学号工号"); table.Columns.Add("手机号码"); table.Columns.Add("密码"); table.Columns.Add("备注"); var user_login = DataService.BLL.admin_user.load_login(); var userModel = bll_user.GetModel(user_login.user_id); //if (bll.IsAdministrator(userModel)) //{ // table.Columns.Add("角色"); //} for (var i = 0; i < list_result.Count; i++) { var item = list_result[i]; var row = table.NewRow(); row["角色"] = ConfigInfo.DicRole.ContainsKey(item.role_id) ? ConfigInfo.DicRole[item.role_id] : ""; row["学校"] = item.school_name; row["班级"] = item.grade; row["姓名"] = item.real_name; row["登录账号"] = item.login_name; row["学号工号"] = item.job_number; row["手机号码"] = item.mobile; row["密码"] = item.r6; row["备注"] = item.r1; //if (bll.IsAdministrator(userModel)) //{ // row["角色"] = ConfigInfo.DicRole.ContainsKey(item.role_id) ? ConfigInfo.DicRole[item.role_id] : ""; //} table.Rows.Add(row); } VRS.Util.Import.DateTableToExcel(table, filePath); FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } protected void dataList_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; Button btn_start = e.Item.FindControl("btn_start") as Button; Button btn_stop = e.Item.FindControl("btn_stop") as Button; int state = int.Parse(item.GetDataKeyValue("is_lock").ToString()); if (state == 1) //禁用 { btn_start.Visible = true; btn_stop.Visible = false; } else if (state == 0) //启用 { btn_start.Visible = false; btn_stop.Visible = true; //e.Item.CssClass = "row_highlight"; } } } protected void dataList_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "start") { var user_id = (e.Item as GridDataItem).GetDataKeyValue("user_id").ToString(); var model = bll.GetModel(user_id); //////=========检查license 开始============================== var role_id_current = model.role_id; var user_login = model; //添加老师 if (role_id_current == bll.getTeacherRoleId()) { #region 1 老师 限制提示 var school = bll_school.GetModel(user_login.school_id); if (!string.IsNullOrEmpty(school.r1) && school.r1 != "-1") { var limit_number = int.Parse(school.r1); var school_id = user_login.school_id; //只统计已启用用户$$$ var exist_number = bll.GetStartedUsers(school_id, role_id_current); if (exist_number >= limit_number) { //RadAjaxManager1.Alert(string.Format("当前学校老师已达上限{0}!", limit_number)); RadAjaxManager1.Alert(string.Format("当前学校,老师已达上限!")); return; } } #endregion } //添加学生 else if (role_id_current == bll.getStudentRoleId()) { #region 2 学生 限制提示 var school = bll_school.GetModel(user_login.school_id); if (!string.IsNullOrEmpty(school.r2) && school.r2 != "-1") { var limit_number = int.Parse(school.r2); var school_id = user_login.school_id; //只统计已启用用户$$$ var exist_number = bll.GetStartedUsers(school_id, role_id_current); if (exist_number >= limit_number) { //RadAjaxManager1.Alert(string.Format("当前学校学生已达上限{0}!", limit_number)); RadAjaxManager1.Alert(string.Format("当前学校,学生已达上限!")); return; } } #endregion } /////=====检查license 结束========================================= model.is_lock = 0; if (bll.Update(model)) { log.write_log("启用用户成功。" + "名称:" + model.real_name + ",id:" + model.user_id); //RadAjaxManager1.ResponseScripts.Add("alert('启用考试批次成功!');"); DataLoad(); } else RadAjaxManager1.Alert("启用用户失败!"); } else if (e.CommandName == "stop") { var user_id = (e.Item as GridDataItem).GetDataKeyValue("user_id").ToString(); var model = bll.GetModel(user_id); /* var now = DateTime.Now; if (now >= model.start_time && now < model.end_time) { RadAjaxManager1.ResponseScripts.Add("alert('该考试批次正在进行中,禁止停用!') "); return; } */ model.is_lock = 1; //停用 if (bll.Update(model)) { log.write_log("停用用户成功。" + "姓名:" + model.real_name + ",id:" + model.user_id); //RadAjaxManager1.ResponseScripts.Add("alert('停用考试批次成功!');"); DataLoad(); } else RadAjaxManager1.Alert("停用用户失败!"); } } protected void dp_lock_SelectedIndexChanged(object sender, DropDownListEventArgs e) { DataLoad(); } } }