ValuesController.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Cors;
  6. using Microsoft.AspNetCore.Mvc;
  7. using System.Data;
  8. using System.Net.Http;
  9. using Newtonsoft.Json;
  10. using System.Net.Http.Headers;
  11. using Newtonsoft.Json.Linq;
  12. namespace YDSP.Core.Controllers
  13. {
  14. [Produces("application/json")]
  15. [Route("api/[controller]/[action]")]
  16. [EnableCors("ydsp")]
  17. public class ValuesController : Controller
  18. {
  19. public static HttpClient httpClient = new HttpClient();
  20. //以下是跟钉钉对接有关方法,
  21. #region 钉钉appId及appSecret
  22. /// <summary>
  23. /// 钉钉appId及appSecret
  24. /// </summary>
  25. /// <returns></returns>
  26. private app GetApp()
  27. {
  28. app a = new app();
  29. string sql = "select * from ZSystemURL where ZSText = 'appkey' select * from ZSystemURL where ZSText = 'appsecret'";
  30. DataSet set = YDSPHepler.GetSet(sql);
  31. foreach (DataRow i in set.Tables[0].Rows)
  32. {
  33. a.appid = Convert.ToString(i["ZSURL"]).Trim();
  34. }
  35. foreach (DataRow i in set.Tables[1].Rows)
  36. {
  37. a.appsecret = Convert.ToString(i["ZSURL"]).Trim();
  38. }
  39. return a;
  40. }
  41. #endregion
  42. #region 获取钉钉接口最终返回userid
  43. [HttpPost]
  44. public SystemUser GetSystem([FromBody]SystemUser s)
  45. {
  46. SystemUser system = new SystemUser();
  47. app a = GetApp();
  48. string access_token = "";
  49. string uid = "";
  50. string name = "";
  51. //获取钉钉access_token
  52. string URL = "https://oapi.dingtalk.com/gettoken?appkey=" + a.appid + "&appsecret=" + a.appsecret;
  53. var responseStr = httpClient.GetAsync(URL).Result.Content.ReadAsStringAsync().Result;
  54. var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStr);
  55. foreach (var i in obj)
  56. {
  57. if (i.Key == "access_token")
  58. {
  59. access_token = i.Value;
  60. continue;
  61. }
  62. }
  63. //获取用户钉钉id
  64. URL = "https://oapi.dingtalk.com/user/getuserinfo?access_token=" + access_token + "&code=" + s.UserCode;
  65. responseStr = httpClient.GetAsync(URL).Result.Content.ReadAsStringAsync().Result;
  66. obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStr);
  67. foreach (var i in obj)
  68. {
  69. if (i.Key == "userid")
  70. {
  71. uid = i.Value;
  72. continue;
  73. }
  74. if (i.Key == "name")
  75. {
  76. name = i.Value;
  77. continue;
  78. }
  79. }
  80. List<SystemUser> systemUsers = new List<SystemUser>();
  81. try
  82. {
  83. string sql = "select *from ZSystemUser";
  84. DataSet set = YDSPHepler.GetSet(sql);
  85. foreach (DataRow i in set.Tables[0].Rows)
  86. {
  87. SystemUser user = new SystemUser();
  88. user.UserCode = Convert.ToString(i["ZSUserCode"]);
  89. user.UserID = Convert.ToString(i["ZSUserId"]);
  90. user.UserName = Convert.ToString(i["ZSText"]);
  91. user.PWD = Convert.ToString(i["ZSPassword"]);
  92. user.URL = "";
  93. systemUsers.Add(user);
  94. }
  95. }
  96. catch (Exception ex)
  97. {
  98. Console.WriteLine(ex.Message);
  99. }
  100. if (systemUsers.FirstOrDefault(f => f.UserID == uid) == null)
  101. {
  102. if (uid != "")
  103. {
  104. string sql = "insert into ZSystemUser values('', '" + uid + "', '', '')";
  105. YDSPHepler.ExecuteNonQuery(sql);
  106. sql = "select * from ZSystemUser where ZSUserId = '" + uid + "'";
  107. DataSet set = YDSPHepler.GetSet(sql);
  108. foreach (DataRow i in set.Tables[0].Rows)
  109. {
  110. system.UserID = Convert.ToString(i["ZSUserId"]).Trim();
  111. system.UserCode = Convert.ToString(i["ZSUserCode"]).Trim();
  112. system.UserName = Convert.ToString(i["ZSText"]).Trim();
  113. system.PWD = Convert.ToString(i["ZSPassword"]).Trim();
  114. }
  115. }
  116. }
  117. else
  118. {
  119. system = systemUsers.FirstOrDefault(f => f.UserID == uid);
  120. }
  121. return system;
  122. }
  123. #endregion
  124. #region 钉钉修改用户表(根据钉钉id修改usercode)
  125. /// <summary>
  126. /// 钉钉修改用户表(根据钉钉id修改usercode)
  127. /// </summary>
  128. /// <param name="system"></param>
  129. /// <returns></returns>
  130. [HttpPost]
  131. public string UpdateZSystemUser([FromBody]SystemUser system)
  132. {
  133. string sql = "update ZSystemUser set ZSUserCode = '" + system.UserCode + "', ZSText = '" + system.UserName + "' where ZSUserId = '" + system.UserID + "'";
  134. try
  135. {
  136. YDSPHepler.ExecuteNonQuery(sql);
  137. }
  138. catch (Exception ex)
  139. {
  140. Console.WriteLine(ex.Message);
  141. }
  142. return sql;
  143. }
  144. #endregion
  145. #region 钉钉获取钉钉消息接口
  146. /// <summary>
  147. /// 钉钉获取钉钉消息接口
  148. /// </summary>
  149. /// <param name="s"></param>
  150. /// <returns></returns>
  151. [HttpPost]
  152. public string GetInformation([FromBody]SystemUser s)
  153. {
  154. app a = GetApp();
  155. string URL = "";
  156. string access_token = "";
  157. //获取钉钉access_token
  158. try
  159. {
  160. URL = "https://oapi.dingtalk.com/gettoken?appkey=" + a.appid + "&appsecret=" + a.appsecret;
  161. var responseStr = httpClient.GetAsync(URL).Result.Content.ReadAsStringAsync().Result;
  162. var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStr);
  163. foreach (var i in obj)
  164. {
  165. if (i.Key == "access_token")
  166. {
  167. access_token = i.Value;
  168. continue;
  169. }
  170. }
  171. URL = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
  172. OapiMessageSendToConversationRequest oa = new OapiMessageSendToConversationRequest();
  173. oa.userid_list = s.UserID;
  174. string sql = "select * from zsystemurl where ZSText = 'AgentId' select * from zsystemurl where ZSText = '图片地址'";
  175. DataSet set = YDSPHepler.GetSet(sql);
  176. foreach (DataRow i in set.Tables[0].Rows)
  177. {
  178. oa.agent_id = Convert.ToString(i["ZSURL"]);//获取AgentId
  179. }
  180. oa.to_all_user = false;
  181. msgtypeURL msgtypeURL = new msgtypeURL();
  182. msgtypeURL.msgtype = "link";
  183. msgtypeURL.link.messageUrl = s.URL;
  184. foreach (DataRow i in set.Tables[1].Rows)
  185. {
  186. msgtypeURL.link.picUrl = Convert.ToString(i["ZSURL"]);//获取钉钉接口(链接消息的图片参数)
  187. }
  188. msgtypeURL.link.title = s.UserCode;
  189. msgtypeURL.link.text = s.UserName;
  190. string j = Newtonsoft.Json.JsonConvert.SerializeObject(msgtypeURL);//序列化
  191. oa.msg = (JObject)JsonConvert.DeserializeObject(j);
  192. //Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json);
  193. string data = Newtonsoft.Json.JsonConvert.SerializeObject(oa);//序列化
  194. HttpContent httpContent = new StringContent(data);
  195. httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
  196. httpContent.Headers.ContentType.CharSet = "utf-8";
  197. var responseStrs = httpClient.PostAsync(URL, httpContent).Result.Content.ReadAsStringAsync().Result;
  198. var objs = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStrs);
  199. }
  200. catch (Exception ex)
  201. {
  202. Console.WriteLine(ex.Message);
  203. }
  204. URL = "";
  205. return URL;
  206. }
  207. #endregion
  208. #region 钉钉获取SystemUser主要数据
  209. /// <summary>
  210. /// 钉钉获取SystemUser主要数据
  211. /// </summary>
  212. /// <returns></returns>
  213. [HttpGet("{name}")]
  214. public string GetUser(string name)
  215. {
  216. string sql = "select ZSUserId from zsystemuser where ZSUserCode = '" + name + "'";
  217. DataSet set = YDSPHepler.GetSet(sql);
  218. foreach (DataRow i in set.Tables[0].Rows)
  219. {
  220. sql = Convert.ToString(i["ZSUserId"]);
  221. }
  222. return sql;
  223. }
  224. #endregion
  225. #region 钉钉根据名称绑定单个地址
  226. /// <summary>
  227. /// 钉钉根据名称绑定单个地址
  228. /// </summary>
  229. /// <param name="name"></param>
  230. /// <returns></returns>
  231. [HttpGet("{name}")]
  232. public string GetDDSystemURL(string name)
  233. {
  234. string url = "";
  235. try
  236. {
  237. string sql = "select ZSURL from ZSystemURL where ZSText = '" + name + "'";
  238. DataTable table = YDSPHepler.GetData(sql);
  239. foreach (DataRow i in table.Rows)
  240. {
  241. url = Convert.ToString(i["ZSURL"]);
  242. }
  243. }
  244. catch (Exception ex)
  245. {
  246. url = ex.Message;
  247. }
  248. return url;
  249. }
  250. #endregion
  251. #region 钉钉绑定多个地址
  252. /// <summary>
  253. /// 钉钉绑定多个地址
  254. /// </summary>
  255. /// <param name="name"></param>
  256. /// <returns></returns>
  257. [HttpPost]
  258. public WorkFlowCaseVM PostSystemURL([FromBody] WorkFlowCaseVM work)
  259. {
  260. WorkFlowCaseVM w = new WorkFlowCaseVM();
  261. string sql = "select ZSURL from ZSystemURL where ZSText = '" + work.ApplicationCode + "' select ZSURL from ZSystemURL where ZSText = '" + work.url + "'";
  262. DataSet set = YDSPHepler.GetSet(sql);
  263. foreach (DataRow i in set.Tables[0].Rows)
  264. {
  265. w.ApplicationCode = Convert.ToString(i["ZSURL"]);
  266. }
  267. foreach (DataRow i in set.Tables[1].Rows)
  268. {
  269. w.url = Convert.ToString(i["ZSURL"]);
  270. }
  271. return w;
  272. }
  273. #endregion
  274. #region 钉钉绑定配置地址
  275. /// <summary>
  276. /// 钉钉绑定配置地址
  277. /// </summary>
  278. /// <returns></returns>
  279. public List<SystemUser> GetDDSystemURLList()
  280. {
  281. List<SystemUser> items = new List<SystemUser>();
  282. string sql = "select * from ZSystemURL";
  283. DataTable table = YDSPHepler.GetData(sql);
  284. foreach (DataRow i in table.Rows)
  285. {
  286. items.Add(new SystemUser()
  287. {
  288. UserID = Convert.ToString(i["ZSID"]),
  289. UserCode = Convert.ToString(i["ZSURL"]),
  290. UserName = Convert.ToString(i["ZSText"]),
  291. URL = null,
  292. PWD = null,
  293. });
  294. }
  295. return items;
  296. }
  297. #endregion
  298. #region 钉钉修改配置地址
  299. /// <summary>
  300. /// 钉钉修改配置地址
  301. /// </summary>
  302. /// <param name="id"></param>
  303. /// <param name="s"></param>
  304. /// <returns></returns>
  305. [HttpPost]
  306. public List<SystemUser> UpdateDDSystemURL([FromBody]List<SystemUser> s)
  307. {
  308. try
  309. {
  310. foreach (SystemUser item in s)
  311. {
  312. string updateSQL = @"update ZSystemURL set ZSURL = '" + item.UserCode + "',ZSText = '" + item.UserName + "' " +
  313. " where ZSID =" + item.UserID;
  314. YDSPHepler.ExecuteNonQuery(updateSQL);
  315. }
  316. List<SystemUser> items = new List<SystemUser>();
  317. string sql = "select * from ZSystemURL";
  318. DataTable table = YDSPHepler.GetData(sql);
  319. foreach (DataRow i in table.Rows)
  320. {
  321. items.Add(new SystemUser()
  322. {
  323. UserID = Convert.ToString(i["ZSID"]),
  324. UserCode = Convert.ToString(i["ZSURL"]),
  325. UserName = Convert.ToString(i["ZSText"]),
  326. URL = null,
  327. PWD = null,
  328. });
  329. }
  330. return items;
  331. }
  332. catch (Exception)
  333. {
  334. return null;
  335. }
  336. }
  337. #endregion
  338. //以上是跟钉钉对接有关方法,以下是跟OA对接有关方法
  339. #region OA获取WorkFlowCase主要数据
  340. /// <summary>
  341. /// OA获取WorkFlowCase主要数据
  342. /// </summary>
  343. /// <returns></returns>
  344. [HttpGet("{caseCode}")]
  345. public WorkFlowCaseVM GetWorkFlowCaseVM(string caseCode)
  346. {
  347. string sql = "select ApplicationCode from WorkFlowCase where CaseCode =" + caseCode;
  348. DataTable table = YDSPHepler.GetData(sql);
  349. WorkFlowCaseVM workFlow = new WorkFlowCaseVM();
  350. foreach (DataRow i in table.Rows)
  351. {
  352. workFlow.ApplicationCode = Convert.ToString(i["ApplicationCode"]);
  353. }
  354. return workFlow;
  355. }
  356. #endregion
  357. #region OA获取表单名称对应界面路径
  358. /// <summary>
  359. /// OA获取表单名称对应界面路径
  360. /// </summary>
  361. /// <param name="ProcedureName"></param>
  362. /// <returns></returns>
  363. [HttpPost]
  364. public WorkFlowCaseVM GetWorkFlowProcedure([FromBody]SystemUser s)
  365. {
  366. string ProcedureName = s.UserName;
  367. WorkFlowCaseVM w = new WorkFlowCaseVM();
  368. string sql = @"select ProcedureName,ApplicationPath from WorkFlowProcedure
  369. group by ProcedureName,ApplicationPath
  370. having ProcedureName = '" + ProcedureName + "' select ZSURL from ZSystemURL where ZSText = '" + s.UserID + "'";
  371. DataSet set = YDSPHepler.GetSet(sql);
  372. foreach (DataRow i in set.Tables[0].Rows)
  373. {
  374. w.ApplicationCode = Convert.ToString(i["ApplicationPath"]).Substring(3).Trim();
  375. }
  376. foreach (DataRow i in set.Tables[1].Rows)
  377. {
  378. w.url = Convert.ToString(i["ZSURL"]);
  379. }
  380. return w;
  381. }
  382. #endregion
  383. #region OA获取SystemUser主要数据
  384. /// <summary>
  385. /// OA获取SystemUser主要数据
  386. /// </summary>
  387. /// <returns></returns>
  388. [HttpPost]
  389. public SystemUser GetUserVM([FromBody]opinions o)
  390. {
  391. string sql = "select UserCode,UserID,UserName from SystemUser where UserCode = " + o.actUserName + " select ZSURL from ZSystemURL where ZSText = '" + o.opinionText + "' select ZSURL from ZSystemURL where ZSText = '" + o.opinionConfirm + "'";
  392. DataSet set = YDSPHepler.GetSet(sql);
  393. SystemUser user = new SystemUser();
  394. foreach (DataRow i in set.Tables[0].Rows)
  395. {
  396. user.UserCode = Convert.ToString(i["UserCode"]);
  397. user.UserID = Convert.ToString(i["UserID"]);
  398. user.UserName = Convert.ToString(i["UserName"]);
  399. }
  400. foreach (DataRow i in set.Tables[1].Rows)
  401. {
  402. user.URL = Convert.ToString(i["ZSURL"]);
  403. }
  404. foreach (DataRow i in set.Tables[2].Rows)
  405. {
  406. user.PWD = Convert.ToString(i["ZSURL"]);
  407. }
  408. return user;
  409. }
  410. #endregion
  411. #region OA根据名称绑定单个地址
  412. /// <summary>
  413. /// OA根据名称绑定单个地址
  414. /// </summary>
  415. /// <param name="name"></param>
  416. /// <returns></returns>
  417. [HttpGet("{name}")]
  418. public string GetSystemURL(string name)
  419. {
  420. string url = "";
  421. string sql = "select ZSURL from ZSystemURL where ZSText = '" + name + "'";
  422. DataTable table = YDSPHepler.GetData(sql);
  423. foreach (DataRow i in table.Rows)
  424. {
  425. url = Convert.ToString(i["ZSURL"]);
  426. }
  427. return url;
  428. }
  429. #endregion
  430. #region OA绑定配置地址
  431. /// <summary>
  432. /// OA绑定配置地址
  433. /// </summary>
  434. /// <returns></returns>
  435. public List<SystemUser> GetSystemURLList()
  436. {
  437. List<SystemUser> items = new List<SystemUser>();
  438. string sql = "select * from ZSystemURL";
  439. DataTable table = YDSPHepler.GetData(sql);
  440. foreach (DataRow i in table.Rows)
  441. {
  442. items.Add(new SystemUser()
  443. {
  444. UserID = Convert.ToString(i["ZSID"]),
  445. UserCode = Convert.ToString(i["ZSURL"]),
  446. UserName = Convert.ToString(i["ZSText"]),
  447. URL = null,
  448. PWD = null,
  449. });
  450. }
  451. return items;
  452. }
  453. #endregion
  454. #region OA修改配置地址
  455. /// <summary>
  456. /// OA修改配置地址
  457. /// </summary>
  458. /// <param name="id"></param>
  459. /// <param name="s"></param>
  460. /// <returns></returns>
  461. [HttpPost]
  462. public List<SystemUser> UpdateSystemURL([FromBody]List<SystemUser> s)
  463. {
  464. try
  465. {
  466. foreach (SystemUser item in s)
  467. {
  468. string updateSQL = @"update ZSystemURL set ZSURL = '" + item.UserCode + "',ZSText = '" + item.UserName + "' " +
  469. " where ZSID =" + item.UserID;
  470. YDSPHepler.ExecuteNonQuery(updateSQL);
  471. }
  472. List<SystemUser> items = new List<SystemUser>();
  473. string sql = "select * from ZSystemURL";
  474. DataTable table = YDSPHepler.GetData(sql);
  475. foreach (DataRow i in table.Rows)
  476. {
  477. items.Add(new SystemUser()
  478. {
  479. UserID = Convert.ToString(i["ZSID"]),
  480. UserCode = Convert.ToString(i["ZSURL"]),
  481. UserName = Convert.ToString(i["ZSText"]),
  482. URL = null,
  483. PWD = null,
  484. });
  485. }
  486. return items;
  487. }
  488. catch (Exception)
  489. {
  490. return null;
  491. }
  492. }
  493. #endregion
  494. }
  495. public class opinions
  496. {
  497. public string taskActorName { get; set; }
  498. public string actUserName { get; set; }
  499. public string opinionDate { get; set; }
  500. public string opinionConfirm { get; set; }
  501. public string opinionText { get; set; }
  502. }
  503. /// <summary>
  504. /// SystemUser视图模型
  505. /// </summary>
  506. public class SystemUser
  507. {
  508. public string UserCode { get; set; }
  509. public string UserID { get; set; }
  510. public string UserName { get; set; }
  511. public string URL { get; set; }
  512. public string PWD { get; set; }
  513. }
  514. /// <summary>
  515. /// WorkFlowCaseVM视图模型
  516. /// </summary>
  517. public class WorkFlowCaseVM
  518. {
  519. public string ApplicationCode { get; set; }
  520. public string url { get; set; }
  521. }
  522. /// <summary>
  523. /// appId及appSecret
  524. /// </summary>
  525. public class app
  526. {
  527. public string appid { get; set; }
  528. public string appsecret { get; set; }
  529. }
  530. public class OapiMessageSendToConversationRequest
  531. {
  532. public string userid_list { get; set; }
  533. public string agent_id { get; set; }
  534. public bool to_all_user { get; set; }
  535. public JObject msg { get; set; }
  536. }
  537. public class msgtypeURL
  538. {
  539. public string msgtype { get; set; }
  540. public Link link { get; set; } = new Link();
  541. }
  542. public class Link
  543. {
  544. public string messageUrl { get; set; }
  545. public string picUrl { get; set; }
  546. public string title { get; set; }
  547. public string text { get; set; }
  548. }
  549. }