AppendSelect.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Linq;
  6. namespace SqlSugar
  7. {
  8. /// <summary>
  9. /// AppendSelect
  10. /// </summary>
  11. public partial class JsonQueryableProvider : IJsonQueryableProvider<JsonQueryResult>
  12. {
  13. private bool AppendSelect(JToken item)
  14. {
  15. bool isSelect = true;
  16. if (item.Type == JTokenType.Property)
  17. {
  18. var value = item.First().ToString();
  19. var obj = context.Utilities.JsonToSelectModels(value);
  20. obj =FilterSelect(obj);
  21. sugarQueryable.Select(obj);
  22. }
  23. else
  24. {
  25. var obj = context.Utilities.JsonToSelectModels(item.ToString());
  26. obj = FilterSelect(obj);
  27. sugarQueryable.Select(obj);
  28. }
  29. return isSelect;
  30. }
  31. private List<SelectModel> FilterSelect(List<SelectModel> obj)
  32. {
  33. if (!this.jsonTableConfigs.Any())
  34. {
  35. return obj;
  36. }
  37. List<SelectModel> result = new List<SelectModel>();
  38. foreach (var item in obj)
  39. {
  40. if (item.FieldName is string)
  41. {
  42. var tableName = GetTableName(item.FieldName + "");
  43. var columnName = GetColumnName(item.FieldName + "");
  44. if (IsMyColums(tableName, columnName))
  45. {
  46. result.Add(item);
  47. }
  48. }
  49. else
  50. {
  51. result.Add(item);
  52. }
  53. }
  54. return result;
  55. }
  56. private bool IsMyColums(string tableName, string columnName)
  57. {
  58. return this.jsonTableConfigs.Any(it => it.TableName.EqualCase(tableName)
  59. && it.Columns.Any(z => z.Name.EqualCase(columnName)));
  60. }
  61. private string GetColumnName(string filedName)
  62. {
  63. return filedName.Split('.').Last();
  64. }
  65. private string GetTableName(string filedName)
  66. {
  67. if (!filedName.Contains("."))
  68. {
  69. return TableInfos.First(it => it.IsMaster).Table;
  70. }
  71. else
  72. {
  73. var shortName=filedName.Split('.').First();
  74. return TableInfos.First(it => it.ShortName==shortName ).Table;
  75. }
  76. }
  77. }
  78. }