CustomViewEngine.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using Admin.NET.Core.Util;
  2. using Furion.ViewEngine;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace Admin.NET.Core.Service
  6. {
  7. public class CustomViewEngine : ViewEngineModel
  8. {
  9. private readonly SqlSugarRepository<SysCodeGen> _sysCodeGenRep; // 代码生成器仓储
  10. public CustomViewEngine()
  11. {
  12. }
  13. public CustomViewEngine(SqlSugarRepository<SysCodeGen> sysCodeGenRep)
  14. {
  15. _sysCodeGenRep = sysCodeGenRep;
  16. }
  17. public string AuthorName { get; set; }
  18. public string BusName { get; set; }
  19. public string NameSpace { get; set; }
  20. public string ClassName { get; set; }
  21. public string LowerClassName
  22. {
  23. get
  24. {
  25. return ClassName[..1].ToLower() + ClassName[1..]; // 首字母小写
  26. }
  27. }
  28. public List<CodeGenConfig> QueryWhetherList { get; set; }
  29. public List<CodeGenConfig> TableField { get; set; }
  30. public bool IsJoinTable { get; set; }
  31. public bool IsUpload { get; set; }
  32. private List<TableColumnOuput> ColumnList { get; set; }
  33. public string GetColumnNetType(object tbName, object colName)
  34. {
  35. ColumnList = GetColumnListByTableName(tbName.ToString());
  36. var col = ColumnList.Where(c => c.ColumnName == colName.ToString()).FirstOrDefault();
  37. return col.NetType;
  38. }
  39. public List<TableColumnOuput> GetColumnListByTableName(string tableName)
  40. {
  41. // 获取实体类型属性
  42. var entityType = _sysCodeGenRep.Context.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName);
  43. if (entityType == null) return null;
  44. // 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
  45. return _sysCodeGenRep.Context.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new TableColumnOuput
  46. {
  47. ColumnName = u.DbColumnName,
  48. ColumnKey = u.IsPrimarykey.ToString(),
  49. DataType = u.DataType.ToString(),
  50. NetType = CodeGenUtil.ConvertDataType(u.DataType.ToString()),
  51. ColumnComment = u.ColumnDescription
  52. }).ToList();
  53. }
  54. }
  55. }