using FangYar.Common; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; namespace FangYar.WebUI.ashx { /// /// MenuHandler 的摘要说明 /// public class MenuHandler : IHttpHandler { private FangYar.BLL.BaseUserBLL bll = new BLL.BaseUserBLL(); private FangYar.BLL.FIRE.FIRE_ORG bll_org = new FangYar.BLL.FIRE.FIRE_ORG(); public void ProcessRequest(HttpContext context) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Other, "菜单操作请求", ""); context.Response.ContentType = "text/json"; string action = context.Request.Params["Action"]; string returnstr = ""; switch (action) { case "List": returnstr = GetUserList(context); break; case "Add": returnstr = AddUser(context); break; case "Edit": returnstr = DelUser(context); break; case "Del": returnstr = DelUser(context); break; case "EditPwd": returnstr = DelUser(context); break; case "GetUserMenu": returnstr = GetUserMenu(context); break; case "typegetmenu": returnstr = typegetmenu(context); break; } context.Response.Write(returnstr); } //查询 private string GetUserList(HttpContext context) { string returnstr = ""; try { string keywords = context.Request.Params["keywords"]; string where = null; if (!string.IsNullOrEmpty(keywords)) { where = "USERS_UID like '" + keywords + "' or USERS_NAME like '" + keywords + "' "; } returnstr = "{\"code\":0,\"msg\":\"\","; List list = bll.QueryList(1, 10, where, null); returnstr += "\"count\":" + list.Count + ",\"data\":"; if (list.Count == 0) { returnstr += "[]"; } else { returnstr += FangYar.Common.JsonHelper.ToJson(list); } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "菜单操作请求", "查询异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "菜单操作请求", "查询"); return returnstr; } //添加 private string AddUser(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string userUID = context.Request.Params["userUID"]; string userPwd = context.Request.Params["userPwd"]; string userType = context.Request.Params["userType"]; string userName = context.Request.Params["userName"]; if (string.IsNullOrEmpty(userUID)) { msg = "账号不能为空!"; } else if (userUID.Length < 4) { msg = "账号长度最少为4个字符!"; } else if (string.IsNullOrEmpty(userPwd)) { msg = "密码不能为空!"; } else if (userUID.Length < 4) { msg = "密码长度最少为4个字符!"; } else if (string.IsNullOrEmpty(userName)) { msg = "名称不能为空!"; } else if (bll.CheckLoginByUserID(userUID) != null) { msg = "用户已存在!"; } else { FangYar.Model.BaseUserModel model = new Model.BaseUserModel(); model.ID = Guid.NewGuid().ToString("N"); model.USERS_UID = userUID; model.USERS_PWD = FangYar.Common.Md5.GetMD5String(userPwd); model.USERS_NAME = userName; model.USERS_TYPE = userType; if (bll.AddUser(model)) { msg = "添加成功!"; code = 1; } else { msg = "添加失败!"; } } } catch (Exception e) { msg = "添加失败!"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "菜单操作请求", "添加异常:" + e); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Add, "菜单操作请求", "添加"); return returnstr; } //修改 private string EditUser(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string ID = context.Request.Params["ID"]; string userUID = context.Request.Params["userUID"]; string userPwd = context.Request.Params["userPwd"]; string userType = context.Request.Params["userType"]; string userName = context.Request.Params["userName"]; FangYar.Model.BaseUserModel model = bll.GetUserByID(ID); if (model == null) { msg = "用户不存在!"; } else { model.USERS_UID = userUID; model.USERS_PWD = FangYar.Common.Md5.GetMD5String(userPwd); model.USERS_NAME = userName; model.USERS_TYPE = userType; if (bll.AddUser(model)) { msg = "修改成功!"; code = 1; } else { msg = "修改失败!"; } } } catch (Exception e) { msg = "修改失败!"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "菜单操作请求", "修改异常:" + e); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Update, "菜单操作请求", "修改"); return returnstr; } //删除 private string DelUser(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string UIDList = context.Request.Params["UIDList"]; if (bll.DeleteUser(UIDList)) { msg = "删除成功!"; code = 1; } else { msg = "删除失败!"; } } catch (Exception e) { msg = "删除失败!"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "菜单操作请求", "删除异常:" + e); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Delete, "菜单操作请求", "删除"); return returnstr; } //修改密码 private string EditPwd(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string ID = context.Request.Params["ID"]; string userUID = context.Request.Params["userUID"]; string userPwd = context.Request.Params["userPwd"]; string userType = context.Request.Params["userType"]; string userName = context.Request.Params["userName"]; FangYar.Model.BaseUserModel model = bll.GetUserByID(ID); if (string.IsNullOrEmpty(userPwd)) { msg = "密码不能为空!"; } else if (userUID.Length < 4) { msg = "密码长度最少为4个字符!"; } else if (model == null) { msg = "用户不存在!"; } else if (model.USERS_PWD == FangYar.Common.Md5.GetMD5String(userPwd)) { msg = "修改密码不能和旧密码一致!"; } else { model.USERS_UID = userUID; model.USERS_PWD = FangYar.Common.Md5.GetMD5String(userPwd); model.USERS_NAME = userName; model.USERS_TYPE = userType; if (bll.AddUser(model)) { msg = "密码修改成功!"; code = 1; } else { msg = "密码修改失败!"; } } } catch (Exception e) { msg = "密码修改失败!"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "菜单操作请求", "修改密码异常:" + e); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Update, "菜单操作请求", "修改密码"); return returnstr; } //private string GetUserMenu2(HttpContext context) //{ // string returnstr = "["; // try // { // FangYar.Model.LoginUserModel user = FangYar.WebUI.WebCommon.HttpUtil.GetUser(context); // if (user != null) // { // DataTable dt = getmenu(user, null); // string id, title, url, fid, type, level, state, action, icon; // for (int i = 0; i < dt.Rows.Count; i++) // { // id = dt.Rows[i]["ID"].ToString(); // title = dt.Rows[i]["MENU_TITLE"].ToString(); // url = dt.Rows[i]["MENU_URL"].ToString(); // fid = dt.Rows[i]["MENU_PARENT"].ToString(); // type = dt.Rows[i]["MENU_TYPE"].ToString(); // level = dt.Rows[i]["MENU_LEVEL"].ToString(); // state = dt.Rows[i]["MENU_FLAG"].ToString(); // action = dt.Rows[i]["MENU_ACTION"].ToString(); // icon = dt.Rows[i]["MENU_ICON"].ToString(); // if (i > 0) { returnstr += ","; } // returnstr += "{"; // returnstr += "\"title\":\"" + title + "\""; // //returnstr += ",\"icon\":\"layui-icon " + icon + "\""; // returnstr += ",\"icon\":\"iconfont " + icon + "\""; // returnstr += ",\"spread\":\"false\""; // returnstr += ",\"href\":\"" + url + "\""; // returnstr += ",\"id\":\"" + id + "\""; // returnstr += ",\"type\":\"" + type + "\""; // returnstr += ",\"state\":\"" + state + "\""; // returnstr += ",\"level\":\"" + level + "\""; // returnstr += ",\"action\":\"" + action + "\""; // returnstr += ",\"children\":["; // DataTable dtc = getmenu(user, id); // for (int j = 0; j < dtc.Rows.Count; j++) // { // id = dtc.Rows[j]["ID"].ToString(); // title = dtc.Rows[j]["MENU_TITLE"].ToString(); // url = dtc.Rows[j]["MENU_URL"].ToString(); // type = dtc.Rows[j]["MENU_TYPE"].ToString(); // level = dtc.Rows[j]["MENU_LEVEL"].ToString(); // state = dtc.Rows[j]["MENU_FLAG"].ToString(); // action = dtc.Rows[j]["MENU_ACTION"].ToString(); // icon = dtc.Rows[j]["MENU_ICON"].ToString(); // if (j > 0) { returnstr += ","; } // returnstr += "{"; // returnstr += "\"title\":\"" + title + "\""; // //returnstr += ",\"icon\":\"layui-icon " + "layui-icon-rate-half" + "\""; // returnstr += ",\"icon\":\"iconfont " + icon + "\""; // returnstr += ",\"spread\":\"false\""; // returnstr += ",\"href\":\"" + url + "\""; // returnstr += ",\"id\":\"" + id + "\""; // returnstr += ",\"type\":\"" + type + "\""; // returnstr += ",\"state\":\"" + state + "\""; // returnstr += ",\"level\":\"" + level + "\""; // returnstr += ",\"action\":\"" + action + "\""; // returnstr += ",\"children\":["; // DataTable dtcd = getmenu(user, id); // for (int k = 0; k < dtcd.Rows.Count; k++) // { // id = dtcd.Rows[k]["ID"].ToString(); // title = dtcd.Rows[k]["MENU_TITLE"].ToString(); // url = dtcd.Rows[k]["MENU_URL"].ToString(); // type = dtcd.Rows[k]["MENU_TYPE"].ToString(); // level = dtcd.Rows[k]["MENU_LEVEL"].ToString(); // state = dtcd.Rows[k]["MENU_FLAG"].ToString(); // action = dtcd.Rows[k]["MENU_ACTION"].ToString(); // icon = dtcd.Rows[k]["MENU_ICON"].ToString(); // if (k > 0) { returnstr += ","; } // returnstr += "{"; // returnstr += "\"title\":\"" + title + "\""; // //returnstr += ",\"icon\":\"layui-icon " + "layui-icon-rate-half" + "\""; // returnstr += ",\"icon\":\"iconfont " + icon + "\""; // returnstr += ",\"spread\":\"false\""; // returnstr += ",\"href\":\"" + url + "\""; // returnstr += ",\"id\":\"" + id + "\""; // returnstr += ",\"type\":\"" + type + "\""; // returnstr += ",\"state\":\"" + state + "\""; // returnstr += ",\"level\":\"" + level + "\""; // returnstr += ",\"action\":\"" + action + "\""; // returnstr += "}"; // } // returnstr += "]"; // returnstr += "}"; // } // returnstr += "]"; // returnstr += "}"; // } // } // } // catch (Exception e) // { // } // returnstr += "]"; // return returnstr; //} private string GetUserMenu(HttpContext context) //平台菜单、主菜单、子菜单需要设置好等级 { string returnstr = "["; try { FangYar.Model.LoginUserModel user = FangYar.WebUI.WebCommon.HttpUtil.GetUser(context); if (user != null) { DataTable dt = getmenu(user, null); var listAll = DataTableToList(dt); string id, title, url, fid, type, level, state, action, icon, idone, idtwo, flowtype; var list1 = listAll.Where(p => p.MENU_PARENT == "630FEFF3081342ECB99CEC3449A01126").ToList(); for (int i = 0; i < list1.Count; i++) { var mo1 = list1[i]; if (mo1.MENU_PARENT == "630FEFF3081342ECB99CEC3449A01126") { id = mo1.ID; title = mo1.MENU_TITLE; url = mo1.MENU_URL; fid = mo1.MENU_PARENT; type = mo1.MENU_TYPE; level = mo1.MENU_LEVEL; state = mo1.MENU_FLAG; action = mo1.MENU_ACTION; icon = mo1.MENU_ICON; flowtype = mo1.FLOWTYPE + ""; if (i > 0) { returnstr += ","; } returnstr += "{"; returnstr += "\"title\":\"" + title + "\""; //returnstr += ",\"icon\":\"layui-icon " + icon + "\""; returnstr += ",\"icon\":\"iconfont " + icon + "\""; returnstr += ",\"spread\":\"false\""; returnstr += ",\"href\":\"" + url + "\""; returnstr += ",\"id\":\"" + id + "\""; returnstr += ",\"type\":\"" + type + "\""; returnstr += ",\"state\":\"" + state + "\""; returnstr += ",\"level\":\"" + level + "\""; returnstr += ",\"action\":\"" + action + "\""; returnstr += ",\"flowtype\":\"" + flowtype + "\""; returnstr += ",\"children\":["; var list2 = listAll.Where(p => p.MENU_PARENT == id).ToList(); for (int j = 0; j < list2.Count; j++) { var mo2 = list2[j]; id = mo2.ID; title = mo2.MENU_TITLE; url = mo2.MENU_URL; var list3 = listAll.Where(p => p.MENU_PARENT == id).ToList(); // 判断如果没有子集菜单则不加载父级菜单 if (list3.Count < 1 && string.IsNullOrWhiteSpace(url)) { continue; } type = mo2.MENU_TYPE; level = mo2.MENU_LEVEL; state = mo2.MENU_FLAG; action = mo2.MENU_ACTION; icon = mo2.MENU_ICON; flowtype = mo2.FLOWTYPE + ""; if (j > 0) { returnstr += ","; } returnstr += "{"; returnstr += "\"title\":\"" + title + "\""; //returnstr += ",\"icon\":\"layui-icon " + "layui-icon-rate-half" + "\""; returnstr += ",\"icon\":\"iconfont " + icon + "\""; returnstr += ",\"spread\":\"false\""; returnstr += ",\"href\":\"" + url + "\""; returnstr += ",\"id\":\"" + id + "\""; returnstr += ",\"type\":\"" + type + "\""; returnstr += ",\"state\":\"" + state + "\""; returnstr += ",\"level\":\"" + level + "\""; returnstr += ",\"action\":\"" + action + "\""; returnstr += ",\"flowtype\":\"" + flowtype + "\""; returnstr += ",\"children\":["; for (int k = 0; k < list3.Count; k++) { var mo3 = list3[k]; id = mo3.ID; title = mo3.MENU_TITLE; url = mo3.MENU_URL; type = mo3.MENU_TYPE; level = mo3.MENU_LEVEL; state = mo3.MENU_FLAG; action = mo3.MENU_ACTION; icon = mo3.MENU_ICON; flowtype = mo3.FLOWTYPE + ""; if (k > 0) { returnstr += ","; } returnstr += "{"; returnstr += "\"title\":\"" + title + "\""; //returnstr += ",\"icon\":\"layui-icon " + "layui-icon-rate-half" + "\""; returnstr += ",\"icon\":\"iconfont " + icon + "\""; returnstr += ",\"spread\":\"false\""; returnstr += ",\"href\":\"" + url + "\""; returnstr += ",\"id\":\"" + id + "\""; returnstr += ",\"type\":\"" + type + "\""; returnstr += ",\"state\":\"" + state + "\""; returnstr += ",\"level\":\"" + level + "\""; returnstr += ",\"action\":\"" + action + "\""; returnstr += ",\"flowtype\":\"" + flowtype + "\""; returnstr += ",\"children\":["; returnstr += "]"; returnstr += "}"; } returnstr += "]"; returnstr += "}"; } returnstr += "]"; returnstr += "}"; } } } } catch (Exception e) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "菜单操作请求", "平台菜单、主菜单、子菜单需要设置好等级异常:" + e); } returnstr += "]"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "菜单操作请求", "平台菜单、主菜单、子菜单需要设置好等级"); return returnstr; } private DataTable getmenu(FangYar.Model.LoginUserModel user, string fid) { DataTable dt = new DataTable(); try { if (user != null) { string baseRoleId = ",''"; var org = bll_org.GetModel(user.OrgID);//所在单位 if (org != null) { //0:支队;1:特勤站;2:大队;3:总队 switch (org.EXTENDCODE1) { case "0": baseRoleId = ",'d7f83a97208f4e049fe2e980095a7a65'"; break; case "1": baseRoleId = ",'03c85152f80a49f0ad3cfea202af00b4'"; break; case "2": baseRoleId = ",'5805857f2fae4daf9482996dbed726b7'"; break; case "3": baseRoleId = ",'ca8b271020d047db816cf6b18a6852ad'"; break; } } string sqlwhere = " find_in_set(id,cids) and id in(select menu_id from TBL_SYS_ROLEMENU t where role_id in ('" + user.roles.Replace(",", "','") + "'" + baseRoleId + ")) " + " and id not in (SELECT id from tbl_sys_menu WHERE id in(select menu_id from tbl_sys_rolemenu_not t where role_id in ('" + user.roles.Replace(",", "','") + "')) ) " + //and MENU_LEVEL = 3 " order by MENU_TYPE ,menu_level,menu_order "; if (user.OrgID == "1" || user.UserCode == "iamasuperman") { sqlwhere = " 1=1 order by MENU_TYPE ,menu_level,menu_order "; } dt = new FangYar.BLL.CommomBLL().GetTableList("*", " tbl_sys_menu ,(select get_Menu_child_list('630FEFF3081342ECB99CEC3449A01126') cids) s ", sqlwhere); } else { } } catch (Exception e) { } return dt; } /// /// DataRow转model实体类对象 /// /// /// private Model.TBL.TBL_SYS_MENU_Model DataRowToModel(DataRow dr) { Model.TBL.TBL_SYS_MENU_Model model = new Model.TBL.TBL_SYS_MENU_Model(); model.ID = dr["ID"] + ""; model.APP_ID = dr["APP_ID"] + ""; model.MENU_TITLE = dr["MENU_TITLE"] + ""; model.MENU_URL = dr["MENU_URL"] + ""; model.MENU_PARENT = dr["MENU_PARENT"] + ""; model.MENU_TYPE = dr["MENU_TYPE"] + ""; model.MENU_FLAG = dr["MENU_FLAG"] + ""; model.MENU_LEVEL = dr["MENU_LEVEL"] + ""; model.MENU_ORDER = Convert.ToInt32("0" + dr["MENU_ORDER"]); model.MENU_MAP = dr["MENU_MAP"] + ""; model.MENU_ACTION = dr["MENU_ACTION"] + ""; model.MENU_ICON = dr["MENU_ICON"] + ""; model.Address = dr["ADDRESS"] + ""; model.Type = dr["TYPE"] + ""; if (dr.Table.Columns.Contains("OPENMODE")) { if (dr["OPENMODE"] != null && dr["OPENMODE"].ToString() != "") { model.OpenMode = int.Parse(dr["OPENMODE"].ToString()); } } //if (dr.Table.Columns.Contains("WIDTH")) //{ // if (dr["WIDTH"] != null && dr["WIDTH"].ToString() != "") // { // model.Width = int.Parse(dr["WIDTH"].ToString()); // } //} //if (dr.Table.Columns.Contains("HEIGHT")) //{ // if (dr["HEIGHT"] != null && dr["HEIGHT"].ToString() != "") // { // model.Height = int.Parse(dr["HEIGHT"].ToString()); // } //} model.Params = dr["PARAMS"] + ""; model.Manager = dr["MANAGER"] + ""; model.Note = dr["NOTE"] + ""; model.Code = dr["CODE"] + ""; model.UseMember = dr["USEMEMBER"] + ""; if (dr.Table.Columns.Contains("FLOWTYPE")) { if (dr["FLOWTYPE"] != null && dr["FLOWTYPE"].ToString() != "") { model.FLOWTYPE = int.Parse(dr["FLOWTYPE"].ToString()); } } model.AUTHORITYTYPE = dr["AUTHORITYTYPE"] + ""; model.ORG_ID = dr["ORG_ID"] + ""; return model; } /// /// 把DataTable行转成实体类List集合 /// private List DataTableToList(DataTable dt) { List modellist = new List(); if (dt.Rows.Count > 0) { foreach (DataRow myRow in dt.Rows) { modellist.Add(DataRowToModel(myRow)); } } return modellist; } private string typegetmenu(HttpContext context) { string returnstr = ""; FangYar.BLL.TBL.SysMenuBLL mbll = new FangYar.BLL.TBL.SysMenuBLL(); try { string type = context.Request.Params["type"].ToString(); //if (type.IndexOf("-")>-1) //{ // type = type.Replace("-",""); //} returnstr = "{\"code\":1,\"msg\":\"\","; List list = mbll.typegetmenu(type); returnstr += "\"count\":" + list.Count + ",\"data\":"; if (list.Count == 0) { returnstr += "[]"; } else { returnstr += FangYar.Common.JsonHelper.ToJson(list); } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":-1,\"msg\":\"" + e.Message + "\",\"count\":0,\"data\":[]"; } return returnstr; } public bool IsReusable { get { return false; } } } }