This commit is contained in:
parent
4306e03fe6
commit
aadc59e405
|
|
@ -52,6 +52,7 @@ namespace WGShare.API.Controllers.Backend
|
||||||
u => u.UserName.Contains(searchDTO.keyword) || u.Account.Contains(searchDTO.keyword) || u.Id.Contains(searchDTO.keyword))
|
u => u.UserName.Contains(searchDTO.keyword) || u.Account.Contains(searchDTO.keyword) || u.Id.Contains(searchDTO.keyword))
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(searchDTO.TenantId), u => u.TenantId == searchDTO.TenantId)
|
.WhereIF(!string.IsNullOrWhiteSpace(searchDTO.TenantId), u => u.TenantId == searchDTO.TenantId)
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(searchDTO.RoleId), u => u.RoleId == searchDTO.RoleId)
|
.WhereIF(!string.IsNullOrWhiteSpace(searchDTO.RoleId), u => u.RoleId == searchDTO.RoleId)
|
||||||
|
.OrderBy(u => u.Id, OrderByType.Desc)
|
||||||
//.Where(u => u.IsDelete == false)
|
//.Where(u => u.IsDelete == false)
|
||||||
.Select((u, r, t) => new User
|
.Select((u, r, t) => new User
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
using Mapster;
|
using Mapster;
|
||||||
|
using Masuit.Tools;
|
||||||
|
using Masuit.Tools.Security;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.VisualBasic;
|
||||||
|
using MiniExcelLibs;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using WGShare.API.Controllers.Basic;
|
using WGShare.API.Controllers.Basic;
|
||||||
using WGShare.API.Helpers;
|
using WGShare.API.Helpers;
|
||||||
using WGShare.Domain.Constant;
|
using WGShare.Domain.Constant;
|
||||||
|
|
@ -18,10 +23,13 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
public class UserController : BasicController
|
public class UserController : BasicController
|
||||||
{
|
{
|
||||||
private readonly ISqlSugarClient _sqlSugar;
|
private readonly ISqlSugarClient _sqlSugar;
|
||||||
|
private readonly OssHelper _ossHelper;
|
||||||
|
|
||||||
public UserController(ISqlSugarClient sqlSugar)
|
public UserController(ISqlSugarClient sqlSugar,
|
||||||
|
OssHelper ossHelper)
|
||||||
{
|
{
|
||||||
this._sqlSugar = sqlSugar;
|
this._sqlSugar = sqlSugar;
|
||||||
|
this._ossHelper = ossHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -131,5 +139,79 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
.Where(x => ids.Contains(x.Id)).ExecuteCommandHasChangeAsync();
|
.Where(x => ids.Contains(x.Id)).ExecuteCommandHasChangeAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Excel 导入用户
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="file"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("import")]
|
||||||
|
public async Task<IActionResult> Import([FromForm] IFormFile file)
|
||||||
|
{
|
||||||
|
|
||||||
|
using var stream = file.OpenReadStream();
|
||||||
|
var rows = stream.Query<UserExcelInputDto>().ToList();
|
||||||
|
if (rows.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
throw Oops.Oh("无有效数据,请检查文件数据!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var accounts = rows.Select(x => x.Account.Trim());
|
||||||
|
var repeatAccount = accounts.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToHashSet();
|
||||||
|
|
||||||
|
// 去除重复账号
|
||||||
|
var distinctAccount = accounts.Except(repeatAccount);
|
||||||
|
|
||||||
|
// 数据库重复账号检查
|
||||||
|
var existsAccount = await _sqlSugar.Queryable<User>()
|
||||||
|
.Where(x => distinctAccount.Contains(x.Account))
|
||||||
|
.Select(x => x.Account)
|
||||||
|
.ToListAsync();
|
||||||
|
if (!existsAccount.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
repeatAccount.UnionWith(existsAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!repeatAccount.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
// 重复账号,返回结果Excel
|
||||||
|
foreach (var row in rows)
|
||||||
|
{
|
||||||
|
if (repeatAccount.Contains(row.Account))
|
||||||
|
{
|
||||||
|
row.ImportResult = "账号重复";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row.ImportResult = "可导入";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//FileStreamResult fileStream = null;
|
||||||
|
using var memoryStream = new MemoryStream();
|
||||||
|
|
||||||
|
memoryStream.SaveAs(rows);
|
||||||
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
var fileName = $@"excel/{Regex.Replace(file.FileName, @"\.(xlsx|xls)$", "", RegexOptions.IgnoreCase)}_导入失败_{DateTime.Now.ToString("HHmmss")}.xlsx";
|
||||||
|
_ossHelper.UploadWithExpireTime(fileName, memoryStream, 10);
|
||||||
|
var fileUrl = _ossHelper.GetAccessFileUrl(fileName, 1);
|
||||||
|
|
||||||
|
return Ok((isSuccess: false, url: fileUrl, msg: "导入失败,请检查原因后重新导入!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
var users = rows.Adapt<List<User>>();
|
||||||
|
users.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.Pwd = x.Pwd.MDString();
|
||||||
|
x.ScreenShareId = UserShareIdHelper.GenerateUnique8DigitNumber();
|
||||||
|
x.TenantId = TenantId;
|
||||||
|
x.RoleId = x.RoleId == "管理员" ? "1" : "2";
|
||||||
|
});
|
||||||
|
|
||||||
|
await _sqlSugar.Insertable(users).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
return Ok((isSuccess: true, url: "", msg: "导入成功"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -281,6 +281,13 @@
|
||||||
<param name="ids"></param>
|
<param name="ids"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.UserController.Import(Microsoft.AspNetCore.Http.IFormFile)">
|
||||||
|
<summary>
|
||||||
|
Excel 导入用户
|
||||||
|
</summary>
|
||||||
|
<param name="file"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:WGShare.API.Controllers.PublicController">
|
<member name="T:WGShare.API.Controllers.PublicController">
|
||||||
<summary>
|
<summary>
|
||||||
前后端共用接口
|
前后端共用接口
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue