Commit 58086a24 by ryun

Merge branch 'feature/宜宾高县安全' into release/v23.2.19高县版

parents 1efc93a4 5259e6dc
...@@ -49,7 +49,7 @@ public class AccountController : Controller ...@@ -49,7 +49,7 @@ public class AccountController : Controller
/// { /// {
/// "logintype": 2, /// "logintype": 2,
/// "account": "admin", /// "account": "admin",
/// "password": "1111", /// "password": "e10adc3949ba59abbe56e057f20f883e",
/// "appname": "string", /// "appname": "string",
/// "device": "web" /// "device": "web"
/// } /// }
...@@ -75,6 +75,37 @@ public ApiResponse<JwtToken> Login([FromBody] LoginRequest request) ...@@ -75,6 +75,37 @@ public ApiResponse<JwtToken> Login([FromBody] LoginRequest request)
new Claim(JwtClaimTypes.AppName, request.AppName ?? ""), new Claim(JwtClaimTypes.AppName, request.AppName ?? ""),
new Claim(JwtClaimTypes.Device, request.Device ?? ""), new Claim(JwtClaimTypes.Device, request.Device ?? ""),
new Claim(JwtClaimTypes.Department, user.Department ?? ""), new Claim(JwtClaimTypes.Department, user.Department ?? ""),
new Claim(JwtClaimTypes.QuickLogin, EQuickLogin.NO.ToString()),
};
var jwtToken = JwtTokenHelper.GenerateToken(claims, _options.ExpirationMinutes);
return new ApiResponse<JwtToken>(ResponseType.OK, jwtToken);
}
/// <summary>
/// 快速登录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("quick/login")]
[HttpPost]
[AllowAnonymous]
public ApiResponse<JwtToken> QuickLogin([FromBody] ResetPwdRequest request)
{
var user = _userService.QuickLogin(request.TargetUserId, request.CurrentUserId, request.Password);
if (user == null)
return new ApiResponse<JwtToken>(ResponseType.Fail, "用户不存在");
var claims = new Claim[]
{
new Claim(JwtClaimTypes.Id, user.UserID.ToString()),
new Claim(JwtClaimTypes.Login, user.Login),
new Claim(JwtClaimTypes.RealName, user.RealName),
new Claim(JwtClaimTypes.Mail, user.Mail??""),
new Claim(JwtClaimTypes.AppName, request.AppName ?? ""),
new Claim(JwtClaimTypes.Device, request.Device ?? ""),
new Claim(JwtClaimTypes.Department, user.Department ?? ""),
new Claim(JwtClaimTypes.QuickLogin, EQuickLogin.YES.ToString()),
}; };
var jwtToken = JwtTokenHelper.GenerateToken(claims, _options.ExpirationMinutes); var jwtToken = JwtTokenHelper.GenerateToken(claims, _options.ExpirationMinutes);
...@@ -119,6 +150,16 @@ public ApiResponse SelfInfo() ...@@ -119,6 +150,16 @@ public ApiResponse SelfInfo()
{ {
var userid = _claim.GetUserId(); var userid = _claim.GetUserId();
var user = _userService.GetUser(userid); var user = _userService.GetUser(userid);
var userClaim = _claim.GetUserClaim();
// 如果用户是快捷登录的,则不需要重置密码
var quickLogin = userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.QuickLogin)?.Value ?? "";
if (quickLogin.Equals(EQuickLogin.YES.ToString(), StringComparison.OrdinalIgnoreCase))
{
user.IsInitialPassword = (int)InitialPassword.修改;
}
user.Role = _roleService.GetUserRole(user.UserID); user.Role = _roleService.GetUserRole(user.UserID);
user.Hospital = _hospitalService.GetUserHopital(user.UserID); user.Hospital = _hospitalService.GetUserHopital(user.UserID);
...@@ -147,59 +188,12 @@ public ApiResponse<UserResponse> UpdateSelf([CustomizeValidator(RuleSet = "Self" ...@@ -147,59 +188,12 @@ public ApiResponse<UserResponse> UpdateSelf([CustomizeValidator(RuleSet = "Self"
/// <returns></returns> /// <returns></returns>
[Route("list")] [Route("list")]
[HttpPost] [HttpPost]
public ApiResponse<List<UserResponse>> List([FromBody] UserRequest request) public ApiResponse<List<UserResponse>> List([FromBody] UserListRequest request)
{ {
var userList = _userService.GetUserList(_claim.GetUserId(), request.Role); var userList = _userService.GetUserList(_claim.GetUserId(), request.Role);
return new ApiResponse<List<UserResponse>>(ResponseType.OK, "ok", userList); return new ApiResponse<List<UserResponse>>(ResponseType.OK, "ok", userList);
} }
///// <summary>
///// 新增用户
///// </summary>
///// <param name="request"></param>
///// <returns></returns>
//[Route("insert")]
//[HttpPost]
//public ApiResponse<UserResponse> Insert([CustomizeValidator(RuleSet = "Insert"), FromBody] UserRequest request)
//{
// var userId = _claim.GetUserId();
// var user = _userService.Insert(request, userId);
// user.Role = request.Role;
// return new ApiResponse<UserResponse>(ResponseType.OK, user);
//}
///// <summary>
///// 新增用户
///// </summary>
///// <param name="request"></param>
///// <returns></returns>
//[Route("delete")]
//[HttpPost]
//public ApiResponse Delete([CustomizeValidator(RuleSet = "Delete"), FromBody] UserRequest request)
//{
// return _userService.Delete(request.ID);
//}
///// <summary>
///// 删除用户
///// </summary>
///// <param name="request"></param>
///// <returns></returns>
//[Route("update")]
//[HttpPost]
//public ApiResponse<UserResponse> Update([CustomizeValidator(RuleSet = "Update"), FromBody] UserRequest request)
//{
// var userId = _claim.GetUserId();
// int[] roleArray = new int[] { _options.NurseRole, _options.DirectorRole, _options.SpecialRole, _options.OfficeRole };
// var roles = _roleService.GetUserRole(userId);
// var isAgainAdmin = roles != null ? roleArray.Contains(roles.First().Type ?? 0) : false;
// var user = _userService.Update(request, isAgainAdmin);
// user.Role = request.Role;
// return new ApiResponse<UserResponse>(ResponseType.OK, user);
//}
/// <summary> /// <summary>
/// 修改用户密码 /// 修改用户密码
/// </summary> /// </summary>
...@@ -282,16 +276,17 @@ public ApiResponse<JwtToken> DemoUsers(int userId) ...@@ -282,16 +276,17 @@ public ApiResponse<JwtToken> DemoUsers(int userId)
} }
/// <summary> /// <summary>
/// 修改用户密码 /// 重置密码
/// </summary> /// </summary>
/// <param name="userId">用户id</param> /// <param name="userId">重置目标用户id</param>
/// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Route("reset/{userId}")] [Route("reset/{userId}")]
[HttpPost] [HttpPost]
public ApiResponse<UserResponse> Password(int userId) public ApiResponse<UserResponse> Password(int userId, [FromBody] ResetPwdRequest request)
{ {
var loginUserId = _claim.GetUserId(); var loginUserId = _claim.GetUserId();
var user = _userService.ResetPwd(userId, loginUserId); var user = _userService.ResetPwd(userId, loginUserId, request.Password);
return new ApiResponse<UserResponse>(ResponseType.OK, user); return new ApiResponse<UserResponse>(ResponseType.OK, user);
} }
...@@ -316,6 +311,16 @@ public ApiResponse SelfInfos([FromBody] UserRequest request) ...@@ -316,6 +311,16 @@ public ApiResponse SelfInfos([FromBody] UserRequest request)
user.IsAgainAdmin = user.Role != null ? roleArray.Contains(user.Role.First().Type ?? 0) : false; user.IsAgainAdmin = user.Role != null ? roleArray.Contains(user.Role.First().Type ?? 0) : false;
else else
user.IsAgainAdmin = user.Role != null ? roleArray.Contains(user.Role.First(t => t.RoleID == request.Role).Type ?? 0) : false; user.IsAgainAdmin = user.Role != null ? roleArray.Contains(user.Role.First(t => t.RoleID == request.Role).Type ?? 0) : false;
var userClaim = _claim.GetUserClaim();
// 如果用户是快捷登录的,则不需要重置密码
var quickLogin = userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.QuickLogin)?.Value ?? "";
if (quickLogin.Equals(EQuickLogin.YES.ToString(), StringComparison.OrdinalIgnoreCase))
{
user.IsInitialPassword = (int)InitialPassword.修改;
}
return new ApiResponse(ResponseType.OK, user); return new ApiResponse(ResponseType.OK, user);
} }
......
...@@ -99,6 +99,7 @@ public static class JwtClaimTypes ...@@ -99,6 +99,7 @@ public static class JwtClaimTypes
public const string AppName = "appname"; public const string AppName = "appname";
public const string Device = "device"; public const string Device = "device";
public const string Department = "department"; public const string Department = "department";
public const string QuickLogin = "quicklogin";
} }
public static class Consts public static class Consts
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
}, },
"AppConnection": { "AppConnection": {
//"PerformanceConnectionString": "server=112.124.13.17;database=db_performance;uid=suvalue;pwd=suvalue2016;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;", //"PerformanceConnectionString": "server=112.124.13.17;database=db_performance;uid=suvalue;pwd=suvalue2016;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;",
"PerformanceConnectionString": "server=192.168.18.166;database=db_test_beiliu;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;" "PerformanceConnectionString": "server=192.168.18.166;database=db_performance_screen;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;"
//"PerformanceConnectionString": "server=116.62.245.55;database=db_performance;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;" //"PerformanceConnectionString": "server=116.62.245.55;database=db_performance;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;"
}, },
"Application": { "Application": {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
{ {
"logintype": 2, "logintype": 2,
"account": "admin", "account": "admin",
"password": "1111", "password": "e10adc3949ba59abbe56e057f20f883e",
"appname": "string", "appname": "string",
"device": "web" "device": "web"
} }
...@@ -24,6 +24,13 @@ ...@@ -24,6 +24,13 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AccountController.QuickLogin(Performance.DtoModels.ResetPwdRequest)">
<summary>
快速登录
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Refresh"> <member name="M:Performance.Api.Controllers.AccountController.Refresh">
<summary> <summary>
刷新登录JWT TOKEN 刷新登录JWT TOKEN
...@@ -43,7 +50,7 @@ ...@@ -43,7 +50,7 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AccountController.List(Performance.DtoModels.UserRequest)"> <member name="M:Performance.Api.Controllers.AccountController.List(Performance.DtoModels.UserListRequest)">
<summary> <summary>
用户列表 用户列表
</summary> </summary>
...@@ -82,11 +89,12 @@ ...@@ -82,11 +89,12 @@
<param name="userId"></param> <param name="userId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AccountController.Password(System.Int32)"> <member name="M:Performance.Api.Controllers.AccountController.Password(System.Int32,Performance.DtoModels.ResetPwdRequest)">
<summary> <summary>
修改用户密码 重置密码
</summary> </summary>
<param name="userId">用户id</param> <param name="userId">重置目标用户id</param>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AccountController.SelfInfos(Performance.DtoModels.UserRequest)"> <member name="M:Performance.Api.Controllers.AccountController.SelfInfos(Performance.DtoModels.UserRequest)">
......
...@@ -14,6 +14,11 @@ ...@@ -14,6 +14,11 @@
返回数据。 返回数据。
</summary> </summary>
</member> </member>
<member name="F:Performance.DtoModels.AppConst.InitPwd">
<summary>
初始密码
</summary>
</member>
<member name="T:Performance.DtoModels.AppSettings.AppConnection"> <member name="T:Performance.DtoModels.AppSettings.AppConnection">
<summary> <summary>
数据库连接字符串 数据库连接字符串
...@@ -826,6 +831,31 @@ ...@@ -826,6 +831,31 @@
保底绩效 保底绩效
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.PerComputeData.SheetType">
<summary>
sheet模板类型
</summary>
</member>
<member name="P:Performance.DtoModels.PerComputeData.UnitType">
<summary>
核算单元类别 (医生组/护理组)
</summary>
</member>
<member name="P:Performance.DtoModels.PerComputeData.AccountingUnit">
<summary>
核算单元名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerComputeData.TypeName">
<summary>
列头类型名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerComputeData.CellValue">
<summary>
单元格value
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.UnitType"> <member name="P:Performance.DtoModels.PerData.UnitType">
<summary> <summary>
核算单元类别 (医生组/护理组) 核算单元类别 (医生组/护理组)
...@@ -2449,6 +2479,21 @@ ...@@ -2449,6 +2479,21 @@
<member name="P:Performance.DtoModels.ReportRequest.AccountingUnit"> <member name="P:Performance.DtoModels.ReportRequest.AccountingUnit">
<summary> 科室 </summary> <summary> 科室 </summary>
</member> </member>
<member name="P:Performance.DtoModels.ResetPwdRequest.Password">
<summary>
操作人密码
</summary>
</member>
<member name="P:Performance.DtoModels.ResetPwdRequest.CurrentUserId">
<summary>
操作人密码
</summary>
</member>
<member name="P:Performance.DtoModels.ResetPwdRequest.TargetUserId">
<summary>
目标登录人,希望登录的账号ID
</summary>
</member>
<member name="P:Performance.DtoModels.SecondAuditRequest.SecondId"> <member name="P:Performance.DtoModels.SecondAuditRequest.SecondId">
<summary> 二次绩效Id </summary> <summary> 二次绩效Id </summary>
</member> </member>
...@@ -2481,6 +2526,11 @@ ...@@ -2481,6 +2526,11 @@
提交类型 1 模板提交 2 其他提交 提交类型 1 模板提交 2 其他提交
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.UserListRequest.Role">
<summary>
角色
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.RealName"> <member name="P:Performance.DtoModels.UserRequest.RealName">
<summary> <summary>
真实名称 真实名称
...@@ -4203,6 +4253,11 @@ ...@@ -4203,6 +4253,11 @@
用户科室 用户科室
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.UserIdentity.IsInitialPassword">
<summary>
初始密码 1 初始 2 改过
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearResponse.MaxRange"> <member name="P:Performance.DtoModels.WorkyearResponse.MaxRange">
<summary> <summary>
最大工龄范围(小于) 最大工龄范围(小于)
......
...@@ -9188,6 +9188,11 @@ ...@@ -9188,6 +9188,11 @@
核算序号 核算序号
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.sys_user.IsInitialPassword">
<summary>
初始密码 1 初始 2 改过
</summary>
</member>
<member name="T:Performance.EntityModels.sys_user_hospital"> <member name="T:Performance.EntityModels.sys_user_hospital">
<summary> <summary>
......
namespace Performance.DtoModels
{
public class AppConst
{
/// <summary>
/// 初始密码
/// </summary>
public const string InitPwd = "123456";
}
}
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net5.0</TargetFramework>
...@@ -10,11 +10,6 @@ ...@@ -10,11 +10,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="PerExcel\PerComputeData.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Performance.EntityModels\Performance.EntityModels.csproj" /> <ProjectReference Include="..\Performance.EntityModels\Performance.EntityModels.csproj" />
<ProjectReference Include="..\Performance.Infrastructure\Performance.Infrastructure.csproj" /> <ProjectReference Include="..\Performance.Infrastructure\Performance.Infrastructure.csproj" />
</ItemGroup> </ItemGroup>
......
namespace Performance.DtoModels
{
public class ResetPwdRequest
{
/// <summary>
/// 操作人密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 操作人密码
/// </summary>
public int CurrentUserId { get; set; }
/// <summary>
/// 目标登录人,希望登录的账号ID
/// </summary>
public int TargetUserId { get; set; }
public string AppName { get; set; }
public string Device { get; set; }
}
}
namespace Performance.DtoModels
{
public class UserListRequest
{
/// <summary>
/// 角色
/// </summary>
public int Role { get; set; }
}
}
using FluentValidation; using System;
using System; using FluentValidation;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
...@@ -74,7 +71,7 @@ public UserRequestValidator() ...@@ -74,7 +71,7 @@ public UserRequestValidator()
{ {
action(); action();
RuleFor(x => x.RoleArr).NotNull().NotEmpty(); RuleFor(x => x.RoleArr).NotNull().NotEmpty();
RuleFor(x => x.Password).NotNull().NotEmpty().Length(4, 20); RuleFor(x => x.Password).NotNull().NotEmpty().Length(4, 64);
RuleFor(x => x.HosIDArray).NotNull().NotEmpty().Must(f => f.Length > 0); RuleFor(x => x.HosIDArray).NotNull().NotEmpty().Must(f => f.Length > 0);
}); });
...@@ -95,7 +92,7 @@ public UserRequestValidator() ...@@ -95,7 +92,7 @@ public UserRequestValidator()
RuleSet("Self", () => RuleSet("Self", () =>
{ {
RuleFor(x => x.Password).Length(4, 20); RuleFor(x => x.Password).Length(4, 64);
//RuleFor(x => x.Mobile).Must((pre) => //RuleFor(x => x.Mobile).Must((pre) =>
//{ //{
// if (!string.IsNullOrEmpty(pre)) // if (!string.IsNullOrEmpty(pre))
......
...@@ -25,7 +25,10 @@ public class UserIdentity ...@@ -25,7 +25,10 @@ public class UserIdentity
public string Department { get; set; } public string Department { get; set; }
public List<HospitalResponse> Hospital { get; set; } public List<HospitalResponse> Hospital { get; set; }
public List<RoleResponse> Role { get; set; } public List<RoleResponse> Role { get; set; }
/// <summary>
/// 初始密码 1 初始 2 改过
/// </summary>
public int IsInitialPassword { get; set; }
public UserIdentity() public UserIdentity()
{ {
Hospital = new List<HospitalResponse>(); Hospital = new List<HospitalResponse>();
......
...@@ -11,7 +11,6 @@ public class UserResponse ...@@ -11,7 +11,6 @@ public class UserResponse
public int CreateUser { get; set; } public int CreateUser { get; set; }
public string RealName { get; set; } public string RealName { get; set; }
public string Login { get; set; } public string Login { get; set; }
public string Password { get; set; }
public string Mail { get; set; } public string Mail { get; set; }
public string Mobile { get; set; } public string Mobile { get; set; }
public int States { get; set; } public int States { get; set; }
......
...@@ -83,5 +83,9 @@ public class sys_user ...@@ -83,5 +83,9 @@ public class sys_user
/// 核算序号 /// 核算序号
/// </summary> /// </summary>
public string UnitCode { get; set; } public string UnitCode { get; set; }
/// <summary>
/// 初始密码 1 初始 2 改过
/// </summary>
public int IsInitialPassword { get; set; }
} }
} }
...@@ -92,3 +92,14 @@ public enum UnitType ...@@ -92,3 +92,14 @@ public enum UnitType
[Description("行政工勤")] [Description("行政工勤")]
行政工勤 = 12, 行政工勤 = 12,
} }
public enum InitialPassword
{
初始 = 1,
修改 = 2,
}
public enum EQuickLogin
{
YES = 1,
NO = 2,
}
using System.Security.Cryptography;
using System.Text;
namespace Performance.Infrastructure
{
public class PwdHelper
{
/// <summary>
/// 一次加密不加盐
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5(string password)
{
return MD5Encrypt(password);
}
/// <summary>
/// 一次加密加盐
/// </summary>
/// <param name="password"></param>
/// <param name="salt"></param>
/// <returns></returns>
public static string MD5AndSalt(string password, string salt = "Suvalue")
{
return MD5Encrypt(password + salt);
}
/// <summary>
/// 两次加密加盐
/// </summary>
/// <param name="password"></param>
/// <param name="salt"></param>
/// <returns></returns>
public static string MD5AndSalt2(string password, string salt = "Suvalue")
{
return MD5Encrypt(MD5Encrypt(password) + salt);
}
/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
private static string MD5Encrypt(string password)
{
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(password));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));//转化为小写的32进制
}
return sBuilder.ToString();
}
}
}
\ No newline at end of file
...@@ -1353,13 +1353,16 @@ public void SaveQueryRole(int hospitalId, int userId, List<Dictionary<string, st ...@@ -1353,13 +1353,16 @@ public void SaveQueryRole(int hospitalId, int userId, List<Dictionary<string, st
{ {
var json = JsonHelper.Serialize(item); var json = JsonHelper.Serialize(item);
var data = JsonHelper.Deserialize<per_employee>(json); var data = JsonHelper.Deserialize<per_employee>(json);
string pwd = item.ContainsKey("Password") ? item["Password"] : "";
if (hospital.IsOwnerQuery == 1) if (hospital.IsOwnerQuery == 1)
{ {
var isNewRole = !string.IsNullOrEmpty(data.PersonnelNumber?.Trim()) && !string.IsNullOrEmpty(item["Password"]); var isNewRole = !string.IsNullOrEmpty(data.PersonnelNumber?.Trim()) && !string.IsNullOrEmpty(pwd);
var isRepeat = users.FirstOrDefault(t => t.Login == data.PersonnelNumber?.Trim()); var isRepeat = users.FirstOrDefault(t => t.Login == data.PersonnelNumber?.Trim());
if (isRepeat != null) if (isRepeat != null)
{ {
isRepeat.Password = item["Password"]; isRepeat.Password = PwdHelper.MD5AndSalt2(pwd);
updateUsers.Add(isRepeat); updateUsers.Add(isRepeat);
} }
if (isNewRole && isRepeat == null) if (isNewRole && isRepeat == null)
......
...@@ -559,7 +559,8 @@ private T GetCellValue<T>(IRow row, List<string> columns, string key) ...@@ -559,7 +559,8 @@ private T GetCellValue<T>(IRow row, List<string> columns, string key)
var data = (from t1 in pdata var data = (from t1 in pdata
join t2 in tdata join t2 in tdata
on t1.PersonnelNumber equals t2.PersonnelNumber into temp on t1.PersonnelNumber equals t2.PersonnelNumber into temp
from t in temp.DefaultIfEmpty() orderby t1.Id descending from t in temp.DefaultIfEmpty()
orderby t1.Id descending
select new select new
{ {
PersonnelNumber = t1.PersonnelNumber, PersonnelNumber = t1.PersonnelNumber,
...@@ -590,7 +591,7 @@ select new ...@@ -590,7 +591,7 @@ select new
Tag5 = t?.Tag5, Tag5 = t?.Tag5,
}).Distinct()?.ToList(); }).Distinct()?.ToList();
if (data == null || !data.Any()) return (result,null); if (data == null || !data.Any()) return (result, null);
var users = new List<sys_user>(); var users = new List<sys_user>();
if (hos?.IsOwnerQuery == 1) if (hos?.IsOwnerQuery == 1)
...@@ -613,7 +614,8 @@ select new ...@@ -613,7 +614,8 @@ select new
select new HandsonCellData(conf.Alias, fst.Value)).ToList(); select new HandsonCellData(conf.Alias, fst.Value)).ToList();
if (hos?.IsOwnerQuery == 1) if (hos?.IsOwnerQuery == 1)
{ {
var password = users.FirstOrDefault(w => w.Login == item.PersonnelNumber && w.Department == item.AccountingUnit)?.Password ?? ""; //var password = users.FirstOrDefault(w => w.Login == item.PersonnelNumber && w.Department == item.AccountingUnit)?.Password ?? "";
var password = "";
cells.Add(new HandsonCellData("密码", password)); cells.Add(new HandsonCellData("密码", password));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment