ExternalManageService.cs 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. using PMS.BusinessModels.CloudMonitorManage;
  2. using PMS.BusinessModels.ExternalManage;
  3. using PMS.EntityModels.ExternalManage;
  4. using PMS.Plugins.Common;
  5. using QWPlatform.IService;
  6. using QWPlatform.Models;
  7. using QWPlatform.SystemLibrary;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Configuration;
  11. using System.Data;
  12. using System.Linq;
  13. using System.Runtime.InteropServices;
  14. using System.Runtime.Remoting.Messaging;
  15. using System.Text;
  16. using System.Text.RegularExpressions;
  17. using System.Threading.Tasks;
  18. using System.Xml.Linq;
  19. namespace PMS.DBService.ExternalManage
  20. {
  21. public class ExternalManageService : DataServiceBase
  22. {
  23. public static string GenerateRandomString(int length)
  24. {
  25. Guid guid = Guid.NewGuid();
  26. string uniqueString = guid.ToString("N").Substring(0, 8); // 获取 Guid 的前 8 位作为字符串
  27. return uniqueString;
  28. }
  29. /// <summary>
  30. /// 关键字查询外部服务分类
  31. /// </summary>
  32. /// <param name="keyword"></param>
  33. /// <returns></returns>
  34. public DataTable GetMenu (string keyword, string productId, int type)
  35. {
  36. if (type == 1)
  37. {
  38. string sql = "select a.*,(select b.分类名称 from 外部服务分类 b where a.上级ID = b.ID) as 上级名称 from 外部服务分类 a where a.产品ID = :产品ID";
  39. var sqlbuilder = this.SqlBuilder;
  40. if (!(keyword.IsNullOrEmpty()))
  41. {
  42. sql += "and (upper(分类编码) like '%' || upper(:keyword) || '%' or upper(分类名称) like '%' || upper(:keyword) || '%' or upper(分类简码) like '%' || upper(:keyword) || '%')";
  43. sqlbuilder.Parameters("keyword", keyword);
  44. }
  45. sql += " order by a.分类编码";
  46. return sqlbuilder.SqlText(sql).Parameters("产品ID", productId).Select();
  47. }else
  48. {
  49. string sql = @"WITH w AS ( SELECT a.*
  50. FROM 外部服务分类 a
  51. WHERE a.产品ID = :产品ID UNION ALL
  52. SELECT b.ID, b.分类ID AS 上级ID, b.服务编码 AS 分类编码, b.服务名称 AS 分类名称, b.服务简码 AS 分类简码, b.创建时间 ,b.更新时间, :产品ID AS 产品ID
  53. FROM 外部服务 b, 外部服务分类 a
  54. WHERE a.ID = b.分类ID AND a.产品ID = :产品ID )
  55. SELECT w.* FROM w where 1 = 1 ";
  56. var sqlbuilder = this.SqlBuilder;
  57. if (!(keyword.IsNullOrEmpty()))
  58. {
  59. sql += "and (upper(w.分类编码) like '%' || upper(:keyword) || '%' or upper(w.分类名称) like '%' || upper(:keyword) || '%' or upper(w.分类简码) like '%' || upper(:keyword) || '%')";
  60. sqlbuilder.Parameters("keyword", keyword);
  61. }
  62. sql += " order by w.分类编码";
  63. return sqlbuilder.SqlText(sql).Parameters("产品ID", productId).Select();
  64. }
  65. }
  66. /// <summary>
  67. /// 根据产品ID获取分类
  68. /// </summary>
  69. /// <param name="productIds"></param>
  70. /// <returns></returns>
  71. public DataTable GetMenuByProduct(List<string> productIds)
  72. {
  73. var parameterNames = productIds.Select((id, index) => $":产品ID{index}").ToArray();
  74. string inClause = string.Join(", ", parameterNames);
  75. string sql = $"select a.*, b.名称 as 产品名称 from 外部服务分类 a, 产品系统配置 b where a.产品ID = b.ID and a.产品ID in ({inClause}) order by b.编码, a.分类编码";
  76. var sqlBuilder = this.SqlBuilder.SqlText(sql);
  77. for (int i = 0; i < productIds.Count; i++)
  78. {
  79. sqlBuilder.Parameters($"产品ID{i}", productIds[i]);
  80. }
  81. return sqlBuilder.Select();
  82. }
  83. /// <summary>
  84. /// 获取编码
  85. /// </summary>
  86. /// <param name="tableName">表名</param>
  87. /// <returns></returns>
  88. public string GetMaxClassCode(string parent_id, int type, string productId)
  89. {
  90. var sql = "";
  91. var sqlbuilder = this.SqlBuilder;
  92. string parentCode = "";//上级编码
  93. if (!parent_id.IsNullOrEmpty())
  94. {
  95. parentCode = this.SelectBuilder.From("外部服务分类").Columns("分类编码").Where("ID", parent_id).Select<string>();
  96. }
  97. if (type == 1)
  98. {
  99. sql += "select MAX(分类编码) from 外部服务分类 where 产品ID = :产品ID ";
  100. sqlbuilder.Parameters("产品ID", productId);
  101. if (!parent_id.IsNullOrEmpty())
  102. {
  103. sql += "and 上级ID = :parent_id";
  104. sqlbuilder.Parameters("parent_id", parent_id);
  105. }
  106. else
  107. {
  108. sql += "and 上级ID is null";
  109. }
  110. }
  111. else
  112. {
  113. sql += "select MAX(服务编码) from 外部服务 where 1 = 1";
  114. }
  115. var code = sqlbuilder.SqlText(sql).Select<string>();
  116. if (!code.IsNullOrEmpty() && !parentCode.IsNullOrEmpty())
  117. {
  118. code = code.Substring(parentCode.Length);
  119. }
  120. return parentCode + "" + GetNextCode(code);
  121. }
  122. /// <summary>
  123. /// 获取指定编码的下一编码,支持字母、数字
  124. /// </summary>
  125. /// <param name="code"></param>
  126. /// <returns></returns>
  127. public string GetNextCode(string code)
  128. {
  129. int bytAdd, bytUp = 0;
  130. Regex regNum = new Regex("^[0-9]");
  131. string nextCode = code.IsNullOrEmpty() ? "00" : code;
  132. for (int i = nextCode.Length; i >= 1; i--)
  133. {
  134. bytAdd = (i == nextCode.Length) ? 1 : 0;
  135. string str = nextCode.Substring(i - 1, 1);
  136. if (regNum.IsMatch(str))
  137. {
  138. if ((str.ToInt32() + bytAdd + bytUp) < 10)
  139. {
  140. nextCode = nextCode.Substring(0, i - 1) + (str.ToInt32() + bytAdd + bytUp).ToString() + nextCode.Substring(i);
  141. bytUp = 0;
  142. }
  143. else
  144. {
  145. nextCode = nextCode.Substring(0, i - 1) + "0" + nextCode.Substring(i);
  146. bytUp = 1;
  147. }
  148. }
  149. else
  150. {
  151. if ((Encoding.ASCII.GetBytes(str)[0] + bytAdd + bytUp) <=
  152. (Encoding.ASCII.GetBytes(str)[0] + Convert.ToInt16('Z') - Encoding.ASCII.GetBytes(str.ToUpper())[0]))
  153. {
  154. nextCode = nextCode.Substring(0, i - 1) + Convert.ToChar(Encoding.ASCII.GetBytes(str)[0] + bytAdd + bytUp) + nextCode.Substring(i);
  155. bytUp = 0;
  156. }
  157. else
  158. {
  159. nextCode = nextCode.Substring(0, i - 1) + "0" + nextCode.Substring(i);
  160. bytUp = 1;
  161. }
  162. }
  163. if (bytUp == 0)
  164. {
  165. break;
  166. }
  167. }
  168. if ("1".PadRight(nextCode.Length + 1, '0') == ("1" + nextCode))
  169. {
  170. nextCode = "1" + nextCode;
  171. }
  172. return nextCode;
  173. }
  174. /// <summary>
  175. /// 保存服务分类
  176. /// </summary>
  177. /// <param name="model"></param>
  178. /// <returns></returns>
  179. public bool SaveExternalClass(ExternalClass model)
  180. {
  181. if(model.ID.IsNullOrEmpty())
  182. {
  183. return this.InsertBuilder.Insert("外部服务分类")
  184. .Column("ID", Guid.NewGuid().ToString())
  185. .Column("上级ID", model.上级ID)
  186. .Column("分类编码", model.分类编码)
  187. .Column("分类名称", model.分类名称)
  188. .Column("分类简码", model.分类简码)
  189. .Column("产品ID", model.产品ID)
  190. .Column("创建时间", DateTime.Now)
  191. .Execute() > 0;
  192. }else
  193. {
  194. return this.UpdateBuilder.Update("外部服务分类")
  195. .Column("上级ID", model.上级ID)
  196. .Column("分类编码", model.分类编码)
  197. .Column("分类名称", model.分类名称)
  198. .Column("分类简码", model.分类简码)
  199. .Column("产品ID", model.产品ID)
  200. .Column("更新时间", DateTime.Now)
  201. .Where("ID", model.ID)
  202. .Execute() > 0;
  203. }
  204. }
  205. /// <summary>
  206. /// 删除服务分类
  207. /// </summary>
  208. /// <param name="id"></param>
  209. /// <returns></returns>
  210. public bool DeleteClass(string id)
  211. {
  212. int i = this.SelectBuilder.From("外部服务")
  213. .Columns("Count(1)")
  214. .Where("分类ID", id)
  215. .Select<int>();
  216. if(i == 0)
  217. {
  218. return this.DeleteBulider.Delete("外部服务分类")
  219. .Where ("ID", id)
  220. .Execute() > 0 ;
  221. }else
  222. {
  223. return false;
  224. }
  225. }
  226. /// <summary>
  227. /// 获取服务目录
  228. /// </summary>
  229. /// <param name="class_id">分类id</param>
  230. /// <param name="keyword">关键字</param>
  231. /// <returns></returns>
  232. public DataTable GetExternal (string class_id, string keyword, int pageSize, int pageNum, out int total)
  233. {
  234. string sql = "select a.*, ('【' || b.分类编码 || '】' || b.分类名称) as 分类名称 from 外部服务 a, 外部服务分类 b where a.分类ID = b.ID and a.分类ID = :class_id ";
  235. var sqlbuilder = this.SqlBuilder;
  236. if (!(keyword.IsNullOrEmpty()))
  237. {
  238. sql += "and (upper(a.服务编码) like '%' || upper(:keyword) || '%' or a.服务名称 like '%' || :keyword || '%' or upper(a.服务简码) like '%' || upper(:keyword) || '%')";
  239. sqlbuilder.Parameters("keyword", keyword);
  240. }
  241. return sqlbuilder.SqlText(sql)
  242. .Parameters("class_id", class_id)
  243. .Paging(pageNum, pageSize)
  244. .Select(out total);
  245. }
  246. /// <summary>
  247. /// 保存服务
  248. /// </summary>
  249. /// <param name="model"></param>
  250. /// <returns></returns>
  251. public bool SaveExternal(External model)
  252. {
  253. if (model.ID.IsNullOrEmpty())
  254. {
  255. return this.InsertBuilder.Insert("外部服务")
  256. .Column("ID", Guid.NewGuid().ToString())
  257. .Column("分类ID", model.分类ID)
  258. .Column("服务编码", model.服务编码)
  259. .Column("服务名称", model.服务名称)
  260. .Column("服务简码", model.服务简码)
  261. .Column("服务地址", model.服务地址)
  262. .Column("功能简述", model.功能简述)
  263. .Column("详细描述", model.详细描述)
  264. .Column("请求方式", model.请求方式)
  265. .Column("创建时间", DateTime.Now)
  266. .Execute() > 0;
  267. }
  268. else
  269. {
  270. return this.UpdateBuilder.Update("外部服务")
  271. .Column("分类ID", model.分类ID)
  272. .Column("服务编码", model.服务编码)
  273. .Column("服务名称", model.服务名称)
  274. .Column("服务简码", model.服务简码)
  275. .Column("服务地址", model.服务地址)
  276. .Column("功能简述", model.功能简述)
  277. .Column("详细描述", model.详细描述)
  278. .Column("请求方式", model.请求方式)
  279. .Column("更新时间", DateTime.Now)
  280. .Where("ID", model.ID)
  281. .Execute() > 0;
  282. }
  283. }
  284. /// <summary>
  285. /// 获取参数
  286. /// </summary>
  287. /// <param name="type"></param>
  288. /// <param name="id"></param>
  289. /// <returns></returns>
  290. public List<dto_parmater> GetParameter(string type, string id)
  291. {
  292. var sql = "SELECT a.*, (SELECT b.参数名称 FROM 外部服务参数 b WHERE b.ID = a.父节点ID) AS 父节点 FROM 外部服务参数 a where a.服务ID = :服务ID and 参数类型= :参数类型 order by a.序号";
  293. return this.SqlBuilder.SqlText(sql)
  294. .Parameters("服务ID", id)
  295. .Parameters("参数类型", type)
  296. .Select().ToList<dto_parmater>();
  297. }
  298. /// <summary>
  299. /// 参数设置
  300. /// </summary>
  301. /// <param name="id"></param>
  302. /// <returns></returns>
  303. public v_parameter GetExternalParameter(string id)
  304. {
  305. var parmeter = new v_parameter();
  306. var external = this.SelectBuilder.From("外部服务")
  307. .Columns("*")
  308. .Where ("ID", id)
  309. .Select().ToList<External>()?.FirstOrDefault();
  310. parmeter.服务ID = id;
  311. parmeter.出参 = external.出参;
  312. parmeter.入参 = external.入参;
  313. var sql = "SELECT a.*, (SELECT b.参数名称 FROM 外部服务参数 b WHERE b.ID = a.父节点ID) AS 父节点 FROM 外部服务参数 a where a.服务ID = :服务ID and 参数类型= :参数类型 order by a.序号";
  314. parmeter.outParameter = this.SqlBuilder.SqlText(sql)
  315. .Parameters("服务ID", id)
  316. .Parameters("参数类型", "out")
  317. .Select().ToList<dto_parmater>();
  318. parmeter.inParameter = this.SqlBuilder.SqlText(sql)
  319. .Parameters("服务ID", id)
  320. .Parameters("参数类型", "in")
  321. .Select().ToList<dto_parmater>();
  322. return parmeter;
  323. }
  324. /// <summary>
  325. /// 保存参数设置
  326. /// </summary>
  327. /// <param name="model"></param>
  328. /// <returns></returns>
  329. public bool SavaExternalSet(v_parameter model)
  330. {
  331. bool res = this.UpdateBuilder.Update("外部服务")
  332. .Column("入参", model.入参)
  333. .Column("出参", model.出参)
  334. .Where("ID", model.服务ID)
  335. .Execute() > 0;
  336. res = this.DeleteBulider.Delete("外部服务参数")
  337. .Where("服务ID", model.服务ID)
  338. .Execute() > 0;
  339. var inParameter = new List<ExternalParmater>();
  340. var outParameter = new List<ExternalParmater>();
  341. if (model.inParameter.Count > 0)
  342. {
  343. foreach (var item in model.inParameter)
  344. {
  345. item.ID = Guid.NewGuid().ToString();
  346. }
  347. var sno = 1;
  348. foreach (var item in model.inParameter)
  349. {
  350. res = this.InsertBuilder.Insert("外部服务参数")
  351. .Column("ID", item.ID)
  352. .Column("服务ID", model.服务ID)
  353. .Column("参数名称", item.参数名称)
  354. .Column("数据类型", item.数据类型)
  355. .Column("是否必填", item.是否必填)
  356. .Column("是否数组", item.是否数组)
  357. .Column("参数说明", item.参数说明)
  358. .Column("参数类型", "in")
  359. .Column("序号", sno)
  360. .Column("父节点ID", (from s in model.inParameter where item.父节点 == s.参数名称 select s.ID).FirstOrDefault())
  361. .Execute() > 0;
  362. sno++;
  363. }
  364. }
  365. if(model.outParameter != null && model.outParameter.Count > 0)
  366. {
  367. foreach (var item in model.outParameter)
  368. {
  369. item.ID = Guid.NewGuid().ToString();
  370. }
  371. var sno = 1;
  372. foreach (var item in model.outParameter)
  373. {
  374. res = this.InsertBuilder.Insert("外部服务参数")
  375. .Column("ID", item.ID)
  376. .Column("服务ID", model.服务ID)
  377. .Column("参数名称", item.参数名称)
  378. .Column("数据类型", item.数据类型)
  379. .Column("是否必填", item.是否必填)
  380. .Column("是否数组", item.是否数组)
  381. .Column("参数说明", item.参数说明)
  382. .Column("参数类型", "out")
  383. .Column("序号", sno)
  384. .Column("父节点ID", (from s in model.outParameter where item.父节点 == s.参数名称 select s.ID).FirstOrDefault())
  385. .Execute() > 0;
  386. sno++;
  387. }
  388. }
  389. return res;
  390. }
  391. /// <summary>
  392. /// 删除服务和出入参信息
  393. /// </summary>
  394. /// <param name="id"></param>
  395. /// <returns></returns>
  396. public bool deleteExternal(string id)
  397. {
  398. bool res = this.DeleteBulider.Delete("外部服务参数")
  399. .Where("服务ID", id)
  400. .Execute() > 0;
  401. res = this.DeleteBulider.Delete("外部服务")
  402. .Where("ID", id)
  403. .Execute() > 0;
  404. return res;
  405. }
  406. /// <summary>
  407. /// 复制
  408. /// </summary>
  409. /// <param name="model"></param>
  410. /// <returns></returns>
  411. public bool CopyExternalByClass(dto_copy_class model)
  412. {
  413. bool res = false;
  414. foreach (var item in model.classIds)
  415. {
  416. var externalClass = this.SelectBuilder.From("外部服务分类").Columns("*")
  417. .Where("ID", item)
  418. .Where("产品ID", model.oldProductId)
  419. .Select()
  420. .ToList<ExternalClass>()?
  421. .FirstOrDefault();
  422. if(externalClass != null)
  423. {
  424. return true;
  425. }
  426. var externalClass1 = this.SelectBuilder.From("外部服务分类").Columns("*")
  427. .Where("分类编码", externalClass.分类编码)
  428. .Where("分类名称", externalClass.分类名称)
  429. .Where("产品ID", model.productId)
  430. .Select()
  431. .ToList<ExternalClass>()?
  432. .FirstOrDefault();
  433. var class_id = Guid.NewGuid().ToString();
  434. if (externalClass1 != null)
  435. {
  436. class_id = externalClass1.ID;
  437. }
  438. else
  439. {
  440. res = this.InsertBuilder.Insert("外部服务分类")
  441. .Column("ID", class_id)
  442. .Column("分类编码", externalClass.分类编码)
  443. .Column("分类名称", externalClass.分类名称)
  444. .Column("分类简码", externalClass.分类简码)
  445. .Column("产品ID", model.productId)
  446. .Column("创建时间", DateTime.Now)
  447. .Execute() > 0;
  448. }
  449. var external = this.SelectBuilder.From("外部服务").Columns("*")
  450. .Where("分类ID", externalClass.ID)
  451. .Select()
  452. .ToList<External>();
  453. if(external != null)
  454. {
  455. foreach (var data in external)
  456. {
  457. var external1 = this.SelectBuilder.From("外部服务").Columns("*")
  458. .Where("服务名称", data.服务名称)
  459. .Where("服务编码", data.服务编码)
  460. .Where("分类ID", class_id)
  461. .Select()
  462. .ToList<External>()?
  463. .FirstOrDefault();
  464. var external_id = Guid.NewGuid().ToString();
  465. if (external1 != null)
  466. {
  467. external_id = external1.ID;
  468. }
  469. else
  470. {
  471. res = this.InsertBuilder.Insert("外部服务")
  472. .Column("ID", external_id)
  473. .Column("分类ID", class_id)
  474. .Column("服务编码", data.服务编码)
  475. .Column("服务名称", data.服务名称)
  476. .Column("服务简码", data.服务简码)
  477. .Column("服务地址", data.服务地址)
  478. .Column("功能简述", data.功能简述)
  479. .Column("详细描述", data.详细描述)
  480. .Column("入参", data.入参)
  481. .Column("出参", data.出参)
  482. .Column("创建时间", DateTime.Now)
  483. .Execute() > 0;
  484. }
  485. var externalParmaters = this.SelectBuilder.From("外部服务参数").Columns("*")
  486. .Where("服务ID", data.ID)
  487. .Select()
  488. .ToList<ExternalParmater>();
  489. res = this.DeleteBulider.Delete("外部服务参数")
  490. .Where("服务ID", external_id)
  491. .Execute() > 0;
  492. if(externalParmaters != null)
  493. {
  494. foreach (var parmater in externalParmaters)
  495. {
  496. res = this.InsertBuilder.Insert("外部服务参数")
  497. .Column("ID", Guid.NewGuid().ToString())
  498. .Column("服务ID", external_id)
  499. .Column("参数名称", parmater.参数名称)
  500. .Column("数据类型", parmater.数据类型)
  501. .Column("是否必填", parmater.是否必填)
  502. .Column("是否数组", parmater.是否数组)
  503. .Column("参数说明", parmater.参数说明)
  504. .Column("参数类型", parmater.参数类型)
  505. .Column("序号", parmater.序号)
  506. .Column("父节点ID", parmater.父节点ID)
  507. .Execute() > 0;
  508. }
  509. }
  510. }
  511. }
  512. }
  513. return res;
  514. }
  515. /// <summary>
  516. /// 复制
  517. /// </summary>
  518. /// <param name="model"></param>
  519. /// <returns></returns>
  520. public bool CopyExternal(dto_copy_external model)
  521. {
  522. bool res = false;
  523. foreach (var item in model.externalIds)
  524. {
  525. var external = this.SelectBuilder.From("外部服务").Columns("*")
  526. .Where("ID", item)
  527. .Select()
  528. .ToList<External>().FirstOrDefault();
  529. var external1 = this.SelectBuilder.From("外部服务").Columns("*")
  530. .Where("服务名称", external.服务名称)
  531. .Where("服务编码", external.服务编码)
  532. .Where("分类ID", model.classId)
  533. .Select()
  534. .ToList<External>()?
  535. .FirstOrDefault();
  536. if(external1 == null)
  537. {
  538. var external_id = Guid.NewGuid().ToString();
  539. res = this.InsertBuilder.Insert("外部服务")
  540. .Column("ID", external_id)
  541. .Column("分类ID", model.classId)
  542. .Column("服务编码", external.服务编码)
  543. .Column("服务名称", external.服务名称)
  544. .Column("服务简码", external.服务简码)
  545. .Column("服务地址", external.服务地址)
  546. .Column("功能简述", external.功能简述)
  547. .Column("详细描述", external.详细描述)
  548. .Column("入参", external.入参)
  549. .Column("出参", external.出参)
  550. .Column("创建时间", DateTime.Now)
  551. .Execute() > 0;
  552. var externalParmaters = this.SelectBuilder.From("外部服务参数").Columns("*")
  553. .Where("服务ID", external.ID)
  554. .Select()
  555. .ToList<ExternalParmater>();
  556. res = this.DeleteBulider.Delete("外部服务参数")
  557. .Where("服务ID", external_id)
  558. .Execute() > 0;
  559. if (externalParmaters != null)
  560. {
  561. foreach (var parmater in externalParmaters)
  562. {
  563. res = this.InsertBuilder.Insert("外部服务参数")
  564. .Column("ID", Guid.NewGuid().ToString())
  565. .Column("服务ID", external_id)
  566. .Column("参数名称", parmater.参数名称)
  567. .Column("数据类型", parmater.数据类型)
  568. .Column("是否必填", parmater.是否必填)
  569. .Column("是否数组", parmater.是否数组)
  570. .Column("参数说明", parmater.参数说明)
  571. .Column("参数类型", parmater.参数类型)
  572. .Column("序号", parmater.序号)
  573. .Column("父节点ID", parmater.父节点ID)
  574. .Execute() > 0;
  575. }
  576. }
  577. }
  578. }
  579. return res;
  580. }
  581. /// <summary>
  582. /// 查询授权接口
  583. /// </summary>
  584. /// <param name="keyword"></param>
  585. /// <param name="pageSize"></param>
  586. /// <param name="pageNum"></param>
  587. /// <returns></returns>
  588. public DataTable GetAccredit(string keyword, int pageSize, int pageNum,int is_stop, out int total)
  589. {
  590. string sql = @"WITH w AS (
  591. SELECT a.ID, a.地址标识, a.状态, a.产品ID, b.名称 AS 产品名称, '【' || c.分类编码 || '】' || c.分类名称 AS 分类名称, a.创建人, a.创建时间, a.分类IDS
  592. FROM 外部服务产品授权 a
  593. LEFT JOIN 产品系统配置 b ON a.产品ID = b.ID
  594. LEFT JOIN 外部服务分类 c ON ',' || a.分类IDS || ',' LIKE '%,' || c.ID || ',%'
  595. )
  596. SELECT w.ID, w.地址标识, w.状态, w.产品ID, w.产品名称, LISTAGG(w.分类名称, ',') WITHIN GROUP (ORDER BY w.分类名称) AS 授权分类, w.创建人, w.创建时间, w.分类IDS
  597. FROM w where 1= 1 ";
  598. if(is_stop != 1)
  599. {
  600. sql += "and w.状态 <> 0";
  601. }
  602. var sqlbuilder = this.SqlBuilder;
  603. if (!(keyword.IsNullOrEmpty()))
  604. {
  605. sql += "and (upper(w.地址标识) like '%' || upper(:keyword) || '%' or upper(w.产品名称) like '%' || upper(:keyword) || '%')";
  606. sqlbuilder.Parameters("keyword", keyword);
  607. }
  608. sql += "GROUP BY w.ID, w.地址标识, w.状态, w.产品ID, w.产品名称, w.创建人, w.创建时间, w.分类IDS";
  609. return sqlbuilder.SqlText(sql)
  610. .Paging(pageNum, pageSize)
  611. .Select(out total);
  612. }
  613. /// <summary>
  614. /// 保存校验时间
  615. /// </summary>
  616. /// <param name="model"></param>
  617. /// <returns></returns>
  618. public bool SavaAccredit(ExternalAccredit model)
  619. {
  620. if(model.ID.IsNullOrEmpty())
  621. {
  622. return this.InsertBuilder.Insert("外部服务产品授权")
  623. .Column("ID", Guid.NewGuid().ToString())
  624. .Column("产品ID", model.产品ID)
  625. .Column("分类IDS", model.分类IDS)
  626. .Column("状态", model.状态)
  627. .Column("创建人", model.创建人)
  628. .Column("创建时间", DateTime.Now)
  629. .Column("地址标识", GenerateRandomString(8))
  630. .Execute() > 0;
  631. }else
  632. {
  633. var updateBuilder = this.UpdateBuilder.Update("外部服务产品授权")
  634. .Column("状态", model.状态);
  635. if(!model.产品ID.IsNullOrEmpty())
  636. {
  637. updateBuilder.Column("产品ID", model.产品ID)
  638. .Column("分类IDS", model.分类IDS)
  639. .Column("更新人", model.更新人)
  640. .Column("更新时间", DateTime.Now);
  641. }
  642. return updateBuilder.Where("ID", model.ID).Execute() > 0;
  643. }
  644. }
  645. /// <summary>
  646. /// 查询授权接口
  647. /// </summary>
  648. /// <param name="keyword"></param>
  649. /// <param name="pageSize"></param>
  650. /// <param name="pageNum"></param>
  651. /// <returns></returns>
  652. public DataTable GetAccredView(string id, string channel_id, string project_id, int pageSize, int pageNum, int is_stop, out int total)
  653. {
  654. string sql = @"SELECT a.ID, a.过期时间, b.名称 AS 项目名称, a.授权验证码 , a.申请时间 , a.受理时间 , a.状态 , b.状态 as 项目状态
  655. FROM 外部服务授权验证 a, 项目信息 b WHERE a.项目ID = b.ID";
  656. if(is_stop != 1)
  657. {
  658. sql += " and a.状态 <> 0";
  659. }
  660. var sqlbuilder = this.SqlBuilder;
  661. if (!id.IsNullOrEmpty())
  662. {
  663. sql += " and a.授权产品ID = :授权产品ID";
  664. sqlbuilder.Parameters("授权产品ID", id);
  665. }else
  666. {
  667. sql += " and a.授权验证码 is null";
  668. }
  669. if(!channel_id.IsNullOrEmpty())
  670. {
  671. sql += " and b.渠道ID = :渠道ID";
  672. sqlbuilder.Parameters("渠道ID", channel_id);
  673. }
  674. if (!project_id.IsNullOrEmpty())
  675. {
  676. sql += " and a.项目ID = :项目ID";
  677. sqlbuilder.Parameters("项目D", project_id);
  678. }
  679. return sqlbuilder.SqlText(sql)
  680. .Paging(pageNum, pageSize)
  681. .Select(out total);
  682. }
  683. public DataTable GetRecords(dto_records_in model, out int total)
  684. {
  685. var sql = @"SELECT a.*, b.名称 AS 渠道名称, c.名称 AS 项目名称,
  686. d.地址标识 from 外部服务文档访问记录 a, 渠道信息 b,
  687. 项目信息 c, 外部服务产品授权 d
  688. WHERE a.渠道ID = b.ID AND a.项目ID = c.ID
  689. AND a.授权ID = d.ID ";
  690. var sqlBuilder = this.SqlBuilder;
  691. if(!model.渠道ID.IsNullOrEmpty())
  692. {
  693. sql += " and a.渠道ID = :渠道ID";
  694. sqlBuilder.Parameters("渠道ID", model.渠道ID);
  695. }
  696. if (!model.项目ID.IsNullOrEmpty())
  697. {
  698. sql += " and a.项目ID = :项目ID";
  699. sqlBuilder.Parameters("项目ID", model.项目ID);
  700. }
  701. if (!model.访问操作.IsNullOrEmpty())
  702. {
  703. sql += " and a.访问操作 = :访问操作";
  704. sqlBuilder.Parameters("访问操作", model.访问操作);
  705. }
  706. return sqlBuilder.SqlText(sql)
  707. .Paging(model.pageNum, model.pageSize)
  708. .Select(out total);
  709. }
  710. }
  711. }