优化用户导入
This commit is contained in:
parent
5a3e513a6b
commit
7cfa543865
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
BIN
ZR.Admin.WebApi/wwwroot/ImportTemplate/user.xlsx
Normal file
BIN
ZR.Admin.WebApi/wwwroot/ImportTemplate/user.xlsx
Normal file
Binary file not shown.
@ -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);
|
||||
|
||||
|
||||
@ -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 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user