Merge branch 'development' of https://git.dlhis.com/liguoyang/jinko.yikatong into development
This commit is contained in:
@@ -7,7 +7,6 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
|
|||||||
using Kurisu.Core.DataAccess.Dto;
|
using Kurisu.Core.DataAccess.Dto;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Org.BouncyCastle.Asn1.Ocsp;
|
|
||||||
|
|
||||||
namespace Dlhis.Basic.Dishes.Controller;
|
namespace Dlhis.Basic.Dishes.Controller;
|
||||||
|
|
||||||
@@ -52,6 +51,20 @@ public class DishesMenusController : ControllerBase
|
|||||||
return await _dishesMenuService.GetDishesMenuDetailAsync(businessPlaceCode, customCode, date);
|
return await _dishesMenuService.GetDishesMenuDetailAsync(businessPlaceCode, customCode, date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据参数获取菜品
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="businessPlaceCode"></param>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
/// <param name="shiftType"></param>
|
||||||
|
/// <param name="categoryCodes"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("dishes-selections")]
|
||||||
|
public async Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, [FromQuery] List<Guid> categoryCodes)
|
||||||
|
{
|
||||||
|
return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCodes);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 菜单保存/更改
|
/// 菜单保存/更改
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ public class DishesMenusBookingSettingResponse
|
|||||||
public DateTime ServerTime { get; set; }
|
public DateTime ServerTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 餐别-餐次信息
|
/// 订餐期限
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<BusinessShiftMealRelationshipResponse> ShiftInfos { get; set; }
|
public DateTime Deadline { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 支付方式
|
/// 支付方式
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ public interface IDishesMenuService : IScopeDependency
|
|||||||
|
|
||||||
Task<DishesMenuSaveRequest> GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date);
|
Task<DishesMenuSaveRequest> GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date);
|
||||||
|
|
||||||
|
Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List<Guid> categoryCodes);
|
||||||
|
|
||||||
Task SaveDishesMenuAsync(DishesMenuSaveRequest request);
|
Task SaveDishesMenuAsync(DishesMenuSaveRequest request);
|
||||||
|
|
||||||
Task<DishesMenuDetailDto> GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode);
|
Task<DishesMenuDetailDto> GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ using Dlhis.Basic.Dishes.Request;
|
|||||||
using Dlhis.Basic.Dishes.Response;
|
using Dlhis.Basic.Dishes.Response;
|
||||||
using Dlhis.Basic.BusinessPlace.Services;
|
using Dlhis.Basic.BusinessPlace.Services;
|
||||||
using Dlhis.Basic.Dishes.Dto;
|
using Dlhis.Basic.Dishes.Dto;
|
||||||
using Org.BouncyCastle.Asn1.Ocsp;
|
using Mapster;
|
||||||
|
|
||||||
namespace Dlhis.Basic.Dishes.Services.Implements;
|
namespace Dlhis.Basic.Dishes.Services.Implements;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ public class DishesMenuService : IDishesMenuService
|
|||||||
BusinessPlaceCode = businessPlaceCode,
|
BusinessPlaceCode = businessPlaceCode,
|
||||||
Items = new List<DishesMenuNameDateSaveRequest>
|
Items = new List<DishesMenuNameDateSaveRequest>
|
||||||
{
|
{
|
||||||
new()
|
new()
|
||||||
{
|
{
|
||||||
CustomCode = customCode,
|
CustomCode = customCode,
|
||||||
Date = date,
|
Date = date,
|
||||||
@@ -74,6 +74,21 @@ public class DishesMenuService : IDishesMenuService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List<Guid> categoryCodes)
|
||||||
|
{
|
||||||
|
var data = await _dbContext.Queryable<DishesMenuEntity>()
|
||||||
|
.LeftJoin<DishesEntity>((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<List<DishesDetailResponse>>();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request)
|
public async Task SaveDishesMenuAsync(DishesMenuSaveRequest request)
|
||||||
{
|
{
|
||||||
//检验数据
|
//检验数据
|
||||||
@@ -163,7 +178,7 @@ public class DishesMenuService : IDishesMenuService
|
|||||||
|
|
||||||
foreach (var item in request.Items)
|
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}的餐次不可重复添加");
|
(item.ShiftTypes.DistinctBy(x => x.ShiftType).Count() != item.ShiftTypes.Count).ThrowIfTrue($"{u}的餐次不可重复添加");
|
||||||
|
|
||||||
|
|||||||
@@ -66,12 +66,13 @@ public class DishesService : IDishesService
|
|||||||
.Select(x => x.Value)
|
.Select(x => x.Value)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
DateTime dateTime;
|
if (!TimeOnly.TryParse(strDatetime, out var deadline))
|
||||||
DateTime.TryParseExact(strDatetime, "HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out dateTime);
|
deadline = new TimeOnly(8, 30);
|
||||||
|
|
||||||
var res = new DishesMenusBookingSettingResponse
|
var res = new DishesMenusBookingSettingResponse
|
||||||
{
|
{
|
||||||
ServerTime = dateTime,
|
ServerTime = DateTime.Now,
|
||||||
|
Deadline = DateTime.Today.Add(deadline.ToTimeSpan())
|
||||||
};
|
};
|
||||||
|
|
||||||
var shift = await _dbContext.Queryable<BusinessPlaceShiftRelationshipEntity>()
|
var shift = await _dbContext.Queryable<BusinessPlaceShiftRelationshipEntity>()
|
||||||
@@ -87,11 +88,7 @@ public class DishesService : IDishesService
|
|||||||
|
|
||||||
if (shift != null)
|
if (shift != null)
|
||||||
{
|
{
|
||||||
var businessShiftMealRelationships = await _dbContext.Queryable<BusinessShiftMealRelationshipEntity>()
|
|
||||||
.Where(x => x.ShiftCode == shift.ShiftCode)
|
|
||||||
.Select<BusinessShiftMealRelationshipResponse>()
|
|
||||||
.ToListAsync();
|
|
||||||
res.ShiftInfos = businessShiftMealRelationships;
|
|
||||||
|
|
||||||
if (shift.TenantId == request.Factory)
|
if (shift.TenantId == request.Factory)
|
||||||
{
|
{
|
||||||
@@ -104,6 +101,7 @@ public class DishesService : IDishesService
|
|||||||
|
|
||||||
}
|
}
|
||||||
res.PayTypes = payTypes;
|
res.PayTypes = payTypes;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="MealUser\Request\" />
|
||||||
<Folder Include="Summary\Request\" />
|
<Folder Include="Summary\Request\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -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 Dlhis.Basic.MealUser.Services;
|
||||||
using Kurisu.Core.DataAccess.Dto;
|
using Kurisu.Core.DataAccess.Dto;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@@ -28,19 +27,8 @@ public class MealUsersController : ControllerBase
|
|||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet("page")]
|
[HttpGet("page")]
|
||||||
public async Task<Pagination<MealUserResponse>> GetPageAsync([FromQuery] MealUserPageRequest request)
|
public async Task<Pagination<MealUserResponse>> GetPageAsync([FromQuery] PageDto request)
|
||||||
{
|
{
|
||||||
return await _mealUserService.GetPageAsync(request);
|
return await _mealUserService.GetPageAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 就餐人员保存
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="request"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public async Task AddAsync(MealUserAddRequest request)
|
|
||||||
{
|
|
||||||
await _mealUserService.AddAsync(request);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using Dlhis.Entity.Canteen.Enums;
|
|
||||||
|
|
||||||
namespace Dlhis.Basic.MealUser.Request;
|
|
||||||
|
|
||||||
public class MealUserAddRequest
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 档案号
|
|
||||||
/// </summary>
|
|
||||||
[Required(ErrorMessage = "档案号不能为空")]
|
|
||||||
public string UserNo { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 用户类型
|
|
||||||
/// </summary>
|
|
||||||
[EnumDataType(typeof(CanteenUserEnumType))]
|
|
||||||
public CanteenUserEnumType UserType { get; set; }
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
using Kurisu.Core.DataAccess.Dto;
|
|
||||||
|
|
||||||
namespace Dlhis.Basic.MealUser.Request;
|
|
||||||
|
|
||||||
public class MealUserPageRequest : PageDto
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
using Dlhis.Entity.Canteen.Enums;
|
namespace Dlhis.Basic.MealUser.Response;
|
||||||
|
|
||||||
namespace Dlhis.Basic.MealUser.Response;
|
|
||||||
|
|
||||||
public class MealUserResponse
|
public class MealUserResponse
|
||||||
{
|
{
|
||||||
@@ -15,13 +13,6 @@ public class MealUserResponse
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string UserCode { get; set; }
|
public string UserCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 消费人员类型
|
|
||||||
/// </summary>
|
|
||||||
public CanteenUserEnumType UserType { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 卡号
|
/// 卡号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
using Dlhis.Basic.MealUser.Request;
|
using Dlhis.Basic.MealUser.Response;
|
||||||
using Dlhis.Basic.MealUser.Response;
|
|
||||||
using Kurisu.Core.DataAccess.Dto;
|
using Kurisu.Core.DataAccess.Dto;
|
||||||
|
|
||||||
namespace Dlhis.Basic.MealUser.Services;
|
namespace Dlhis.Basic.MealUser.Services;
|
||||||
|
|
||||||
public interface IMealUserService : IScopeDependency
|
public interface IMealUserService : IScopeDependency
|
||||||
{
|
{
|
||||||
Task<Pagination<MealUserResponse>> GetPageAsync(MealUserPageRequest request);
|
Task<Pagination<MealUserResponse>> GetPageAsync(PageDto request);
|
||||||
|
|
||||||
Task AddAsync(MealUserAddRequest request);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
using Dlhis.Basic.MealUser.Request;
|
using Dlhis.Basic.MealUser.Response;
|
||||||
using Dlhis.Basic.MealUser.Response;
|
|
||||||
using Dlhis.Basic.Organization.Services;
|
|
||||||
using Dlhis.Entity.Basic.Entity;
|
using Dlhis.Entity.Basic.Entity;
|
||||||
using Dlhis.Entity.Basic.Enums;
|
|
||||||
using Kurisu.AspNetCore.Utils.Extensions;
|
|
||||||
using Kurisu.Core.DataAccess.Dto;
|
using Kurisu.Core.DataAccess.Dto;
|
||||||
using Kurisu.SqlSugar.Extensions;
|
using Kurisu.SqlSugar.Extensions;
|
||||||
using Kurisu.SqlSugar.Services;
|
using Kurisu.SqlSugar.Services;
|
||||||
@@ -13,17 +9,15 @@ namespace Dlhis.Basic.MealUser.Services.Implements;
|
|||||||
public class MealUserService : IMealUserService
|
public class MealUserService : IMealUserService
|
||||||
{
|
{
|
||||||
private readonly IDbContext _dbContext;
|
private readonly IDbContext _dbContext;
|
||||||
private readonly IGainfoStore _gainfoStore;
|
|
||||||
|
|
||||||
public MealUserService(IDbContext dbContext, IGainfoStore gainfoStore)
|
public MealUserService(IDbContext dbContext)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
_gainfoStore = gainfoStore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Pagination<MealUserResponse>> GetPageAsync(MealUserPageRequest request)
|
public async Task<Pagination<MealUserResponse>> GetPageAsync(PageDto request)
|
||||||
{
|
{
|
||||||
var page = await _dbContext.Queryable<CanteenUserEntity>()
|
var page = await _dbContext.Queryable<GainfoMealEntity>()
|
||||||
.LeftJoin<GainfoEntity>((x, ga) => x.UserNo == ga.No)
|
.LeftJoin<GainfoEntity>((x, ga) => x.UserNo == ga.No)
|
||||||
.Select((x, ga) => new MealUserResponse
|
.Select((x, ga) => new MealUserResponse
|
||||||
{
|
{
|
||||||
@@ -32,32 +26,9 @@ public class MealUserService : IMealUserService
|
|||||||
BalanceOfSubsidies = x.BalanceOfSubsidies,
|
BalanceOfSubsidies = x.BalanceOfSubsidies,
|
||||||
UserCode = ga.Code,
|
UserCode = ga.Code,
|
||||||
UserNo = ga.No,
|
UserNo = ga.No,
|
||||||
UserType = x.UserType
|
|
||||||
})
|
})
|
||||||
.ToPageListAsync(request);
|
.ToPageListAsync(request);
|
||||||
|
|
||||||
return page;
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ public class GainfoService : IGainfoService
|
|||||||
|
|
||||||
var info = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
|
var info = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
|
||||||
.LeftJoin<DepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
|
.LeftJoin<DepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
|
||||||
.LeftJoin<CanteenUserEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
|
.LeftJoin<GainfoMealEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
|
||||||
.Where((ga, department) => ga.Id == gainfo.Id)
|
.Where((ga, department) => ga.Id == gainfo.Id)
|
||||||
.Select((ga, department, mealUser) => new GainfoCurrentResponse
|
.Select((ga, department, mealUser) => new GainfoCurrentResponse
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
|
|||||||
using Kurisu.Core.DataAccess.Dto;
|
using Kurisu.Core.DataAccess.Dto;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Org.BouncyCastle.Asn1.Ocsp;
|
||||||
|
|
||||||
namespace Dlhis.Canteen.Dishes.Controllers;
|
namespace Dlhis.Canteen.Dishes.Controllers;
|
||||||
|
|
||||||
@@ -64,13 +65,24 @@ public class OrdersController : ControllerBase
|
|||||||
/// 订餐
|
/// 订餐
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[IgnoreTenant]
|
|
||||||
[HttpPost("booking")]
|
[HttpPost("booking")]
|
||||||
|
[Transactional]
|
||||||
public async Task Booking(BookingMealRequest request)
|
public async Task Booking(BookingMealRequest request)
|
||||||
{
|
{
|
||||||
await _orderService.Booking(request);
|
await _orderService.BookingAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 获取详情
|
||||||
|
///// </summary>
|
||||||
|
///// <param name="no"></param>
|
||||||
|
///// <returns></returns>
|
||||||
|
//[HttpGet("details")]
|
||||||
|
//public async Task<List<OrderDetailResponse>> GetDetailsAsync(string no)
|
||||||
|
//{
|
||||||
|
// return await _orderService.GetDetailsAsync(no);
|
||||||
|
//}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 充值
|
/// 充值
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -80,4 +92,14 @@ public class OrdersController : ControllerBase
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 订单聚合数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("aggregation")]
|
||||||
|
public async Task<Pagination<OrderAggregationResponse>> GetOrdersAggregationAsync([FromQuery] PageDto page)
|
||||||
|
{
|
||||||
|
return await _orderService.GetOrdersAggregationAsync(page);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ using Kurisu.Core.CustomClass;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using Kurisu.Core.DataAccess.Dto;
|
using Kurisu.Core.DataAccess.Dto;
|
||||||
|
|
||||||
namespace Dlhis.Canteen.Dishes.Request
|
namespace Dlhis.Canteen.Order.Request
|
||||||
{
|
{
|
||||||
public class BalanceRecordUserPageRequest : PageDto, IValidatableObject
|
public class BalanceRecordUserPageRequest : PageDto, IValidatableObject
|
||||||
{
|
{
|
||||||
@@ -13,11 +13,17 @@ namespace Dlhis.Canteen.Dishes.Request
|
|||||||
[EnumDataType(typeof(DateTimeSearchEnumType))]
|
[EnumDataType(typeof(DateTimeSearchEnumType))]
|
||||||
public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; }
|
public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消费应用类型
|
||||||
|
/// </summary>
|
||||||
|
public CanteenApplicaitonTypeEnumType? ApplicationType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 日期范围查询
|
/// 日期范围查询
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimePeriod SearchDateTimePeriod { get; set; }
|
public DateTimePeriod SearchDateTimePeriod { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||||
{
|
{
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
@@ -43,8 +49,8 @@ namespace Dlhis.Canteen.Dishes.Request
|
|||||||
}
|
}
|
||||||
else if (SearchDateTimeDimension == DateTimeSearchEnumType.Season)
|
else if (SearchDateTimeDimension == DateTimeSearchEnumType.Season)
|
||||||
{
|
{
|
||||||
SearchDateTimePeriod.Start = now.AddMonths(0 - ((now.Month - 1) % 3));
|
SearchDateTimePeriod.Start = now.AddMonths(0 - (now.Month - 1) % 3);
|
||||||
SearchDateTimePeriod.End = now.AddMonths(3 - ((now.Month - 1) % 3)).AddMonths(1).AddDays(-1);
|
SearchDateTimePeriod.End = now.AddMonths(3 - (now.Month - 1) % 3).AddMonths(1).AddDays(-1);
|
||||||
}
|
}
|
||||||
else if (SearchDateTimeDimension == DateTimeSearchEnumType.HalfOfYear)
|
else if (SearchDateTimeDimension == DateTimeSearchEnumType.HalfOfYear)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 订单号
|
|
||||||
/// </summary>
|
|
||||||
public string ThirdNo { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 营业日
|
|
||||||
/// </summary>
|
|
||||||
public DateOnly BusinessDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 餐次
|
|
||||||
/// </summary>
|
|
||||||
public ShiftEnumType ShiftType { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 菜品编码
|
|
||||||
/// </summary>
|
|
||||||
public Guid DishesCode { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 菜品名称
|
|
||||||
/// </summary>
|
|
||||||
public Guid DishesName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 单价
|
|
||||||
/// </summary>
|
|
||||||
public decimal Price { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 单位
|
|
||||||
/// </summary>
|
|
||||||
public string Unit { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数量
|
|
||||||
/// </summary>
|
|
||||||
public int Num { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 金额
|
|
||||||
/// </summary>
|
|
||||||
public decimal Amount { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 订单明细状态
|
|
||||||
/// </summary>
|
|
||||||
public OrderDetailsStatusEnumType OrderStatus { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -49,4 +49,15 @@ public class BalanceRecordUserResponse
|
|||||||
/// 记录产生日期
|
/// 记录产生日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime CostDateTime { get; set; }
|
public DateTime CostDateTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消费应用类型
|
||||||
|
/// </summary>
|
||||||
|
public CanteenApplicaitonTypeEnumType ApplicationType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 消费应用类型
|
||||||
|
/// </summary>
|
||||||
|
public string ApplicationTypeDesc => ApplicationType.GetDescription();
|
||||||
}
|
}
|
||||||
|
|||||||
34
Src/Dlhis.Canteen/Order/Response/DishesDto.cs
Normal file
34
Src/Dlhis.Canteen/Order/Response/DishesDto.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Dlhis.Canteen.Order.Response;
|
||||||
|
|
||||||
|
public class DishesDto
|
||||||
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
public string No { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 菜品编码
|
||||||
|
/// </summary>
|
||||||
|
public string DishesCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 菜品名称
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 购买单价
|
||||||
|
/// </summary>
|
||||||
|
public decimal Price { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 购买数量
|
||||||
|
/// </summary>
|
||||||
|
public int Number { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 图片
|
||||||
|
/// </summary>
|
||||||
|
public string ImageUrl { get; set; }
|
||||||
|
}
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
using Dlhis.Entity.Canteen.Enums;
|
|
||||||
using Kurisu.AspNetCore.Utils.Extensions;
|
|
||||||
|
|
||||||
namespace Dlhis.Canteen.Order.Response;
|
|
||||||
|
|
||||||
public class GetDetailResponse
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 订单号
|
|
||||||
/// </summary>
|
|
||||||
public string ThirdNo { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 营业日
|
|
||||||
/// </summary>
|
|
||||||
public DateOnly SysDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 餐次
|
|
||||||
/// </summary>
|
|
||||||
public ShiftEnumType ShiftType { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 餐次CN
|
|
||||||
/// </summary>
|
|
||||||
public string ShiftTypeCN => ShiftType.GetDescription();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 菜品编码
|
|
||||||
/// </summary>
|
|
||||||
public Guid DishesCode { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 菜品名称
|
|
||||||
/// </summary>
|
|
||||||
public string DishesName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 单价
|
|
||||||
/// </summary>
|
|
||||||
public decimal Price { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 单位
|
|
||||||
/// </summary>
|
|
||||||
public string Unit { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数量
|
|
||||||
/// </summary>
|
|
||||||
public int Num { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 金额
|
|
||||||
/// </summary>
|
|
||||||
public decimal Amount { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 订单明细状态
|
|
||||||
/// </summary>
|
|
||||||
public OrderDetailsStatusEnumType OrderStatus { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 订单明细状态CN
|
|
||||||
/// </summary>
|
|
||||||
public string OrderStatusCN => OrderStatus.GetDescription();
|
|
||||||
}
|
|
||||||
51
Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs
Normal file
51
Src/Dlhis.Canteen/Order/Response/OrderAggregationResponse.cs
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
using Kurisu.AspNetCore.Utils.Extensions;
|
||||||
|
|
||||||
|
namespace Dlhis.Canteen.Order.Response;
|
||||||
|
|
||||||
|
public class OrderAggregationResponse
|
||||||
|
{
|
||||||
|
public string No { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 营业点
|
||||||
|
/// </summary>
|
||||||
|
public string BusinessPlaceName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 购买菜品
|
||||||
|
/// </summary>
|
||||||
|
public List<DishesDto> Dishes { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 金额
|
||||||
|
/// </summary>
|
||||||
|
public decimal Amount
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (Dishes.IsPresent())
|
||||||
|
{
|
||||||
|
return Dishes.Sum(x => x.Number * x.Price);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 共计数量
|
||||||
|
/// </summary>
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (Dishes.IsPresent())
|
||||||
|
{
|
||||||
|
return Dishes.Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
Src/Dlhis.Canteen/Order/Response/OrderDetailResponse.cs
Normal file
34
Src/Dlhis.Canteen/Order/Response/OrderDetailResponse.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//namespace Dlhis.Canteen.Order.Response;
|
||||||
|
|
||||||
|
//public class OrderDetailResponse
|
||||||
|
//{
|
||||||
|
// /// <summary>
|
||||||
|
// /// 菜品编码
|
||||||
|
// /// </summary>
|
||||||
|
// public string DishesCode { get; set; }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// 菜品名称
|
||||||
|
// /// </summary>
|
||||||
|
// public string Name { get; set; }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// 单价
|
||||||
|
// /// </summary>
|
||||||
|
// public decimal Price { get; set; }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// 数量
|
||||||
|
// /// </summary>
|
||||||
|
// public int Number { get; set; }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// 单位
|
||||||
|
// /// </summary>
|
||||||
|
// public string Unit { get; set; }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// 图片
|
||||||
|
// /// </summary>
|
||||||
|
// public string ImageUrl { get; set; }
|
||||||
|
//}
|
||||||
@@ -9,6 +9,7 @@ public interface IOrderService : IScopeDependency
|
|||||||
{
|
{
|
||||||
Task<Pagination<OrderResponse>> GetPageAsync(OrderPageRequest request);
|
Task<Pagination<OrderResponse>> GetPageAsync(OrderPageRequest request);
|
||||||
|
|
||||||
|
|
||||||
Task<OrderResultResponse> AddAsync(OrderAddRequest request);
|
Task<OrderResultResponse> AddAsync(OrderAddRequest request);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -23,5 +24,15 @@ public interface IOrderService : IScopeDependency
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task Booking(BookingMealRequest request);
|
Task BookingAsync(BookingMealRequest request);
|
||||||
|
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 获取订单详情
|
||||||
|
///// </summary>
|
||||||
|
///// <param name="no"></param>
|
||||||
|
///// <returns></returns>
|
||||||
|
//Task<List<OrderDetailResponse>> GetDetailsAsync(string no);
|
||||||
|
|
||||||
|
Task<Pagination<OrderAggregationResponse>> GetOrdersAggregationAsync(PageDto page);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -521,13 +521,14 @@ public class BalanceService : IBalanceService
|
|||||||
.LeftJoin<GainfoEntity>((record, ga) => record.UserNo == ga.No)
|
.LeftJoin<GainfoEntity>((record, ga) => record.UserNo == ga.No)
|
||||||
.LeftJoin<DepartmentEntity>((record, ga, department) => ga.DepartmentNo == department.No)
|
.LeftJoin<DepartmentEntity>((record, ga, department) => ga.DepartmentNo == department.No)
|
||||||
.LeftJoin<BusinessPlaceEntity>((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code)
|
.LeftJoin<BusinessPlaceEntity>((record, ga, department, bplace) => record.BusinessPlaceCode == bplace.Code)
|
||||||
.LeftJoin<BusinessShiftEntity>((record, ga, department, bplace, bshift) => record.BusinessShiftCode == bshift.Code)
|
.LeftJoin<BusinessPlaceShiftRelationshipEntity>((record, ga, department, bplace, bshiftR) => bplace.Code == bshiftR.PlaceCode)
|
||||||
.LeftJoin<BasicTypeEntity>((record, ga, department, bplace, bshift, type) => record.BusinessShiftCode.ToString() == type.Code)
|
.LeftJoin<BusinessShiftEntity>((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?.Start.HasValue == true, record => record.CostDate >= request.SearchDateTimePeriod.Start)
|
||||||
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, record => record.CostDate <= request.SearchDateTimePeriod.End)
|
.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)
|
.Where((record, ga) => ga.IdentityUserId == userId)
|
||||||
.OrderBy(record => record.CreateTime, OrderByType.Desc)
|
.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,
|
Id = record.Id,
|
||||||
Amount = record.Amount,
|
Amount = record.Amount,
|
||||||
@@ -536,8 +537,9 @@ public class BalanceService : IBalanceService
|
|||||||
Source = record.Source,
|
Source = record.Source,
|
||||||
No = record.No,
|
No = record.No,
|
||||||
BusinessPlaceName = bplace.Name,
|
BusinessPlaceName = bplace.Name,
|
||||||
BusinessShiftName = type.Display,
|
BusinessShiftName = shift.Name,
|
||||||
CostDateTime = record.CostDateTime
|
CostDateTime = record.CostDateTime,
|
||||||
|
ApplicationType = record.ApplicationType,
|
||||||
})
|
})
|
||||||
.ToPageListAsync(request);
|
.ToPageListAsync(request);
|
||||||
|
|
||||||
@@ -558,12 +560,12 @@ public class BalanceService : IBalanceService
|
|||||||
await ContinueUpdateAsync(async () =>
|
await ContinueUpdateAsync(async () =>
|
||||||
{
|
{
|
||||||
//重算金额
|
//重算金额
|
||||||
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == balanceRecord.UserNo).SingleAsync();
|
var canteenUser = await _dbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == balanceRecord.UserNo).SingleAsync();
|
||||||
|
|
||||||
//金额 +
|
//金额 +
|
||||||
canteenUser.Balance += Math.Abs(balanceRecord.Amount);
|
canteenUser.Balance += Math.Abs(balanceRecord.Amount);
|
||||||
|
|
||||||
var effect = await _dbContext.Updateable<CanteenUserEntity>()
|
var effect = await _dbContext.Updateable<GainfoMealEntity>()
|
||||||
.SetColumns(x => x.Balance == canteenUser.Balance)
|
.SetColumns(x => x.Balance == canteenUser.Balance)
|
||||||
.SetColumns(x => x.Version == x.Version + 1)
|
.SetColumns(x => x.Version == x.Version + 1)
|
||||||
.Where(x => x.UserNo == balanceRecord.UserNo && x.Version == canteenUser.Version)
|
.Where(x => x.UserNo == balanceRecord.UserNo && x.Version == canteenUser.Version)
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ using SqlSugar;
|
|||||||
using Dlhis.Canteen.Order.Response;
|
using Dlhis.Canteen.Order.Response;
|
||||||
using Dlhis.Canteen.Dishes;
|
using Dlhis.Canteen.Dishes;
|
||||||
using Dlhis.Canteen.Order.Request;
|
using Dlhis.Canteen.Order.Request;
|
||||||
|
using System.Numerics;
|
||||||
|
using MySqlX.XDevAPI.Relational;
|
||||||
|
|
||||||
namespace Dlhis.Canteen.Order.Services.Implements;
|
namespace Dlhis.Canteen.Order.Services.Implements;
|
||||||
|
|
||||||
@@ -62,12 +64,9 @@ public class OrderService : IOrderService
|
|||||||
uniqueNos.Contains(deviceUniqueNo).ThrowIfFalse("无消费权限");
|
uniqueNos.Contains(deviceUniqueNo).ThrowIfFalse("无消费权限");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Booking(BookingMealRequest request)
|
public async Task BookingAsync(BookingMealRequest request)
|
||||||
{
|
{
|
||||||
await CheckExistsMyBookingsAsync(request.BookingDate);
|
var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType);
|
||||||
|
|
||||||
var jinkoCode = _currentUser.GetUserClaim("jinko-code");
|
|
||||||
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
|
|
||||||
|
|
||||||
var businessPlace = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
|
var businessPlace = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
|
||||||
|
|
||||||
@@ -130,15 +129,29 @@ public class OrderService : IOrderService
|
|||||||
|
|
||||||
(menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄");
|
(menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}已售罄");
|
||||||
|
|
||||||
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
var mealInfo = await _dbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
||||||
//金额+-
|
if (mealInfo == null)
|
||||||
canteenUser.Balance += order.Amount;
|
{
|
||||||
(canteenUser.Balance < 0).ThrowIfTrue("余额不足,无法消费");
|
await _dbContext.InsertAsync(new GainfoMealEntity
|
||||||
|
{
|
||||||
|
Balance = 0,
|
||||||
|
BalanceOfRecharge = 0,
|
||||||
|
BalanceOfSubsidies = 0,
|
||||||
|
UserCode = gainfo.Code,
|
||||||
|
UserNo = gainfo.No,
|
||||||
|
Version = 0,
|
||||||
|
});
|
||||||
|
|
||||||
var effect = await _dbContext.Updateable<CanteenUserEntity>()
|
(mealInfo == null).ThrowIfTrue("余额不足,无法消费");
|
||||||
.SetColumns(x => x.Balance == canteenUser.Balance)
|
}
|
||||||
|
//金额+-
|
||||||
|
mealInfo.Balance += order.Amount;
|
||||||
|
(mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费");
|
||||||
|
|
||||||
|
var effect = await _dbContext.Updateable<GainfoMealEntity>()
|
||||||
|
.SetColumns(x => x.Balance == mealInfo.Balance)
|
||||||
.SetColumns(x => x.Version == x.Version + 1)
|
.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();
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
if (effect <= 0) throw new VersionExceptions("更新版本冲突");
|
if (effect <= 0) throw new VersionExceptions("更新版本冲突");
|
||||||
@@ -147,7 +160,12 @@ public class OrderService : IOrderService
|
|||||||
.SetColumns(x => x.Number == menuDetail.Number)
|
.SetColumns(x => x.Number == menuDetail.Number)
|
||||||
.SetColumns(x => x.Version == x.Version + 1)
|
.SetColumns(x => x.Version == x.Version + 1)
|
||||||
.SetColumns(x => x.ModifiedTime == now)
|
.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();
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
if (effect <= 0) throw new VersionExceptions("更新版本冲突");
|
if (effect <= 0) throw new VersionExceptions("更新版本冲突");
|
||||||
@@ -156,12 +174,11 @@ public class OrderService : IOrderService
|
|||||||
var balanceRecord = order.Adapt<BalanceRecordEntity>();
|
var balanceRecord = order.Adapt<BalanceRecordEntity>();
|
||||||
await _dbContext.InsertAsync(balanceRecord);
|
await _dbContext.InsertAsync(balanceRecord);
|
||||||
|
|
||||||
await _dbContext.InsertAsync(new OrderDetailEntity
|
await _dbContext.InsertAsync(new CanteenOrderDetailEntity
|
||||||
{
|
{
|
||||||
OrderNo = order.No,
|
OrderNo = order.No,
|
||||||
DishesCode = request.DishesCode,
|
DishesCode = request.DishesCode,
|
||||||
Price = menuDetail.Price,
|
Price = menuDetail.Price,
|
||||||
Status = OrderDetailsStatusEnumType.I,
|
|
||||||
//Unit
|
//Unit
|
||||||
Number = 1,
|
Number = 1,
|
||||||
});
|
});
|
||||||
@@ -170,6 +187,24 @@ public class OrderService : IOrderService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//public async Task<List<OrderDetailResponse>> GetDetailsAsync(string no)
|
||||||
|
//{
|
||||||
|
// return await _dbContext.Queryable<CanteenOrderDetailEntity>()
|
||||||
|
// .LeftJoin<DishesEntity>((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<OrderResultResponse> DeviceConsume(OrderAddRequest request)
|
public async Task<OrderResultResponse> DeviceConsume(OrderAddRequest request)
|
||||||
{
|
{
|
||||||
return await AddAsync(request);
|
return await AddAsync(request);
|
||||||
@@ -189,19 +224,18 @@ public class OrderService : IOrderService
|
|||||||
//消费权限控制
|
//消费权限控制
|
||||||
await CheckPAsync(gainfo.No, request.DeviceUniqueNo);
|
await CheckPAsync(gainfo.No, request.DeviceUniqueNo);
|
||||||
|
|
||||||
var canteenUserExists = await _dbContext.Queryable<CanteenUserEntity>()
|
var canteenUserExists = await _dbContext.Queryable<GainfoMealEntity>()
|
||||||
.Where(x => x.UserNo == gainfo.No)
|
.Where(x => x.UserNo == gainfo.No)
|
||||||
.AnyAsync();
|
.AnyAsync();
|
||||||
|
|
||||||
if (!canteenUserExists)
|
if (!canteenUserExists)
|
||||||
{
|
{
|
||||||
await _dbContext.InsertAsync(new CanteenUserEntity
|
await _dbContext.InsertAsync(new GainfoMealEntity
|
||||||
{
|
{
|
||||||
UserNo = gainfo.No,
|
UserNo = gainfo.No,
|
||||||
Balance = 0,
|
Balance = 0,
|
||||||
BalanceOfRecharge = 0,
|
BalanceOfRecharge = 0,
|
||||||
BalanceOfSubsidies = 0,
|
BalanceOfSubsidies = 0,
|
||||||
UserType = CanteenUserEnumType.LocalTenant,
|
|
||||||
TenantId = gainfo.Factory,
|
TenantId = gainfo.Factory,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
|
|
||||||
@@ -226,7 +260,7 @@ public class OrderService : IOrderService
|
|||||||
//获取人员余额
|
//获取人员余额
|
||||||
return await _dbContext.Queryable<GainfoEntity>()
|
return await _dbContext.Queryable<GainfoEntity>()
|
||||||
.LeftJoin<DepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
|
.LeftJoin<DepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
|
||||||
.LeftJoin<CanteenUserEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
|
.LeftJoin<GainfoMealEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
|
||||||
.Where(ga => ga.Id == gainfo.Id)
|
.Where(ga => ga.Id == gainfo.Id)
|
||||||
.Select((ga, department, mealUser) => new OrderResultResponse
|
.Select((ga, department, mealUser) => new OrderResultResponse
|
||||||
{
|
{
|
||||||
@@ -428,6 +462,53 @@ public class OrderService : IOrderService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<Pagination<OrderAggregationResponse>> GetOrdersAggregationAsync(PageDto page)
|
||||||
|
{
|
||||||
|
var subjectId = _currentUser.GetIntSubjectId();
|
||||||
|
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdentityUserId == subjectId).FirstAsync();
|
||||||
|
var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty;
|
||||||
|
if (jinkoCode.IsPresent())
|
||||||
|
{
|
||||||
|
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
var pageResult = await _dbContext.Queryable<CanteenOrderEntity>().Where(x => x.UserNo == gainfo.No)
|
||||||
|
.LeftJoin<BusinessPlaceEntity>((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<CanteenOrderDetailEntity>((x, bplace, detail) => x.No == detail.OrderNo)
|
||||||
|
|
||||||
|
var nos = pageResult.Data.Select(x => x.No).ToList();
|
||||||
|
var dtos = await _dbContext.Queryable<CanteenOrderDetailEntity>()
|
||||||
|
.LeftJoin<DishesEntity>((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 ************************************************************/
|
//******************************************************* help methods ************************************************************/
|
||||||
|
|
||||||
|
|
||||||
@@ -582,11 +663,11 @@ public class OrderService : IOrderService
|
|||||||
|
|
||||||
await ContinueUpdateAsync(async () =>
|
await ContinueUpdateAsync(async () =>
|
||||||
{
|
{
|
||||||
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
var canteenUser = await _dbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
||||||
//金额+-
|
//金额+-
|
||||||
canteenUser.Balance += order.Amount;
|
canteenUser.Balance += order.Amount;
|
||||||
|
|
||||||
var effect = await _dbContext.Updateable<CanteenUserEntity>()
|
var effect = await _dbContext.Updateable<GainfoMealEntity>()
|
||||||
.SetColumns(x => x.Balance == canteenUser.Balance)
|
.SetColumns(x => x.Balance == canteenUser.Balance)
|
||||||
.SetColumns(x => x.Version == x.Version + 1)
|
.SetColumns(x => x.Version == x.Version + 1)
|
||||||
.Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)
|
.Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)
|
||||||
@@ -623,7 +704,7 @@ public class OrderService : IOrderService
|
|||||||
{
|
{
|
||||||
if (!allowNoBalance)
|
if (!allowNoBalance)
|
||||||
{
|
{
|
||||||
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
var canteenUser = await _dbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
||||||
//金额+-
|
//金额+-
|
||||||
canteenUser.Balance += order.Amount;
|
canteenUser.Balance += order.Amount;
|
||||||
if (canteenUser.Balance < 0)
|
if (canteenUser.Balance < 0)
|
||||||
@@ -631,7 +712,7 @@ public class OrderService : IOrderService
|
|||||||
throw new UserFriendlyException("余额不足,无法消费");
|
throw new UserFriendlyException("余额不足,无法消费");
|
||||||
}
|
}
|
||||||
|
|
||||||
var effect = await _dbContext.Updateable<CanteenUserEntity>()
|
var effect = await _dbContext.Updateable<GainfoMealEntity>()
|
||||||
.SetColumns(x => x.Balance == canteenUser.Balance)
|
.SetColumns(x => x.Balance == canteenUser.Balance)
|
||||||
.SetColumns(x => x.Version == x.Version + 1)
|
.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 == canteenUser.Version)//必须与查询时的version一致
|
||||||
@@ -651,20 +732,30 @@ public class OrderService : IOrderService
|
|||||||
/// 检查我的订餐是否存在,存在抛出异常
|
/// 检查我的订餐是否存在,存在抛出异常
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bookingDate"></param>
|
/// <param name="bookingDate"></param>
|
||||||
|
/// <param name="shiftType"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task CheckExistsMyBookingsAsync(DateTime bookingDate)
|
private async Task<GainfoEntity> CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType)
|
||||||
{
|
{
|
||||||
var jinkoCode = _currentUser.GetUserClaim("jinko-code");
|
var subjectId = _currentUser.GetIntSubjectId();
|
||||||
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
|
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdentityUserId == subjectId).FirstAsync();
|
||||||
|
var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty;
|
||||||
|
if (jinkoCode.IsPresent())
|
||||||
|
{
|
||||||
|
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
|
||||||
|
}
|
||||||
|
|
||||||
var start = bookingDate.Date;
|
var start = bookingDate.Date.AddDays(-1);
|
||||||
var end = start.AddDays(1).AddSeconds(-1);
|
var end = start.AddDays(1).AddSeconds(-1);
|
||||||
|
|
||||||
var exists = await _dbContext.Queryable<CanteenOrderEntity>().Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking)
|
var exists = await _dbContext.Queryable<CanteenOrderEntity>()
|
||||||
|
.Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking)
|
||||||
|
.Where(x => x.ShiftType == shiftType)
|
||||||
.Where(x => x.UserNo == gainfo.No)
|
.Where(x => x.UserNo == gainfo.No)
|
||||||
.Where(x => x.CreateTime >= start && x.CreateTime <= end)
|
.Where(x => x.CreateTime >= start && x.CreateTime <= end)
|
||||||
.AnyAsync();
|
.AnyAsync();
|
||||||
|
|
||||||
exists.ThrowIfTrue("不可重复订餐");
|
exists.ThrowIfTrue("不可重复订餐");
|
||||||
|
|
||||||
|
return gainfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,13 @@
|
|||||||
"BasicRequestUrl": "http://localhost:5002",
|
"BasicRequestUrl": "http://localhost:5002",
|
||||||
"SysRequestUrl": "http://localhost:5003"
|
"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": true
|
||||||
|
},
|
||||||
"SwaggerOptions": {
|
"SwaggerOptions": {
|
||||||
"Enable": true,
|
"Enable": true,
|
||||||
"Authority": "https://yikatong.isawesome.cn/oauth2",
|
"Authority": "https://yikatong.isawesome.cn/oauth2",
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ using SqlSugar;
|
|||||||
|
|
||||||
namespace Dlhis.Entity.Basic.Entity;
|
namespace Dlhis.Entity.Basic.Entity;
|
||||||
|
|
||||||
[SugarTable(TableName = "BusinessPlaceShiftRelationship", TableDescription = "营业点餐次关系")]
|
[SugarTable(TableName = "BusinessPlaceShiftRelationship", TableDescription = "营业点餐别关系")]
|
||||||
public class BusinessPlaceShiftRelationshipEntity : SugarBaseEntity, ITenantId
|
public class BusinessPlaceShiftRelationshipEntity : SugarBaseEntity, ITenantId
|
||||||
{
|
{
|
||||||
[SugarColumn(ColumnDescription = "营业点code")]
|
[SugarColumn(ColumnDescription = "营业点code")]
|
||||||
public Guid PlaceCode { get; set; }
|
public Guid PlaceCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnDescription = "餐次code")]
|
[SugarColumn(ColumnDescription = "餐别code")]
|
||||||
public Guid ShiftCode { get; set; }
|
public Guid ShiftCode { get; set; }
|
||||||
|
|
||||||
public string TenantId { get; set; }
|
public string TenantId { get; set; }
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
using Dlhis.Entity.Canteen.Enums;
|
using Kurisu.Core.DataAccess.Entity;
|
||||||
using Kurisu.Core.DataAccess.Entity;
|
|
||||||
using Kurisu.SqlSugar;
|
using Kurisu.SqlSugar;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using SqlSugar.DbConvert;
|
|
||||||
|
|
||||||
namespace Dlhis.Entity.Basic.Entity;
|
namespace Dlhis.Entity.Basic.Entity;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 就餐人员
|
/// 就餐人员
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable(TableName = "CanteenUser", TableDescription = "就餐人员")]
|
[SugarTable(TableName = "GainfoMeal", TableDescription = "就餐人员")]
|
||||||
public class CanteenUserEntity : SugarBaseEntity, IVersion, ITenantId
|
public class GainfoMealEntity : SugarBaseEntity, IVersion, ITenantId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 档案号
|
/// 档案号
|
||||||
@@ -19,10 +17,10 @@ public class CanteenUserEntity : SugarBaseEntity, IVersion, ITenantId
|
|||||||
public string UserNo { get; set; }
|
public string UserNo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 消费人员类型
|
/// 工号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "消费人员类型")]
|
[SugarColumn(IsNullable = false, ColumnDescription = "工号", UniqueGroupNameList = new[] { "idx_CanteenUser_UserCode" })]
|
||||||
public CanteenUserEnumType UserType { get; set; }
|
public string UserCode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 余额
|
/// 余额
|
||||||
@@ -28,6 +28,17 @@ public class MealSupplementRecordEntity : MealSupplementRequestRecordEntity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
|
[SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
|
||||||
public MealSupplementStatusEnumtype Status { get; set; }
|
public MealSupplementStatusEnumtype Status { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 处理结果
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnDescription = "处理结果", ColumnDataType = "varchar(2000)")]
|
||||||
|
public string Result { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 状态同步
|
||||||
|
/// </summary>
|
||||||
|
public bool Sync { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[SugarTable(TableName = "MealSupplementRequestRecord", TableDescription = "餐补请求记录")]
|
[SugarTable(TableName = "MealSupplementRequestRecord", TableDescription = "餐补请求记录")]
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
using Dlhis.Entity.Canteen.Enums;
|
using Kurisu.Core.DataAccess.Entity;
|
||||||
using Kurisu.Core.DataAccess.Entity;
|
|
||||||
using Kurisu.SqlSugar;
|
using Kurisu.SqlSugar;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using SqlSugar.DbConvert;
|
|
||||||
|
|
||||||
namespace Dlhis.Entity.Canteen.Entities;
|
namespace Dlhis.Entity.Canteen.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订餐明细表
|
/// 订餐明细表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable(TableName = "OrderDetail", TableDescription = "订单明细表")]
|
[SugarTable(TableName = "CanteenOrderDetail", TableDescription = "订单明细表")]
|
||||||
public class OrderDetailEntity : SugarBaseEntity, ITenantId
|
public class CanteenOrderDetailEntity : SugarBaseEntity, ITenantId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订单号
|
/// 订单号
|
||||||
@@ -42,13 +40,5 @@ public class OrderDetailEntity : SugarBaseEntity, ITenantId
|
|||||||
[SugarColumn(ColumnDescription = "单位")]
|
[SugarColumn(ColumnDescription = "单位")]
|
||||||
public string Unit { get; set; }
|
public string Unit { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 订单明细状态
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert), ColumnDescription = "状态")]
|
|
||||||
public OrderDetailsStatusEnumType Status { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public string TenantId { get; set; }
|
public string TenantId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace Dlhis.Entity.Canteen.Enums;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 就餐人员类型
|
|
||||||
/// </summary>
|
|
||||||
[Description("就餐人员类型")]
|
|
||||||
public enum CanteenUserEnumType
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 本基地
|
|
||||||
/// </summary>
|
|
||||||
[Description("本基地人员")]
|
|
||||||
LocalTenant = 1,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 其他基地
|
|
||||||
/// </summary>
|
|
||||||
[Description("其他基地人员")]
|
|
||||||
OtherTenant,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 外部人员
|
|
||||||
/// </summary>
|
|
||||||
[Description("外部人员")]
|
|
||||||
External
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 有效
|
|
||||||
/// </summary>
|
|
||||||
[Description("有效")]
|
|
||||||
I = 1,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 取消
|
|
||||||
/// </summary>
|
|
||||||
[Description("取消")]
|
|
||||||
C = 2,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 退单
|
|
||||||
/// </summary>
|
|
||||||
[Description("退单")]
|
|
||||||
X = 3,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 免单
|
|
||||||
/// </summary>
|
|
||||||
[Description("免单")]
|
|
||||||
Z = 4,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace Dlhis.Entity.Canteen.Enums
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 订单明细状态 OrderDetailsStatusEnumType
|
|
||||||
/// </summary>
|
|
||||||
[Description("订单明细状态")]
|
|
||||||
public enum OrderDetailsStatusEnumType
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 有效
|
|
||||||
/// </summary>
|
|
||||||
[Description("有效")]
|
|
||||||
I = 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user