UserService.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. using LeaRun.Data;
  2. using LeaRun.Data.Repository;
  3. using LeaRun.Util;
  4. using LeaRun.Util.WebControl;
  5. using LeaRun.Util.Extension;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Data.Common;
  9. using System.Text;
  10. using System.Linq;
  11. using LeaRun.Application.Entity.BaseManage;
  12. using LeaRun.Application.IService.BaseManage;
  13. using LeaRun.Application.IService.AuthorizeManage;
  14. using LeaRun.Application.Service.AuthorizeManage;
  15. using System;
  16. using LeaRun.Application.Code;
  17. namespace LeaRun.Application.Service.BaseManage
  18. {
  19. /// <summary>
  20. /// 版 本
  21. /// Copyright (c) 2013-2016 上海力软信息技术有限公司
  22. /// 创建人:佘赐雄
  23. /// 日 期:2015.11.03 10:58
  24. /// 描 述:用户管理
  25. /// </summary>
  26. public class UserService : RepositoryFactory<UserEntity>, IUserService
  27. {
  28. private IAuthorizeService<UserEntity> iauthorizeservice = new AuthorizeService<UserEntity>();
  29. #region 获取数据
  30. /// <summary>
  31. /// 用户列表
  32. /// </summary>
  33. /// <returns></returns>
  34. public DataTable GetTable()
  35. {
  36. var strSql = new StringBuilder();
  37. strSql.Append(@"SELECT u.*,
  38. d.FullName AS DepartmentName
  39. FROM Base_User u
  40. LEFT JOIN Base_Department d ON d.DepartmentId = u.DepartmentId
  41. WHERE 1=1");
  42. strSql.Append(" AND u.EnabledMark = 1 AND u.DeleteMark=0");
  43. return this.BaseRepository().FindTable(strSql.ToString());
  44. }
  45. /// <summary>
  46. /// 用户列表
  47. /// </summary>
  48. /// <returns></returns>
  49. public IEnumerable<UserEntity> GetList()
  50. {
  51. var expression = LinqExtensions.True<UserEntity>();
  52. expression = expression.And(t => t.UserId != "System1").And(t => t.EnabledMark == 1).And(t => t.DeleteMark == 0);
  53. return this.BaseRepository().IQueryable(expression).OrderByDescending(t => t.CreateDate).ToList();
  54. }
  55. /// <summary>
  56. /// 用户列表
  57. /// </summary>
  58. /// <param name="pagination">分页</param>
  59. /// <param name="queryJson">查询参数</param>
  60. /// <returns></returns>
  61. public IEnumerable<UserEntity> GetPageList(Pagination pagination, string queryJson)
  62. {
  63. var expression = LinqExtensions.True<UserEntity>();
  64. var queryParam = queryJson.ToJObject();
  65. //公司主键
  66. if (!queryParam["organizeId"].IsEmpty())
  67. {
  68. string organizeId = queryParam["organizeId"].ToString();
  69. expression = expression.And(t => t.OrganizeId.Equals(organizeId));
  70. }
  71. //部门主键
  72. if (!queryParam["departmentId"].IsEmpty())
  73. {
  74. string departmentId = queryParam["departmentId"].ToString();
  75. expression = expression.And(t => t.DepartmentId.Equals(departmentId));
  76. }
  77. //查询条件
  78. if (!queryParam["condition"].IsEmpty() && !queryParam["keyword"].IsEmpty())
  79. {
  80. string condition = queryParam["condition"].ToString();
  81. string keyord = queryParam["keyword"].ToString();
  82. switch (condition)
  83. {
  84. case "Account": //账户
  85. expression = expression.And(t => t.Account.Contains(keyord));
  86. break;
  87. case "RealName": //姓名
  88. expression = expression.And(t => t.RealName.Contains(keyord));
  89. break;
  90. case "Mobile": //手机
  91. expression = expression.And(t => t.Mobile.Contains(keyord));
  92. break;
  93. default:
  94. break;
  95. }
  96. }
  97. //expression = expression.And(t => t.UserId != "System");
  98. return iauthorizeservice.FindList(expression, pagination);
  99. }
  100. /// <summary>
  101. /// 用户列表(ALL)
  102. /// </summary>
  103. /// <returns></returns>
  104. public DataTable GetAllTable()
  105. {
  106. var strSql = new StringBuilder();
  107. strSql.Append(@"SELECT u.UserId ,
  108. u.EnCode ,
  109. u.Account ,
  110. u.RealName ,
  111. u.Gender ,
  112. u.Birthday ,
  113. u.Mobile ,
  114. u.Manager ,
  115. u.OrganizeId,
  116. u.DepartmentId,
  117. o.FullName AS OrganizeName ,
  118. d.FullName AS DepartmentName ,
  119. u.RoleId ,
  120. u.DutyName ,
  121. u.PostName ,
  122. u.EnabledMark ,
  123. u.CreateDate,
  124. u.Description
  125. FROM Base_User u
  126. LEFT JOIN Base_Organize o ON o.OrganizeId = u.OrganizeId
  127. LEFT JOIN Base_Department d ON d.DepartmentId = u.DepartmentId
  128. WHERE 1=1");
  129. strSql.Append(" AND u.EnabledMark = 1 AND u.DeleteMark=0 order by o.FullName,d.FullName,u.RealName");
  130. return this.BaseRepository().FindTable(strSql.ToString());
  131. }
  132. /// <summary>
  133. /// 用户列表(导出Excel)
  134. /// </summary>
  135. /// <returns></returns>
  136. public DataTable GetExportList()
  137. {
  138. var strSql = new StringBuilder();
  139. strSql.Append(@"SELECT [Account]
  140. ,[RealName]
  141. ,CASE WHEN Gender=1 THEN '男' ELSE '女' END AS Gender
  142. ,[Birthday]
  143. ,[Mobile]
  144. ,[Telephone]
  145. ,u.[Email]
  146. ,[WeChat]
  147. ,[MSN]
  148. ,u.[Manager]
  149. ,o.FullName AS Organize
  150. ,d.FullName AS Department
  151. ,u.[Description]
  152. ,u.[CreateDate]
  153. ,u.[CreateUserName]
  154. FROM Base_User u
  155. INNER JOIN Base_Department d ON u.DepartmentId=d.DepartmentId
  156. INNER JOIN Base_Organize o ON u.OrganizeId=o.OrganizeId");
  157. return this.BaseRepository().FindTable(strSql.ToString());
  158. }
  159. /// <summary>
  160. /// 用户实体
  161. /// </summary>
  162. /// <param name="keyValue">主键值</param>
  163. /// <returns></returns>
  164. public UserEntity GetEntity(string keyValue)
  165. {
  166. return this.BaseRepository().FindEntity(keyValue);
  167. }
  168. /// <summary>
  169. /// 登录验证
  170. /// </summary>
  171. /// <param name="username">用户名</param>
  172. /// <returns></returns>
  173. public UserEntity CheckLogin(string username)
  174. {
  175. var expression = LinqExtensions.True<UserEntity>();
  176. expression = expression.And(t => t.Account == username);
  177. expression = expression.Or(t => t.Mobile == username);
  178. expression = expression.Or(t => t.Email == username);
  179. return this.BaseRepository().FindEntity(expression);
  180. }
  181. #endregion
  182. #region 验证数据
  183. /// <summary>
  184. /// 账户不能重复
  185. /// </summary>
  186. /// <param name="account">账户值</param>
  187. /// <param name="keyValue">主键</param>
  188. /// <returns></returns>
  189. public bool ExistAccount(string account, string keyValue)
  190. {
  191. var expression = LinqExtensions.True<UserEntity>();
  192. expression = expression.And(t => t.Account == account);
  193. if (!string.IsNullOrEmpty(keyValue))
  194. {
  195. expression = expression.And(t => t.UserId != keyValue);
  196. }
  197. return this.BaseRepository().IQueryable(expression).Count() == 0 ? true : false;
  198. }
  199. #endregion
  200. #region 提交数据
  201. /// <summary>
  202. /// 删除用户
  203. /// </summary>
  204. /// <param name="keyValue">主键</param>
  205. public void RemoveForm(string keyValue)
  206. {
  207. this.BaseRepository().Delete(keyValue);
  208. }
  209. /// <summary>
  210. /// 保存用户表单(新增、修改)
  211. /// </summary>
  212. /// <param name="keyValue">主键值</param>
  213. /// <param name="userEntity">用户实体</param>
  214. /// <returns></returns>
  215. public string SaveForm(string keyValue, UserEntity userEntity)
  216. {
  217. IRepository db = new RepositoryFactory().BaseRepository().BeginTrans();
  218. try
  219. {
  220. #region 基本信息
  221. if (!string.IsNullOrEmpty(keyValue))
  222. {
  223. userEntity.Modify(keyValue);
  224. userEntity.Password = null;
  225. db.Update(userEntity);
  226. }
  227. else
  228. {
  229. userEntity.Create();
  230. keyValue = userEntity.UserId;
  231. userEntity.Secretkey = Md5Helper.MD5(CommonHelper.CreateNo(), 16).ToLower();
  232. userEntity.Password = Md5Helper.MD5(DESEncrypt.Encrypt(Md5Helper.MD5(userEntity.Password, 32).ToLower(), userEntity.Secretkey).ToLower(), 32).ToLower();
  233. db.Insert(userEntity);
  234. }
  235. #endregion
  236. #region 默认添加 角色、岗位、职位
  237. db.Delete<UserRelationEntity>(t => t.IsDefault == 1 && t.UserId == userEntity.UserId);
  238. List<UserRelationEntity> userRelationEntitys = new List<UserRelationEntity>();
  239. //角色
  240. if (!string.IsNullOrEmpty(userEntity.RoleId))
  241. {
  242. userRelationEntitys.Add(new UserRelationEntity
  243. {
  244. Category = 2,
  245. UserRelationId = Guid.NewGuid().ToString(),
  246. UserId = userEntity.UserId,
  247. ObjectId = userEntity.RoleId,
  248. CreateDate = DateTime.Now,
  249. CreateUserId = OperatorProvider.Provider.Current().UserId,
  250. CreateUserName = OperatorProvider.Provider.Current().UserName,
  251. IsDefault = 1,
  252. });
  253. }
  254. //岗位
  255. if (!string.IsNullOrEmpty(userEntity.DutyId))
  256. {
  257. userRelationEntitys.Add(new UserRelationEntity
  258. {
  259. Category = 3,
  260. UserRelationId = Guid.NewGuid().ToString(),
  261. UserId = userEntity.UserId,
  262. ObjectId = userEntity.DutyId,
  263. CreateDate = DateTime.Now,
  264. CreateUserId = OperatorProvider.Provider.Current().UserId,
  265. CreateUserName = OperatorProvider.Provider.Current().UserName,
  266. IsDefault = 1,
  267. });
  268. }
  269. //职位
  270. if (!string.IsNullOrEmpty(userEntity.PostId))
  271. {
  272. userRelationEntitys.Add(new UserRelationEntity
  273. {
  274. Category = 4,
  275. UserRelationId = Guid.NewGuid().ToString(),
  276. UserId = userEntity.UserId,
  277. ObjectId = userEntity.PostId,
  278. CreateDate = DateTime.Now,
  279. CreateUserId = OperatorProvider.Provider.Current().UserId,
  280. CreateUserName = OperatorProvider.Provider.Current().UserName,
  281. IsDefault = 1,
  282. });
  283. }
  284. db.Insert(userRelationEntitys);
  285. #endregion
  286. db.Commit();
  287. return keyValue;
  288. }
  289. catch (Exception)
  290. {
  291. db.Rollback();
  292. throw;
  293. }
  294. }
  295. /// <summary>
  296. /// 修改用户登录密码
  297. /// </summary>
  298. /// <param name="keyValue">主键值</param>
  299. /// <param name="Password">新密码(MD5 小写)</param>
  300. public void RevisePassword(string keyValue, string Password)
  301. {
  302. UserEntity userEntity = new UserEntity();
  303. userEntity.UserId = keyValue;
  304. userEntity.Secretkey = Md5Helper.MD5(CommonHelper.CreateNo(), 16).ToLower();
  305. userEntity.Password = Md5Helper.MD5(DESEncrypt.Encrypt(Password, userEntity.Secretkey).ToLower(), 32).ToLower();
  306. this.BaseRepository().Update(userEntity);
  307. }
  308. /// <summary>
  309. /// 修改用户状态
  310. /// </summary>
  311. /// <param name="keyValue">主键值</param>
  312. /// <param name="State">状态:1-启动;0-禁用</param>
  313. public void UpdateState(string keyValue, int State)
  314. {
  315. UserEntity userEntity = new UserEntity();
  316. userEntity.Modify(keyValue);
  317. userEntity.EnabledMark = State;
  318. this.BaseRepository().Update(userEntity);
  319. }
  320. /// <summary>
  321. /// 修改用户信息
  322. /// </summary>
  323. /// <param name="userEntity">实体对象</param>
  324. public void UpdateEntity(UserEntity userEntity)
  325. {
  326. this.BaseRepository().Update(userEntity);
  327. }
  328. #endregion
  329. }
  330. }