TsysUserRepository.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. using Microsoft.EntityFrameworkCore;
  2. using Ropin.Inspection.Model;
  3. using Ropin.Inspection.Model.Entities;
  4. using Ropin.Inspection.Model.SearchModel;
  5. using Ropin.Inspection.Model.ViewModel;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Ropin.Inspection.Repository
  12. {
  13. public class TsysUserRepository : RepositoryBase<TSYS_User, Guid>, ITsysUserRepository
  14. {
  15. public TsysUserRepository(InspectionDbContext dbContext) : base(dbContext)
  16. {
  17. }
  18. public void CheckUser(TsysUserCreateViewModel user)
  19. {
  20. if (DbContext.TSYS_User.Where(i => i.C_Mobile == user.C_Mobile).Any())
  21. throw new Exception("用户手机号已存在数据库中");
  22. if (DbContext.TSYS_User.Where(i => null != i.C_IDNum && i.C_IDNum == user.C_IDNum).Any())
  23. throw new Exception("用户身份证号已存在数据库中");
  24. }
  25. public TSYS_User GetUser(TsysUserSearchModel searchModel)
  26. {
  27. return DbContext.Set<TSYS_User>().SingleOrDefault(user => user.C_UserID == searchModel.C_UserID || user.C_WechatID == searchModel.WxOpenId);
  28. }
  29. public List<TSYS_User> GetUserList()
  30. {
  31. var list= DbContext.Set<TSYS_User>().AsNoTracking().Where(x => x.C_Status == "1").ToList();
  32. return list;
  33. }
  34. public async Task<TSYS_User> LoginByAsync(LoginModel loginModel)
  35. {
  36. return await DbContext.Set<TSYS_User>().FirstOrDefaultAsync(user => user.C_Mobile == loginModel.Mobile && user.C_Password == loginModel.Password.ToLower());
  37. }
  38. //public async Task<TSYS_User> GetUserAsync(Guid userId)
  39. //{
  40. // return await DbContext.Set<TSYS_User>().SingleOrDefaultAsync(user => user.C_UserID == userId);
  41. //}
  42. public Task<IEnumerable<TSYS_User>> GetByStoreCodeAsync(string storeCode)
  43. {
  44. MySqlConnector.MySqlParameter[] parameters = new[] {
  45. new MySqlConnector.MySqlParameter("storeCode", storeCode) };
  46. string sql = @"SELECT B.* FROM TPNT_StoreOrg A
  47. INNER JOIN TSYS_User B
  48. ON A.C_OrgCode = B.C_OrgCode
  49. WHERE A.C_StoreCode = @storeCode ";
  50. var contentlist = EntityFrameworkCoreExtensions.GetList<TSYS_User>(DbContext.Database, sql, parameters);
  51. return Task.FromResult(contentlist);
  52. }
  53. public Task<IEnumerable<TSYS_User>> GetByRecordItemCodeAsync(string itemCode)
  54. {
  55. MySqlConnector.MySqlParameter[] parameters = new[] {
  56. new MySqlConnector.MySqlParameter("itemCode", itemCode) };
  57. string sql = @"SELECT E.* FROM TISP_RecordItem A
  58. INNER JOIN TISP_Record B ON B.C_ID = A.C_RecordCode
  59. INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode
  60. INNER JOIN TPNT_StoreOrg D ON D.C_StoreCode = C.C_StoreCode
  61. INNER JOIN TSYS_User E ON D.C_OrgCode = E.C_OrgCode
  62. WHERE A.C_ID = @itemCode ";
  63. var contentlist = EntityFrameworkCoreExtensions.GetList<TSYS_User>(DbContext.Database, sql, parameters);
  64. return Task.FromResult(contentlist);
  65. }
  66. public Task<PageData<TsysUserDetailWithOrgRoleViewModel>> GetByNameAsync(TsysUserSearchByNameModel searchModel)
  67. {
  68. //var v = EntityFrameworkCoreExtensions.GetList<V_PRD_Product_Info>(DbContext.Database, "Select * from V_PRD_Product_Info", null);
  69. MySqlConnector.MySqlParameter[] parameters = new[] {
  70. new MySqlConnector.MySqlParameter("Mobile", searchModel.C_Mobile),
  71. new MySqlConnector.MySqlParameter("Name", searchModel.C_Name),
  72. new MySqlConnector.MySqlParameter("OrganizeCode", searchModel.G_OrganizeCode.ToString()),
  73. new MySqlConnector.MySqlParameter("Status", searchModel.C_Status),
  74. new MySqlConnector.MySqlParameter("UserId", searchModel.G_UserId?.ToString()) };
  75. string sql = @"SELECT A.*,C.C_Code AS RoleId, C.C_Name AS RoleName,D.C_Name AS OrgName,D.C_SName AS OrgSName,D.C_LName AS OrgLName,D.C_Type
  76. From TSYS_User A
  77. LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode
  78. LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode
  79. INNER JOIN TSYS_Org D ON D.C_Code = A.C_OrgCode
  80. ";// WHERE A.C_Status = '1' AND C.C_Status = '1' AND D.C_Status = '1'
  81. if (!string.IsNullOrEmpty(searchModel.C_Status))
  82. {
  83. sql += " WHERE A.C_Status = @Status AND C.C_Status = '1' AND D.C_Status = '1' ";
  84. }
  85. if (!string.IsNullOrEmpty(searchModel.C_Mobile))
  86. {
  87. sql += " AND A.C_Mobile LIKE '%"+ searchModel.C_Mobile + "%' ";
  88. }
  89. if (!string.IsNullOrEmpty(searchModel.C_Name))
  90. {
  91. sql += " AND A.C_Name LIKE '%"+ searchModel.C_Name + "%' ";
  92. }
  93. if (Guid.Empty != searchModel.G_OrganizeCode)
  94. {
  95. sql += " AND D.C_Code =@OrganizeCode ";
  96. }
  97. if (Guid.Empty != searchModel.G_UserId && null != searchModel.G_UserId)
  98. {
  99. sql += " AND A.C_UserID =@UserId ";
  100. }
  101. //if (searchModel.Start != Convert.ToDateTime("0001-01-01 00:00:00") && searchModel.End != Convert.ToDateTime("0001-01-01 00:00:00"))
  102. //{
  103. // sql += " AND D.D_CreateOn between @start and @end";
  104. //}
  105. sql += " ORDER BY A.I_Sort ASC ";
  106. //IEnumerable<TsysUserDetailWithOrgRoleDto> recordItemlist = EntityFrameworkCoreExtensions.GetList2<TsysUserDetailWithOrgRoleDto>(DbContext.Database, sql, parameters);
  107. var contentlist = EntityFrameworkCoreExtensions.GetList<TsysUserDetailWithOrgRoleDto>(DbContext.Database, sql, parameters);
  108. if (null == contentlist || contentlist.First() == null)
  109. {
  110. PageData<TsysUserDetailWithOrgRoleViewModel> contentlistDetail = null;
  111. return Task.FromResult(contentlistDetail);
  112. }
  113. var q = from b in contentlist
  114. group b by b.C_UserID into g
  115. select new TsysUserDetailWithOrgRoleViewModel
  116. {
  117. C_UserID = g.First().C_UserID,
  118. C_LicenseCode = g.First().C_LicenseCode,
  119. C_Post = g.First().C_Post,
  120. C_UserName = g.First().C_UserName,
  121. C_WechatID = g.First().C_WechatID,
  122. C_ProgramID = g.First().C_ProgramID,
  123. C_Name = g.First().C_Name,
  124. I_Render = g.First().I_Render,
  125. C_IDNum = g.First().C_IDNum,
  126. C_OrgCode = g.First().C_OrgCode,
  127. C_ImagePath = g.First().C_ImagePath,
  128. D_BirthDay = g.First().D_BirthDay,
  129. C_Address = g.First().C_Address,
  130. I_Sort = g.First().I_Sort,
  131. C_Mobile = g.First().C_Mobile,
  132. C_Phone = g.First().C_Phone,
  133. C_Email = g.First().C_Email,
  134. C_Remark = g.First().C_Remark,
  135. C_Status = g.First().C_Status,
  136. OrgName = g.First().OrgName,
  137. OrgSName = g.First().OrgSName,
  138. OrgLName = g.First().OrgLName,
  139. C_Type = g.First().C_Type,
  140. Roles = from d in g
  141. group d by d.RoleId into f where !f.First().RoleId.Equals(Guid.Empty)
  142. select new RoleDto
  143. {
  144. RoleId = f.First().RoleId,
  145. RoleName = f.First().RoleName,
  146. }
  147. };
  148. PageData<TsysUserDetailWithOrgRoleViewModel> pageData = new PageData<TsysUserDetailWithOrgRoleViewModel>
  149. {
  150. Totals = q.ToList().Count,
  151. Rows = searchModel.IsPagination ? q.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize).ToList() : q.ToList()
  152. };
  153. return Task.FromResult(pageData);
  154. }
  155. public Task<TsysUserDetailViewModel> GetUserDetailByAsync(LoginModel loginModel)
  156. {
  157. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("Mobile", loginModel.Mobile), new MySqlConnector.MySqlParameter("Password", loginModel.Password) };
  158. string sql = @"SELECT A.*,GROUP_CONCAT(C.C_Name SEPARATOR ',') as RoleNames,GROUP_CONCAT(C.C_Code SEPARATOR ',') as RoleIds ,cast(G.C_Code as char) AS LicenseTypeCode, G.C_Name AS LicenseTypeName
  159. From TSYS_User A LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode
  160. LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode
  161. LEFT JOIN TSYS_License F ON F.C_Code = A.C_LicenseCode
  162. LEFT JOIN TSYS_LicenseType G ON G.C_Code = F.C_TypeCode
  163. WHERE A.C_Mobile = @Mobile AND A.C_Password = @Password
  164. GROUP BY A.C_UserID
  165. ";
  166. sql = @"SELECT A.*,GROUP_CONCAT(C.C_Name SEPARATOR ',') as RoleNames,GROUP_CONCAT(C.C_Code SEPARATOR ',') as RoleIds ,cast(G.C_Code as char) AS LicenseTypeCode, G.C_Name AS LicenseTypeName ,H.C_Type AS OrgTypeCode,H.C_Name AS OrgTypeName
  167. From TSYS_User A
  168. LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode
  169. LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode
  170. LEFT JOIN TSYS_License F ON F.C_Code = A.C_LicenseCode
  171. LEFT JOIN TSYS_LicenseType G ON G.C_Code = F.C_TypeCode
  172. INNER JOIN TSYS_Org H ON H.C_Code = A.C_OrgCode
  173. WHERE A.C_Mobile = @Mobile AND A.C_Password = @Password
  174. GROUP BY A.C_UserID";
  175. // sql = @"SELECT A.C_UserID,A.C_LicenseCode,A.C_Post,A.C_UserName,A.C_WechatID,A.C_ProgramID,A.C_Name,A.I_Render,A.C_IDNum,A.C_OrgCode,A.C_ImagePath,A.D_Birthday,A.C_Address,A.C_Mobile,A.C_Phone,A.C_Email,A.C_Remark,
  176. //B.C_Name AS LicenseName,B.D_EndDate AS LicenseEndDate,
  177. //C.C_Name AS LicenseTypeName,
  178. //E.C_Code AS PrivCode,
  179. //E.C_ParentCode AS PrivParentCode,
  180. //E.C_Module AS PrivModule,
  181. //E.C_Type AS PrivType,
  182. //E.C_Name AS PrivName,
  183. //E.I_Sort AS Privort,
  184. //E.C_ImageUrl AS PrivImageUrl,
  185. //E.C_PageUrl AS PrivPageUrl,
  186. //E.C_Remark AS PrivRemark
  187. //FROM TSYS_User A
  188. //LEFT JOIN TSYS_License B ON B.C_Code = A.C_LicenseCode
  189. //LEFT JOIN TSYS_LicenseType C ON C.C_Code = B.C_TypeCode
  190. //LEFT JOIN TSYS_LicenseTypePriv D ON D.C_LicenseTypeCode = C.C_Code
  191. //LEFT JOIN TSYS_Priv E ON E.C_Code = D.C_PrivilegeCode
  192. //LEFT JOIN TSYS_Org F ON F.C_Code = A.C_OrgCode
  193. //WHERE A.C_Mobile = '13636678098' AND A.C_Password = 'e10adc3949ba59abbe56e057f20f883e'
  194. //AND A.C_Status = '1' AND B.C_Status = '1' AND C.C_Status = '1' AND E.C_Status = '1' AND F.C_Status = '1'";
  195. TsysUserDetailViewModel model = EntityFrameworkCoreExtensions.SqlQuery<TsysUserDetailViewModel>(DbContext.Database, sql, parameters).FirstOrDefault();
  196. if(model == null) return Task.FromResult(model);
  197. //var query = from p in DbContext.TBDM_Prov
  198. // join pp in DbContext.TSYS_LicenseTypePriv
  199. // on p.C_Code equals pp.C_PrivilegeCode
  200. // where p.NickName == ""
  201. // select new
  202. // {
  203. // pp.Id,
  204. // pp.PlayerId,
  205. // PetName = pp.NickName,
  206. // PlayerName = p.NickName
  207. // };
  208. // string userLicenseTypePrivSql = @"SELECT E.*
  209. //FROM TSYS_User A
  210. //JOIN TSYS_License B ON B.C_Code = A.C_LicenseCode
  211. // JOIN TSYS_LicenseType C ON C.C_Code = B.C_TypeCode
  212. // JOIN TSYS_LicenseTypePriv D ON D.C_LicenseTypeCode = C.C_Code
  213. // JOIN TSYS_Priv E ON E.C_Code = D.C_PrivilegeCode
  214. //WHERE A.C_Mobile = @Mobile AND A.C_Password = @Password
  215. //AND A.C_Status = '1' AND B.C_Status = '1' AND C.C_Status = '1' AND E.C_Status = '1'
  216. //";
  217. // model.LicenseTypePrivS = EntityFrameworkCoreExtensions.GetList<LicenseTypePriv>(DbContext.Database, userLicenseTypePrivSql, parameters);
  218. string userRoleTypePrivPrivSql = @"SELECT E.*
  219. From TSYS_User A
  220. LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode
  221. LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode
  222. LEFT JOIN TSYS_RolePriv D ON D.C_RoleCode = C.C_Code
  223. LEFT JOIN TSYS_Priv E ON E.C_Code = D.C_PrivilegeCode
  224. WHERE A.C_Mobile = @Mobile AND A.C_Password = @Password
  225. AND A.C_Status = '1' AND C.C_Status = '1' AND E.C_Status = '1'
  226. ORDER BY E.I_Sort ASC
  227. ";
  228. var roleTypePrivList = EntityFrameworkCoreExtensions.GetList<RoleTypePriv>(DbContext.Database, userRoleTypePrivPrivSql, parameters).ToList();
  229. if (roleTypePrivList[0] == null)
  230. {
  231. return Task.FromResult(model);
  232. }
  233. if (!string.IsNullOrEmpty(loginModel.PrivModule))
  234. {
  235. if (!roleTypePrivList.Any(t => t.C_Module == loginModel.PrivModule))
  236. {
  237. return Task.FromResult(model);
  238. }
  239. }
  240. var treeList = new List<RoleTypePrivTree>();
  241. var SysPriv = DbContext.TSYS_Priv.OrderBy(c => c.I_Sort).ToList();
  242. foreach (var item in SysPriv.Where(m => m.C_ParentCode == null))
  243. {
  244. List<RoleTypePrivTree> Part2Children = new List<RoleTypePrivTree>();
  245. foreach (var item2 in SysPriv.Where(m => m.C_ParentCode == item.C_Code))
  246. {
  247. List<RoleTypePrivTree> Part3Children = new List<RoleTypePrivTree>();
  248. foreach (var item3 in SysPriv.Where(m => m.C_ParentCode == item2.C_Code))
  249. {
  250. List<RoleTypePrivTree> Part4Children = new List<RoleTypePrivTree>();
  251. foreach (var item4 in SysPriv.Where(m => m.C_ParentCode == item3.C_Code))
  252. {
  253. var treeList4 = new List<RoleTypePrivTree>();
  254. List<RoleTypePrivTree> v3 = RecursionRoleTypePriv(roleTypePrivList.Where(m => m.C_ParentCode != null).ToList(), new List<RoleTypePrivTree>(), item4.C_Code);
  255. var query4 = from p in SysPriv
  256. join pp in roleTypePrivList
  257. on p.C_Code equals pp.C_Code
  258. where p.C_Code == item4.C_Code
  259. select new
  260. {
  261. pp.C_Code
  262. };
  263. if (v3.Count >0 || query4.Any())
  264. treeList4.Add(new RoleTypePrivTree()
  265. {
  266. C_Code = item4.C_Code,
  267. C_Name = item4.C_Name,
  268. C_ParentCode = item4.C_ParentCode,
  269. C_Type = item4.C_Type,
  270. I_Sort = item4.I_Sort,
  271. C_Remark = item4.C_Remark,
  272. C_ImageUrl = item4.C_ImageUrl,
  273. C_PageUrl = item4.C_PageUrl,
  274. C_Module = item4.C_Module,
  275. Open = v3.Count > 0,
  276. Children = v3.Count == 0 ? null : v3
  277. });
  278. Part4Children.AddRange(treeList4);
  279. }
  280. var treeList3 = new List<RoleTypePrivTree>();
  281. //List<RoleTypePrivTree> v2 = RecursionRoleTypePriv(roleTypePrivList.Where(m => m.C_ParentCode != null).ToList(), new List<RoleTypePrivTree>(), item3.C_Code);
  282. var query3 = from p in SysPriv
  283. join pp in roleTypePrivList
  284. on p.C_Code equals pp.C_Code
  285. where p.C_Code == item3.C_Code
  286. select new
  287. {
  288. pp.C_Code
  289. };
  290. if (Part4Children.Count>0 || query3.Any())
  291. treeList3.Add(new RoleTypePrivTree()
  292. {
  293. C_Code = item3.C_Code,
  294. C_Name = item3.C_Name,
  295. C_ParentCode = item3.C_ParentCode,
  296. C_Type = item3.C_Type,
  297. I_Sort = item3.I_Sort,
  298. C_Remark = item3.C_Remark,
  299. C_ImageUrl = item3.C_ImageUrl,
  300. C_PageUrl = item3.C_PageUrl,
  301. C_Module = item3.C_Module,
  302. Open = Part4Children.Count > 0,
  303. Children = Part4Children.Count == 0 ? null : Part4Children
  304. });
  305. Part3Children.AddRange(treeList3);
  306. }
  307. var treeList2 = new List<RoleTypePrivTree>();
  308. //List<RoleTypePrivTree> v = RecursionRoleTypePriv(roleTypePrivList.Where(m => m.C_ParentCode != null).ToList(), new List<RoleTypePrivTree>(), item2.C_Code);
  309. var query2 = from p in SysPriv
  310. join pp in roleTypePrivList
  311. on p.C_Code equals pp.C_Code
  312. where p.C_Code == item2.C_Code
  313. select new
  314. {
  315. pp.C_Code
  316. };
  317. if (Part3Children.Count>0 || query2.Any())
  318. treeList2.Add(new RoleTypePrivTree()
  319. {
  320. C_Code = item2.C_Code,
  321. C_Name = item2.C_Name,
  322. C_ParentCode = item2.C_ParentCode,
  323. C_Type = item2.C_Type,
  324. I_Sort = item2.I_Sort,
  325. C_Remark = item2.C_Remark,
  326. //LicenseTypeCode = item.LicenseTypeCode,
  327. //LicenseTypeName = item.LicenseTypeName,
  328. C_ImageUrl = item2.C_ImageUrl,
  329. C_PageUrl = item2.C_PageUrl,
  330. C_Module = item2.C_Module,
  331. Open = Part3Children.Count > 0,
  332. Children = Part3Children.Count == 0 ? null : Part3Children
  333. });
  334. Part2Children.AddRange(treeList2);
  335. }
  336. //获得子级
  337. //var children = RecursionRoleTypePriv(roleTypePrivList.Where(m => m.C_ParentCode != null).ToList(), new List<RoleTypePrivTree>(), item.C_Code);
  338. //if (children == null)
  339. //{
  340. // foreach (var childItem in SysPriv.Where(m => m.C_ParentCode == item.C_Code))
  341. // {
  342. // children = RecursionRoleTypePriv(roleTypePrivList.Where(m => m.C_ParentCode != null).ToList(), new List<RoleTypePrivTree>(), childItem.C_Code);
  343. // }
  344. //}
  345. var query = from p in SysPriv
  346. join pp in roleTypePrivList
  347. on p.C_Code equals pp.C_Code
  348. where p.C_Code == item.C_Code
  349. select new
  350. {
  351. pp.C_Code
  352. };
  353. if (Part2Children.Count>0 || query.Any())
  354. treeList.Add(new RoleTypePrivTree()
  355. {
  356. C_Code = item.C_Code,
  357. C_Name = item.C_Name,
  358. C_ParentCode = item.C_ParentCode,
  359. C_Type = item.C_Type,
  360. I_Sort = item.I_Sort,
  361. C_Remark = item.C_Remark,
  362. //LicenseTypeCode = item.LicenseTypeCode,
  363. //LicenseTypeName = item.LicenseTypeName,
  364. C_ImageUrl = item.C_ImageUrl,
  365. C_PageUrl = item.C_PageUrl,
  366. C_Module = item.C_Module,
  367. Open = Part2Children.Count > 0,
  368. Children = Part2Children.Count == 0 ? null : Part2Children
  369. });
  370. }
  371. model.RoleTypePrivS = treeList;
  372. return Task.FromResult(model);
  373. }
  374. List<RoleTypePrivTree> RecursionRoleTypePriv(List<RoleTypePriv> sourceList, List<RoleTypePrivTree> list, string guid)
  375. {
  376. foreach (var item in sourceList.Where(m => m.C_ParentCode.Equals(guid)))
  377. {
  378. var res = RecursionRoleTypePriv(sourceList, new List<RoleTypePrivTree>(), item.C_Code);
  379. list.Add(new RoleTypePrivTree()
  380. {
  381. C_Code = item.C_Code,
  382. C_Name = item.C_Name,
  383. C_ParentCode = item.C_ParentCode,
  384. C_Type = item.C_Type,
  385. I_Sort = item.I_Sort,
  386. C_Remark = item.C_Remark,
  387. //LicenseTypeCode = item.LicenseTypeCode,
  388. //LicenseTypeName = item.LicenseTypeName,
  389. C_ImageUrl = item.C_ImageUrl,
  390. C_PageUrl = item.C_PageUrl,
  391. C_Module = item.C_Module,
  392. Open = res.Count > 0,
  393. Children = res.Count > 0 ? res : null
  394. });
  395. }
  396. return list;
  397. }
  398. List<RoleTypePrivTree> SysRoleTypePriv(List<RoleTypePriv> sysList, List<RoleTypePriv> sourceList, List<RoleTypePrivTree> list, string guid)
  399. {
  400. foreach (var item in sourceList.Where(m => m.C_ParentCode.Equals(guid)))
  401. {
  402. var res = SysRoleTypePriv(sysList,sourceList, new List<RoleTypePrivTree>(), item.C_Code);
  403. list.Add(new RoleTypePrivTree()
  404. {
  405. C_Code = item.C_Code,
  406. C_Name = item.C_Name,
  407. C_ParentCode = item.C_ParentCode,
  408. C_Type = item.C_Type,
  409. I_Sort = item.I_Sort,
  410. C_Remark = item.C_Remark,
  411. C_ImageUrl = item.C_ImageUrl,
  412. C_PageUrl = item.C_PageUrl,
  413. C_Module = item.C_Module,
  414. Open = res.Count > 0,
  415. Children = res.Count > 0 ? res : null
  416. });
  417. }
  418. return list;
  419. }
  420. public TsysUserDetailViewModel GetUserDetail(LoginModel loginModel)
  421. {
  422. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("Mobile", loginModel.Mobile), new MySqlConnector.MySqlParameter("Password", loginModel.Password) };
  423. string sql = "SELECT A.*,GROUP_CONCAT(C.C_Name SEPARATOR ',') as RoleNames,GROUP_CONCAT(C.C_Code SEPARATOR ',') as RoleIds From TSYS_User A LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode WHERE A.C_Mobile = @Mobile AND A.C_Password = @Password GROUP BY A.C_UserID";
  424. TsysUserDetailViewModel model = EntityFrameworkCoreExtensions.SqlQuery<TsysUserDetailViewModel>(DbContext.Database, sql, parameters).FirstOrDefault();
  425. return model;
  426. }
  427. public Task<IEnumerable<TSYS_User>> GetUserDetailByRole(TsysUserByRoleSearchModel roleSearchModel)
  428. {
  429. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("Roles", "\'" + string.Join("\',\'", roleSearchModel.Roles.ToArray()) + "\'") };
  430. string sql = "SELECT B.* FROM TSYS_UserRole A LEFT JOIN TSYS_User B ON B.C_UserID = A.C_UserCode WHERE A.C_RoleCode IN (@Roles) AND B.C_Status = '1'";
  431. //string sql = "SELECT B.* FROM TSYS_UserRole A LEFT JOIN TSYS_User B ON B.C_UserID = A.C_UserCode WHERE A.C_RoleCode IN ('72d5b5f5-3008-49b7-b0d6-cc337f1a3333','72d5b5f5-3008-49b75b0d6-cc337f1a3333') AND B.C_Status = '1'";
  432. IEnumerable<TSYS_User> model = EntityFrameworkCoreExtensions.GetList<TSYS_User>(DbContext.Database, sql, parameters);
  433. return Task.FromResult(model);
  434. }
  435. }
  436. }