ACLUserItem.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using WMS.Util;
  7. using WMS.Info;
  8. using SqlSugar;
  9. namespace WMS.Core
  10. {
  11. public class ACLUserItem
  12. {
  13. /// <summary>
  14. /// 获取列表数据
  15. /// <summary>
  16. /// <returns></returns>
  17. public IEnumerable<ACL_USERITEM> GetList(string keyword)
  18. {
  19. try
  20. {
  21. return SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().Where(it => it.F_ISDELETE == 0).WhereIF(!keyword.IsEmpty(), it => it.F_NO.Contains(keyword) || it.F_NAME.Contains(keyword)).ToList();
  22. }
  23. catch (Exception ex)
  24. {
  25. throw ex;
  26. }
  27. }
  28. /// <summary>
  29. /// 获取列表数据
  30. /// <summary>
  31. /// <returns></returns>
  32. public IEnumerable<ACL_USERITEM> GetListForDeptNo(string DeptNo)
  33. {
  34. try
  35. {
  36. return SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().Where(it => it.F_ISDELETE == 0 && it.F_ISSTOP == 0).WhereIF(DeptNo.IsEmpty(), it => it.F_DEPTNO == DeptNo).ToList();
  37. }
  38. catch (Exception ex)
  39. {
  40. throw ex;
  41. }
  42. }
  43. /// <summary>
  44. /// 获取分页数据
  45. /// <summary>
  46. /// <returns></returns>
  47. public IEnumerable<ACL_USERITEM> GetPageList(string keyword, Pagination pagination)
  48. {
  49. try
  50. {
  51. int count = 0;
  52. var db = SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().Where(it => it.F_ISDELETE == 0).WhereIF(!keyword.IsEmpty(), it => it.F_NO.Contains(keyword) || it.F_NAME.Contains(keyword));
  53. List<ACL_USERITEM> list = new List<ACL_USERITEM>();
  54. if (pagination.sord.ToUpper() == "ASC")
  55. {
  56. list = db.OrderBy(pagination.sidx).ToPageList(pagination.page, pagination.rows, ref count);
  57. }
  58. else
  59. {
  60. string orderstr = pagination.sidx + " desc";
  61. list = db.OrderBy(orderstr).ToPageList(pagination.page, pagination.rows, ref count);
  62. }
  63. pagination.records = count;
  64. return list;
  65. }
  66. catch (Exception ex)
  67. {
  68. throw ex;
  69. }
  70. }
  71. /// <summary>
  72. /// 获取实体数据
  73. /// <param name="keyValue">主键</param>
  74. /// <summary>
  75. /// <returns></returns>
  76. public ACL_USERITEM GetEntity(string keyValue)
  77. {
  78. try
  79. {
  80. return SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().Where(it => it.F_ISDELETE == 0 && it.F_NO == keyValue).First();
  81. }
  82. catch (Exception ex)
  83. {
  84. throw ex;
  85. }
  86. }
  87. /// <summary>
  88. /// 删除实体数据
  89. /// <param name="keyValue">主键</param>
  90. /// <summary>
  91. /// <returns></returns>
  92. public void DeleteEntity(string keyValue)
  93. {
  94. try
  95. {
  96. if (LoginBLLCore.CheckAdmin(keyValue))
  97. {
  98. throw SysExCore.ThrowFailException("系统内置账号,无法进行删除。");
  99. }
  100. void action(SqlSugarClient ctx)
  101. {
  102. ctx.Deleteable<ACL_USERRELATION>().Where(it => it.F_USERNO==keyValue).ExecuteCommand();
  103. ctx.Deleteable<ACL_AUTHORIZE>().Where(it => it.F_OBJTYPENUM == (int)EACLObjType.UserItem && it.F_OBJNO == keyValue).ExecuteCommand();
  104. ctx.Deleteable<ACL_USERITEM>().Where(it => it.F_NO == keyValue).ExecuteCommand();
  105. }
  106. SysDbCore.DbTranExec(action);
  107. }
  108. catch (Exception ex)
  109. {
  110. throw ex;
  111. }
  112. }
  113. /// <summary>
  114. /// 保存实体数据(新增、修改)
  115. /// <param name="keyValue">主键</param>
  116. /// <summary>
  117. /// <returns></returns>
  118. public void SaveEntity(LoginUserInfo loginUser, string keyValue, ACL_USERITEM entity)
  119. {
  120. try
  121. {
  122. if (entity == null)
  123. {
  124. throw SysExCore.ThrowFailException("用户保存数据为空。");
  125. }
  126. if (string.IsNullOrWhiteSpace(entity.F_NO))
  127. {
  128. throw SysExCore.ThrowFailException("用户编号为空。");
  129. }
  130. if (string.IsNullOrWhiteSpace(entity.F_NAME))
  131. {
  132. throw SysExCore.ThrowFailException("用户名称为空。");
  133. }
  134. // 判断用户《供应商权限是否存在,如果存在则删除
  135. var horize = SysDbCore.GetDbCtx().Queryable<ACL_AUTHORIZE>().Where(v => v.F_OBJNO == entity.F_NO && v.F_ACLTYPENUM==4 && v.F_OBJTYPENUM==0).First();
  136. if(horize!=null)
  137. {
  138. SysDbCore.GetDbCtx().Deleteable<ACL_AUTHORIZE>().Where(v => v.F_OBJNO == entity.F_NO && v.F_ACLTYPENUM == 4 && v.F_OBJTYPENUM == 0).ExecuteCommand();
  139. }
  140. //ACL_AUTHORIZE rize = new ACL_AUTHORIZE() {
  141. // F_NO = Guid.NewGuid().ToString(),
  142. // F_ITEMNO = entity.F_HEADICON,
  143. // F_OBJTYPENUM=0,
  144. // F_ACLTYPENUM=4,
  145. // F_OBJNO= entity.F_NO,
  146. //};
  147. //SysDbCore.GetDbCtx().Insertable<ACL_AUTHORIZE>(rize).ExecuteCommand();
  148. DateTime nowdt =DateTime.Now;
  149. if (string.IsNullOrEmpty(keyValue))
  150. {
  151. EUserType ut = LoginBLLCore.GetUserType(keyValue);
  152. if (ut != EUserType.User)
  153. {
  154. throw SysExCore.ThrowFailException("用户名非法。");
  155. }
  156. ACL_USERITEM u = new ACL_USERITEM()
  157. {
  158. F_ADDTIME = nowdt,
  159. F_ADDUSERNO = loginUser.UserNo,
  160. //F_DATA = (new byte[0]).ToString(),
  161. F_EDITPWDTIME = nowdt,
  162. F_EDITTIME = nowdt,
  163. F_EDITUSERNO = loginUser.UserNo,
  164. F_HEADICON = entity.F_HEADICON,
  165. F_ISDELETE = 0,
  166. F_ISSTOP = 0,
  167. F_PWDERRQTY = 0,
  168. F_MEMO = entity.F_MEMO,
  169. F_NAME = entity.F_NAME,
  170. F_NO = entity.F_NO,
  171. F_PASSWORD = SysSecurityCore.Aes256Encrypt(SysSetCore.GetSysSet().PwdInit),
  172. F_SEX = entity.F_SEX,
  173. F_DEPTNO = entity.F_DEPTNO,
  174. F_AUTOSTOPTIME = entity.F_AUTOSTOPTIME,
  175. };
  176. SysDbCore.GetDbCtx().Insertable<ACL_USERITEM>(u).ExecuteCommand();
  177. }
  178. else
  179. {
  180. SysDbCore.GetDbCtx().Updateable<ACL_USERITEM>(entity).SetColumns(it => new ACL_USERITEM
  181. {
  182. F_EDITUSERNO = loginUser.UserNo,
  183. F_HEADICON = entity.F_HEADICON,
  184. F_EDITTIME = nowdt,
  185. F_DEPTNO = entity.F_DEPTNO,
  186. F_MEMO = entity.F_MEMO,
  187. F_AUTOSTOPTIME = entity.F_AUTOSTOPTIME,
  188. F_ISSTOP = entity.F_ISSTOP,
  189. F_NAME = entity.F_NAME,
  190. F_SEX = entity.F_SEX
  191. }).Where(it => it.F_NO == entity.F_NO).ExecuteCommand();
  192. }
  193. }
  194. catch (Exception ex)
  195. {
  196. throw ex;
  197. }
  198. }
  199. /// <summary>
  200. /// 获取用户Map
  201. /// </summary>
  202. public Dictionary<string, ACL_USERITEM> GetMap()
  203. {
  204. try
  205. {
  206. Dictionary<string, ACL_USERITEM> dics = new Dictionary<string, ACL_USERITEM>();
  207. SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().ToList().ForEach(it =>
  208. {
  209. it.F_DATA = "";
  210. it.F_PASSWORD = "";
  211. dics.Add(it.F_NO, it);
  212. });
  213. return dics;
  214. }
  215. catch (Exception ex)
  216. {
  217. throw ex;
  218. }
  219. }
  220. /// <summary>
  221. /// 重置密码
  222. /// </summary>
  223. public void ResetPassword(LoginUserInfo LoginUser, string EditUserNo)
  224. {
  225. try
  226. {
  227. EUserType editEuser = LoginBLLCore.GetUserType(EditUserNo);
  228. if (LoginUser.UserType == EUserType.System)
  229. {
  230. if (editEuser == EUserType.Super)
  231. {
  232. throw SysExCore.ThrowFailException("无法重置超级管理员账号密码!!!");
  233. }
  234. }
  235. else if (LoginUser.UserType == EUserType.SuperAdmin)
  236. {
  237. if (editEuser == EUserType.Super || editEuser == EUserType.System)
  238. {
  239. throw SysExCore.ThrowFailException("无法重置系统管理员账号密码!!!");
  240. }
  241. }
  242. else
  243. {
  244. if (editEuser == EUserType.Super || editEuser == EUserType.System || editEuser == EUserType.SuperAdmin)
  245. {
  246. throw SysExCore.ThrowFailException("无法重置管理员账号密码!!!");
  247. }
  248. }
  249. int i = SysDbCore.GetDbCtx().Updateable<ACL_USERITEM>().SetColumns(it => new ACL_USERITEM()
  250. {
  251. F_PASSWORD = SysSecurityCore.Aes256Encrypt(SysSetCore.GetSysSet().PwdInit),
  252. F_EDITTIME = DateTime.Now,
  253. F_EDITUSERNO = LoginUser.UserNo,
  254. F_EDITPWDTIME = DateTime.Now,
  255. F_PWDERRQTY = 0
  256. }).Where(it => it.F_NO.ToUpper() == EditUserNo.ToUpper()).ExecuteCommand();
  257. if (i <= 0)
  258. {
  259. throw SysExCore.ThrowFailException("修改密码失败!!!");
  260. }
  261. }
  262. catch (Exception ex)
  263. {
  264. throw ex;
  265. }
  266. }
  267. public List<TreeModel> GetCheckTree()
  268. {
  269. List<ACL_USERITEM> list = SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().Where(it => it.F_ISDELETE == 0 && it.F_ISSTOP == 0).ToList();
  270. List<TreeModel> treeList = new List<TreeModel>();
  271. //{
  272. // TreeModel node = new TreeModel();
  273. // node.id = ACLAuthorize.ALLAuthorize;
  274. // node.text = "授权所有";
  275. // node.value = ACLAuthorize.ALLAuthorize;
  276. // node.showcheck = true;
  277. // node.checkstate = 0;
  278. // node.isexpand = true;
  279. // node.icon = ACLAuthorize.IcoAuthorize;
  280. // node.parentId = "";
  281. // treeList.Add(node);
  282. //}
  283. foreach (var item in list)
  284. {
  285. TreeModel node = new TreeModel();
  286. node.id = item.F_NO;
  287. node.text = item.F_NAME;
  288. node.value = item.F_NO;
  289. node.showcheck = true;
  290. node.checkstate = 0;
  291. node.isexpand = true;
  292. node.icon = ACLAuthorize.IcoAuthorize;
  293. node.parentId = "";
  294. treeList.Add(node);
  295. }
  296. return treeList.ToTree();
  297. }
  298. /// <summary>
  299. /// 获取按钮列表树形数据(基于供应商模块)
  300. /// </summary>
  301. /// <returns></returns>
  302. public List<TreeModel> GetSupperTree()
  303. {
  304. List<BASE_SUPPLIER> list = SysDbCore.GetDbCtx().Queryable<BASE_SUPPLIER>().Where(it => it.F_ISDELETE == 0 && it.F_ISSTOP == 0).ToList();
  305. List<TreeModel> treeList = new List<TreeModel>();
  306. {
  307. TreeModel node = new TreeModel();
  308. node.id = ACLAuthorize.ALLAuthorize;
  309. node.text = "授权所有";
  310. node.value = ACLAuthorize.ALLAuthorize;
  311. node.showcheck = true;
  312. node.checkstate = 0;
  313. node.isexpand = true;
  314. node.icon = ACLAuthorize.IcoAuthorize;
  315. node.parentId = "";
  316. treeList.Add(node);
  317. }
  318. foreach (var item in list)
  319. {
  320. TreeModel node = new TreeModel();
  321. node.id = item.F_NO;
  322. node.text = item.F_NAME;
  323. node.value = item.F_NO;
  324. node.showcheck = true;
  325. node.checkstate = 0;
  326. node.isexpand = true;
  327. node.icon = ACLAuthorize.IcoAuthorize;
  328. node.parentId = "";
  329. treeList.Add(node);
  330. }
  331. return treeList.ToTree();
  332. }
  333. }
  334. }