using System.Data; using System.Dynamic; using System.Text; using Gs.Sys.Models; using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using SqlSugar; using static Gs.Toolbox.UtilityHelper; namespace Gs.Sys.Services; [ApiGroup(ApiGroupNames.Sys)] public class MenuActionController : Repository, IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode,_userGuid,_orgFids; public MenuActionController(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http); } /// /// 查询列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage(PageQuery query) { var pageList = new PageList(); try { var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere); var _sbBy =new StringBuilder(query.sortName + " " + query.sortOrder); var totalCount = 0; var itemsList = Db .Queryable( (a, b) => new object[] { JoinType.Left, a.UpGuid == b.Guid, }).Select((a, b) => new SysMenuAction { upName = b.Name, }, true) .Where(_sbWhere.ToString()) .OrderBy(_sbBy.ToString()) .ToPageList(query.currentPage, query.everyPageSize, ref totalCount); pageList = new PageList(itemsList, totalCount,query.everyPageSize); return ReturnDto>.QuickReturn(pageList, ReturnCode.Success, "读取成功"); } catch (Exception ex) { return ReturnDto>.QuickReturn(pageList, ReturnCode.Default, ex.Message); } } /// /// 查询列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPageHelp([FromBody] PageQuery model) { var sbSql = new StringBuilder(); sbSql.Append(" WITH RankedHistory AS ("); sbSql.Append(" SELECT h.guid, h.parent_Guid, h.create_date,h.[file_Title],h.[url_Path],h.[file_Type],"); sbSql.Append(" ROW_NUMBER() OVER (PARTITION BY h.parent_Guid ORDER BY h.create_date DESC) AS RowRank"); sbSql.Append(" FROM [MES_FILE] h"); sbSql.Append(" )"); sbSql.Append(" select a.*,p.name as upName,f.create_date,f.file_Title,f.url_Path,f.[file_Type] from [dbo].[SYS_MENU_ACTION] a left join RankedHistory f"); sbSql.Append(" ON (a.GUID = f.parent_Guid AND f.RowRank = 1)"); sbSql.Append(" left join [SYS_MENU_ACTION] p on a.UP_GUID=p.GUID"); sbSql.Append(" where a.CATEGORY=1 and a.UP_GUID is not null"); var dset = new DataSet(); try { dset = DbHelperSQL.Query(sbSql.ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "GetListPage error:" + ex.Message); return ReturnDto>.QuickReturn( default(PageList), ReturnCode.Exception, "读取失败"); } var _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) //有数据 { var pages = 1; _pglist.total = 1; _pglist.everyPageSize = 1; _pglist.pages = pages; var _dy = dset.Tables[0].TableToDynamicList(); _pglist.list = _dy; } return ReturnDto>.QuickReturn(_pglist, ReturnCode.Success, "读取成功"); } /// /// 读取一个实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModel([FromBody] SysMenuAction model) { var m = base.GetById(model.Guid); if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 读取 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModelByNameSpace([FromBody] dynamic model) { dynamic m = new ExpandoObject(); var sbSql = new StringBuilder(); sbSql.Append("select top 1 * from [dbo].[SYS_MENU_ACTION] where form_path='"+ model.guid.ToString() + "'"); try { var dset = new DataSet(); dset = DbHelperSQL.Query(sbSql.ToString()); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) { var dr = dset.Tables[0].Rows[0]; m = dr.RowToDynamic(); return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); } return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } catch (Exception ex) { LogHelper.Debug(ToString(), "GetModel error:" + ex.Message); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } } /// /// 增加或编辑实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] SysMenuAction model) { var _bl = false; try { if (!CheckGuid(model.Guid)) { model.Guid = Guid.NewGuid(); _bl = base.Insert(model); } else { // _bl = base.Update(model); _bl = Db.Updateable(model).IgnoreColumns(true) .ExecuteCommand() > 0 ? true : false; } } catch (Exception ex) { LogHelper.Debug(ToString(), "EditModel error:" + ex.Message); return ReturnDto.QuickReturn("", ReturnCode.Exception, ex.Message); } if (_bl) return ReturnDto.QuickReturn(model.Guid.ToString(), ReturnCode.Success, "操作成功!"); return ReturnDto.QuickReturn("", ReturnCode.Exception, "增加失败,请重试!"); } /// /// 删除功能菜单 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModel([FromBody] JArray guidList) { var intArray = guidList.ToObject(); var guid = intArray[0]; int? rtnInt = (int)ReturnCode.Default; var cont = 0; var it1 = 0; var it2 = 0; //是否内置 cont = Db.Queryable() .Where(c => c.Guid == Guid.Parse(guid) && c.IsSys == 1).Count(); if (cont > 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,该条目为系统内置,不可删除!"); cont = 0; //是否有子菜单 cont = Db.Queryable() .Where(c => c.UpGuid == Guid.Parse(guid)).Count(); if (cont > 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,该条目下面有子菜单,不可删除!"); try { Db.Ado.BeginTran(); it1 = Db.Deleteable().In(guid).ExecuteCommand(); it2 = Db.Deleteable() .Where(it => it.MenuActionGuid == Guid.Parse(guid)) .ExecuteCommand(); Db.Ado.CommitTran(); } catch (Exception ex) { LogHelper.Debug(ToString(), "DeleteModel error:" + ex.Message); Db.Ado.RollbackTran(); return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!"); } rtnInt = it2 + it1; return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!"); } /// /// 增加或编辑实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetHelpFile([FromBody] string formNamespace) { string urlPath = ""; System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); stringBuilder.Append("select top 1 url_Path as urlPath from [dbo].[MES_FILE] f where f.parent_Guid="); stringBuilder.Append("("); stringBuilder.Append(" select top 1 guid from [dbo].[SYS_MENU_ACTION]"); stringBuilder.Append(" where FORM_PATH='"+ formNamespace + "'"); stringBuilder.Append(") order by create_date desc"); try { urlPath = Gs.Toolbox.DbHelperSQL.GetSingle(stringBuilder.ToString()).ToString(); } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(),ex.Message); return ReturnDto.QuickReturn(urlPath, ReturnCode.Default,ex.Message); } return ReturnDto.QuickReturn(urlPath, ReturnCode.Success, "操作成功!"); } }