diff --git a/langguanApi/Common/StringHelper.cs b/langguanApi/Common/StringHelper.cs
index f3f3e0c..0cc0d3b 100644
--- a/langguanApi/Common/StringHelper.cs
+++ b/langguanApi/Common/StringHelper.cs
@@ -28,5 +28,58 @@ namespace langguanApi.Common
}
return pwd;
}
+
+ ///
+ /// 加密
+ ///
+ /// 需要加密的字符串
+ /// 加密后的字符串
+ //[OperationContract]
+ public static string Encrypt(string strSource)
+ {
+ //把字符串放到byte数组中
+ byte[] bytIn = System.Text.Encoding.Default.GetBytes(strSource);
+ //建立加密对象的密钥和偏移量
+ byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量
+ byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥
+ //实例DES加密类
+ DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();
+ mobjCryptoService.Key = iv;
+ mobjCryptoService.IV = key;
+ ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
+ //实例MemoryStream流加密密文件
+ System.IO.MemoryStream ms = new System.IO.MemoryStream();
+ CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
+ cs.Write(bytIn, 0, bytIn.Length);
+ cs.FlushFinalBlock();
+
+ string strOut = System.Convert.ToBase64String(ms.ToArray());
+ return strOut;
+
+ }
+ ///
+ /// 解密
+ ///
+ /// 需要解密的字符串
+ /// 解密后的字符串
+ //[OperationContract]
+ public static string Decrypt(string Source)
+ {
+ if (Source == null) return string.Empty;
+ //将解密字符串转换成字节数组
+ byte[] bytIn = System.Convert.FromBase64String(Source);
+ //给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相同
+ byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量
+ byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥
+ DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();
+ mobjCryptoService.Key = iv;
+ mobjCryptoService.IV = key;
+ //实例流进行解密
+ System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);
+ ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
+ CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
+ StreamReader strd = new StreamReader(cs, Encoding.Default);
+ return strd.ReadToEnd();
+ }
}
}
diff --git a/langguanApi/Controllers/UserController.cs b/langguanApi/Controllers/UserController.cs
index e771242..5dc9ba2 100644
--- a/langguanApi/Controllers/UserController.cs
+++ b/langguanApi/Controllers/UserController.cs
@@ -56,30 +56,8 @@ namespace langguanApi.Controllers
var result = await _userService.GetPage(input);
return Ok(result);
}
- ///删除用户
- ///
- ///
- ///
- [HttpDelete("Delete")]
- public async Task Delete(string id)
- {
- await _userService.DeleteUser(id);
- return Ok(new ApiResult() { code = 0 });
- }
- ///
- /// 修改用户信息
- ///
- ///
- ///
- [HttpPut("Update")]
- public async Task Update([FromBody] UserUpdate input)
- {
- await _userService.UpdateUser(input);
- return Ok(new ApiResult() { code = 0 });
- }
#region 用户管理相关接口
-
///
///新增用户
///
@@ -103,8 +81,42 @@ namespace langguanApi.Controllers
var result = await _userService.GetUserList(input);
return Ok(result);
}
-
-
+ //根据用户Id获取用户信息
+ ///
+ /// 根据用户Id获取用户信息
+ ///
+ ///
+ ///
+ [HttpGet("GetUserById")]
+ public async Task GetUserById(string userId)
+ {
+ var result = await _userService.GetUserById(userId);
+ return Ok(result);
+ }
+ //修改用户信息
+ ///
+ /// 修改用户信息
+ ///
+ ///
+ ///
+ [HttpPost("UpdateUser")]
+ public async Task UpdateUser([FromBody] UserDto input)
+ {
+ var result = await _userService.UpdateUser(input);
+ return Ok(result);
+ }
+ //删除用户
+ ///
+ /// 删除用户
+ ///
+ ///
+ ///
+ [HttpPost("DeleteUser")]
+ public async Task DeleteUser(string userId)
+ {
+ var result = await _userService.DeleteUser(userId);
+ return Ok(result);
+ }
#endregion
}
}
diff --git a/langguanApi/Model/Dto/SystemConfigurationDto/UserDto.cs b/langguanApi/Model/Dto/SystemConfigurationDto/UserDto.cs
index 8e9e631..a938ad1 100644
--- a/langguanApi/Model/Dto/SystemConfigurationDto/UserDto.cs
+++ b/langguanApi/Model/Dto/SystemConfigurationDto/UserDto.cs
@@ -27,41 +27,10 @@ namespace langguanApi.Model.Dto.SystemConfigurationDto
///
public string Email { get; set; }
///
- /// 学历
- ///
- public string Education { get; set; }
- ///
/// 手机号
///
public string Tel { get; set; }
///
- /// 性别 0表示男 1表示女
- ///
- public byte Sex { get; set; }
- ///
- /// 毕业院校
- ///
- public string University { get; set; }
- ///
- /// 出生日期
- ///
- public string BrithdayDateTime { get; set; }
- public DateTime? Brithday { get; set; }
-
- ///
- /// 入职日期
- ///
- public string HiredateDateTime { get; set; } = DateTime.Now.ToString();
- public DateTime? Hiredate { get; set; }
- ///
- /// 籍贯
- ///
- public string Native { get; set; }
- ///
- /// 居住地
- ///
- public string Address { get; set; }
- ///
/// 是否管理员 0否 1是
///
public byte IsAdmin { get; set; }
@@ -69,8 +38,10 @@ namespace langguanApi.Model.Dto.SystemConfigurationDto
/// 是否删除 0否 1是
///
public byte IsDel { get; set; }
- //是否启用 0表示未启用 1表示启用
- public byte IsEnable { get; set; }
+ ///
+ /// 密码 md5加密
+ ///
+ public string Password { get; set; }
}
///
///根据用户条件查询
@@ -85,64 +56,50 @@ namespace langguanApi.Model.Dto.SystemConfigurationDto
/// 手机号
///
public string Tel { get; set; } = "";
- //入职开始时间
- public string HiredateStart { get; set; } = "";
- //入职结束时间
- public string HiredateEnd { get; set; } = "";
+ ///
+ /// 当前条数
+ ///
+ public int PageSize { get; set; } = 10;
+ ///
+ /// 当前页数
+ ///
+ public int PageIndex { get; set; } = 1;
}
///
/// 用户列表展示
///
- public class UserListDto
+ public class UserDetailDto
{
+ ///
+ /// 用户ID,方便查看详情操作
+ ///
+ public string UserId { get; set; }
///
/// 用户名
///
public string Username { get; set; }
///
- /// 学历
- ///
- public string Education { get; set; }
- ///
/// 邮箱
///
public string Email { get; set; }
///
+ /// 角色id
+ ///
+ public string RoleId { get; set; }
+ ///
/// 角色名称
///
- public string roleName{ get; set; }
- ///
- /// 性别
- ///
- public string Sex { get; set; }
- ///
- /// 毕业院校
- ///
- public string University { get; set; }
+ public string RoleName{ get; set; }
///
/// 联系方式
///
public string Tel { get; set; }
///
- /// 出生日期
- ///
- public string Brithday { get; set; }
- ///
- /// 籍贯
- ///
- public string Native { get; set; }
- ///
- /// 居住地
- ///
- public string Address { get; set; }
- ///
- /// 入职日期
- ///
- public string Hiredate { get; set; }
- ///
/// 是否管理员 0否 1是
///
public string IsAdmin { get; set; }
}
+
+
}
diff --git a/langguanApi/Model/Entity/UserEntity.cs b/langguanApi/Model/Entity/UserEntity.cs
index 799dc71..d79a11f 100644
--- a/langguanApi/Model/Entity/UserEntity.cs
+++ b/langguanApi/Model/Entity/UserEntity.cs
@@ -19,7 +19,7 @@ namespace langguanApi.Model.Entity
///
/// 角色id
///
- public string roleId { get; set; }
+ public string RoleId { get; set; }
///
/// 邮箱
///
diff --git a/langguanApi/Service/RoleService.cs b/langguanApi/Service/RoleService.cs
index fbb7924..7f62785 100644
--- a/langguanApi/Service/RoleService.cs
+++ b/langguanApi/Service/RoleService.cs
@@ -141,5 +141,18 @@ namespace langguanApi.Service
var list = (await base.GetListWithExp(exp)).ToList();
return list;
}
+
+ #region 用户管理角色相关
+ ///
+ /// 根据id获取角色信息
+ ///
+ ///
+ ///
+ public async Task GetRoleById(string roleId)
+ {
+ return await base.GetAsync(roleId);
+ }
+ #endregion
+
}
}
diff --git a/langguanApi/Service/UserService.cs b/langguanApi/Service/UserService.cs
index c13a2c5..a34892c 100644
--- a/langguanApi/Service/UserService.cs
+++ b/langguanApi/Service/UserService.cs
@@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc.Filters;
using MongoDB.Bson.IO;
using MongoDB.Driver.Linq;
using Org.BouncyCastle.Asn1.Ocsp;
+using System.Collections.Generic;
using System.Linq.Expressions;
namespace langguanApi.Service
@@ -83,18 +84,6 @@ namespace langguanApi.Service
current = input.current
}, exp);
}
- ///更新用户信息
- public async Task UpdateUser(UserUpdate user)
- {
- var entity = user.Adapt();
- entity.Password = StringHelper.MD5Encrypt32(user.Password);
- await base.UpdateAsync(user.Id, entity);
- }
- ///删除用户
- public async Task DeleteUser(string id)
- {
- await base.RemoveAsync(id);
- }
#region 用户管理
///
@@ -136,24 +125,18 @@ namespace langguanApi.Service
}
#endregion
#region 组织数据
-
- if (!string.IsNullOrEmpty(input.BrithdayDateTime))
- {
- input.Brithday = Convert.ToDateTime(input.BrithdayDateTime);
- }
- if (!string.IsNullOrEmpty(input.HiredateDateTime))
- {
- input.Hiredate = Convert.ToDateTime(input.HiredateDateTime);
- }
- input.IsEnable = 1;
var entity = input.Adapt();
+ entity.Phone = input.Tel;
+ if (!string.IsNullOrEmpty(input.Password))
+ {
+ entity.Password = StringHelper.MD5Encrypt32(input.Password);
+ }
#endregion
#region 保存数据
if (entity != null && string.IsNullOrEmpty(entity.Id))
{
await base.CreateAsync(entity);
}
-
#endregion
}
catch (Exception ex)
@@ -172,12 +155,13 @@ namespace langguanApi.Service
return new ApiResult { code = 0, msg = "保存用户信息成功" };
}
///
- ///
+ /// 获取用户列表
///
///
///
public async Task GetUserList(UserQueryDto input)
{
+ List list = new List();
try
{
#region 组织查询条件
@@ -186,25 +170,40 @@ namespace langguanApi.Service
{
exp = filter => filter.Username.Contains(input.Username);
}
+ if (!string.IsNullOrEmpty(input.Tel))
+ {
+ exp = filter => filter.Phone.Contains(input.Tel);
+ }
#endregion
-
#region 获取数据
var result = await base.GetListWithExp(exp);//获取人员信息
- var roleList = await _roleService.GetRoleListByIds(result.Select(s => s.roleId).ToList());
+ if (result.Count() > 0)
+ {
+ result = result.Skip((input.PageIndex - 1) * input.PageSize).Take(input.PageSize);
+ }
+ else
+ {
+ return new ApiResult { code = 0, data = null, msg = "没有用户信息" };
+ }
+ var roleList = await _roleService.GetRoleListByIds(result.Select(s => s.RoleId).ToList());//根据角色Id获取角色信息
#endregion
+ //md5解密
+ //var password = StringHelper.MD5Decrypt32(item.Password);
#region 组装返回数据
- List list = new List();
foreach (var item in result)
{
- list.Add(new UserListDto
+ list.Add(new UserDetailDto
{
+ UserId = item.Id,
Username = item.Username,
Email = item.Email,
- roleName = roleList.FirstOrDefault(s => s.Id == item.roleId)?.RoleName,
+ RoleId = item.RoleId,
+ RoleName = roleList.FirstOrDefault(s => s.Id == item.RoleId)?.RoleName,
+ IsAdmin = item.IsAdmin == 0 ? "男" : "女",
+ Tel = item.Phone,
});
}
#endregion
- return new ApiResult { code = 0, data = list };
}
catch (Exception ex)
{
@@ -219,6 +218,161 @@ namespace langguanApi.Service
{
_logger.LogInformation($"获取用户列表参数:userQuery:{Newtonsoft.Json.JsonConvert.SerializeObject(input)}");
}
+ return new ApiResult { code = 0, data = list };
+ }
+
+ ///
+ /// 根据用户Id获取用户信息
+ ///
+ ///
+ ///
+ public async Task GetUserById(string userId)
+ {
+ UserDetailDto userDetail = null;
+ try
+ {
+ #region 校验数据
+ if (string.IsNullOrEmpty(userId))
+ {
+ return new ApiResult { code = 1, msg = "获取用户信息失败,userId非空" };
+ }
+ #endregion
+ #region 获取数据
+ var user = await base.GetAsync(userId);//根据userId获取用户信息
+ if (user == null)
+ {
+ return new ApiResult { code = 1, msg = "用户不存在" };
+ }
+ var role = await _roleService.GetRoleById(user.RoleId);//根据角色Id获取角色信息
+ if (role == null)
+ {
+ return new ApiResult { code = 1, msg = "角色不存在" };
+ }
+ #endregion
+ #region 组织需要展示的数据
+ userDetail = new UserDetailDto
+ {
+ UserId = user.Id,
+ Username = user.Username,
+ Email = user.Email,
+ RoleId = user.RoleId,
+ RoleName = role.RoleName,
+ IsAdmin = user.IsAdmin == 0 ? "男" : "女",
+ Tel = user.Phone
+ };
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError($"获取用户信息出现异常,请求参数:userId:{userId}," +
+ $"请求接口:'api/User/GetUserById'," +
+ $"异常信息:{ex.Message}," +
+ $"异常位置:{ex.StackTrace}"
+ );
+ return new ApiResult { code = 1, msg = "获取用户信息失败" };
+ }
+ finally
+ {
+ _logger.LogInformation($"获取用户信息参数:userId:{userId}");
+ }
+ return new ApiResult { code = 0, data = userDetail };
+ }
+
+
+ //更新用户信息方法
+ public async Task UpdateUser(UserDto input)
+ {
+ try
+ {
+ #region 校验参数
+ if (string.IsNullOrEmpty(input.Id))
+ {
+ return new ApiResult { code = 1, msg = "用户Id不能为空" };
+ }
+ if (string.IsNullOrEmpty(input.Username))
+ {
+ return new ApiResult { code = 1, msg = "用户名不能为空" };
+ }
+ if (string.IsNullOrEmpty(input.Tel))
+ {
+ return new ApiResult { code = 1, msg = "手机号不能为空" };
+ }
+ if (string.IsNullOrEmpty(input.Email))
+ {
+ return new ApiResult { code = 1, msg = "邮箱不能为空" };
+ }
+ if (string.IsNullOrEmpty(input.roleId))
+ {
+ return new ApiResult { code = 1, msg = "角色不能为空" };
+ }
+ #endregion
+ #region 组织数据
+ var userEntity = input.Adapt();
+ userEntity.Phone = input.Tel;
+ if (!string.IsNullOrEmpty(input.Password))
+ {
+ userEntity.Password = StringHelper.MD5Encrypt32(input.Password);
+ }
+ #endregion
+ #region 更新数据
+ await base.UpdateAsync(input.Id, userEntity);//更新用户信息
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError($"更新用户信息出现异常,请求参数:user:{Newtonsoft.Json.JsonConvert.SerializeObject(input)}," +
+ $"请求接口:'api/User/UpdateUser'," +
+ $"异常信息:{ex.Message}," +
+ $"异常位置:{ex.StackTrace}"
+ );
+ return new ApiResult { code = 1, msg = "更新用户信息失败" };
+ }
+ finally
+ {
+ _logger.LogInformation($"更新用户信息参数:user:{Newtonsoft.Json.JsonConvert.SerializeObject(input)}");
+ }
+ return new ApiResult { code = 0, msg = "更新用户信息成功" };
+ }
+
+ ///
+ /// 作废用户的方法
+ ///
+ ///
+ ///
+ public async Task DeleteUser(string userId)
+ {
+ try
+ {
+ #region 校验数据
+ if (string.IsNullOrEmpty(userId))
+ {
+ return new ApiResult { code = 1, msg = "用户Id不能为空" };
+ }
+ #endregion
+ #region 更新数据
+ var user = await base.GetAsync(userId);//根据userId获取用户信息
+ if (user == null)
+ {
+ return new ApiResult { code = 1, msg = "用户不存在" };
+ }
+ user.IsDelete = true;
+ await base.UpdateAsync(userId, user);//更新用户信息
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError($"删除用户信息出现异常,请求参数:userId:{userId}," +
+ $"请求接口:'api/User/DeleteUser'," +
+ $"异常信息:{ex.Message}," +
+ $"异常位置:{ex.StackTrace}"
+ );
+ return new ApiResult { code = 1, msg = "删除用户信息失败" };
+ }
+ finally
+ {
+ _logger.LogInformation($"删除用户信息参数:userId:{userId}");
+ }
+ return new ApiResult { code = 0, msg = "删除用户信息成功" };
}
#endregion
}