using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; using GS.Sys.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Data; using System.Data.SqlClient; namespace GS.Sys.Service; /// /// ¿´°åĿ¼¹ÜÀí£¨´æ´¢¹ý³Ì°æ±¾£© /// [ApiGroup(ApiGroupNames.Sys)] public class MesSimpleManager : Repository, IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode, _userGuid, _orgFids; public MesSimpleManager(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; (_userCode, _userGuid, _orgFids) = UtilityHelper.GetUserGuidAndOrgGuid(_http); } /// /// ²éѯÁÐ±í£¬Ö§³Ö·ÖÒ³ /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage(PageQuery query) { try { // Ìí¼Ó 'a.' ǰ׺ÒÔÆ¥Åä´æ´¢¹ý³Ì var sortField = "a." + (query.sortName?.Replace("a.", "") ?? "sort_order"); var sortOrder = query.sortOrder?.ToUpper() ?? "ASC"; // ¹¹½¨´æ´¢¹ý³Ì²ÎÊý var parameters = new SqlParameter[] { new SqlParameter("@pageIndex", SqlDbType.Int) { Value = query.currentPage }, new SqlParameter("@pageSize", SqlDbType.Int) { Value = query.everyPageSize }, new SqlParameter("@sortField", SqlDbType.NVarChar, 50) { Value = sortField }, new SqlParameter("@sortOrder", SqlDbType.NVarChar, 10) { Value = sortOrder }, new SqlParameter("@keyWord", SqlDbType.NVarChar, 100) { Value = query.keyWord ?? "" }, new SqlParameter("@keyWhere", SqlDbType.NVarChar, -1) { Value = "" } }; // µ÷Óô洢¹ý³Ì£¨×¢ÒâÃû³Æ£© var dset = DbHelperSQL.RunProcedure("proc_MesSimple_GetListPage", parameters, "ResultSet"); if (dset == null || dset.Tables.Count == 0 || dset.Tables[0].Rows.Count == 0) { var emptyList = new PageList(new List(), 0, query.everyPageSize); return ReturnDto>.QuickReturn>(emptyList, ReturnCode.Success, "ÔÝÎÞÊý¾Ý"); } // »ñÈ¡×ܼǼÊý var totalCount = 0; if (dset.Tables[0].Rows.Count > 0) { var firstRow = dset.Tables[0].Rows[0]; if (firstRow.Table.Columns.Contains("totalCount")) { totalCount = Convert.ToInt32(firstRow["totalCount"]); } } // ת»»Îª¶¯Ì¬¶ÔÏóÁбí var itemsList = dset.Tables[0].TableToDynamicList(); var pageList = new PageList(itemsList, totalCount, query.everyPageSize); return ReturnDto>.QuickReturn>(pageList, ReturnCode.Success, "¶ÁÈ¡³É¹¦"); } catch (Exception ex) { LogHelper.Debug(ToString(), $"GetListPage error: {ex.Message}\nStackTrace: {ex.StackTrace}"); var emptyList = new PageList(new List(), 0, query.everyPageSize); return ReturnDto>.QuickReturn>(emptyList, ReturnCode.Exception, "²éѯʧ°Ü£º" + ex.Message); } } /// /// ¶ÁÈ¡µ¥Ìõ¼Ç¼ /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModel([FromBody] MesSimple model) { try { var parameters = new SqlParameter[] { new SqlParameter("@id", SqlDbType.BigInt) { Value = model.Id } }; var dset = DbHelperSQL.RunProcedure("proc_MesSimple_GetModel", parameters, "ResultSet"); if (dset == null || dset.Tables.Count == 0 || dset.Tables[0].Rows.Count == 0) { return ReturnDto.QuickReturn(null, ReturnCode.Default, "Êý¾Ý²»´æÔÚ£¡"); } var m = dset.Tables[0].Rows[0].RowToDynamic(); return ReturnDto.QuickReturn(m, ReturnCode.Success, "¶ÁÈ¡³É¹¦£¡"); } catch (Exception ex) { LogHelper.Debug(ToString(), $"GetModel error: {ex.Message}"); return ReturnDto.QuickReturn(null, ReturnCode.Exception, "¶Áȡʧ°Ü£º" + ex.Message); } } /// /// ±£´æÊý¾Ý (ÐÂÔö/ÐÞ¸Ä) /// [RequestMethod(RequestMethods.POST)] public ReturnDto SaveModel([FromBody] MesSimple model) { try { if (string.IsNullOrWhiteSpace(model.Title)) { return ReturnDto.QuickReturn("", ReturnCode.Default, "Ãû³Æ²»ÄÜΪ¿Õ£¡"); } var parameters = new SqlParameter[] { new SqlParameter("@id", SqlDbType.BigInt) { Value = model.Id }, new SqlParameter("@parentId", SqlDbType.BigInt) { Value = model.ParentId.HasValue ? (object)model.ParentId.Value : DBNull.Value }, new SqlParameter("@nodeType", SqlDbType.TinyInt) { Value = model.NodeType }, new SqlParameter("@code", SqlDbType.NVarChar, 50) { Value = string.IsNullOrEmpty(model.Code) ? DBNull.Value : model.Code }, new SqlParameter("@title", SqlDbType.NVarChar, 255) { Value = model.Title }, new SqlParameter("@url", SqlDbType.NVarChar, 500) { Value = string.IsNullOrEmpty(model.Url) ? DBNull.Value : model.Url }, new SqlParameter("@carouselDuration", SqlDbType.Int) { Value = model.CarouselDuration.HasValue ? (object)model.CarouselDuration.Value : DBNull.Value }, new SqlParameter("@isExpanded", SqlDbType.Bit) { Value = model.IsExpanded }, new SqlParameter("@isEnabled", SqlDbType.Bit) { Value = model.IsEnabled }, new SqlParameter("@sortOrder", SqlDbType.Int) { Value = model.SortOrder }, new SqlParameter("@userCode", SqlDbType.NVarChar, 50) { Value = _userCode ?? "SYSTEM" }, new SqlParameter("@outId", SqlDbType.BigInt) { Direction = ParameterDirection.Output }, new SqlParameter("@outMsg", SqlDbType.NVarChar, 500) { Direction = ParameterDirection.Output } }; // Ìí¼Óµ÷ÊÔÈÕÖ¾ LogHelper.Debug(ToString(), $"SaveModel - ²ÎÊýÊýÁ¿: {parameters.Length}"); DbHelperSQL.RunProcedure("proc_MesSimple_Save", parameters, "0");//ResultSet var outId = parameters[11].Value != DBNull.Value ? Convert.ToInt64(parameters[11].Value) : 0; var outMsg = parameters[12].Value != DBNull.Value ? parameters[12].Value.ToString() : "²Ù×÷³É¹¦"; if (outId > 0) { return ReturnDto.QuickReturn(outId.ToString(), ReturnCode.Success, outMsg); } else { return ReturnDto.QuickReturn("", ReturnCode.Default, outMsg); } } catch (Exception ex) { LogHelper.Debug(ToString(), $"SaveModel error: {ex.Message}"); return ReturnDto.QuickReturn("", ReturnCode.Exception, "±£´æÊ§°Ü£º" + ex.Message); } } /// /// ɾ³ýÊý¾Ý (Èíɾ³ý) - ÐÞ¸´°æ /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModel([FromBody] JToken data) { try { string idStr = null; LogHelper.Debug(ToString(), $"DeleteModel received: {data?.ToString()}, Type: {data?.Type}"); if (data == null) { return ReturnDto.QuickReturn(0, ReturnCode.Default, "ÇëÑ¡ÔñҪɾ³ýµÄÊý¾Ý£¡"); } // ÖÇÄܽâÎö¸÷ÖÖÊý¾Ý¸ñʽ if (data is JArray jArray) { if (jArray.Count == 0) { return ReturnDto.QuickReturn(0, ReturnCode.Default, "ÇëÑ¡ÔñҪɾ³ýµÄÊý¾Ý£¡"); } idStr = jArray[0].ToString(); } else if (data is JValue jValue) { idStr = jValue.ToString(); } else if (data is JObject jObject) { idStr = jObject["id"]?.ToString() ?? jObject["Id"]?.ToString(); } else { idStr = data.ToString(); } if (string.IsNullOrEmpty(idStr) || !long.TryParse(idStr, out long id)) { return ReturnDto.QuickReturn(0, ReturnCode.Default, $"ÎÞЧµÄID£º{idStr}"); } LogHelper.Debug(ToString(), $"DeleteModel parsed ID: {id}"); // µ÷Óô洢¹ý³Ì£¨×¢Òâ²ÎÊýÃûÊÇ @ids£© var parameters = new SqlParameter[] { new SqlParameter("@ids", SqlDbType.NVarChar, -1) { Value = id.ToString() }, new SqlParameter("@userCode", SqlDbType.NVarChar, 50) { Value = _userCode ?? "SYSTEM" }, new SqlParameter("@outCode", SqlDbType.Int) { Direction = ParameterDirection.Output }, new SqlParameter("@outMsg", SqlDbType.NVarChar, 500) { Direction = ParameterDirection.Output } }; DbHelperSQL.RunProcedure("proc_MesSimple_Delete", parameters, "0"); var outCode = parameters[2].Value != DBNull.Value ? Convert.ToInt32(parameters[2].Value) : 0; var outMsg = parameters[3].Value != DBNull.Value ? parameters[3].Value.ToString() : "δ֪´íÎó"; LogHelper.Debug(ToString(), $"DeleteModel result: code={outCode}, msg={outMsg}"); if (outCode > 0) { return ReturnDto.QuickReturn(outCode, ReturnCode.Success, outMsg); } else { return ReturnDto.QuickReturn(0, ReturnCode.Default, outMsg); } } catch (Exception ex) { LogHelper.Debug(ToString(), $"DeleteModel error: {ex.Message}\n{ex.StackTrace}"); return ReturnDto.QuickReturn(0, ReturnCode.Exception, "ɾ³ýʧ°Ü£º" + ex.Message); } } /// /// »ñÈ¡Ê÷Ðνṹ /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetTree(long? rootId = null) { try { var parameters = new SqlParameter[] { new SqlParameter("@RootId", SqlDbType.BigInt) { Value = rootId.HasValue ? (object)rootId.Value : DBNull.Value } }; var dset = DbHelperSQL.RunProcedure("usp_MesSimple_GetTree", parameters, "ResultSet"); if (dset == null || dset.Tables.Count == 0) { return ReturnDto>.QuickReturn>(new List(), ReturnCode.Success, "ÔÝÎÞÊý¾Ý"); } var treeList = dset.Tables[0].TableToDynamicList(); return ReturnDto>.QuickReturn>(treeList, ReturnCode.Success, "¶ÁÈ¡³É¹¦"); } catch (Exception ex) { LogHelper.Debug(ToString(), $"GetTree error: {ex.Message}"); return ReturnDto>.QuickReturn>(new List(), ReturnCode.Exception, "²éѯʧ°Ü£º" + ex.Message); } } /// /// ¸üÐÂÅÅÐòÐòºÅ /// [RequestMethod(RequestMethods.POST)] public ReturnDto UpdateSortOrder(long id, int sortOrder) { try { var parameters = new SqlParameter[] { new SqlParameter("@Id", SqlDbType.BigInt) { Value = id }, new SqlParameter("@NewSortOrder", SqlDbType.Int) { Value = sortOrder } }; var dset = DbHelperSQL.RunProcedure("usp_MesSimple_UpdateSortOrder", parameters, "ResultSet"); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) { var row = dset.Tables[0].Rows[0]; var rtnCode = Convert.ToInt32(row["rtnCode"]); var rtnMsg = row["rtnMsg"].ToString(); if (rtnCode > 0) { return ReturnDto.QuickReturn(true, ReturnCode.Success, rtnMsg); } else { return ReturnDto.QuickReturn(false, ReturnCode.Default, rtnMsg); } } return ReturnDto.QuickReturn(false, ReturnCode.Default, "¸üÐÂʧ°Ü£¡"); } catch (Exception ex) { LogHelper.Debug(ToString(), $"UpdateSortOrder error: {ex.Message}"); return ReturnDto.QuickReturn(false, ReturnCode.Exception, "¸üÐÂʧ°Ü£º" + ex.Message); } } }