Compare commits
No commits in common. "3a529cb55f7b409fa2e018c9d1b8096527947c9f" and "519c3949b5043102fcb9010fab701bef43489d20" have entirely different histories.
3a529cb55f
...
519c3949b5
|
|
@ -115,11 +115,11 @@
|
|||
"DockerConfig": {
|
||||
"Prot": "5192:5192",
|
||||
"AspNetCoreEnv": "",
|
||||
"LastEnvName": "29dev",
|
||||
"LastEnvName": "marking001",
|
||||
"RemoveDaysFromPublished": "10",
|
||||
"WorkDir": "",
|
||||
"Volume": "",
|
||||
"Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Development -e TZ=Asia/Shanghai",
|
||||
"Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Production -e TZ=Asia/Shanghai",
|
||||
"EnvPairList": [
|
||||
{
|
||||
"EnvName": "29dev",
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ using Mapster;
|
|||
using Masuit.Tools;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using MiniExcelLibs;
|
||||
using MiniExcelLibs.Attributes;
|
||||
using MiniExcelLibs.OpenXml;
|
||||
using SqlSugar;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
|
@ -213,11 +211,9 @@ namespace WGShare.API.Controllers.Frontend
|
|||
RoomNum = room.RoomNum,
|
||||
BeginTime = beginDatetime.ToString("yyyy-MM-dd HH:mm:ss"),
|
||||
EndTime = endDaetime.ToString("yyyy-MM-dd HH:mm:ss"),
|
||||
Users = new List<UserBehavior>(),
|
||||
Signin = new List<SignInListRecordExcelDto>()
|
||||
Users = new List<UserBehavior>()
|
||||
};
|
||||
|
||||
#region 计算入会次数、累计参会时长
|
||||
foreach (var userRecord in groupByUser)
|
||||
{
|
||||
if (userRecord.IsNullOrEmpty())
|
||||
|
|
@ -266,22 +262,6 @@ namespace WGShare.API.Controllers.Frontend
|
|||
SumTime = sumTime,
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 计算签到次数
|
||||
var signins = await _sqlSugar.Queryable<UserSignInRecord>()
|
||||
.InnerJoin<User>((u, us) => u.UId == us.Id)
|
||||
.Where((u, us) => u.RoomNum == roomNum && u.CreateTime >= beginDatetime && u.CreateTime <= endDaetime)
|
||||
.Select((u, us) => new SignInListRecordExcelDto
|
||||
{
|
||||
Account = us.Account,
|
||||
SignInTime = u.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
|
||||
UserName = us.UserName,
|
||||
SignInName = u.SignInName
|
||||
})
|
||||
.ToListAsync();
|
||||
value.Signin.AddRange(signins);
|
||||
#endregion
|
||||
|
||||
using var stream = new MemoryStream();
|
||||
|
||||
|
|
|
|||
|
|
@ -658,33 +658,5 @@ namespace WGShare.API.Controllers.Frontend
|
|||
return _ossHelper.GetAccessFileUrl(fileUrl);
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 获取签到列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("sign-in")]
|
||||
public async Task<List<UserSignInListDto>> GetSignInList()
|
||||
{
|
||||
var list = await _sqlSugar.Queryable<UserSignInList>()
|
||||
.Where(x => x.UId == UId)
|
||||
.ToListAsync();
|
||||
|
||||
return list.Adapt<List<UserSignInListDto>>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 提交签到
|
||||
/// </summary>
|
||||
/// <param name="list"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("sign-in")]
|
||||
public async Task SignIn([FromBody] List<UserSignInRecordDto> list)
|
||||
{
|
||||
var entitys = list.Adapt<List<UserSignInRecord>>();
|
||||
entitys.ForEach(x => x.UId = UId);
|
||||
|
||||
await _sqlSugar.Insertable(entitys).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@ using WGShare.Domain.FriendlyException;
|
|||
using WGShare.Domain.GeneralModel;
|
||||
using Yitter.IdGenerator;
|
||||
using WGShare.Domain.Enums;
|
||||
using Microsoft.AspNetCore.Routing.Template;
|
||||
using MiniExcelLibs.OpenXml;
|
||||
|
||||
namespace WGShare.API.Controllers.Frontend
|
||||
{
|
||||
|
|
@ -117,45 +115,6 @@ namespace WGShare.API.Controllers.Frontend
|
|||
.UpdateColumns(x => new { x.Account, x.UserName, x.RoleId, x.Year, x.Subject }).ExecuteCommandAsync() > 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户签到名单列表
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("signs")]
|
||||
public async Task<List<UserSignInListDto>> GetUserSignInList([FromQuery] string uid)
|
||||
{
|
||||
var list = await _sqlSugar.Queryable<UserSignInList>().Where(x => x.UId == uid)
|
||||
.ToListAsync();
|
||||
|
||||
return list.Adapt<List<UserSignInListDto>>();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户签到列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut("signs")]
|
||||
public async Task ModifySignList([FromQuery] string uid, [FromBody] List<UserSignInListDto> signInList)
|
||||
{
|
||||
var entities = signInList.Adapt<List<UserSignInList>>();
|
||||
|
||||
using (var tran = _sqlSugar.AsTenant().UseTran())
|
||||
{
|
||||
await _sqlSugar.Deleteable<UserSignInList>().Where(x => x.UId == uid).ExecuteCommandAsync();
|
||||
|
||||
if (!entities.IsNullOrEmpty())
|
||||
{
|
||||
var stor = await _sqlSugar.Storageable(entities).ToStorageAsync();
|
||||
await stor.AsInsertable.ExecuteCommandAsync(); //不存在插入
|
||||
await stor.AsUpdateable.UpdateColumns(x => x.SignInName).ExecuteCommandAsync(); //存在更新
|
||||
}
|
||||
tran.CommitTran();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更改密码
|
||||
/// </summary>
|
||||
|
|
@ -286,79 +245,6 @@ namespace WGShare.API.Controllers.Frontend
|
|||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取签到绑定列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("signin-list")]
|
||||
public async Task<string> GetSignInBinding()
|
||||
{
|
||||
var userWithSign = await _sqlSugar.Queryable<User>()
|
||||
.InnerJoin<Role>((u, r) => u.RoleId == r.Id)
|
||||
.LeftJoin<UserSignInList>((u, r, s) => u.Id == s.UId)
|
||||
.Where((u, r, s) => u.IsDelete == false && TenantId == u.TenantId)
|
||||
.Select((u, r, s) => new SignInListExcelDto
|
||||
{
|
||||
UId = u.Id,
|
||||
Account = u.Account,
|
||||
RoleId = u.RoleId,
|
||||
RoleName = r.RoleName,
|
||||
SignInName = s.SignInName,
|
||||
UserName = u.UserName,
|
||||
}).ToListAsync();
|
||||
|
||||
var value = new Dictionary<string, object>()
|
||||
{
|
||||
["Users"] = userWithSign
|
||||
};
|
||||
|
||||
using var stream = new MemoryStream();
|
||||
await MiniExcel.SaveAsByTemplateAsync(stream, $@"{AppDomain.CurrentDomain.BaseDirectory}signInListImportTemplate.xlsx", value);
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
var fileName = $@"excel/签到绑定导入-{DateTime.Now.ToString("MMddHHmmss")}.xlsx";
|
||||
_ossHelper.UploadWithExpireTime(fileName, stream, 10);
|
||||
return _ossHelper.GetAccessFileUrl(fileName, 5);
|
||||
}
|
||||
|
||||
|
||||
[HttpPost("import/signin-list")]
|
||||
public async Task<IActionResult> ImportSigninList([FromForm] IFormFile file)
|
||||
{
|
||||
using var stream = file.OpenReadStream();
|
||||
var rows = stream.Query<SignInListExcelDto>().ToList();
|
||||
rows.RemoveAll(x => x == null || string.IsNullOrWhiteSpace(x.Account) || string.IsNullOrWhiteSpace(x.UId));
|
||||
if (rows.IsNullOrEmpty())
|
||||
{
|
||||
throw Oops.Oh("无有效数据,请检查文件数据!");
|
||||
}
|
||||
|
||||
// 获取已存在用户Id
|
||||
var existsUIds = await _sqlSugar.Queryable<User>()
|
||||
.Where(x => x.IsDelete == false).Select(x => x.Id).ToListAsync();
|
||||
// 去除不存在用户Id
|
||||
rows.RemoveAll(x => !existsUIds.Contains(x.UId));
|
||||
|
||||
var delUids = rows.Select(x => x.UId).Distinct().ToList();
|
||||
|
||||
|
||||
var entities = rows.Where(x => !string.IsNullOrWhiteSpace(x.SignInName)).Adapt<List<UserSignInList>>();
|
||||
|
||||
using (var tran = _sqlSugar.AsTenant().UseTran())
|
||||
{
|
||||
await _sqlSugar.Deleteable<UserSignInList>().Where(x => delUids.Contains(x.UId)).ExecuteCommandAsync();
|
||||
|
||||
var store = await _sqlSugar.Storageable(entities)
|
||||
.WhereColumns(x => new { x.UId, x.SignInName })
|
||||
.ToStorageAsync();
|
||||
|
||||
|
||||
await store.AsInsertable.ExecuteCommandAsync();
|
||||
await store.AsUpdateable.UpdateColumns(x => x.SignInName).ExecuteCommandHasChangeAsync();
|
||||
|
||||
tran.CommitTran();
|
||||
}
|
||||
|
||||
return Ok((isSuccess: true, url: "", msg: "导入成功"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,9 +35,6 @@
|
|||
<None Update="Reference\AgoraIO.dll">
|
||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="signInListImportTemplate.xlsx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="WGShare.API.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
|
|
|||
|
|
@ -303,19 +303,6 @@
|
|||
<param name="fileId">文件Id</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetSignInList">
|
||||
<summary>
|
||||
获取签到列表
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.SignIn(System.Collections.Generic.List{WGShare.Domain.DTOs.User.UserSignInRecordDto})">
|
||||
<summary>
|
||||
提交签到
|
||||
</summary>
|
||||
<param name="list"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.UserController.GetUserList(System.String,System.Nullable{System.Boolean},WGShare.Domain.GeneralModel.PagedBaseDto)">
|
||||
<summary>
|
||||
获取用户列表
|
||||
|
|
@ -338,19 +325,6 @@
|
|||
<param name="inputDTO"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.UserController.GetUserSignInList(System.String)">
|
||||
<summary>
|
||||
获取用户签到名单列表
|
||||
</summary>
|
||||
<param name="uid"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.UserController.ModifySignList(System.String,System.Collections.Generic.List{WGShare.Domain.DTOs.User.UserSignInListDto})">
|
||||
<summary>
|
||||
修改用户签到列表
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.UserController.ModifyPassword(WGShare.Domain.DTOs.User.UserChangePwdDTO)">
|
||||
<summary>
|
||||
更改密码
|
||||
|
|
@ -379,12 +353,6 @@
|
|||
<param name="file"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.UserController.GetSignInBinding">
|
||||
<summary>
|
||||
获取签到绑定列表
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WGShare.API.Controllers.PublicController">
|
||||
<summary>
|
||||
前后端共用接口
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -1,5 +1,4 @@
|
|||
using MiniExcelLibs.Attributes;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -16,8 +15,6 @@ namespace WGShare.Domain.DTOs.Room
|
|||
public string EndTime { get; set; }
|
||||
|
||||
public List<UserBehavior> Users { get; set; }
|
||||
|
||||
public List<SignInListRecordExcelDto> Signin { get; set; }
|
||||
}
|
||||
|
||||
public class UserBehavior
|
||||
|
|
@ -30,15 +27,4 @@ namespace WGShare.Domain.DTOs.Room
|
|||
public int JoinCount { get; set; }
|
||||
public int SumTime { get; set; }
|
||||
}
|
||||
|
||||
public class SignInListRecordExcelDto
|
||||
{
|
||||
|
||||
public string Account { get; set; }
|
||||
|
||||
public string UserName { get; set; }
|
||||
|
||||
public string SignInTime { get; set; }
|
||||
public string SignInName { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
using MiniExcelLibs.Attributes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WGShare.Domain.DTOs.User
|
||||
{
|
||||
/// <summary>
|
||||
/// 导出账号签到用户列表
|
||||
/// </summary>
|
||||
public class SignInListExcelDto
|
||||
{
|
||||
|
||||
[ExcelColumnName("UId")]
|
||||
public string UId { get; set; }
|
||||
|
||||
|
||||
[ExcelColumnName("账号")]
|
||||
public string Account { get; set; }
|
||||
|
||||
[ExcelColumnName("账号名称")]
|
||||
public string UserName{ get; set; }
|
||||
|
||||
public string RoleId { get; set; }
|
||||
[ExcelColumnName("角色")]
|
||||
public string RoleName { get; set; }
|
||||
[ExcelColumnName("绑定签到人姓名")]
|
||||
|
||||
public string SignInName { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
using MiniExcelLibs.Attributes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WGShare.Domain.DTOs.User
|
||||
{
|
||||
public class UserSignInListDto
|
||||
{
|
||||
|
||||
public string Id { get; set; }
|
||||
|
||||
public string UId { get; set; }
|
||||
|
||||
public string SignInName { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WGShare.Domain.DTOs.User
|
||||
{
|
||||
public class UserSignInRecordDto
|
||||
{
|
||||
|
||||
|
||||
public string SignInName { get; set; }
|
||||
|
||||
public string RoomNum { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
using AngleSharp.Text;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WGShare.Domain.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// 签到名单
|
||||
///</summary>
|
||||
[SugarTable("user_signin_list")]
|
||||
public class UserSignInList
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
|
||||
public string Id { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "uid")]
|
||||
public string UId { get; set; }
|
||||
|
||||
|
||||
[SugarColumn(ColumnName = "signin_name")]
|
||||
public string SignInName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// 默认值: CURRENT_TIMESTAMP
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "create_time", IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "modify_time", IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
|
||||
public DateTime ModifyTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
using AngleSharp.Text;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WGShare.Domain.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// 签到名单记录
|
||||
///</summary>
|
||||
[SugarTable("user_signin_record")]
|
||||
public class UserSignInRecord
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
|
||||
public string Id { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "uid")]
|
||||
public string UId { get; set; }
|
||||
|
||||
|
||||
[SugarColumn(ColumnName = "signin_name")]
|
||||
public string SignInName { get; set; }
|
||||
|
||||
[SugarColumn(ColumnName = "room_num")]
|
||||
public string RoomNum { get; set; }
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// 默认值: CURRENT_TIMESTAMP
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "create_time", IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
|
||||
public DateTime CreateTime { get; set; }
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue