feat 租户添加

This commit is contained in:
2024-02-23 16:59:53 +08:00
parent f255a87138
commit e04954f471
7 changed files with 76 additions and 42 deletions

View File

@@ -10,6 +10,6 @@
/// <summary>
/// 营业点
/// </summary>
public Guid BusinessPlaceCode { get; set; }
public Guid? BusinessPlaceCode { get; set; }
}
}

View File

@@ -3,9 +3,7 @@ using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.UnifyResultAndValidation;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.SqlSugar.Attributes;
using Kurisu.SqlSugar.Services;
using Mapster;
@@ -20,7 +18,7 @@ public class DeviceConnectService : IDeviceConnectService
_dbContext = dbContext;
}
public async Task<string> ResigterAsync(DeviceResigterRequest request)
{
var businessPlace = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.CustomCode == request.BusinessCustomCode).FirstAsync();
@@ -55,7 +53,7 @@ public class DeviceConnectService : IDeviceConnectService
public async Task<List<DeviceNotSetBusinessPlaceResponse>> GetNotSetBusinessPlaceDevicesAsync()
{
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
devices = devices.Where(x => x.Funcs.Any(item => item == DeviceFuncEnumType.Meal)).ToList();
devices = devices.Where(x => x.Type == DeviceTypeEnumType.Meal).ToList();
return devices.Adapt<List<DeviceNotSetBusinessPlaceResponse>>();
}
@@ -63,26 +61,31 @@ public class DeviceConnectService : IDeviceConnectService
public async Task SetResigterBusinessPlaceAsync(DeviceSetResigterBusinessPlaceRequest request)
{
var device = await GetEnableDeviceAsync(request.UniqueNo);
if (device.Funcs?.Any(x => x == DeviceFuncEnumType.Meal) != true)
{
throw new UserFriendlyException("当前设备无用餐功能,无法设置");
}
(device.Type != DeviceTypeEnumType.Meal).ThrowIfTrue("非就餐类型设备,无法设置");
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).FirstAsync();
registry.ThrowIfNull($"{request.UniqueNo}的设备注册信息不存在,无法设置营业点");
var businessPlace = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
businessPlace.ThrowIfNull("营业点不存在,无法设置到设备注册信息中");
if (request.BusinessPlaceCode.HasValue)
{
var businessPlace = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
businessPlace.ThrowIfNull("营业点不存在,无法设置到设备注册信息中");
//更新营业点信息
registry.BusinessPlaceCode = businessPlace.Code;
registry.BusinessPlaceCustomCode = businessPlace.CustomCode;
//更新营业点信息
registry.BusinessPlaceCode = businessPlace.Code;
registry.BusinessPlaceCustomCode = businessPlace.CustomCode;
}
else
{
//更新营业点信息
registry.BusinessPlaceCode = null;
registry.BusinessPlaceCustomCode = null;
}
await _dbContext.UpdateAsync(registry);
//todo 通知设备重新获取
}
public async Task HeartbeatAsync(DeviceHeartbeatRequest request)
{
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).FirstAsync();

View File

@@ -8,23 +8,11 @@ namespace Dlhis.Entity.Device.Enums;
[Description("设备功能")]
public enum DeviceFuncEnumType
{
/// <summary>
/// 门禁
/// </summary>
[Description("门禁")]
Door = 1,
/// <summary>
/// 就餐
/// </summary>
[Description("就餐")]
Meal,
/// <summary>
/// 人脸
/// </summary>
[Description("人脸")]
Face,
Face = 1,
/// <summary>
/// 刷卡
@@ -38,22 +26,9 @@ public enum DeviceFuncEnumType
[Description("二维码")]
QrCode,
/// <summary>
/// 布控
/// </summary>
[Description("布控")]
Control,
/// <summary>
/// 考勤
/// </summary>
[Description("考勤")]
Attendance,
/// <summary>
/// 计划
/// </summary>
[Description("计划")]
Schedule
}

View File

@@ -61,6 +61,17 @@ public class TenantsController : ControllerBase
return await _tenantService.GetTenantByCode(code);
}
/// <summary>
/// 保存租户
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("save")]
public async Task SaveTenantAsync(TenantSaveRequest request)
{
await _tenantService.SaveTenantAsync(request);
}
/// <summary>
/// 获取我的管理租户
/// </summary>

View File

@@ -0,0 +1,20 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.Sys.Identity.Request;
public class TenantSaveRequest
{
public int? Id { get; set; }
/// <summary>
/// 代码
/// </summary>
[Required(ErrorMessage = "基地/租户代码不能为空")]
public string Code { get; set; }
/// <summary>
/// 名称
/// </summary>
[Required(ErrorMessage = "基地/租户名称不能为空")]
public string Name { get; set; }
}

View File

@@ -13,4 +13,6 @@ public interface ITenantService : IScopeDependency
Task<TenantResponse> GetTenantByCode(string code);
Task<List<TenantResponse>> GetMyTenantsAsync();
Task SaveTenantAsync(TenantSaveRequest request);
}

View File

@@ -45,6 +45,29 @@ public class TenantService : ITenantService
.FirstAsync();
}
public async Task SaveTenantAsync(TenantSaveRequest request)
{
if (!request.Id.HasValue)
{
await _dbContext.InsertAsync(new TenantEntity
{
Code = request.Code,
Name = request.Name,
});
}
else
{
var entity = await _dbContext.Queryable<TenantEntity>().FirstAsync(x => x.Id == request.Id);
entity.ThrowIfNull("基地/租户信息不存在");
entity.Code = request.Code;
entity.Name = request.Name;
await _dbContext.UpdateAsync(entity);
}
}
public async Task<List<TenantResponse>> GetMyTenantsAsync()
{
var userId = _currentUser.GetIntSubjectId();