DatabaseTableService.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. using Attribute;
  2. using Model;
  3. using Model.Base;
  4. using Repository;
  5. using Service;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Vo.Admin;
  8. using Dto.Admin;
  9. using Custom;
  10. using Common;
  11. using System.Linq;
  12. using Tasks;
  13. using Util;
  14. namespace Services
  15. {
  16. /// <summary>
  17. /// 数据表Service业务层处理
  18. /// </summary>
  19. [AppService(ServiceType = typeof(IDatabaseTableService), ServiceLifetime = LifeTime.Transient)]
  20. public class DatabaseTableService : BaseService<DatabaseTable>, IDatabaseTableService
  21. {
  22. private readonly IDatabaseFieldService _DatabaseFieldService;
  23. private readonly IDatabaseFieldIndexService _DatabaseFieldIndexService;
  24. private readonly IDatabaseFieldTabsService _DatabaseFieldTabsService;
  25. private readonly IApiInfoService _ApiInfoService;
  26. private readonly IApiGroupService _ApiGroupService;
  27. public DatabaseTableService(IDatabaseFieldService DatabaseFieldService, IDatabaseFieldIndexService DatabaseFieldIndexService, IDatabaseFieldTabsService DatabaseFieldTabsService, IApiInfoService ApiInfoService, IApiGroupService ApiGroupService)
  28. {
  29. _DatabaseFieldService = DatabaseFieldService;
  30. _DatabaseFieldIndexService = DatabaseFieldIndexService;
  31. _DatabaseFieldTabsService = DatabaseFieldTabsService;
  32. _ApiInfoService = ApiInfoService;
  33. _ApiGroupService = ApiGroupService;
  34. }
  35. /// <summary>
  36. /// 数据表-列表
  37. /// </summary>
  38. /// <param name="param">参数请求体</param>
  39. /// <param name="page">分页参数</param>
  40. /// <returns>列表</returns>
  41. public PagedInfo<GetDatabaseTableListVo> getDatabaseTableList([FromQuery] PagerInfo page, [FromQuery] DatabaseTable param)
  42. {
  43. //拼装查询条件
  44. var predicate = Expressionable.Create<DatabaseTable>();
  45. predicate = predicate.AndIF(param.databaseId > 0, m => m.databaseId == param.databaseId);
  46. predicate = predicate.AndIF(!string.IsNullOrEmpty(param.tableTitle), m => m.tableTitle.Contains(param.tableTitle));
  47. predicate = predicate.AndIF(!string.IsNullOrEmpty(param.tableName), m => m.tableName.Contains(param.tableName));
  48. predicate = predicate.AndIF(param.splitKind > 0, m => m.splitKind == param.splitKind);
  49. var response = Queryable()
  50. .Where(predicate.ToExpression())
  51. .OrderBy(m => m.tableName)
  52. .ToPage<DatabaseTable, GetDatabaseTableListVo>(page);
  53. return response;
  54. }
  55. /// <summary>
  56. /// 数据表-根据服务ID查询列表
  57. /// </summary>
  58. /// <param name="param">参数请求体</param>
  59. /// <param name="page">分页参数</param>
  60. /// <returns>根据服务ID查询列表</returns>
  61. public PagedInfo<GetDatabaseTableListByIdsVo> getDatabaseTableListByIds([FromQuery] PagerInfo page, [FromQuery] GetDatabaseTableListByIdsDto param)
  62. {
  63. //拼装查询条件
  64. var predicate = Expressionable.Create<DatabaseTable>();
  65. // predicate = predicate.AndIF(param.serviceId > 0, m => m.serviceId == param.serviceId);
  66. var response = Queryable()
  67. .Where(predicate.ToExpression())
  68. .OrderByDescending(m => m.id)
  69. .ToPage<DatabaseTable, GetDatabaseTableListByIdsVo>(page);
  70. return response;
  71. }
  72. /// <summary>
  73. /// 克隆数据表
  74. /// </summary>
  75. /// <param name="sourceTable">来源数据表</param>
  76. /// <param name="newDatabaseInfoId">新数据库ID</param>
  77. /// <returns>克隆数据表</returns>
  78. public void copyDatabaseTable([FromBody] CopyDatabaseTableDto param)
  79. {
  80. List<int> tableIdList = param.sourceTableId.ToList();
  81. var sourceTables = GetList(m => tableIdList.Contains(m.id)).ToList();
  82. foreach(DatabaseTable sourceTable in sourceTables)
  83. {
  84. DatabaseTable newTable = new DatabaseTable();
  85. newTable.databaseId = param.targetDatabaseId;
  86. newTable.tableName = sourceTable.tableName;
  87. newTable.tableTitle = sourceTable.tableTitle;
  88. newTable.createTime = DateTime.Now;
  89. int newTableId = InsertReturnIdentity(newTable);
  90. var sourceFieldTabs = _DatabaseFieldTabsService.GetList(m => m.tableId == sourceTable.id).ToList();
  91. foreach(DatabaseFieldTabs sourceFieldTab in sourceFieldTabs)
  92. {
  93. DatabaseFieldTabs newFieldTab = new DatabaseFieldTabs();
  94. newFieldTab.tabName = sourceFieldTab.tabName;
  95. newFieldTab.databaseId = param.targetDatabaseId;
  96. newFieldTab.tableId = newTableId;
  97. newFieldTab.createTime = DateTime.Now;
  98. int newFieldTabId = _DatabaseFieldTabsService.InsertReturnIdentity(newFieldTab);
  99. }
  100. var sourceFields = _DatabaseFieldService.GetList(m => m.tableId == sourceTable.id).ToList();
  101. foreach(DatabaseField sourceField in sourceFields)
  102. {
  103. DatabaseField newField = new DatabaseField();
  104. newField.databaseId = param.targetDatabaseId;
  105. newField.tableId = newTableId;
  106. newField.tabId = sourceField.tabId;
  107. newField.fieldTitle = sourceField.fieldTitle;
  108. newField.fieldName = sourceField.fieldName;
  109. newField.fieldType = sourceField.fieldType;
  110. newField.fieldLength = sourceField.fieldLength;
  111. newField.fieldDefaultValue = sourceField.fieldDefaultValue;
  112. newField.fieldDetail = sourceField.fieldDetail;
  113. newField.editType = sourceField.editType;
  114. newField.validateAttribute = sourceField.validateAttribute;
  115. newField.primaryKey = sourceField.primaryKey;
  116. newField.autoIncrement = sourceField.autoIncrement;
  117. newField.splitFlag = sourceField.splitFlag;
  118. newField.showList = sourceField.showList;
  119. newField.showQuery = sourceField.showQuery;
  120. newField.showEdit = sourceField.showEdit;
  121. newField.checkRepeat = sourceField.checkRepeat;
  122. newField.exportFlag = sourceField.exportFlag;
  123. newField.importFlag = sourceField.importFlag;
  124. newField.listEditFlag = sourceField.listEditFlag;
  125. newField.listEditPlaceholder = sourceField.listEditPlaceholder;
  126. newField.statCondition = sourceField.statCondition;
  127. newField.statData = sourceField.statData;
  128. newField.linkTableId = sourceField.linkTableId;
  129. newField.linkFieldId = sourceField.linkFieldId;
  130. newField.apiId = sourceField.apiId;
  131. newField.createTime = DateTime.Now;
  132. _DatabaseFieldService.Add(newField);
  133. }
  134. }
  135. }
  136. /// <summary>
  137. /// 添加数据表
  138. /// </summary>
  139. /// <param name="param">参数请求体</param>
  140. /// <returns></returns>
  141. public int addDatabaseTable([FromBody] DatabaseTable param)
  142. {
  143. int id = InsertReturnIdentity(param);
  144. _DatabaseFieldService.Add(new DatabaseField()
  145. {
  146. createTime = DateTime.Now,
  147. fieldTitle = "ID",
  148. fieldName = "id",
  149. fieldType = "int4",
  150. fieldLength = "",
  151. fieldDefaultValue = "0",
  152. fieldDetail = "主键",
  153. primaryKey = true,
  154. autoIncrement = true,
  155. splitFlag = false,
  156. tableId = id,
  157. databaseId = param.databaseId,
  158. });
  159. _DatabaseFieldService.Add(new DatabaseField()
  160. {
  161. createTime = DateTime.Now,
  162. fieldTitle = "版本",
  163. fieldName = "version",
  164. fieldType = "int4",
  165. fieldLength = "",
  166. fieldDefaultValue = "0",
  167. fieldDetail = "版本",
  168. primaryKey = false,
  169. autoIncrement = false,
  170. splitFlag = false,
  171. tableId = id,
  172. databaseId = param.databaseId,
  173. });
  174. _DatabaseFieldService.Add(new DatabaseField()
  175. {
  176. createTime = DateTime.Now,
  177. fieldTitle = "删除标志",
  178. fieldName = "del_flag",
  179. fieldType = "int4",
  180. fieldLength = "",
  181. fieldDefaultValue = "0",
  182. fieldDetail = "删除标志",
  183. primaryKey = false,
  184. autoIncrement = false,
  185. splitFlag = false,
  186. tableId = id,
  187. databaseId = param.databaseId,
  188. });
  189. _DatabaseFieldService.Add(new DatabaseField()
  190. {
  191. createTime = DateTime.Now,
  192. fieldTitle = "创建时间",
  193. fieldName = "create_time",
  194. fieldType = "timestamp",
  195. fieldLength = "",
  196. fieldDefaultValue = "",
  197. fieldDetail = "创建时间",
  198. primaryKey = false,
  199. autoIncrement = false,
  200. splitFlag = false,
  201. tableId = id,
  202. databaseId = param.databaseId,
  203. });
  204. _DatabaseFieldService.Add(new DatabaseField()
  205. {
  206. createTime = DateTime.Now,
  207. fieldTitle = "更新时间",
  208. fieldName = "update_time",
  209. fieldType = "timestamp",
  210. fieldLength = "",
  211. fieldDefaultValue = "",
  212. fieldDetail = "更新时间",
  213. primaryKey = false,
  214. autoIncrement = false,
  215. splitFlag = false,
  216. tableId = id,
  217. databaseId = param.databaseId,
  218. });
  219. _DatabaseFieldService.Add(new DatabaseField()
  220. {
  221. createTime = DateTime.Now,
  222. fieldTitle = "创建人",
  223. fieldName = "create_by",
  224. fieldType = "varchar",
  225. fieldLength = "50",
  226. fieldDefaultValue = "",
  227. fieldDetail = "创建人",
  228. primaryKey = false,
  229. autoIncrement = false,
  230. splitFlag = false,
  231. tableId = id,
  232. databaseId = param.databaseId,
  233. });
  234. _DatabaseFieldService.Add(new DatabaseField()
  235. {
  236. createTime = DateTime.Now,
  237. fieldTitle = "更新人",
  238. fieldName = "update_by",
  239. fieldType = "varchar",
  240. fieldLength = "50",
  241. fieldDefaultValue = "",
  242. fieldDetail = "更新人",
  243. primaryKey = false,
  244. autoIncrement = false,
  245. splitFlag = false,
  246. tableId = id,
  247. databaseId = param.databaseId,
  248. });
  249. return id;
  250. }
  251. /// <summary>
  252. /// 生成SQL脚本
  253. /// </summary>
  254. /// <param name="param">参数请求体</param>
  255. /// <returns>生成</returns>
  256. public string makeDatabaseTable([FromBody] MakeDatabaseTableDto param, DatabaseInfo databaseInfo, TokenModel loginUser)
  257. {
  258. List<int> tableIds = param.id.ToList();
  259. List<DatabaseTable> tables = GetList(m => tableIds.Contains(m.id));
  260. foreach(DatabaseTable table in tables)
  261. {
  262. table.fields = _DatabaseFieldService.GetList(m => m.tableId == table.id);
  263. table.fieldIndexes = _DatabaseFieldIndexService.GetList(m => m.tableId == table.id);
  264. }
  265. Dictionary<string, object> pushData = new Dictionary<string, object>();pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  266. pushData.Add("author", loginUser.username);
  267. pushData.Add("fileName", Function.MD5_16(string.Join(",", param.id)));
  268. pushData.Add("databaseTable", tables);
  269. var modePath = "dbTable";
  270. if(databaseInfo.dbType == "pgsql")
  271. {
  272. modePath = "pg-dbTable";
  273. }
  274. return MakeHelper.Make(pushData, modePath, "dbTable", loginUser);
  275. }
  276. /* java代码生成 */
  277. /// <summary>
  278. /// 生成java代码-model
  279. /// </summary>
  280. /// <returns>生成java代码-model</returns>
  281. public void makeJavaModel(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  282. {
  283. List<DatabaseField> fields = _DatabaseFieldService.GetList(m => m.tableId == table.id);
  284. Dictionary<string, object> pushData = new Dictionary<string, object>();
  285. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  286. pushData.Add("author", loginUser.username);
  287. pushData.Add("projectService", baseInfo);
  288. pushData.Add("databaseTable", table);
  289. pushData.Add("databaseFields", fields);
  290. MakeHelper.Push(pushData, "model", "javaModel", loginUser, "0", versionNo);
  291. }
  292. /// <summary>
  293. /// 生成java代码-service
  294. /// </summary>
  295. /// <returns>生成java代码-service</returns>
  296. public void makeJavaService(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  297. {
  298. var apiInfos = _ApiInfoService.GetList(m => m.serviceId == baseInfo.id && m.linkTableId == table.id && m.apiKind < 3);
  299. foreach(ApiInfo apiInfo in apiInfos)
  300. {
  301. foreach(var param in apiInfo.apiParam)
  302. {
  303. if(param.linkTableId > 0)
  304. {
  305. var linkTable = GetFirst(m => m.id == param.linkTableId) ?? new DatabaseTable();
  306. param.linkTableTitle = linkTable.tableTitle;
  307. param.linkTableName = linkTable.tableName;
  308. }
  309. }
  310. }
  311. Dictionary<string, object> pushData = new Dictionary<string, object>();
  312. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  313. pushData.Add("author", loginUser.username);
  314. pushData.Add("projectService", baseInfo);
  315. pushData.Add("databaseTable", table);
  316. pushData.Add("apiInfos", apiInfos);
  317. MakeHelper.Push(pushData, "service", "javaService", loginUser, "0", versionNo);
  318. }
  319. /// <summary>
  320. /// 生成java代码-serviceImpl
  321. /// </summary>
  322. /// <returns>生成java代码-serviceImpl</returns>
  323. public void makeJavaServiceImpl(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  324. {
  325. var apiInfos = _ApiInfoService.GetList(m => m.serviceId == baseInfo.id && m.linkTableId == table.id && m.apiKind < 3);
  326. foreach(ApiInfo apiInfo in apiInfos)
  327. {
  328. foreach(var param in apiInfo.apiParam)
  329. {
  330. if(param.linkTableId > 0)
  331. {
  332. var linkTable = GetFirst(m => m.id == param.linkTableId) ?? new DatabaseTable();
  333. param.linkTableTitle = linkTable.tableTitle;
  334. param.linkTableName = linkTable.tableName;
  335. }
  336. }
  337. }
  338. Dictionary<string, object> pushData = new Dictionary<string, object>();
  339. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  340. pushData.Add("author", loginUser.username);
  341. pushData.Add("projectService", baseInfo);
  342. pushData.Add("databaseTable", table);
  343. pushData.Add("apiInfos", apiInfos);
  344. MakeHelper.Push(pushData, "serviceImpl", "javaServiceImpl", loginUser, "0", versionNo);
  345. }
  346. /// <summary>
  347. /// 生成java代码-dto
  348. /// </summary>
  349. /// <returns>生成java代码-dto</returns>
  350. public void makeJavaDto(ProjectService baseInfo, ApiInfo apiInfo, TokenModel loginUser, string versionNo)
  351. {
  352. var apiGroup = _ApiGroupService.GetFirst(m => m.id == apiInfo.groupId) ?? new ApiGroup();
  353. Dictionary<string, object> pushData = new Dictionary<string, object>();
  354. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  355. pushData.Add("author", loginUser.username);
  356. pushData.Add("projectService", baseInfo);
  357. pushData.Add("apiInfo", apiInfo);
  358. pushData.Add("apiGroup", apiGroup);
  359. pushData.Add("databaseFields", apiInfo.apiParam.Where(m => m.reqParam).ToList());
  360. MakeHelper.Push(pushData, "dto", "javaDto", loginUser, "0", versionNo);
  361. }
  362. /// <summary>
  363. /// 生成java代码-vo
  364. /// </summary>
  365. /// <returns>生成java代码-vo</returns>
  366. public void makeJavaVo(ProjectService baseInfo, ApiInfo apiInfo, TokenModel loginUser, string versionNo)
  367. {
  368. var apiGroup = _ApiGroupService.GetFirst(m => m.id == apiInfo.groupId) ?? new ApiGroup();
  369. Dictionary<string, object> pushData = new Dictionary<string, object>();
  370. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  371. pushData.Add("author", loginUser.username);
  372. pushData.Add("projectService", baseInfo);
  373. pushData.Add("apiInfo", apiInfo);
  374. pushData.Add("apiGroup", apiGroup);
  375. pushData.Add("databaseFields", apiInfo.apiParam.Where(m => m.resParam).ToList());
  376. MakeHelper.Push(pushData, "vo", "javaVo", loginUser, "0", versionNo);
  377. }
  378. /// <summary>
  379. /// 生成java代码-mapper
  380. /// </summary>
  381. /// <returns>生成java代码-mapper</returns>
  382. public void makeJavaMapper(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  383. {
  384. Dictionary<string, object> pushData = new Dictionary<string, object>();
  385. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  386. pushData.Add("author", loginUser.username);
  387. pushData.Add("projectService", baseInfo);
  388. pushData.Add("databaseTable", table);
  389. MakeHelper.Push(pushData, "mapper", "javaMapper", loginUser, "0", versionNo);
  390. }
  391. /// <summary>
  392. /// 生成java代码-mapperXml
  393. /// </summary>
  394. /// <returns>生成java代码-mapperXml</returns>
  395. public void makeJavaMapperXml(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  396. {
  397. List<DatabaseField> fields = _DatabaseFieldService.GetList(m => m.tableId == table.id);
  398. Dictionary<string, object> pushData = new Dictionary<string, object>();
  399. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  400. pushData.Add("author", loginUser.username);
  401. pushData.Add("projectService", baseInfo);
  402. pushData.Add("databaseTable", table);
  403. pushData.Add("databaseFields", fields);
  404. MakeHelper.Push(pushData, "mapperXml", "javaMapperXml", loginUser, "0", versionNo);
  405. }
  406. /// <summary>
  407. /// 生成java代码-controller
  408. /// </summary>
  409. /// <returns>生成java代码-controller</returns>
  410. public void makeJavaController(ProjectService baseInfo, ApiGroup apiGroup, string controllerFilePath, TokenModel loginUser, string versionNo)
  411. {
  412. var apiInfos = _ApiInfoService.GetList(m => m.serviceId == baseInfo.id && m.controllerFilePath == controllerFilePath);
  413. var tableIds = apiInfos.Where(m => m.linkTableId > 0).Select(m => m.linkTableId).Distinct().ToList();
  414. var tables = GetList(m => tableIds.Contains(m.id));
  415. foreach(var apiInfo in apiInfos)
  416. {
  417. var linkTable = tables.FirstOrDefault(m => m.id == apiInfo.linkTableId) ?? new DatabaseTable();
  418. apiInfo.linkTableTitle = linkTable.tableTitle;
  419. apiInfo.linkTableName = linkTable.tableName;
  420. }
  421. Dictionary<string, object> pushData = new Dictionary<string, object>();
  422. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  423. pushData.Add("author", loginUser.username);
  424. pushData.Add("projectService", baseInfo);
  425. pushData.Add("databaseTables", tables);
  426. pushData.Add("apiGroup", apiGroup);
  427. pushData.Add("apiInfos", apiInfos);
  428. pushData.Add("controllerName", controllerFilePath);
  429. pushData.Add("controllerNameUpper", PublicFunction.transferName(controllerFilePath));
  430. MakeHelper.Push(pushData, "controller", "javaController", loginUser, "0", versionNo);
  431. }
  432. /* c#代码生成 */
  433. /// <summary>
  434. /// 生成c#代码-model
  435. /// </summary>
  436. /// <returns>生成c#代码-model</returns>
  437. public void makeCSharpModel(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  438. {
  439. List<DatabaseField> fields = _DatabaseFieldService.GetList(m => m.tableId == table.id);
  440. Dictionary<string, object> pushData = new Dictionary<string, object>();
  441. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  442. pushData.Add("author", loginUser.username);
  443. pushData.Add("projectService", baseInfo);
  444. pushData.Add("databaseTable", table);
  445. pushData.Add("databaseFields", fields);
  446. MakeHelper.Push(pushData, "cs-model", "csModel", loginUser, "0", versionNo);
  447. }
  448. /// <summary>
  449. /// 生成c#代码-service
  450. /// </summary>
  451. /// <returns>生成c#代码-service</returns>
  452. public void makeCSharpService(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  453. {
  454. var apiInfoList = new List<ApiInfo>();
  455. var apiInfos = _ApiInfoService.GetList(m => m.serviceId == baseInfo.id && m.linkTableId == table.id);
  456. foreach(ApiInfo apiInfo in apiInfos)
  457. {
  458. var linkTable = GetFirst(m => m.id == apiInfo.linkTableId) ?? new DatabaseTable();
  459. apiInfo.linkTableTitle = linkTable.tableTitle;
  460. apiInfo.linkTableName = linkTable.tableName;
  461. apiInfo.linkTableSplitKind = linkTable.splitKind;
  462. foreach(var param in apiInfo.apiParam)
  463. {
  464. if(param.linkTableId > 0)
  465. {
  466. var paramlinkTable = GetFirst(m => m.id == param.linkTableId) ?? new DatabaseTable();
  467. param.linkTableTitle = paramlinkTable.tableTitle;
  468. param.linkTableName = paramlinkTable.tableName;
  469. }
  470. }
  471. if(apiInfo.apiKind < 2 || apiInfo.linkTableSplitKind > 0)
  472. {
  473. apiInfoList.Add(apiInfo);
  474. }
  475. }
  476. List<int> groupIds = apiInfoList.Select(m => m.groupId).Distinct().ToList();
  477. var apiGroups = _ApiGroupService.GetList(m => groupIds.Contains(m.id));
  478. Dictionary<string, object> pushData = new Dictionary<string, object>();
  479. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  480. pushData.Add("author", loginUser.username);
  481. pushData.Add("projectService", baseInfo);
  482. pushData.Add("databaseTable", table);
  483. pushData.Add("apiInfos", apiInfoList);
  484. pushData.Add("apiGroups", apiGroups);
  485. MakeHelper.Push(pushData, "cs-service", "csService", loginUser, "0", versionNo);
  486. Utils.WriteLog("cs-service:" + apiInfoList.Count, "测试生成代码");
  487. }
  488. /// <summary>
  489. /// 生成c#代码-serviceImpl
  490. /// </summary>
  491. /// <returns>生成c#代码-serviceImpl</returns>
  492. public void makeCSharpIService(ProjectService baseInfo, DatabaseTable table, TokenModel loginUser, string versionNo)
  493. {
  494. var apiInfoList = new List<ApiInfo>();
  495. var apiInfos = _ApiInfoService.GetList(m => m.serviceId == baseInfo.id && m.linkTableId == table.id);
  496. foreach(ApiInfo apiInfo in apiInfos)
  497. {
  498. var linkTable = GetFirst(m => m.id == apiInfo.linkTableId) ?? new DatabaseTable();
  499. apiInfo.linkTableTitle = linkTable.tableTitle;
  500. apiInfo.linkTableName = linkTable.tableName;
  501. apiInfo.linkTableSplitKind = linkTable.splitKind;
  502. foreach(var param in apiInfo.apiParam)
  503. {
  504. if(param.linkTableId > 0)
  505. {
  506. var paramlinkTable = GetFirst(m => m.id == param.linkTableId) ?? new DatabaseTable();
  507. param.linkTableTitle = paramlinkTable.tableTitle;
  508. param.linkTableName = paramlinkTable.tableName;
  509. }
  510. }
  511. if(apiInfo.apiKind < 2 || apiInfo.linkTableSplitKind > 0)
  512. {
  513. apiInfoList.Add(apiInfo);
  514. }
  515. }
  516. List<int> groupIds = apiInfoList.Select(m => m.groupId).Distinct().ToList();
  517. var apiGroups = _ApiGroupService.GetList(m => groupIds.Contains(m.id));
  518. Dictionary<string, object> pushData = new Dictionary<string, object>();
  519. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  520. pushData.Add("author", loginUser.username);
  521. pushData.Add("projectService", baseInfo);
  522. pushData.Add("databaseTable", table);
  523. pushData.Add("apiInfos", apiInfoList);
  524. pushData.Add("apiGroups", apiGroups);
  525. MakeHelper.Push(pushData, "cs-iservice", "csIService", loginUser, "0", versionNo);
  526. }
  527. /// <summary>
  528. /// 生成c#代码-dto
  529. /// </summary>
  530. /// <returns>生成c#代码-dto</returns>
  531. public void makeCSharpDto(ProjectService baseInfo, ApiInfo apiInfo, TokenModel loginUser, string versionNo)
  532. {
  533. var apiGroup = _ApiGroupService.GetFirst(m => m.id == apiInfo.groupId) ?? new ApiGroup();
  534. Dictionary<string, object> pushData = new Dictionary<string, object>();
  535. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  536. pushData.Add("author", loginUser.username);
  537. pushData.Add("projectService", baseInfo);
  538. pushData.Add("apiInfo", apiInfo);
  539. pushData.Add("apiGroup", apiGroup);
  540. pushData.Add("databaseFields", apiInfo.apiParam.Where(m => m.reqParam).ToList());
  541. MakeHelper.Push(pushData, "cs-dto", "csDto", loginUser, "0", versionNo);
  542. }
  543. /// <summary>
  544. /// 生成c#代码-vo
  545. /// </summary>
  546. /// <returns>生成c#代码-vo</returns>
  547. public void makeCSharpVo(ProjectService baseInfo, ApiInfo apiInfo, TokenModel loginUser, string versionNo)
  548. {
  549. var apiGroup = _ApiGroupService.GetFirst(m => m.id == apiInfo.groupId) ?? new ApiGroup();
  550. Dictionary<string, object> pushData = new Dictionary<string, object>();
  551. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  552. pushData.Add("author", loginUser.username);
  553. pushData.Add("projectService", baseInfo);
  554. pushData.Add("apiInfo", apiInfo);
  555. pushData.Add("apiGroup", apiGroup);
  556. pushData.Add("databaseFields", apiInfo.apiParam.Where(m => m.resParam).ToList());
  557. MakeHelper.Push(pushData, "cs-vo", "csVo", loginUser, "0", versionNo);
  558. }
  559. /// <summary>
  560. /// 生成c#代码-controller
  561. /// </summary>
  562. /// <returns>生成c#代码-controller</returns>
  563. public void makeCSharpController(ProjectService baseInfo, ApiGroup apiGroup, string controllerFilePath, TokenModel loginUser, string versionNo)
  564. {
  565. var apiInfos = _ApiInfoService.GetList(m => m.serviceId == baseInfo.id && m.controllerFilePath == controllerFilePath);
  566. var tableIds = apiInfos.Where(m => m.linkTableId > 0).Select(m => m.linkTableId).Distinct().ToList();
  567. var tables = GetList(m => tableIds.Contains(m.id));
  568. foreach(var apiInfo in apiInfos)
  569. {
  570. var linkTable = tables.FirstOrDefault(m => m.id == apiInfo.linkTableId) ?? new DatabaseTable();
  571. apiInfo.linkTableTitle = linkTable.tableTitle;
  572. apiInfo.linkTableName = linkTable.tableName;
  573. apiInfo.linkTableSplitKind = linkTable.splitKind;
  574. }
  575. Dictionary<string, object> pushData = new Dictionary<string, object>();
  576. pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  577. pushData.Add("author", loginUser.username);
  578. pushData.Add("projectService", baseInfo);
  579. pushData.Add("databaseTables", tables);
  580. pushData.Add("apiGroup", apiGroup);
  581. pushData.Add("apiInfos", apiInfos);
  582. pushData.Add("controllerName", controllerFilePath);
  583. pushData.Add("controllerNameUpper", PublicFunction.transferName(controllerFilePath));
  584. MakeHelper.Push(pushData, "cs-controller", "csController", loginUser, "0", versionNo);
  585. }
  586. }
  587. }