DatabaseFieldController.cs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. using Vo;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Model;
  4. using Services;
  5. using Model.Base;
  6. using Vo.Admin;
  7. using Mapster;
  8. using Infrastructure;
  9. using Dto.Admin;
  10. using Util;
  11. using Tasks;
  12. namespace Controllers.Admin
  13. {
  14. /// <summary>
  15. /// DatabaseField)Controller
  16. /// </summary>
  17. // [Route("${Router}$")]
  18. // [ApiExplorerSettings(GroupName = "DatabaseField")]
  19. public class DatabaseFieldController : BaseController
  20. {
  21. private readonly IDatabaseFieldService _DatabaseFieldService;
  22. private readonly IDatabaseFieldTabsService _DatabaseFieldTabsService;
  23. private readonly IDatabaseTableService _DatabaseTableService;
  24. private readonly IDatabaseInfoService _DatabaseInfoService;
  25. public DatabaseFieldController(IDatabaseFieldService DatabaseFieldService, IDatabaseFieldTabsService DatabaseFieldTabsService, IDatabaseTableService DatabaseTableService, IDatabaseInfoService DatabaseInfoService)
  26. {
  27. _DatabaseFieldService = DatabaseFieldService;
  28. _DatabaseFieldTabsService = DatabaseFieldTabsService;
  29. _DatabaseTableService = DatabaseTableService;
  30. _DatabaseInfoService = DatabaseInfoService;
  31. }
  32. /// <param name="page">分页参数</param>
  33. /// <summary>
  34. /// 列表
  35. /// </summary>
  36. /// <param name="page">分页对象</param>
  37. /// <param name="param">参数请求体</param>
  38. /// <returns>列表</returns>
  39. [HttpGet]
  40. [Route("/v1/omega_source/DatabaseField/getDatabaseFieldList")]
  41. public IActionResult getDatabaseFieldList([FromQuery] PagerInfo page, [FromQuery] DatabaseField param)
  42. {
  43. var response = _DatabaseFieldService.getDatabaseFieldList(page, param);
  44. return SUCCESS(response);
  45. }
  46. /// <summary>
  47. /// 详情
  48. /// </summary>
  49. /// <param name="param">参数请求体</param>
  50. /// <returns>详情</returns>
  51. [HttpGet]
  52. [Route("/v1/omega_source/DatabaseField/getDatabaseFieldQuery")]
  53. public IActionResult getDatabaseFieldQuery([FromQuery] DatabaseField param)
  54. {
  55. var response = _DatabaseFieldService.GetFirst(m => m.id == param.id) ?? new DatabaseField();
  56. return SUCCESS(response);
  57. }
  58. /// <summary>
  59. /// 添加
  60. /// </summary>
  61. /// <param name="param">参数请求体</param>
  62. /// <returns>添加</returns>
  63. [HttpPost]
  64. [Route("/v1/omega_source/DatabaseField/addDatabaseField")]
  65. public IActionResult addDatabaseField([FromBody] AddDatabaseFieldDto param)
  66. {
  67. var modal = param.Adapt<DatabaseField>().ToCreate(HttpContext);
  68. modal.tabId = _DatabaseFieldTabsService.AddDatabaseFieldTabs(param.tabId, param.tableId);
  69. if((modal.fieldType == "int" || modal.fieldType == "bigint" || modal.fieldType == "decimal" || modal.fieldType == "numeric" || modal.fieldType == "bit") && modal.autoIncrement == false)
  70. {
  71. modal.fieldDefaultValue = "0";
  72. }
  73. if(modal.databaseId == 0)
  74. {
  75. var table = _DatabaseTableService.GetFirst(m => m.id == param.tableId) ?? new DatabaseTable();
  76. modal.databaseId = table.databaseId;
  77. }
  78. var response = _DatabaseFieldService.InsertReturnIdentity(modal);
  79. return SUCCESS(response);
  80. }
  81. /// <summary>
  82. /// 修改
  83. /// </summary>
  84. /// <param name="param">参数请求体</param>
  85. /// <returns>修改</returns>
  86. [HttpPut]
  87. [Route("/v1/omega_source/DatabaseField/updateDatabaseField")]
  88. public IActionResult updateDatabaseField([FromBody] AddDatabaseFieldDto param)
  89. {
  90. var modal = param.Adapt<DatabaseField>().ToUpdate(HttpContext);
  91. modal.tabId = _DatabaseFieldTabsService.AddDatabaseFieldTabs(param.tabId, param.tableId);
  92. if((modal.fieldType == "int" || modal.fieldType == "bigint" || modal.fieldType == "decimal" || modal.fieldType == "numeric" || modal.fieldType == "bit") && string.IsNullOrEmpty(modal.fieldDefaultValue) && modal.autoIncrement == false)
  93. {
  94. modal.fieldDefaultValue = "0";
  95. }
  96. var response = _DatabaseFieldService.Update(modal, true);
  97. return SUCCESS(response);
  98. }
  99. /// <summary>
  100. /// 删除
  101. /// </summary>
  102. /// <param name="id">ID</param>
  103. /// <returns>删除</returns>
  104. [HttpDelete]
  105. [Route("/v1/omega_source/DatabaseField/deleteDatabaseField/{id}")]
  106. public IActionResult deleteDatabaseField(int id)
  107. {
  108. var response = _DatabaseFieldService.Delete(id);
  109. return SUCCESS(response);
  110. }
  111. /// <summary>
  112. /// 批量删除
  113. /// </summary>
  114. /// <param name="param">参数请求体</param>
  115. /// <returns>批量删除</returns>
  116. [HttpPut]
  117. [Route("/v1/omega_source/DatabaseField/batchDeleteDatabaseField")]
  118. public IActionResult batchDeleteDatabaseField([FromBody] BatchDeleteApiInfoDto param)
  119. {
  120. foreach(var id in param.idList)
  121. {
  122. _DatabaseFieldService.Delete(id);
  123. }
  124. return SUCCESS("ok");
  125. }
  126. /// <summary>
  127. /// 修改字段属性
  128. /// </summary>
  129. /// <param name="param">参数请求体</param>
  130. /// <returns>修改字段属性</returns>
  131. [HttpPut]
  132. [Route("/v1/omega_source/DatabaseField/updateDatabaseFieldAttr")]
  133. public IActionResult updateDatabaseFieldAttr([FromBody] List<UpdateDatabaseFieldAttrDto> param)
  134. {
  135. foreach(UpdateDatabaseFieldAttrDto sub in param)
  136. {
  137. var modal = sub.Adapt<DatabaseField>().ToUpdate(HttpContext);
  138. var item = _DatabaseFieldService.GetFirst(m => m.id == sub.id);
  139. if(item != null)
  140. {
  141. item.showList = sub.showList;
  142. item.showEdit = sub.showEdit;
  143. item.showQuery = sub.showQuery;
  144. item.exportFlag = sub.exportFlag;
  145. item.importFlag = sub.importFlag;
  146. _DatabaseFieldService.Update(item);
  147. }
  148. }
  149. return SUCCESS("ok");
  150. }
  151. /// <summary>
  152. /// 克隆字段
  153. /// </summary>
  154. /// <param name="param">参数请求体</param>
  155. /// <returns>克隆字段</returns>
  156. [HttpPost]
  157. [Route("/v1/omega_source/DatabaseField/copyDatabaseField")]
  158. public IActionResult copyDatabaseField([FromBody] CopyDatabaseFieldDto param)
  159. {
  160. var targetTable = _DatabaseTableService.GetFirst(m => m.id == param.targetTableId) ?? new DatabaseTable();
  161. _DatabaseFieldService.copyDatabaseField(param, targetTable);
  162. return SUCCESS("ok");
  163. }
  164. /// <summary>
  165. /// 生成
  166. /// </summary>
  167. /// <param name="param">参数请求体</param>
  168. /// <returns>生成</returns>
  169. [HttpPut]
  170. [Route("/v1/omega_source/DatabaseField/makeDatabaseField")]
  171. public IActionResult makeDatabaseField([FromBody] MakeDatabaseFieldDto param)
  172. {
  173. if(param.id.Length == 0)
  174. {
  175. return ToResponse(ResultCode.FAIL, "字段ID不能为空");
  176. }
  177. var fieldId = param.id[0];
  178. var databaseField = _DatabaseFieldService.GetFirst(m => m.id == fieldId) ?? new DatabaseField();
  179. var databaseInfo = _DatabaseInfoService.GetFirst(m => m.id == databaseField.databaseId) ?? new DatabaseInfo();
  180. TokenModel loginUser = JwtUtil.GetLoginUser(HttpContext);
  181. string res = _DatabaseFieldService.makeDatabaseField(param, databaseInfo, new DatabaseTable(), loginUser);
  182. string id = MakeHelper.Instance.DoQueue(res);
  183. Dictionary<string, object> dic = new Dictionary<string, object>();
  184. dic.Add("makeObjectId", id);
  185. return SUCCESS(dic);
  186. }
  187. /// <summary>
  188. /// 字段类型列表
  189. /// </summary>
  190. /// <param name="param">参数请求体</param>
  191. /// <returns>字段类型列表</returns>
  192. [HttpGet]
  193. [Route("/v1/omega_source/DatabaseField/getDatabaseFieldTypeList")]
  194. public IActionResult getDatabaseFieldTypeList([FromQuery] GetDatabaseFieldTypeListDto param)
  195. {
  196. var dbInfo = _DatabaseInfoService.GetFirst(m => m.id == param.databaseId) ?? new DatabaseInfo();
  197. List<string> fieldTypeList = new();
  198. if (dbInfo.dbType == "mysql")
  199. {
  200. fieldTypeList.Add("varchar");
  201. fieldTypeList.Add("char");
  202. fieldTypeList.Add("int");
  203. fieldTypeList.Add("bigint");
  204. fieldTypeList.Add("numeric");
  205. fieldTypeList.Add("datetime");
  206. fieldTypeList.Add("bit");
  207. fieldTypeList.Add("longtext");
  208. fieldTypeList.Add("mediumtext");
  209. fieldTypeList.Add("json");
  210. fieldTypeList.Add("enum");
  211. }
  212. else if(dbInfo.dbType == "pgsql")
  213. {
  214. fieldTypeList.Add("varchar");
  215. fieldTypeList.Add("char");
  216. fieldTypeList.Add("int4");
  217. fieldTypeList.Add("int8");
  218. fieldTypeList.Add("numeric");
  219. fieldTypeList.Add("timestamptz");
  220. fieldTypeList.Add("bit");
  221. fieldTypeList.Add("text");
  222. fieldTypeList.Add("jsonb");
  223. }
  224. return SUCCESS(fieldTypeList);
  225. }
  226. }
  227. }