gyhlw_dotnet/网站项目/VRS/Management/UserManage.aspx.cs

641 lines
24 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<DataService.Model.admin_user> 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();
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBatchDelete_Click(object sender, EventArgs e)
{
var count = dataList.SelectedItems.Count;
if (count <= 0)
{
RadAjaxManager1.Alert("请先选择要删除的用户!");
return;
}
List<string> list_admin_user = new List<string>();
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();
}
}
/// <summary>
/// 批量停用
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBatchLock_Click(object sender, EventArgs e)
{
//dataList.SelectedValues
var count = dataList.SelectedItems.Count;
if (count <= 0)
{
RadAjaxManager1.Alert("学员不能为空!");
return;
}
List<string> list_admin_user = new List<string>();
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();
}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExportALL_Click(object sender, EventArgs e)
{
var list = dataList.SelectedItems.Count;
List<DataService.Model.admin_user> list_result = new List<DataService.Model.admin_user>();
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();
}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExport_Click(object sender, EventArgs e)
{
#region selected check box list
/*
var list = dataList.SelectedItems.Count;
List<DataService.Model.admin_user> list_result = new List<DataService.Model.admin_user>();
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();
}
}
}