using Gs.Toolbox; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using Gs.User.Modes; using Microsoft.Extensions.Primitives; namespace Gs.User.Service { [ApiGroup(ApiGroupNames.Auth)] public class MenuActionController : IRomteService { /// /// 读取功能菜单列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage([FromBody] PageQuery model) { int currentPage = model.currentPage; int everyPageSize = model.everyPageSize; string sortName = string.IsNullOrEmpty(model.sortName) ? "a.idx" : model.sortName; System.Text.StringBuilder sbSql = new StringBuilder(); sbSql.Append("select * from "); sbSql.Append("( "); sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,* from sys_MenuAction a where 1=1" + model.keyWhere); sbSql.Append(") as T "); sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize + ""); sbSql.Append(" select count(1) as intTotal from dbo.sys_MenuAction a where 1=1 " + model.keyWhere).ToString(); DataSet dset = new DataSet(); try { dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString()); } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error:" + ex.Message); return ReturnDto>.QuickReturn(default(PageList), ReturnCode.Exception, "读取失败"); } PageList _pglist = new PageList { total = 0, everyPageSize = 0, pages = 0, list = new List() }; if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//有数据 { int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString()); int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize); _pglist.total = intTotal; _pglist.everyPageSize = everyPageSize; _pglist.pages = pages; foreach (DataRow dr in dset.Tables[0].Rows) { _pglist.list.Add( new MenuAction() { guid = Guid.Parse(dr["guid"].ToString()), upGuid = dr["upGuid"].ToString().Length > 0 ? Guid.Parse(dr["upGuid"].ToString()) : null, name = dr["name"].ToString(), icon = dr["icon"].ToString(), status = int.Parse(dr["status"].ToString()), formPath = dr["formPath"].ToString(), idx = int.Parse(dr["idx"].ToString()), category = int.Parse(dr["category"].ToString()), statusTxt = (dr["status"].ToString() == "1" ? "正常" : "禁用"), categoryTxt = (dr["category"].ToString() == "1" ? "窗体类型" : "按钮类型"), } ); } } return ReturnDto>.QuickReturn(_pglist, ReturnCode.Success, "读取成功"); } /// /// 删除功能菜单 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModel([FromBody] MenuAction model) { int rtnInt = (int)ReturnCode.Default; int cont = 0; try { //是否内置 cont = int.Parse(DbHelperSQL.GetSingle("select count(1) from sys_MenuAction where guid='" + model.guid.ToString() + "' and [isSys]=1").ToString()); if (cont > 0) { return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该条目为系统内置,不可删除!"); } cont = 0; //是否有子菜单 cont = int.Parse(DbHelperSQL.GetSingle("select count(1) from sys_MenuAction where upguid='" + model.guid.ToString() + "'").ToString()); if (cont > 0) { return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该条目下面有子菜单,不可删除!"); } rtnInt = DbHelperSQL.ExecuteSql("delete from dbo.sys_MenuAction where guid='" + model.guid.ToString() + "'"); } catch (Exception ex) { LogHelper.Debug(this.ToString(), "DeleteModel error:" + ex.Message); rtnInt = (int)ReturnCode.Exception; } if (rtnInt > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Success, "操作成功,共删除" + rtnInt.ToString() + "条数据!"); else return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,请重试!"); } /// /// 增加功能菜单 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] MenuAction model) { Guid? guid = model.guid; Guid? upGuid = model.upGuid; string name = model.name; string icon = model.icon; int status = model.status; string formPath = model.formPath; int category = model.category; int idx = model.idx; int? rtnInt = (int)ReturnCode.Default; StringBuilder strSql = new StringBuilder(); if (guid != null) { strSql.Append(" update dbo.sys_MenuAction"); strSql.Append(" set upGuid=@upGuid,name=@name,icon=@icon,status=@status,formPath=@formPath,category=@category,idx=@idx"); strSql.Append(" where guid='" + guid + "'"); } else { guid = Guid.NewGuid(); strSql.Append("insert into dbo.sys_MenuAction("); strSql.Append(" guid,upGuid,name,icon,status,formPath,category,idx)"); strSql.Append(" values ("); strSql.Append("'" + guid + "',@upGuid,@name,@icon,@status,@formPath,@category,@idx)"); } SqlParameter[] parameters = { new SqlParameter("@upGuid", upGuid), new SqlParameter("@name", name), new SqlParameter("@icon",icon), new SqlParameter("@status",status), new SqlParameter("@formPath",formPath), new SqlParameter("@category",category), new SqlParameter("@idx",idx), }; try { rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } catch (Exception ex) { LogHelper.Debug(this.ToString(), "EditModel error:" + ex.Message); rtnInt = (int)ReturnCode.Exception; } if (rtnInt > 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功!"); else return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "增加失败,请重试!"); } /// /// 读取功能菜单 /// /// /// [RequestMethod(RequestMethods.POST)] [AllowAnonymous] public ReturnDto GetModel([FromBody] MenuAction model) { MenuAction m = new MenuAction(); System.Text.StringBuilder sbSql = new StringBuilder(); sbSql.Append("select top 1 * from dbo.sys_MenuAction where 1=1 and guid='" + model.guid.ToString() + "' "); try { DataSet dset = new DataSet(); dset = DbHelperSQL.Query(sbSql.ToString()); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) { System.Data.DataRow dr = dset.Tables[0].Rows[0]; m.guid = Guid.Parse(dr["guid"].ToString()); m.upGuid = dr["upGuid"].ToString().Length > 0 ? Guid.Parse(dr["upGuid"].ToString()) : null; m.name = dr["name"].ToString(); m.icon = dr["icon"].ToString(); m.status = int.Parse(dr["status"].ToString()); m.formPath = dr["formPath"].ToString(); m.idx = int.Parse(dr["idx"].ToString()); m.category = int.Parse(dr["category"].ToString()); return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); } else return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } catch (Exception ex) { LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } } /// /// 读取功能菜单列表,分组织展现权限菜单 /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPageByOrg() { System.Text.StringBuilder _orgSql = new StringBuilder(); _orgSql.Append("select org.guid,null as upGuid,org.name,org.status from [dbo].[sys_Organization] org where upGuid is not null "); DataSet _orgDset = new DataSet(); System.Text.StringBuilder sbSql = new StringBuilder(); try { _orgDset = Gs.Toolbox.DbHelperSQL.Query(_orgSql.ToString()); foreach (DataRow row in _orgDset.Tables[0].Rows) { if (sbSql.Length > 0) sbSql.Append(" union all"); sbSql.Append(" select org.guid,null as upGuid,org.name,org.status,'"+ row["guid"].ToString() + "' as orgGuid from [dbo].[sys_Organization] org where org.guid ='" + row["guid"].ToString() + "'"); sbSql.Append(" union all"); sbSql.Append(" select ma.guid,isnull(ma.upGuid,'" + row["guid"].ToString() + "') as upGuid,ma.name,ma.status,'"+ row["guid"].ToString() + "' as orgGuid from sys_MenuAction ma"); } } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error:" + ex.Message); return ReturnDto>.QuickReturn(default(PageList), ReturnCode.Exception, "读取失败"); } DataSet dset = new DataSet(); try { dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString()); } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error:" + ex.Message); return ReturnDto>.QuickReturn(default(PageList), ReturnCode.Exception, "读取失败"); } PageList _pglist = new PageList { total = 0, everyPageSize = 0, pages = 0, list = new List() }; if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//有数据 { int intTotal = 999; int pages = 1; _pglist.total = intTotal; _pglist.everyPageSize = 1; _pglist.pages = pages; foreach (DataRow dr in dset.Tables[0].Rows) { _pglist.list.Add( new MenuAction() { guid = Guid.Parse(dr["guid"].ToString()), upGuid = dr["upGuid"].ToString().Length > 0 ? Guid.Parse(dr["upGuid"].ToString()) : null, name = dr["name"].ToString(), status = int.Parse(dr["status"].ToString()), orgGuid = dr["orgGuid"].ToString(), } ); } } return ReturnDto>.QuickReturn(_pglist, ReturnCode.Success, "读取成功"); } } }