From 098d7c7e9d81c3d4b728b4be9545b6845a85331b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 14:26:24 +0800 Subject: [PATCH 01/50] =?UTF-8?q?fix=20=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesMenusController.cs | 4 +- .../Request/DishesCategorySaveRequest.cs | 7 + .../Response/BalanceRecordSourceEnumDto.cs | 12 +- .../BusinessShiftMealRelationshipResponse.cs | 39 ++- .../DishesMenusBookingSettingResponse.cs | 19 ++ .../Dishes/Response/DishesResponse.cs | 2 + .../Response/GetDishesMenusBookingResponse.cs | 15 -- .../Dishes/Services/IDishesService.cs | 2 +- .../Services/Implements/DishesService.cs | 17 +- .../Controllers/GainfosController.cs | 35 +-- .../Response/GainfoDetailResponse.cs | 8 - .../Services/Implements/GainfoService.cs | 242 +++--------------- .../Canteen/Entities/DishesCategoryEntity.cs | 10 +- 13 files changed, 110 insertions(+), 302 deletions(-) create mode 100644 Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs delete mode 100644 Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index 31c24e25..71137d10 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -51,7 +51,7 @@ public class DishesMenusController : ControllerBase } /// - /// 菜单明细 + /// 菜单信息明细 /// /// /// @@ -103,7 +103,7 @@ public class DishesMenusController : ControllerBase /// /// [HttpGet("setting")] - public async Task GetDishesMenusBookingSetting([FromQuery] GetDishesMenusBookingRequest request) + public async Task GetDishesMenusBookingSetting([FromQuery] GetDishesMenusBookingRequest request) { return await _dishesService.GetDishesMenusBookingSetting(request); } diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs index 80582418..604dfe68 100644 --- a/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/DishesCategorySaveRequest.cs @@ -6,6 +6,13 @@ public class DishesCategorySaveRequest { public long? Id { get; set; } + + /// + /// 营业点 + /// + [Required] + public Guid BusinessPlaceCode { get; set; } + /// /// PCode /// diff --git a/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs b/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs index 9740a562..8a1570f6 100644 --- a/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs +++ b/Src/Dlhis.Basic/Dishes/Response/BalanceRecordSourceEnumDto.cs @@ -1,11 +1,11 @@ using Dlhis.Entity.Canteen.Enums; using Kurisu.AspNetCore.Utils.Extensions; -namespace Dlhis.Basic.Dishes.Response +namespace Dlhis.Basic.Dishes.Response; + +public class BalanceRecordSourceEnumDto { - public class BalanceRecordSourceEnumDto - { - public BalanceRecordSourceEnumType Type { get; set; } - public string TypeCN => Type.GetDescription(); - } + public BalanceRecordSourceEnumType Type { get; set; } + + public string TypeDesc => Type.GetDescription(); } diff --git a/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs b/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs index 1c40fc37..0b49fd9f 100644 --- a/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/BusinessShiftMealRelationshipResponse.cs @@ -1,29 +1,28 @@ using Dlhis.Entity.Canteen.Enums; using Kurisu.AspNetCore.Utils.Extensions; -namespace Dlhis.Basic.Dishes.Response +namespace Dlhis.Basic.Dishes.Response; + +public class BusinessShiftMealRelationshipResponse { - public class BusinessShiftMealRelationshipResponse - { - /// - /// 餐别Code - /// - public Guid ShiftCode { get; set; } + /// + /// 餐别Code + /// + public Guid ShiftCode { get; set; } - /// - /// 餐别手工号 - /// - public string ShiftCustomCode { get; set; } + /// + /// 餐别手工号 + /// + public string ShiftCustomCode { get; set; } - /// - /// 餐次 - /// - public ShiftEnumType ShiftType { get; set; } + /// + /// 餐次 + /// + public ShiftEnumType ShiftType { get; set; } - /// - /// 餐次CN - /// - public string ShiftTypeCN => ShiftType.GetDescription(); + /// + /// 餐次CN + /// + public string ShiftTypeDesc => ShiftType.GetDescription(); - } } diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs new file mode 100644 index 00000000..8e492bc5 --- /dev/null +++ b/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs @@ -0,0 +1,19 @@ +namespace Dlhis.Basic.Dishes.Response; + +public class DishesMenusBookingSettingResponse +{ + /// + /// 服务端时间 + /// + public DateTime ServerTime { get; set; } + + /// + /// 餐别-餐次信息 + /// + public List ShiftInfos { get; set; } + + /// + /// 支付方式 + /// + public List PayTypes { get; set; } +} diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs index c2b58d8e..8e0f30aa 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesResponse.cs @@ -5,6 +5,8 @@ namespace Dlhis.Basic.Dishes.Response; public class DishesResponse { + public long Id { get; set; } + /// /// 分类 /// diff --git a/Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs b/Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs deleted file mode 100644 index 5473a443..00000000 --- a/Src/Dlhis.Basic/Dishes/Response/GetDishesMenusBookingResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using SqlSugar.DbConvert; -using SqlSugar; - -namespace Dlhis.Basic.Dishes.Response -{ - public class GetDishesMenusBookingResponse - { - public List BusinessShiftMealRelationships { get; set; } - - public DateTime ServiceTime { get; set; } - - public List PayTypes { get; set; } - } -} diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs index 6d6830a9..f9c0fbfd 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesService.cs @@ -12,6 +12,6 @@ public interface IDishesService : IScopeDependency Task GetDishesDetailByIdAsync(long id); - Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request); + Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request); } diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs index 79fc41d6..dbd90b56 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs @@ -8,20 +8,16 @@ using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; -using System.Collections.Generic; -using System.Globalization; namespace Dlhis.Basic.Dishes.Services.Implements; public class DishesService : IDishesService { private readonly IDbContext _dbContext; - private readonly IConfiguration _configuration; - public DishesService(IDbContext dbContext, IConfiguration configuration) + public DishesService(IDbContext dbContext) { _dbContext = dbContext; - _configuration = configuration; } public async Task> GetDishesPageAsync(DishesPageRequest request) @@ -35,6 +31,7 @@ public class DishesService : IDishesService .OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc) .Select((x, category) => new DishesResponse { + Id = x.Id, CurrnetUnits = x.Units.ToString(), CategoryName = category.Name, @@ -61,7 +58,7 @@ public class DishesService : IDishesService } } - public async Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request) + public async Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request) { // 读取最晚订餐的时间 var strDatetime = await _dbContext.Queryable() @@ -72,9 +69,9 @@ public class DishesService : IDishesService DateTime dateTime; DateTime.TryParseExact(strDatetime, "HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out dateTime); - var res = new GetDishesMenusBookingResponse + var res = new DishesMenusBookingSettingResponse { - ServiceTime = dateTime, + ServerTime = dateTime, }; var shift = await _dbContext.Queryable() @@ -94,7 +91,7 @@ public class DishesService : IDishesService .Where(x => x.ShiftCode == shift.ShiftCode) .Select() .ToListAsync(); - res.BusinessShiftMealRelationships = businessShiftMealRelationships; + res.ShiftInfos = businessShiftMealRelationships; if (shift.TenantId == request.Factory) { @@ -108,7 +105,7 @@ public class DishesService : IDishesService } res.PayTypes = payTypes; return res; - } + } public async Task GetDishesDetailByIdAsync(long id) { diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs index a3a881e5..b2b9d996 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs @@ -2,6 +2,7 @@ using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Organization.Services; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -45,39 +46,6 @@ public class GainfosController : ControllerBase return await _gainfoService.GetPageAsync(request); } - /// - /// 档案表修改 - /// - /// - /// - [HttpPut("update")] - public async Task UpdateAsync(GainfoSaveRequest request) - { - await _gainfoService.UpdateAsync(request); - } - - /// - /// 离职 - /// - /// - /// - [HttpPost("dimission")] - public async Task DimissionAsync(GainfoDimissionRequest request) - { - await _gainfoService.DimissionAsync(request); - } - - /// - /// 入职 - /// - /// - /// - [HttpPost("onboarding")] - public async Task OnboardingAsync(GainfoDimissionRequest request) - { - await _gainfoService.OnboardingAsync(request); - } - /// /// 当前人员信息,余额 /// @@ -93,6 +61,7 @@ public class GainfosController : ControllerBase /// /// [HttpPost("face")] + [Transactional] public async Task UploadFaceAsync(GainfoUploadFaceRequest request) { await _gainfoService.UploadFaceAsync(request); diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs index 6a3488fa..af1460b3 100644 --- a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs +++ b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs @@ -1,7 +1,5 @@ using Dlhis.Entity.Basic.Enums; using Kurisu.AspNetCore.Utils.Extensions; -using SqlSugar; -using System.ComponentModel.DataAnnotations; namespace Dlhis.Basic.Organization.Response; @@ -122,17 +120,11 @@ public class GainfoDetailResponse /// public string NationName { get; set; } - /// /// 人脸base64 /// public string Face { get; set; } - /// - /// 在职状态 - /// - public string Status { get; set; } - /// /// 厂区 /// diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index 137700de..9a4ff4c2 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -13,7 +13,6 @@ using Kurisu.SqlSugar.Services; using Mapster; using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.Mvc; -using System.IdentityModel.Tokens.Jwt; using System.Linq.Expressions; namespace Dlhis.Basic.Organization.Services.Implements; @@ -28,7 +27,6 @@ public class GainfoService : IGainfoService private readonly IServiceProvider _serviceProvider; private readonly IConfiguration _configuration; private readonly ILogger _logger; - private readonly IDepartmentService _departmentService; public GainfoService(IGainfoStore gainfoStore, IDbContext dbContext, @@ -48,7 +46,6 @@ public class GainfoService : IGainfoService _serviceProvider = serviceProvider; _configuration = configuration; _logger = logger; - _departmentService = departmentService; } /// @@ -427,13 +424,6 @@ public class GainfoService : IGainfoService OnboardingDate = ga.CreateTime, }) .FirstAsync(); - info.Status = request.Status.GetDescription(); - var trees = await _departmentService.GetTreeAsync(); - var res = trees.First(x => x.No == info.Factory); - if (res != null) - { - info.FactoryName = res.Name; - } if (info != null) { @@ -446,201 +436,6 @@ public class GainfoService : IGainfoService return info; } - public async Task>> GetWeekNumberAsync(WeekNumberRequest request, string token) - { - var werks = GetClaimValueFromToken(token, "tenant"); - - //获取近7天并转化为"yyyy-MM-dd"集合 - DateTime currentDate = DateTime.Now; - List times = new List(); - for (int i = 0; i < 7; i++) - { - DateTime date = currentDate.AddDays(-i); - string dateString = date.ToString("yyyy-MM-dd"); - times.Add(dateString); - } - - var dic = new Dictionary>(); - - foreach (var time in times) - { - var infos = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) - .LeftJoin((ga, de) => ga.DepartmentNo == de.No) - .LeftJoin((ga, de, type) => ga.Native == type.Code && type.Type == "native") - .LeftJoin((ga, de, type, posi) => ga.Position == posi.Name) - .LeftJoin((ga, de, type, posi, type2) => ga.CountryNo == type2.Code && type2.Type == "country") - .LeftJoin((ga, de, type, posi, type2, type3) => ga.Nation == type3.Code && type3.Type == "nation") - .Where(ga => ga.CreateTime.ToString("yyyy-MM-dd") == time && ga.Werks == werks) - .Select((ga, de, type, posi, type2, type3) => new GainfoDetailResponse - { - No = ga.No, - SapNo = ga.SapNo, - Name = ga.Name, - Code = ga.Code, - DepartmentName = de.Name, - IdClass = ga.IdClass, - IdNo = ga.IdNo, - Gender = ga.Gender, - NativeName = type.Display, - Address = ga.Address, - Birthday = ga.Birthday, - Phone = ga.Phone, - Position = ga.Position, - Grade = posi.Grade, - Degree = ga.Degree, - Werks = ga.Werks, - CostId = ga.CostId, - Marital = ga.Marital, - CountryName = type2.Display, - NationName = type3.Display, - }).ToPageListAsync(request); - - dic[time] = infos; - } - return dic; - } - - public async Task>> GetDimissionWeekNumberAsync(WeekNumberRequest request, string token) - { - var werks = GetClaimValueFromToken(token, "tenant"); - - //获取近7天并转化为"yyyy-MM-dd"集合 - DateTime currentDate = DateTime.Now; - List times = new List(); - for (int i = 0; i < 7; i++) - { - DateTime date = currentDate.AddDays(-i); - string dateString = date.ToString("yyyy-MM-dd"); - times.Add(dateString); - } - - var dic = new Dictionary>(); - foreach (var time in times) - { - var infos = await _gainfoStore.Queryable(GainfoStatusEnumType.Leave) - .LeftJoin((ga, de) => ga.DepartmentNo == de.No) - .LeftJoin((ga, de, type) => ga.Native == type.Code && type.Type == "native") - .LeftJoin((ga, de, type, posi) => ga.Position == posi.Name) - .LeftJoin((ga, de, type, posi, type2) => ga.CountryNo == type2.Code && type2.Type == "country") - .LeftJoin((ga, de, type, posi, type2, type3) => ga.Nation == type3.Code && type3.Type == "nation") - .Where(ga => ga.CreateTime.ToString("yyyy-MM-dd") == time && ga.Werks == werks) - .Select((ga, de, type, posi, type2, type3) => new GainfoDetailResponse - { - No = ga.No, - SapNo = ga.SapNo, - Name = ga.Name, - Code = ga.Code, - DepartmentName = de.Name, - IdClass = ga.IdClass, - IdNo = ga.IdNo, - Gender = ga.Gender, - NativeName = type.Display, - Address = ga.Address, - Birthday = ga.Birthday, - Phone = ga.Phone, - Position = ga.Position, - Grade = posi.Grade, - Degree = ga.Degree, - Werks = ga.Werks, - CostId = ga.CostId, - Marital = ga.Marital, - CountryName = type2.Display, - NationName = type3.Display, - }).ToPageListAsync(request); - dic[time] = infos; - } - return dic; - } - - public async Task GetGainfoNumbersAsync(string token) - { - var werks = GetClaimValueFromToken(token, "tenant"); - - //在职人数 - var onlineNumber = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) - .Where(ga => ga.Werks == werks) - .CountAsync(); - - //离职人数 - var offlineNumber = await _gainfoStore.Queryable(GainfoStatusEnumType.Leave) - .Where(ga => ga.Werks == werks) - .CountAsync(); - - //考勤总人数 - var attendanceNumber = onlineNumber + offlineNumber; - - var res = new GainfoGainfoNumbersResponse - { - OnlineNumber = onlineNumber, - OfflineNumber = offlineNumber, - AttendanceNumber = attendanceNumber - }; - return res; - } - - //-------------------------------------------help methods ------------------------------------------------ - - /// - /// 递归获取部门No - /// - /// - /// - private async Task> GetRecursionDepartmentNosAsync(List departmentNos) - { - if (departmentNos.IsEmpty()) - { - return new List(); - } - - var departments = await _dbContext.Queryable().ToListAsync(); - var currentNos = departments.Where(x => departmentNos.Contains(x.No)).ToList(); - - foreach (var item in currentNos) - { - RecursionGetNext(item.No, departments, departmentNos); - } - - return departmentNos.Distinct().ToList(); - - void RecursionGetNext(string currentCode, List departments, List result) - { - var next = departments.Where(x => x.PNo == currentCode).ToList(); - - foreach (var item in next) - { - result.Add(item.No); - RecursionGetNext(item.No, departments, result); - } - } - } - - /// - /// 解析token - /// - /// - /// - /// - /// - private string GetClaimValueFromToken(string token, string claimType) - { - try - { - var handler = new JwtSecurityTokenHandler(); - var jsonToken = handler.ReadToken(token) as JwtSecurityToken; - - if (jsonToken == null) - throw new Exception("Invalid JWT Token"); - - var claimValue = jsonToken.Claims.FirstOrDefault(c => c.Type == claimType)?.Value; - - return claimValue; - } - catch (Exception ex) - { - return null; - } - } - public async Task MigrationAsync(MigrationRequest request) { //档案数据 @@ -677,4 +472,41 @@ public class GainfoService : IGainfoService } } } + + //-------------------------------------------help methods ------------------------------------------------ + + /// + /// 递归获取部门No + /// + /// + /// + private async Task> GetRecursionDepartmentNosAsync(List departmentNos) + { + if (departmentNos.IsEmpty()) + { + return new List(); + } + + var departments = await _dbContext.Queryable().ToListAsync(); + var currentNos = departments.Where(x => departmentNos.Contains(x.No)).ToList(); + + foreach (var item in currentNos) + { + RecursionGetNext(item.No, departments, departmentNos); + } + + return departmentNos.Distinct().ToList(); + + void RecursionGetNext(string currentCode, List departments, List result) + { + var next = departments.Where(x => x.PNo == currentCode).ToList(); + + foreach (var item in next) + { + result.Add(item.No); + RecursionGetNext(item.No, departments, result); + } + } + } + } diff --git a/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs index 0f40049f..7ee20c16 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/DishesCategoryEntity.cs @@ -7,6 +7,12 @@ namespace Dlhis.Entity.Canteen.Entities; [SugarTable(TableName = "DishesCategory", TableDescription = "菜品分类")] public class DishesCategoryEntity : SugarBaseEntity, ITenantId { + /// + /// 营业点 + /// + [SugarColumn(ColumnDescription = "营业点", IsNullable = false)] + public Guid BusinessPlaceCode { get; set; } + /// /// PCode /// @@ -21,13 +27,13 @@ public class DishesCategoryEntity : SugarBaseEntity, ITenantId /// /// 分类名称 /// - [SugarColumn(IsNullable = false, ColumnDescription = "名称")] + [SugarColumn(ColumnDescription = "名称", IsNullable = false)] public string Name { get; set; } /// /// 序号 /// - [SugarColumn(IsNullable = false, ColumnDescription = "序号", DefaultValue = "100")] + [SugarColumn(ColumnDescription = "序号", IsNullable = false, DefaultValue = "100")] public int Sequence { get; set; } = 100; From 84b402538e54890734571e73153c2d29dd1c64f8 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 14:59:21 +0800 Subject: [PATCH 02/50] =?UTF-8?q?fix=20=E8=8F=9C=E5=8D=95=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E5=93=8D=E5=BA=94=E8=B0=83=E6=95=B4,=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic.Api/IDisheMenuApi.cs | 2 +- .../Controller/DishesMenusController.cs | 18 ++++++- .../Dishes/Request/DisheMenuPageRequest.cs | 13 +---- .../Dishes/Response/DishesMenuPageResponse.cs | 34 +------------- .../Dishes/Services/IDishesMenuService.cs | 2 + .../Services/Implements/DishesMenuService.cs | 47 ++++++++++++++++++- .../Canteen/Entities/DishesMenuEntity.cs | 13 ++--- 7 files changed, 69 insertions(+), 60 deletions(-) diff --git a/Src/Dlhis.Basic.Api/IDisheMenuApi.cs b/Src/Dlhis.Basic.Api/IDisheMenuApi.cs index 04482e6a..96b649da 100644 --- a/Src/Dlhis.Basic.Api/IDisheMenuApi.cs +++ b/Src/Dlhis.Basic.Api/IDisheMenuApi.cs @@ -16,6 +16,6 @@ public interface IDisheMenuApi /// /// [Auth] - [Get("/api/dishesMenus/detail")] + [Get("/api/dishesMenus/checkdetail")] Task> GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, int shiftType, string dishesCode); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index 71137d10..b1eb6e49 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -7,6 +7,7 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Basic.Dishes.Controller; @@ -38,6 +39,19 @@ public class DishesMenusController : ControllerBase return await _dishesMenuService.GetDishesMenuPageAsync(request); } + /// + /// 菜单详情 + /// + /// + /// + /// + /// + [HttpGet("detail")] + public async Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date) + { + return await _dishesMenuService.GetDishesMenuDetailAsync(businessPlaceCode, customCode, date); + } + /// /// 菜单保存/更改 /// @@ -51,14 +65,14 @@ public class DishesMenusController : ControllerBase } /// - /// 菜单信息明细 + /// 检查明细 /// /// /// /// /// /// - [HttpGet("detail")] + [HttpGet("checkdetail")] public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode) { return await _dishesMenuService.GetBookingDishesDetailAsync(date, businessPlaceCode, shiftType, dishesCode); diff --git a/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs index 4494f433..9050763f 100644 --- a/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs @@ -1,5 +1,4 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.Core.DataAccess.Dto; +using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Basic.Dishes.Request; @@ -9,14 +8,4 @@ public class DisheMenuPageRequest : PageDto /// 营业点code /// public Guid BusinessPlaceCode { get; set; } - - /// - /// 餐次 - /// - public List ShiftTypes { get; set; } - - /// - /// 分类 - /// - public Guid? CategoryCode { get; set; } } diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs index 3ccf7192..c59836cb 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs @@ -1,11 +1,7 @@ -using Dlhis.Entity.Canteen.Enums; - -namespace Dlhis.Basic.Dishes.Response; +namespace Dlhis.Basic.Dishes.Response; public class DishesMenuPageResponse { - public long? Id { get; set; } - /// /// 菜单编码 /// @@ -20,32 +16,4 @@ public class DishesMenuPageResponse /// 营业日期 /// public DateTime Date { get; set; } - - - /// - /// 餐次 - /// - public ShiftEnumType ShiftType { get; set; } - - - /// - /// 菜品编码 - /// - public string DishesCode { get; set; } - - /// - /// 剩余数量 - /// - public int Number { get; set; } - - - /// - /// 单价 - /// - public decimal? Price { get; set; } - - /// - /// 是否启用 - /// - public bool Enable { get; set; } } diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs index 87c38925..00984ab5 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs @@ -10,6 +10,8 @@ public interface IDishesMenuService : IScopeDependency { Task> GetDishesMenuPageAsync(DisheMenuPageRequest request); + Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date); + Task SaveDishesMenuAsync(DishesMenuSaveRequest request); Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 69ef56fb..c93fd62a 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -9,6 +9,7 @@ using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; using Dlhis.Basic.BusinessPlace.Services; using Dlhis.Basic.Dishes.Dto; +using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Basic.Dishes.Services.Implements; @@ -26,10 +27,53 @@ public class DishesMenuService : IDishesMenuService public async Task> GetDishesMenuPageAsync(DisheMenuPageRequest request) { return await _dbContext.Queryable() - .Select() + .Where(x => x.BusinessPlaceCode == request.BusinessPlaceCode) + .GroupBy(x => new { x.BusinessPlaceCode, x.CustomCode, x.Date }) + .Select(x => new DishesMenuPageResponse + { + BusinessPlaceCode = x.BusinessPlaceCode, + CustomCode = x.CustomCode, + Date = x.Date, + }) .ToPageListAsync(request); } + public async Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date) + { + var data = await _dbContext.Queryable() + .Where(x => x.BusinessPlaceCode == businessPlaceCode) + .ToListAsync(); + + return new DishesMenuSaveRequest + { + BusinessPlaceCode = businessPlaceCode, + Items = new List + { + new() + { + CustomCode = customCode, + Date = date, + ShiftTypes = data.GroupBy(x => x.ShiftType).Select(item => + { + var shiftType = item.Key; + + return new DishesMenuShiftTypeSaveRequest + { + ShiftType = shiftType, + Dishes = item.Select(x => new MenuDishesSaveRequest + { + DishesCode = x.DishesCode, + Number = x.Number, + Price = x.Price, + }).ToList() + }; + + }).ToList() + } + } + }; + } + public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request) { //检验数据 @@ -68,7 +112,6 @@ public class DishesMenuService : IDishesMenuService Type = CanteenApplicaitonTypeEnumType.Booking, Version = 0, - Enable = true, }; }); }); diff --git a/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs index 928c9040..52dffbc0 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs @@ -54,25 +54,18 @@ public class DishesMenuEntity : SugarBaseEntity, ITenantId, IVersion /// public int Number { get; set; } - /// /// 单价 /// public decimal? Price { get; set; } - /// - /// 是否启用 - /// - [SugarColumn(ColumnDataType = "bit", ColumnDescription = "是否启用")] - public bool Enable { get; set; } - - - public string TenantId { get; set; } - /// /// 并发控制 /// public int Version { get; set; } + + + public string TenantId { get; set; } } From 217d9f7770eab9f288a08a1845967603a4bf4cdf Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Tue, 19 Mar 2024 15:26:40 +0800 Subject: [PATCH 03/50] =?UTF-8?q?feat=20=20=E9=85=8D=E9=80=81=E7=82=B9?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BookingAddresController.cs | 47 +++++++++++++++++++ .../MealUser/Request/GetAddresPageRequest.cs | 8 ++++ .../MealUser/Request/SaveAddresRequest.cs | 16 +++++++ .../Response/GetAddresPageResponse.cs | 15 ++++++ .../Services/IBookingAddresService.cs | 12 +++++ .../Implements/BookingAddresService.cs | 47 +++++++++++++++++++ .../Basic/Entity/BookingAddresEntity.cs | 28 +++++++++++ Src/Dlhis.Entity/Common/ApiLogEntity.cs | 3 +- .../CommonJobs/DelApiLogTaskJob.cs | 32 +++++++++++++ Src/Dlhis.ScheduledTask/Packs/JobPack.cs | 5 ++ Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs | 14 ++++++ Src/Dlhis.ScheduledTask/appsettings.json | 1 + 12 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs create mode 100644 Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs create mode 100644 Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs create mode 100644 Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs create mode 100644 Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs create mode 100644 Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs create mode 100644 Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs create mode 100644 Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs diff --git a/Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs b/Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs new file mode 100644 index 00000000..481ea041 --- /dev/null +++ b/Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs @@ -0,0 +1,47 @@ +using Dlhis.Basic.MealUser.Request; +using Dlhis.Basic.MealUser.Response; +using Dlhis.Basic.MealUser.Services; +using Kurisu.Core.DataAccess.Dto; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.MealUser.Controllers +{ + /// + /// 订餐地址 + /// + [Authorize] + [Route("api/[controller]")] + [ApiController] + public class BookingAddresController : ControllerBase + { + private readonly IBookingAddresService _bookingAddresService; + + public BookingAddresController(IBookingAddresService bookingAddresService) + { + _bookingAddresService = bookingAddresService; + } + + /// + /// 地址分页 + /// + /// + /// + [HttpGet("pageAddres")] + public async Task> GetAddresPageAsync([FromQuery] GetAddresPageRequest request) + { + return await _bookingAddresService.GetAddresPageRequest(request); + } + + /// + /// 地址保存 + /// + /// + /// + [HttpPost("saveAddres")] + public async Task SaveAddresAsync(SaveAddresRequest request) + { + await _bookingAddresService.SaveAddresAsync(request); + } + } +} diff --git a/Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs b/Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs new file mode 100644 index 00000000..4f290222 --- /dev/null +++ b/Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs @@ -0,0 +1,8 @@ +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Basic.MealUser.Request +{ + public class GetAddresPageRequest : PageDto + { + } +} diff --git a/Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs b/Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs new file mode 100644 index 00000000..c40c413f --- /dev/null +++ b/Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs @@ -0,0 +1,16 @@ +using SqlSugar; + +namespace Dlhis.Basic.MealUser.Request +{ + public class SaveAddresRequest + { + + public long? Id { get; set; } + + /// + /// 订餐地址 + /// + [SugarColumn(ColumnDescription = "订餐地址")] + public string Addres { get; set; } + } +} diff --git a/Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs b/Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs new file mode 100644 index 00000000..ff35ae8b --- /dev/null +++ b/Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs @@ -0,0 +1,15 @@ +using SqlSugar; + +namespace Dlhis.Basic.MealUser.Response +{ + public class GetAddresPageResponse + { + public long Id { get; set; } + + /// + /// 订餐地址 + /// + public string Addres { get; set; } + + } +} diff --git a/Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs b/Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs new file mode 100644 index 00000000..a8ed76e5 --- /dev/null +++ b/Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs @@ -0,0 +1,12 @@ +using Dlhis.Basic.MealUser.Request; +using Dlhis.Basic.MealUser.Response; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Basic.MealUser.Services +{ + public interface IBookingAddresService : IScopeDependency + { + Task> GetAddresPageRequest(GetAddresPageRequest request); + Task SaveAddresAsync(SaveAddresRequest request); + } +} diff --git a/Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs b/Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs new file mode 100644 index 00000000..d70bee81 --- /dev/null +++ b/Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs @@ -0,0 +1,47 @@ +using Dlhis.Basic.MealUser.Request; +using Dlhis.Basic.MealUser.Response; +using Dlhis.Entity.Basic.Entity; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Extensions; +using Kurisu.SqlSugar.Services; +using Mapster; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.MealUser.Services.Implements +{ + public class BookingAddresService : IBookingAddresService + { + private readonly IDbContext _dbContext; + + public BookingAddresService(IDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task> GetAddresPageRequest(GetAddresPageRequest request) + { + return await _dbContext.Queryable() + .WhereIF(request.Search.IsPresent(),x=>x.Addres.Contains(request.Search)) + .Select() + .ToPageListAsync(request); + } + + public async Task SaveAddresAsync(SaveAddresRequest request) + { + if (!request.Id.HasValue) + { + var entity = request.Adapt(); + await _dbContext.InsertAsync(entity); + } + else + { + var entity = await _dbContext.Queryable() + .Where(x => x.Id == request.Id) + .FirstAsync(); + request.Adapt(entity); + await _dbContext.UpdateAsync(entity); + } + } + } +} diff --git a/Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs new file mode 100644 index 00000000..cb39c6a4 --- /dev/null +++ b/Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs @@ -0,0 +1,28 @@ +using Kurisu.Core.DataAccess.Entity; +using Kurisu.SqlSugar; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Dlhis.Entity.Basic.Entity +{ + /// + /// 就餐地址 + /// + [SugarTable(TableName = "BookingAddres", TableDescription = "就餐地址")] + public class BookingAddresEntity : SugarBaseEntity, ITenantId + { + + + /// + /// 订餐地址 + /// + [SugarColumn(ColumnDescription = "订餐地址")] + public string Addres { get; set; } + + public string TenantId { get; set; } + } +} diff --git a/Src/Dlhis.Entity/Common/ApiLogEntity.cs b/Src/Dlhis.Entity/Common/ApiLogEntity.cs index 70e0849e..e2005b72 100644 --- a/Src/Dlhis.Entity/Common/ApiLogEntity.cs +++ b/Src/Dlhis.Entity/Common/ApiLogEntity.cs @@ -1,6 +1,7 @@ using SqlSugar; using SqlSugar.DbConvert; using Microsoft.Extensions.Logging; +using Kurisu.SqlSugar; namespace Dlhis.Entity.Common; @@ -8,7 +9,7 @@ namespace Dlhis.Entity.Common; /// api日志表 /// [SugarTable(TableName = "Logs", TableDescription = "api日志表")] -public class ApiLogEntity +public class ApiLogEntity { /// /// 时间 diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs new file mode 100644 index 00000000..50126b15 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs @@ -0,0 +1,32 @@ +using Dlhis.Entity.Common; +using Kurisu.SqlSugar.Services; +using SqlSugar; + +namespace Dlhis.ScheduledTask.CommonJobs; + + public class DelApiLogTaskJob +{ + private readonly IDbContext _dbContext; + + public DelApiLogTaskJob(IDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task RunAsync() + { + DateTime now = DateTime.Now; + DateTime todayStart = now.Date; + DateTime threeDaysAgoStart = todayStart.AddDays(-3); + + var logs = await _dbContext.ChangeDb("log") + .Queryable() + .Where(x => x._ts<= threeDaysAgoStart) + .OrderBy(x =>x._ts,OrderByType.Asc) + .ToListAsync(); + + await _dbContext.ChangeDb("log").DeleteReallyAsync(logs); + } +} + + diff --git a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs index bacad69f..429c60cc 100644 --- a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs +++ b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs @@ -64,5 +64,10 @@ public class JobPack : BaseAppPack { TimeZone = TimeZoneInfo.Local }); + //删除前三天前的日志 + RecurringJob.AddOrUpdate("DelApiLogTask", s => s.RunAsync(), "0 0 2 * * *", new RecurringJobOptions + { + TimeZone = TimeZoneInfo.Local + }); } } diff --git a/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs b/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs index 6ba87c85..ae038436 100644 --- a/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs +++ b/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs @@ -25,6 +25,20 @@ public class SqlSugarPack : BaseAppPack InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, + MoreSettings = new ConnMoreSettings + { + DisableNvarchar = true, + } + }, + new ConnectionConfig + { + ConfigId = "log", + + ConnectionString = configuration.GetSection("SqlSugarOptions:LogConnectionString").Value, + DbType = DbType.MySql, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + MoreSettings = new ConnMoreSettings { DisableNvarchar = true, diff --git a/Src/Dlhis.ScheduledTask/appsettings.json b/Src/Dlhis.ScheduledTask/appsettings.json index caf7f060..92cb3b23 100644 --- a/Src/Dlhis.ScheduledTask/appsettings.json +++ b/Src/Dlhis.ScheduledTask/appsettings.json @@ -18,6 +18,7 @@ "SlaveConnectionString": [], "FaceConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=face;charset=utf8mb4;", "IdentityConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=identity;charset=utf8mb4;", + "LogConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=log;charset=utf8mb4;", "Timeout": 30, "SlowSqlTime": 1, "EnableSqlLog": false From 1c7a054ed48b80d0c7617b1d53e2a36272004abf Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 15:53:22 +0800 Subject: [PATCH 04/50] =?UTF-8?q?feat=20=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=90=A5=E4=B8=9A=E7=82=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BusinessPlacesController.cs | 11 +++++++++++ .../BusinessPlace/Services/IBusinessPlaceService.cs | 2 +- .../Services/Implements/BusinessPlaceService.cs | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs index acbc9541..e9a8e1a6 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs @@ -48,6 +48,17 @@ public class BusinessPlacesController : ControllerBase return await _businessPlaceService.GetOpenedListAsync(placeCode); } + /// + /// 获取启用的营业点(所有基地) + /// + /// + [HttpGet("list-all")] + [IgnoreTenant] + public async Task> GetAllList(string tenant) + { + return await _businessPlaceService.GetOpenedListAsync(); + } + /// /// 营业点保存 /// diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs index 7228c137..959cb041 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs @@ -17,7 +17,7 @@ public interface IBusinessPlaceService : IScopeDependency /// 获取可用的营业点 /// /// - Task> GetOpenedListAsync(Guid? placeCode); + Task> GetOpenedListAsync(Guid? placeCode = null, string tenant = null); /// /// 保存营业点 diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs index 79a25b9f..2e91ff5a 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs @@ -49,13 +49,14 @@ public class BusinessPlaceService : IBusinessPlaceService } - public async Task> GetOpenedListAsync(Guid? placeCode) + public async Task> GetOpenedListAsync(Guid? placeCode = null, string tenant = null) { var list = await _dbContext.Queryable() .LeftJoin((x, ps) => x.Code == ps.PlaceCode) .LeftJoin((x, ps, s) => s.Code == ps.ShiftCode) .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) .WhereIF(placeCode.HasValue, x => x.Code == placeCode) + .WhereIF(tenant.IsPresent(), x => x.TenantId == tenant) .Select((x, ps, s) => new BusinessPlaceListResponse { Id = x.Id, From ecd162c7afc1a2128c7caa618fec2910f15b21c3 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 17:51:15 +0800 Subject: [PATCH 05/50] =?UTF-8?q?fix=20=E9=A2=84=E5=AE=9A=E5=B0=B1?= =?UTF-8?q?=E9=A4=90=E9=80=81=E8=B4=A7=E5=9C=B0=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/IBusinessPlaceShiftService.cs | 2 +- .../Implements/BusinessPlaceShiftService.cs | 2 +- .../Controllers/BookingAddresController.cs | 47 ------------------- .../MealUser/Request/GetAddresPageRequest.cs | 8 ---- .../MealUser/Request/SaveAddresRequest.cs | 16 ------- .../Response/GetAddresPageResponse.cs | 15 ------ .../Services/IBookingAddresService.cs | 12 ----- .../Implements/BookingAddresService.cs | 47 ------------------- .../Controllers/BookingAddressController.cs | 46 ++++++++++++++++++ .../BusinessPlacePermissionsController.cs | 4 +- .../Controllers/BusinessPlacesController.cs | 2 +- .../Request/BookingAddressPageRequest.cs | 9 ++++ .../Request/BookingAddressSaveRequest.cs | 11 +++++ .../Request/BusinessPlaceGetByCodeRequest.cs | 2 +- .../Request/BusinessPlaceGetShiftsRequest.cs | 2 +- .../Request/BusinessPlacePageRequest.cs | 2 +- .../BusinessPlacePermissionPageRequest.cs | 2 +- .../BusinessPlacePermissionSaveRequest.cs} | 6 +-- .../Request/BusinessPlaceSaveRequest.cs | 2 +- .../Request/BusinessPlaceSaveShiftRequest.cs | 2 +- .../Request/DispositionDeviceRequest.cs | 2 +- .../Response/BookingAddressPageResponse.cs | 11 +++++ .../Response/BusinessPlaceDto.cs | 0 .../Response/BusinessPlaceListResponse.cs | 0 .../BusinessPlacePermissionPageResponse.cs | 0 .../Response/BusinessPlaceResponse.cs | 0 .../BusinessPlaceWithShiftResponse.cs | 0 .../Response/DeviceCodeNameDetail.cs | 0 .../Response/GetMyResponse.cs | 0 .../Places/Services/IBookingAddressService.cs | 12 +++++ .../IBusinessPlacePermissionsService.cs | 4 +- .../Services/IBusinessPlaceService.cs | 2 +- .../Implements/BookingAddressService.cs | 45 ++++++++++++++++++ .../BusinessPlacePermissionsService.cs | 4 +- .../Implements/BusinessPlaceService.cs | 2 +- .../Basic/Entity/BookingAddresEntity.cs | 28 ----------- .../Basic/Entity/BookingAddressEntity.cs | 20 ++++++++ 37 files changed, 174 insertions(+), 195 deletions(-) delete mode 100644 Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs delete mode 100644 Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs delete mode 100644 Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs delete mode 100644 Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs delete mode 100644 Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs delete mode 100644 Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs create mode 100644 Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs rename Src/Dlhis.Basic/{BusinessPlace => Places}/Controllers/BusinessPlacePermissionsController.cs (92%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Controllers/BusinessPlacesController.cs (98%) create mode 100644 Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs create mode 100644 Src/Dlhis.Basic/Places/Request/BookingAddressSaveRequest.cs rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/BusinessPlaceGetByCodeRequest.cs (88%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/BusinessPlaceGetShiftsRequest.cs (85%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/BusinessPlacePageRequest.cs (94%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/BusinessPlacePermissionPageRequest.cs (69%) rename Src/Dlhis.Basic/{BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs => Places/Request/BusinessPlacePermissionSaveRequest.cs} (68%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/BusinessPlaceSaveRequest.cs (96%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/BusinessPlaceSaveShiftRequest.cs (83%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Request/DispositionDeviceRequest.cs (76%) create mode 100644 Src/Dlhis.Basic/Places/Response/BookingAddressPageResponse.cs rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/BusinessPlaceDto.cs (100%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/BusinessPlaceListResponse.cs (100%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/BusinessPlacePermissionPageResponse.cs (100%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/BusinessPlaceResponse.cs (100%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/BusinessPlaceWithShiftResponse.cs (100%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/DeviceCodeNameDetail.cs (100%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Response/GetMyResponse.cs (100%) create mode 100644 Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs rename Src/Dlhis.Basic/{BusinessPlace => Places}/Services/IBusinessPlacePermissionsService.cs (72%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Services/IBusinessPlaceService.cs (95%) create mode 100644 Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs rename Src/Dlhis.Basic/{BusinessPlace => Places}/Services/Implements/BusinessPlacePermissionsService.cs (93%) rename Src/Dlhis.Basic/{BusinessPlace => Places}/Services/Implements/BusinessPlaceService.cs (99%) delete mode 100644 Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs create mode 100644 Src/Dlhis.Entity/Basic/Entity/BookingAddressEntity.cs diff --git a/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs index e5808234..e8498c95 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/IBusinessPlaceShiftService.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Basic.BusinessShift.Request; using Dlhis.Basic.BusinessShift.Response; diff --git a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs index dbf1d513..ef16b0b8 100644 --- a/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs +++ b/Src/Dlhis.Basic/BusinessShift/Services/Implements/BusinessPlaceShiftService.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Basic.BusinessShift.Request; using Dlhis.Basic.BusinessShift.Response; diff --git a/Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs b/Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs deleted file mode 100644 index 481ea041..00000000 --- a/Src/Dlhis.Basic/MealUser/Controllers/BookingAddresController.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Dlhis.Basic.MealUser.Request; -using Dlhis.Basic.MealUser.Response; -using Dlhis.Basic.MealUser.Services; -using Kurisu.Core.DataAccess.Dto; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Dlhis.Basic.MealUser.Controllers -{ - /// - /// 订餐地址 - /// - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class BookingAddresController : ControllerBase - { - private readonly IBookingAddresService _bookingAddresService; - - public BookingAddresController(IBookingAddresService bookingAddresService) - { - _bookingAddresService = bookingAddresService; - } - - /// - /// 地址分页 - /// - /// - /// - [HttpGet("pageAddres")] - public async Task> GetAddresPageAsync([FromQuery] GetAddresPageRequest request) - { - return await _bookingAddresService.GetAddresPageRequest(request); - } - - /// - /// 地址保存 - /// - /// - /// - [HttpPost("saveAddres")] - public async Task SaveAddresAsync(SaveAddresRequest request) - { - await _bookingAddresService.SaveAddresAsync(request); - } - } -} diff --git a/Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs b/Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs deleted file mode 100644 index 4f290222..00000000 --- a/Src/Dlhis.Basic/MealUser/Request/GetAddresPageRequest.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Kurisu.Core.DataAccess.Dto; - -namespace Dlhis.Basic.MealUser.Request -{ - public class GetAddresPageRequest : PageDto - { - } -} diff --git a/Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs b/Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs deleted file mode 100644 index c40c413f..00000000 --- a/Src/Dlhis.Basic/MealUser/Request/SaveAddresRequest.cs +++ /dev/null @@ -1,16 +0,0 @@ -using SqlSugar; - -namespace Dlhis.Basic.MealUser.Request -{ - public class SaveAddresRequest - { - - public long? Id { get; set; } - - /// - /// 订餐地址 - /// - [SugarColumn(ColumnDescription = "订餐地址")] - public string Addres { get; set; } - } -} diff --git a/Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs b/Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs deleted file mode 100644 index ff35ae8b..00000000 --- a/Src/Dlhis.Basic/MealUser/Response/GetAddresPageResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -using SqlSugar; - -namespace Dlhis.Basic.MealUser.Response -{ - public class GetAddresPageResponse - { - public long Id { get; set; } - - /// - /// 订餐地址 - /// - public string Addres { get; set; } - - } -} diff --git a/Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs b/Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs deleted file mode 100644 index a8ed76e5..00000000 --- a/Src/Dlhis.Basic/MealUser/Services/IBookingAddresService.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Dlhis.Basic.MealUser.Request; -using Dlhis.Basic.MealUser.Response; -using Kurisu.Core.DataAccess.Dto; - -namespace Dlhis.Basic.MealUser.Services -{ - public interface IBookingAddresService : IScopeDependency - { - Task> GetAddresPageRequest(GetAddresPageRequest request); - Task SaveAddresAsync(SaveAddresRequest request); - } -} diff --git a/Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs b/Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs deleted file mode 100644 index d70bee81..00000000 --- a/Src/Dlhis.Basic/MealUser/Services/Implements/BookingAddresService.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Dlhis.Basic.MealUser.Request; -using Dlhis.Basic.MealUser.Response; -using Dlhis.Entity.Basic.Entity; -using Kurisu.AspNetCore.Utils.Extensions; -using Kurisu.Core.DataAccess.Dto; -using Kurisu.SqlSugar.Extensions; -using Kurisu.SqlSugar.Services; -using Mapster; -using Microsoft.AspNetCore.Mvc; - -namespace Dlhis.Basic.MealUser.Services.Implements -{ - public class BookingAddresService : IBookingAddresService - { - private readonly IDbContext _dbContext; - - public BookingAddresService(IDbContext dbContext) - { - _dbContext = dbContext; - } - - public async Task> GetAddresPageRequest(GetAddresPageRequest request) - { - return await _dbContext.Queryable() - .WhereIF(request.Search.IsPresent(),x=>x.Addres.Contains(request.Search)) - .Select() - .ToPageListAsync(request); - } - - public async Task SaveAddresAsync(SaveAddresRequest request) - { - if (!request.Id.HasValue) - { - var entity = request.Adapt(); - await _dbContext.InsertAsync(entity); - } - else - { - var entity = await _dbContext.Queryable() - .Where(x => x.Id == request.Id) - .FirstAsync(); - request.Adapt(entity); - await _dbContext.UpdateAsync(entity); - } - } - } -} diff --git a/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs b/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs new file mode 100644 index 00000000..24b717da --- /dev/null +++ b/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs @@ -0,0 +1,46 @@ +using Dlhis.Basic.Places.Request; +using Dlhis.Basic.Places.Response; +using Dlhis.Basic.Places.Services; +using Kurisu.Core.DataAccess.Dto; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.Places.Controllers; + +/// +/// 订餐地址 +/// +[Authorize] +[Route("api/[controller]")] +[ApiController] +public class BookingAddressController : ControllerBase +{ + private readonly IBookingAddressService _bookingAddresService; + + public BookingAddressController(IBookingAddressService bookingAddresService) + { + _bookingAddresService = bookingAddresService; + } + + /// + /// 地址分页 + /// + /// + /// + [HttpGet("page")] + public async Task> GetAddresPageAsync([FromQuery] BookingAddressPageRequest request) + { + return await _bookingAddresService.GetAddressPageAsync(request); + } + + /// + /// 地址保存 + /// + /// + /// + [HttpPost("save")] + public async Task SaveAddresAsync(BookingAddressSaveRequest request) + { + await _bookingAddresService.SaveAddressAsync(request); + } +} diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs similarity index 92% rename from Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs rename to Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs index 99ac821c..e9bdf549 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Basic.BusinessPlace.Services; using Kurisu.Core.DataAccess.Dto; @@ -52,7 +52,7 @@ public class BusinessPlacePermissionsController /// [Authorize(Roles = "admin,tenant-admin")] [HttpPost("save")] - public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request) + public async Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request) { await _businessPlacePermissionsService.SaveBusinessPlacePermissionAsync(request); } diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs similarity index 98% rename from Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs rename to Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs index e9a8e1a6..249b3774 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Basic.BusinessPlace.Services; using Dlhis.Basic.BusinessShift.Services; diff --git a/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs b/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs new file mode 100644 index 00000000..0afa8bc4 --- /dev/null +++ b/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs @@ -0,0 +1,9 @@ + + +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Basic.Places.Request; + +public class BookingAddressPageRequest : PageDto +{ +} diff --git a/Src/Dlhis.Basic/Places/Request/BookingAddressSaveRequest.cs b/Src/Dlhis.Basic/Places/Request/BookingAddressSaveRequest.cs new file mode 100644 index 00000000..0d1764d3 --- /dev/null +++ b/Src/Dlhis.Basic/Places/Request/BookingAddressSaveRequest.cs @@ -0,0 +1,11 @@ +namespace Dlhis.Basic.Places.Request; + +public class BookingAddressSaveRequest +{ + public long? Id { get; set; } + + /// + /// 订餐地址 + /// + public string Address { get; set; } +} diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceGetByCodeRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs similarity index 88% rename from Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceGetByCodeRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs index 5177dd0c..53ef9a11 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceGetByCodeRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetByCodeRequest.cs @@ -1,7 +1,7 @@ using Kurisu.Core.DataAccess.Dto; using System.ComponentModel.DataAnnotations; -namespace Dlhis.Basic.BusinessPlace.Request +namespace Dlhis.Basic.Places.Request { public class BusinessPlaceGetByCodeRequest : PageDto { diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceGetShiftsRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetShiftsRequest.cs similarity index 85% rename from Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceGetShiftsRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlaceGetShiftsRequest.cs index b2a0715e..fe12c984 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceGetShiftsRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlaceGetShiftsRequest.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Dlhis.Basic.BusinessPlace.Request; +namespace Dlhis.Basic.Places.Request; public class BusinessPlaceGetShiftsRequest { diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePageRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlacePageRequest.cs similarity index 94% rename from Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePageRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlacePageRequest.cs index 0107b3ce..7fe65972 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePageRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlacePageRequest.cs @@ -2,7 +2,7 @@ using Dlhis.Entity.Canteen.Enums; using Kurisu.Core.DataAccess.Dto; -namespace Dlhis.Basic.BusinessPlace.Request; +namespace Dlhis.Basic.Places.Request; public class BusinessPlacePageRequest : PageDto { diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePermissionPageRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionPageRequest.cs similarity index 69% rename from Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePermissionPageRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionPageRequest.cs index 4efbd299..f3cdc557 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlacePermissionPageRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionPageRequest.cs @@ -1,6 +1,6 @@ using Kurisu.Core.DataAccess.Dto; -namespace Dlhis.Basic.BusinessPlace.Request; +namespace Dlhis.Basic.Places.Request; public class BusinessPlacePermissionPageRequest : PageDto { diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs similarity index 68% rename from Src/Dlhis.Basic/BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs index 744ab2da..b6c6b4c1 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/SaveBusinessPlacePermissionRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs @@ -1,8 +1,6 @@ -using SqlSugar; +namespace Dlhis.Basic.Places.Request; -namespace Dlhis.Basic.BusinessPlace.Request; - -public class SaveBusinessPlacePermissionRequest +public class BusinessPlacePermissionSaveRequest { public long? Id { get; set; } diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceSaveRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlaceSaveRequest.cs similarity index 96% rename from Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceSaveRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlaceSaveRequest.cs index 35c7cb27..fc2c7e71 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceSaveRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlaceSaveRequest.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Dlhis.Entity.Canteen.Enums; -namespace Dlhis.Basic.BusinessPlace.Request; +namespace Dlhis.Basic.Places.Request; /// /// 营业点保存参数 diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceSaveShiftRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlaceSaveShiftRequest.cs similarity index 83% rename from Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceSaveShiftRequest.cs rename to Src/Dlhis.Basic/Places/Request/BusinessPlaceSaveShiftRequest.cs index 23fc1140..5bb64cab 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/BusinessPlaceSaveShiftRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlaceSaveShiftRequest.cs @@ -1,4 +1,4 @@ -namespace Dlhis.Basic.BusinessPlace.Request; +namespace Dlhis.Basic.Places.Request; public class BusinessPlaceSaveShiftRequest { diff --git a/Src/Dlhis.Basic/BusinessPlace/Request/DispositionDeviceRequest.cs b/Src/Dlhis.Basic/Places/Request/DispositionDeviceRequest.cs similarity index 76% rename from Src/Dlhis.Basic/BusinessPlace/Request/DispositionDeviceRequest.cs rename to Src/Dlhis.Basic/Places/Request/DispositionDeviceRequest.cs index bf940fca..56b7c5f4 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Request/DispositionDeviceRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/DispositionDeviceRequest.cs @@ -1,4 +1,4 @@ -namespace Dlhis.Basic.BusinessPlace.Request +namespace Dlhis.Basic.Places.Request { public class DispositionDeviceRequest { diff --git a/Src/Dlhis.Basic/Places/Response/BookingAddressPageResponse.cs b/Src/Dlhis.Basic/Places/Response/BookingAddressPageResponse.cs new file mode 100644 index 00000000..9e47928e --- /dev/null +++ b/Src/Dlhis.Basic/Places/Response/BookingAddressPageResponse.cs @@ -0,0 +1,11 @@ +namespace Dlhis.Basic.Places.Response; + +public class BookingAddressPageResponse +{ + public long Id { get; set; } + + /// + /// 订餐地址 + /// + public string Address { get; set; } +} diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceDto.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlaceDto.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceDto.cs rename to Src/Dlhis.Basic/Places/Response/BusinessPlaceDto.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlaceListResponse.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceListResponse.cs rename to Src/Dlhis.Basic/Places/Response/BusinessPlaceListResponse.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlacePermissionPageResponse.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlacePermissionPageResponse.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlacePermissionPageResponse.cs rename to Src/Dlhis.Basic/Places/Response/BusinessPlacePermissionPageResponse.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceResponse.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlaceResponse.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceResponse.cs rename to Src/Dlhis.Basic/Places/Response/BusinessPlaceResponse.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceWithShiftResponse.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlaceWithShiftResponse.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/BusinessPlaceWithShiftResponse.cs rename to Src/Dlhis.Basic/Places/Response/BusinessPlaceWithShiftResponse.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/DeviceCodeNameDetail.cs b/Src/Dlhis.Basic/Places/Response/DeviceCodeNameDetail.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/DeviceCodeNameDetail.cs rename to Src/Dlhis.Basic/Places/Response/DeviceCodeNameDetail.cs diff --git a/Src/Dlhis.Basic/BusinessPlace/Response/GetMyResponse.cs b/Src/Dlhis.Basic/Places/Response/GetMyResponse.cs similarity index 100% rename from Src/Dlhis.Basic/BusinessPlace/Response/GetMyResponse.cs rename to Src/Dlhis.Basic/Places/Response/GetMyResponse.cs diff --git a/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs b/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs new file mode 100644 index 00000000..9dc94951 --- /dev/null +++ b/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs @@ -0,0 +1,12 @@ +using Dlhis.Basic.Places.Request; +using Dlhis.Basic.Places.Response; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Basic.Places.Services; + +public interface IBookingAddressService : IScopeDependency +{ + Task> GetAddressPageAsync(BookingAddressPageRequest request); + + Task SaveAddressAsync(BookingAddressSaveRequest request); +} diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs similarity index 72% rename from Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlacePermissionsService.cs rename to Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs index cbae1cfc..d36816ee 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Kurisu.Core.DataAccess.Dto; @@ -8,7 +8,7 @@ public interface IBusinessPlacePermissionsService : IScopeDependency { Task> GetPageAsync(BusinessPlacePermissionPageRequest request); - Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request); + Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request); Task GetMyAsync(); } diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs b/Src/Dlhis.Basic/Places/Services/IBusinessPlaceService.cs similarity index 95% rename from Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs rename to Src/Dlhis.Basic/Places/Services/IBusinessPlaceService.cs index 959cb041..ce09d910 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/IBusinessPlaceService.cs +++ b/Src/Dlhis.Basic/Places/Services/IBusinessPlaceService.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Kurisu.Core.DataAccess.Dto; diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs new file mode 100644 index 00000000..22de0f58 --- /dev/null +++ b/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs @@ -0,0 +1,45 @@ +using Dlhis.Basic.Places.Request; +using Dlhis.Basic.Places.Response; +using Dlhis.Entity.Basic.Entity; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Extensions; +using Kurisu.SqlSugar.Services; +using Mapster; + +namespace Dlhis.Basic.Places.Services.Implements; + +public class BookingAddressService : IBookingAddressService +{ + private readonly IDbContext _dbContext; + + public BookingAddressService(IDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task> GetAddressPageAsync(BookingAddressPageRequest request) + { + return await _dbContext.Queryable() + .WhereIF(request.Search.IsPresent(), x => x.Address.Contains(request.Search)) + .Select() + .ToPageListAsync(request); + } + + public async Task SaveAddressAsync(BookingAddressSaveRequest request) + { + if (!request.Id.HasValue) + { + var entity = request.Adapt(); + await _dbContext.InsertAsync(entity); + } + else + { + var entity = await _dbContext.Queryable() + .Where(x => x.Id == request.Id) + .FirstAsync(); + request.Adapt(entity); + await _dbContext.UpdateAsync(entity); + } + } +} diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs similarity index 93% rename from Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlacePermissionsService.cs rename to Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs index 55d1fdca..2141ab41 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Entity.Basic.Entity; using Kurisu.Core.DataAccess.Dto; @@ -45,7 +45,7 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService return myResponse; } - public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request) + public async Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request) { var userId = _currentUser.GetIntSubjectId(); if (request.Id.HasValue) diff --git a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs similarity index 99% rename from Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs rename to Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs index 2e91ff5a..35a72463 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Services/Implements/BusinessPlaceService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.BusinessPlace.Request; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Enums; diff --git a/Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs deleted file mode 100644 index cb39c6a4..00000000 --- a/Src/Dlhis.Entity/Basic/Entity/BookingAddresEntity.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Kurisu.Core.DataAccess.Entity; -using Kurisu.SqlSugar; -using SqlSugar; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Dlhis.Entity.Basic.Entity -{ - /// - /// 就餐地址 - /// - [SugarTable(TableName = "BookingAddres", TableDescription = "就餐地址")] - public class BookingAddresEntity : SugarBaseEntity, ITenantId - { - - - /// - /// 订餐地址 - /// - [SugarColumn(ColumnDescription = "订餐地址")] - public string Addres { get; set; } - - public string TenantId { get; set; } - } -} diff --git a/Src/Dlhis.Entity/Basic/Entity/BookingAddressEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BookingAddressEntity.cs new file mode 100644 index 00000000..54e8f17a --- /dev/null +++ b/Src/Dlhis.Entity/Basic/Entity/BookingAddressEntity.cs @@ -0,0 +1,20 @@ +using Kurisu.Core.DataAccess.Entity; +using Kurisu.SqlSugar; +using SqlSugar; + +namespace Dlhis.Entity.Basic.Entity; + +/// +/// 就餐地址 +/// +[SugarTable(TableName = "BookingAddress", TableDescription = "就餐地址")] +public class BookingAddressEntity : SugarBaseEntity, ITenantId +{ + /// + /// 订餐地址 + /// + [SugarColumn(ColumnDescription = "订餐地址")] + public string Address { get; set; } + + public string TenantId { get; set; } +} From 7432fae1034aa81d621dcb213bea04de1f01e0c5 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 18:02:31 +0800 Subject: [PATCH 06/50] =?UTF-8?q?fix=20=E9=85=8D=E9=80=81=E7=82=B9?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs | 5 +++++ Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs | 1 + Src/Dlhis.Entity/Canteen/Entities/CanteenOrderEntity.cs | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs index 9872a497..525e27d2 100644 --- a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs @@ -36,6 +36,11 @@ public class BookingMealRequest : IValidatableObject [EnumDataType(typeof(BalanceRecordSourceEnumType))] public BalanceRecordSourceEnumType Source { get; set; } + /// + /// 配送地址 + /// + [Required] + public string DeliveryAddress { get; set; } public IEnumerable Validate(ValidationContext validationContext) { diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index e390d2ca..a7494d59 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -102,6 +102,7 @@ public class OrderService : IOrderService CostId = gainfo.CostId, DepartmentNo = gainfo.DepartmentNo, DeviceUniqueNo = string.Empty, + DeliveryAddress = request.DeliveryAddress, No = SnowFlakeHelper.Instance.NextId().ToString(), SubsidiesFromMonth = now.ToString("yyyyMM"), diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderEntity.cs index 38195904..2a927612 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderEntity.cs @@ -34,6 +34,12 @@ public class CanteenOrderEntity : BalanceRecordEntity [SugarColumn(ColumnDataType = "bit", ColumnDescription = "请求json")] public bool IsOffline { get; set; } + /// + /// 配送地址 + /// + [SugarColumn(ColumnDescription = "配送地址")] + public string DeliveryAddress { get; set; } + /// /// 处理结果 /// From 9a7091b4e07925a50ee894e33c7db5426c82caf1 Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Tue, 19 Mar 2024 18:36:14 +0800 Subject: [PATCH 07/50] =?UTF-8?q?fix=20=E5=88=A0=E9=99=A4=E6=97=A5?= =?UTF-8?q?=E5=BF=97try?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommonJobs/DelApiLogTaskJob.cs | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs index 50126b15..d623561b 100644 --- a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs +++ b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs @@ -7,25 +7,35 @@ namespace Dlhis.ScheduledTask.CommonJobs; public class DelApiLogTaskJob { private readonly IDbContext _dbContext; + private readonly Logger _logger; - public DelApiLogTaskJob(IDbContext dbContext) + public DelApiLogTaskJob(IDbContext dbContext, Logger logger) { _dbContext = dbContext; + _logger = logger; } public async Task RunAsync() { - DateTime now = DateTime.Now; - DateTime todayStart = now.Date; - DateTime threeDaysAgoStart = todayStart.AddDays(-3); + try + { + DateTime now = DateTime.Now; + DateTime todayStart = now.Date; + DateTime threeDaysAgoStart = todayStart.AddDays(-3); - var logs = await _dbContext.ChangeDb("log") - .Queryable() - .Where(x => x._ts<= threeDaysAgoStart) - .OrderBy(x =>x._ts,OrderByType.Asc) - .ToListAsync(); + var logs = await _dbContext.ChangeDb("log") + .Queryable() + .Where(x => x._ts <= threeDaysAgoStart) + .OrderBy(x => x._ts, OrderByType.Asc) + .ToListAsync(); - await _dbContext.ChangeDb("log").DeleteReallyAsync(logs); + await _dbContext.ChangeDb("log").DeleteReallyAsync(logs); + } + catch (Exception ex) + { + _logger.LogError(ex, "删除日志异常:{message}", ex.Message); + } + } } From f427338715b1097e9efd840e3f0006469259ba2f Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 18:43:19 +0800 Subject: [PATCH 08/50] =?UTF-8?q?feat=20=E8=8E=B7=E5=8F=96=E8=8F=9C?= =?UTF-8?q?=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesMenusController.cs | 15 ++++++++++++++- .../Dishes/Services/IDishesMenuService.cs | 2 ++ .../Services/Implements/DishesMenuService.cs | 19 +++++++++++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index b1eb6e49..2ebeea48 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -7,7 +7,6 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Basic.Dishes.Controller; @@ -52,6 +51,20 @@ public class DishesMenusController : ControllerBase return await _dishesMenuService.GetDishesMenuDetailAsync(businessPlaceCode, customCode, date); } + /// + /// 根据参数获取菜品 + /// + /// + /// + /// + /// + /// + [HttpGet("dishes-selections")] + public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, [FromQuery] List categoryCodes) + { + return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCodes); + } + /// /// 菜单保存/更改 /// diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs index 00984ab5..da96b3cc 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs @@ -12,6 +12,8 @@ public interface IDishesMenuService : IScopeDependency Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date); + Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List categoryCodes); + Task SaveDishesMenuAsync(DishesMenuSaveRequest request); Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index c93fd62a..7ff3aa7c 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -9,7 +9,7 @@ using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; using Dlhis.Basic.BusinessPlace.Services; using Dlhis.Basic.Dishes.Dto; -using Org.BouncyCastle.Asn1.Ocsp; +using Mapster; namespace Dlhis.Basic.Dishes.Services.Implements; @@ -49,7 +49,7 @@ public class DishesMenuService : IDishesMenuService BusinessPlaceCode = businessPlaceCode, Items = new List { - new() + new() { CustomCode = customCode, Date = date, @@ -74,6 +74,21 @@ public class DishesMenuService : IDishesMenuService }; } + public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List categoryCodes) + { + var data = await _dbContext.Queryable() + .LeftJoin((x, dishes) => x.DishesCode == dishes.CustomCode) + .Where(x => x.BusinessPlaceCode == businessPlaceCode) + .Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day)) + .Where((x, dishes) => dishes.Enable) + .WhereIF(shiftType.HasValue, x => x.ShiftType == shiftType) + .WhereIF(categoryCodes.IsPresent(), (x, dishes) => categoryCodes.Contains(dishes.CategoryCode)) + .Select((x, dishes) => dishes) + .ToListAsync(); + + return data.Adapt>(); + } + public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request) { //检验数据 From f003e301699cfc3bb20061875e501a159f3fb088 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 19:51:56 +0800 Subject: [PATCH 09/50] =?UTF-8?q?fix=20=E8=AE=A2=E9=A4=90null=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DishesMenusBookingSettingResponse.cs | 4 +- .../Services/Implements/DishesMenuService.cs | 2 +- .../Services/Implements/DishesService.cs | 14 ++-- Src/Dlhis.Basic/Dlhis.Basic.csproj | 1 + .../Controllers/MealUsersController.cs | 16 +--- .../MealUser/Request/MealUserAddRequest.cs | 20 ----- .../MealUser/Request/MealUserPageRequest.cs | 7 -- .../MealUser/Response/MealUserResponse.cs | 11 +-- .../MealUser/Services/IMealUserService.cs | 7 +- .../Services/Implements/MealUserService.cs | 37 +-------- .../Services/Implements/GainfoService.cs | 2 +- .../Order/Controllers/OrdersController.cs | 1 - .../Services/Implements/BalanceService.cs | 4 +- .../Order/Services/Implements/OrderService.cs | 75 ++++++++++++------- .../appsettings.Development.json | 7 ++ ...nteenUserEntity.cs => GainfoMealEntity.cs} | 14 ++-- .../Entity/MealSupplementRecordEntity.cs | 11 +++ .../Canteen/Enums/CanteenUserEnumType.cs | 30 -------- 18 files changed, 96 insertions(+), 167 deletions(-) delete mode 100644 Src/Dlhis.Basic/MealUser/Request/MealUserAddRequest.cs delete mode 100644 Src/Dlhis.Basic/MealUser/Request/MealUserPageRequest.cs rename Src/Dlhis.Entity/Basic/Entity/{CanteenUserEntity.cs => GainfoMealEntity.cs} (70%) delete mode 100644 Src/Dlhis.Entity/Canteen/Enums/CanteenUserEnumType.cs diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs index 8e492bc5..f9b3a87c 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs @@ -8,9 +8,9 @@ public class DishesMenusBookingSettingResponse public DateTime ServerTime { get; set; } /// - /// 餐别-餐次信息 + /// 订餐期限 /// - public List ShiftInfos { get; set; } + public DateTime Deadline { get; set; } /// /// 支付方式 diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 7ff3aa7c..cec11e46 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -178,7 +178,7 @@ public class DishesMenuService : IDishesMenuService foreach (var item in request.Items) { - var u = item.Date.ToString("yyyy-MM-dd") + "-" + item.CustomCode; + var u = item.Date.ToString("yyyy-MM-dd") + ". " + item.CustomCode; (item.ShiftTypes.DistinctBy(x => x.ShiftType).Count() != item.ShiftTypes.Count).ThrowIfTrue($"{u}的餐次不可重复添加"); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs index dbd90b56..f8518ff8 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs @@ -66,12 +66,13 @@ public class DishesService : IDishesService .Select(x => x.Value) .FirstAsync(); - DateTime dateTime; - DateTime.TryParseExact(strDatetime, "HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out dateTime); + if (!TimeOnly.TryParse(strDatetime, out var deadline)) + deadline = new TimeOnly(8, 30); var res = new DishesMenusBookingSettingResponse { - ServerTime = dateTime, + ServerTime = DateTime.Now, + Deadline = DateTime.Today.Add(deadline.ToTimeSpan()) }; var shift = await _dbContext.Queryable() @@ -87,11 +88,7 @@ public class DishesService : IDishesService if (shift != null) { - var businessShiftMealRelationships = await _dbContext.Queryable() - .Where(x => x.ShiftCode == shift.ShiftCode) - .Select() - .ToListAsync(); - res.ShiftInfos = businessShiftMealRelationships; + if (shift.TenantId == request.Factory) { @@ -104,6 +101,7 @@ public class DishesService : IDishesService } res.PayTypes = payTypes; + return res; } diff --git a/Src/Dlhis.Basic/Dlhis.Basic.csproj b/Src/Dlhis.Basic/Dlhis.Basic.csproj index 61d37f79..5c48837c 100644 --- a/Src/Dlhis.Basic/Dlhis.Basic.csproj +++ b/Src/Dlhis.Basic/Dlhis.Basic.csproj @@ -27,6 +27,7 @@ + diff --git a/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs b/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs index 02fc4e33..04e365ac 100644 --- a/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs +++ b/Src/Dlhis.Basic/MealUser/Controllers/MealUsersController.cs @@ -1,5 +1,4 @@ -using Dlhis.Basic.MealUser.Request; -using Dlhis.Basic.MealUser.Response; +using Dlhis.Basic.MealUser.Response; using Dlhis.Basic.MealUser.Services; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; @@ -28,19 +27,8 @@ public class MealUsersController : ControllerBase /// /// [HttpGet("page")] - public async Task> GetPageAsync([FromQuery] MealUserPageRequest request) + public async Task> GetPageAsync([FromQuery] PageDto request) { return await _mealUserService.GetPageAsync(request); } - - /// - /// 就餐人员保存 - /// - /// - /// - [HttpPost] - public async Task AddAsync(MealUserAddRequest request) - { - await _mealUserService.AddAsync(request); - } } diff --git a/Src/Dlhis.Basic/MealUser/Request/MealUserAddRequest.cs b/Src/Dlhis.Basic/MealUser/Request/MealUserAddRequest.cs deleted file mode 100644 index f4ee6ccc..00000000 --- a/Src/Dlhis.Basic/MealUser/Request/MealUserAddRequest.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using Dlhis.Entity.Canteen.Enums; - -namespace Dlhis.Basic.MealUser.Request; - -public class MealUserAddRequest -{ - /// - /// 档案号 - /// - [Required(ErrorMessage = "档案号不能为空")] - public string UserNo { get; set; } - - - /// - /// 用户类型 - /// - [EnumDataType(typeof(CanteenUserEnumType))] - public CanteenUserEnumType UserType { get; set; } -} diff --git a/Src/Dlhis.Basic/MealUser/Request/MealUserPageRequest.cs b/Src/Dlhis.Basic/MealUser/Request/MealUserPageRequest.cs deleted file mode 100644 index 667a21ed..00000000 --- a/Src/Dlhis.Basic/MealUser/Request/MealUserPageRequest.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Kurisu.Core.DataAccess.Dto; - -namespace Dlhis.Basic.MealUser.Request; - -public class MealUserPageRequest : PageDto -{ -} \ No newline at end of file diff --git a/Src/Dlhis.Basic/MealUser/Response/MealUserResponse.cs b/Src/Dlhis.Basic/MealUser/Response/MealUserResponse.cs index a750372e..27731ec5 100644 --- a/Src/Dlhis.Basic/MealUser/Response/MealUserResponse.cs +++ b/Src/Dlhis.Basic/MealUser/Response/MealUserResponse.cs @@ -1,6 +1,4 @@ -using Dlhis.Entity.Canteen.Enums; - -namespace Dlhis.Basic.MealUser.Response; +namespace Dlhis.Basic.MealUser.Response; public class MealUserResponse { @@ -15,13 +13,6 @@ public class MealUserResponse /// public string UserCode { get; set; } - - /// - /// 消费人员类型 - /// - public CanteenUserEnumType UserType { get; set; } - - /// /// 卡号 /// diff --git a/Src/Dlhis.Basic/MealUser/Services/IMealUserService.cs b/Src/Dlhis.Basic/MealUser/Services/IMealUserService.cs index 990a8e98..33dfe9f8 100644 --- a/Src/Dlhis.Basic/MealUser/Services/IMealUserService.cs +++ b/Src/Dlhis.Basic/MealUser/Services/IMealUserService.cs @@ -1,12 +1,9 @@ -using Dlhis.Basic.MealUser.Request; -using Dlhis.Basic.MealUser.Response; +using Dlhis.Basic.MealUser.Response; using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Basic.MealUser.Services; public interface IMealUserService : IScopeDependency { - Task> GetPageAsync(MealUserPageRequest request); - - Task AddAsync(MealUserAddRequest request); + Task> GetPageAsync(PageDto request); } diff --git a/Src/Dlhis.Basic/MealUser/Services/Implements/MealUserService.cs b/Src/Dlhis.Basic/MealUser/Services/Implements/MealUserService.cs index 0469fe53..26bde8e4 100644 --- a/Src/Dlhis.Basic/MealUser/Services/Implements/MealUserService.cs +++ b/Src/Dlhis.Basic/MealUser/Services/Implements/MealUserService.cs @@ -1,9 +1,5 @@ -using Dlhis.Basic.MealUser.Request; -using Dlhis.Basic.MealUser.Response; -using Dlhis.Basic.Organization.Services; +using Dlhis.Basic.MealUser.Response; using Dlhis.Entity.Basic.Entity; -using Dlhis.Entity.Basic.Enums; -using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; @@ -13,17 +9,15 @@ namespace Dlhis.Basic.MealUser.Services.Implements; public class MealUserService : IMealUserService { private readonly IDbContext _dbContext; - private readonly IGainfoStore _gainfoStore; - public MealUserService(IDbContext dbContext, IGainfoStore gainfoStore) + public MealUserService(IDbContext dbContext) { _dbContext = dbContext; - _gainfoStore = gainfoStore; } - public async Task> GetPageAsync(MealUserPageRequest request) + public async Task> GetPageAsync(PageDto request) { - var page = await _dbContext.Queryable() + var page = await _dbContext.Queryable() .LeftJoin((x, ga) => x.UserNo == ga.No) .Select((x, ga) => new MealUserResponse { @@ -32,32 +26,9 @@ public class MealUserService : IMealUserService BalanceOfSubsidies = x.BalanceOfSubsidies, UserCode = ga.Code, UserNo = ga.No, - UserType = x.UserType }) .ToPageListAsync(request); return page; } - - public async Task AddAsync(MealUserAddRequest request) - { - //todo 获取档案信息 - - var gainfoEntity = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) - .Where(x => x.No.ToString() == request.UserNo) - .FirstAsync(); - - gainfoEntity.ThrowIfNull($"档案[{request.UserNo}]不存在"); - - var entity = new CanteenUserEntity - { - UserNo = request.UserNo, - UserType = request.UserType, - Balance = 0, - BalanceOfRecharge = 0, - BalanceOfSubsidies = 0, - Version = 0, - }; - await _dbContext.InsertAsync(entity); - } } diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index 9a4ff4c2..724575a5 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -169,7 +169,7 @@ public class GainfoService : IGainfoService var info = await _gainfoStore.Queryable(GainfoStatusEnumType.Working) .LeftJoin((ga, department) => ga.DepartmentNo == department.No) - .LeftJoin((ga, department, mealUser) => ga.No == mealUser.UserNo) + .LeftJoin((ga, department, mealUser) => ga.No == mealUser.UserNo) .Where((ga, department) => ga.Id == gainfo.Id) .Select((ga, department, mealUser) => new GainfoCurrentResponse { diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 9d0f7b96..4aaee6f4 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -64,7 +64,6 @@ public class OrdersController : ControllerBase /// 订餐 /// /// - [IgnoreTenant] [HttpPost("booking")] public async Task Booking(BookingMealRequest request) { diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index f216236b..6c38604d 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -558,12 +558,12 @@ public class BalanceService : IBalanceService await ContinueUpdateAsync(async () => { //重算金额 - var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == balanceRecord.UserNo).SingleAsync(); + var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == balanceRecord.UserNo).SingleAsync(); //金额 + canteenUser.Balance += Math.Abs(balanceRecord.Amount); - var effect = await _dbContext.Updateable() + var effect = await _dbContext.Updateable() .SetColumns(x => x.Balance == canteenUser.Balance) .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserNo == balanceRecord.UserNo && x.Version == canteenUser.Version) diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index a7494d59..5b04f4fd 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -64,10 +64,7 @@ public class OrderService : IOrderService public async Task Booking(BookingMealRequest request) { - await CheckExistsMyBookingsAsync(request.BookingDate); - - var jinkoCode = _currentUser.GetUserClaim("jinko-code"); - var gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType); var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); @@ -130,15 +127,29 @@ public class OrderService : IOrderService (menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄"); - var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - //金额+- - canteenUser.Balance += order.Amount; - (canteenUser.Balance < 0).ThrowIfTrue("余额不足,无法消费"); + var mealInfo = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + if (mealInfo == null) + { + await _dbContext.InsertAsync(new GainfoMealEntity + { + Balance = 0, + BalanceOfRecharge = 0, + BalanceOfSubsidies = 0, + UserCode = gainfo.Code, + UserNo = gainfo.No, + Version = 0, + }); - var effect = await _dbContext.Updateable() - .SetColumns(x => x.Balance == canteenUser.Balance) + (mealInfo == null).ThrowIfTrue("余额不足,无法消费"); + } + //金额+- + mealInfo.Balance += order.Amount; + (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); + + var effect = await _dbContext.Updateable() + .SetColumns(x => x.Balance == mealInfo.Balance) .SetColumns(x => x.Version == x.Version + 1) - .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)//必须与查询时的version一致 + .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 .ExecuteCommandAsync(); if (effect <= 0) throw new VersionExceptions("更新版本冲突"); @@ -147,7 +158,12 @@ public class OrderService : IOrderService .SetColumns(x => x.Number == menuDetail.Number) .SetColumns(x => x.Version == x.Version + 1) .SetColumns(x => x.ModifiedTime == now) - .Where(x => x.Date == menuDetail.Date && x.ShiftType == request.ShiftType && x.BusinessPlaceCode == request.BusinessPlaceCode && x.Version == menuDetail.Version) + .Where(x => x.Date == menuDetail.Date + && x.ShiftType == request.ShiftType + && x.BusinessPlaceCode == request.BusinessPlaceCode + && x.DishesCode == request.DishesCode + && x.Version == menuDetail.Version + ) .ExecuteCommandAsync(); if (effect <= 0) throw new VersionExceptions("更新版本冲突"); @@ -189,19 +205,18 @@ public class OrderService : IOrderService //消费权限控制 await CheckPAsync(gainfo.No, request.DeviceUniqueNo); - var canteenUserExists = await _dbContext.Queryable() + var canteenUserExists = await _dbContext.Queryable() .Where(x => x.UserNo == gainfo.No) .AnyAsync(); if (!canteenUserExists) { - await _dbContext.InsertAsync(new CanteenUserEntity + await _dbContext.InsertAsync(new GainfoMealEntity { UserNo = gainfo.No, Balance = 0, BalanceOfRecharge = 0, BalanceOfSubsidies = 0, - UserType = CanteenUserEnumType.LocalTenant, TenantId = gainfo.Factory, Version = 0, @@ -226,7 +241,7 @@ public class OrderService : IOrderService //获取人员余额 return await _dbContext.Queryable() .LeftJoin((ga, department) => ga.DepartmentNo == department.No) - .LeftJoin((ga, department, mealUser) => ga.No == mealUser.UserNo) + .LeftJoin((ga, department, mealUser) => ga.No == mealUser.UserNo) .Where(ga => ga.Id == gainfo.Id) .Select((ga, department, mealUser) => new OrderResultResponse { @@ -582,11 +597,11 @@ public class OrderService : IOrderService await ContinueUpdateAsync(async () => { - var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); //金额+- canteenUser.Balance += order.Amount; - var effect = await _dbContext.Updateable() + var effect = await _dbContext.Updateable() .SetColumns(x => x.Balance == canteenUser.Balance) .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version) @@ -623,7 +638,7 @@ public class OrderService : IOrderService { if (!allowNoBalance) { - var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); //金额+- canteenUser.Balance += order.Amount; if (canteenUser.Balance < 0) @@ -631,7 +646,7 @@ public class OrderService : IOrderService throw new UserFriendlyException("余额不足,无法消费"); } - var effect = await _dbContext.Updateable() + var effect = await _dbContext.Updateable() .SetColumns(x => x.Balance == canteenUser.Balance) .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)//必须与查询时的version一致 @@ -651,20 +666,30 @@ public class OrderService : IOrderService /// 检查我的订餐是否存在,存在抛出异常 /// /// + /// /// - private async Task CheckExistsMyBookingsAsync(DateTime bookingDate) + private async Task CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType) { - var jinkoCode = _currentUser.GetUserClaim("jinko-code"); - var gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + var subjectId = _currentUser.GetIntSubjectId(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + if (jinkoCode.IsPresent()) + { + gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + } - var start = bookingDate.Date; + var start = bookingDate.Date.AddDays(-1); var end = start.AddDays(1).AddSeconds(-1); - var exists = await _dbContext.Queryable().Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + var exists = await _dbContext.Queryable() + .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + .Where(x => x.ShiftType == shiftType) .Where(x => x.UserNo == gainfo.No) .Where(x => x.CreateTime >= start && x.CreateTime <= end) .AnyAsync(); exists.ThrowIfTrue("不可重复订餐"); + + return gainfo; } } diff --git a/Src/Dlhis.Canteen/appsettings.Development.json b/Src/Dlhis.Canteen/appsettings.Development.json index 49e0aa9e..74bdd380 100644 --- a/Src/Dlhis.Canteen/appsettings.Development.json +++ b/Src/Dlhis.Canteen/appsettings.Development.json @@ -10,6 +10,13 @@ "BasicRequestUrl": "http://localhost:5002", "SysRequestUrl": "http://localhost:5003" }, + "SqlSugarOptions": { + "DefaultConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=yikatong;charset=utf8mb4;", + "SlaveConnectionString": [], + "Timeout": 30, + "SlowSqlTime": 1, + "EnableSqlLog": false + }, "SwaggerOptions": { "Enable": true, "Authority": "https://yikatong.isawesome.cn/oauth2", diff --git a/Src/Dlhis.Entity/Basic/Entity/CanteenUserEntity.cs b/Src/Dlhis.Entity/Basic/Entity/GainfoMealEntity.cs similarity index 70% rename from Src/Dlhis.Entity/Basic/Entity/CanteenUserEntity.cs rename to Src/Dlhis.Entity/Basic/Entity/GainfoMealEntity.cs index 7a18bed6..e7766a76 100644 --- a/Src/Dlhis.Entity/Basic/Entity/CanteenUserEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/GainfoMealEntity.cs @@ -1,16 +1,14 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.Core.DataAccess.Entity; +using Kurisu.Core.DataAccess.Entity; using Kurisu.SqlSugar; using SqlSugar; -using SqlSugar.DbConvert; namespace Dlhis.Entity.Basic.Entity; /// /// 就餐人员 /// -[SugarTable(TableName = "CanteenUser", TableDescription = "就餐人员")] -public class CanteenUserEntity : SugarBaseEntity, IVersion, ITenantId +[SugarTable(TableName = "GainfoMeal", TableDescription = "就餐人员")] +public class GainfoMealEntity : SugarBaseEntity, IVersion, ITenantId { /// /// 档案号 @@ -19,10 +17,10 @@ public class CanteenUserEntity : SugarBaseEntity, IVersion, ITenantId public string UserNo { get; set; } /// - /// 消费人员类型 + /// 工号 /// - [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "消费人员类型")] - public CanteenUserEnumType UserType { get; set; } + [SugarColumn(IsNullable = false, ColumnDescription = "工号", UniqueGroupNameList = new[] { "idx_CanteenUser_UserCode" })] + public string UserCode { get; set; } /// /// 余额 diff --git a/Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs b/Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs index 8a993992..ef31764d 100644 --- a/Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs @@ -28,6 +28,17 @@ public class MealSupplementRecordEntity : MealSupplementRequestRecordEntity /// [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))] public MealSupplementStatusEnumtype Status { get; set; } + + /// + /// 处理结果 + /// + [SugarColumn(ColumnDescription = "处理结果", ColumnDataType = "varchar(2000)")] + public string Result { get; set; } + + /// + /// 状态同步 + /// + public bool Sync { get; set; } } [SugarTable(TableName = "MealSupplementRequestRecord", TableDescription = "餐补请求记录")] diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenUserEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenUserEnumType.cs deleted file mode 100644 index 9bc892fd..00000000 --- a/Src/Dlhis.Entity/Canteen/Enums/CanteenUserEnumType.cs +++ /dev/null @@ -1,30 +0,0 @@ - - -using System.ComponentModel; - -namespace Dlhis.Entity.Canteen.Enums; - -/// -/// 就餐人员类型 -/// -[Description("就餐人员类型")] -public enum CanteenUserEnumType -{ - /// - /// 本基地 - /// - [Description("本基地人员")] - LocalTenant = 1, - - /// - /// 其他基地 - /// - [Description("其他基地人员")] - OtherTenant, - - /// - /// 外部人员 - /// - [Description("外部人员")] - External -} \ No newline at end of file From 0cde1d3d92cba85573860bc4c83a964041d38c04 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 20:03:06 +0800 Subject: [PATCH 10/50] =?UTF-8?q?fix=20=E8=A1=A8=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/OrdersController.cs | 1 + .../Order/Response/GetDetailResponse.cs | 67 ------------------- .../Order/Services/Implements/OrderService.cs | 2 +- ...lEntity.cs => CanteenOrderDetailEntity.cs} | 16 +---- .../Enums/MiniProgramOrderStatusEnumType.cs | 36 ---------- .../Enums/OrderDetailsStatusEnumType.cs | 17 ----- 6 files changed, 5 insertions(+), 134 deletions(-) delete mode 100644 Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs rename Src/Dlhis.Entity/Canteen/Entities/{OrderDetailEntity.cs => CanteenOrderDetailEntity.cs} (64%) delete mode 100644 Src/Dlhis.Entity/Canteen/Enums/MiniProgramOrderStatusEnumType.cs delete mode 100644 Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 4aaee6f4..7fb5f092 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -65,6 +65,7 @@ public class OrdersController : ControllerBase /// /// [HttpPost("booking")] + [Transactional] public async Task Booking(BookingMealRequest request) { await _orderService.Booking(request); diff --git a/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs deleted file mode 100644 index 956a1ac6..00000000 --- a/Src/Dlhis.Canteen/Order/Response/GetDetailResponse.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.AspNetCore.Utils.Extensions; - -namespace Dlhis.Canteen.Order.Response; - -public class GetDetailResponse -{ - /// - /// 订单号 - /// - public string ThirdNo { get; set; } - - /// - /// 营业日 - /// - public DateOnly SysDate { get; set; } - - /// - /// 餐次 - /// - public ShiftEnumType ShiftType { get; set; } - - /// - /// 餐次CN - /// - public string ShiftTypeCN => ShiftType.GetDescription(); - - /// - /// 菜品编码 - /// - public Guid DishesCode { get; set; } - - /// - /// 菜品名称 - /// - public string DishesName { get; set; } - - /// - /// 单价 - /// - public decimal Price { get; set; } - - /// - /// 单位 - /// - public string Unit { get; set; } - - /// - /// 数量 - /// - public int Num { get; set; } - - /// - /// 金额 - /// - public decimal Amount { get; set; } - - /// - /// 订单明细状态 - /// - public OrderDetailsStatusEnumType OrderStatus { get; set; } - - /// - /// 订单明细状态CN - /// - public string OrderStatusCN => OrderStatus.GetDescription(); -} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 5b04f4fd..040f13b7 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -172,7 +172,7 @@ public class OrderService : IOrderService var balanceRecord = order.Adapt(); await _dbContext.InsertAsync(balanceRecord); - await _dbContext.InsertAsync(new OrderDetailEntity + await _dbContext.InsertAsync(new CanteenOrderDetailEntity { OrderNo = order.No, DishesCode = request.DishesCode, diff --git a/Src/Dlhis.Entity/Canteen/Entities/OrderDetailEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs similarity index 64% rename from Src/Dlhis.Entity/Canteen/Entities/OrderDetailEntity.cs rename to Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs index 53b59bd9..80d30b52 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/OrderDetailEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs @@ -1,16 +1,14 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.Core.DataAccess.Entity; +using Kurisu.Core.DataAccess.Entity; using Kurisu.SqlSugar; using SqlSugar; -using SqlSugar.DbConvert; namespace Dlhis.Entity.Canteen.Entities; /// /// 订餐明细表 /// -[SugarTable(TableName = "OrderDetail", TableDescription = "订单明细表")] -public class OrderDetailEntity : SugarBaseEntity, ITenantId +[SugarTable(TableName = "CanteenOrderDetail", TableDescription = "订单明细表")] +public class CanteenOrderDetailEntity : SugarBaseEntity, ITenantId { /// /// 订单号 @@ -42,13 +40,5 @@ public class OrderDetailEntity : SugarBaseEntity, ITenantId [SugarColumn(ColumnDescription = "单位")] public string Unit { get; set; } - - /// - /// 订单明细状态 - /// - [SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "状态")] - public OrderDetailsStatusEnumType Status { get; set; } - - public string TenantId { get; set; } } diff --git a/Src/Dlhis.Entity/Canteen/Enums/MiniProgramOrderStatusEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/MiniProgramOrderStatusEnumType.cs deleted file mode 100644 index 56eb9ba1..00000000 --- a/Src/Dlhis.Entity/Canteen/Enums/MiniProgramOrderStatusEnumType.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Dlhis.Entity.Canteen.Enums -{ - public enum MiniProgramOrderStatusEnumType - { - /// - /// 有效 - /// - [Description("有效")] - I = 1, - - /// - /// 取消 - /// - [Description("取消")] - C = 2, - - /// - /// 退单 - /// - [Description("退单")] - X = 3, - - /// - /// 免单 - /// - [Description("免单")] - Z = 4, - } -} diff --git a/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs deleted file mode 100644 index 0b4eed43..00000000 --- a/Src/Dlhis.Entity/Canteen/Enums/OrderDetailsStatusEnumType.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel; - -namespace Dlhis.Entity.Canteen.Enums -{ - /// - /// 订单明细状态 OrderDetailsStatusEnumType - /// - [Description("订单明细状态")] - public enum OrderDetailsStatusEnumType - { - /// - /// 有效 - /// - [Description("有效")] - I = 1, - } -} From 2d8393068f56b28f12270d3f9fff21efea204696 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 19 Mar 2024 20:53:16 +0800 Subject: [PATCH 11/50] =?UTF-8?q?feat=20=E8=AE=A2=E5=8D=95=E8=81=9A?= =?UTF-8?q?=E5=90=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/OrdersController.cs | 24 ++++++- .../Request/BalanceRecordUserPageRequest.cs | 12 +++- .../Order/Request/SaveDetailRequest.cs | 61 ---------------- .../Response/BalanceRecordUserResponse.cs | 11 +++ Src/Dlhis.Canteen/Order/Response/DishesDto.cs | 34 +++++++++ .../Response/OrderAggregationResponse.cs | 51 ++++++++++++++ .../Order/Response/OrderDetailResponse.cs | 34 +++++++++ .../Order/Services/IOrderService.cs | 13 +++- .../Services/Implements/BalanceService.cs | 12 ++-- .../Order/Services/Implements/OrderService.cs | 70 ++++++++++++++++++- .../appsettings.Development.json | 2 +- .../BusinessPlaceShiftRelationshipEntity.cs | 4 +- 12 files changed, 252 insertions(+), 76 deletions(-) delete mode 100644 Src/Dlhis.Canteen/Order/Request/SaveDetailRequest.cs create mode 100644 Src/Dlhis.Canteen/Order/Response/DishesDto.cs create mode 100644 Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs create mode 100644 Src/Dlhis.Canteen/Order/Response/OrderDetailResponse.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 7fb5f092..fc1ee44e 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -6,6 +6,7 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Canteen.Dishes.Controllers; @@ -68,9 +69,20 @@ public class OrdersController : ControllerBase [Transactional] public async Task Booking(BookingMealRequest request) { - await _orderService.Booking(request); + await _orderService.BookingAsync(request); } + ///// + ///// 获取详情 + ///// + ///// + ///// + //[HttpGet("details")] + //public async Task> GetDetailsAsync(string no) + //{ + // return await _orderService.GetDetailsAsync(no); + //} + /// /// 充值 /// @@ -80,4 +92,14 @@ public class OrdersController : ControllerBase { } + + /// + /// 订单聚合数据 + /// + /// + [HttpGet("aggregation")] + public async Task> GetOrdersAggregationAsync([FromQuery] PageDto page) + { + return await _orderService.GetOrdersAggregationAsync(page); + } } diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs index 719f7e3f..8e544b15 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordUserPageRequest.cs @@ -3,7 +3,7 @@ using Kurisu.Core.CustomClass; using System.ComponentModel.DataAnnotations; using Kurisu.Core.DataAccess.Dto; -namespace Dlhis.Canteen.Dishes.Request +namespace Dlhis.Canteen.Order.Request { public class BalanceRecordUserPageRequest : PageDto, IValidatableObject { @@ -13,11 +13,17 @@ namespace Dlhis.Canteen.Dishes.Request [EnumDataType(typeof(DateTimeSearchEnumType))] public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; } + /// + /// 消费应用类型 + /// + public CanteenApplicaitonTypeEnumType? ApplicationType { get; set; } + /// /// 日期范围查询 /// public DateTimePeriod SearchDateTimePeriod { get; set; } + public IEnumerable Validate(ValidationContext validationContext) { var now = DateTime.Now; @@ -43,8 +49,8 @@ namespace Dlhis.Canteen.Dishes.Request } else if (SearchDateTimeDimension == DateTimeSearchEnumType.Season) { - SearchDateTimePeriod.Start = now.AddMonths(0 - ((now.Month - 1) % 3)); - SearchDateTimePeriod.End = now.AddMonths(3 - ((now.Month - 1) % 3)).AddMonths(1).AddDays(-1); + SearchDateTimePeriod.Start = now.AddMonths(0 - (now.Month - 1) % 3); + SearchDateTimePeriod.End = now.AddMonths(3 - (now.Month - 1) % 3).AddMonths(1).AddDays(-1); } else if (SearchDateTimeDimension == DateTimeSearchEnumType.HalfOfYear) { diff --git a/Src/Dlhis.Canteen/Order/Request/SaveDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/SaveDetailRequest.cs deleted file mode 100644 index a7ed3d5d..00000000 --- a/Src/Dlhis.Canteen/Order/Request/SaveDetailRequest.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using SqlSugar.DbConvert; -using SqlSugar; - -namespace Dlhis.Canteen.Order.Request -{ - public class SaveDetailRequest - { - public long? Id { get; set; } - - /// - /// 订单号 - /// - public string ThirdNo { get; set; } - - /// - /// 营业日 - /// - public DateOnly BusinessDate { get; set; } - - /// - /// 餐次 - /// - public ShiftEnumType ShiftType { get; set; } - - /// - /// 菜品编码 - /// - public Guid DishesCode { get; set; } - - /// - /// 菜品名称 - /// - public Guid DishesName { get; set; } - - /// - /// 单价 - /// - public decimal Price { get; set; } - - /// - /// 单位 - /// - public string Unit { get; set; } - - /// - /// 数量 - /// - public int Num { get; set; } - - /// - /// 金额 - /// - public decimal Amount { get; set; } - - /// - /// 订单明细状态 - /// - public OrderDetailsStatusEnumType OrderStatus { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordUserResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordUserResponse.cs index 1ab529aa..9ad32164 100644 --- a/Src/Dlhis.Canteen/Order/Response/BalanceRecordUserResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordUserResponse.cs @@ -49,4 +49,15 @@ public class BalanceRecordUserResponse /// 记录产生日期 /// public DateTime CostDateTime { get; set; } + + + /// + /// 消费应用类型 + /// + public CanteenApplicaitonTypeEnumType ApplicationType { get; set; } + + /// + /// 消费应用类型 + /// + public string ApplicationTypeDesc => ApplicationType.GetDescription(); } diff --git a/Src/Dlhis.Canteen/Order/Response/DishesDto.cs b/Src/Dlhis.Canteen/Order/Response/DishesDto.cs new file mode 100644 index 00000000..5ce96c19 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/DishesDto.cs @@ -0,0 +1,34 @@ +using Newtonsoft.Json; + +namespace Dlhis.Canteen.Order.Response; + +public class DishesDto +{ + [JsonIgnore] + public string No { get; set; } + + /// + /// 菜品编码 + /// + public string DishesCode { get; set; } + + /// + /// 菜品名称 + /// + public string Name { get; set; } + + /// + /// 购买单价 + /// + public decimal Price { get; set; } + + /// + /// 购买数量 + /// + public int Number { get; set; } + + /// + /// 图片 + /// + public string ImageUrl { get; set; } +} diff --git a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs new file mode 100644 index 00000000..a1cb257b --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs @@ -0,0 +1,51 @@ +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Canteen.Order.Response; + +public class OrderAggregationResponse +{ + public string No { get; set; } + + /// + /// 营业点 + /// + public string BusinessPlaceName { get; set; } + + /// + /// 购买菜品 + /// + public List Dishes { get; set; } + + + /// + /// 金额 + /// + public decimal Amount + { + get + { + if (Dishes.IsPresent()) + { + return Dishes.Sum(x => x.Number * x.Price); + } + + return 0; + } + } + + /// + /// 共计数量 + /// + public int Count + { + get + { + if (Dishes.IsPresent()) + { + return Dishes.Count; + } + + return 0; + } + } +} diff --git a/Src/Dlhis.Canteen/Order/Response/OrderDetailResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderDetailResponse.cs new file mode 100644 index 00000000..f0af992a --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/OrderDetailResponse.cs @@ -0,0 +1,34 @@ +//namespace Dlhis.Canteen.Order.Response; + +//public class OrderDetailResponse +//{ +// /// +// /// 菜品编码 +// /// +// public string DishesCode { get; set; } + +// /// +// /// 菜品名称 +// /// +// public string Name { get; set; } + +// /// +// /// 单价 +// /// +// public decimal Price { get; set; } + +// /// +// /// 数量 +// /// +// public int Number { get; set; } + +// /// +// /// 单位 +// /// +// public string Unit { get; set; } + +// /// +// /// 图片 +// /// +// public string ImageUrl { get; set; } +//} diff --git a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs index f78863cb..28c772df 100644 --- a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs @@ -9,6 +9,7 @@ public interface IOrderService : IScopeDependency { Task> GetPageAsync(OrderPageRequest request); + Task AddAsync(OrderAddRequest request); /// @@ -23,5 +24,15 @@ public interface IOrderService : IScopeDependency /// /// /// - Task Booking(BookingMealRequest request); + Task BookingAsync(BookingMealRequest request); + + + ///// + ///// 获取订单详情 + ///// + ///// + ///// + //Task> GetDetailsAsync(string no); + + Task> GetOrdersAggregationAsync(PageDto page); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 6c38604d..5bbe6c48 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -521,13 +521,14 @@ public class BalanceService : IBalanceService .LeftJoin((record, ga) => record.UserNo == ga.No) .LeftJoin((record, ga, department) => ga.DepartmentNo == department.No) .LeftJoin((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code) - .LeftJoin((record, ga, department, bplace, bshift) => record.BusinessShiftCode == bshift.Code) - .LeftJoin((record, ga, department, bplace, bshift, type) => record.BusinessShiftCode.ToString() == type.Code) + .LeftJoin((record, ga, department, bplace, bshiftR) => bplace.Code == bshiftR.PlaceCode) + .LeftJoin((record, ga, department, bplace, bshiftR, shift) => shift.Code == bshiftR.ShiftCode) .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, record => record.CostDate >= request.SearchDateTimePeriod.Start) .WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDate <= request.SearchDateTimePeriod.End) + .WhereIF(request.ApplicationType.HasValue, record => record.ApplicationType == request.ApplicationType) .Where((record, ga) => ga.IdentityUserId == userId) .OrderBy(record => record.CreateTime, OrderByType.Desc) - .Select((record, ga, department, bplace, bshift, type) => new BalanceRecordUserResponse + .Select((record, ga, department, bplace, bshiftR, shift) => new BalanceRecordUserResponse { Id = record.Id, Amount = record.Amount, @@ -536,8 +537,9 @@ public class BalanceService : IBalanceService Source = record.Source, No = record.No, BusinessPlaceName = bplace.Name, - BusinessShiftName = type.Display, - CostDateTime = record.CostDateTime + BusinessShiftName = shift.Name, + CostDateTime = record.CostDateTime, + ApplicationType = record.ApplicationType, }) .ToPageListAsync(request); diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 040f13b7..87bf6d86 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -18,6 +18,8 @@ using SqlSugar; using Dlhis.Canteen.Order.Response; using Dlhis.Canteen.Dishes; using Dlhis.Canteen.Order.Request; +using System.Numerics; +using MySqlX.XDevAPI.Relational; namespace Dlhis.Canteen.Order.Services.Implements; @@ -62,7 +64,7 @@ public class OrderService : IOrderService uniqueNos.Contains(deviceUniqueNo).ThrowIfFalse("无消费权限"); } - public async Task Booking(BookingMealRequest request) + public async Task BookingAsync(BookingMealRequest request) { var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType); @@ -177,7 +179,6 @@ public class OrderService : IOrderService OrderNo = order.No, DishesCode = request.DishesCode, Price = menuDetail.Price, - Status = OrderDetailsStatusEnumType.I, //Unit Number = 1, }); @@ -186,6 +187,24 @@ public class OrderService : IOrderService } + //public async Task> GetDetailsAsync(string no) + //{ + // return await _dbContext.Queryable() + // .LeftJoin((x, d) => x.DishesCode == d.CustomCode) + // .Where(x => x.OrderNo == no) + // .Select((x, d) => new OrderDetailResponse + // { + // DishesCode = x.DishesCode, + // Price = x.Price, + // Name = d.Name, + // Number = x.Number, + // Unit = x.Unit, + // ImageUrl = d.ImageUrl, + // }) + // .ToListAsync(); + //} + + public async Task DeviceConsume(OrderAddRequest request) { return await AddAsync(request); @@ -443,6 +462,53 @@ public class OrderService : IOrderService } + public async Task> GetOrdersAggregationAsync(PageDto page) + { + var subjectId = _currentUser.GetIntSubjectId(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + if (jinkoCode.IsPresent()) + { + gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + } + + var pageResult = await _dbContext.Queryable().Where(x => x.UserNo == gainfo.No) + .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) + .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + .Select((x, bplace) => new OrderAggregationResponse + { + No = x.No, + BusinessPlaceName = bplace.Name, + }) + .ToPageListAsync(page); + + //.LeftJoin((x, bplace, detail) => x.No == detail.OrderNo) + + var nos = pageResult.Data.Select(x => x.No).ToList(); + var dtos = await _dbContext.Queryable() + .LeftJoin((x, d) => x.DishesCode == d.CustomCode) + .Where(x => nos.Contains(x.OrderNo)) + .Select((x, d) => new DishesDto + { + No = x.OrderNo, + DishesCode = x.DishesCode, + Name = d.Name, + ImageUrl = d.ImageUrl, + Number = x.Number, + Price = x.Price + }) + .ToListAsync(); + + + pageResult.Data.ForEach(item => + { + item.Dishes = dtos.Where(x => x.No == item.No).ToList(); + }); + + return pageResult; + } + + //******************************************************* help methods ************************************************************/ diff --git a/Src/Dlhis.Canteen/appsettings.Development.json b/Src/Dlhis.Canteen/appsettings.Development.json index 74bdd380..f67d9370 100644 --- a/Src/Dlhis.Canteen/appsettings.Development.json +++ b/Src/Dlhis.Canteen/appsettings.Development.json @@ -15,7 +15,7 @@ "SlaveConnectionString": [], "Timeout": 30, "SlowSqlTime": 1, - "EnableSqlLog": false + "EnableSqlLog": true }, "SwaggerOptions": { "Enable": true, diff --git a/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceShiftRelationshipEntity.cs b/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceShiftRelationshipEntity.cs index b4419ca8..e96e4a78 100644 --- a/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceShiftRelationshipEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/BusinessPlaceShiftRelationshipEntity.cs @@ -4,14 +4,14 @@ using SqlSugar; namespace Dlhis.Entity.Basic.Entity; -[SugarTable(TableName = "BusinessPlaceShiftRelationship", TableDescription = "营业点餐次关系")] +[SugarTable(TableName = "BusinessPlaceShiftRelationship", TableDescription = "营业点餐别关系")] public class BusinessPlaceShiftRelationshipEntity : SugarBaseEntity, ITenantId { [SugarColumn(ColumnDescription = "营业点code")] public Guid PlaceCode { get; set; } - [SugarColumn(ColumnDescription = "餐次code")] + [SugarColumn(ColumnDescription = "餐别code")] public Guid ShiftCode { get; set; } public string TenantId { get; set; } From aba4fa7ee9ba7fce715f5c1b0af38acf4441736d Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Wed, 20 Mar 2024 09:55:13 +0800 Subject: [PATCH 12/50] =?UTF-8?q?fix=20=E5=88=A0=E9=99=A4=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Common/Services/ApiLogService.cs | 4 ++-- Src/Dlhis.Entity/Common/ApiLogEntity.cs | 2 +- .../CommonJobs/DelApiLogTaskJob.cs | 13 +++++++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Src/Dlhis.Common/Services/ApiLogService.cs b/Src/Dlhis.Common/Services/ApiLogService.cs index 2a6b9550..22c3d02c 100644 --- a/Src/Dlhis.Common/Services/ApiLogService.cs +++ b/Src/Dlhis.Common/Services/ApiLogService.cs @@ -20,11 +20,11 @@ namespace Dlhis.Common.Services } public async Task> GetLogsAsync(ApiLogRequest request) - { + { var logs = await _dbContext.ChangeDb("log").Queryable() .WhereIF(request.Search.IsPresent(), x => x.Message.Contains(request.Search)) .WhereIF(request.Level.HasValue, x => x.Level == request.Level) - .OrderBy(x => x.Timestamp,OrderByType.Desc) + .OrderBy(x => x.Timestamp, OrderByType.Desc) .Select() .ToPageListAsync(request); diff --git a/Src/Dlhis.Entity/Common/ApiLogEntity.cs b/Src/Dlhis.Entity/Common/ApiLogEntity.cs index e2005b72..2f8fd03a 100644 --- a/Src/Dlhis.Entity/Common/ApiLogEntity.cs +++ b/Src/Dlhis.Entity/Common/ApiLogEntity.cs @@ -9,7 +9,7 @@ namespace Dlhis.Entity.Common; /// api日志表 /// [SugarTable(TableName = "Logs", TableDescription = "api日志表")] -public class ApiLogEntity +public class ApiLogEntity : SugarBaseEntity { /// /// 时间 diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs index d623561b..714d4e58 100644 --- a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs +++ b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs @@ -26,10 +26,19 @@ namespace Dlhis.ScheduledTask.CommonJobs; var logs = await _dbContext.ChangeDb("log") .Queryable() .Where(x => x._ts <= threeDaysAgoStart) - .OrderBy(x => x._ts, OrderByType.Asc) + .Select(x => x.Id) .ToListAsync(); - await _dbContext.ChangeDb("log").DeleteReallyAsync(logs); + var lst = new List(); + foreach (var id in logs) + { + var entity = new ApiLogEntity + { + Id = id, + }; + lst.Add(entity); + } + await _dbContext.ChangeDb("log").DeleteReallyAsync(lst); } catch (Exception ex) { From 03b73515b50902f91c1b582d9aa91b716247355c Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 10:59:08 +0800 Subject: [PATCH 13/50] =?UTF-8?q?fix=20tree=E8=BF=94=E5=9B=9E=E8=90=A5?= =?UTF-8?q?=E4=B8=9A=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dishes/Response/DishesCategoryResponse.cs | 5 +++++ .../Services/Implements/DishesCategoryService.cs | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs index fdaca520..024d2606 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesCategoryResponse.cs @@ -2,6 +2,11 @@ public class DishesCategoryTreeResponse { + /// + /// 营业点code + /// + public Guid BusinessPlaceCode { get; set; } + public Guid? PCode { get; set; } public Guid Code { get; set; } diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs index 8fda1dc2..18f1f8e9 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs @@ -1,5 +1,6 @@ using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; +using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Entities; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.SqlSugar.Services; @@ -18,7 +19,17 @@ public class DishesCategoryService : IDishesCategoryService public async Task> TreeAsync() { - var categories = await _dbContext.Queryable().Select().ToListAsync(); + var categories = await _dbContext.Queryable() + .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) + .Select((x, bplace) => new DishesCategoryTreeResponse + { + BusinessPlaceCode = bplace.Code, + Code = x.Code, + Name = x.Name, + PCode = x.PCode, + }) + .ToListAsync(); + var tops = categories.Where(x => !x.PCode.HasValue).ToList(); tops.ForEach(x => From 4366b68831b53cdc8e22f47c68af66a5e97e334d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 12:42:48 +0800 Subject: [PATCH 14/50] =?UTF-8?q?fix=20=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj | 4 + .../{Response => Dtos}/BusinessPlaceDto.cs | 2 +- .../IBusinessPlacePermissionsApi.cs | 4 +- Src/Dlhis.Basic.Api/Response/GetMyResponse.cs | 13 - .../Services/Implements/DishesMenuService.cs | 2 +- .../BusinessPlacePermissionsController.cs | 5 +- .../Places/Dtos/BusinessPlaceDto.cs | 7 + .../Places/Response/BusinessPlaceDto.cs | 8 - .../Places/Response/GetMyResponse.cs | 7 - .../IBusinessPlacePermissionsService.cs | 3 +- .../BusinessPlacePermissionsService.cs | 12 +- .../Order/Controllers/OrdersController.cs | 73 ++-- ...eRequest.cs => OrderBookingPageRequest.cs} | 2 +- .../Order/Response/OrderBookingResponse.cs | 34 ++ .../Order/Response/OrderResponse.cs | 5 - .../Order/Services/IBookingOrderService.cs | 21 + .../Order/Services/IOrderService.cs | 20 +- .../Services/Implements/BaseOrderService.cs | 133 +++++++ .../Implements/BookingOrderService.cs | 210 ++++++++++ .../Order/Services/Implements/OrderService.cs | 367 +++--------------- .../Entities}/MealSupplementRecordEntity.cs | 8 +- .../Enums/BalanceRecordSourceEnumType.cs | 4 +- .../Enums/CanteenOrderStatusEnumType.cs | 6 +- .../Channel/MealSupplementHandler.cs | 2 +- .../Implements/MealSupplementService.cs | 2 +- 25 files changed, 514 insertions(+), 440 deletions(-) rename Src/Dlhis.Basic.Api/{Response => Dtos}/BusinessPlaceDto.cs (87%) delete mode 100644 Src/Dlhis.Basic.Api/Response/GetMyResponse.cs create mode 100644 Src/Dlhis.Basic/Places/Dtos/BusinessPlaceDto.cs delete mode 100644 Src/Dlhis.Basic/Places/Response/BusinessPlaceDto.cs delete mode 100644 Src/Dlhis.Basic/Places/Response/GetMyResponse.cs rename Src/Dlhis.Canteen/Order/Request/{OrderPageRequest.cs => OrderBookingPageRequest.cs} (63%) create mode 100644 Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs delete mode 100644 Src/Dlhis.Canteen/Order/Response/OrderResponse.cs create mode 100644 Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs create mode 100644 Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs create mode 100644 Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs rename Src/Dlhis.Entity/{Basic/Entity => Canteen/Entities}/MealSupplementRecordEntity.cs (94%) diff --git a/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj b/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj index ae3784a1..2311965f 100644 --- a/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj +++ b/Src/Dlhis.Basic.Api/Dlhis.Basic.Api.csproj @@ -10,4 +10,8 @@ + + + + diff --git a/Src/Dlhis.Basic.Api/Response/BusinessPlaceDto.cs b/Src/Dlhis.Basic.Api/Dtos/BusinessPlaceDto.cs similarity index 87% rename from Src/Dlhis.Basic.Api/Response/BusinessPlaceDto.cs rename to Src/Dlhis.Basic.Api/Dtos/BusinessPlaceDto.cs index cffafdb3..15003d35 100644 --- a/Src/Dlhis.Basic.Api/Response/BusinessPlaceDto.cs +++ b/Src/Dlhis.Basic.Api/Dtos/BusinessPlaceDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Dlhis.Basic.Api.Response +namespace Dlhis.Basic.Api.Dtos { public class BusinessPlaceDto { diff --git a/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs b/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs index 3b6be007..9d5cf5f4 100644 --- a/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs +++ b/Src/Dlhis.Basic.Api/IBusinessPlacePermissionsApi.cs @@ -1,4 +1,4 @@ -using Dlhis.Basic.Api.Response; +using Dlhis.Basic.Api.Dtos; using Kurisu.Core.Result; using Kurisu.RemoteCall.Attributes; @@ -9,5 +9,5 @@ public interface IBusinessPlacePermissionsApi { [Auth] [Get("/api/businessplacepermissions/my")] - Task> GetMyAsync(); + Task>> GetMyAsync(); } diff --git a/Src/Dlhis.Basic.Api/Response/GetMyResponse.cs b/Src/Dlhis.Basic.Api/Response/GetMyResponse.cs deleted file mode 100644 index 9e2df3ee..00000000 --- a/Src/Dlhis.Basic.Api/Response/GetMyResponse.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Dlhis.Basic.Api.Response -{ - public class GetMyResponse - { - public List dtos { get; set; } - } -} diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index cec11e46..1ab10afd 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -96,7 +96,7 @@ public class DishesMenuService : IDishesMenuService //检验权限 var res = await _businessPlacePermissionsService.GetMyAsync(); - var myBps = res.dtos.Select(x => x.Code).ToList(); + var myBps = res.Select(x => x.Code).ToList(); myBps.Contains(request.BusinessPlaceCode).ThrowIfFalse("非经营营业点,无法保存菜单"); diff --git a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs index e9bdf549..84eb4142 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs @@ -4,11 +4,12 @@ using Dlhis.Basic.BusinessPlace.Services; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Dlhis.Basic.Places.Dtos; namespace Dlhis.Basic.BusinessPlace.Controllers; /// -/// 营业点管理 +/// 营业点权限管理 /// [Authorize] [Route("api/[controller]")] @@ -39,7 +40,7 @@ public class BusinessPlacePermissionsController /// /// [HttpGet("my")] - public async Task GetMy() + public async Task> GetMy() { return await _businessPlacePermissionsService.GetMyAsync(); } diff --git a/Src/Dlhis.Basic/Places/Dtos/BusinessPlaceDto.cs b/Src/Dlhis.Basic/Places/Dtos/BusinessPlaceDto.cs new file mode 100644 index 00000000..1f8a04cd --- /dev/null +++ b/Src/Dlhis.Basic/Places/Dtos/BusinessPlaceDto.cs @@ -0,0 +1,7 @@ +namespace Dlhis.Basic.Places.Dtos; + +public class BusinessPlaceDto +{ + public Guid Code { get; set; } + public string Name { get; set; } +} diff --git a/Src/Dlhis.Basic/Places/Response/BusinessPlaceDto.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlaceDto.cs deleted file mode 100644 index a5dd68f7..00000000 --- a/Src/Dlhis.Basic/Places/Response/BusinessPlaceDto.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Dlhis.Basic.BusinessPlace.Response -{ - public class BusinessPlaceDto - { - public Guid Code { get; set; } - public string Name { get; set; } - } -} diff --git a/Src/Dlhis.Basic/Places/Response/GetMyResponse.cs b/Src/Dlhis.Basic/Places/Response/GetMyResponse.cs deleted file mode 100644 index 1a3b6fd2..00000000 --- a/Src/Dlhis.Basic/Places/Response/GetMyResponse.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Dlhis.Basic.BusinessPlace.Response -{ - public class GetMyResponse - { - public List dtos { get; set; } - } -} diff --git a/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs index d36816ee..a7589141 100644 --- a/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs @@ -1,6 +1,7 @@ using Dlhis.Basic.Places.Request; using Dlhis.Basic.BusinessPlace.Response; using Kurisu.Core.DataAccess.Dto; +using Dlhis.Basic.Places.Dtos; namespace Dlhis.Basic.BusinessPlace.Services; @@ -10,5 +11,5 @@ public interface IBusinessPlacePermissionsService : IScopeDependency Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request); - Task GetMyAsync(); + Task> GetMyAsync(); } diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs index 2141ab41..8a9d175e 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs @@ -5,6 +5,7 @@ using Kurisu.Core.DataAccess.Dto; using Kurisu.Core.User.Abstractions; using Kurisu.SqlSugar.Services; using Mapster; +using Dlhis.Basic.Places.Dtos; namespace Dlhis.Basic.BusinessPlace.Services.Implements; @@ -24,7 +25,7 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService throw new NotImplementedException(); } - public async Task GetMyAsync() + public async Task> GetMyAsync() { var userId = _currentUser.GetIntSubjectId(); @@ -34,15 +35,10 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService .Distinct() .ToListAsync(); - var dtos = await _dbContext.Queryable() + return await _dbContext.Queryable() .Where(x => guids.Contains(x.Code)) .Select() - .ToListAsync(); - var myResponse = new GetMyResponse - { - dtos = dtos - }; - return myResponse; + .ToListAsync(); } public async Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request) diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index fc1ee44e..67e49e62 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -6,7 +6,6 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Canteen.Dishes.Controllers; @@ -19,21 +18,12 @@ namespace Dlhis.Canteen.Dishes.Controllers; public class OrdersController : ControllerBase { private readonly IOrderService _orderService; + private readonly IBookingOrderService _bookingOrderService; - public OrdersController(IOrderService orderService) + public OrdersController(IOrderService orderService, IBookingOrderService bookingOrderService) { _orderService = orderService; - } - - /// - /// 订单分页 - /// - /// - /// - [HttpGet("page")] - public async Task> GetPageAsync([FromQuery] OrderPageRequest request) - { - return await _orderService.GetPageAsync(request); + _bookingOrderService = bookingOrderService; } /// @@ -60,39 +50,6 @@ public class OrdersController : ControllerBase return await _orderService.AddAsync(request); } - - /// - /// 订餐 - /// - /// - [HttpPost("booking")] - [Transactional] - public async Task Booking(BookingMealRequest request) - { - await _orderService.BookingAsync(request); - } - - ///// - ///// 获取详情 - ///// - ///// - ///// - //[HttpGet("details")] - //public async Task> GetDetailsAsync(string no) - //{ - // return await _orderService.GetDetailsAsync(no); - //} - - /// - /// 充值 - /// - /// - [HttpPost("recharge")] - public async Task ReCharge() - { - - } - /// /// 订单聚合数据 /// @@ -102,4 +59,28 @@ public class OrdersController : ControllerBase { return await _orderService.GetOrdersAggregationAsync(page); } + + //************************************************************** 订餐功能 ********************************************************************************** + + /// + /// 订餐 + /// + /// + [HttpPost("booking")] + [Transactional] + public async Task Booking(BookingMealRequest request) + { + await _bookingOrderService.BookingAsync(request); + } + + /// + /// 订单分页 + /// + /// + /// + [HttpGet("booking/page")] + public async Task> GetBookingPageAsync([FromQuery] OrderBookingPageRequest request) + { + return await _bookingOrderService.GetBookingPageAsync(request); + } } diff --git a/Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs similarity index 63% rename from Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs rename to Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs index ad268044..3dd0fc6d 100644 --- a/Src/Dlhis.Canteen/Order/Request/OrderPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs @@ -2,7 +2,7 @@ namespace Dlhis.Canteen.Order.Request; -public class OrderPageRequest : PageDto +public class OrderBookingPageRequest : PageDto { } diff --git a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs new file mode 100644 index 00000000..419d1fc9 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs @@ -0,0 +1,34 @@ +namespace Dlhis.Canteen.Order.Response; + +public class OrderBookingResponse +{ + /// + /// 订单号 + /// + public string No { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 配送地址 + /// + public string DeliveryAddress { get; set; } + + /// + /// 订单金额 + /// + public decimal Amount { get; set; } + + /// + /// 工号 + /// + public string UserCode { get; set; } + + /// + /// + /// + public string UserNo { get; set; } +} diff --git a/Src/Dlhis.Canteen/Order/Response/OrderResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderResponse.cs deleted file mode 100644 index 0486b439..00000000 --- a/Src/Dlhis.Canteen/Order/Response/OrderResponse.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Dlhis.Canteen.Order.Response; - -public class OrderResponse -{ -} diff --git a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs new file mode 100644 index 00000000..bbe5116c --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs @@ -0,0 +1,21 @@ +using Dlhis.Canteen.Dishes.Request; +using Dlhis.Canteen.Order.Request; +using Dlhis.Canteen.Order.Response; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Canteen.Order.Services; + +public interface IBookingOrderService +{ + /// + /// 订餐 + /// + /// + /// + Task BookingAsync(BookingMealRequest request); + + + Task> GetBookingPageAsync(OrderBookingPageRequest request); + + Task CancelOrderAsync(); +} diff --git a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs index 28c772df..c6ddb582 100644 --- a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs @@ -1,5 +1,4 @@ -using Dlhis.Canteen.Dishes.Request; -using Dlhis.Canteen.Order.Request; +using Dlhis.Canteen.Order.Request; using Dlhis.Canteen.Order.Response; using Kurisu.Core.DataAccess.Dto; @@ -7,7 +6,7 @@ namespace Dlhis.Canteen.Order.Services; public interface IOrderService : IScopeDependency { - Task> GetPageAsync(OrderPageRequest request); + Task AddAsync(OrderAddRequest request); @@ -19,20 +18,5 @@ public interface IOrderService : IScopeDependency /// Task DeviceConsume(OrderAddRequest request); - /// - /// 订餐 - /// - /// - /// - Task BookingAsync(BookingMealRequest request); - - - ///// - ///// 获取订单详情 - ///// - ///// - ///// - //Task> GetDetailsAsync(string no); - Task> GetOrdersAggregationAsync(PageDto page); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs new file mode 100644 index 00000000..ce759c46 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs @@ -0,0 +1,133 @@ +using Dlhis.Basic.Api; +using Dlhis.Canteen.Setting.Services; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.UnifyResultAndValidation; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.User.Abstractions; +using Kurisu.SqlSugar.Services; +using Mapster; +using SqlSugar; + +namespace Dlhis.Canteen.Order.Services.Implements; + +public abstract class BaseOrderService +{ + private readonly ICanteenSettingService _canteenSettingService; + private readonly IDbContext _dbContext; + private readonly ICurrentUser _currentUser; + private readonly IDevicePermissionApi _devicePermissionApi; + private readonly ILogger _logger; + private Dictionary _settings; + + public BaseOrderService(ICanteenSettingService canteenSettingService, + IDbContext dbContext, + ICurrentUser currentUser, + IDevicePermissionApi devicePermissionApi, + ILogger logger) + { + _canteenSettingService = canteenSettingService; + _dbContext = dbContext; + _currentUser = currentUser; + _devicePermissionApi = devicePermissionApi; + _logger = logger; + } + + protected BaseOrderService(ICanteenSettingService canteenSettingService) + { + _canteenSettingService = canteenSettingService; + } + + protected IDbContext DbContext => _dbContext; + + protected ICurrentUser CurrentUser => _currentUser; + + /// + /// 检查权限 + /// + /// + /// + /// + protected async Task CheckPermissionAsync(string userNo, string deviceUniqueNo) + { + var uniqueNosResult = await _devicePermissionApi.GetCanteenDeviceUniqueNosByUserNoAsync(userNo); + var uniqueNos = uniqueNosResult.Data; + + uniqueNos.Contains(deviceUniqueNo).ThrowIfFalse("无消费权限"); + } + + + /// + /// 设备并发更新 需要抛出VersionExceptions + /// + /// + /// + /// 并发冲突处理次数 + /// + /// + /// + protected async Task ContinueUpdateAsync(Func func, int retry, string errorMessage = null) + { + for (int i = 0; i < retry; i++) + { + try + { + await func(); + return; + } + catch (Exception ex) when (ex is VersionExceptions) + { + _logger.LogWarning(ex, ex.Message); + } + catch (Exception) + { + throw; + } + } + + throw new UserFriendlyException(errorMessage ?? "操作失败,请重试"); + } + + + /// + /// 获取参数配置 + /// + /// + /// + /// + /// + protected async Task GetSettingAsync(CanteenSettingItemEnumType item, T defaultValue = default) + { + if (_settings == null) + { + var subjectId = _currentUser.GetIntSubjectId(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + if (jinkoCode.IsPresent()) + { + gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + } + _settings = await _canteenSettingService.GetUserSettingAsync(gainfo.No); + } + + + if (_settings.TryGetValue(item, out var v)) + { + try + { + if (int.TryParse(v, out var n)) + { + return n.Adapt(); + } + + return v.Adapt(); + } + catch (Exception) + { + return defaultValue; + } + } + + return defaultValue; + } +} diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs new file mode 100644 index 00000000..1561ecf0 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -0,0 +1,210 @@ +using Dlhis.Canteen.Dishes.Request; +using Dlhis.Canteen.Order.Request; +using Dlhis.Canteen.Order.Response; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Canteen.Entities; +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.AspNetCore.Utils; +using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Services; +using Kurisu.Core.User.Abstractions; +using Dlhis.Canteen.Setting.Services; +using Dlhis.Basic.Api; +using Kurisu.SqlSugar.Extensions; +using SqlSugar; +using Mapster; + +namespace Dlhis.Canteen.Order.Services.Implements; + +public class BookingOrderService : BaseOrderService, IBookingOrderService +{ + private readonly IDbContext _dbContext; + private readonly ICurrentUser _currentUser; + private readonly IDisheMenuApi _disheMenuApi; + + public BookingOrderService(ICanteenSettingService canteenSettingService, IDisheMenuApi disheMenuApi) : base(canteenSettingService) + { + _disheMenuApi = disheMenuApi; + } + + public async Task BookingAsync(BookingMealRequest request) + { + var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType); + + var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); + + //预定时间 + var now = DateTime.Now; + + var bookingDeadline = await GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00); + var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan()); + (now >= dealLine).ThrowIfTrue("超出订餐时间"); + + //菜单存在 + var menuDetailResult = await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); + var menuDetail = menuDetailResult.Data; + menuDetail.ThrowIfNull("预定失败,菜品已经下架"); + + var order = new CanteenOrderEntity + { + RequestJson = request.ToJson(), + ThirdNo = string.Empty, + Type = BalanceRecordTypeEnumType.Out, + ApplicationType = CanteenApplicaitonTypeEnumType.Booking, + Name = gainfo.Name, + Source = request.Source, + UserNo = gainfo.No, + UserCode = gainfo.Code, + Amount = -Math.Abs(menuDetail.Price), + BusinessPlaceCode = request.BusinessPlaceCode, + BusinessShiftCode = null, + ShiftType = request.ShiftType, + CostDate = now.Date, + CostId = gainfo.CostId, + DepartmentNo = gainfo.DepartmentNo, + DeviceUniqueNo = string.Empty, + DeliveryAddress = request.DeliveryAddress, + + No = SnowFlakeHelper.Instance.NextId().ToString(), + SubsidiesFromMonth = now.ToString("yyyyMM"), + IsOffline = false, + IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant), + + OriginTenantId = gainfo.Factory,//人员可能跨基地消费 + + Status = BalanceRecordStatusEnumType.Valid, + OrderStatus = CanteenOrderStatusEnumType.Success, + + CostDateTime = now, + + //标识当前消费的基地 + TenantId = businessPlace.TenantId, + }; + + var orderId = await _dbContext.InsertReturnIdentityAsync(order); + await ContinueUpdateAsync(async () => + { + await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); + var menuDetail = menuDetailResult.Data; + menuDetail.ThrowIfNull("预定失败,菜品已经下架"); + menuDetail.Number -= 1; + + (menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄"); + + var mealInfo = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + if (mealInfo == null) + { + await _dbContext.InsertAsync(new GainfoMealEntity + { + Balance = 0, + BalanceOfRecharge = 0, + BalanceOfSubsidies = 0, + UserCode = gainfo.Code, + UserNo = gainfo.No, + Version = 0, + }); + + (mealInfo == null).ThrowIfTrue("余额不足,无法消费"); + } + //金额+- + mealInfo.Balance += order.Amount; + (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); + + var effect = await _dbContext.Updateable() + .SetColumns(x => x.Balance == mealInfo.Balance) + .SetColumns(x => x.Version == x.Version + 1) + .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 + .ExecuteCommandAsync(); + + if (effect <= 0) throw new VersionExceptions("更新版本冲突"); + + effect = await _dbContext.Updateable() + .SetColumns(x => x.Number == menuDetail.Number) + .SetColumns(x => x.Version == x.Version + 1) + .SetColumns(x => x.ModifiedTime == now) + .Where(x => x.Date == menuDetail.Date + && x.ShiftType == request.ShiftType + && x.BusinessPlaceCode == request.BusinessPlaceCode + && x.DishesCode == request.DishesCode + && x.Version == menuDetail.Version + ) + .ExecuteCommandAsync(); + + if (effect <= 0) throw new VersionExceptions("更新版本冲突"); + + //写入记录 + var balanceRecord = order.Adapt(); + await _dbContext.InsertAsync(balanceRecord); + + await _dbContext.InsertAsync(new CanteenOrderDetailEntity + { + OrderNo = order.No, + DishesCode = request.DishesCode, + Price = menuDetail.Price, + //Unit + Number = 1, + }); + + }, 10); + } + + + public async Task> GetBookingPageAsync(OrderBookingPageRequest request) + { + var page = await _dbContext.Queryable() + .LeftJoin((x, ga) => x.UserNo == ga.No) + .Select(x => new OrderBookingResponse + { + No = x.No, + DeliveryAddress = x.DeliveryAddress, + Remark = x.Remark, + Amount = x.Amount + }) + .ToPageListAsync(request); + + return page; + } + + public async Task CancelOrderAsync() + { + throw new NotImplementedException(); + } + + + + + + + + /// + /// 检查我的订餐是否存在,存在抛出异常 + /// + /// + /// + /// + private async Task CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType) + { + var subjectId = _currentUser.GetIntSubjectId(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + if (jinkoCode.IsPresent()) + { + gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + } + + var start = bookingDate.Date.AddDays(-1); + var end = start.AddDays(1).AddSeconds(-1); + + var exists = await _dbContext.Queryable() + .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + .Where(x => x.ShiftType == shiftType) + .Where(x => x.UserNo == gainfo.No) + .Where(x => x.CreateTime >= start && x.CreateTime <= end) + .AnyAsync(); + + exists.ThrowIfTrue("不可重复订餐"); + + return gainfo; + } +} diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 87bf6d86..821b6610 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -18,193 +18,18 @@ using SqlSugar; using Dlhis.Canteen.Order.Response; using Dlhis.Canteen.Dishes; using Dlhis.Canteen.Order.Request; -using System.Numerics; -using MySqlX.XDevAPI.Relational; namespace Dlhis.Canteen.Order.Services.Implements; -public class OrderService : IOrderService +public class OrderService : BaseOrderService, IOrderService { - private readonly IDbContext _dbContext; - private readonly ICanteenSettingService _canteenSettingService; - private readonly IDevicePermissionApi _devicePermissionApi; - private readonly ICurrentUser _currentUser; - private readonly IDisheMenuApi _disheMenuApi; - private readonly ILogger _logger; - - public OrderService(IDbContext dbContext, - ICanteenSettingService canteenSettingService, - IDevicePermissionApi devicePermissionApi, - ICurrentUser currentUser, - IDisheMenuApi disheMenuApi, + public OrderService(ICanteenSettingService canteenSettingService, IDbContext dbContext, + ICurrentUser currentUser, IDevicePermissionApi devicePermissionApi, ILogger logger) + : base(canteenSettingService, dbContext, currentUser, devicePermissionApi, logger) { - _dbContext = dbContext; - _canteenSettingService = canteenSettingService; - _devicePermissionApi = devicePermissionApi; - _currentUser = currentUser; - _disheMenuApi = disheMenuApi; - _logger = logger; } - public async Task> GetPageAsync(OrderPageRequest request) - { - var page = await _dbContext.Queryable() - .Select() - .ToPageListAsync(request); - - return page; - } - - private async Task CheckPAsync(string userNo, string deviceUniqueNo) - { - var uniqueNosResult = await _devicePermissionApi.GetCanteenDeviceUniqueNosByUserNoAsync(userNo); - var uniqueNos = uniqueNosResult.Data; - - uniqueNos.Contains(deviceUniqueNo).ThrowIfFalse("无消费权限"); - } - - public async Task BookingAsync(BookingMealRequest request) - { - var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType); - - var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); - - //预定时间 - var now = DateTime.Now; - - var settings = await _canteenSettingService.GetUserSettingAsync(gainfo.Code); - var bookingDeadline = GetSetting(settings, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00); - var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan()); - (now >= dealLine).ThrowIfTrue("超出订餐时间"); - - //菜单存在 - var menuDetailResult = await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); - var menuDetail = menuDetailResult.Data; - menuDetail.ThrowIfNull("预定失败,菜品已经下架"); - - var order = new CanteenOrderEntity - { - RequestJson = request.ToJson(), - ThirdNo = string.Empty, - Type = BalanceRecordTypeEnumType.Out, - ApplicationType = CanteenApplicaitonTypeEnumType.Booking, - Name = gainfo.Name, - Source = request.Source, - UserNo = gainfo.No, - UserCode = gainfo.Code, - Amount = -Math.Abs(menuDetail.Price), - BusinessPlaceCode = request.BusinessPlaceCode, - BusinessShiftCode = null, - ShiftType = request.ShiftType, - CostDate = now.Date, - CostId = gainfo.CostId, - DepartmentNo = gainfo.DepartmentNo, - DeviceUniqueNo = string.Empty, - DeliveryAddress = request.DeliveryAddress, - - No = SnowFlakeHelper.Instance.NextId().ToString(), - SubsidiesFromMonth = now.ToString("yyyyMM"), - IsOffline = false, - IsCostCrossTenant = GetSetting(settings, CanteenSettingItemEnumType.AllowCrossTenant), - - OriginTenantId = gainfo.Factory,//人员可能跨基地消费 - - Status = BalanceRecordStatusEnumType.Valid, - OrderStatus = CanteenOrderStatusEnumType.Successful, - - CostDateTime = now, - - //标识当前消费的基地 - TenantId = businessPlace.TenantId, - }; - - var orderId = await _dbContext.InsertReturnIdentityAsync(order); - await ContinueUpdateAsync(async () => - { - await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); - var menuDetail = menuDetailResult.Data; - menuDetail.ThrowIfNull("预定失败,菜品已经下架"); - menuDetail.Number -= 1; - - (menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄"); - - var mealInfo = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - if (mealInfo == null) - { - await _dbContext.InsertAsync(new GainfoMealEntity - { - Balance = 0, - BalanceOfRecharge = 0, - BalanceOfSubsidies = 0, - UserCode = gainfo.Code, - UserNo = gainfo.No, - Version = 0, - }); - - (mealInfo == null).ThrowIfTrue("余额不足,无法消费"); - } - //金额+- - mealInfo.Balance += order.Amount; - (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); - - var effect = await _dbContext.Updateable() - .SetColumns(x => x.Balance == mealInfo.Balance) - .SetColumns(x => x.Version == x.Version + 1) - .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 - .ExecuteCommandAsync(); - - if (effect <= 0) throw new VersionExceptions("更新版本冲突"); - - effect = await _dbContext.Updateable() - .SetColumns(x => x.Number == menuDetail.Number) - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.ModifiedTime == now) - .Where(x => x.Date == menuDetail.Date - && x.ShiftType == request.ShiftType - && x.BusinessPlaceCode == request.BusinessPlaceCode - && x.DishesCode == request.DishesCode - && x.Version == menuDetail.Version - ) - .ExecuteCommandAsync(); - - if (effect <= 0) throw new VersionExceptions("更新版本冲突"); - - //写入记录 - var balanceRecord = order.Adapt(); - await _dbContext.InsertAsync(balanceRecord); - - await _dbContext.InsertAsync(new CanteenOrderDetailEntity - { - OrderNo = order.No, - DishesCode = request.DishesCode, - Price = menuDetail.Price, - //Unit - Number = 1, - }); - - }, 10); - } - - - //public async Task> GetDetailsAsync(string no) - //{ - // return await _dbContext.Queryable() - // .LeftJoin((x, d) => x.DishesCode == d.CustomCode) - // .Where(x => x.OrderNo == no) - // .Select((x, d) => new OrderDetailResponse - // { - // DishesCode = x.DishesCode, - // Price = x.Price, - // Name = d.Name, - // Number = x.Number, - // Unit = x.Unit, - // ImageUrl = d.ImageUrl, - // }) - // .ToListAsync(); - //} - - public async Task DeviceConsume(OrderAddRequest request) { return await AddAsync(request); @@ -216,21 +41,21 @@ public class OrderService : IOrderService _ = long.TryParse(request.UserUniqueNo, out var userId); //根据档案号 - var gainfo = await _dbContext.Queryable() + var gainfo = await DbContext.Queryable() .Where(x => x.No == request.UserUniqueNo || x.Code == request.UserUniqueNo || x.Id == userId || x.CardNo == request.UserUniqueNo) .FirstAsync(); gainfo.ThrowIfNull($"无消费权限"); //消费权限控制 - await CheckPAsync(gainfo.No, request.DeviceUniqueNo); + await CheckPermissionAsync(gainfo.No, request.DeviceUniqueNo); - var canteenUserExists = await _dbContext.Queryable() + var canteenUserExists = await DbContext.Queryable() .Where(x => x.UserNo == gainfo.No) .AnyAsync(); if (!canteenUserExists) { - await _dbContext.InsertAsync(new GainfoMealEntity + await DbContext.InsertAsync(new GainfoMealEntity { UserNo = gainfo.No, Balance = 0, @@ -258,7 +83,7 @@ public class OrderService : IOrderService } //获取人员余额 - return await _dbContext.Queryable() + return await DbContext.Queryable() .LeftJoin((ga, department) => ga.DepartmentNo == department.No) .LeftJoin((ga, department, mealUser) => ga.No == mealUser.UserNo) .Where(ga => ga.Id == gainfo.Id) @@ -281,11 +106,11 @@ public class OrderService : IOrderService /// private async Task ConsumeAsync(ConsumeRequest request, GainfoEntity gainfo) { - var device = await _dbContext.Queryable().Where(x => x.UniqueNo == request.DeviceUniqueNo).Where(x => x.Enable).FirstAsync(); + var device = await DbContext.Queryable().Where(x => x.UniqueNo == request.DeviceUniqueNo).Where(x => x.Enable).FirstAsync(); device.ThrowIfNull("设备不存在或者尚未启用"); - var registry = await _dbContext.Queryable().Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo).FirstAsync(); + var registry = await DbContext.Queryable().Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo).FirstAsync(); registry.ThrowIfNull("设备尚未注册"); - var businessPlaceInfo = await _dbContext.Queryable() + var businessPlaceInfo = await DbContext.Queryable() .LeftJoin((x, sr) => x.Code == sr.PlaceCode) .Where(x => x.Code == registry.BusinessPlaceCode) .Select((x, sr) => new @@ -298,7 +123,7 @@ public class OrderService : IOrderService businessPlaceInfo.ThrowIfNull("营业点尚未设置"); //获取当前消费餐次 - var shifts = await _dbContext.Queryable().Where(x => x.ShiftCode == businessPlaceInfo.ShiftCode).ToListAsync(); + var shifts = await DbContext.Queryable().Where(x => x.ShiftCode == businessPlaceInfo.ShiftCode).ToListAsync(); var shift = shifts.FirstOrDefault(x => new TimePeriod() { @@ -307,8 +132,7 @@ public class OrderService : IOrderService }.IsPresent1(request.CostDateTime)); - var settings = await _canteenSettingService.GetUserSettingAsync(request.UserUniqueNo); - var switchTime = GetSetting(settings, CanteenSettingItemEnumType.BusinessSwitchTime); + var switchTime = await GetSettingAsync(CanteenSettingItemEnumType.BusinessSwitchTime); var shiftTimePeriod = new TimePeriod() { @@ -356,7 +180,7 @@ public class OrderService : IOrderService No = SnowFlakeHelper.Instance.NextId().ToString(), SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"), IsOffline = request.IsOffline, - IsCostCrossTenant = GetSetting(settings, CanteenSettingItemEnumType.AllowCrossTenant), + IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant), OriginTenantId = gainfo.Factory,//人员可能跨基地消费 @@ -371,14 +195,14 @@ public class OrderService : IOrderService TenantId = businessPlaceInfo.TenantId, }; - var orderId = await _dbContext.InsertReturnIdentityAsync(order); + var orderId = await DbContext.InsertReturnIdentityAsync(order); try { - await GenerateConsumeRecordAsync(orderId, settings, shifts, request.CostDateTime); + await GenerateConsumeRecordAsync(orderId, shifts, request.CostDateTime); } catch (Exception ex) { - await _dbContext.Updateable() + await DbContext.Updateable() .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Failure) .SetColumns(x => x.Result == ex.Message) .SetColumns(x => x.ModifiedTime == DateTime.Now) @@ -388,8 +212,8 @@ public class OrderService : IOrderService throw; } - await _dbContext.Updateable() - .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Successful) + await DbContext.Updateable() + .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) .SetColumns(x => x.ModifiedTime == DateTime.Now) .Where(x => x.Id == orderId) .ExecuteCommandAsync(); @@ -403,8 +227,6 @@ public class OrderService : IOrderService /// private async Task RechargeAsync(RechargeRequest request, GainfoEntity gainfo) { - var settings = await _canteenSettingService.GetUserSettingAsync(request.UserUniqueNo); - var order = new CanteenOrderEntity { RequestJson = request.ToJson(), @@ -425,7 +247,7 @@ public class OrderService : IOrderService No = SnowFlakeHelper.Instance.NextId().ToString(), SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"), - IsCostCrossTenant = GetSetting(settings, CanteenSettingItemEnumType.AllowCrossTenant), + IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant), OriginTenantId = gainfo.Factory,//人员可能跨基地消费 @@ -439,14 +261,14 @@ public class OrderService : IOrderService TenantId = gainfo.Factory, }; - var orderId = await _dbContext.InsertReturnIdentityAsync(order); + var orderId = await DbContext.InsertReturnIdentityAsync(order); try { await GenerateRechargeRecordAsync(orderId); } catch (Exception ex) { - await _dbContext.Updateable() + await DbContext.Updateable() .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Failure) .SetColumns(x => x.Result == ex.Message) .Where(x => x.Id == orderId) @@ -455,8 +277,8 @@ public class OrderService : IOrderService throw; } - await _dbContext.Updateable() - .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Successful) + await DbContext.Updateable() + .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) .Where(x => x.Id == orderId) .ExecuteCommandAsync(); } @@ -464,15 +286,15 @@ public class OrderService : IOrderService public async Task> GetOrdersAggregationAsync(PageDto page) { - var subjectId = _currentUser.GetIntSubjectId(); - var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); - var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + var subjectId = CurrentUser.GetIntSubjectId(); + var gainfo = await DbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = CurrentUser.GetUserClaim("jinko-code") ?? string.Empty; if (jinkoCode.IsPresent()) { - gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + gainfo = await DbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); } - var pageResult = await _dbContext.Queryable().Where(x => x.UserNo == gainfo.No) + var pageResult = await DbContext.Queryable().Where(x => x.UserNo == gainfo.No) .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) .Select((x, bplace) => new OrderAggregationResponse @@ -485,7 +307,7 @@ public class OrderService : IOrderService //.LeftJoin((x, bplace, detail) => x.No == detail.OrderNo) var nos = pageResult.Data.Select(x => x.No).ToList(); - var dtos = await _dbContext.Queryable() + var dtos = await DbContext.Queryable() .LeftJoin((x, d) => x.DishesCode == d.CustomCode) .Where(x => nos.Contains(x.OrderNo)) .Select((x, d) => new DishesDto @@ -512,78 +334,17 @@ public class OrderService : IOrderService //******************************************************* help methods ************************************************************/ - /// - /// 设备并发更新 需要抛出VersionExceptions - /// - /// - /// - /// 并发冲突处理次数 - /// - /// - private async Task ContinueUpdateAsync(Func func, int retry) - { - for (int i = 0; i < retry; i++) - { - try - { - await func(); - return; - } - catch (Exception ex) when (ex is VersionExceptions) - { - _logger.LogWarning(ex, ex.Message); - } - catch (Exception) - { - throw; - } - } - - throw new UserFriendlyException("操作失败,请重试"); - } - - - /// - /// 获取参数配置 - /// - /// - /// - /// - /// - /// - private static T GetSetting(Dictionary settings, CanteenSettingItemEnumType item, T defaultValue = default) - { - if (settings.TryGetValue(item, out var v)) - { - try - { - if (int.TryParse(v, out var n)) - { - return n.Adapt(); - } - - return v.Adapt(); - } - catch (Exception) - { - return defaultValue; - } - } - - return defaultValue; - } /// /// 验证参数 /// - /// /// /// /// /// /// - private async Task Verify(Dictionary settings, List shifts, DateTime costDateTime, CanteenOrderEntity order) + private async Task Verify(List shifts, DateTime costDateTime, CanteenOrderEntity order) { //在线 if (!order.IsOffline) @@ -599,15 +360,15 @@ public class OrderService : IOrderService var beginOfDay = DateTime.Today; var endOfDay = beginOfDay.AddHours(23).AddMinutes(59).AddSeconds(59); - var balanceRecords = await _dbContext.Queryable() + var balanceRecords = await DbContext.Queryable() .Where(x => x.UserNo == order.UserNo) .Where(x => x.CreateTime >= beginOfDay && x.CreateTime <= endOfDay) //今天消费记录 .ToListAsync(); - var dayMarketCostMax = GetSetting(settings, CanteenSettingItemEnumType.DayMarketCostMax); + var dayMarketCostMax = await GetSettingAsync(CanteenSettingItemEnumType.DayMarketCostMax); if (dayMarketCostMax != default) { - var businessPlaceCodes = await _dbContext.Queryable() + var businessPlaceCodes = await DbContext.Queryable() .Where(x => x.Catalog == CanteenBusinessPlaceCatalogEnumType.Supermarket) .Select(x => x.Code).ToListAsync(); @@ -618,7 +379,7 @@ public class OrderService : IOrderService } } - var allowRepeatInOneShift = GetSetting(settings, CanteenSettingItemEnumType.AllowRepeatInOneShift, true); + var allowRepeatInOneShift = await GetSettingAsync(CanteenSettingItemEnumType.AllowRepeatInOneShift, true); if (!allowRepeatInOneShift) { //todo 餐次问题 @@ -629,7 +390,7 @@ public class OrderService : IOrderService } } - var onceCostMax = GetSetting(settings, CanteenSettingItemEnumType.OnceCostMax); + var onceCostMax = await GetSettingAsync(CanteenSettingItemEnumType.OnceCostMax); if (onceCostMax != default) { if (Math.Abs(order.Amount) > onceCostMax) @@ -638,7 +399,7 @@ public class OrderService : IOrderService } } - var dayCostMax = GetSetting(settings, CanteenSettingItemEnumType.DayCostMax); + var dayCostMax = await GetSettingAsync(CanteenSettingItemEnumType.DayCostMax); if (dayCostMax != default) { var cost = balanceRecords.Where(x => x.Type == BalanceRecordTypeEnumType.Out).Sum(x => Math.Abs(x.Amount)); @@ -659,15 +420,15 @@ public class OrderService : IOrderService /// private async Task GenerateRechargeRecordAsync(long orderId) { - var order = await _dbContext.Queryable().Where(x => x.Id == orderId).FirstAsync(); + var order = await DbContext.Queryable().Where(x => x.Id == orderId).FirstAsync(); await ContinueUpdateAsync(async () => { - var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var canteenUser = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); //金额+- canteenUser.Balance += order.Amount; - var effect = await _dbContext.Updateable() + var effect = await DbContext.Updateable() .SetColumns(x => x.Balance == canteenUser.Balance) .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version) @@ -677,7 +438,7 @@ public class OrderService : IOrderService //写入记录 var balanceRecord = order.Adapt(); - await _dbContext.InsertAsync(balanceRecord); + await DbContext.InsertAsync(balanceRecord); }, 5); } @@ -686,25 +447,24 @@ public class OrderService : IOrderService /// 生成充值记录 /// /// - /// /// /// /// /// /// - private async Task GenerateConsumeRecordAsync(long orderId, Dictionary settings, List shifts, DateTime costDateTime) + private async Task GenerateConsumeRecordAsync(long orderId, List shifts, DateTime costDateTime) { - var order = await _dbContext.Queryable().Where(x => x.Id == orderId).FirstAsync(); + var order = await DbContext.Queryable().Where(x => x.Id == orderId).FirstAsync(); //校验 - await Verify(settings, shifts, costDateTime, order); + await Verify(shifts, costDateTime, order); - var allowNoBalance = GetSetting(settings, CanteenSettingItemEnumType.AllowNoBalance); + var allowNoBalance = await GetSettingAsync(CanteenSettingItemEnumType.AllowNoBalance); await ContinueUpdateAsync(async () => { if (!allowNoBalance) { - var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var canteenUser = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); //金额+- canteenUser.Balance += order.Amount; if (canteenUser.Balance < 0) @@ -712,7 +472,7 @@ public class OrderService : IOrderService throw new UserFriendlyException("余额不足,无法消费"); } - var effect = await _dbContext.Updateable() + var effect = await DbContext.Updateable() .SetColumns(x => x.Balance == canteenUser.Balance) .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)//必须与查询时的version一致 @@ -723,39 +483,10 @@ public class OrderService : IOrderService //写入记录 var balanceRecord = order.Adapt(); - await _dbContext.InsertAsync(balanceRecord); + await DbContext.InsertAsync(balanceRecord); }, 5); } - /// - /// 检查我的订餐是否存在,存在抛出异常 - /// - /// - /// - /// - private async Task CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType) - { - var subjectId = _currentUser.GetIntSubjectId(); - var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); - var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; - if (jinkoCode.IsPresent()) - { - gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); - } - var start = bookingDate.Date.AddDays(-1); - var end = start.AddDays(1).AddSeconds(-1); - - var exists = await _dbContext.Queryable() - .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) - .Where(x => x.ShiftType == shiftType) - .Where(x => x.UserNo == gainfo.No) - .Where(x => x.CreateTime >= start && x.CreateTime <= end) - .AnyAsync(); - - exists.ThrowIfTrue("不可重复订餐"); - - return gainfo; - } } diff --git a/Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/MealSupplementRecordEntity.cs similarity index 94% rename from Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs rename to Src/Dlhis.Entity/Canteen/Entities/MealSupplementRecordEntity.cs index ef31764d..7875ae74 100644 --- a/Src/Dlhis.Entity/Basic/Entity/MealSupplementRecordEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/MealSupplementRecordEntity.cs @@ -3,7 +3,7 @@ using Kurisu.SqlSugar; using SqlSugar; using SqlSugar.DbConvert; -namespace Dlhis.Entity.Basic.Entity; +namespace Dlhis.Entity.Canteen.Entities; /// /// 餐补记录 @@ -12,7 +12,7 @@ namespace Dlhis.Entity.Basic.Entity; public class MealSupplementRecordEntity : MealSupplementRequestRecordEntity { /// - /// 唯一号 + /// 唯一号(流水号) /// [SugarColumn(IsNullable = false, ColumnDescription = "唯一号", UniqueGroupNameList = new[] { "idx_MealSupplementRecord_UniqueId" })] public override string UniqueId { get; set; } @@ -41,6 +41,10 @@ public class MealSupplementRecordEntity : MealSupplementRequestRecordEntity public bool Sync { get; set; } } + +/// +/// 餐补请求记录 +/// [SugarTable(TableName = "MealSupplementRequestRecord", TableDescription = "餐补请求记录")] public class MealSupplementRequestRecordEntity : SugarBaseEntity { diff --git a/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs index 73c52bc0..ab2d91bc 100644 --- a/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs +++ b/Src/Dlhis.Entity/Canteen/Enums/BalanceRecordSourceEnumType.cs @@ -57,12 +57,12 @@ public enum BalanceRecordSourceEnumType /// /// 来自本基地补贴 /// - [Description("本基地补贴")] + [Description("本基地餐补")] LocalTenantSubsidies = 300, /// /// 来自其他基地补贴 /// - [Description("其他基地补贴")] + [Description("其他基地餐补")] OtherTenantSubsidies, } \ No newline at end of file diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs index 9a670e93..d1a689e5 100644 --- a/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs +++ b/Src/Dlhis.Entity/Canteen/Enums/CanteenOrderStatusEnumType.cs @@ -3,9 +3,9 @@ namespace Dlhis.Entity.Canteen.Enums; /// -/// 就餐订单状态 +/// 餐饮订单状态 /// -[Description("就餐订单状态")] +[Description("餐饮订单状态")] public enum CanteenOrderStatusEnumType { /// @@ -18,7 +18,7 @@ public enum CanteenOrderStatusEnumType /// 成功 /// [Description("成功")] - Successful = 1, + Success = 1, /// /// 取消 diff --git a/Src/Dlhis.External/MealSupplement/Channel/MealSupplementHandler.cs b/Src/Dlhis.External/MealSupplement/Channel/MealSupplementHandler.cs index 25622039..fad99d18 100644 --- a/Src/Dlhis.External/MealSupplement/Channel/MealSupplementHandler.cs +++ b/Src/Dlhis.External/MealSupplement/Channel/MealSupplementHandler.cs @@ -1,4 +1,4 @@ -using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Canteen.Entities; using Dlhis.External.MealSupplement.Request; using Kurisu.AspNetCore.EventBus.Abstractions; using Kurisu.AspNetCore.EventBus.Abstractions.Handler; diff --git a/Src/Dlhis.External/MealSupplement/Services/Implements/MealSupplementService.cs b/Src/Dlhis.External/MealSupplement/Services/Implements/MealSupplementService.cs index 701b9430..bb1f1200 100644 --- a/Src/Dlhis.External/MealSupplement/Services/Implements/MealSupplementService.cs +++ b/Src/Dlhis.External/MealSupplement/Services/Implements/MealSupplementService.cs @@ -1,4 +1,4 @@ -using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Canteen.Entities; using Dlhis.External.MealSupplement.Channel; using Dlhis.External.MealSupplement.Request; using Kurisu.AspNetCore.EventBus.Abstractions; From 7090ee4a334ebfa5aae6e0546f369a5fdd607939 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 13:41:25 +0800 Subject: [PATCH 15/50] =?UTF-8?q?fix=20=E6=95=8F=E6=84=9F=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=B7=B7=E6=B7=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic/Dlhis.Basic.csproj | 2 +- Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Dlhis.Basic.csproj b/Src/Dlhis.Basic/Dlhis.Basic.csproj index 5c48837c..fa24f2db 100644 --- a/Src/Dlhis.Basic/Dlhis.Basic.csproj +++ b/Src/Dlhis.Basic/Dlhis.Basic.csproj @@ -17,7 +17,7 @@ - + diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs index 4b8faadd..a43b0cf8 100644 --- a/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs +++ b/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs @@ -1,5 +1,7 @@ using Dlhis.Entity.Basic.Enums; +using Kurisu.AspNetCore.Utils.Converters; using Kurisu.AspNetCore.Utils.Extensions; +using Newtonsoft.Json; namespace Dlhis.Basic.Organization.Response; @@ -45,6 +47,7 @@ public class GainfoPageResponse /// /// 身份证号 /// + [JsonConverter(typeof(ObfuscateJsonConverter), 6)] public string IdNo { get; set; } /// @@ -86,6 +89,7 @@ public class GainfoPageResponse /// /// 手机号码 /// + [JsonConverter(typeof(ObfuscateJsonConverter), 4)] public string Phone { get; set; } /// From 07672f1d326a7be1ca666c50d187f3fba08b082d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 13:56:33 +0800 Subject: [PATCH 16/50] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96changeDb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs | 6 ++---- Src/Dlhis.Sys/SqlSugarPack.cs | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs index 55877e73..3b79a260 100644 --- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs @@ -12,11 +12,9 @@ public class UserService : IUserService { private readonly IDbContext _dbContext; - public UserService(IDbContext dbContext, IConfiguration configuration) + public UserService(IDbContext dbContext) { - var identityConnection = configuration.GetSection("SqlSugarOptions:IdentityConnectionString").Value; - dbContext.Client.CurrentConnectionConfig.ConnectionString = identityConnection; - _dbContext = dbContext; + _dbContext = dbContext.ChangeDb("identity"); } public async Task> GetPageAsync(UserPageRequest request) diff --git a/Src/Dlhis.Sys/SqlSugarPack.cs b/Src/Dlhis.Sys/SqlSugarPack.cs index 9458f466..98f4153a 100644 --- a/Src/Dlhis.Sys/SqlSugarPack.cs +++ b/Src/Dlhis.Sys/SqlSugarPack.cs @@ -16,7 +16,7 @@ public class SqlSugarPack : BaseAppPack return new List { - new ConnectionConfig + new() { ConfigId = "identity", From bf5c9370371bedda96342347dd64283a2f98e576 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 15:12:30 +0800 Subject: [PATCH 17/50] =?UTF-8?q?fix=20=E8=A1=A5=E5=85=85=E8=90=A5?= =?UTF-8?q?=E4=B8=9A=E7=82=B9=E5=88=86=E9=85=8D=E6=9D=83=E9=99=90=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DishesCategoryService.cs | 35 ++++++++++- .../BusinessPlacePermissionsController.cs | 26 ++++++++- .../BusinessPlacePermissionPageResponse.cs | 2 +- .../IBusinessPlacePermissionsService.cs | 4 ++ .../BusinessPlacePermissionsService.cs | 58 ++++++++++++++++++- Src/Dlhis.Sys.Api/IUserApi.cs | 4 ++ .../Identity/Controllers/UsersController.cs | 7 +++ .../Identity/Services/IUserService.cs | 3 + .../Services/Implements/UserService.cs | 6 ++ 9 files changed, 138 insertions(+), 7 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs index 18f1f8e9..58e2b6b2 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Dishes.Request; +using Dlhis.Basic.BusinessPlace.Services; +using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Entities; @@ -11,16 +12,21 @@ namespace Dlhis.Basic.Dishes.Services.Implements; public class DishesCategoryService : IDishesCategoryService { private readonly IDbContext _dbContext; + private readonly IBusinessPlacePermissionsService _businessPlacePermissionsService; - public DishesCategoryService(IDbContext dbContext) + public DishesCategoryService(IDbContext dbContext, IBusinessPlacePermissionsService businessPlacePermissionsService) { _dbContext = dbContext; + _businessPlacePermissionsService = businessPlacePermissionsService; } public async Task> TreeAsync() { + var mybCodes = await GetMyBusinessPlaceCodesAsync(); + var categories = await _dbContext.Queryable() .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) + .Where(x => mybCodes.Contains(x.BusinessPlaceCode)) .Select((x, bplace) => new DishesCategoryTreeResponse { BusinessPlaceCode = bplace.Code, @@ -42,6 +48,8 @@ public class DishesCategoryService : IDishesCategoryService public async Task SaveAsync(DishesCategorySaveRequest request) { + await CheckBusinessPlacePermissionAsync(request.BusinessPlaceCode); + if (!request.Id.HasValue) { var entity = request.Adapt(); @@ -73,4 +81,27 @@ public class DishesCategoryService : IDishesCategoryService } } } + + /// + /// 检查营业点权限 + /// + /// + /// + private async Task CheckBusinessPlacePermissionAsync(Guid businessPlaceCode) + { + var codes = await GetMyBusinessPlaceCodesAsync(); + codes.Contains(businessPlaceCode).ThrowIfFalse("无权操作当前营业点"); + } + + + /// + /// 获取我管理的营业点 + /// + /// + private async Task> GetMyBusinessPlaceCodesAsync() + { + var mybCodes = (await _businessPlacePermissionsService.GetMyAsync()).Select(x => x.Code).ToList(); + + return mybCodes; + } } diff --git a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs index 84eb4142..e5e7e0c0 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacePermissionsController.cs @@ -28,7 +28,7 @@ public class BusinessPlacePermissionsController /// /// /// - [Authorize(Roles = "admin,tenant-admin")] + [Authorize(Roles = "admin,tenant-admin,businessplace-manager")] [HttpGet("page")] public async Task> GetPageAsync([FromQuery] BusinessPlacePermissionPageRequest request) { @@ -57,4 +57,28 @@ public class BusinessPlacePermissionsController { await _businessPlacePermissionsService.SaveBusinessPlacePermissionAsync(request); } + + /// + /// 通过userid获取分配的营业点信息 + /// + /// + /// + [Authorize(Roles = "admin,tenant-admin")] + [HttpGet("assignments/{userId}")] + public async Task> GetBusinessPlacePermissionByUserIdAsyc(int userId) + { + return await _businessPlacePermissionsService.GetBusinessPlacePermissionByUserIdAsyc(userId); + } + + /// + /// 删除记录 + /// + /// + /// + [Authorize(Roles = "admin,tenant-admin")] + [HttpDelete("{id}")] + public async Task DeleteAssignmentAsync(int id) + { + await _businessPlacePermissionsService.DeleteAssignmentAsync(id); + } } diff --git a/Src/Dlhis.Basic/Places/Response/BusinessPlacePermissionPageResponse.cs b/Src/Dlhis.Basic/Places/Response/BusinessPlacePermissionPageResponse.cs index cac2e41e..9a1273e2 100644 --- a/Src/Dlhis.Basic/Places/Response/BusinessPlacePermissionPageResponse.cs +++ b/Src/Dlhis.Basic/Places/Response/BusinessPlacePermissionPageResponse.cs @@ -7,7 +7,7 @@ public class BusinessPlacePermissionPageResponse /// /// 用户id /// - public string UserId { get; set; } + public int UserId { get; set; } /// /// 用户name diff --git a/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs index a7589141..5d069b56 100644 --- a/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/IBusinessPlacePermissionsService.cs @@ -12,4 +12,8 @@ public interface IBusinessPlacePermissionsService : IScopeDependency Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request); Task> GetMyAsync(); + + Task> GetBusinessPlacePermissionByUserIdAsyc(int id); + + Task DeleteAssignmentAsync(int id); } diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs index 8a9d175e..1143a99b 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs @@ -6,6 +6,9 @@ using Kurisu.Core.User.Abstractions; using Kurisu.SqlSugar.Services; using Mapster; using Dlhis.Basic.Places.Dtos; +using Kurisu.SqlSugar.Extensions; +using Dlhis.Sys.Api; +using Microsoft.AspNetCore.Mvc; namespace Dlhis.Basic.BusinessPlace.Services.Implements; @@ -13,16 +16,36 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; + private readonly IUserApi _userApi; - public BusinessPlacePermissionsService(IDbContext dbContext, ICurrentUser currentUser) + public BusinessPlacePermissionsService(IDbContext dbContext, ICurrentUser currentUser, IUserApi userApi) { _dbContext = dbContext; _currentUser = currentUser; + _userApi = userApi; } public async Task> GetPageAsync(BusinessPlacePermissionPageRequest request) { - throw new NotImplementedException(); + var page = await _dbContext.Queryable() + .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) + .Select((x, bplace) => new BusinessPlacePermissionPageResponse + { + UserId = x.ManagerUserId, + BusinessPlaceCode = x.BusinessPlaceCode, + BusinessPlaceName = bplace.Name, + }) + .ToPageListAsync(request); + + var usersResult = await _userApi.GetUserByIdsAsync(page.Data.Select(x => x.UserId).Distinct().ToList()); + var users = usersResult.Data; + + page.Data.ForEach(item => + { + item.UserName = users.FirstOrDefault(x => x.Id == item.UserId)?.UserName; + }); + + return page; } public async Task> GetMyAsync() @@ -38,7 +61,7 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService return await _dbContext.Queryable() .Where(x => guids.Contains(x.Code)) .Select() - .ToListAsync(); + .ToListAsync(); } public async Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request) @@ -59,4 +82,33 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService await _dbContext.InsertAsync(entity); } } + + public async Task> GetBusinessPlacePermissionByUserIdAsyc(int id) + { + var infos = await _dbContext.Queryable() + .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) + .Where(x => x.ManagerUserId == id) + .Select((x, bplace) => new BusinessPlacePermissionPageResponse + { + UserId = x.ManagerUserId, + BusinessPlaceCode = x.BusinessPlaceCode, + BusinessPlaceName = bplace.Name, + }) + .ToListAsync(); + + var userResult = await _userApi.GetUserByIdAsync(id); + var user = userResult.Data; + + infos.ForEach(item => + { + item.UserName = user?.UserName; + }); + + return infos; + } + + public async Task DeleteAssignmentAsync(int id) + { + await _dbContext.Client.Deleteable().Where(x => x.Id == id).ExecuteCommandAsync(); + } } diff --git a/Src/Dlhis.Sys.Api/IUserApi.cs b/Src/Dlhis.Sys.Api/IUserApi.cs index 643fce04..fba7db5f 100644 --- a/Src/Dlhis.Sys.Api/IUserApi.cs +++ b/Src/Dlhis.Sys.Api/IUserApi.cs @@ -10,4 +10,8 @@ public interface IUserApi [Auth] [Get("/api/users")] Task> GetUserByIdAsync(int id); + + [Auth] + [Post("/api/users/by-ids")] + Task>> GetUserByIdsAsync(List ids); } \ No newline at end of file diff --git a/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs b/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs index 229708bc..2a87166e 100644 --- a/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs +++ b/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs @@ -56,6 +56,13 @@ public class UsersController : ControllerBase return await _userService.GetUserByIdAsync(id); } + [Authorize] + [HttpPost("by-ids")] + public async Task> GetUserByIdsAsync(List ids) + { + return await _userService.GetUserByIdsAsync(ids); + } + /// /// 上传头像 /// diff --git a/Src/Dlhis.Sys/Identity/Services/IUserService.cs b/Src/Dlhis.Sys/Identity/Services/IUserService.cs index 98932a32..619f6e78 100644 --- a/Src/Dlhis.Sys/Identity/Services/IUserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/IUserService.cs @@ -15,4 +15,7 @@ public interface IUserService : IScopeDependency Task GetUserByIdAsync(int id); Task UploadUserAvatarAsync(UserAvatarUploadRequest request); + + + Task> GetUserByIdsAsync(List ids); } diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs index 3b79a260..1f61bff3 100644 --- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs @@ -61,4 +61,10 @@ public class UserService : IUserService { var user = await _dbContext.Queryable().Where(x => x.Id == request.UserNo).Select().FirstAsync(); } + + public async Task> GetUserByIdsAsync(List ids) + { + var users = await _dbContext.Queryable().Where(x => ids.Contains(x.Id)).Select().ToListAsync(); + return users; + } } From a90d4e66a7cb066dab51ea2f812e7cb8a0516684 Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Wed, 20 Mar 2024 15:27:37 +0800 Subject: [PATCH 18/50] =?UTF-8?q?fix=20=E9=A4=90=E8=A1=A5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8F=8A=E6=97=A5=E5=BF=97=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/BalancesController.cs | 10 ++ .../Request/BalanceRecordByUserRequest.cs | 8 + .../Request/OaEMealVoucherDetailRequest.cs | 2 +- .../Order/Request/OaEMealVoucherRequest.cs | 4 - .../Response/BalanceRecordByUserResponse.cs | 149 ++++++++++++++++++ .../Order/Services/IBalanceService.cs | 1 + .../Services/Implements/BalanceService.cs | 15 +- .../MealSupplementRecordController.cs | 36 +++++ .../Request/MealSupplementRecordRequest.cs | 9 ++ .../Response/MealSupplementRecordResponse.cs | 62 ++++++++ .../Services/IMealSupplementRecordService.cs | 11 ++ .../Implements/MealSupplementRecordService.cs | 31 ++++ .../CommonJobs/DelApiLogTaskJob.cs | 4 +- Src/Dlhis.ScheduledTask/Packs/JobPack.cs | 2 +- 14 files changed, 334 insertions(+), 10 deletions(-) create mode 100644 Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs create mode 100644 Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs create mode 100644 Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs create mode 100644 Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs create mode 100644 Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs create mode 100644 Src/Dlhis.Common/Services/IMealSupplementRecordService.cs create mode 100644 Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index 317fbe83..3a6f2f69 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -181,6 +181,16 @@ public class BalancesController : ControllerBase return await _balanceService.GetConsumeDeviceAsync(request); } + /// + /// 查询餐补 + /// + /// + /// + [HttpGet("balanceRecordByUser")] + public async Task> BalanceRecordByUserAsync([FromQuery]BalanceRecordByUserRequest request) + { + return await _balanceService.BalanceRecordByUserAsync(request); + } /// diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs new file mode 100644 index 00000000..877cb0d4 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs @@ -0,0 +1,8 @@ +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Canteen.Order.Request +{ + public class BalanceRecordByUserRequest : PageDto + { + } +} diff --git a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs index 75ce0571..216f85b1 100644 --- a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs @@ -7,6 +7,6 @@ namespace Dlhis.Canteen.Dishes.Request /// /// 餐券id /// - public long OaEMealVoucherId { get; set; } + public long? OaEMealVoucherId { get; set; } } } diff --git a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs index ae1ffa86..232b4eeb 100644 --- a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs @@ -6,9 +6,5 @@ namespace Dlhis.Canteen.Dishes.Request { public class OaEMealVoucherRequest : PageDto { - /// - /// 用户学工号 - /// - public string UserCode { get; set; } } } diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs new file mode 100644 index 00000000..8c8cb4f4 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs @@ -0,0 +1,149 @@ +using Dlhis.Entity.Canteen.Enums; +using SqlSugar.DbConvert; +using SqlSugar; +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Canteen.Order.Response +{ + public class BalanceRecordByUserResponse + { + /// + /// 流水号 + /// + public string No { get; set; } + + /// + /// 档案号/QRCode + /// + public string UserNo { get; set; } + + /// + /// 姓名 + /// + public string Name { get; set; } + + /// + /// 学工号 + /// + public string UserCode { get; set; } + + /// + /// 部门号 + /// + public string DepartmentNo { get; set; } + + /// + /// 来源 + /// + public BalanceRecordSourceEnumType Source { get; set; } + + /// + /// 来源CN + /// + public string SourceCN => Source.GetDescription(); + + /// + /// 收入/支出 + /// + public BalanceRecordTypeEnumType Type { get; set; } + + /// + /// 收入/支出 + /// + public string TypeCN => Type.GetDescription(); + + /// + /// 金额 + - 表示 + /// + public decimal Amount { get; set; } + + + /// + /// 营业点 + /// + public Guid? BusinessPlaceCode { get; set; } + + /// + /// 餐别 + /// + public Guid? BusinessShiftCode { get; set; } + + /// + /// 餐次 + /// + public ShiftEnumType? ShiftType { get; set; } + + /// + /// 餐次CN + /// + public string ShiftTypeCN => ShiftType.GetDescription(); + + /// + /// 所属成本日期 + /// + public DateTime CostDate { get; set; } + + /// + /// 消费机器唯一信息 + /// + public string DeviceUniqueNo { get; set; } + + /// + /// 餐补月份 + /// + public string SubsidiesFromMonth { get; set; } + + /// + /// Ip + /// + public string IP { get; set; } + + /// + /// 成本中心 + /// + public string CostId { get; set; } + + /// + /// 消费者所在基地 + /// + public string OriginTenantId { get; set; } + + /// + /// 成本计算是否允许跨基地范围 + /// + public bool IsCostCrossTenant { get; set; } + + /// + /// 数据状态 + /// + public BalanceRecordStatusEnumType Status { get; set; } + + /// + /// 数据状态CN + /// + public string StatusCN => Status.GetDescription(); + + /// + /// 消费时间 + /// + public DateTime CostDateTime { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 餐饮应用类型 + /// + public CanteenApplicaitonTypeEnumType ApplicationType { get; set; } + + /// + /// 餐饮应用类型CN + /// + public string ApplicationTypeCN => ApplicationType.GetDescription(); + + + public string TenantId { get; set; } + } +} diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index dfe66e07..53d4c688 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -38,4 +38,5 @@ public interface IBalanceService : IScopeDependency Task> GetOaEMealVoucherAsync([FromQuery] OaEMealVoucherRequest request); Task> GetOaEMealVoucherDetailAsync([FromQuery] OaEMealVoucherDetailRequest request); + Task> BalanceRecordByUserAsync(BalanceRecordByUserRequest request); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index 5bbe6c48..aa177030 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -744,6 +744,16 @@ public class BalanceService : IBalanceService return page; } + public async Task> BalanceRecordByUserAsync(BalanceRecordByUserRequest request) + { + var page = await _dbContext.Queryable() + .WhereIF(request.Search.IsPresent(), b => b.UserNo == request.Search || b.UserCode == request.Search) + .Where(b => b.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies || b.Source == BalanceRecordSourceEnumType.OtherTenantSubsidies) + .Select() + .ToPageListAsync(request); + return page; + } + /// /// 获取离线设备 @@ -845,7 +855,7 @@ public class BalanceService : IBalanceService public async Task> GetOaEMealVoucherAsync(OaEMealVoucherRequest request) { var page = await _dbContext.Queryable() - .Where(x => x.UserCode == request.UserCode) + .WhereIF(request.Search.IsPresent(),x => x.UserCode.Contains(request.Search) || x.Name.Contains(request.Search)) .Select() .ToPageListAsync(request); return page; @@ -854,7 +864,8 @@ public class BalanceService : IBalanceService public async Task> GetOaEMealVoucherDetailAsync(OaEMealVoucherDetailRequest request) { var page = await _dbContext.Queryable() - .Where(x => x.VoucherId == request.OaEMealVoucherId) + .WhereIF(request.Search.IsPresent(),x => x.Name.Contains(request.Search)) + .WhereIF(request.OaEMealVoucherId.HasValue, x => x.VoucherId == request.OaEMealVoucherId) .Select() .ToPageListAsync(request); diff --git a/Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs b/Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs new file mode 100644 index 00000000..225243b2 --- /dev/null +++ b/Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs @@ -0,0 +1,36 @@ +using Dlhis.Common.Request; +using Dlhis.Common.Response; +using Dlhis.Common.Services; +using Kurisu.Core.DataAccess.Dto; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Common.MealSupplementRecord +{ + /// + /// 餐补控制器 + /// + [Authorize] + [Route("api/[controller]")] + [ApiController] + public class MealSupplementRecordController + { + private readonly IMealSupplementRecordService _mealSupplementRecordService; + + public MealSupplementRecordController(IMealSupplementRecordService mealSupplementRecordService) + { + _mealSupplementRecordService = mealSupplementRecordService; + } + + /// + /// 餐补分页 + /// + /// + /// + [HttpGet("mealSupplementRecordPage")] + public async Task> MealSupplementRecordPageAsync([FromQuery]MealSupplementRecordRequest request) + { + return await _mealSupplementRecordService.MealSupplementRecordPageAsync(request); + } + } +} diff --git a/Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs b/Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs new file mode 100644 index 00000000..ce64bcce --- /dev/null +++ b/Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs @@ -0,0 +1,9 @@ +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Common.Request +{ + public class MealSupplementRecordRequest : PageDto + { + + } +} diff --git a/Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs b/Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs new file mode 100644 index 00000000..c03d0277 --- /dev/null +++ b/Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs @@ -0,0 +1,62 @@ +using Dlhis.Entity.Basic.Enums; +using SqlSugar.DbConvert; +using SqlSugar; +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Common.Response +{ + public class MealSupplementRecordResponse + { + /// + /// 唯一号 + /// + public string UniqueId { get; set; } + + /// + /// 工号 + /// + public string Code { get; set; } + + /// + /// 餐补状态 + /// + public MealSupplementStatusEnumtype Status { get; set; } + + /// + /// 餐补状态CN + /// + public string StatusCN => Status.GetDescription(); + + /// + /// 考勤日期 + /// + public DateTime Date { get; set; } + + /// + /// 工作地 + /// + public string Workplace { get; set; } + + /// + /// 厂区 + /// + public string Factory { get; set; } + + public string Remark { get; set; } + + /// + /// 餐补 + /// + public decimal Amount { get; set; } + + /// + /// 处理结果 + /// + public string Result { get; set; } + + /// + /// 状态同步 + /// + public bool Sync { get; set; } + } +} diff --git a/Src/Dlhis.Common/Services/IMealSupplementRecordService.cs b/Src/Dlhis.Common/Services/IMealSupplementRecordService.cs new file mode 100644 index 00000000..c193b966 --- /dev/null +++ b/Src/Dlhis.Common/Services/IMealSupplementRecordService.cs @@ -0,0 +1,11 @@ +using Dlhis.Common.Request; +using Dlhis.Common.Response; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Common.Services +{ + public interface IMealSupplementRecordService : IScopeDependency + { + Task> MealSupplementRecordPageAsync(MealSupplementRecordRequest request); + } +} diff --git a/Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs b/Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs new file mode 100644 index 00000000..60d908a3 --- /dev/null +++ b/Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs @@ -0,0 +1,31 @@ +using Dlhis.Common.Request; +using Dlhis.Common.Response; +using Dlhis.Entity.Basic.Entity; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Extensions; +using Kurisu.SqlSugar.Services; + +namespace Dlhis.Common.Services.Implements +{ + public class MealSupplementRecordService : IMealSupplementRecordService + { + + private readonly IDbContext _dbContext; + + public MealSupplementRecordService(IDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task> MealSupplementRecordPageAsync(MealSupplementRecordRequest request) + { + var page = await _dbContext.Queryable() + .WhereIF(request.Search.IsPresent(), x => x.Code.Contains(request.Search)) + .Select() + .ToPageListAsync(request); + + return page; + } + } +} diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs index 714d4e58..4fcde1c1 100644 --- a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs +++ b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs @@ -21,11 +21,11 @@ namespace Dlhis.ScheduledTask.CommonJobs; { DateTime now = DateTime.Now; DateTime todayStart = now.Date; - DateTime threeDaysAgoStart = todayStart.AddDays(-3); + DateTime threeDaysAgoStart = todayStart.AddDays(-7); var logs = await _dbContext.ChangeDb("log") .Queryable() - .Where(x => x._ts <= threeDaysAgoStart) + .Where(x => x._ts >= threeDaysAgoStart && x._ts <= now) .Select(x => x.Id) .ToListAsync(); diff --git a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs index 429c60cc..57729a3d 100644 --- a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs +++ b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs @@ -65,7 +65,7 @@ public class JobPack : BaseAppPack TimeZone = TimeZoneInfo.Local }); //删除前三天前的日志 - RecurringJob.AddOrUpdate("DelApiLogTask", s => s.RunAsync(), "0 0 2 * * *", new RecurringJobOptions + RecurringJob.AddOrUpdate("DelApiLogTask", s => s.RunAsync(), "0 0 */7 * *", new RecurringJobOptions { TimeZone = TimeZoneInfo.Local }); From 21fc2f78d3349f37060d6d2f824f9057b6aeaa7f Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 15:52:46 +0800 Subject: [PATCH 19/50] =?UTF-8?q?fix=20=E6=94=AF=E4=BB=98=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessPlacePermissionSaveRequest.cs | 4 +--- .../BusinessPlacePermissionsService.cs | 20 ++++++++----------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs b/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs index b6c6b4c1..9e900c9c 100644 --- a/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BusinessPlacePermissionSaveRequest.cs @@ -2,8 +2,6 @@ public class BusinessPlacePermissionSaveRequest { - public long? Id { get; set; } - /// /// 管理人员userId /// @@ -12,5 +10,5 @@ public class BusinessPlacePermissionSaveRequest /// /// 营业点 /// - public Guid BusinessPlaceCode { get; set; } + public List BusinessPlaceCodes { get; set; } = new(); } diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs index 1143a99b..2aaa3918 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs @@ -67,20 +67,16 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService public async Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request) { var userId = _currentUser.GetIntSubjectId(); - if (request.Id.HasValue) - { - var entity = await _dbContext.Queryable() - .Where(x => x.Id == request.Id).FirstAsync(); - request.Adapt(entity); - await _dbContext.UpdateAsync(entity); - } - else + await _dbContext.Client.Deleteable() + .Where(x => x.ManagerUserId == request.UserId) + .ExecuteCommandAsync(); + + await _dbContext.InsertAsync(request.BusinessPlaceCodes.Select(x => new BusinessPlaceManagerRelationshipEntity { - var entity = request.Adapt(); - entity.ManagerUserId = userId; - await _dbContext.InsertAsync(entity); - } + BusinessPlaceCode = x, + ManagerUserId = request.UserId + }).ToList()); } public async Task> GetBusinessPlacePermissionByUserIdAsyc(int id) From 0e1f6cb4a04f994adfc57f106814bb250a065a87 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 20 Mar 2024 16:40:10 +0800 Subject: [PATCH 20/50] =?UTF-8?q?fix=20=E9=A4=90=E8=A1=A5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MealSupplementRecordController.cs | 35 ++++ .../Request/MealSupplementRecordRequest.cs | 8 + .../Response/MealSupplementRecordResponse.cs | 64 +++++++ .../Services/IMealSupplementRecordService.cs | 10 ++ .../Implements/MealSupplementRecordService.cs | 46 +++++ .../Order/Controllers/BalancesController.cs | 36 +--- .../Request/BalanceRecordByUserRequest.cs | 11 +- .../Request/OaEMealVoucherDetailRequest.cs | 12 -- .../Order/Request/OaEMealVoucherRequest.cs | 10 -- .../Response/BalanceRecordByUserResponse.cs | 158 +++--------------- .../Response/OaEMealVoucherDetailResponse.cs | 65 ------- .../Order/Response/OaEMealVoucherResponse.cs | 97 ----------- .../Order/Services/IBalanceService.cs | 5 +- .../Services/Implements/BalanceService.cs | 28 +--- .../{ => Controller}/ApiLogController.cs | 8 +- .../{ => ApiLog}/Request/ApiLogRequest.cs | 2 +- .../{ => ApiLog}/Response/ApiLogResponse.cs | 2 +- .../{ => ApiLog}/Services/ApiLogService.cs | 10 +- .../Services/Implements/IApiLogService.cs | 6 +- Src/Dlhis.Common/Dlhis.Common.csproj | 4 + .../Controllers/ApkFileController.cs | 10 +- .../{ => FileOperation}/Request/ApkRequest.cs | 4 +- .../Request/UploadFileReuqest.cs | 6 + .../Response/ApkFile1Response.cs | 2 +- .../Response/ApkFileFormLocalResponse.cs | 2 +- .../Services}/ApkFIileService.cs | 22 ++- .../Services/IApkFIileService.cs | 4 - .../FileOperation/Services/IMinioService.cs | 2 +- .../Services/Implements/ApkFIileService.cs | 2 - .../Services/Implements/MinioService.cs | 1 - .../MealSupplementRecordController.cs | 36 ---- .../Request/MealSupplementRecordRequest.cs | 9 - .../Response/MealSupplementRecordResponse.cs | 62 ------- Src/Dlhis.Common/Services/IApkFIileService.cs | 40 ----- .../Services/IMealSupplementRecordService.cs | 11 -- .../Implements/MealSupplementRecordService.cs | 31 ---- 36 files changed, 249 insertions(+), 612 deletions(-) create mode 100644 Src/Dlhis.Canteen/MealSupplementRecord/Controller/MealSupplementRecordController.cs create mode 100644 Src/Dlhis.Canteen/MealSupplementRecord/Request/MealSupplementRecordRequest.cs create mode 100644 Src/Dlhis.Canteen/MealSupplementRecord/Response/MealSupplementRecordResponse.cs create mode 100644 Src/Dlhis.Canteen/MealSupplementRecord/Services/IMealSupplementRecordService.cs create mode 100644 Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs delete mode 100644 Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs delete mode 100644 Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs delete mode 100644 Src/Dlhis.Canteen/Order/Response/OaEMealVoucherDetailResponse.cs delete mode 100644 Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs rename Src/Dlhis.Common/ApiLog/{ => Controller}/ApiLogController.cs (83%) rename Src/Dlhis.Common/{ => ApiLog}/Request/ApiLogRequest.cs (88%) rename Src/Dlhis.Common/{ => ApiLog}/Response/ApiLogResponse.cs (96%) rename Src/Dlhis.Common/{ => ApiLog}/Services/ApiLogService.cs (84%) rename Src/Dlhis.Common/{ => ApiLog}/Services/Implements/IApiLogService.cs (59%) rename Src/Dlhis.Common/{ => FileOperation}/Request/ApkRequest.cs (85%) rename Src/Dlhis.Common/{ => FileOperation}/Response/ApkFile1Response.cs (93%) rename Src/Dlhis.Common/{ => FileOperation}/Response/ApkFileFormLocalResponse.cs (91%) rename Src/Dlhis.Common/{Services/Implements => FileOperation/Services}/ApkFIileService.cs (91%) delete mode 100644 Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs delete mode 100644 Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs delete mode 100644 Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs delete mode 100644 Src/Dlhis.Common/Services/IApkFIileService.cs delete mode 100644 Src/Dlhis.Common/Services/IMealSupplementRecordService.cs delete mode 100644 Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Controller/MealSupplementRecordController.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Controller/MealSupplementRecordController.cs new file mode 100644 index 00000000..5e0a8418 --- /dev/null +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Controller/MealSupplementRecordController.cs @@ -0,0 +1,35 @@ +using Dlhis.Canteen.MealSupplementRecord.Request; +using Dlhis.Canteen.MealSupplementRecord.Response; +using Dlhis.Canteen.MealSupplementRecord.Services; +using Kurisu.Core.DataAccess.Dto; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Canteen.MealSupplementRecord.Controller; + +/// +/// 原始餐补 +/// +[Authorize] +[Route("api/[controller]")] +[ApiController] +public class MealSupplementRecordController +{ + private readonly IMealSupplementRecordService _mealSupplementRecordService; + + public MealSupplementRecordController(IMealSupplementRecordService mealSupplementRecordService) + { + _mealSupplementRecordService = mealSupplementRecordService; + } + + /// + /// 餐补分页 + /// + /// + /// + [HttpGet("page")] + public async Task> MealSupplementRecordPageAsync([FromQuery] MealSupplementRecordRequest request) + { + return await _mealSupplementRecordService.GetPageAsync(request); + } +} diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Request/MealSupplementRecordRequest.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Request/MealSupplementRecordRequest.cs new file mode 100644 index 00000000..93d14930 --- /dev/null +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Request/MealSupplementRecordRequest.cs @@ -0,0 +1,8 @@ +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Canteen.MealSupplementRecord.Request; + +public class MealSupplementRecordRequest : PageDto +{ + +} diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Response/MealSupplementRecordResponse.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Response/MealSupplementRecordResponse.cs new file mode 100644 index 00000000..fe39466d --- /dev/null +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Response/MealSupplementRecordResponse.cs @@ -0,0 +1,64 @@ +using Dlhis.Entity.Basic.Enums; +using SqlSugar.DbConvert; +using SqlSugar; +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Canteen.MealSupplementRecord.Response; + +public class MealSupplementRecordResponse +{ + /// + /// 唯一号 + /// + public string UniqueId { get; set; } + + /// + /// 工号 + /// + public string Code { get; set; } + + public string UserName { get; set; } + + /// + /// 餐补状态 + /// + public MealSupplementStatusEnumtype Status { get; set; } + + /// + /// 餐补状态 + /// + public string StatusDesc => Status.GetDescription(); + + /// + /// 考勤日期 + /// + public DateTime Date { get; set; } + + /// + /// 工作地 + /// + public string Workplace { get; set; } + + /// + /// 厂区 + /// + public string Factory { get; set; } + + + public string Remark { get; set; } + + /// + /// 餐补 + /// + public decimal Amount { get; set; } + + /// + /// 处理结果 + /// + public string Result { get; set; } + + /// + /// 状态同步 + /// + public bool Sync { get; set; } +} diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Services/IMealSupplementRecordService.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Services/IMealSupplementRecordService.cs new file mode 100644 index 00000000..89c1624c --- /dev/null +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Services/IMealSupplementRecordService.cs @@ -0,0 +1,10 @@ +using Dlhis.Canteen.MealSupplementRecord.Request; +using Dlhis.Canteen.MealSupplementRecord.Response; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.Canteen.MealSupplementRecord.Services; + +public interface IMealSupplementRecordService : IScopeDependency +{ + Task> GetPageAsync(MealSupplementRecordRequest request); +} diff --git a/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs b/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs new file mode 100644 index 00000000..2d1630ee --- /dev/null +++ b/Src/Dlhis.Canteen/MealSupplementRecord/Services/Implements/MealSupplementRecordService.cs @@ -0,0 +1,46 @@ +using Dlhis.Canteen.MealSupplementRecord.Request; +using Dlhis.Canteen.MealSupplementRecord.Response; +using Dlhis.Canteen.MealSupplementRecord.Services; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Canteen.Entities; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Extensions; +using Kurisu.SqlSugar.Services; + +namespace Dlhis.Canteen.MealSupplementRecord.Services.Implements; + +public class MealSupplementRecordService : IMealSupplementRecordService +{ + + private readonly IDbContext _dbContext; + + public MealSupplementRecordService(IDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task> GetPageAsync(MealSupplementRecordRequest request) + { + var page = await _dbContext.Queryable() + .LeftJoin((x, ga) => x.Code == ga.Code) + .WhereIF(request.Search.IsPresent(), (x, ga) => x.Code == request.Search || ga.Name.Contains(request.Search)) + .Select((x, ga) => new MealSupplementRecordResponse + { + Amount = x.Amount, + Code = x.Code, + Date = x.Date, + Factory = x.Factory, + Remark = x.Remark, + Result = x.Result, + Status = x.Status, + Sync = x.Sync, + UniqueId = x.UniqueId, + UserName = ga.Name, + Workplace = x.Workplace, + }) + .ToPageListAsync(request); + + return page; + } +} diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index 3a6f2f69..f55573a0 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -25,10 +25,11 @@ public class BalancesController : ControllerBase } /// - /// 获取记录分页 + /// 获取所有消费记录分页 /// /// /// + [Authorize(Roles = "admin,tenant-admin")] [DataPermission] [HttpGet] public async Task> GetPageAsync([FromQuery] BalanceRecordPageRequest request) @@ -154,7 +155,7 @@ public class BalancesController : ControllerBase /// /// [HttpGet("spendingDetails")] - public async Task> GetSpendingDetailsAsync([FromQuery]SpendingDetailRequest request) + public async Task> GetSpendingDetailsAsync([FromQuery] SpendingDetailRequest request) { return await _balanceService.GetSpendingDetailsAsync(request); } @@ -182,36 +183,13 @@ public class BalancesController : ControllerBase } /// - /// 查询餐补 + /// 查询餐补入账记录 /// /// /// - [HttpGet("balanceRecordByUser")] - public async Task> BalanceRecordByUserAsync([FromQuery]BalanceRecordByUserRequest request) + [HttpGet("balanceOfMealSupplementRecordByUser")] + public async Task> BalanceRecordByUserAsync([FromQuery] BalanceRecordByUserRequest request) { - return await _balanceService.BalanceRecordByUserAsync(request); + return await _balanceService.GetBalanceOfMealSupplementRecordByUser(request); } - - - /// - /// 电子餐券申请记录查询 - /// - /// - [HttpGet("oaemealvoucher")] - public async Task> GetOaEMealVoucherAsync([FromQuery] OaEMealVoucherRequest request) - { - return await _balanceService.GetOaEMealVoucherAsync(request); - } - - /// - /// 电子餐券使用记录查询 - /// - /// - /// - [HttpGet("oaemealvoucherdetail")] - public async Task> GetOaEMealVoucherDetailAsync([FromQuery] OaEMealVoucherDetailRequest request) - { - return await _balanceService.GetOaEMealVoucherDetailAsync(request); - } - } diff --git a/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs b/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs index 877cb0d4..dded4745 100644 --- a/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BalanceRecordByUserRequest.cs @@ -1,8 +1,11 @@ using Kurisu.Core.DataAccess.Dto; -namespace Dlhis.Canteen.Order.Request +namespace Dlhis.Canteen.Order.Request; + +public class BalanceRecordByUserRequest : PageDto { - public class BalanceRecordByUserRequest : PageDto - { - } + /// + /// 用户档案号 + /// + public string UserNo { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs deleted file mode 100644 index 216f85b1..00000000 --- a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherDetailRequest.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Kurisu.Core.DataAccess.Dto; - -namespace Dlhis.Canteen.Dishes.Request -{ - public class OaEMealVoucherDetailRequest : PageDto - { - /// - /// 餐券id - /// - public long? OaEMealVoucherId { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs b/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs deleted file mode 100644 index 232b4eeb..00000000 --- a/Src/Dlhis.Canteen/Order/Request/OaEMealVoucherRequest.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.Core.DataAccess.Dto; -using System.ComponentModel.DataAnnotations; - -namespace Dlhis.Canteen.Dishes.Request -{ - public class OaEMealVoucherRequest : PageDto - { - } -} diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs index 8c8cb4f4..9afd46b3 100644 --- a/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs @@ -3,147 +3,27 @@ using SqlSugar.DbConvert; using SqlSugar; using Kurisu.AspNetCore.Utils.Extensions; -namespace Dlhis.Canteen.Order.Response +namespace Dlhis.Canteen.Order.Response; + +public class BalanceRecordByUserResponse { - public class BalanceRecordByUserResponse - { - /// - /// 流水号 - /// - public string No { get; set; } + /// + /// 流水号 + /// + public string No { get; set; } - /// - /// 档案号/QRCode - /// - public string UserNo { get; set; } + /// + /// 金额 + /// + public decimal Amount { get; set; } - /// - /// 姓名 - /// - public string Name { get; set; } + /// + /// 消费时间 + /// + public DateTime CostDateTime { get; set; } - /// - /// 学工号 - /// - public string UserCode { get; set; } - - /// - /// 部门号 - /// - public string DepartmentNo { get; set; } - - /// - /// 来源 - /// - public BalanceRecordSourceEnumType Source { get; set; } - - /// - /// 来源CN - /// - public string SourceCN => Source.GetDescription(); - - /// - /// 收入/支出 - /// - public BalanceRecordTypeEnumType Type { get; set; } - - /// - /// 收入/支出 - /// - public string TypeCN => Type.GetDescription(); - - /// - /// 金额 + - 表示 - /// - public decimal Amount { get; set; } - - - /// - /// 营业点 - /// - public Guid? BusinessPlaceCode { get; set; } - - /// - /// 餐别 - /// - public Guid? BusinessShiftCode { get; set; } - - /// - /// 餐次 - /// - public ShiftEnumType? ShiftType { get; set; } - - /// - /// 餐次CN - /// - public string ShiftTypeCN => ShiftType.GetDescription(); - - /// - /// 所属成本日期 - /// - public DateTime CostDate { get; set; } - - /// - /// 消费机器唯一信息 - /// - public string DeviceUniqueNo { get; set; } - - /// - /// 餐补月份 - /// - public string SubsidiesFromMonth { get; set; } - - /// - /// Ip - /// - public string IP { get; set; } - - /// - /// 成本中心 - /// - public string CostId { get; set; } - - /// - /// 消费者所在基地 - /// - public string OriginTenantId { get; set; } - - /// - /// 成本计算是否允许跨基地范围 - /// - public bool IsCostCrossTenant { get; set; } - - /// - /// 数据状态 - /// - public BalanceRecordStatusEnumType Status { get; set; } - - /// - /// 数据状态CN - /// - public string StatusCN => Status.GetDescription(); - - /// - /// 消费时间 - /// - public DateTime CostDateTime { get; set; } - - /// - /// 备注 - /// - public string Remark { get; set; } - - /// - /// 餐饮应用类型 - /// - public CanteenApplicaitonTypeEnumType ApplicationType { get; set; } - - /// - /// 餐饮应用类型CN - /// - public string ApplicationTypeCN => ApplicationType.GetDescription(); - - - public string TenantId { get; set; } - } + /// + /// 备注 + /// + public string Remark { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherDetailResponse.cs b/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherDetailResponse.cs deleted file mode 100644 index d57c1e7e..00000000 --- a/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherDetailResponse.cs +++ /dev/null @@ -1,65 +0,0 @@ -using SqlSugar; - -namespace Dlhis.Canteen.Order.Response -{ - public class OaEMealVoucherDetailResponse - { - public long Id { get; set; } - - public long VoucherId { get; set; } - - public int Sequence { get; set; } - - public string DinnerType { get; set; } - - /// - /// 身份证 - /// - public string IdNo { get; set; } - - /// - /// 用餐人 - /// - public string Name { get; set; } - - /// - /// 手机号 - /// - public string Phone { get; set; } - - /// - /// 就餐开始 - /// - public DateTime Start { get; set; } - - /// - /// 就餐结束 - /// - public DateTime End { get; set; } - - /// - /// 就餐天数 - /// - public int Days { get; set; } - - /// - /// 金额 - /// - public decimal Amount { get; set; } - - /// - /// 二维码 - /// - public string QrCode { get; set; } - - /// - /// 状态 - /// - public string Status { get; set; } - - /// - /// 信息 - /// - public string Message { get; set; } - } -} diff --git a/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs b/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs deleted file mode 100644 index d21260fd..00000000 --- a/Src/Dlhis.Canteen/Order/Response/OaEMealVoucherResponse.cs +++ /dev/null @@ -1,97 +0,0 @@ -namespace Dlhis.Canteen.Order.Response; - -public class OaEMealVoucherResponse -{ - public long Id { get; set; } - - /// - /// 标题 - /// - public string Title { get; set; } - - /// - /// 申请人工号 - /// - public string UserCode { get; set; } - - /// - /// 申请人名称 - /// - public string Name { get; set; } - - /// - /// 基地代码 - /// - public string TenantId { get; set; } - - /// - /// 基地名称 - /// - public string TenantName { get; set; } - - /// - /// 成本中心 - /// - public string CostId { get; set; } - - /// - /// 成本中心名称 - /// - public string CostName { get; set; } - - /// - /// 来宾公司 - /// - public string Company { get; set; } - - /// - /// 联系人 - /// - public string Phone { get; set; } - - /// - /// 来宾人数 - /// - public int Num { get; set; } - - /// - /// 就餐食堂 - /// - public string Canteen { get; set; } - - /// - /// 就餐事由 - /// - public string Reason { get; set; } - - /// - /// 就餐次 - /// - public string CanteenShift { get; set; } - - /// - /// oa流程id - /// - public string OaId { get; set; } - - /// - /// 部门号 - /// - public string DepartmentNo { get; set; } - - /// - /// 部门名称 - /// - public string DepartmentName { get; set; } - - - /// - /// 申请日期 - /// - public DateTime LogDate { get; set; } - - /// - /// 数据创建时间 - /// - public DateTime CreateTime { get; set; } -} diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index 53d4c688..5d846bbc 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -35,8 +35,5 @@ public interface IBalanceService : IScopeDependency Task> GetConsumeDeviceAsync(GetConsumeDeviceRequest request); - Task> GetOaEMealVoucherAsync([FromQuery] OaEMealVoucherRequest request); - - Task> GetOaEMealVoucherDetailAsync([FromQuery] OaEMealVoucherDetailRequest request); - Task> BalanceRecordByUserAsync(BalanceRecordByUserRequest request); + Task> GetBalanceOfMealSupplementRecordByUser(BalanceRecordByUserRequest request); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index aa177030..b669579f 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -744,13 +744,14 @@ public class BalanceService : IBalanceService return page; } - public async Task> BalanceRecordByUserAsync(BalanceRecordByUserRequest request) + public async Task> GetBalanceOfMealSupplementRecordByUser(BalanceRecordByUserRequest request) { var page = await _dbContext.Queryable() - .WhereIF(request.Search.IsPresent(), b => b.UserNo == request.Search || b.UserCode == request.Search) - .Where(b => b.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies || b.Source == BalanceRecordSourceEnumType.OtherTenantSubsidies) + .Where(x => x.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies || x.Source == BalanceRecordSourceEnumType.OtherTenantSubsidies) + .Where(x => x.UserNo == request.UserNo) .Select() .ToPageListAsync(request); + return page; } @@ -851,27 +852,6 @@ public class BalanceService : IBalanceService return list; } - - public async Task> GetOaEMealVoucherAsync(OaEMealVoucherRequest request) - { - var page = await _dbContext.Queryable() - .WhereIF(request.Search.IsPresent(),x => x.UserCode.Contains(request.Search) || x.Name.Contains(request.Search)) - .Select() - .ToPageListAsync(request); - return page; - } - - public async Task> GetOaEMealVoucherDetailAsync(OaEMealVoucherDetailRequest request) - { - var page = await _dbContext.Queryable() - .WhereIF(request.Search.IsPresent(),x => x.Name.Contains(request.Search)) - .WhereIF(request.OaEMealVoucherId.HasValue, x => x.VoucherId == request.OaEMealVoucherId) - .Select() - .ToPageListAsync(request); - - return page; - } - /// /// 获取当前年所有月 /// diff --git a/Src/Dlhis.Common/ApiLog/ApiLogController.cs b/Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs similarity index 83% rename from Src/Dlhis.Common/ApiLog/ApiLogController.cs rename to Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs index 355730be..91478b33 100644 --- a/Src/Dlhis.Common/ApiLog/ApiLogController.cs +++ b/Src/Dlhis.Common/ApiLog/Controller/ApiLogController.cs @@ -1,11 +1,11 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; -using Dlhis.Common.Services.Implements; +using Dlhis.Common.ApiLog.Request; +using Dlhis.Common.ApiLog.Response; +using Dlhis.Common.ApiLog.Services.Implements; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -namespace Dlhis.Common.ApiLog +namespace Dlhis.Common.ApiLog.Controller { /// /// API日志控制器 diff --git a/Src/Dlhis.Common/Request/ApiLogRequest.cs b/Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs similarity index 88% rename from Src/Dlhis.Common/Request/ApiLogRequest.cs rename to Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs index ca4d00cc..c08de14e 100644 --- a/Src/Dlhis.Common/Request/ApiLogRequest.cs +++ b/Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs @@ -1,7 +1,7 @@ using Kurisu.Core.DataAccess.Dto; using System.ComponentModel.DataAnnotations; -namespace Dlhis.Common.Request +namespace Dlhis.Common.ApiLog.Request { public class ApiLogRequest : PageDto { diff --git a/Src/Dlhis.Common/Response/ApiLogResponse.cs b/Src/Dlhis.Common/ApiLog/Response/ApiLogResponse.cs similarity index 96% rename from Src/Dlhis.Common/Response/ApiLogResponse.cs rename to Src/Dlhis.Common/ApiLog/Response/ApiLogResponse.cs index ff51f853..8d1aaf82 100644 --- a/Src/Dlhis.Common/Response/ApiLogResponse.cs +++ b/Src/Dlhis.Common/ApiLog/Response/ApiLogResponse.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Dlhis.Common.Response +namespace Dlhis.Common.ApiLog.Response { public class ApiLogResponse { diff --git a/Src/Dlhis.Common/Services/ApiLogService.cs b/Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs similarity index 84% rename from Src/Dlhis.Common/Services/ApiLogService.cs rename to Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs index 22c3d02c..e9d9cc66 100644 --- a/Src/Dlhis.Common/Services/ApiLogService.cs +++ b/Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs @@ -1,6 +1,6 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; -using Dlhis.Common.Services.Implements; +using Dlhis.Common.ApiLog.Request; +using Dlhis.Common.ApiLog.Response; +using Dlhis.Common.ApiLog.Services.Implements; using Dlhis.Entity.Common; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; @@ -8,7 +8,7 @@ using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using SqlSugar; -namespace Dlhis.Common.Services +namespace Dlhis.Common.ApiLog.Services { public class ApiLogService : IApiLogService { @@ -20,7 +20,7 @@ namespace Dlhis.Common.Services } public async Task> GetLogsAsync(ApiLogRequest request) - { + { var logs = await _dbContext.ChangeDb("log").Queryable() .WhereIF(request.Search.IsPresent(), x => x.Message.Contains(request.Search)) .WhereIF(request.Level.HasValue, x => x.Level == request.Level) diff --git a/Src/Dlhis.Common/Services/Implements/IApiLogService.cs b/Src/Dlhis.Common/ApiLog/Services/Implements/IApiLogService.cs similarity index 59% rename from Src/Dlhis.Common/Services/Implements/IApiLogService.cs rename to Src/Dlhis.Common/ApiLog/Services/Implements/IApiLogService.cs index 4006c3b1..b8f27280 100644 --- a/Src/Dlhis.Common/Services/Implements/IApiLogService.cs +++ b/Src/Dlhis.Common/ApiLog/Services/Implements/IApiLogService.cs @@ -1,8 +1,8 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; +using Dlhis.Common.ApiLog.Request; +using Dlhis.Common.ApiLog.Response; using Kurisu.Core.DataAccess.Dto; -namespace Dlhis.Common.Services.Implements +namespace Dlhis.Common.ApiLog.Services.Implements { public interface IApiLogService : IScopeDependency { diff --git a/Src/Dlhis.Common/Dlhis.Common.csproj b/Src/Dlhis.Common/Dlhis.Common.csproj index 02b72955..fd153a15 100644 --- a/Src/Dlhis.Common/Dlhis.Common.csproj +++ b/Src/Dlhis.Common/Dlhis.Common.csproj @@ -25,4 +25,8 @@ + + + + diff --git a/Src/Dlhis.Common/FileOperation/Controllers/ApkFileController.cs b/Src/Dlhis.Common/FileOperation/Controllers/ApkFileController.cs index 7ab679b7..a57f65ef 100644 --- a/Src/Dlhis.Common/FileOperation/Controllers/ApkFileController.cs +++ b/Src/Dlhis.Common/FileOperation/Controllers/ApkFileController.cs @@ -1,8 +1,6 @@ using Dlhis.Common.FileOperation.Request; using Dlhis.Common.FileOperation.Response; using Dlhis.Common.FileOperation.Services; -using Dlhis.Common.Request; -using Dlhis.Common.Response; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Org.BouncyCastle.Asn1.Ocsp; @@ -10,8 +8,9 @@ using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Common.FileOperation.Controllers; /// -/// 文件上传/下载 +/// APK文件操作 /// +[Obsolete("作废重写")] [Authorize] [Route("api/[controller]")] [ApiController] @@ -28,7 +27,7 @@ public class ApkFileController : ControllerBase /// /// /// - [HttpPost("minlo")] + [HttpPost("minio")] [RequestSizeLimit(300_000_000)] public async Task FormSingleFileUpload([FromForm] ApkRequest request) { @@ -56,9 +55,6 @@ public class ApkFileController : ControllerBase { return await _apkFIileService.GetLastVersionAsync(productCode); } - - - } diff --git a/Src/Dlhis.Common/Request/ApkRequest.cs b/Src/Dlhis.Common/FileOperation/Request/ApkRequest.cs similarity index 85% rename from Src/Dlhis.Common/Request/ApkRequest.cs rename to Src/Dlhis.Common/FileOperation/Request/ApkRequest.cs index 86156c02..aca49440 100644 --- a/Src/Dlhis.Common/Request/ApkRequest.cs +++ b/Src/Dlhis.Common/FileOperation/Request/ApkRequest.cs @@ -1,4 +1,4 @@ -namespace Dlhis.Common.Request +namespace Dlhis.Common.FileOperation.Request { public class ApkRequest { @@ -25,6 +25,6 @@ /// /// 产品代码 /// - public string? ProductCode { get; set; } + public string ProductCode { get; set; } } } diff --git a/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs b/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs index 1863e728..cf9cb6f4 100644 --- a/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs +++ b/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs @@ -4,8 +4,14 @@ namespace Dlhis.Common.FileOperation.Request; public class UploadFileReuqest { + /// + /// 路由获取 + /// [FromRoute] public string Bucket { get; set; } + /// + /// 文件 + /// public IFormFile File { get; set; } } diff --git a/Src/Dlhis.Common/Response/ApkFile1Response.cs b/Src/Dlhis.Common/FileOperation/Response/ApkFile1Response.cs similarity index 93% rename from Src/Dlhis.Common/Response/ApkFile1Response.cs rename to Src/Dlhis.Common/FileOperation/Response/ApkFile1Response.cs index 560d4356..143be5fb 100644 --- a/Src/Dlhis.Common/Response/ApkFile1Response.cs +++ b/Src/Dlhis.Common/FileOperation/Response/ApkFile1Response.cs @@ -1,6 +1,6 @@ using SqlSugar; -namespace Dlhis.Common.Response +namespace Dlhis.Common.FileOperation.Response { public class ApkFile1Response { diff --git a/Src/Dlhis.Common/Response/ApkFileFormLocalResponse.cs b/Src/Dlhis.Common/FileOperation/Response/ApkFileFormLocalResponse.cs similarity index 91% rename from Src/Dlhis.Common/Response/ApkFileFormLocalResponse.cs rename to Src/Dlhis.Common/FileOperation/Response/ApkFileFormLocalResponse.cs index 6d91bf30..b4c78bf2 100644 --- a/Src/Dlhis.Common/Response/ApkFileFormLocalResponse.cs +++ b/Src/Dlhis.Common/FileOperation/Response/ApkFileFormLocalResponse.cs @@ -1,4 +1,4 @@ -namespace Dlhis.Common.Response +namespace Dlhis.Common.FileOperation.Response { public class ApkFileFormLocalResponse { diff --git a/Src/Dlhis.Common/Services/Implements/ApkFIileService.cs b/Src/Dlhis.Common/FileOperation/Services/ApkFIileService.cs similarity index 91% rename from Src/Dlhis.Common/Services/Implements/ApkFIileService.cs rename to Src/Dlhis.Common/FileOperation/Services/ApkFIileService.cs index 03848263..2ebc1240 100644 --- a/Src/Dlhis.Common/Services/Implements/ApkFIileService.cs +++ b/Src/Dlhis.Common/FileOperation/Services/ApkFIileService.cs @@ -1,13 +1,13 @@ -using Dlhis.Common.FileOperation.Services; -using Dlhis.Common.Request; -using Dlhis.Common.Response; +using Dlhis.Common.ApiLog.Response; +using Dlhis.Common.FileOperation.Request; +using Dlhis.Common.FileOperation.Response; using Dlhis.Entity.Common; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.SqlSugar.Services; using Mapster; using Microsoft.AspNetCore.Mvc; -namespace Dlhis.Common.Services.Implements; +namespace Dlhis.Common.FileOperation.Services; public class ApkFIileService : IApkFIileService { @@ -143,7 +143,7 @@ public class ApkFIileService : IApkFIileService catch (Exception) { return null; - throw; + throw; } } /// @@ -155,7 +155,7 @@ public class ApkFIileService : IApkFIileService { var info = await _dbContext.Queryable() .Where(x => x.Name == fileName) - .OrderByDescending(x => x.VersionCode) + .OrderByDescending(x => x.VersionCode) .FirstAsync(); info.ThrowIfNull($"没有{fileName}信息"); var res = info.Adapt(); @@ -173,6 +173,16 @@ public class ApkFIileService : IApkFIileService string path = filePath + fileName; return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; } + + Task IApkFIileService.FormSingleFileUpload(ApkRequest request) + { + throw new NotImplementedException(); + } + + public Task GetLastVersionAsync(string productCode) + { + throw new NotImplementedException(); + } } diff --git a/Src/Dlhis.Common/FileOperation/Services/IApkFIileService.cs b/Src/Dlhis.Common/FileOperation/Services/IApkFIileService.cs index 5dfa8536..047b8f6b 100644 --- a/Src/Dlhis.Common/FileOperation/Services/IApkFIileService.cs +++ b/Src/Dlhis.Common/FileOperation/Services/IApkFIileService.cs @@ -1,7 +1,5 @@ using Dlhis.Common.FileOperation.Request; using Dlhis.Common.FileOperation.Response; -using Dlhis.Common.Request; -using Dlhis.Common.Response; using Microsoft.AspNetCore.Mvc; namespace Dlhis.Common.FileOperation.Services; @@ -23,8 +21,6 @@ public interface IApkFIileService : IScopeDependency Task GetLastVersionAsync(string productCode); - - } diff --git a/Src/Dlhis.Common/FileOperation/Services/IMinioService.cs b/Src/Dlhis.Common/FileOperation/Services/IMinioService.cs index 7fd36cc2..f70c17f0 100644 --- a/Src/Dlhis.Common/FileOperation/Services/IMinioService.cs +++ b/Src/Dlhis.Common/FileOperation/Services/IMinioService.cs @@ -1,4 +1,4 @@ -using Dlhis.Common.Request; +using Dlhis.Common.FileOperation.Request; namespace Dlhis.Common.FileOperation.Services; diff --git a/Src/Dlhis.Common/FileOperation/Services/Implements/ApkFIileService.cs b/Src/Dlhis.Common/FileOperation/Services/Implements/ApkFIileService.cs index 4f5743aa..9b920f5c 100644 --- a/Src/Dlhis.Common/FileOperation/Services/Implements/ApkFIileService.cs +++ b/Src/Dlhis.Common/FileOperation/Services/Implements/ApkFIileService.cs @@ -1,8 +1,6 @@ using Dlhis.Common.FileOperation.Request; using Dlhis.Common.FileOperation.Response; using Dlhis.Common.FileOperation.Services; -using Dlhis.Common.Request; -using Dlhis.Common.Response; using Dlhis.Entity.Common; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.SqlSugar.Services; diff --git a/Src/Dlhis.Common/FileOperation/Services/Implements/MinioService.cs b/Src/Dlhis.Common/FileOperation/Services/Implements/MinioService.cs index 3abff519..f18cfb9c 100644 --- a/Src/Dlhis.Common/FileOperation/Services/Implements/MinioService.cs +++ b/Src/Dlhis.Common/FileOperation/Services/Implements/MinioService.cs @@ -1,6 +1,5 @@ using Dlhis.Common.FileOperation.Configurations; using Dlhis.Common.FileOperation.Request; -using Dlhis.Common.Request; using Microsoft.Extensions.Options; using Minio; using Minio.DataModel.Args; diff --git a/Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs b/Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs deleted file mode 100644 index 225243b2..00000000 --- a/Src/Dlhis.Common/MealSupplementRecord/MealSupplementRecordController.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; -using Dlhis.Common.Services; -using Kurisu.Core.DataAccess.Dto; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Dlhis.Common.MealSupplementRecord -{ - /// - /// 餐补控制器 - /// - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class MealSupplementRecordController - { - private readonly IMealSupplementRecordService _mealSupplementRecordService; - - public MealSupplementRecordController(IMealSupplementRecordService mealSupplementRecordService) - { - _mealSupplementRecordService = mealSupplementRecordService; - } - - /// - /// 餐补分页 - /// - /// - /// - [HttpGet("mealSupplementRecordPage")] - public async Task> MealSupplementRecordPageAsync([FromQuery]MealSupplementRecordRequest request) - { - return await _mealSupplementRecordService.MealSupplementRecordPageAsync(request); - } - } -} diff --git a/Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs b/Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs deleted file mode 100644 index ce64bcce..00000000 --- a/Src/Dlhis.Common/Request/MealSupplementRecordRequest.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Kurisu.Core.DataAccess.Dto; - -namespace Dlhis.Common.Request -{ - public class MealSupplementRecordRequest : PageDto - { - - } -} diff --git a/Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs b/Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs deleted file mode 100644 index c03d0277..00000000 --- a/Src/Dlhis.Common/Response/MealSupplementRecordResponse.cs +++ /dev/null @@ -1,62 +0,0 @@ -using Dlhis.Entity.Basic.Enums; -using SqlSugar.DbConvert; -using SqlSugar; -using Kurisu.AspNetCore.Utils.Extensions; - -namespace Dlhis.Common.Response -{ - public class MealSupplementRecordResponse - { - /// - /// 唯一号 - /// - public string UniqueId { get; set; } - - /// - /// 工号 - /// - public string Code { get; set; } - - /// - /// 餐补状态 - /// - public MealSupplementStatusEnumtype Status { get; set; } - - /// - /// 餐补状态CN - /// - public string StatusCN => Status.GetDescription(); - - /// - /// 考勤日期 - /// - public DateTime Date { get; set; } - - /// - /// 工作地 - /// - public string Workplace { get; set; } - - /// - /// 厂区 - /// - public string Factory { get; set; } - - public string Remark { get; set; } - - /// - /// 餐补 - /// - public decimal Amount { get; set; } - - /// - /// 处理结果 - /// - public string Result { get; set; } - - /// - /// 状态同步 - /// - public bool Sync { get; set; } - } -} diff --git a/Src/Dlhis.Common/Services/IApkFIileService.cs b/Src/Dlhis.Common/Services/IApkFIileService.cs deleted file mode 100644 index c6d9624b..00000000 --- a/Src/Dlhis.Common/Services/IApkFIileService.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; -using Microsoft.AspNetCore.Mvc; - -namespace Dlhis.Common.Services; - - public interface IApkFIileService : IScopeDependency -{ - /// - /// 文件上传 - /// - /// - /// - Task FormSingleFileUpload(ApkRequest request); - - /// - /// 文件下载 - /// - /// - Task RequestDownloadFile(string fileName); - - /// - /// 本地上传 - /// - /// - /// - Task FormLocalFileUpload(ApkRequest request); - - Task LatestFile(string fileName); - - /// - /// 本地下载 - /// - /// - /// - IActionResult FormLocalDownloadFile(string fileName); -} - - - diff --git a/Src/Dlhis.Common/Services/IMealSupplementRecordService.cs b/Src/Dlhis.Common/Services/IMealSupplementRecordService.cs deleted file mode 100644 index c193b966..00000000 --- a/Src/Dlhis.Common/Services/IMealSupplementRecordService.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; -using Kurisu.Core.DataAccess.Dto; - -namespace Dlhis.Common.Services -{ - public interface IMealSupplementRecordService : IScopeDependency - { - Task> MealSupplementRecordPageAsync(MealSupplementRecordRequest request); - } -} diff --git a/Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs b/Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs deleted file mode 100644 index 60d908a3..00000000 --- a/Src/Dlhis.Common/Services/Implements/MealSupplementRecordService.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Dlhis.Common.Request; -using Dlhis.Common.Response; -using Dlhis.Entity.Basic.Entity; -using Kurisu.AspNetCore.Utils.Extensions; -using Kurisu.Core.DataAccess.Dto; -using Kurisu.SqlSugar.Extensions; -using Kurisu.SqlSugar.Services; - -namespace Dlhis.Common.Services.Implements -{ - public class MealSupplementRecordService : IMealSupplementRecordService - { - - private readonly IDbContext _dbContext; - - public MealSupplementRecordService(IDbContext dbContext) - { - _dbContext = dbContext; - } - - public async Task> MealSupplementRecordPageAsync(MealSupplementRecordRequest request) - { - var page = await _dbContext.Queryable() - .WhereIF(request.Search.IsPresent(), x => x.Code.Contains(request.Search)) - .Select() - .ToPageListAsync(request); - - return page; - } - } -} From 367ede2eeb0257baca6a980b823082efed0982a6 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 10:35:24 +0800 Subject: [PATCH 21/50] =?UTF-8?q?fix=20=E8=AE=A2=E9=A4=90=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=BD=93=E5=89=8D=E4=BF=A1=E6=81=AF,=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=95=B0=E9=87=8F=E5=85=A5=E5=8F=82=E5=92=8C=E5=93=8D?= =?UTF-8?q?=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesMenusController.cs | 5 +- .../Dishes/Response/DishesDetailResponse.cs | 5 ++ .../Services/Implements/DishesMenuService.cs | 14 ++- .../Order/Controllers/OrdersController.cs | 4 +- .../Order/Request/BookingMealRequest.cs | 6 ++ .../Order/Response/BookingResponse.cs | 32 +++++++ .../Order/Services/IBookingOrderService.cs | 2 +- .../Implements/BookingOrderService.cs | 87 +++++++++++-------- 8 files changed, 113 insertions(+), 42 deletions(-) create mode 100644 Src/Dlhis.Canteen/Order/Response/BookingResponse.cs diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index 2ebeea48..b7f768ff 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -60,7 +60,10 @@ public class DishesMenusController : ControllerBase /// /// [HttpGet("dishes-selections")] - public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, [FromQuery] List categoryCodes) + public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, + DateTime date, + ShiftEnumType? shiftType, + [FromQuery] List categoryCodes) { return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCodes); } diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs index ce412352..4d97b8d2 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs @@ -34,6 +34,11 @@ public class DishesDetailResponse /// public decimal Price { get; set; } + /// + /// 剩余数量 + /// + public int Number { get; set; } + /// /// 单位 /// diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 1ab10afd..4625543a 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -83,10 +83,20 @@ public class DishesMenuService : IDishesMenuService .Where((x, dishes) => dishes.Enable) .WhereIF(shiftType.HasValue, x => x.ShiftType == shiftType) .WhereIF(categoryCodes.IsPresent(), (x, dishes) => categoryCodes.Contains(dishes.CategoryCode)) - .Select((x, dishes) => dishes) + .Select((x, dishes) => new DishesDetailResponse + { + BusinessPlaceCode = x.BusinessPlaceCode, + CategoryCode = dishes.CategoryCode, + CustomCode = x.CustomCode, + Description = dishes.Description, + ImageUrl = dishes.ImageUrl, + Price = dishes.Price, + Name = dishes.Name, + Number = x.Number, + }) .ToListAsync(); - return data.Adapt>(); + return data; } public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request) diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 67e49e62..dafd75ae 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -68,9 +68,9 @@ public class OrdersController : ControllerBase /// [HttpPost("booking")] [Transactional] - public async Task Booking(BookingMealRequest request) + public async Task Booking(BookingMealRequest request) { - await _bookingOrderService.BookingAsync(request); + return await _bookingOrderService.BookingAsync(request); } /// diff --git a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs index 525e27d2..e9f434e2 100644 --- a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs @@ -30,6 +30,12 @@ public class BookingMealRequest : IValidatableObject [Required(ErrorMessage = "选菜不能为空")] public string DishesCode { get; set; } + /// + /// 购买数量 + /// + [Range(0, 100)] + public int Number { get; set; } + /// /// 消费来源 /// diff --git a/Src/Dlhis.Canteen/Order/Response/BookingResponse.cs b/Src/Dlhis.Canteen/Order/Response/BookingResponse.cs new file mode 100644 index 00000000..beb1dfd5 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/BookingResponse.cs @@ -0,0 +1,32 @@ +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Canteen.Order.Response; + +public class BookingResponse +{ + /// + /// 订单号 + /// + public string No { get; set; } + + /// + /// 订单时间 + /// + public DateTime CreateTime { get; set; } + + /// + /// 消费金额 + /// + public decimal Amount { get; set; } + + /// + /// 支付方式 + /// + public BalanceRecordSourceEnumType Source { get; set; } + + /// + /// 支付方式 + /// + public string SourceDesc => Source.GetDescription(); +} diff --git a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs index bbe5116c..efca34b5 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs @@ -12,7 +12,7 @@ public interface IBookingOrderService /// /// /// - Task BookingAsync(BookingMealRequest request); + Task BookingAsync(BookingMealRequest request); Task> GetBookingPageAsync(OrderBookingPageRequest request); diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 1561ecf0..2c346e53 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -28,7 +28,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService _disheMenuApi = disheMenuApi; } - public async Task BookingAsync(BookingMealRequest request) + public async Task BookingAsync(BookingMealRequest request) { var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType); @@ -56,7 +56,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService Source = request.Source, UserNo = gainfo.No, UserCode = gainfo.Code, - Amount = -Math.Abs(menuDetail.Price), + Amount = -Math.Abs(menuDetail.Price * request.Number), BusinessPlaceCode = request.BusinessPlaceCode, BusinessShiftCode = null, ShiftType = request.ShiftType, @@ -88,50 +88,56 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); var menuDetail = menuDetailResult.Data; menuDetail.ThrowIfNull("预定失败,菜品已经下架"); - menuDetail.Number -= 1; + menuDetail.Number -= request.Number; (menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄"); - var mealInfo = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - if (mealInfo == null) + //餐补 + if (request.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies) { - await _dbContext.InsertAsync(new GainfoMealEntity + + var mealInfo = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + if (mealInfo == null) { - Balance = 0, - BalanceOfRecharge = 0, - BalanceOfSubsidies = 0, - UserCode = gainfo.Code, - UserNo = gainfo.No, - Version = 0, - }); + await _dbContext.InsertAsync(new GainfoMealEntity + { + Balance = 0, + BalanceOfRecharge = 0, + BalanceOfSubsidies = 0, + UserCode = gainfo.Code, + UserNo = gainfo.No, + Version = 0, + }); - (mealInfo == null).ThrowIfTrue("余额不足,无法消费"); + (mealInfo == null).ThrowIfTrue("余额不足,无法消费"); + } + //金额+- + mealInfo.Balance += order.Amount; + (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); + + var effectMeal = await _dbContext.Updateable() + .SetColumns(x => x.Balance == mealInfo.Balance) + .SetColumns(x => x.Version == x.Version + 1) + .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 + .ExecuteCommandAsync(); + + if (effectMeal <= 0) throw new VersionExceptions("更新版本冲突"); } - //金额+- - mealInfo.Balance += order.Amount; - (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); - var effect = await _dbContext.Updateable() - .SetColumns(x => x.Balance == mealInfo.Balance) - .SetColumns(x => x.Version == x.Version + 1) - .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 - .ExecuteCommandAsync(); - if (effect <= 0) throw new VersionExceptions("更新版本冲突"); + var effectMenu = await _dbContext.Updateable() + .SetColumns(x => x.Number == menuDetail.Number) + .SetColumns(x => x.Version == x.Version + 1) + .SetColumns(x => x.ModifiedTime == now) + .Where(x => x.Date == menuDetail.Date + && x.ShiftType == request.ShiftType + && x.BusinessPlaceCode == request.BusinessPlaceCode + && x.DishesCode == request.DishesCode + && x.Version == menuDetail.Version + ) + .ExecuteCommandAsync(); - effect = await _dbContext.Updateable() - .SetColumns(x => x.Number == menuDetail.Number) - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.ModifiedTime == now) - .Where(x => x.Date == menuDetail.Date - && x.ShiftType == request.ShiftType - && x.BusinessPlaceCode == request.BusinessPlaceCode - && x.DishesCode == request.DishesCode - && x.Version == menuDetail.Version - ) - .ExecuteCommandAsync(); - - if (effect <= 0) throw new VersionExceptions("更新版本冲突"); + if (effectMenu <= 0) throw new VersionExceptions("更新版本冲突"); //写入记录 var balanceRecord = order.Adapt(); @@ -147,6 +153,15 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService }); }, 10); + + + return new BookingResponse + { + No = order.No, + CreateTime = order.CreateTime, + Source = order.Source, + Amount = Math.Abs(order.Amount) + }; } From 96c5c5febafd8396d7c3f1e54c6b57966eb79ac6 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 10:39:58 +0800 Subject: [PATCH 22/50] fix DI --- .../Dishes/Request/GetDishesMenusBookingRequest.cs | 4 ++-- Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs | 2 +- Src/Dlhis.Canteen/Order/Services/IOrderService.cs | 2 -- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs index af71ee69..38cefe11 100644 --- a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs @@ -2,8 +2,8 @@ { public class GetDishesMenusBookingRequest { - public Guid PlaceCode { get; set; } - public string Factory { get; set; } + + public Guid BusinessPlaceCode { get; set; } } } diff --git a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs index efca34b5..53264f80 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs @@ -5,7 +5,7 @@ using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Canteen.Order.Services; -public interface IBookingOrderService +public interface IBookingOrderService : IScopeDependency { /// /// 订餐 diff --git a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs index c6ddb582..029f951d 100644 --- a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs @@ -7,8 +7,6 @@ namespace Dlhis.Canteen.Order.Services; public interface IOrderService : IScopeDependency { - - Task AddAsync(OrderAddRequest request); /// From 02084be82b1c34a4043c19859782c41680fa0b75 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 11:01:14 +0800 Subject: [PATCH 23/50] =?UTF-8?q?fix=20=E5=88=86=E7=B1=BB=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E8=8F=9C=E5=93=81=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesMenusController.cs | 5 +- .../Request/GetDishesMenusBookingRequest.cs | 17 +++-- .../Dishes/Services/IDishesMenuService.cs | 2 +- .../Services/Implements/DishesMenuService.cs | 10 ++- .../Services/Implements/DishesService.cs | 65 +++++++++---------- .../Services/Implements/BaseOrderService.cs | 4 -- .../Implements/BookingOrderService.cs | 35 +++++----- 7 files changed, 67 insertions(+), 71 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index b7f768ff..a5537dd4 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -63,9 +63,9 @@ public class DishesMenusController : ControllerBase public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, - [FromQuery] List categoryCodes) + Guid categoryCode) { - return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCodes); + return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCode); } /// @@ -133,6 +133,7 @@ public class DishesMenusController : ControllerBase /// /// [HttpGet("setting")] + [IgnoreTenant] public async Task GetDishesMenusBookingSetting([FromQuery] GetDishesMenusBookingRequest request) { return await _dishesService.GetDishesMenusBookingSetting(request); diff --git a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs index 38cefe11..5c5f7f30 100644 --- a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs @@ -1,9 +1,12 @@ -namespace Dlhis.Basic.Dishes.Request -{ - public class GetDishesMenusBookingRequest - { - public string Factory { get; set; } +using System.ComponentModel.DataAnnotations; - public Guid BusinessPlaceCode { get; set; } - } +namespace Dlhis.Basic.Dishes.Request; + +public class GetDishesMenusBookingRequest +{ + /// + /// 营业点 + /// + [Required(ErrorMessage = "请选择营业点")] + public Guid BusinessPlaceCode { get; set; } } diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs index da96b3cc..b3256deb 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs @@ -12,7 +12,7 @@ public interface IDishesMenuService : IScopeDependency Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date); - Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List categoryCodes); + Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode); Task SaveDishesMenuAsync(DishesMenuSaveRequest request); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 4625543a..a8f2b277 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -74,7 +74,7 @@ public class DishesMenuService : IDishesMenuService }; } - public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List categoryCodes) + public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode) { var data = await _dbContext.Queryable() .LeftJoin((x, dishes) => x.DishesCode == dishes.CustomCode) @@ -82,7 +82,7 @@ public class DishesMenuService : IDishesMenuService .Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day)) .Where((x, dishes) => dishes.Enable) .WhereIF(shiftType.HasValue, x => x.ShiftType == shiftType) - .WhereIF(categoryCodes.IsPresent(), (x, dishes) => categoryCodes.Contains(dishes.CategoryCode)) + .Where((x, dishes) => dishes.CategoryCode == categoryCode) .Select((x, dishes) => new DishesDetailResponse { BusinessPlaceCode = x.BusinessPlaceCode, @@ -146,20 +146,18 @@ public class DishesMenuService : IDishesMenuService var where = LinqExpressionExtension.False(); keys.ForEach(x => { - where = where.Or(item => item.Date == x.Date && item.ShiftType == x.ShiftType); + where = where.Or(item => SqlFunc.DateIsSame(item.Date, x.Date, DateType.Day) && item.ShiftType == x.ShiftType); }); await _dbContext.Client.Deleteable().Where(where).ExecuteCommandAsync(); await _dbContext.InsertAsync(entities); } - - public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode) { var detail = await _dbContext.Queryable() .LeftJoin((x, d) => x.DishesCode == d.CustomCode) - .Where(x => x.Date == date) + .Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day)) .Where(x => x.BusinessPlaceCode == businessPlaceCode) .Where(x => x.ShiftType == shiftType) .Where(x => x.DishesCode == dishesCode) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs index f8518ff8..d3fbf30c 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs @@ -5,6 +5,7 @@ using Dlhis.Entity.Canteen.Entities; using Dlhis.Entity.Canteen.Enums; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; +using Kurisu.Core.User.Abstractions; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; @@ -14,10 +15,12 @@ namespace Dlhis.Basic.Dishes.Services.Implements; public class DishesService : IDishesService { private readonly IDbContext _dbContext; + private readonly ICurrentUser _currentUser; - public DishesService(IDbContext dbContext) + public DishesService(IDbContext dbContext, ICurrentUser currentUser) { _dbContext = dbContext; + _currentUser = currentUser; } public async Task> GetDishesPageAsync(DishesPageRequest request) @@ -60,49 +63,43 @@ public class DishesService : IDishesService public async Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request) { + var subjectId = _currentUser.GetIntSubjectId(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + if (jinkoCode.IsPresent()) + { + gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + } + // 读取最晚订餐的时间 - var strDatetime = await _dbContext.Queryable() + var value = await _dbContext.Queryable() .Where(x => x.UniqueType == CanteenSettingUnqiueEnumType.Tenant && x.Item == CanteenSettingItemEnumType.BookingDeadline && x.Enable) .Select(x => x.Value) .FirstAsync(); - if (!TimeOnly.TryParse(strDatetime, out var deadline)) + if (!TimeOnly.TryParse(value, out var deadline)) deadline = new TimeOnly(8, 30); - var res = new DishesMenusBookingSettingResponse + + + var payTypes = new List() { new() { Type = BalanceRecordSourceEnumType.Cash } }; + + var selectTenantId = await _dbContext.Queryable() + .Where(x => x.Code == request.BusinessPlaceCode) + .Select(x => x.TenantId) + .FirstAsync(); + + if (gainfo.Factory == selectTenantId) + { + payTypes.Add(new BalanceRecordSourceEnumDto { Type = BalanceRecordSourceEnumType.LocalTenantSubsidies }); + } + + return new DishesMenusBookingSettingResponse { ServerTime = DateTime.Now, - Deadline = DateTime.Today.Add(deadline.ToTimeSpan()) + Deadline = DateTime.Today.Add(deadline.ToTimeSpan()), + PayTypes = payTypes }; - - var shift = await _dbContext.Queryable() - .Where(x => x.PlaceCode == request.PlaceCode) - .FirstAsync(); - - var payTypes = new List(); - var dto1 = new BalanceRecordSourceEnumDto - { - Type = BalanceRecordSourceEnumType.Cash - }; - payTypes.Add(dto1); - - if (shift != null) - { - - - if (shift.TenantId == request.Factory) - { - var dto2 = new BalanceRecordSourceEnumDto - { - Type = BalanceRecordSourceEnumType.LocalTenantSubsidies - }; - payTypes.Add(dto2); - } - - } - res.PayTypes = payTypes; - - return res; } public async Task GetDishesDetailByIdAsync(long id) diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs index ce759c46..33ee4ffc 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs @@ -33,10 +33,6 @@ public abstract class BaseOrderService _logger = logger; } - protected BaseOrderService(ICanteenSettingService canteenSettingService) - { - _canteenSettingService = canteenSettingService; - } protected IDbContext DbContext => _dbContext; diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 2c346e53..5de1673d 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -19,11 +19,12 @@ namespace Dlhis.Canteen.Order.Services.Implements; public class BookingOrderService : BaseOrderService, IBookingOrderService { - private readonly IDbContext _dbContext; - private readonly ICurrentUser _currentUser; private readonly IDisheMenuApi _disheMenuApi; - public BookingOrderService(ICanteenSettingService canteenSettingService, IDisheMenuApi disheMenuApi) : base(canteenSettingService) + public BookingOrderService(ICanteenSettingService canteenSettingService, IDbContext dbContext, + IDisheMenuApi disheMenuApi, + ICurrentUser currentUser, IDevicePermissionApi devicePermissionApi, ILogger logger) + : base(canteenSettingService, dbContext, currentUser, devicePermissionApi, logger) { _disheMenuApi = disheMenuApi; } @@ -32,7 +33,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService { var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType); - var businessPlace = await _dbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); + var businessPlace = await DbContext.Queryable().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); //预定时间 var now = DateTime.Now; @@ -82,7 +83,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService TenantId = businessPlace.TenantId, }; - var orderId = await _dbContext.InsertReturnIdentityAsync(order); + var orderId = await DbContext.InsertReturnIdentityAsync(order); await ContinueUpdateAsync(async () => { await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode); @@ -96,10 +97,10 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService if (request.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies) { - var mealInfo = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var mealInfo = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); if (mealInfo == null) { - await _dbContext.InsertAsync(new GainfoMealEntity + await DbContext.InsertAsync(new GainfoMealEntity { Balance = 0, BalanceOfRecharge = 0, @@ -115,7 +116,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService mealInfo.Balance += order.Amount; (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费"); - var effectMeal = await _dbContext.Updateable() + var effectMeal = await DbContext.Updateable() .SetColumns(x => x.Balance == mealInfo.Balance) .SetColumns(x => x.Version == x.Version + 1) .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致 @@ -125,7 +126,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService } - var effectMenu = await _dbContext.Updateable() + var effectMenu = await DbContext.Updateable() .SetColumns(x => x.Number == menuDetail.Number) .SetColumns(x => x.Version == x.Version + 1) .SetColumns(x => x.ModifiedTime == now) @@ -141,9 +142,9 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService //写入记录 var balanceRecord = order.Adapt(); - await _dbContext.InsertAsync(balanceRecord); + await DbContext.InsertAsync(balanceRecord); - await _dbContext.InsertAsync(new CanteenOrderDetailEntity + await DbContext.InsertAsync(new CanteenOrderDetailEntity { OrderNo = order.No, DishesCode = request.DishesCode, @@ -167,7 +168,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService public async Task> GetBookingPageAsync(OrderBookingPageRequest request) { - var page = await _dbContext.Queryable() + var page = await DbContext.Queryable() .LeftJoin((x, ga) => x.UserNo == ga.No) .Select(x => new OrderBookingResponse { @@ -200,18 +201,18 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService /// private async Task CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType) { - var subjectId = _currentUser.GetIntSubjectId(); - var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); - var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + var subjectId = CurrentUser.GetIntSubjectId(); + var gainfo = await DbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = CurrentUser.GetUserClaim("jinko-code") ?? string.Empty; if (jinkoCode.IsPresent()) { - gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + gainfo = await DbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); } var start = bookingDate.Date.AddDays(-1); var end = start.AddDays(1).AddSeconds(-1); - var exists = await _dbContext.Queryable() + var exists = await DbContext.Queryable() .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) .Where(x => x.ShiftType == shiftType) .Where(x => x.UserNo == gainfo.No) From a5dcab1d072a3c5f6c3d1c84dab91237e28c4d70 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 11:16:23 +0800 Subject: [PATCH 24/50] =?UTF-8?q?fix=20=E8=90=A5=E4=B8=9A=E7=82=B9?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesMenusController.cs | 2 +- .../Controllers/BusinessPlacesController.cs | 1 + .../Implements/BusinessPlaceService.cs | 20 +++++++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index a5537dd4..de956b28 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -57,7 +57,7 @@ public class DishesMenusController : ControllerBase /// /// /// - /// + /// /// [HttpGet("dishes-selections")] public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, diff --git a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs index 249b3774..46a23303 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs @@ -64,6 +64,7 @@ public class BusinessPlacesController : ControllerBase /// /// /// + [Authorize(Roles = "admin,tenant-admin")] [HttpPost("save")] public async Task SaveAsync(BusinessPlaceSaveRequest request) { diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs index 35a72463..23508ed8 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs @@ -13,15 +13,18 @@ namespace Dlhis.Basic.BusinessPlace.Services.Implements; public class BusinessPlaceService : IBusinessPlaceService { private readonly IDbContext _dbContext; + private readonly IBusinessPlacePermissionsService _businessPlacePermissionsService; - public BusinessPlaceService(IDbContext dbContext) + public BusinessPlaceService(IDbContext dbContext, IBusinessPlacePermissionsService businessPlacePermissionsService) { _dbContext = dbContext; + _businessPlacePermissionsService = businessPlacePermissionsService; } - public async Task> GetPageAsync(BusinessPlacePageRequest request) { + var myCodes = await GetMyBusinessPlaceCodesAsync(); + var page = await _dbContext.Queryable() .LeftJoin((x, ps) => x.Code == ps.PlaceCode) .LeftJoin((x, ps, s) => s.Code == ps.ShiftCode) @@ -30,6 +33,7 @@ public class BusinessPlaceService : IBusinessPlaceService .WhereIF(request.Catalog.HasValue, x => x.Catalog == request.Catalog) .WhereIF(request.Status.HasValue, x => x.Status == request.Status) .WhereIF(request.Source.HasValue, x => x.Source == request.Source) + .Where(x => myCodes.Contains(x.Code)) .Select((x, ps, s) => new BusinessPlaceResponse { Id = x.Id, @@ -51,12 +55,15 @@ public class BusinessPlaceService : IBusinessPlaceService public async Task> GetOpenedListAsync(Guid? placeCode = null, string tenant = null) { + var myCodes = await GetMyBusinessPlaceCodesAsync(); + var list = await _dbContext.Queryable() .LeftJoin((x, ps) => x.Code == ps.PlaceCode) .LeftJoin((x, ps, s) => s.Code == ps.ShiftCode) .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) .WhereIF(placeCode.HasValue, x => x.Code == placeCode) .WhereIF(tenant.IsPresent(), x => x.TenantId == tenant) + .Where(x => myCodes.Contains(x.Code)) .Select((x, ps, s) => new BusinessPlaceListResponse { Id = x.Id, @@ -151,4 +158,13 @@ public class BusinessPlaceService : IBusinessPlaceService existsSameCustomCode.ThrowIfTrue($"自定义手工号[{request.CustomCode}]存在重复,请检查."); } + + /// + /// 获取我的营业点 + /// + /// + private async Task> GetMyBusinessPlaceCodesAsync() + { + return (await _businessPlacePermissionsService.GetMyAsync()).Select(x => x.Code).ToList(); + } } From c39f77008d4af8d2706901e649a2b63334f2fb23 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 11:31:50 +0800 Subject: [PATCH 25/50] =?UTF-8?q?fix=20=E8=90=A5=E4=B8=9A=E7=82=B9?= =?UTF-8?q?=E6=8E=A7=E5=88=B6(admin),unit=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dishes/Response/DishesDetailResponse.cs | 20 +++++++++++++++++-- .../Services/Implements/DishesMenuService.cs | 1 + .../BusinessPlacePermissionsService.cs | 9 ++++++--- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs index 4d97b8d2..fe90d831 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs @@ -1,4 +1,7 @@ -namespace Dlhis.Basic.Dishes.Response; +using Kurisu.AspNetCore.Utils.Extensions; +using Newtonsoft.Json; + +namespace Dlhis.Basic.Dishes.Response; public class DishesDetailResponse { @@ -42,7 +45,20 @@ public class DishesDetailResponse /// /// 单位 /// - public List Units { get; set; } + public List Units + { + get + { + if (CurrentUnits.IsPresent()) + { + return CurrentUnits.ToObject>(); + } + return new () { "个" }; + } + } + + [JsonIgnore] + public string CurrentUnits { get; set; } /// /// 图片 diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index a8f2b277..67a77bef 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -93,6 +93,7 @@ public class DishesMenuService : IDishesMenuService Price = dishes.Price, Name = dishes.Name, Number = x.Number, + CurrentUnits = dishes.Units.ToString() }) .ToListAsync(); diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs index 2aaa3918..13af5110 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs @@ -9,6 +9,7 @@ using Dlhis.Basic.Places.Dtos; using Kurisu.SqlSugar.Extensions; using Dlhis.Sys.Api; using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; namespace Dlhis.Basic.BusinessPlace.Services.Implements; @@ -51,15 +52,17 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService public async Task> GetMyAsync() { var userId = _currentUser.GetIntSubjectId(); + var role = _currentUser.GetUserClaim(ClaimTypes.Role); + var isAdmin = role == "admin" || role == "tenant-admin"; - var guids = await _dbContext.Queryable() - .Where(x => x.ManagerUserId == userId) + var codes = await _dbContext.Queryable() + .WhereIF(!isAdmin, x => x.ManagerUserId == userId) .Select(x => x.BusinessPlaceCode) .Distinct() .ToListAsync(); return await _dbContext.Queryable() - .Where(x => guids.Contains(x.Code)) + .Where(x => codes.Contains(x.Code)) .Select() .ToListAsync(); } From 6d3a19b2831af271530bdb7b5a3d75fe28d74b52 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 11:48:45 +0800 Subject: [PATCH 26/50] =?UTF-8?q?fix=20=E9=94=99=E8=AF=AF=E5=80=BC?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs | 2 +- Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 67a77bef..08fd069f 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -87,7 +87,7 @@ public class DishesMenuService : IDishesMenuService { BusinessPlaceCode = x.BusinessPlaceCode, CategoryCode = dishes.CategoryCode, - CustomCode = x.CustomCode, + CustomCode = dishes.CustomCode, Description = dishes.Description, ImageUrl = dishes.ImageUrl, Price = dishes.Price, diff --git a/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs b/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs index cf9cb6f4..ac690a39 100644 --- a/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs +++ b/Src/Dlhis.Common/FileOperation/Request/UploadFileReuqest.cs @@ -5,7 +5,7 @@ namespace Dlhis.Common.FileOperation.Request; public class UploadFileReuqest { /// - /// 路由获取 + /// bucket /// [FromRoute] public string Bucket { get; set; } From c582fb40c0c72189aff3f8f3c02658f91614fffd Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 15:40:22 +0800 Subject: [PATCH 27/50] =?UTF-8?q?fix=20=E6=9F=A5=E8=AF=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Places/Controllers/BusinessPlacesController.cs | 2 +- .../Order/Response/OrderAggregationResponse.cs | 5 +++++ .../Order/Response/OrderBookingResponse.cs | 5 +++++ .../Order/Services/Implements/OrderService.cs | 3 ++- Src/Dlhis.Canteen/Program.cs | 13 +------------ 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs index 46a23303..dc4acda4 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BusinessPlacesController.cs @@ -56,7 +56,7 @@ public class BusinessPlacesController : ControllerBase [IgnoreTenant] public async Task> GetAllList(string tenant) { - return await _businessPlaceService.GetOpenedListAsync(); + return await _businessPlaceService.GetOpenedListAsync(null, tenant); } /// diff --git a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs index a1cb257b..1fb6cc24 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs @@ -48,4 +48,9 @@ public class OrderAggregationResponse return 0; } } + + /// + /// 订单时间 + /// + public DateTime CreateTime { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs index 419d1fc9..b167b69f 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs @@ -31,4 +31,9 @@ public class OrderBookingResponse /// /// public string UserNo { get; set; } + + /// + /// 订单时间 + /// + public DateTime CreateTime { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 821b6610..b3f38f6f 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -301,6 +301,7 @@ public class OrderService : BaseOrderService, IOrderService { No = x.No, BusinessPlaceName = bplace.Name, + CreateTime = x.CreateTime }) .ToPageListAsync(page); @@ -317,7 +318,7 @@ public class OrderService : BaseOrderService, IOrderService Name = d.Name, ImageUrl = d.ImageUrl, Number = x.Number, - Price = x.Price + Price = x.Price, }) .ToListAsync(); diff --git a/Src/Dlhis.Canteen/Program.cs b/Src/Dlhis.Canteen/Program.cs index b9710d07..198c78c7 100644 --- a/Src/Dlhis.Canteen/Program.cs +++ b/Src/Dlhis.Canteen/Program.cs @@ -22,18 +22,7 @@ public class Startup : DefaultStartup public override void ConfigureServices(IServiceCollection services) { - base.ConfigureServices(services); - //protected static string Obfuscate(string value) - //{ - // var last4Chars = "****"; - // if (value.IsPresent() && value.Length > 4) - // { - // last4Chars = value.Substring(value.Length - 4); - // } - - // return "****" + last4Chars; - //} - + base.ConfigureServices(services); services.AddRedis(); } From 0eb76e878c5717db628fa52f083d413220e2b25b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 15:48:59 +0800 Subject: [PATCH 28/50] =?UTF-8?q?fix=20=E5=A4=84=E7=90=86=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=BC=BA=E5=B0=91=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dishes/Services/Implements/DishesMenuService.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 08fd069f..77e9b9b0 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -147,7 +147,9 @@ public class DishesMenuService : IDishesMenuService var where = LinqExpressionExtension.False(); keys.ForEach(x => { - where = where.Or(item => SqlFunc.DateIsSame(item.Date, x.Date, DateType.Day) && item.ShiftType == x.ShiftType); + where = where.Or(item => item.BusinessPlaceCode == request.BusinessPlaceCode + && SqlFunc.DateIsSame(item.Date, x.Date, DateType.Day) + && item.ShiftType == x.ShiftType); }); await _dbContext.Client.Deleteable().Where(where).ExecuteCommandAsync(); From 212a1fa07372a7be8b90249a2b69e593e513a00b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 16:01:49 +0800 Subject: [PATCH 29/50] =?UTF-8?q?fix=20=E4=B8=B4=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=A8=A1=E6=8B=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Response/BalanceRecordByUserResponse.cs | 7 +------ .../Order/Services/Implements/BalanceService.cs | 8 ++++++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs index 9afd46b3..367262ea 100644 --- a/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/BalanceRecordByUserResponse.cs @@ -1,9 +1,4 @@ -using Dlhis.Entity.Canteen.Enums; -using SqlSugar.DbConvert; -using SqlSugar; -using Kurisu.AspNetCore.Utils.Extensions; - -namespace Dlhis.Canteen.Order.Response; +namespace Dlhis.Canteen.Order.Response; public class BalanceRecordByUserResponse { diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index b669579f..ab663500 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -752,6 +752,14 @@ public class BalanceService : IBalanceService .Select() .ToPageListAsync(request); + page.Data.Add(new BalanceRecordByUserResponse + { + Amount = 20, + CostDateTime = DateTime.Now.Date, + Remark = "2024-03-21 餐补", + No = "129876578" + }); + return page; } From 2ca8f2db49e0a80caa4ec6c2142a144a18b37535 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 16:22:47 +0800 Subject: [PATCH 30/50] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesCategoriesController.cs | 14 ++++++++++ .../Controller/DishesMenusController.cs | 1 + .../Dishes/Services/IDishesCategoryService.cs | 4 +++ .../Implements/DishesCategoryService.cs | 26 +++++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs index 7370ebe9..12e48ba9 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs @@ -1,6 +1,7 @@ using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; using Dlhis.Basic.Dishes.Services; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -31,6 +32,19 @@ public class DishesCategoriesController : ControllerBase return await _dishesCategoryService.TreeAsync(); } + + /// + /// + /// + /// + /// + [HttpGet("tree-all")] + [IgnoreTenant] + public async Task> TreeAllAsync(Guid businessPlaceCode) + { + return await _dishesCategoryService.TreeAllAsync(businessPlaceCode); + } + /// /// 保存分类 /// diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index de956b28..867d0e4e 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -60,6 +60,7 @@ public class DishesMenusController : ControllerBase /// /// [HttpGet("dishes-selections")] + [IgnoreTenant] public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs index 2164e5e0..637c93ed 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs @@ -7,5 +7,9 @@ public interface IDishesCategoryService : IScopeDependency { Task> TreeAsync(); + + Task> TreeAllAsync(Guid businessPlaceCode); + + Task SaveAsync(DishesCategorySaveRequest request); } diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs index 58e2b6b2..528c33d6 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs @@ -46,6 +46,32 @@ public class DishesCategoryService : IDishesCategoryService return tops; } + public async Task> TreeAllAsync(Guid businessPlaceCode) + { + var categories = await _dbContext.Queryable() + .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) + .Where(x => x.BusinessPlaceCode == businessPlaceCode) + .Select((x, bplace) => new DishesCategoryTreeResponse + { + BusinessPlaceCode = bplace.Code, + Code = x.Code, + Name = x.Name, + PCode = x.PCode, + }) + .ToListAsync(); + + var tops = categories.Where(x => !x.PCode.HasValue).ToList(); + + tops.ForEach(x => + { + RecursionGetNext(x, categories); + }); + + return tops; + } + + + public async Task SaveAsync(DishesCategorySaveRequest request) { await CheckBusinessPlacePermissionAsync(request.BusinessPlaceCode); From 4c866eaf3ff2813cec9deeb92d81efbdb3064b8e Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 16:40:24 +0800 Subject: [PATCH 31/50] =?UTF-8?q?feat=20=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BookingAddressController.cs | 17 ++++++++++++++++- .../Places/Request/BookingAddressPageRequest.cs | 5 ++--- .../Places/Services/IBookingAddressService.cs | 2 ++ .../Implements/BookingAddressService.cs | 8 ++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs b/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs index 24b717da..3f9eba2f 100644 --- a/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs +++ b/Src/Dlhis.Basic/Places/Controllers/BookingAddressController.cs @@ -1,9 +1,12 @@ -using Dlhis.Basic.Places.Request; +using System.ComponentModel.DataAnnotations; +using Dlhis.Basic.Places.Request; using Dlhis.Basic.Places.Response; using Dlhis.Basic.Places.Services; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.Core.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Org.BouncyCastle.Asn1.Ocsp; namespace Dlhis.Basic.Places.Controllers; @@ -33,6 +36,18 @@ public class BookingAddressController : ControllerBase return await _bookingAddresService.GetAddressPageAsync(request); } + /// + /// 所有地址 + /// + /// + /// + [HttpGet("all")] + [IgnoreTenant] + public async Task> GetAllAddressAsync([Required(ErrorMessage = "厂区不可为空")] string tenant) + { + return await _bookingAddresService.GetAllAddressAsync(tenant); + } + /// /// 地址保存 /// diff --git a/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs b/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs index 0afa8bc4..b08d1e3e 100644 --- a/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs +++ b/Src/Dlhis.Basic/Places/Request/BookingAddressPageRequest.cs @@ -1,9 +1,8 @@ - - -using Kurisu.Core.DataAccess.Dto; +using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Basic.Places.Request; public class BookingAddressPageRequest : PageDto { + } diff --git a/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs b/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs index 9dc94951..9e558f2d 100644 --- a/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs +++ b/Src/Dlhis.Basic/Places/Services/IBookingAddressService.cs @@ -8,5 +8,7 @@ public interface IBookingAddressService : IScopeDependency { Task> GetAddressPageAsync(BookingAddressPageRequest request); + Task> GetAllAddressAsync(string tenant); + Task SaveAddressAsync(BookingAddressSaveRequest request); } diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs index 22de0f58..c3fab27c 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BookingAddressService.cs @@ -42,4 +42,12 @@ public class BookingAddressService : IBookingAddressService await _dbContext.UpdateAsync(entity); } } + + public async Task> GetAllAddressAsync(string tenant) + { + return await _dbContext.Queryable() + .Where(x => x.TenantId == tenant) + .Select() + .ToListAsync(); + } } From 5ae6dd97b4dc66b07eead304438384bbbb4de833 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 16:53:40 +0800 Subject: [PATCH 32/50] fix ignoretenant --- Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs | 1 + Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index 867d0e4e..555e8517 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -90,6 +90,7 @@ public class DishesMenusController : ControllerBase /// /// [HttpGet("checkdetail")] + [IgnoreTenant] public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode) { return await _dishesMenuService.GetBookingDishesDetailAsync(date, businessPlaceCode, shiftType, dishesCode); diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index dafd75ae..6c802107 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -68,6 +68,7 @@ public class OrdersController : ControllerBase /// [HttpPost("booking")] [Transactional] + [IgnoreTenant] public async Task Booking(BookingMealRequest request) { return await _bookingOrderService.BookingAsync(request); From 28d2c1d8d424e9fd11964922f48d985f544d9cef Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 17:05:37 +0800 Subject: [PATCH 33/50] fix ignoretenant --- Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 6c802107..17062f8a 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -55,6 +55,7 @@ public class OrdersController : ControllerBase /// /// [HttpGet("aggregation")] + [IgnoreTenant] public async Task> GetOrdersAggregationAsync([FromQuery] PageDto page) { return await _orderService.GetOrdersAggregationAsync(page); From 226c61ee41f31d0362bb57d7c5b3b1824e02856a Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 17:09:42 +0800 Subject: [PATCH 34/50] =?UTF-8?q?fix=20tenantId=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Services/Implements/BookingOrderService.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 5de1673d..0ba8f59f 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -151,6 +151,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService Price = menuDetail.Price, //Unit Number = 1, + TenantId = order.TenantId, }); }, 10); From 1218aec8110224347000548685bc606eee3a7c12 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 17:32:45 +0800 Subject: [PATCH 35/50] =?UTF-8?q?fix=20=E8=90=A5=E4=B8=9A=E7=82=B9?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/BusinessPlacePermissionsService.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs index 13af5110..6b0cd8e2 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlacePermissionsService.cs @@ -55,11 +55,22 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService var role = _currentUser.GetUserClaim(ClaimTypes.Role); var isAdmin = role == "admin" || role == "tenant-admin"; - var codes = await _dbContext.Queryable() - .WhereIF(!isAdmin, x => x.ManagerUserId == userId) + var codes = new List(); + if (isAdmin) + { + codes = await _dbContext.Queryable() + .Select(x => x.Code) + .ToListAsync(); + } + else + { + codes = await _dbContext.Queryable() + .Where(x => x.ManagerUserId == userId) .Select(x => x.BusinessPlaceCode) .Distinct() .ToListAsync(); + } + return await _dbContext.Queryable() .Where(x => codes.Contains(x.Code)) From e256d18d36d9e8bc290e780a83482970fe39d011 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 18:14:33 +0800 Subject: [PATCH 36/50] =?UTF-8?q?fix=20=E8=AE=A2=E5=8D=95=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=8E=A5=E5=8F=A3,=E5=88=86=E9=A1=B5=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/OrdersController.cs | 28 +++++ .../Order/Request/BookingMealRequest.cs | 5 + .../Order/Request/OrderCancelRequest.cs | 18 +++ .../Response/OrderAggregationResponse.cs | 2 + .../Order/Response/OrderBookingResponse.cs | 25 +++- .../Order/Services/IBookingOrderService.cs | 4 +- .../Implements/BookingOrderService.cs | 116 +++++++++++++++++- .../Order/Services/Implements/OrderService.cs | 3 +- .../Entities/CanteenOrderDetailEntity.cs | 6 + 9 files changed, 196 insertions(+), 11 deletions(-) create mode 100644 Src/Dlhis.Canteen/Order/Request/OrderCancelRequest.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs index 17062f8a..35ef5f69 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs @@ -61,6 +61,34 @@ public class OrdersController : ControllerBase return await _orderService.GetOrdersAggregationAsync(page); } + /// + /// 取消订单 + /// + /// + /// + [HttpPut("user-cancel")] + [Transactional] + [IgnoreTenant] + public async Task CancelOrderAsync(OrderCancelRequest request) + { + await _bookingOrderService.UserCancelOrderAsync(request); + } + + + + /// + /// 取消订单 + /// + /// + /// + [HttpPut("manager-cancel")] + [Transactional] + [IgnoreTenant] + public async Task ManagerCancelOrderAsync(OrderCancelRequest request) + { + await _bookingOrderService.ManagerCancelOrderAsync(request); + } + //************************************************************** 订餐功能 ********************************************************************************** /// diff --git a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs index e9f434e2..388dc9f0 100644 --- a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs @@ -36,6 +36,11 @@ public class BookingMealRequest : IValidatableObject [Range(0, 100)] public int Number { get; set; } + /// + /// 单位 + /// + public string Unit { get; set; } + /// /// 消费来源 /// diff --git a/Src/Dlhis.Canteen/Order/Request/OrderCancelRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderCancelRequest.cs new file mode 100644 index 00000000..35c8c079 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Request/OrderCancelRequest.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Canteen.Order.Request; + +public class OrderCancelRequest +{ + /// + /// + /// + [Required(ErrorMessage = "订单号")] + public string No { get; set; } + + /// + /// 取消原因 + /// + [Required] + public string Reason { get; set; } +} diff --git a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs index 1fb6cc24..05adb68d 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs @@ -53,4 +53,6 @@ public class OrderAggregationResponse /// 订单时间 /// public DateTime CreateTime { get; set; } + + public string Remark { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs index b167b69f..06385b0d 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderBookingResponse.cs @@ -1,4 +1,7 @@ -namespace Dlhis.Canteen.Order.Response; +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Canteen.Order.Response; public class OrderBookingResponse { @@ -28,12 +31,28 @@ public class OrderBookingResponse public string UserCode { get; set; } /// - /// + /// 用户 /// - public string UserNo { get; set; } + public string UserName { get; set; } + + /// + /// 餐次 + /// + public ShiftEnumType? ShiftType { get; set; } + + /// + /// 餐次 + /// + public string ShiftTypeDesc => ShiftType.GetDescription(); + /// /// 订单时间 /// public DateTime CreateTime { get; set; } + + + public CanteenOrderStatusEnumType Status { get; set; } + + public string StatusDesc => Status.GetDescription(); } diff --git a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs index 53264f80..3266c9ee 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBookingOrderService.cs @@ -17,5 +17,7 @@ public interface IBookingOrderService : IScopeDependency Task> GetBookingPageAsync(OrderBookingPageRequest request); - Task CancelOrderAsync(); + Task UserCancelOrderAsync(OrderCancelRequest request); + + Task ManagerCancelOrderAsync(OrderCancelRequest request); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 0ba8f59f..92e36ffd 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -14,19 +14,23 @@ using Dlhis.Basic.Api; using Kurisu.SqlSugar.Extensions; using SqlSugar; using Mapster; +using MySqlX.XDevAPI.Relational; namespace Dlhis.Canteen.Order.Services.Implements; public class BookingOrderService : BaseOrderService, IBookingOrderService { private readonly IDisheMenuApi _disheMenuApi; + private readonly IBusinessPlacePermissionsApi _businessPlacePermissionsApi; public BookingOrderService(ICanteenSettingService canteenSettingService, IDbContext dbContext, IDisheMenuApi disheMenuApi, + IBusinessPlacePermissionsApi businessPlacePermissionsApi, ICurrentUser currentUser, IDevicePermissionApi devicePermissionApi, ILogger logger) : base(canteenSettingService, dbContext, currentUser, devicePermissionApi, logger) { _disheMenuApi = disheMenuApi; + _businessPlacePermissionsApi = businessPlacePermissionsApi; } public async Task BookingAsync(BookingMealRequest request) @@ -147,9 +151,10 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService await DbContext.InsertAsync(new CanteenOrderDetailEntity { OrderNo = order.No, + BookingDate = request.BookingDate, DishesCode = request.DishesCode, Price = menuDetail.Price, - //Unit + Unit = request.Unit, Number = 1, TenantId = order.TenantId, }); @@ -169,29 +174,127 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService public async Task> GetBookingPageAsync(OrderBookingPageRequest request) { + var myCodes = (await _businessPlacePermissionsApi.GetMyAsync()).Data.Select(x => (Guid?)x.Code).ToList(); + var page = await DbContext.Queryable() - .LeftJoin((x, ga) => x.UserNo == ga.No) - .Select(x => new OrderBookingResponse + .LeftJoin((x, ga) => x.UserNo == ga.No) + .Where(x => myCodes.Contains(x.BusinessPlaceCode)) + .Select((x, ga) => new OrderBookingResponse { No = x.No, DeliveryAddress = x.DeliveryAddress, Remark = x.Remark, - Amount = x.Amount + Amount = x.Amount, + CreateTime = x.CreateTime, + ShiftType = x.ShiftType, + Status = x.OrderStatus, + UserCode = x.UserCode, + UserName = ga.Name }) .ToPageListAsync(request); return page; } - public async Task CancelOrderAsync() + public async Task UserCancelOrderAsync(OrderCancelRequest request) { - throw new NotImplementedException(); + //预定时间 + var now = DateTime.Now; + var userId = CurrentUser.GetIntSubjectId(); + + var bookingDeadline = await GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00); + var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan()); + (now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作"); + + var order = await DbContext.Queryable().Where(x => x.No == request.No).FirstAsync(); + order.ThrowIfNull("订单不存在"); + + await DbContext.Updateable() + .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Cancel) + .SetColumns(x => x.Remark == request.Reason) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.No == request.No) + .ExecuteCommandAsync(); + + var balance = await DbContext.Queryable().Where(x => x.No == request.No).SingleAsync(); + await DbContext.Updateable() + .SetColumns(x => x.Status == BalanceRecordStatusEnumType.Obsolute) + .SetColumns(x => x.Remark == request.Reason) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.No == request.No) + .ExecuteCommandAsync(); + + var amount = Math.Abs(order.Amount); + + //尝试5次 + await ContinueUpdateAsync(async () => + { + var mealInfo = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + + var effect = await DbContext.Updateable() + .SetColumns(x => x.Balance == x.Balance + amount) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version) + .ExecuteCommandAsync(); + + if (effect <= 0) + { + throw new VersionExceptions("取消订单失败!"); + } + + }, 5); } + public async Task ManagerCancelOrderAsync(OrderCancelRequest request) + { + var now = DateTime.Now; + var userId = CurrentUser.GetIntSubjectId(); + var order = await DbContext.Queryable().Where(x => x.No == request.No).FirstAsync(); + order.ThrowIfNull("订单不存在"); + await DbContext.Updateable() + .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Cancel) + .SetColumns(x => x.Remark == request.Reason) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.No == request.No) + .ExecuteCommandAsync(); + var balance = await DbContext.Queryable().Where(x => x.No == request.No).SingleAsync(); + await DbContext.Updateable() + .SetColumns(x => x.Status == BalanceRecordStatusEnumType.Obsolute) + .SetColumns(x => x.Remark == request.Reason) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.No == request.No) + .ExecuteCommandAsync(); + + var amount = Math.Abs(order.Amount); + + //尝试5次 + await ContinueUpdateAsync(async () => + { + var mealInfo = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + + var effect = await DbContext.Updateable() + .SetColumns(x => x.Balance == x.Balance + amount) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version) + .ExecuteCommandAsync(); + + if (effect <= 0) + { + throw new VersionExceptions("取消订单失败!"); + } + + }, 5); + } /// @@ -215,6 +318,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService var exists = await DbContext.Queryable() .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + .Where(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) .Where(x => x.ShiftType == shiftType) .Where(x => x.UserNo == gainfo.No) .Where(x => x.CreateTime >= start && x.CreateTime <= end) diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index b3f38f6f..36db7386 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -301,7 +301,8 @@ public class OrderService : BaseOrderService, IOrderService { No = x.No, BusinessPlaceName = bplace.Name, - CreateTime = x.CreateTime + CreateTime = x.CreateTime, + Remark = x.Remark, }) .ToPageListAsync(page); diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs index 80d30b52..1627a0f7 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/CanteenOrderDetailEntity.cs @@ -16,6 +16,12 @@ public class CanteenOrderDetailEntity : SugarBaseEntity, ITenantId [SugarColumn(ColumnDescription = "订单号")] public string OrderNo { get; set; } + /// + /// 菜单日期 + /// + [SugarColumn(ColumnDescription = "订餐日期")] + public DateTime BookingDate { get; set; } + /// /// 菜品编码 /// From 93c38be18ac885abb579ba030b154ca276180961 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 18:40:12 +0800 Subject: [PATCH 37/50] =?UTF-8?q?fix=20=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Request/OrderBookingPageRequest.cs | 10 ++++++++-- .../Order/Services/Implements/BookingOrderService.cs | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs index 3dd0fc6d..24cab90b 100644 --- a/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OrderBookingPageRequest.cs @@ -1,8 +1,14 @@ -using Kurisu.Core.DataAccess.Dto; +using System.ComponentModel.DataAnnotations; +using Dlhis.Entity.Canteen.Enums; +using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Canteen.Order.Request; public class OrderBookingPageRequest : PageDto { - + /// + /// 订单状态 CanteenOrderStatusEnumType + /// + [EnumDataType(typeof(CanteenOrderStatusEnumType))] + public CanteenOrderStatusEnumType? OrderStatus { get; set; } } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 92e36ffd..c8187ecc 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -179,6 +179,8 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService var page = await DbContext.Queryable() .LeftJoin((x, ga) => x.UserNo == ga.No) .Where(x => myCodes.Contains(x.BusinessPlaceCode)) + .WhereIF(request.OrderStatus.HasValue, x => x.OrderStatus == request.OrderStatus) + .WhereIF(request.Search.IsPresent(), (x, ga) => x.UserCode == request.Search || ga.Name.Contains(request.Search)) .Select((x, ga) => new OrderBookingResponse { No = x.No, From 573911f90751925c29a8b6c29d2a3fbab8c4b19b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 19:13:33 +0800 Subject: [PATCH 38/50] =?UTF-8?q?fix=20=E8=AE=A2=E5=8D=95=E8=81=9A?= =?UTF-8?q?=E5=90=88=E8=BF=94=E5=9B=9E=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Response/OrderAggregationResponse.cs | 11 ++++++++++- .../Order/Services/Implements/OrderService.cs | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs index 05adb68d..c00cfec1 100644 --- a/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs @@ -1,4 +1,5 @@ -using Kurisu.AspNetCore.Utils.Extensions; +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Extensions; namespace Dlhis.Canteen.Order.Response; @@ -55,4 +56,12 @@ public class OrderAggregationResponse public DateTime CreateTime { get; set; } public string Remark { get; set; } + + /// + /// 订单状态 + /// + public CanteenOrderStatusEnumType OrderStatus { get; set; } + + + public string OrderStatusDesc => OrderStatus.GetDescription(); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 36db7386..07bc6916 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -303,6 +303,7 @@ public class OrderService : BaseOrderService, IOrderService BusinessPlaceName = bplace.Name, CreateTime = x.CreateTime, Remark = x.Remark, + OrderStatus = x.OrderStatus, }) .ToPageListAsync(page); From 89904fead160e4e1312eee4e89672c39d58c3ad5 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 20:23:20 +0800 Subject: [PATCH 39/50] =?UTF-8?q?fix=20=E8=8F=9C=E5=8D=95=E6=97=B6?= =?UTF-8?q?=E6=95=88=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Request/DishesMenuNameDateSaveRequest.cs | 16 +++--- .../Dishes/Response/DishesMenuPageResponse.cs | 9 +++- .../Services/Implements/DishesMenuService.cs | 50 +++++++++++++------ .../Implements/BookingOrderService.cs | 3 +- .../Canteen/Entities/DishesMenuEntity.cs | 11 ++-- 5 files changed, 59 insertions(+), 30 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs index 54b3bb35..7be1b655 100644 --- a/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.Core.CustomClass; namespace Dlhis.Basic.Dishes.Request; @@ -11,29 +12,26 @@ public class DishesMenuNameDateSaveRequest : IValidatableObject public string CustomCode { get; set; } /// - /// 菜单日期 + /// 时间段 /// - public DateTime Date { get; set; } + [Required(ErrorMessage = "时间段不可为空")] + public DateTimePeriod Period { get; set; } /// /// 餐次数据 /// public List ShiftTypes { get; set; } - public IEnumerable Validate(ValidationContext validationContext) { - if (Date < DateTime.Today) + if (Period.Start < Period.End) { - yield return new ValidationResult("菜单日期不能小于当天"); + yield return new ValidationResult("时间范围有误", new[] { nameof(Period) }); } - //格式化 - Date = Date.Date; - if (CustomCode.IsEmpty()) { - CustomCode = Date.ToString("yyyy-MM-dd"); + CustomCode = Period.Start.Value.ToString("yyyy-MM-dd") + "." + Period.End.Value.ToString("yyyy-MM-dd"); } } } diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs index c59836cb..96414ae9 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesMenuPageResponse.cs @@ -13,7 +13,12 @@ public class DishesMenuPageResponse public Guid BusinessPlaceCode { get; set; } /// - /// 营业日期 + /// 营业日期 开始 /// - public DateTime Date { get; set; } + public DateTime StartDate { get; set; } + + /// + /// 营业日期 结束 + /// + public DateTime EndDate { get; set; } } diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 77e9b9b0..d007c4d2 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -9,7 +9,8 @@ using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; using Dlhis.Basic.BusinessPlace.Services; using Dlhis.Basic.Dishes.Dto; -using Mapster; +using Kurisu.Core.CustomClass; +using System.Linq.Expressions; namespace Dlhis.Basic.Dishes.Services.Implements; @@ -28,12 +29,13 @@ public class DishesMenuService : IDishesMenuService { return await _dbContext.Queryable() .Where(x => x.BusinessPlaceCode == request.BusinessPlaceCode) - .GroupBy(x => new { x.BusinessPlaceCode, x.CustomCode, x.Date }) + .GroupBy(x => new { x.BusinessPlaceCode, x.CustomCode, x.StartDate, x.EndDate }) .Select(x => new DishesMenuPageResponse { BusinessPlaceCode = x.BusinessPlaceCode, CustomCode = x.CustomCode, - Date = x.Date, + StartDate = x.StartDate, + EndDate = x.EndDate, }) .ToPageListAsync(request); } @@ -42,6 +44,8 @@ public class DishesMenuService : IDishesMenuService { var data = await _dbContext.Queryable() .Where(x => x.BusinessPlaceCode == businessPlaceCode) + .Where(x => x.CustomCode == customCode) + .Where(x => x.StartDate >= date && x.EndDate <= date) .ToListAsync(); return new DishesMenuSaveRequest @@ -52,7 +56,11 @@ public class DishesMenuService : IDishesMenuService new() { CustomCode = customCode, - Date = date, + Period = new DateTimePeriod + { + Start = data[0].StartDate, + End = data[0].EndDate, + }, ShiftTypes = data.GroupBy(x => x.ShiftType).Select(item => { var shiftType = item.Key; @@ -79,7 +87,7 @@ public class DishesMenuService : IDishesMenuService var data = await _dbContext.Queryable() .LeftJoin((x, dishes) => x.DishesCode == dishes.CustomCode) .Where(x => x.BusinessPlaceCode == businessPlaceCode) - .Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day)) + .Where(x => x.StartDate >= date && x.EndDate <= date) .Where((x, dishes) => dishes.Enable) .WhereIF(shiftType.HasValue, x => x.ShiftType == shiftType) .Where((x, dishes) => dishes.CategoryCode == categoryCode) @@ -114,7 +122,7 @@ public class DishesMenuService : IDishesMenuService var entities = request.Items.SelectMany(item => { var customCode = item.CustomCode; - var date = item.Date; + var period = item.Period; return item.ShiftTypes.SelectMany(shiftTypeItem => { @@ -130,7 +138,8 @@ public class DishesMenuService : IDishesMenuService { BusinessPlaceCode = request.BusinessPlaceCode, CustomCode = customCode, - Date = date, + StartDate = period.Start.Value, + EndDate = period.End.Value, ShiftType = shiftType, DishesCode = dishesCode, Number = number, @@ -143,31 +152,44 @@ public class DishesMenuService : IDishesMenuService }); }).ToList(); - var keys = entities.DistinctBy(x => new { x.Date, x.ShiftType }).Select(x => new { x.Date, x.ShiftType }).ToList(); + var keys = entities.DistinctBy(x => new { x.StartDate, x.EndDate, x.ShiftType }).Select(x => new { x.StartDate, x.EndDate, x.ShiftType }).ToList(); var where = LinqExpressionExtension.False(); keys.ForEach(x => { - where = where.Or(item => item.BusinessPlaceCode == request.BusinessPlaceCode - && SqlFunc.DateIsSame(item.Date, x.Date, DateType.Day) + where = where.Or(item => item.BusinessPlaceCode == request.BusinessPlaceCode + && SqlFunc.DateIsSame(item.StartDate, x.StartDate, DateType.Day) + && SqlFunc.DateIsSame(item.EndDate, x.EndDate, DateType.Day) && item.ShiftType == x.ShiftType); }); await _dbContext.Client.Deleteable().Where(where).ExecuteCommandAsync(); await _dbContext.InsertAsync(entities); + + if (request.Items.Any()) + { + Expression> whereCheck = LinqExpressionExtension.False(); + request.Items.ForEach(p => + { + whereCheck = where.Or(x => !(x.EndDate < p.Period.Start || x.StartDate > p.Period.End)); + }); + + var duplicate = await _dbContext.Queryable().Where(whereCheck).AnyAsync(); + duplicate.ThrowIfTrue("菜单时效冲突"); + } } public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode) { var detail = await _dbContext.Queryable() .LeftJoin((x, d) => x.DishesCode == d.CustomCode) - .Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day)) + .Where(x => x.StartDate >= date && x.EndDate <= date) .Where(x => x.BusinessPlaceCode == businessPlaceCode) .Where(x => x.ShiftType == shiftType) .Where(x => x.DishesCode == dishesCode) .Where((x, d) => d.Enable) .Select((x, d) => new DishesMenuDetailDto { - Date = x.Date, + Date = date, MenuId = x.Id, DishesId = d.Id, DishesCode = d.CustomCode, @@ -185,11 +207,11 @@ public class DishesMenuService : IDishesMenuService private static void CheckDuplicateData(DishesMenuSaveRequest request) { - (request.Items.DistinctBy(x => new { x.CustomCode, x.Date }).Count() != request.Items.Count).ThrowIfTrue("菜单不可重复"); + (request.Items.DistinctBy(x => new { x.CustomCode, x.Period.Start, x.Period.End }).Count() != request.Items.Count).ThrowIfTrue("菜单不可重复"); foreach (var item in request.Items) { - var u = item.Date.ToString("yyyy-MM-dd") + ". " + item.CustomCode; + var u = item.Period.Start.Value.ToString("yyyy-MM-dd") + "." + item.Period.End.Value.ToString("yyyy-MM-dd") + "." + item.CustomCode; (item.ShiftTypes.DistinctBy(x => x.ShiftType).Count() != item.ShiftTypes.Count).ThrowIfTrue($"{u}的餐次不可重复添加"); diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index c8187ecc..18623126 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -14,7 +14,6 @@ using Dlhis.Basic.Api; using Kurisu.SqlSugar.Extensions; using SqlSugar; using Mapster; -using MySqlX.XDevAPI.Relational; namespace Dlhis.Canteen.Order.Services.Implements; @@ -134,7 +133,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService .SetColumns(x => x.Number == menuDetail.Number) .SetColumns(x => x.Version == x.Version + 1) .SetColumns(x => x.ModifiedTime == now) - .Where(x => x.Date == menuDetail.Date + .Where(x => x.StartDate >= menuDetail.Date && x.EndDate <= menuDetail.Date && x.ShiftType == request.ShiftType && x.BusinessPlaceCode == request.BusinessPlaceCode && x.DishesCode == request.DishesCode diff --git a/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs index 52dffbc0..237f2b01 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/DishesMenuEntity.cs @@ -31,11 +31,16 @@ public class DishesMenuEntity : SugarBaseEntity, ITenantId, IVersion public Guid BusinessPlaceCode { get; set; } /// - /// 营业日期 + /// 营业日期-开始 /// - [SugarColumn(ColumnDataType = "date", ColumnDescription = "营业日期")] - public DateTime Date { get; set; } + [SugarColumn(ColumnDescription = "营业日期开始")] + public DateTime StartDate { get; set; } + /// + /// 营业日期-结束 + /// + [SugarColumn(ColumnDescription = "营业日期结束")] + public DateTime EndDate { get; set; } /// /// 餐次 From 45aa52aa2a2d001db18827660810f650fd0be9c7 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 20:34:22 +0800 Subject: [PATCH 40/50] =?UTF-8?q?fix=20=E9=80=BB=E8=BE=91=E5=8F=96?= =?UTF-8?q?=E5=8F=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs index 7be1b655..e4518ecb 100644 --- a/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/DishesMenuNameDateSaveRequest.cs @@ -24,7 +24,7 @@ public class DishesMenuNameDateSaveRequest : IValidatableObject public IEnumerable Validate(ValidationContext validationContext) { - if (Period.Start < Period.End) + if (Period.Start > Period.End) { yield return new ValidationResult("时间范围有误", new[] { nameof(Period) }); } From 8915f9ff0fa2def88b74dc8d846b868d55d6eb19 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 20:42:08 +0800 Subject: [PATCH 41/50] =?UTF-8?q?fix=20=E5=88=A4=E6=96=AD=E6=8F=90?= =?UTF-8?q?=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/Implements/DishesMenuService.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index d007c4d2..9c4dd628 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -119,6 +119,18 @@ public class DishesMenuService : IDishesMenuService myBps.Contains(request.BusinessPlaceCode).ThrowIfFalse("非经营营业点,无法保存菜单"); + if (request.Items.Any()) + { + Expression> whereCheck = LinqExpressionExtension.False(); + request.Items.ForEach(p => + { + whereCheck = whereCheck.Or(x => !(x.EndDate < p.Period.Start || x.StartDate > p.Period.End)); + }); + + var duplicate = await _dbContext.Queryable().Where(whereCheck).AnyAsync(); + duplicate.ThrowIfTrue("菜单时效冲突"); + } + var entities = request.Items.SelectMany(item => { var customCode = item.CustomCode; @@ -164,18 +176,6 @@ public class DishesMenuService : IDishesMenuService await _dbContext.Client.Deleteable().Where(where).ExecuteCommandAsync(); await _dbContext.InsertAsync(entities); - - if (request.Items.Any()) - { - Expression> whereCheck = LinqExpressionExtension.False(); - request.Items.ForEach(p => - { - whereCheck = where.Or(x => !(x.EndDate < p.Period.Start || x.StartDate > p.Period.End)); - }); - - var duplicate = await _dbContext.Queryable().Where(whereCheck).AnyAsync(); - duplicate.ThrowIfTrue("菜单时效冲突"); - } } public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode) From d25909a2359ab3beb5831d09c2144218444227d9 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 20:51:20 +0800 Subject: [PATCH 42/50] =?UTF-8?q?fix=20=E8=8F=9C=E5=8D=95=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dishes/Controller/DishesMenusController.cs | 7 ++++--- .../Dishes/Services/IDishesMenuService.cs | 2 +- .../Services/Implements/DishesMenuService.cs | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index 555e8517..7014f9bd 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -43,12 +43,13 @@ public class DishesMenusController : ControllerBase /// /// /// - /// + /// + /// /// [HttpGet("detail")] - public async Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date) + public async Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime startDate, DateTime endDate) { - return await _dishesMenuService.GetDishesMenuDetailAsync(businessPlaceCode, customCode, date); + return await _dishesMenuService.GetDishesMenuDetailAsync(businessPlaceCode, customCode, startDate, endDate); } /// diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs index b3256deb..718b1efc 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs @@ -10,7 +10,7 @@ public interface IDishesMenuService : IScopeDependency { Task> GetDishesMenuPageAsync(DisheMenuPageRequest request); - Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date); + Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime startDate, DateTime endDate); Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 9c4dd628..775a1570 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -40,14 +40,24 @@ public class DishesMenuService : IDishesMenuService .ToPageListAsync(request); } - public async Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date) + public async Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime startDate, DateTime endDate) { var data = await _dbContext.Queryable() .Where(x => x.BusinessPlaceCode == businessPlaceCode) .Where(x => x.CustomCode == customCode) - .Where(x => x.StartDate >= date && x.EndDate <= date) + .Where(x => x.StartDate == startDate) + .Where(x => x.EndDate == endDate) .ToListAsync(); + if (data.IsEmpty()) + { + return new DishesMenuSaveRequest + { + BusinessPlaceCode = businessPlaceCode, + Items = new List { } + }; + } + return new DishesMenuSaveRequest { BusinessPlaceCode = businessPlaceCode, From ed5196d1a14d96b0d811a19f83e8a14e352d0134 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 21:02:52 +0800 Subject: [PATCH 43/50] =?UTF-8?q?feat=20=E7=94=A8=E6=88=B7=E5=88=9B?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Identity/Controllers/UsersController.cs | 12 +++++++++ .../Identity/Request/UserCreateRequest.cs | 25 +++++++++++++++++++ .../Identity/Services/IUserService.cs | 4 ++- .../Services/Implements/UserService.cs | 22 ++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Src/Dlhis.Sys/Identity/Request/UserCreateRequest.cs diff --git a/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs b/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs index 2a87166e..c3f4ffa5 100644 --- a/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs +++ b/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs @@ -63,6 +63,18 @@ public class UsersController : ControllerBase return await _userService.GetUserByIdsAsync(ids); } + /// + /// + /// + /// + /// + [Authorize(Roles = "admin")] + [HttpPost("create")] + public async Task CreateUserAsync(UserCreateRequest request) + { + await _userService.CreateUserAsync(request); + } + /// /// 上传头像 /// diff --git a/Src/Dlhis.Sys/Identity/Request/UserCreateRequest.cs b/Src/Dlhis.Sys/Identity/Request/UserCreateRequest.cs new file mode 100644 index 00000000..b080a1ad --- /dev/null +++ b/Src/Dlhis.Sys/Identity/Request/UserCreateRequest.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Sys.Identity.Request; + +public class UserCreateRequest +{ + /// + /// 用户名 + /// + [Required] + public string Username { get; set; } + + /// + /// 密码 + /// + [MinLength(6)] + [Required] + public string Password { get; set; } + + /// + /// 厂区 + /// + [Required] + public string Tenant { get; set; } +} diff --git a/Src/Dlhis.Sys/Identity/Services/IUserService.cs b/Src/Dlhis.Sys/Identity/Services/IUserService.cs index 619f6e78..02622619 100644 --- a/Src/Dlhis.Sys/Identity/Services/IUserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/IUserService.cs @@ -18,4 +18,6 @@ public interface IUserService : IScopeDependency Task> GetUserByIdsAsync(List ids); -} + + Task CreateUserAsync(UserCreateRequest request); +} \ No newline at end of file diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs index 1f61bff3..2868ad2a 100644 --- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs @@ -5,6 +5,7 @@ using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; +using Microsoft.AspNetCore.Identity; namespace Dlhis.Sys.Identity.Services.Implements; @@ -67,4 +68,25 @@ public class UserService : IUserService var users = await _dbContext.Queryable().Where(x => ids.Contains(x.Id)).Select().ToListAsync(); return users; } + + public async Task CreateUserAsync(UserCreateRequest request) + { + var hasher = new PasswordHasher(); + + var user = new UserEntity + { + UserName = request.Username, + NormalizedUserName = request.Username.ToUpper(), + }; + request.Password = hasher.HashPassword(user, request.Password); + user.PasswordHash = request.Password; + + var id = await _dbContext.InsertReturnIdentityAsync(user); + + await _dbContext.InsertAsync(new UserTenantEntity + { + TenantCode = request.Tenant, + UserId = (int)id + }); + } } From 7407955bc5d01641dda7c2c76ebb6409f8b8b83f Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 21:14:06 +0800 Subject: [PATCH 44/50] =?UTF-8?q?fix=20=E5=88=86=E7=B1=BB=E6=A0=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=90=A5=E4=B8=9A=E7=82=B9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DishesCategoriesController.cs | 7 +++--- .../Dishes/Services/IDishesCategoryService.cs | 2 +- .../Implements/DishesCategoryService.cs | 3 ++- .../Services/Implements/DishesService.cs | 22 ++++++++++++++++--- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs index 12e48ba9..fd642e4c 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesCategoriesController.cs @@ -25,16 +25,17 @@ public class DishesCategoriesController : ControllerBase /// /// 获取分类树 /// + /// /// [HttpGet("tree")] - public async Task> TreeAsync() + public async Task> TreeAsync(Guid businessPlaceCode) { - return await _dishesCategoryService.TreeAsync(); + return await _dishesCategoryService.TreeAsync(businessPlaceCode); } /// - /// + /// 获取分类树(无权限) /// /// /// diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs index 637c93ed..09d738d8 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesCategoryService.cs @@ -5,7 +5,7 @@ namespace Dlhis.Basic.Dishes.Services; public interface IDishesCategoryService : IScopeDependency { - Task> TreeAsync(); + Task> TreeAsync(Guid businessPlaceCode); Task> TreeAllAsync(Guid businessPlaceCode); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs index 528c33d6..9a36e161 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesCategoryService.cs @@ -20,9 +20,10 @@ public class DishesCategoryService : IDishesCategoryService _businessPlacePermissionsService = businessPlacePermissionsService; } - public async Task> TreeAsync() + public async Task> TreeAsync(Guid businessPlaceCode) { var mybCodes = await GetMyBusinessPlaceCodesAsync(); + mybCodes = mybCodes.Where(x => x == businessPlaceCode).ToList(); var categories = await _dbContext.Queryable() .LeftJoin((x, bplace) => x.BusinessPlaceCode == bplace.Code) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs index d3fbf30c..7810608e 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Dishes.Request; +using Dlhis.Basic.BusinessPlace.Services; +using Dlhis.Basic.Dishes.Request; using Dlhis.Basic.Dishes.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Entities; @@ -16,21 +17,24 @@ public class DishesService : IDishesService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; + private readonly IBusinessPlacePermissionsService _businessPlacePermissionsService; - public DishesService(IDbContext dbContext, ICurrentUser currentUser) + public DishesService(IDbContext dbContext, ICurrentUser currentUser, IBusinessPlacePermissionsService businessPlacePermissionsService) { _dbContext = dbContext; _currentUser = currentUser; + _businessPlacePermissionsService = businessPlacePermissionsService; } public async Task> GetDishesPageAsync(DishesPageRequest request) { - //todo 营业点权限 + var myCodes = await GetMyBusinessPlaceCodesAsync(); return await _dbContext.Queryable() .LeftJoin((x, category) => x.CategoryCode == category.Code) .WhereIF(request.Search.IsPresent(), x => x.CustomCode == request.Search || x.Name.Contains(request.Search)) .WhereIF(request.BusinessPlaceCodes.IsPresent(), x => request.BusinessPlaceCodes.Contains(x.BusinessPlaceCode)) + .Where(x => myCodes.Contains(x.BusinessPlaceCode)) .OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc) .Select((x, category) => new DishesResponse { @@ -109,5 +113,17 @@ public class DishesService : IDishesService .Select() .SingleAsync(); } + + + + + /// + /// 获取我的营业点 + /// + /// + private async Task> GetMyBusinessPlaceCodesAsync() + { + return (await _businessPlacePermissionsService.GetMyAsync()).Select(x => x.Code).ToList(); + } } From 35660b1d0c95aa09516d6949d516756f325fb368 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 21:29:36 +0800 Subject: [PATCH 45/50] =?UTF-8?q?fix=20=E6=95=B0=E6=8D=AE=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E7=BD=97=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 775a1570..93e7fe13 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -97,7 +97,7 @@ public class DishesMenuService : IDishesMenuService var data = await _dbContext.Queryable() .LeftJoin((x, dishes) => x.DishesCode == dishes.CustomCode) .Where(x => x.BusinessPlaceCode == businessPlaceCode) - .Where(x => x.StartDate >= date && x.EndDate <= date) + .Where(x => x.StartDate <= date && date <= x.EndDate) .Where((x, dishes) => dishes.Enable) .WhereIF(shiftType.HasValue, x => x.ShiftType == shiftType) .Where((x, dishes) => dishes.CategoryCode == categoryCode) From 83f8906f1227c9a35497252b0dd56aece25dc0b3 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 21:32:55 +0800 Subject: [PATCH 46/50] =?UTF-8?q?fix=20=E6=97=B6=E9=97=B4=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 93e7fe13..14ff5703 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -192,7 +192,7 @@ public class DishesMenuService : IDishesMenuService { var detail = await _dbContext.Queryable() .LeftJoin((x, d) => x.DishesCode == d.CustomCode) - .Where(x => x.StartDate >= date && x.EndDate <= date) + .Where(x => x.StartDate <= date && date <= x.EndDate) .Where(x => x.BusinessPlaceCode == businessPlaceCode) .Where(x => x.ShiftType == shiftType) .Where(x => x.DishesCode == dishesCode) From a3cfc472c84cbae0f64818b69f3f2aa1fec16aa8 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 21:40:04 +0800 Subject: [PATCH 47/50] =?UTF-8?q?fix=20=E6=97=B6=E9=97=B4=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Services/Implements/BookingOrderService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 18623126..f177f75f 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -133,7 +133,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService .SetColumns(x => x.Number == menuDetail.Number) .SetColumns(x => x.Version == x.Version + 1) .SetColumns(x => x.ModifiedTime == now) - .Where(x => x.StartDate >= menuDetail.Date && x.EndDate <= menuDetail.Date + .Where(x => x.StartDate <= menuDetail.Date && menuDetail.Date <= x.EndDate && x.ShiftType == request.ShiftType && x.BusinessPlaceCode == request.BusinessPlaceCode && x.DishesCode == request.DishesCode From afdd9e6f142b60a8b2fab0887c57c9ea69cf46f8 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 21 Mar 2024 21:48:05 +0800 Subject: [PATCH 48/50] =?UTF-8?q?fix=20=E4=BB=B7=E6=A0=BC=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=8E=B7=E5=8F=96=E8=8F=9C=E5=8D=95=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs | 4 ++-- .../Dishes/Services/Implements/DishesMenuService.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs index fe90d831..4605c66d 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesDetailResponse.cs @@ -35,7 +35,7 @@ public class DishesDetailResponse /// /// 单价 /// - public decimal Price { get; set; } + public decimal? Price { get; set; } /// /// 剩余数量 @@ -53,7 +53,7 @@ public class DishesDetailResponse { return CurrentUnits.ToObject>(); } - return new () { "个" }; + return new() { "个" }; } } diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 14ff5703..ac48ebe3 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -108,7 +108,7 @@ public class DishesMenuService : IDishesMenuService CustomCode = dishes.CustomCode, Description = dishes.Description, ImageUrl = dishes.ImageUrl, - Price = dishes.Price, + Price = SqlFunc.IIF(x.Price > 0, x.Price, dishes.Price), Name = dishes.Name, Number = x.Number, CurrentUnits = dishes.Units.ToString() From 9684cd17b17f44e4ce11ca13a7525f99581aff5e Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 22 Mar 2024 18:22:12 +0800 Subject: [PATCH 49/50] =?UTF-8?q?fix=20=E9=A4=90=E8=A1=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DishesMenusBookingSettingResponse.cs | 5 + .../Services/Implements/BalanceService.cs | 8 - .../CommonJobs/DelApiLogTaskJob.cs | 28 +--- .../CommonJobs/MealSupplementHandlerJob.cs | 143 ++++++++++++++++++ Src/Dlhis.ScheduledTask/Packs/JobPack.cs | 7 + .../SyncSapInfo/Services/IJinkoJIPService.cs | 11 +- .../Services/Implements/JinkoJIPService.cs | 32 +++- .../SyncMealSupplementRecordRequest.cs | 17 +++ 8 files changed, 209 insertions(+), 42 deletions(-) create mode 100644 Src/Dlhis.ScheduledTask/CommonJobs/MealSupplementHandlerJob.cs create mode 100644 Src/Dlhis.ScheduledTask/SyncSapInfo/SyncMealSupplementRecordRequest.cs diff --git a/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs b/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs index f9b3a87c..5d66eedb 100644 --- a/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs +++ b/Src/Dlhis.Basic/Dishes/Response/DishesMenusBookingSettingResponse.cs @@ -12,6 +12,11 @@ public class DishesMenusBookingSettingResponse /// public DateTime Deadline { get; set; } + /// + /// 允许发起订餐 + /// + public bool AbleBooking => Deadline > ServerTime; + /// /// 支付方式 /// diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index ab663500..b669579f 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -752,14 +752,6 @@ public class BalanceService : IBalanceService .Select() .ToPageListAsync(request); - page.Data.Add(new BalanceRecordByUserResponse - { - Amount = 20, - CostDateTime = DateTime.Now.Date, - Remark = "2024-03-21 餐补", - No = "129876578" - }); - return page; } diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs index 4fcde1c1..0c28fe79 100644 --- a/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs +++ b/Src/Dlhis.ScheduledTask/CommonJobs/DelApiLogTaskJob.cs @@ -1,10 +1,9 @@ using Dlhis.Entity.Common; using Kurisu.SqlSugar.Services; -using SqlSugar; namespace Dlhis.ScheduledTask.CommonJobs; - public class DelApiLogTaskJob +public class DelApiLogTaskJob { private readonly IDbContext _dbContext; private readonly Logger _logger; @@ -19,33 +18,14 @@ namespace Dlhis.ScheduledTask.CommonJobs; { try { - DateTime now = DateTime.Now; - DateTime todayStart = now.Date; - DateTime threeDaysAgoStart = todayStart.AddDays(-7); - - var logs = await _dbContext.ChangeDb("log") - .Queryable() - .Where(x => x._ts >= threeDaysAgoStart && x._ts <= now) - .Select(x => x.Id) - .ToListAsync(); - - var lst = new List(); - foreach (var id in logs) - { - var entity = new ApiLogEntity - { - Id = id, - }; - lst.Add(entity); - } - await _dbContext.ChangeDb("log").DeleteReallyAsync(lst); + DateTime before = DateTime.Now.Date.AddDays(-7); + await _dbContext.ChangeDb("log").Client.Deleteable().Where(x => x._ts <= before).ExecuteCommandAsync(); } catch (Exception ex) { _logger.LogError(ex, "删除日志异常:{message}", ex.Message); } - } } - + diff --git a/Src/Dlhis.ScheduledTask/CommonJobs/MealSupplementHandlerJob.cs b/Src/Dlhis.ScheduledTask/CommonJobs/MealSupplementHandlerJob.cs new file mode 100644 index 00000000..6694948f --- /dev/null +++ b/Src/Dlhis.ScheduledTask/CommonJobs/MealSupplementHandlerJob.cs @@ -0,0 +1,143 @@ +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Basic.Enums; +using Dlhis.Entity.Canteen.Entities; +using Dlhis.ScheduledTask.SyncSapInfo; +using Dlhis.ScheduledTask.SyncSapInfo.Services; +using Kurisu.AspNetCore.UnifyResultAndValidation; +using Kurisu.Core.DataAccess.Entity; +using Kurisu.SqlSugar.Services; +using SqlSugar; + +namespace Dlhis.ScheduledTask.CommonJobs; + +public class MealSupplementHandlerJob +{ + private readonly IDbContext _dbContext; + private readonly ILogger _logger; + private readonly IJinkoJIPService _jinkoJIPService; + + public MealSupplementHandlerJob(IDbContext dbContext, ILogger logger, IJinkoJIPService jinkoJIPService) + { + _dbContext = dbContext; + _logger = logger; + _jinkoJIPService = jinkoJIPService; + } + + public async Task RunAsync() + { + _dbContext.Client.QueryFilter.ClearAndBackup(); + try + { + //查询待处理餐补 + var mealSupplements = await _dbContext.Queryable() + .Where(x => (x.Status == MealSupplementStatusEnumtype.Wait || x.Status == MealSupplementStatusEnumtype.Error) && !x.Sync) + .ToListAsync(); + + foreach (var item in mealSupplements) + { + GainfoMealEntity mealUser = null; + var gainfo = await _dbContext.Queryable().Where(x => x.Code == item.Code).SingleAsync(); + //档案不存在 + if (gainfo == null) + { + continue; + } + else + { + mealUser = await _dbContext.Queryable().Where(x => x.UserNo == gainfo.No).SingleAsync(); + if (mealUser == null) + { + mealUser = new GainfoMealEntity + { + Balance = 0, + BalanceOfRecharge = 0, + BalanceOfSubsidies = 0, + UserNo = gainfo.No, + UserCode = gainfo.Code, + Version = 0, + TenantId = gainfo.Factory, + }; + + await _dbContext.InsertAsync(mealUser); + } + } + + await SetMealSupplementAsync(mealUser, item); + } + } + finally + { + _dbContext.Client.QueryFilter.Restore(); + } + } + + private async Task SetMealSupplementAsync(GainfoMealEntity mealUser, MealSupplementRecordEntity mealSupplement) + { + await _dbContext.Client.Ado.BeginTranAsync(); + try + { + await ContinueUpdateAsync(async () => + { + mealUser = await _dbContext.Queryable().Where(x => x.UserCode == mealUser.UserCode).FirstAsync(); + var b = mealUser.Balance += mealSupplement.Amount; + + var effect = await _dbContext.Updateable() + .SetColumns(x => x.Balance == b) + .SetColumns(x => x.ModifiedTime == DateTime.Now) + .Where(x => x.Id == mealUser.Id && x.Version == mealUser.Version) + .ExecuteCommandAsync(); + + if (effect <= 0) + { + throw new VersionExceptions("餐补写入错误"); + } + + }, 5); + + mealSupplement.Status = MealSupplementStatusEnumtype.Sucess; + mealSupplement.Sync = true; + await _dbContext.UpdateAsync(mealSupplement); + + //FAIL SUCCESS + await _jinkoJIPService.SyncMealSupplementRecordsAsync(new List + { + new() + { + UniqueId = mealSupplement.UniqueId, + Status = "SUCCESS", + Msg = "操作成功" + } + }); + } + catch (Exception ex) + { + mealSupplement.Status = MealSupplementStatusEnumtype.Error; + mealSupplement.Result = ex.Message; + await _dbContext.UpdateAsync(mealSupplement); + + await _dbContext.Client.Ado.RollbackTranAsync(); + } + } + + private async Task ContinueUpdateAsync(Func func, int retry, string errorMessage = null) + { + for (int i = 0; i < retry; i++) + { + try + { + await func(); + return; + } + catch (Exception ex) when (ex is VersionExceptions) + { + _logger.LogWarning(ex, ex.Message); + } + catch (Exception) + { + throw; + } + } + + throw new UserFriendlyException(errorMessage ?? "操作失败,请重试"); + } +} diff --git a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs index 57729a3d..ca89b3d2 100644 --- a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs +++ b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs @@ -64,10 +64,17 @@ public class JobPack : BaseAppPack { TimeZone = TimeZoneInfo.Local }); + //删除前三天前的日志 RecurringJob.AddOrUpdate("DelApiLogTask", s => s.RunAsync(), "0 0 */7 * *", new RecurringJobOptions { TimeZone = TimeZoneInfo.Local }); + + //处理餐补 + RecurringJob.AddOrUpdate("MealSupplementHandler", s => s.RunAsync(), "0/60 * * * * ?", new RecurringJobOptions + { + TimeZone = TimeZoneInfo.Local + }); } } diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/IJinkoJIPService.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/IJinkoJIPService.cs index 847e2635..7991ea97 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/IJinkoJIPService.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/IJinkoJIPService.cs @@ -1,9 +1,10 @@ using Dlhis.ScheduledTask.SyncSapInfo.Response; -namespace Dlhis.ScheduledTask.SyncSapInfo.Services +namespace Dlhis.ScheduledTask.SyncSapInfo.Services; + +public interface IJinkoJIPService : ISingletonDependency { - public interface IJinkoJIPService : ISingletonDependency - { - Task UploadAttendancesAsync(List requests); - } + Task UploadAttendancesAsync(List requests); + + Task SyncMealSupplementRecordsAsync(List requests); } diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoJIPService.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoJIPService.cs index 28bd30cc..e7db78bc 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoJIPService.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoJIPService.cs @@ -5,6 +5,7 @@ using System.Text; using Dlhis.ScheduledTask.SyncSapInfo.Response; using Kurisu.AspNetCore.Utils.Extensions; using Microsoft.IdentityModel.Tokens; +using Newtonsoft.Json.Linq; namespace Dlhis.ScheduledTask.SyncSapInfo.Services.Implements; @@ -35,6 +36,8 @@ public class JinkoJIPService : IJinkoJIPService public async Task UploadAttendancesAsync(List requests) { + var requestUrl = "/JIP/HCM/HCM_SWIPE_DATA_SAVE"; + var body = new { T_DATA = requests, @@ -45,7 +48,7 @@ public class JinkoJIPService : IJinkoJIPService //_logger.LogInformation("上传考勤记录请求:{json}", json); var content = new StringContent(json, Encoding.UTF8, "application/json"); - var response = await GetHttpClient().PostAsync("/JIP/HCM/HCM_SWIPE_DATA_SAVE", content); + var response = await GetHttpClient().PostAsync(requestUrl, content); var responseJson = await response.Content.ReadAsStringAsync(); _logger.LogInformation("上传考勤记录响应:{json}", responseJson); @@ -55,7 +58,26 @@ public class JinkoJIPService : IJinkoJIPService } - //************************************************************************************************************************************************/ + public async Task SyncMealSupplementRecordsAsync(List requests) + { + var requestUrl = "/JIP/DHR/DHR_DL_CALLBACK"; + + var json = requests.ToJson(); + + var content = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await GetHttpClient().PostAsync(requestUrl, content); + var responseJson = await response.Content.ReadAsStringAsync(); + + var jobj = JObject.Parse(responseJson); + + jobj.ContainsKey("exp").ThrowIfTrue(jobj.GetValue("exp").Value()); + jobj.ContainsKey("message").ThrowIfTrue(jobj.GetValue("message").Value()); + + (jobj.GetValue("code").Value() != 200).ThrowIfTrue(jobj.GetValue("message").Value()); + } + + + //********************************************************************* help methods ***************************************************************************/ private static string IssueJwt(string jwtKey, string jwtSecret, int mins) @@ -65,9 +87,9 @@ public class JinkoJIPService : IJinkoJIPService var claims = new List { - new Claim(JwtRegisteredClaimNames.Nbf,$"{new DateTimeOffset(now).ToUnixTimeSeconds()}"), - new Claim(JwtRegisteredClaimNames.Exp,$"{new DateTimeOffset(expires).ToUnixTimeSeconds()}"), - new Claim(JwtRegisteredClaimNames.Iss,jwtKey), + new (JwtRegisteredClaimNames.Nbf,$"{new DateTimeOffset(now).ToUnixTimeSeconds()}"), + new (JwtRegisteredClaimNames.Exp,$"{new DateTimeOffset(expires).ToUnixTimeSeconds()}"), + new (JwtRegisteredClaimNames.Iss,jwtKey), }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSecret)); diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/SyncMealSupplementRecordRequest.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/SyncMealSupplementRecordRequest.cs new file mode 100644 index 00000000..68fa53df --- /dev/null +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/SyncMealSupplementRecordRequest.cs @@ -0,0 +1,17 @@ +namespace Dlhis.ScheduledTask.SyncSapInfo; + +public class SyncMealSupplementRecordRequest +{ + /// + /// 唯一id + /// + public string UniqueId { get; set; } + + /// + /// FAIL SUCCESS + /// + public string Status { get; set; } + + + public string Msg { get; set; } +} From 35fc5060585b51f3c87bd5bf4afb38787ec8ad8c Mon Sep 17 00:00:00 2001 From: liguoyang Date: Sat, 23 Mar 2024 00:20:03 +0800 Subject: [PATCH 50/50] =?UTF-8?q?fix=20all=E6=8E=A5=E5=8F=A3=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Places/Services/Implements/BusinessPlaceService.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs index 23508ed8..901fd89c 100644 --- a/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs +++ b/Src/Dlhis.Basic/Places/Services/Implements/BusinessPlaceService.cs @@ -55,15 +55,12 @@ public class BusinessPlaceService : IBusinessPlaceService public async Task> GetOpenedListAsync(Guid? placeCode = null, string tenant = null) { - var myCodes = await GetMyBusinessPlaceCodesAsync(); - var list = await _dbContext.Queryable() .LeftJoin((x, ps) => x.Code == ps.PlaceCode) .LeftJoin((x, ps, s) => s.Code == ps.ShiftCode) .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) .WhereIF(placeCode.HasValue, x => x.Code == placeCode) .WhereIF(tenant.IsPresent(), x => x.TenantId == tenant) - .Where(x => myCodes.Contains(x.Code)) .Select((x, ps, s) => new BusinessPlaceListResponse { Id = x.Id,