feat 生日券功能,自动上传消费数据,提醒访客到期

This commit is contained in:
2025-12-09 11:35:05 +08:00
parent 323eb367d0
commit c1462a03dc
60 changed files with 1451 additions and 409 deletions

View File

@@ -26,5 +26,17 @@ namespace Dlhis.Entity.Basic.Entity
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "部门名称")]
public string Name { get; set; }
/// <summary>
/// 部门编码
/// </summary>
[SugarColumn(IsNullable = true, ColumnDescription = "一级部门编码")]
public string DepartmentNoFirst { get; set; }
/// <summary>
/// 部门编码
/// </summary>
[SugarColumn(IsNullable = true, ColumnDescription = "二级部门编码")]
public string DepartmentNoSecond { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Basic.Entity;
[SugarTable(TableName = "OutsourceWhiteList", TableDescription = "外包人员白名单")]
public class OutsourceWhiteListEntity : SugarBaseEntity, ISoftDeleted
{
public string UserCode { get; set; }
public bool IsDeleted { get; set; }
}

View File

@@ -2,7 +2,7 @@
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities;
namespace Dlhis.Entity.Canteen.Entities.EMealVoucher;
/// <summary>
/// 电子餐券明细

View File

@@ -1,7 +1,7 @@
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities;
namespace Dlhis.Entity.Canteen.Entities.EMealVoucher;
/// <summary>
/// 电子餐券明细QrCode

View File

@@ -2,7 +2,7 @@
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities;
namespace Dlhis.Entity.Canteen.Entities.EMealVoucher;
/// <summary>
/// 餐券

View File

@@ -1,28 +0,0 @@
using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities;
/// <summary>
/// 用户余额表
/// </summary>
[SugarTable(TableName = "UserBalanceTmp", TableDescription = "用户余额表")]
public class UserBalanceTmpEntity : SugarBaseEntity, IVersion
{
/// <summary>
/// 学工号
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "学工号", UniqueGroupNameList = new[] { "idx_UserBalances_useCode" })]
public string UserCode { get; set; }
/// <summary>
/// 余额
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "余额")]
public decimal Balance { get; set; }
[SugarColumn(IsNullable = false)]
public int Version { get; set; }
}

View File

@@ -0,0 +1,35 @@
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities;
/// <summary>
/// 用户消费上传记录表
/// </summary>
[SugarTable(TableName = "UserBalanceUploadRecords", TableDescription = "用户消费上传记录表")]
public class UserBalanceUploadRecordEntity : SugarBaseEntity
{
/// <summary>
/// 年份
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "年份")]
public int Year { get; set; }
/// <summary>
/// 月份
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "月份")]
public int Month { get; set; }
/// <summary>
/// 学工号
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "学工号", UniqueGroupNameList = new[] { "idx_UserBalances_useCode" })]
public string UserCode { get; set; }
/// <summary>
/// 消费
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "余额")]
public decimal Cost { get; set; }
}

View File

@@ -4,25 +4,30 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
using SqlSugar.DbConvert;
namespace Dlhis.Entity.Canteen.Entities;
namespace Dlhis.Entity.Canteen.Entities.Voucher;
/// <summary>
/// 券
/// </summary>
[SugarTable("Tickets", TableDescription = "券")]
public class TicketEntity : SugarBaseEntity, ITenantId, IVersion
[SugarTable("Vouchers", TableDescription = "券")]
public class VoucherEntity : SugarBaseEntity, IVersion
{
/// <summary>
/// 券唯一标识
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "券唯一标识")]
public string No { get; set; }
/// <summary>
/// 获取日期时间
/// </summary>
public DateTime ClaimDateTime { get; set; }
/// <summary>
/// 类型
/// </summary>
[SugarColumn(IsNullable = false, ColumnDataType = "varchar(50)", ColumnDescription = "券类型", SqlParameterDbType = typeof(EnumToStringConvert))]
public TicketEnumType Type { get; set; }
/// <summary>
/// 工号
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "工号")]
public string UserCode { get; set; }
public VoucherEnumType Type { get; set; }
/// <summary>
/// 初始余额
@@ -37,10 +42,10 @@ public class TicketEntity : SugarBaseEntity, ITenantId, IVersion
public decimal Balance { get; set; }
/// <summary>
/// 消费码
/// 描述
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "消费码")]
public string QrCode { get; set; }
[SugarColumn(IsNullable = true, ColumnDescription = "描述")]
public string Description { get; set; }
/// <summary>
/// 备注
@@ -48,8 +53,5 @@ public class TicketEntity : SugarBaseEntity, ITenantId, IVersion
[SugarColumn(IsNullable = true, ColumnDescription = "备注")]
public string Remark { get; set; }
public string TenantId { get; set; }
/// <inheritdoc />
public int Version { get; set; }
}

View File

@@ -0,0 +1,20 @@
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities.Voucher;
[SugarTable(TableName = "VoucherQrCodes")]
public class VoucherQrCodeEntity : SugarBaseEntity
{
/// <summary>
/// 券No
/// </summary>
[SugarColumn(ColumnDescription = "券No")]
public string VoucherNo { get; set; }
/// <summary>
/// 二维码
/// </summary>
[SugarColumn(ColumnDescription = "二维码", UniqueGroupNameList = new[] { "idx_EMealVoucherDetailQrCode_qrcode" })]
public string QrCode { get; set; }
}

View File

@@ -0,0 +1,63 @@
using Kurisu.AspNetCore.DataAccess.SqlSugar;
using SqlSugar;
namespace Dlhis.Entity.Canteen.Entities.Voucher;
/// <summary>
/// 券发放时候关联的用户信息
/// </summary>
[SugarTable(TableName = "VoucherUserInfos")]
public class VoucherUserInfoEntity : SugarBaseEntity
{
/// <summary>
/// 券码
/// </summary>
[SugarColumn(IsNullable = false)]
public string VoucherNo { get; set; }
/// <summary>
/// 工号
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "工号")]
public string UserCode { get; set; }
/// <summary>
/// 成本中心
/// </summary>
[SugarColumn(IsNullable = false)]
public string CostId { get; set; }
/// <summary>
/// 人事范围
/// </summary>
[SugarColumn(IsNullable = false)]
public string Werks { get; set; }
/// <summary>
/// 厂区
/// </summary>
[SugarColumn(IsNullable = false)]
public string Factory { get; set; }
/// <summary>
/// 当前部门
/// </summary>
[SugarColumn(IsNullable = false)]
public string DepartmentNo { get; set; }
/// <summary>
/// 一级部门
/// </summary>
[SugarColumn(IsNullable = false)]
public string DepartmentNoFirst { get; set; }
/// <summary>
/// 二级部门
/// </summary>
[SugarColumn(IsNullable = true)]
public string DepartmentNoSecond { get; set; }
[SugarColumn(IsNullable = true, ColumnDataType = "varchar(255)")]
public string Signature { get; set; }
}

View File

@@ -6,7 +6,7 @@ namespace Dlhis.Entity.Canteen.Enums;
/// 券类型
/// </summary>
[Description("券类型")]
public enum TicketEnumType
public enum VoucherEnumType
{
/// <summary>
/// 生日券

View File

@@ -9,19 +9,23 @@ namespace Dlhis.Entity.Device.Entities;
/// 设备权限(手动)
/// </summary>
[SugarTable(TableName = "DevicePermissionManually")]
public class DevicePermissionManuallyEntity : SugarBaseEntity, ISoftDeleted , ITenantId
public class DevicePermissionManuallyEntity : SugarBaseEntity, ISoftDeleted, ITenantId
{
[DeviceCode]
[SugarColumn(IsNullable = false)]
public Guid DeviceCode { get; set; }
[SugarColumn(IsNullable = false)]
public string UserNo { get; set; }
/// <summary>
/// 有效时间
/// </summary>
[SugarColumn(IsNullable = true)]
public DateTime? ValidDateTime { get; set; }
public bool IsDeleted { get; set; }
public string TenantId { get; set; }
}

View File

@@ -49,5 +49,17 @@ public class FactorySettingEntity : SugarBaseEntity, ITenantId
[SugarColumn(IsNullable = true, ColumnDataType = "time", ColumnDescription = "工作网格编辑限制时间")]
public TimeOnly? WorkGridSetLimit { get; set; }
/// <summary>
/// 是否启用生日电子餐券
/// </summary>
[SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用生日电子餐券", DefaultValue = "0")]
public bool EnableBirthdayVoucher { get; set; }
/// <summary>
/// 允许消费的厂区
/// </summary>
[SugarColumn(ColumnDescription = "允许消费的厂区")]
public string EnableUseBirthdayVoucherFactories { get; set; }
public string TenantId { get; set; }
}