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;
|
|
/// <summary>
|
/// ¿´°åĿ¼¹ÜÀí£¨´æ´¢¹ý³Ì°æ±¾£©
|
/// </summary>
|
[ApiGroup(ApiGroupNames.Sys)]
|
public class MesSimpleManager : Repository<MesSimple>, IRomteService
|
{
|
private readonly IHttpContextAccessor _http;
|
private readonly string _userCode, _userGuid, _orgFids;
|
|
public MesSimpleManager(IHttpContextAccessor httpContextAccessor)
|
{
|
_http = httpContextAccessor;
|
(_userCode, _userGuid, _orgFids) = UtilityHelper.GetUserGuidAndOrgGuid(_http);
|
}
|
|
/// <summary>
|
/// ²éѯÁÐ±í£¬Ö§³Ö·ÖÒ³
|
/// </summary>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<PageList<dynamic>> 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<dynamic>(new List<dynamic>(), 0, query.everyPageSize);
|
return ReturnDto<PageList<dynamic>>.QuickReturn<PageList<dynamic>>(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<dynamic>(itemsList, totalCount, query.everyPageSize);
|
return ReturnDto<PageList<dynamic>>.QuickReturn<PageList<dynamic>>(pageList, ReturnCode.Success, "¶ÁÈ¡³É¹¦");
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), $"GetListPage error: {ex.Message}\nStackTrace: {ex.StackTrace}");
|
var emptyList = new PageList<dynamic>(new List<dynamic>(), 0, query.everyPageSize);
|
return ReturnDto<PageList<dynamic>>.QuickReturn<PageList<dynamic>>(emptyList, ReturnCode.Exception, "²éѯʧ°Ü£º" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// ¶ÁÈ¡µ¥Ìõ¼Ç¼
|
/// </summary>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<dynamic> 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<dynamic>.QuickReturn<dynamic>(null, ReturnCode.Default, "Êý¾Ý²»´æÔÚ£¡");
|
}
|
|
var m = dset.Tables[0].Rows[0].RowToDynamic();
|
return ReturnDto<dynamic>.QuickReturn<dynamic>(m, ReturnCode.Success, "¶ÁÈ¡³É¹¦£¡");
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), $"GetModel error: {ex.Message}");
|
return ReturnDto<dynamic>.QuickReturn<dynamic>(null, ReturnCode.Exception, "¶Áȡʧ°Ü£º" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// ±£´æÊý¾Ý (ÐÂÔö/ÐÞ¸Ä)
|
/// </summary>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<string> SaveModel([FromBody] MesSimple model)
|
{
|
try
|
{
|
if (string.IsNullOrWhiteSpace(model.Title))
|
{
|
return ReturnDto<string>.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<string>.QuickReturn(outId.ToString(), ReturnCode.Success, outMsg);
|
}
|
else
|
{
|
return ReturnDto<string>.QuickReturn("", ReturnCode.Default, outMsg);
|
}
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), $"SaveModel error: {ex.Message}");
|
return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "±£´æÊ§°Ü£º" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// ɾ³ýÊý¾Ý (Èíɾ³ý) - ÐÞ¸´°æ
|
/// </summary>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<int> DeleteModel([FromBody] JToken data)
|
{
|
try
|
{
|
string idStr = null;
|
|
LogHelper.Debug(ToString(), $"DeleteModel received: {data?.ToString()}, Type: {data?.Type}");
|
|
if (data == null)
|
{
|
return ReturnDto<int>.QuickReturn(0, ReturnCode.Default, "ÇëÑ¡ÔñҪɾ³ýµÄÊý¾Ý£¡");
|
}
|
|
// ÖÇÄܽâÎö¸÷ÖÖÊý¾Ý¸ñʽ
|
if (data is JArray jArray)
|
{
|
if (jArray.Count == 0)
|
{
|
return ReturnDto<int>.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<int>.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<int>.QuickReturn(outCode, ReturnCode.Success, outMsg);
|
}
|
else
|
{
|
return ReturnDto<int>.QuickReturn(0, ReturnCode.Default, outMsg);
|
}
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), $"DeleteModel error: {ex.Message}\n{ex.StackTrace}");
|
return ReturnDto<int>.QuickReturn(0, ReturnCode.Exception, "ɾ³ýʧ°Ü£º" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// »ñÈ¡Ê÷Ðνṹ
|
/// </summary>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<List<dynamic>> 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<List<dynamic>>.QuickReturn<List<dynamic>>(new List<dynamic>(), ReturnCode.Success, "ÔÝÎÞÊý¾Ý");
|
}
|
|
var treeList = dset.Tables[0].TableToDynamicList();
|
return ReturnDto<List<dynamic>>.QuickReturn<List<dynamic>>(treeList, ReturnCode.Success, "¶ÁÈ¡³É¹¦");
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), $"GetTree error: {ex.Message}");
|
return ReturnDto<List<dynamic>>.QuickReturn<List<dynamic>>(new List<dynamic>(), ReturnCode.Exception, "²éѯʧ°Ü£º" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// ¸üÐÂÅÅÐòÐòºÅ
|
/// </summary>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<bool> 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<bool>.QuickReturn(true, ReturnCode.Success, rtnMsg);
|
}
|
else
|
{
|
return ReturnDto<bool>.QuickReturn(false, ReturnCode.Default, rtnMsg);
|
}
|
}
|
|
return ReturnDto<bool>.QuickReturn(false, ReturnCode.Default, "¸üÐÂʧ°Ü£¡");
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), $"UpdateSortOrder error: {ex.Message}");
|
return ReturnDto<bool>.QuickReturn(false, ReturnCode.Exception, "¸üÐÂʧ°Ü£º" + ex.Message);
|
}
|
}
|
}
|