AclUserInfoService.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using WMS.BZModels.Dto.UserCenterManager.UserRoleDtos;
  8. using WMS.BZModels;
  9. using WMS.BZModels.Models.UserCenterManager;
  10. using WMS.Info;
  11. using WMS.BZSqlSugar;
  12. using WMS.BZModels.Dto.UserCenterManager.UserInfoDtos;
  13. using Mapster;
  14. using WMS.Util;
  15. using System.Reflection;
  16. using NPOI.OpenXmlFormats.Spreadsheet;
  17. using static Microsoft.Extensions.Logging.EventSource.LoggingEventSource;
  18. namespace WMS.BZServices.UserCenterManager
  19. {
  20. public class AclUserInfoService
  21. {
  22. private readonly Repository<AclUserInfo> _acluserInfoRepository;
  23. public AclUserInfoService(Repository<AclUserInfo> acluserInfoRepository)
  24. {
  25. _acluserInfoRepository = acluserInfoRepository;
  26. }
  27. /// <summary>
  28. /// 获取列表数据
  29. /// <summary>
  30. /// <returns></returns>
  31. public IList<AclUserinfoListDto> GetList(string keyword)
  32. {
  33. var predicate = Expressionable.Create<AclUserInfo>();
  34. predicate = predicate.AndIF(!string.IsNullOrEmpty(keyword), m => m.Code.Contains(keyword) || m.Name.Contains(keyword));
  35. var list = _acluserInfoRepository.Queryable().Where(predicate.ToExpression()).ToList();
  36. return list.Adapt<List<AclUserinfoListDto>>();
  37. }
  38. public IEnumerable<AclUserinfoListDto> GetListForDeptNo(long DeptNo)
  39. {
  40. var predicate = Expressionable.Create<AclUserInfo>();
  41. predicate = predicate.And(m => m.IsStop == 0);
  42. predicate = predicate.AndIF(DeptNo > 0, m => m.DeptId.Equals(DeptNo));
  43. var list = _acluserInfoRepository.Queryable().Where(predicate.ToExpression()).ToList();
  44. return list.Adapt<List<AclUserinfoListDto>>();
  45. }
  46. public PagedInfo<AclUserinfoListDto> GetPageList(Pagination pagination, AclUserinfoQueryDto billDocsinfoQueryDto)
  47. {
  48. var predicate = Expressionable.Create<AclUserInfo>();
  49. predicate = predicate.AndIF(billDocsinfoQueryDto != null && !string.IsNullOrEmpty(billDocsinfoQueryDto?.KeyWord), m => m.Code.Contains(billDocsinfoQueryDto.KeyWord) || m.Name.Contains(billDocsinfoQueryDto.KeyWord));
  50. predicate = predicate.AndIF(billDocsinfoQueryDto != null && !string.IsNullOrEmpty(billDocsinfoQueryDto?.DeptId), m => m.DeptId.Equals(billDocsinfoQueryDto.DeptId));
  51. var list = _acluserInfoRepository.Queryable().Where(predicate.ToExpression())
  52. .ToPage<AclUserInfo, AclUserinfoListDto>(pagination);
  53. return list;
  54. }
  55. public Dictionary<string, AclUserinfoDto> GetMap()
  56. {
  57. try
  58. {
  59. Dictionary<string, AclUserinfoDto> dics = new Dictionary<string, AclUserinfoDto>();
  60. _acluserInfoRepository.Queryable().ToList().ForEach(it => dics.Add(it.Id.ToString(), it.Adapt<AclUserinfoDto>()));
  61. return dics;
  62. }
  63. catch (Exception ex)
  64. {
  65. throw ex;
  66. }
  67. }
  68. /// <summary>
  69. /// 获取实体数据
  70. /// <param name="keyValue">主键</param>
  71. /// <summary>
  72. /// <returns></returns>
  73. public AclUserinfoListDto GetEntityById(long keyValue)
  74. {
  75. var user = _acluserInfoRepository.Queryable().Single(it => it.Id == keyValue);
  76. return user.Adapt<AclUserinfoListDto>();
  77. }
  78. /// <summary>
  79. /// 获取实体数据
  80. /// <param name="keyValue">主键</param>
  81. /// <summary>
  82. /// <returns></returns>
  83. public AclUserinfoListDto GetEntityByCode(string keyValue)
  84. {
  85. var user = _acluserInfoRepository.Queryable().Where(it => it.Code == keyValue).ToList();
  86. return user.First().Adapt<AclUserinfoListDto>();
  87. }
  88. public dynamic GetUserByUserNo(LoginUserInfo LoginUser)
  89. {
  90. try
  91. {
  92. var user = _acluserInfoRepository.Queryable().First(it => it.Code == LoginUser.UserNo);
  93. //ACL_USERITEM user = SysDbCore.GetDbCtx().Queryable<ACL_USERITEM>().Where(it => it.F_NO == LoginUser.UserNo).First();
  94. LoginUser.EncryptTokenNo = "";
  95. //UserInfo userInfo = null;
  96. //if (user != null)
  97. //{
  98. // user.Adapt<AclUserinfoListDto>();
  99. // user.F_DATA = "";
  100. // user.Pwd = "";
  101. // userInfo = user.F_DATA.ToObject<UserInfo>();
  102. //}
  103. return new
  104. {
  105. USERITEM = user.Adapt<AclUserinfoListDto>(),
  106. USERINFO = "",
  107. LOGINUSER = LoginUser
  108. };
  109. }
  110. catch (Exception ex)
  111. {
  112. throw ex;
  113. }
  114. }
  115. public void ValidationOldPassword(string UserNo, string OldPassword)
  116. {
  117. try
  118. {
  119. var user = _acluserInfoRepository.Queryable().First(it => it.Code == UserNo);
  120. if (user == null)
  121. {
  122. throw BZSysExCore.ThrowFailException("用户不存在。");
  123. }
  124. if (string.IsNullOrWhiteSpace(OldPassword))
  125. {
  126. throw BZSysExCore.ThrowFailException("请输入旧密码。");
  127. }
  128. string EOldPassword = SysSecurityHelp.Aes256Encrypt(OldPassword, user.Secretkey);
  129. if ( EOldPassword != user.Pwd)
  130. {
  131. throw BZSysExCore.ThrowFailException("原密码错误,请重新输入。");
  132. }
  133. }
  134. catch (Exception ex)
  135. {
  136. throw ex;
  137. }
  138. }
  139. /// <summary>
  140. /// 获取用户类型
  141. /// </summary>
  142. public EUserType GetUserType(string UserNo)
  143. {
  144. EUserType UserType = EUserType.User;
  145. try
  146. {
  147. if (UserNo.ToUpper() == EUserType.Super.ToString().ToUpper())
  148. {
  149. UserType = EUserType.Super;
  150. }
  151. else if (UserNo.ToUpper() == EUserType.System.ToString().ToUpper())
  152. {
  153. UserType = EUserType.System;
  154. }
  155. else if (UserNo.ToUpper() == EUserType.SuperAdmin.ToString().ToUpper())
  156. {
  157. UserType = EUserType.SuperAdmin;
  158. }
  159. else
  160. {
  161. UserType = EUserType.User;
  162. }
  163. //权限管理员
  164. }
  165. catch
  166. {
  167. }
  168. return UserType;
  169. }
  170. public void Save(LoginUserInfo loginUser, string keyValue, AclUserInfo entity)
  171. {
  172. try
  173. {
  174. if (entity == null)
  175. {
  176. throw new ArgumentException("用户保存数据为空。");
  177. }
  178. if (string.IsNullOrWhiteSpace(entity.Code))
  179. {
  180. throw new ArgumentException("用户编号为空。");
  181. }
  182. if (string.IsNullOrWhiteSpace(entity.Name))
  183. {
  184. throw new ArgumentException("用户名称为空。");
  185. }
  186. if (keyValue.IsEmpty() || keyValue == "undefined")
  187. {
  188. EUserType ut = GetUserType(keyValue);
  189. if (ut != EUserType.User)
  190. {
  191. throw new ArgumentException("用户名非法。");
  192. }
  193. var mat = _acluserInfoRepository.GetSingle(p => p.Code == entity.Code);
  194. if (mat != null)
  195. {
  196. throw new ArgumentException("用户编码已存在");
  197. }
  198. entity.Id = IdFactory.NewId();
  199. entity.AddTime = DateTime.Now;
  200. entity.AddWho = loginUser.UserNo;
  201. entity.EditTime = DateTime.Now;
  202. entity.EditWho = loginUser.UserNo;
  203. entity.Secretkey = SysSecurityHelp.Encrypt(CommonUtil.CreateNo(), 16).ToLower();
  204. entity.Pwd = SysSecurityHelp.Aes256Encrypt("000000", entity.Secretkey);
  205. _acluserInfoRepository.Insert(entity);
  206. }
  207. else
  208. {
  209. entity.Id = Convert.ToInt64(keyValue);
  210. _acluserInfoRepository.UpdateModelColumns(p => new AclUserInfo
  211. {
  212. EditWho = loginUser.UserNo,
  213. EditTime = DateTime.Now,
  214. DeptId = entity.DeptId,
  215. Memo = entity.Memo,
  216. IsStop = entity.IsStop,
  217. Name = entity.Name,
  218. SexNum = entity.SexNum,
  219. Birthday = entity.Birthday,
  220. Mobile = entity.Mobile,
  221. Telephone = entity.Telephone,
  222. Email = entity.Email,
  223. WarehouseNo=entity.WarehouseNo,
  224. },
  225. it => it.Id == entity.Id);
  226. }
  227. }
  228. catch (Exception ex)
  229. {
  230. throw ex;
  231. }
  232. }
  233. /// <summary>
  234. /// 重置密码
  235. /// </summary>
  236. public void ResetPassword(LoginUserInfo LoginUser, string EditUserNo)
  237. {
  238. try
  239. {
  240. EUserType editEuser = GetUserType(EditUserNo);
  241. if (LoginUser.UserType == EUserType.System)
  242. {
  243. if (editEuser == EUserType.Super)
  244. {
  245. throw new ArgumentException("无法重置超级管理员账号密码!!!");
  246. }
  247. }
  248. else if (LoginUser.UserType == EUserType.SuperAdmin)
  249. {
  250. if (editEuser == EUserType.Super || editEuser == EUserType.System)
  251. {
  252. throw new ArgumentException("无法重置系统管理员账号密码!!!");
  253. }
  254. }
  255. else
  256. {
  257. if (editEuser == EUserType.Super || editEuser == EUserType.System || editEuser == EUserType.SuperAdmin)
  258. {
  259. throw new ArgumentException("无法重置管理员账号密码!!!");
  260. }
  261. }
  262. var secretkey = SysSecurityHelp.Encrypt(CommonUtil.CreateNo(), 16).ToLower();
  263. var i = _acluserInfoRepository.AsUpdateable().SetColumns(it => new AclUserInfo
  264. {
  265. EditWho = LoginUser.UserNo,
  266. EditTime = DateTime.Now,
  267. PwdErrQty = 0,
  268. Secretkey = secretkey,
  269. Pwd = SysSecurityHelp.Aes256Encrypt("000000", secretkey),
  270. }).Where(it => it.Code.ToUpper() == EditUserNo.ToUpper()).ExecuteCommand();
  271. if (i <= 0)
  272. {
  273. throw new ArgumentException("修改密码失败!!!");
  274. }
  275. }
  276. catch (Exception ex)
  277. {
  278. throw ex;
  279. }
  280. }
  281. /// <summary>
  282. /// 是否是管理员
  283. /// </summary>
  284. public bool CheckAdmin(string UserNo)
  285. {
  286. bool IsAdmin = false;
  287. EUserType UserType = GetUserType(UserNo);
  288. if (UserType == EUserType.SuperAdmin || UserType == EUserType.Super || UserType == EUserType.System)
  289. {
  290. IsAdmin = true;
  291. }
  292. return IsAdmin;
  293. }
  294. public void Delete(string Id)
  295. {
  296. try
  297. {
  298. if (string.IsNullOrWhiteSpace(Id) || long.TryParse(Id, out var result))
  299. {
  300. throw new ArgumentException("用户Id错误");
  301. }
  302. var entity = GetEntityById(result);
  303. if (entity != null)
  304. {
  305. if (CheckAdmin(entity.Code))
  306. {
  307. throw new ArgumentException("系统内置账号,无法进行删除。");
  308. }
  309. _acluserInfoRepository.Delete(entity);
  310. //_acluserInfoRepository.Deleteable<ACL_USERRELATION>().Where(it => it.F_USERNO == keyValue).ExecuteCommand();
  311. //_acluserInfoRepository.Deleteable<ACL_AUTHORIZE>().Where(it => it.F_OBJTYPENUM == (int)EACLObjType.UserItem && it.F_OBJNO == keyValue).ExecuteCommand();
  312. }
  313. }
  314. catch (Exception ex)
  315. {
  316. throw ex;
  317. }
  318. }
  319. }
  320. }