优化用户导入

This commit is contained in:
不做码农 2023-05-07 08:51:10 +08:00
parent 5a3e513a6b
commit 7cfa543865
5 changed files with 35 additions and 24 deletions

View File

@ -170,7 +170,7 @@ namespace ZR.Admin.WebApi.Controllers
{
IWebHostEnvironment webHostEnvironment = (IWebHostEnvironment)App.ServiceProvider.GetService(typeof(IWebHostEnvironment));
string sFileName = $"{fileName}模板.xlsx";
string newFileName = Path.Combine(webHostEnvironment.WebRootPath, "importTemplate", sFileName);
string newFileName = Path.Combine(webHostEnvironment.WebRootPath, "ImportTemplate", sFileName);
if (!Directory.Exists(newFileName))
{
@ -179,5 +179,19 @@ namespace ZR.Admin.WebApi.Controllers
MiniExcel.SaveAs(newFileName, list);
return sFileName;
}
/// <summary>
/// 下载指定文件模板
/// </summary>
/// <param name="fileName">下载文件名</param>
/// <returns></returns>
protected (string, string) DownloadImportTemplate(string fileName)
{
IWebHostEnvironment webHostEnvironment = (IWebHostEnvironment)App.ServiceProvider.GetService(typeof(IWebHostEnvironment));
string sFileName = $"{fileName}.xlsx";
string fullPath = Path.Combine(webHostEnvironment.WebRootPath, "ImportTemplate", sFileName);
return (sFileName, fullPath);
}
}
}

View File

@ -174,21 +174,17 @@ namespace ZR.Admin.WebApi.Controllers.System
/// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
/// <returns></returns>
[HttpPost("importData")]
[Log(Title = "用户导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
[Log(Title = "用户导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)]
[ActionPermissionFilter(Permission = "system:user:import")]
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
{
//List<SysUser> users = (List<SysUser>)ExcelHelper<SysUser>.ImportData(formFile.OpenReadStream());
List<SysUser> users = new();
using (var stream = formFile.OpenReadStream())
{
users = stream.Query<SysUser>().ToList();
}
string msg = UserService.ImportUsers(users);
//TODO 业务逻辑,自行插入数据到db
return SUCCESS(users);
return SUCCESS(UserService.ImportUsers(users));
}
/// <summary>
@ -196,15 +192,12 @@ namespace ZR.Admin.WebApi.Controllers.System
/// </summary>
/// <returns></returns>
[HttpGet("importTemplate")]
[Log(Title = "用户模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
[Log(Title = "用户模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)]
[AllowAnonymous]
public IActionResult ImportTemplateExcel()
{
List<SysUser> user = new List<SysUser>();
MemoryStream stream = new MemoryStream();
string sFileName = DownloadImportTemplate(user, stream, "用户列表");
return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"{sFileName}");
(string, string) result = DownloadImportTemplate("user");
return ExportExcel(result.Item2, result.Item1);
}
/// <summary>

Binary file not shown.

View File

@ -77,7 +77,7 @@ namespace ZR.Service.System.IService
/// </summary>
/// <param name="users"></param>
/// <returns></returns>
string ImportUsers(List<SysUser> users);
(string, object, object) ImportUsers(List<SysUser> users);
SysUser Login(LoginBodyDto user);

View File

@ -192,7 +192,7 @@ namespace ZR.Service
/// <returns></returns>
public int DeleteUser(long userid)
{
CheckUserAllowed(new SysUser() { UserId = userid});
CheckUserAllowed(new SysUser() { UserId = userid });
//删除用户与角色关联
UserRoleService.DeleteUserRoleByUserId((int)userid);
// 删除用户与岗位关联
@ -259,8 +259,8 @@ namespace ZR.Service
{
if (!SysUser.IsAdmin(loginUserId))
{
SysUser user = new SysUser() { UserId = userid};
SysUser user = new SysUser() { UserId = userid };
//TODO 判断用户是否有数据权限
}
}
@ -270,7 +270,7 @@ namespace ZR.Service
/// </summary>
/// <param name="users"></param>
/// <returns></returns>
public string ImportUsers(List<SysUser> users)
public (string, object, object) ImportUsers(List<SysUser> users)
{
users.ForEach(x =>
{
@ -278,7 +278,7 @@ namespace ZR.Service
x.Status = "0";
x.DelFlag = "0";
x.Password = "E10ADC3949BA59ABBE56E057F20F883E";
x.Remark = "数据导入";
x.Remark = x.Remark.IsEmpty() ? "数据导入" : x.Remark;
});
var x = Context.Storageable(users)
.SplitInsert(it => !it.Any())
@ -289,7 +289,7 @@ namespace ZR.Service
.ToStorage();
var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4},总共{5}",
string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}",
x.InsertList.Count,
x.UpdateList.Count,
x.ErrorList.Count,
@ -298,14 +298,18 @@ namespace ZR.Service
x.TotalList.Count);
//输出统计
Console.WriteLine(msg);
//输出错误信息
foreach (var item in x.ErrorList)
{
Console.WriteLine("userName为" + item.Item.UserName + " : " + item.StorageMessage);
}
return msg;
foreach (var item in x.IgnoreList)
{
Console.WriteLine("userName为" + item.Item.UserName + " : " + item.StorageMessage);
}
return (msg, x.ErrorList, x.IgnoreList);
}
/// <summary>
@ -326,7 +330,7 @@ namespace ZR.Service
/// <returns></returns>
public void UpdateLoginInfo(LoginBodyDto user, long userId)
{
Update(new SysUser() { LoginIP = user.LoginIP, LoginDate = DateTime.Now, UserId = userId },it => new { it.LoginIP, it.LoginDate });
Update(new SysUser() { LoginIP = user.LoginIP, LoginDate = DateTime.Now, UserId = userId }, it => new { it.LoginIP, it.LoginDate });
}
}
}