PermissionController.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  1. using JCSoft.WX.Framework.Api;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Http;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using Common.Wechat;
  9. using Common;
  10. using System.Data;
  11. using Common.Model;
  12. using ZcPeng.PublicLibrary;
  13. using CoreEntity.Entity;
  14. using CoreEntity.DAL;
  15. using System.Collections.Concurrent;
  16. using Newtonsoft.Json.Converters;
  17. using Newtonsoft.Json;
  18. using System.Data.SqlClient;
  19. using Microsoft.Extensions.Primitives;
  20. using Microsoft.Extensions.Caching.Memory;
  21. using Jwt;
  22. using PublicLibrary.Model;
  23. using Newtonsoft.Json.Linq;
  24. using SupplierWeb.Codes.mvc;
  25. using SupplierWeb.Codes.Auth;
  26. using Common.Config;
  27. using SupplierWeb.Commonss;
  28. using System.Web;
  29. using System.Runtime.Serialization.Json;
  30. using System.Text;
  31. using System.IO;
  32. using System.Runtime.Serialization;
  33. namespace SupplierWeb.Controllers
  34. {
  35. [Route("web/auth")]
  36. public class PermissionController : BaseController
  37. {
  38. public PermissionController(IMemoryCache cache, IApiClient client) : base(cache, client)
  39. {
  40. }
  41. private ConcurrentDictionary<int, Role> roleMap = new ConcurrentDictionary<int, Role>();
  42. /// 供应商,采购,供应商业务员挂靠,资料管理员,财务,仓库 等角色权限列表
  43. /// 权限列表
  44. //[HttpGet, Route("index")]
  45. //public ActionResult index(string[] filters, Int32 pageIndex, Int32 pageSize,
  46. // string sortField, Int32 sortDirection, string[] sumFields, string callback)
  47. //{
  48. // var r = this.indexp(filters, pageIndex, pageSize,
  49. // sortField, sortDirection, sumFields, null);
  50. // return Content(callback + "(" + JsonConvert.SerializeObject(r.Value)
  51. // + ")");
  52. //}
  53. /// 供应商,采购,供应商业务员挂靠,资料管理员,财务,仓库 等角色权限列表
  54. /// 权限列表
  55. [HttpPost, Route("index")]
  56. public JsonResult indexp(QueryFilter[] filters, Int32 pageIndex, Int32 pageSize,
  57. string sortField, Int32 sortDirection, string[] sumFields, [FromBody]dynamic data)
  58. {
  59. if (data != null)
  60. {
  61. //Newtonsoft.Json.Linq.JArray
  62. filters = data.filters.ToObject<QueryFilter[]>();
  63. pageIndex = data.pageIndex;
  64. pageSize = data.pageSize;
  65. sortField = data.sortField;
  66. sortDirection = data.sortDirection;
  67. sumFields = data.sumFields.ToObject<string[]>();
  68. }
  69. #region 获取权限列表
  70. DataTable dt = new DataTable();
  71. string result;
  72. IList<Permission> permss = new List<Permission>(0);
  73. List<SqlParameter> parameters = new List<SqlParameter>();
  74. string filterstr = QueryFilter.getFilterSqlParam(filters, out parameters, new Permission(), "A.");
  75. string direct = " desc ";
  76. if (sortDirection != 1)
  77. direct = " asc";
  78. int start = (pageIndex - 1) * pageSize;
  79. int end = (start + 1 + pageSize);
  80. string commandText0 = "select * from ";
  81. string commandText1 = "(" +
  82. "select A.*,row_number() over" +
  83. "( order by " + sortField + " " + direct + " ) as rownum from " +
  84. Config.TablePrefix + "Permission as A " +
  85. " where 1=1 " +
  86. //" and A.CreationPerson = '" + userids + "'" +
  87. filterstr +
  88. ")AAA ";
  89. string commandText2 = " where AAA.rownum>" + start + " and AAA.rownum<" + end;
  90. string commandText3 = commandText0 + commandText1 + commandText2;//-tanyang
  91. bool success = DataAccess.GetValues(commandText3, ref dt, parameters.ToArray(), out result);
  92. #endregion
  93. if (dt != null && dt.Rows.Count > 0)
  94. {
  95. // 把DataTable转换为IList<Permission>
  96. permss = ModelConvertHelper<Permission>.ConvertToModel(dt);
  97. #region 获取权限的角色列表,角色列表
  98. //角色列表
  99. IList<Role> roles = RoleDAL.GetRoles();
  100. // 把DataTable转换为IList<Role>
  101. if (roleMap.Count < roles.Count)
  102. {
  103. foreach (Role role in roles)
  104. {
  105. roleMap.TryAdd(role.Id, role);
  106. }
  107. }
  108. foreach (Permission perms in permss)
  109. {
  110. string direct1 = " desc ";
  111. dt = DataAccess.GetDataTable(Config.TablePrefix + "RoleRelatePermission", "Id", "*", "PermissionId=" + perms.Id + " and IsDelete = 0 ", "", "Id" + direct1, 1, 100, out var msg);
  112. // 把DataTable转换为IList<RoleRelatePermission>
  113. if (dt != null && dt.Rows.Count > 0)
  114. {
  115. IList<RoleRelatePermission> permRelates = ModelConvertHelper<RoleRelatePermission>.ConvertToModel(dt);
  116. //List<Role> listRoles = new List<Role>();
  117. List<int> superior_list = new List<int>(0);
  118. foreach (RoleRelatePermission permsr in permRelates)
  119. {
  120. //Role role;
  121. //if (roleMap.TryGetValue(permsr.RoleId, out role))
  122. //{
  123. // listRoles.Add(role);
  124. //}
  125. superior_list.Add(permsr.RoleId);
  126. }
  127. //perms.RoleList = listRoles;
  128. perms.Roleids = string.Join(",", superior_list.ToArray());
  129. }
  130. }
  131. #endregion
  132. }
  133. string result1;
  134. long totalcount = DataAccess.GetRowCountDefine("select count(Id) from " + commandText1, parameters.ToArray(), out result1);
  135. IsoDateTimeConverter timejson = new IsoDateTimeConverter
  136. {
  137. DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
  138. };
  139. //IList<Menu> menus = Permission.Convert(permss);
  140. var jsonData = JsonConvert.SerializeObject(permss, timejson);
  141. return Json(new
  142. {
  143. items = JsonConvert.DeserializeObject(jsonData),
  144. sum = new { },
  145. totalCount = totalcount
  146. });
  147. }
  148. [AuthPermission]
  149. [HttpPost, Route("add")]
  150. public JsonResult addp(
  151. string PermissionName, string PermissionUrl,
  152. string AuthType, Int32 ActionType,
  153. string Icon
  154. , string ParentId, string Roleids, [FromBody]dynamic data
  155. , Int32 IsDelete = 0
  156. )
  157. {
  158. if (data != null)
  159. {
  160. //Newtonsoft.Json.Linq.JArray
  161. PermissionName = data.PermissionName;
  162. PermissionUrl = data.PermissionUrl;
  163. AuthType = data.AuthType;
  164. if (ActionType != 0)
  165. {
  166. ActionType = data.ActionType;
  167. }
  168. Icon = data.Icon;
  169. ParentId = data.ParentId;
  170. Roleids = data.Roleids;
  171. IsDelete = (data.IsDelete == null) ? 0 : data.IsDelete;
  172. }
  173. string[] RoleIdss = Roleids.Split(",");
  174. int[] RoleIdis = Array.ConvertAll(RoleIdss, s => Convert.ToInt32(s));
  175. #region 添加权限节点
  176. string commandText = "INSERT INTO " + Config.TablePrefix + "Permission (permissionname,permissionurl," +
  177. "AuthType,ActionType," +
  178. "Icon,ParentId," +
  179. "isdelete)"
  180. + " VALUES (@permissionname,@permissionurl,@AuthType,@ActionType,@Icon,@ParentId,@isdelete)";
  181. string result;
  182. //准备参数
  183. List<List<Object>> parameters = new List<List<Object>>();
  184. parameters.Add(new List<Object>() { "permissionname", PermissionName });
  185. parameters.Add(new List<Object>() { "permissionurl", PermissionUrl });
  186. parameters.Add(new List<Object>() { "AuthType", AuthType });
  187. parameters.Add(new List<Object>() { "ActionType", ActionType });
  188. parameters.Add(new List<Object>() { "Icon", Icon });
  189. parameters.Add(new List<Object>() { "ParentId", ParentId != null ? Convert.ToInt32(ParentId) : 0 });
  190. parameters.Add(new List<Object>() { "isdelete", IsDelete });
  191. List<SqlParameter> parameters1 = DataAccess.ToParameters(parameters);
  192. int success = DataAccess.ExecuteCommand(commandText, parameters1, out result);
  193. #endregion
  194. #region 添加角色
  195. int id = BaseDAL.GetId(Config.TablePrefix + "Permission");
  196. RoleDAL.SaveRolesRelatePermission(id, RoleIdis);
  197. #endregion
  198. return Json(new
  199. {
  200. success = success
  201. });
  202. }
  203. ////编辑权限
  204. //[HttpGet, Route("edit")]
  205. //public ActionResult edit(Int32 Id,
  206. // string PermissionName, string PermissionUrl, string Icon
  207. // , string ParentId, string Roleids
  208. // , string callback, Int32 IsDelete
  209. // )
  210. //{
  211. // var r = this.editp(Id, PermissionName, PermissionUrl, Icon
  212. // , ParentId, Roleids, null
  213. // , IsDelete);
  214. // return Content(callback + "(" + JsonConvert.SerializeObject(r.Value)
  215. // + ")");
  216. //}
  217. [AuthPermission]
  218. [HttpPost, Route("edit")]
  219. public JsonResult editp(Int32 Id,
  220. string PermissionName, string PermissionUrl,
  221. string AuthType,
  222. string Icon,
  223. string ParentId, string Roleids,
  224. [FromBody]dynamic data
  225. , Int32 IsDelete
  226. )
  227. {
  228. if (data != null)
  229. {
  230. //Newtonsoft.Json.Linq.JArray
  231. Id = data.Id;
  232. PermissionName = data.PermissionName;
  233. PermissionUrl = data.PermissionUrl;
  234. AuthType = data.AuthType;
  235. Icon = data.Icon;
  236. ParentId = data.ParentId;
  237. Roleids = data.Roleids;
  238. IsDelete = data.IsDelete == null ? 0 : data.IsDelete;
  239. }
  240. string[] RoleIdss = Roleids.Split(",");
  241. int[] RoleIdis = Array.ConvertAll(RoleIdss, s => Convert.ToInt32(s));
  242. #region 编辑用户
  243. string commandText = "UPDATE " + Config.TablePrefix + "Permission " +
  244. " SET permissionname = @permissionname,";
  245. if (PermissionUrl != null)
  246. commandText += "permissionurl = @permissionurl,";
  247. commandText += " ParentId = @ParentId" +
  248. ",Icon = @Icon" +
  249. " ,isdelete = @isdelete" +
  250. ",AuthType = @AuthType" +
  251. " WHERE id= @Id";
  252. string result;
  253. //准备参数
  254. List<List<Object>> parameters = new List<List<Object>>();
  255. parameters.Add(new List<Object>() { "permissionname", PermissionName });
  256. parameters.Add(new List<Object>() { "permissionurl", PermissionUrl });
  257. parameters.Add(new List<Object>() { "AuthType", AuthType });
  258. parameters.Add(new List<Object>() { "ParentId", ParentId });
  259. parameters.Add(new List<Object>() { "Icon", Icon });
  260. parameters.Add(new List<Object>() { "isdelete", IsDelete });
  261. parameters.Add(new List<Object>() { "Id", Id });
  262. List<SqlParameter> parameters1 = DataAccess.ToParameters(parameters);
  263. int success = DataAccess.ExecuteCommand(commandText, parameters1, out result);
  264. #endregion
  265. #region 角色
  266. RoleDAL.SaveRolesRelatePermission(Id, RoleIdis);
  267. #endregion
  268. return Json(new
  269. {
  270. success = success
  271. });
  272. }
  273. ////删除权限
  274. [AuthPermission]
  275. [HttpGet, Route("delete/{0}")]
  276. public ActionResult Delete(Int32 Id, string callback)
  277. {
  278. string commandText = "DELETE FROM " + Config.TablePrefix + "Permission WHERE Id = @Id";
  279. //准备参数
  280. List<List<Object>> parameters = new List<List<Object>>();
  281. parameters.Add(new List<Object>() { "Id", Id });
  282. string result = "";
  283. List<SqlParameter> parameters1 = DataAccess.ToParameters(parameters);
  284. int success = DataAccess.ExecuteCommand(commandText, parameters1, out result);
  285. return Content(callback + "({"
  286. + success
  287. + "})");
  288. }
  289. ////删除权限
  290. [AuthPermission]
  291. [HttpPost, Route("delete")]
  292. public ActionResult Delete(Int32 Id)
  293. {
  294. string commandText = "DELETE FROM " + Config.TablePrefix + "Permission WHERE Id = @Id";
  295. //准备参数
  296. List<List<Object>> parameters = new List<List<Object>>();
  297. parameters.Add(new List<Object>() { "Id", Id });
  298. string result = "";
  299. List<SqlParameter> parameters1 = DataAccess.ToParameters(parameters);
  300. int success = DataAccess.ExecuteCommand(commandText, parameters1, out result);
  301. return Content("{success:"
  302. + success
  303. + "}");
  304. }
  305. [HttpPost]
  306. [Route("Esserch")]
  307. public ActionResult Esserch([FromBody]dynamic data)
  308. {
  309. //data={"query":"select a.AppreciationPrice from product a limit 2"};
  310. //data = "{"+"query"+":"+"select a.AppreciationPrice from product a limit 2"+"}";
  311. data = new { query = "select a.AppreciationPrice from product a limit 20" };
  312. var json = JsonConvert.SerializeObject(data);
  313. var str = Util.ElasticQuery("_sql?format=json", "POST", json);
  314. //long totalcount = DataAccess.GetRowCountDefine("select count(Id) from " + commandText1, parameters.ToArray(), out result1);
  315. Root es = new Root();
  316. List<ES> aa = new List<ES>();
  317. Root stobj = (Root)PermissionController.FromJSON<Root>(str);
  318. for (int i = 0; i < stobj.rows.Count; i++)
  319. {
  320. ES bb = new ES();
  321. bb.name = "AA"+i;
  322. bb.price = stobj.rows[i][0].ToString();
  323. aa.Add(bb);
  324. }
  325. var jsonData = JsonConvert.SerializeObject(aa);
  326. //return new JSONNetResult(JsonConvert.DeserializeObject(str));
  327. return Json(new
  328. {
  329. items = JsonConvert.DeserializeObject(jsonData)
  330. });
  331. }
  332. public class ES
  333. {
  334. public string name { get; set; }
  335. public string price { get; set; }
  336. }
  337. public class ColumnsItem
  338. {
  339. public string name { get; set; }
  340. public string type { get; set; }
  341. }
  342. public class Root
  343. {
  344. /// <summary>
  345. ///
  346. /// </summary>
  347. public List<ColumnsItem> columns { get; set; }
  348. /// <summary>
  349. ///
  350. /// </summary>
  351. public List<List<int>> rows { get; set; }
  352. }
  353. public static T FromJSON<T>(string input)
  354. {
  355. try
  356. {
  357. return JsonConvert.DeserializeObject<T>(input);
  358. }
  359. catch (Exception ex)
  360. {
  361. string a = ex.Message;
  362. return default(T);
  363. }
  364. }
  365. ////权限列表
  366. [HttpGet, Route("menus")]
  367. public JsonResult menus(string type,string ParentId)
  368. {
  369. HttpRequest request = HttpContext.Request;
  370. StringValues oo;
  371. string staffid = "";
  372. request.Headers.TryGetValue("Sso-Token", out oo);
  373. if (oo.Count > 0 && oo.ToArray()[0] != "")
  374. {
  375. staffid = oo.ToArray()[0];
  376. }
  377. //取token
  378. var token = (string)_cache.Get(staffid);
  379. var secret = TokenConfig.SecretKey;
  380. Dictionary<string, object> data;
  381. Object roleid;
  382. Int64 roleid1;
  383. IList<Menu> jsonData = new List<Menu>();
  384. if (token != null)
  385. {
  386. try
  387. {
  388. data = JsonWebToken.DecodeToObject<Dictionary<string, object>>(token, secret);
  389. data.TryGetValue("roleid", out roleid);
  390. roleid1 = (Int64)roleid;
  391. var permissions = RoleDAL.GetPermissions(roleid1, " and A.AuthType in('"+ type + "')", ParentId);
  392. var options = Permission.Convert(permissions);
  393. //jsonData = JsonConvert.SerializeObject(options);
  394. jsonData = options;
  395. }
  396. catch (SignatureVerificationException)
  397. {
  398. // Given token is either expired or hashed with an unsupported algorithm.
  399. }
  400. }
  401. return Json(jsonData
  402. );
  403. }
  404. [HttpGet, Route("menusTree")]
  405. public JsonResult menusTree(string type)
  406. {
  407. string roleIdstr = getStaff("roleid");
  408. var sql = $"select A.PermissionName as label,cast(ParentId as varchar) as parentValue,Id as value " +
  409. " from " + Config.TablePrefix + "Permission A" +
  410. " where A.Id in (select B.PermissionId from mem_RoleRelatePermission B" +
  411. " where B.roleid = @roleid and B.permissionId = A.Id and isdelete <> 1 )" +
  412. " and A.AuthType in('" + type + "') " +
  413. " and A.isdelete = 0 ";
  414. DataTable dt = new DataTable();
  415. var param = new List<SqlParameter>();
  416. param.Add(new SqlParameter("roleId", long.Parse(roleIdstr)));
  417. DataAccess.GetValues(sql, ref dt, param.ToArray(), out var msg);
  418. IList<TreeNode> result = new List<TreeNode>();
  419. if (dt != null && dt.Rows.Count > 0)
  420. {
  421. result = ModelConvertHelper<TreeNode>.ConvertToModel(dt);
  422. }
  423. return Json(new
  424. {
  425. result,
  426. msg
  427. });
  428. }
  429. ////父权限列表
  430. //[HttpGet, Route("parents/{0}")]
  431. //public ActionResult parents(string callback)
  432. //{
  433. // var permss = RoleDAL.GetTopPermissions();
  434. // IList<Option> options = new List<Option>();
  435. // foreach (Permission perms in permss)
  436. // {
  437. // var option = new Option() { label = perms.PermissionName, value = perms.Id.ToString(), disabled = perms.IsDelete };
  438. // options.Add(option);
  439. // }
  440. // var jsonData = JsonConvert.SerializeObject(options);
  441. // return Content(callback + "(" + jsonData
  442. // + ")");
  443. //}
  444. [HttpGet, Route("parents")]
  445. public ActionResult parents()
  446. {
  447. var permss = RoleDAL.GetTopPermissions();
  448. IList<Option> options = new List<Option>();
  449. foreach (Permission perms in permss)
  450. {
  451. var option = new Option() { label = perms.PermissionName, value = perms.Id.ToString(), disabled = perms.IsDelete };
  452. options.Add(option);
  453. }
  454. var jsonData = JsonConvert.SerializeObject(options);
  455. return Content(jsonData
  456. );
  457. }
  458. [HttpGet]
  459. [Route("getrole")]
  460. public JsonResult getrole()
  461. {
  462. var sql = $"select RoleRemark as label,'1' as parentValue,id+1 as value from "+Config.TablePrefix+"Role";
  463. DataTable dt = new DataTable();
  464. var param = new List<SqlParameter>();
  465. DataAccess.GetValues(sql, ref dt, param.ToArray(), out _);
  466. IList<TreeNode> result = new List<TreeNode>();
  467. if (dt != null && dt.Rows.Count > 0)
  468. {
  469. result = ModelConvertHelper<TreeNode>.ConvertToModel(dt);
  470. }
  471. result.Add(new TreeNode { parentValue = "0", label = "系统角色", value = 1 });
  472. return Json(new
  473. {
  474. //httpCode = 200,
  475. //message = "获取成功",
  476. result
  477. });
  478. }
  479. /// <summary>
  480. /// 获取组织机构
  481. /// </summary>
  482. /// <returns></returns>
  483. [HttpGet]
  484. [Route("getOrg")]
  485. public JsonResult getOrg()
  486. {
  487. var sql = $"select OrgName as label,'1' as parentValue,(ROW_NUMBER() over(order by OrgId))+1 as value from CM_Org";
  488. DataTable dt = new DataTable();
  489. var param = new List<SqlParameter>();
  490. DataAccess.GetValues(sql, ref dt, param.ToArray(), out _);
  491. IList<TreeNode> result = new List<TreeNode>();
  492. if (dt != null && dt.Rows.Count > 0)
  493. {
  494. result = ModelConvertHelper<TreeNode>.ConvertToModel(dt);
  495. }
  496. result.Add(new TreeNode { parentValue = "0", label = "亮健好医药有限公司", value = 1 });
  497. return Json(new
  498. {
  499. //httpCode = 200,
  500. //message = "获取成功",
  501. result
  502. });
  503. }
  504. /// <summary>
  505. /// 获取机构权限列表
  506. /// </summary>
  507. /// <param name="data"></param>
  508. /// <returns></returns>
  509. [AuthPermission]
  510. [HttpPost]
  511. [Route("table")]
  512. public JsonResult Table([FromBody] dynamic data)
  513. {
  514. QueryFilter[] jArray = JsonConvert.DeserializeObject<QueryFilter[]>(data.filters.ToString());
  515. var a = "";
  516. List<QueryFilter> filterList = new List<QueryFilter> ();
  517. var i = 0;
  518. foreach (QueryFilter filter in jArray) {
  519. if (filter.field == "roleId")
  520. a = filter.value.ToString();
  521. else {
  522. filterList.Add(filter);
  523. i++;
  524. }
  525. }
  526. var roleID = int.Parse(a) - 1;
  527. var param = new List<SqlParameter>();
  528. var filterstr = QueryFilter.getFilterSqlParam(filterList.ToArray(), out param,new TempTableResult(),"A.");
  529. filterstr = filterstr.Replace("A.permissionRule", "B.PermissionRule");
  530. filterstr = filterstr.Replace("A.permissionRuleType", "B.PermissionRuleType");
  531. var sql = $"select case when B.Id is null then 0 else A.id end as checkedValue," +
  532. $"A.*,B.PermissionRule,B.PermissionRuleType,B.Id as relateId from {Config.TablePrefix}Permission A " +
  533. $" left join {Config.TablePrefix}RoleRelatePermission B on B.PermissionId = A.Id and B.RoleId=@roleId and B.IsDelete <> 1 " +
  534. $" where A.IsDelete <> 1 " +
  535. $"" + filterstr;
  536. DataTable dt = new DataTable();
  537. param.Add(new SqlParameter("roleId", roleID));
  538. DataAccess.GetValues(sql, ref dt, param.ToArray(), out var msg);
  539. IList<TempTableResult> result = new List<TempTableResult>();
  540. if (dt != null && dt.Rows.Count > 0)
  541. {
  542. result = ModelConvertHelper<TempTableResult>.ConvertToModel(dt);
  543. }
  544. var countSql =
  545. $"select count(1) from "+Config.TablePrefix+"Permission where IsDelete <> 1";
  546. var count = DataAccess.GetRowCountDefine(countSql, param.ToArray(), out var msg1);
  547. return Json(new
  548. {
  549. items = result,
  550. sum = new { },
  551. totalCount = count,
  552. msg
  553. });
  554. }
  555. /// <summary>
  556. /// 设置机构权限
  557. /// </summary>
  558. /// <param name="data"></param>
  559. /// <returns></returns>
  560. [AuthPermission]
  561. [HttpPost]
  562. [Route("setrole")]
  563. public JsonResult setrole([FromBody] TempQuery data)
  564. {
  565. var param = new List<SqlParameter>();
  566. param.Add(new SqlParameter("RoleId", data.roleId));
  567. var sql = "update sup_RoleRelatePermission set IsDelete =1 where RoleId=@RoleId; ";
  568. var index = 0;
  569. foreach (var item in data.data)
  570. {
  571. index++;
  572. param.Add(new SqlParameter($"{index}", item));
  573. sql += $" if (exists(select * from sup_RoleRelatePermission where RoleId = @RoleId and PermissionId = @{index} and IsDelete = 1)) " +
  574. " begin " +
  575. $" update sup_RoleRelatePermission set IsDelete = 0 where RoleId = @RoleId and PermissionId = @{index} and IsDelete = 1 " +
  576. " end " +
  577. " else " +
  578. " begin " +
  579. $" insert into sup_RoleRelatePermission (PermissionId, RoleId) values (@{index},@RoleId) end ";
  580. }
  581. DataAccess.ExecuteCommand(sql, param.ToArray(), out var x);
  582. return Json(new
  583. {
  584. success = true
  585. });
  586. }
  587. public class TempTableResult
  588. {
  589. public int id { get; set; }
  590. public string permissionName { get; set; }
  591. public string permissionUrl { get; set; }
  592. public int roleId { get; set; }
  593. public int checkedValue { get; set; }
  594. public string permissionRule { get; set; }
  595. public string permissionRuleType { get; set; }
  596. public int relateId { get; set; }
  597. public string AuthType { get; set; }
  598. }
  599. public class TempQuery
  600. {
  601. public int[] data { get; set; }
  602. public int roleId { get; set; }
  603. }
  604. [HttpGet, Route("authtype")]
  605. public ActionResult AuthType()
  606. {
  607. IList<Option> options = new List<Option>();
  608. var option = new Option() { label = "界面", value = "U" ,disabled = false };
  609. options.Add(option);
  610. var option1 = new Option() { label = "操作", value = "O", disabled = false };
  611. options.Add(option1);
  612. var option2 = new Option() { label = "按钮", value = "A", disabled = false };
  613. options.Add(option2);
  614. var option3 = new Option() { label = "顶部菜单", value = "M", disabled = false };
  615. options.Add(option3);
  616. var jsonData = JsonConvert.SerializeObject(options);
  617. return Content(jsonData
  618. );
  619. }
  620. [HttpGet, Route("permissions")]
  621. public ActionResult Permissions()
  622. {
  623. string roleid = getStaff("roleid");
  624. if(roleid == null || roleid == "")
  625. {
  626. return Json(new { success = false,msg="没有登陆" });
  627. }
  628. Dictionary<string, Permission> permission = PermissionHelper.Permissions(Convert.ToInt32(roleid));
  629. return Json(permission);
  630. }
  631. public class SortContent
  632. {
  633. public Object content { get; set; }//权限内容
  634. public string code { get; set; }//权限id
  635. public int sort { get; set; }//权限序号
  636. }
  637. [AuthPermission]
  638. [HttpPost]
  639. [Route("setSort")]
  640. public JsonResult setSort([FromBody]dynamic data)
  641. {
  642. SortContent[] dataItems = new SortContent[] { };
  643. if (data != null)
  644. {
  645. //Newtonsoft.Json.Linq.JArray
  646. dataItems = data.data.ToObject<SortContent[]>();
  647. }
  648. List<DataAccessCommand> list = new List<DataAccessCommand>();
  649. foreach (SortContent item in dataItems) {
  650. var param = new List<SqlParameter>();
  651. param.Add(new SqlParameter("Id", item.code));
  652. param.Add(new SqlParameter("Sort", item.sort));
  653. var sql = "update "+Config.TablePrefix+"Permission set Sort=@Sort where Id=@Id; ";
  654. list.Add(new DataAccessCommand(sql, param,CommandType.Text,false));
  655. }
  656. var success = DataAccess.ExecuteBatchCommands(list, out var x);
  657. return Json(new
  658. {
  659. success,
  660. msg = x
  661. });
  662. }
  663. [AuthPermission]
  664. [HttpPost]
  665. [Route("editroleperm")]
  666. public JsonResult editRolePerm([FromBody] TempTableResult entity)
  667. {
  668. var sql = "update " + Config.TablePrefix + "RoleRelatePermission set " +
  669. " PermissionRule = a1,PermissionRuleType = a2 " +
  670. " from (select @PermissionRule as a1 ,@PermissionRuleType as a2 )A " +
  671. " where Id = @relateId";
  672. var param = new List<SqlParameter>();
  673. param.Add(new SqlParameter("@PermissionRule", entity.permissionRule));
  674. param.Add(new SqlParameter("@PermissionRuleType", entity.permissionRuleType));
  675. var ss = new SqlParameter("@relateId", SqlDbType.Int);
  676. ss.Value = entity.relateId;
  677. param.Add(ss);
  678. List<DataAccessCommand> list = new List<DataAccessCommand>(0);
  679. list.Add(new DataAccessCommand(sql, param, CommandType.Text, false));
  680. var success = DataAccess.ExecuteBatchCommands(list, out var msg);
  681. return Json(new
  682. {
  683. success,
  684. msg
  685. });
  686. }
  687. [AuthPermission]
  688. [HttpGet]
  689. [Route("getruletype")]
  690. public ActionResult getRuleType()
  691. {
  692. IList<Option> options = new List<Option>();
  693. var option = new Option() { label = "SQL", value = "S", disabled = false };
  694. options.Add(option);
  695. var option1 = new Option() { label = "JSON", value = "J", disabled = false };
  696. options.Add(option1);
  697. var jsonData = JsonConvert.SerializeObject(options);
  698. return Content(jsonData
  699. );
  700. }
  701. }
  702. }