FdcUser.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. using Sugar.Enties;
  2. using SqlSugar;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. namespace WebAPIBase.NetCore.BusinessCore
  7. {
  8. public class FdcUser : DbContext<SystemUser>
  9. {
  10. private string userCode;
  11. private string userName;
  12. private string userId;
  13. private string shortUserName;
  14. private int status;
  15. private string sortID;
  16. private string fZPassWord;
  17. private string workNo;
  18. private List<FdcStation> stationList = new List<FdcStation>();
  19. public string UserCode => userCode;
  20. public string UserName => userName;
  21. public string UserId => userId;
  22. public string ShortUserName => shortUserName;
  23. public int Status => status;
  24. public string SortID => sortID;
  25. public string FZPassWord => fZPassWord;
  26. public string WorkNo => workNo;
  27. public List<FdcStation> StationList => stationList;
  28. public bool HasRight(string functionCode)
  29. {
  30. if (FdcUnitStructure.Instance.FunctionList.ContainsKey(functionCode))
  31. {
  32. if (userCode == "100000")
  33. {
  34. return true;
  35. }
  36. foreach (FdcStation station in stationList)
  37. {
  38. if (station.HasRight(functionCode))
  39. {
  40. return true;
  41. }
  42. }
  43. }
  44. return false;
  45. }
  46. public bool HasUnitRight(string functionCode, string unitCode)
  47. {
  48. if (FdcUnitStructure.Instance.FunctionList.ContainsKey(functionCode))
  49. {
  50. if (userCode == "100000")
  51. {
  52. return true;
  53. }
  54. foreach (FdcStation station in stationList)
  55. {
  56. if (station.HasUnitRight(functionCode, unitCode))
  57. {
  58. return true;
  59. }
  60. }
  61. }
  62. return false;
  63. }
  64. public bool HasSubUnitRight(string functionCode, string unitCode)
  65. {
  66. if (userCode == "100000")
  67. {
  68. return true;
  69. }
  70. foreach (FdcStation station in stationList)
  71. {
  72. if (station.HasSubUnitRight(functionCode, unitCode))
  73. {
  74. return true;
  75. }
  76. }
  77. return false;
  78. }
  79. public bool HasGroupRight(string functionCode, string groupCode)
  80. {
  81. if (userCode == "100000")
  82. {
  83. return true;
  84. }
  85. foreach (FdcStation station in stationList)
  86. {
  87. if (station.HasGroupRight(functionCode, groupCode))
  88. {
  89. return true;
  90. }
  91. }
  92. return false;
  93. }
  94. public bool HasRight(string functionCode, string unitCode, string groupCode)
  95. {
  96. if (userCode == "100000")
  97. {
  98. return true;
  99. }
  100. foreach (FdcStation station in stationList)
  101. {
  102. if (station.HasRight(functionCode, unitCode, groupCode))
  103. {
  104. return true;
  105. }
  106. }
  107. return false;
  108. }
  109. public List<FdcFunction> GetRight()
  110. {
  111. List<FdcFunction> list = new List<FdcFunction>();
  112. List<string> list2 = new List<string>();
  113. foreach (FdcStation station in stationList)
  114. {
  115. foreach (KeyValuePair<string, innerFunction> function in station.functionList)
  116. {
  117. innerFunction value = function.Value;
  118. if (!list2.Contains(value.FunctionCode))
  119. {
  120. FdcFunction functionByCode = FdcUnitStructure.Instance.GetFunctionByCode(value.FunctionCode);
  121. if (functionByCode != null)
  122. {
  123. list.Add(functionByCode);
  124. list2.Add(functionByCode.FunctionStructureCode);
  125. }
  126. }
  127. }
  128. }
  129. return list;
  130. }
  131. public List<FdcFunctionUnit> GetRightByUnit(string unitCode)
  132. {
  133. List<FdcFunctionUnit> list = new List<FdcFunctionUnit>();
  134. foreach (FdcStation station in stationList)
  135. {
  136. Dictionary<string, innerFunction> functionList = station.functionList;
  137. foreach (KeyValuePair<string, innerFunction> item in functionList)
  138. {
  139. innerFunction value = item.Value;
  140. foreach (FdcUnitRight unit in value.UnitList)
  141. {
  142. if (unit.unit.isMyChild(unitCode))
  143. {
  144. FdcFunctionUnit fdcFunctionUnit = new FdcFunctionUnit();
  145. fdcFunctionUnit.FunctionCode = value.FunctionCode;
  146. fdcFunctionUnit.unit = unit.unit;
  147. fdcFunctionUnit.IsPerson = unit.IsPerson;
  148. list.Add(fdcFunctionUnit);
  149. }
  150. }
  151. }
  152. }
  153. return list;
  154. }
  155. public List<FdcFunctionUnit> GetRightByGroup(string groupCode)
  156. {
  157. List<FdcFunctionUnit> list = new List<FdcFunctionUnit>();
  158. foreach (FdcStation station in stationList)
  159. {
  160. Dictionary<string, innerFunction> functionList = station.functionList;
  161. foreach (KeyValuePair<string, innerFunction> item in functionList)
  162. {
  163. innerFunction value = item.Value;
  164. foreach (FdcGroupUnitRight groupUnit in value.GroupUnitList)
  165. {
  166. if (groupUnit.group.isMyChild(groupCode))
  167. {
  168. FdcFunctionUnit fdcFunctionUnit = new FdcFunctionUnit();
  169. fdcFunctionUnit.FunctionCode = value.FunctionCode;
  170. fdcFunctionUnit.unit = groupUnit.unit;
  171. fdcFunctionUnit.IsPerson = groupUnit.IsPerson;
  172. list.Add(fdcFunctionUnit);
  173. }
  174. }
  175. }
  176. }
  177. return list;
  178. }
  179. public List<FdcFunctionUnit> GetRightByUnitGroup(string unitCode, string groupCode)
  180. {
  181. List<FdcFunctionUnit> list = new List<FdcFunctionUnit>();
  182. if (unitCode == null || unitCode == "")
  183. {
  184. throw new ArgumentException("unit code不能为空");
  185. }
  186. if (groupCode == null || groupCode == "")
  187. {
  188. throw new ArgumentException("group code不能为空");
  189. }
  190. foreach (FdcStation station in stationList)
  191. {
  192. foreach (KeyValuePair<string, innerFunction> function in station.functionList)
  193. {
  194. innerFunction value = function.Value;
  195. foreach (FdcGroupUnitRight groupUnit in value.GroupUnitList)
  196. {
  197. if (groupUnit.unit.isMyChild(unitCode) && groupUnit.group.isMyChild(groupCode))
  198. {
  199. FdcFunctionUnit fdcFunctionUnit = new FdcFunctionUnit();
  200. fdcFunctionUnit.FunctionCode = value.FunctionCode;
  201. fdcFunctionUnit.unit = groupUnit.unit;
  202. fdcFunctionUnit.IsPerson = groupUnit.IsPerson;
  203. list.Add(fdcFunctionUnit);
  204. }
  205. }
  206. }
  207. }
  208. return list;
  209. }
  210. public List<FdcUnit> GetProjectsCanVisit()
  211. {
  212. List<FdcUnit> list = new List<FdcUnit>();
  213. foreach (FdcStation station in stationList)
  214. {
  215. foreach (FdcUnitRight unit in station.unitList)
  216. {
  217. FdcUnit unitByCode = FdcUnitStructure.Instance.GetUnitByCode(unit.unit.UnitCode);
  218. if (unitByCode != null && !list.Contains(unitByCode))
  219. {
  220. list.Add(unitByCode);
  221. }
  222. }
  223. }
  224. List<FdcUnit> list2 = new List<FdcUnit>();
  225. foreach (FdcUnit item in list)
  226. {
  227. item.GetProject2List(list2);
  228. }
  229. return list2;
  230. }
  231. public List<FdcUnit> GetCompanysCanVisit()
  232. {
  233. List<FdcUnit> list = new List<FdcUnit>();
  234. foreach (FdcStation station in stationList)
  235. {
  236. foreach (FdcUnitRight unit in station.unitList)
  237. {
  238. FdcUnit unitByCode = FdcUnitStructure.Instance.GetUnitByCode(unit.unit.UnitCode);
  239. if (unitByCode != null && !list.Contains(unitByCode))
  240. {
  241. list.Add(unitByCode);
  242. }
  243. }
  244. }
  245. List<FdcUnit> list2 = new List<FdcUnit>();
  246. foreach (FdcUnit item in list)
  247. {
  248. item.GetCompany2List(list2);
  249. }
  250. return list2;
  251. }
  252. public List<FdcUnit> GetAllUnitsCanVisit()
  253. {
  254. List<FdcUnit> list = new List<FdcUnit>();
  255. foreach (FdcStation station in stationList)
  256. {
  257. foreach (FdcUnitRight unit in station.unitList)
  258. {
  259. FdcUnit unitByCode = FdcUnitStructure.Instance.GetUnitByCode(unit.unit.UnitCode);
  260. if (unitByCode != null && !list.Contains(unitByCode))
  261. {
  262. list.Add(unitByCode);
  263. }
  264. }
  265. }
  266. List<FdcUnit> list2 = new List<FdcUnit>();
  267. foreach (FdcUnit item in list)
  268. {
  269. item.GetChild2List(list2);
  270. }
  271. return list2;
  272. }
  273. public List<FdcSystemGroup> GetDefinedSystemGroup(string functionCode)
  274. {
  275. List<FdcSystemGroup> list = new List<FdcSystemGroup>();
  276. foreach (FdcStation station in stationList)
  277. {
  278. Dictionary<string, innerFunction> functionList = station.functionList;
  279. if (!functionList.ContainsKey(functionCode))
  280. {
  281. continue;
  282. }
  283. innerFunction innerFunction = functionList[functionCode];
  284. foreach (FdcGroupUnitRight groupUnit in innerFunction.GroupUnitList)
  285. {
  286. FdcSystemGroup group = groupUnit.group;
  287. if (!list.Contains(group))
  288. {
  289. list.Add(group);
  290. }
  291. }
  292. }
  293. return list;
  294. }
  295. public List<FdcUnitRight> GetUnitRight(string functioncode)
  296. {
  297. List<FdcUnitRight> list = new List<FdcUnitRight>();
  298. foreach (FdcStation station in stationList)
  299. {
  300. Dictionary<string, innerFunction> functionList = station.functionList;
  301. if (!functionList.ContainsKey(functioncode))
  302. {
  303. continue;
  304. }
  305. innerFunction innerFunction = functionList[functioncode];
  306. foreach (FdcUnitRight unit in innerFunction.UnitList)
  307. {
  308. bool flag = false;
  309. foreach (FdcUnitRight item in list)
  310. {
  311. if (item.unit == unit.unit && item.IsPerson == unit.IsPerson)
  312. {
  313. flag = true;
  314. break;
  315. }
  316. }
  317. if (!flag)
  318. {
  319. list.Add(unit);
  320. }
  321. }
  322. }
  323. return list;
  324. }
  325. public List<FdcGroupUnitRight> GetGroupUnitRight(string functioncode)
  326. {
  327. List<FdcGroupUnitRight> list = new List<FdcGroupUnitRight>();
  328. foreach (FdcStation station in stationList)
  329. {
  330. Dictionary<string, innerFunction> functionList = station.functionList;
  331. if (!functionList.ContainsKey(functioncode))
  332. {
  333. continue;
  334. }
  335. innerFunction innerFunction = functionList[functioncode];
  336. foreach (FdcGroupUnitRight groupUnit in innerFunction.GroupUnitList)
  337. {
  338. bool flag = false;
  339. foreach (FdcGroupUnitRight item in list)
  340. {
  341. if (item.group == groupUnit.group && item.unit == groupUnit.unit && item.IsPerson == groupUnit.IsPerson)
  342. {
  343. flag = true;
  344. break;
  345. }
  346. }
  347. if (!flag)
  348. {
  349. list.Add(groupUnit);
  350. }
  351. }
  352. }
  353. return list;
  354. }
  355. public List<FdcSystemGroup> GetAllSystemGroup()
  356. {
  357. List<FdcSystemGroup> list = new List<FdcSystemGroup>();
  358. foreach (FdcStation station in stationList)
  359. {
  360. foreach (KeyValuePair<string, innerFunction> function in station.functionList)
  361. {
  362. innerFunction value = function.Value;
  363. foreach (FdcGroupUnitRight groupUnit in value.GroupUnitList)
  364. {
  365. groupUnit.group.GetChild2List(list);
  366. }
  367. }
  368. }
  369. return list;
  370. }
  371. public List<FdcSystemGroup> GetAllSystemGroup(string functionCode)
  372. {
  373. List<FdcSystemGroup> list = new List<FdcSystemGroup>();
  374. foreach (FdcStation station in stationList)
  375. {
  376. Dictionary<string, innerFunction> functionList = station.functionList;
  377. if (!functionList.ContainsKey(functionCode))
  378. {
  379. continue;
  380. }
  381. innerFunction innerFunction = functionList[functionCode];
  382. foreach (FdcGroupUnitRight groupUnit in innerFunction.GroupUnitList)
  383. {
  384. FdcSystemGroup group = groupUnit.group;
  385. group.GetChild2List(list);
  386. }
  387. }
  388. return list;
  389. }
  390. public List<FdcUnit> GetUserUnit()
  391. {
  392. List<FdcUnit> list = new List<FdcUnit>();
  393. foreach (FdcStation station in StationList)
  394. {
  395. FdcUnit unitByCode = FdcUnitStructure.Instance.GetUnitByCode(station.UnitCode);
  396. if (!list.Contains(unitByCode))
  397. {
  398. list.Add(unitByCode);
  399. }
  400. }
  401. return list;
  402. }
  403. public bool IsUserUnderUnit(FdcUnit unit)
  404. {
  405. foreach (FdcStation station in StationList)
  406. {
  407. FdcUnit unitByCode = FdcUnitStructure.Instance.GetUnitByCode(station.UnitCode);
  408. if (unitByCode.isMyParent(unit))
  409. {
  410. return true;
  411. }
  412. }
  413. return false;
  414. }
  415. public bool IsUserUnderUnit(string unitCode)
  416. {
  417. return IsUserUnderUnit(FdcUnitStructure.Instance.GetUnitByCode(unitCode));
  418. }
  419. public RightScope GetUnitRightScope(string unitCode)
  420. {
  421. RightScope result = RightScope.无;
  422. foreach (FdcStation station in stationList)
  423. {
  424. RightScope unitRightScope = station.GetUnitRightScope(unitCode);
  425. if (unitRightScope == RightScope.部门)
  426. {
  427. return RightScope.部门;
  428. }
  429. result = unitRightScope;
  430. }
  431. return result;
  432. }
  433. public FdcUser(string usercode)
  434. {
  435. userCode = usercode;
  436. string commandText = "select username,userid,shortusername,status,sortid,fzpassword,workno from systemuser where usercode=@usercode";
  437. var parameters = new List<SugarParameter>() {
  438. new SugarParameter( "@usercode", usercode)
  439. };
  440. using (var sqlDataReader = Db.Ado.GetDataReader(commandText, parameters))
  441. {
  442. if (!sqlDataReader.Read())
  443. {
  444. throw new ApplicationException("用户不存在:" + usercode);
  445. }
  446. userName = sqlDataReader["username"].ToString();
  447. userId = sqlDataReader["userid"].ToString();
  448. shortUserName = sqlDataReader["shortusername"].ToString();
  449. status = (int)sqlDataReader["status"];
  450. if (sqlDataReader["sortid"] != DBNull.Value)
  451. {
  452. sortID = sqlDataReader["sortid"].ToString();
  453. }
  454. else
  455. {
  456. sortID = "";
  457. }
  458. if (sqlDataReader["fzpassword"] != DBNull.Value)
  459. {
  460. fZPassWord = sqlDataReader["fzpassword"].ToString();
  461. }
  462. else
  463. {
  464. fZPassWord = "";
  465. }
  466. if (sqlDataReader["workno"] != DBNull.Value)
  467. {
  468. workNo = sqlDataReader["workno"].ToString();
  469. }
  470. else
  471. {
  472. workNo = "";
  473. }
  474. }
  475. string commandText2 = "select stationcode from stationuser where usercode=@usercode";
  476. using (var sqlDataReader = Db.Ado.GetDataReader(commandText2, parameters))
  477. {
  478. while (sqlDataReader.Read())
  479. {
  480. try
  481. {
  482. FdcStation stationByCode = FdcUnitStructure.Instance.GetStationByCode(sqlDataReader["stationcode"].ToString());
  483. if (stationByCode != null)
  484. {
  485. stationList.Add(stationByCode);
  486. }
  487. }
  488. catch
  489. {
  490. }
  491. }
  492. }
  493. }
  494. }
  495. }