From 48c1ff4a312b814c2849e4566236d240364a8aba Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期四, 22 八月 2024 08:38:42 +0800 Subject: [PATCH] tijiao --- cylsg/cylsg.Application/Orders/Dtos/OrderDto.cs | 504 ++++++++++++ cylsg/cylsg.Application/Users/UserAppService.cs | 206 +++++ cylsg/cylsg.Model/UserModel/UserWorker.cs | 13 cylsg/cylsg.Application/Orders/Dtos/Mapper.cs | 28 cylsg/cylsg.Application/Orders/Dtos/PageBaseSearch.cs | 97 ++ cylsg/cylsg.Application/Users/Dtos/Mapper.cs | 24 cylsg/cylsg.Model/OrderModel/Order.cs | 4 cylsg/cylsg.Model/OrderModel/OrderBidding.cs | 6 cylsg/cylsg.Model/UserModel/UserTiXianDetail.cs | 72 + cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs | 530 ++++++++++++ cylsg/cylsg.Model/OrderModel/OrderBiddingDetail.cs | 14 cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs | 746 ++++++++++++++++++ cylsg/cylsg.Application/Users/Dtos/UserDto.cs | 193 ++++ 13 files changed, 2,427 insertions(+), 10 deletions(-) diff --git a/cylsg/cylsg.Application/Orders/Dtos/Mapper.cs b/cylsg/cylsg.Application/Orders/Dtos/Mapper.cs new file mode 100644 index 0000000..0e74ae9 --- /dev/null +++ b/cylsg/cylsg.Application/Orders/Dtos/Mapper.cs @@ -0,0 +1,28 @@ +锘縰sing cylsg.Model.OrderModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Application.Orders.Dtos +{ + public class Mapper : IRegister + { + public void Register(TypeAdapterConfig config) + { + config.ForType<Order, OrderDto>(); + config.ForType<OrderDto, Order>(); + + config.ForType<OrderBidding, OrderBiddingDto>(); + config.ForType<OrderBiddingDto, OrderBidding>(); + + config.ForType<OrderBiddingDetail, OrderBiddingDetailDto>(); + config.ForType<OrderBiddingDetailDto, OrderBiddingDetail>(); + + config.ForType<OrderBiddingDetailCheck, OrderBiddingDetailCheckDto>(); + config.ForType<OrderBiddingDetailCheckDto, OrderBiddingDetailCheck>(); + + } + } +} diff --git a/cylsg/cylsg.Application/Orders/Dtos/OrderDto.cs b/cylsg/cylsg.Application/Orders/Dtos/OrderDto.cs new file mode 100644 index 0000000..c524481 --- /dev/null +++ b/cylsg/cylsg.Application/Orders/Dtos/OrderDto.cs @@ -0,0 +1,504 @@ +锘縰sing cylsg.Model.OrderModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Application.Orders.Dtos +{ + public class OrderDto + { + + /// <summary> + /// 鎷涘伐Id + /// </summary> + public int Id { get; set; } + + /// <summary> + /// 鎷涘伐鐢ㄦ埛id + /// </summary> + public int OrderUserId { get; set; } + + /// <summary> + /// 鎷涘伐鍚嶇О + /// </summary> + public string OrderName { get; set; } + + /// <summary> + /// 宸ヤ綔寮�濮嬫椂闂� + /// </summary> + public DateTime? WordStartTime { get; set; } + + /// <summary> + /// 宸ヤ綔缁撴潫鏃堕棿 + /// </summary> + public DateTime? WordEndTime { get; set; } + + /// <summary> + /// 闇�姹� + /// </summary> + public string Demand { get; set; } + + /// <summary> + /// 鎷涘伐浜烘暟 + /// </summary> + public int? WorderCount { get; set; } + + /// <summary> + /// 宸叉嫑宸ヤ汉鏁� + /// </summary> + public int WorderCounted { get; set; } + + /// <summary> + /// 宸ヤ綔鍦扮偣 + /// </summary> + public string WorderAddress { get; set; } + + + /// <summary> + /// 鑱旂郴鐢佃瘽 + /// </summary> + public string ContactPhone { get; set; } + + + /// <summary> + /// 宸ヤ綔鏂瑰紡 + /// </summary> + public int? WorkerType { get; set; } + + + /// <summary> + /// 宸ヤ环 + /// </summary> + public decimal? WorkPrice { get; set; } + + + /// <summary> + /// 鎷涘伐鐘舵�� + /// </summary> + public int? OrderStatus { get; set; } + + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public string OrderStatusName { get; set; } + + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public bool? IsSelected { get; set; } + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public string IsSelectedName { get; set; } + + /// <summary> + /// 鎷涘伐鏄庣粏 + /// </summary> + public List<OrderBiddingDto> orderBidding { get; set; } + + } + + + /// <summary> + /// 鎷涘伐鏄庣粏 + /// </summary> + public class OrderBiddingDto() + { + /// <summary> + /// 宸ヤ汉鎶曢�扞d + /// </summary> + public int Id { get; set; } + + /// <summary> + /// 鐢ㄦ埛id + /// </summary> + public int WorkerUserId { get; set; } + + /// <summary> + /// 鐢ㄦ埛鏄电О + /// </summary> + public string WorkerName { get; set; } + + + /// <summary> + /// 鐢ㄦ埛鏄电О + /// </summary> + public string WorkerAvatar { get; set; } + + /// <summary> + /// 鎷涘伐id + /// </summary> + public int OrderId { get; set; } + + + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public bool? IsSelected { get; set; } + + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public string IsSelectedName { get; set; } + + /// <summary> + /// 閫変腑鏃堕棿 + /// </summary> + public DateTime? Selectedtime { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 宸ヨ祫鎬婚 + /// </summary> + public decimal? Salary { get; set; } + + } + + + + + public class BaoMingDto + { + + /// <summary> + /// 鎷涘伐OrderId + /// </summary> + public int OrderId { get; set; } + + + + + + } + + + public class QueRenDto + { + + /// <summary> + /// 鎷涘伐鏄庣粏OrderBiddingId + /// </summary> + public int OrderBiddingId { get; set; } + + + + + + } + + public class DakaDetailDto + { + + /// <summary> + /// 鎷涘伐鏄庣粏OrderBiddingId + /// </summary> + public int OrderBiddingDetailId { get; set; } + + + + + + } + + + public class DakaDto + { + + /// <summary> + /// 鎷涘伐鏄庣粏OrderBiddingId + /// </summary> + public int OrderBiddingId { get; set; } + + + /// <summary> + /// 鎵撳崱鐓х墖 + /// </summary> + public string CheckPhoto { get; set; } + + + + } + + public class OrderBiddingDetailDto + { + + /// <summary> + /// 宸ヤ汉宸ヤ綔鏄庣粏琛↖d + /// </summary> + public int OrderBiddingDetailId { get; set; } + + /// <summary> + /// 宸ヤ汉鎶曢�抜d + /// </summary> + public int OrderBiddingId { get; set; } + + /// <summary> + /// 宸ヤ綔鏃ユ湡 + /// </summary> + public DateTime? WorkDate { get; set; } + + /// <summary> + /// 宸ヤ綔鏃堕暱 + /// </summary> + public decimal? WorkTime { get; set; } + + /// <summary> + /// 璁′欢鏁伴噺 + /// </summary> + public decimal? WorkCount { get; set; } + + /// <summary> + /// 褰撴棩宸ヨ祫 + /// </summary> + public decimal? TodaySalary { get; set; } + + /// <summary> + /// 瀹℃壒鐘舵�� + /// </summary> + public int? IsShenPi { get; set; } + + /// <summary> + /// 瀹℃壒鏃堕棿 + /// </summary> + public DateTime? ShenPitime { get; set; } + + + /// <summary> + /// 鏄惁鎻愮幇 + /// </summary> + public bool? IsTiXian { get; set; } + + /// <summary> + /// 鎻愮幇鏃堕棿 + /// </summary> + public DateTime? TiXiantime { get; set; } + + + /// <summary> + /// 鎵撳崱鏄庣粏 + /// </summary> + public List<OrderBiddingDetailCheckDto> orderBiddingDetailCheck { get; set; } + + + } + + + public class OrderBiddingDetailCheckDto + { + /// <summary> + /// 鎵撳崱璁板綍琛↖d + /// </summary> + public int OrderBiddingDetailCheckId { get; set; } + + /// <summary> + /// 宸ヤ汉宸ヤ綔鏄庣粏琛↖d + /// </summary> + public int OrderBiddingDetailId { get; set; } + + + /// <summary> + /// 鎵撳崱鐓х墖 + /// </summary> + public string CheckPhoto { get; set; } + + + /// <summary> + /// 鎵撳崱鏃堕棿 + /// </summary> + public DateTime? Checktime { get; set; } + } + + + + + public class OrderDakaDto + { + + /// <summary> + /// 鎷涘伐鎵撳崱Id + /// </summary> + public int OrderBiddingDetailId { get; set; } + + + + /// <summary> + /// 鎷涘伐鍚嶇О + /// </summary> + public string OrderName { get; set; } + + /// <summary> + /// 宸ヤ綔鏃ユ湡 + /// </summary> + public DateTime? WorkDate { get; set; } + + /// <summary> + /// 宸ヤ綔鏃堕暱 + /// </summary> + public decimal? WorkTime { get; set; } + + + /// <summary> + /// 宸ヤ綔鏂瑰紡 + /// </summary> + public int? WorkerType { get; set; } + + /// <summary> + /// 宸ヤ綔鏂瑰紡鍚嶇О + /// </summary> + public string WorkerTypeName { get; set; } + + + /// <summary> + /// 宸ヤ环 + /// </summary> + public decimal? WorkPrice { get; set; } + + /// <summary> + /// 璁′欢鏁伴噺 + /// </summary> + public decimal? WorkCount { get; set; } + + /// <summary> + /// 褰撴棩宸ヨ祫 + /// </summary> + public decimal? TodaySalary { get; set; } + + + /// <summary> + /// 瀹℃壒鐘舵�� + /// </summary> + public int? IsShenPi { get; set; } + + + /// <summary> + /// 瀹℃壒鐘舵�佸悕绉� + /// </summary> + public string IsShenPiName { get; set; } + + /// <summary> + /// 鎵撳崱鏄庣粏 + /// </summary> + public string DakaMingxi { get; set; } + + } + + + + public class OrderDakaMingxiDto + { + + /// <summary> + /// 鎷涘伐鎵撳崱Id + /// </summary> + public int OrderBiddingDetailId { get; set; } + + + + /// <summary> + /// 鎷涘伐鍚嶇О + /// </summary> + public string OrderName { get; set; } + + /// <summary> + /// 宸ヤ綔鏃ユ湡 + /// </summary> + public DateTime? WorkDate { get; set; } + + /// <summary> + /// 宸ヤ綔鏃堕暱 + /// </summary> + public decimal? WorkTime { get; set; } + + + /// <summary> + /// 宸ヤ綔鏂瑰紡 + /// </summary> + public int? WorkerType { get; set; } + + /// <summary> + /// 宸ヤ綔鏂瑰紡鍚嶇О + /// </summary> + public string WorkerTypeName { get; set; } + + + /// <summary> + /// 宸ヤ环 + /// </summary> + public decimal? WorkPrice { get; set; } + + /// <summary> + /// 璁′欢鏁伴噺 + /// </summary> + public decimal? WorkCount { get; set; } + + /// <summary> + /// 褰撴棩宸ヨ祫 + /// </summary> + public decimal? TodaySalary { get; set; } + + + /// <summary> + /// 瀹℃壒鐘舵�� + /// </summary> + public int? IsShenPi { get; set; } + + + /// <summary> + /// 瀹℃壒鐘舵�佸悕绉� + /// </summary> + public string IsShenPiName { get; set; } + + /// <summary> + /// 鐢ㄦ埛id + /// </summary> + public int WorkerUserId { get; set; } + + /// <summary> + /// 鐢ㄦ埛鏄电О + /// </summary> + public string WorkerUserName { get; set; } + /// <summary> + /// 鐢ㄦ埛澶村儚 + /// </summary> + public string WorkerUserAvatar { get; set; } + + /// <summary> + /// 鎵撳崱鏄庣粏 + /// </summary> + public List<OrderBiddingDetailCheckDto> orderBiddingDetailCheck { get; set; } + + } + + + public class DakaQuerenDetailDto + { + + /// <summary> + /// 鎷涘伐鎵撳崱Id + /// </summary> + public int OrderBiddingDetailId { get; set; } + + + /// <summary> + /// 宸ヤ綔鏃堕暱 + /// </summary> + public decimal? WorkTime { get; set; } + + /// <summary> + /// 璁′欢鏁伴噺 + /// </summary> + public decimal? WorkCount { get; set; } + + /// <summary> + /// 褰撴棩宸ヨ祫 + /// </summary> + public decimal? TodaySalary { get; set; } + + } +} diff --git a/cylsg/cylsg.Application/Orders/Dtos/PageBaseSearch.cs b/cylsg/cylsg.Application/Orders/Dtos/PageBaseSearch.cs new file mode 100644 index 0000000..35e3d5c --- /dev/null +++ b/cylsg/cylsg.Application/Orders/Dtos/PageBaseSearch.cs @@ -0,0 +1,97 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Application.Orders.Dtos +{ + public class PageBaseSearch + { + /// <summary> + /// 椤电爜 + /// </summary> + public int PageIndex { get; set; } = 1; + + /// <summary> + /// 鍒嗛〉澶у皬 + /// </summary> + public int PageSize { get; set; } = 20; + } + + /// <summary> + /// 鍒嗛〉鏁版嵁淇℃伅 + /// </summary> + /// <typeparam name="T"></typeparam> + public class PageResult<T> + { + /// <summary> + /// 椤电爜 + /// </summary> + public int PageIndex { get; set; } + + /// <summary> + /// 鍒嗛〉澶у皬 + /// </summary> + public int PageSize { get; set; } + + /// <summary> + /// 璁板綍鎬绘暟 + /// </summary> + public int TotalCount { get; set; } + + /// <summary> + /// 璁板綍闆嗗悎 + /// </summary> + public List<T> Items { get; set; } = new(); + /// <summary> + /// 鎬婚〉鏁� + /// </summary> + public int TotalPage { get; set; } + + + } + + + /// <summary> + /// 鎷涘伐璁㈠崟鍒嗛〉鏌ヨ + /// </summary> + public class OrderPageSearch : PageBaseSearch + { + /// <summary> + /// 鎷涘伐鍚嶇О + /// </summary> + public string OrderName { get; set; } + + /// <summary> + /// 宸ヤ綔寮�濮嬫椂闂� + /// </summary> + public DateTime? WordStartTime { get; set; } + + /// <summary> + /// 宸ヤ綔缁撴潫鏃堕棿 + /// </summary> + public DateTime? WordEndTime { get; set; } + } + + + + + /// <summary> + /// 鎷涘伐璁㈠崟鍒嗛〉鏌ヨ + /// </summary> + public class OrderDakaPageSearch : PageBaseSearch + { + + + /// <summary> + /// 宸ヤ綔鏃ユ湡 + /// </summary> + public DateTime? WordDate { get; set; } + + /// <summary> + /// 鏄惁缁撶畻 + /// </summary> + public bool? IsJieSuan { get; set; } + } +} diff --git a/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs b/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs new file mode 100644 index 0000000..c0e305c --- /dev/null +++ b/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs @@ -0,0 +1,530 @@ +锘縰sing cylsg.Application.Orders.Dtos; +using cylsg.Application.Users.Dtos; +using cylsg.Core; +using cylsg.Model.OrderModel; +using cylsg.Model.UserModel; +using Furion.LinqBuilder; +using MapsterMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Security.Claims; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Application.Orders +{ + /// <summary> + /// 璁㈠崟鍏徃鎺ュ彛 + /// </summary> + public class OrderCompanyAppService : IDynamicApiController + { + private readonly ISystemService _systemService; + private ISqlSugarClient _sqlSugarClient; + private IMapper _mapper; + public OrderCompanyAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper) + { + _systemService = systemService; + _sqlSugarClient = sqlSugarClient; + _mapper = mapper; + } + + + /// <summary> + /// 鏌ヨ鍏徃宸茬粡鍙戝竷鐨勬嫑宸ヨ鍗� + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDto>> PostMyListPage(OrderPageSearch page) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + PageResult<OrderDto> result = new PageResult<OrderDto>(); + var orderRepository = new BaseRepository<Order>(); + Expression<Func<Order, bool>> expression = t => true; + + expression = expression.And(t => t.IsDeleted == false && t.IsEn == true + && t.OrderUserId == userid); + + if (!string.IsNullOrEmpty(page.OrderName)) + { + expression = expression.And(t => t.OrderName.Contains(page.OrderName)); + } + if (page.WordStartTime.HasValue) + { + expression = expression.And(t => t.WordStartTime >= page.WordStartTime); + } + if (page.WordEndTime.HasValue) + { + expression = expression.And(t => t.WordStartTime <= page.WordEndTime); + } + + RefAsync<int> total = 0; + + + var orderBiddingRepository = new BaseRepository<OrderBidding>(); + + var data = await orderRepository.Context.Queryable<Order>() + .Where(expression) + .OrderByDescending(c => c.WordStartTime) + .ToPageListAsync(page.PageIndex, page.PageSize, total); + var datadto = _mapper.Map<List<OrderDto>>(data); + + if (datadto != null && datadto.Count > 0) + { + foreach (var orderDto in datadto) + { + switch (orderDto.OrderStatus) + { + case (int)OrderStatuses.fabu: orderDto.OrderStatusName = "鍙戝竷"; break; + case (int)OrderStatuses.zhaogongwanbi: orderDto.OrderStatusName = "鎷涘伐瀹屾瘯"; break; + case (int)OrderStatuses.jiesuanwanbi: orderDto.OrderStatusName = "缁撶畻瀹屾瘯"; break; + default: break; + } + + var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); + orderDto.WorderCounted = orderBiddings; + + } + + } + result.Items = datadto; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + /// <summary> + /// 淇濆瓨鎷涘伐淇℃伅锛堟柊澧�/淇敼锛� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveOrder(OrderDto orderDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + var userCompanyRes = new BaseRepository<UserCompany>(); + var userCompany = await userCompanyRes.GetFirstAsync(p => p.UserId == userid && p.IsEn == true && p.IsDeleted == false); + if (userCompany == null || string.IsNullOrEmpty(userCompany.BusinessLicense)) + { + throw Oops.Oh("璇峰厛瀹屾垚鍏徃璁よ瘉鎵嶈兘鍙戝竷鎷涘伐锛�"); + } + + var orderRes = new BaseRepository<Order>(); + bool res; + if (orderDto.Id > 0) + { + var order = await orderRes.GetByIdAsync(orderDto.Id); + if (order.OrderStatus > 0) + { + throw Oops.Oh("鎷涘伐宸茬粡缁撴潫涓嶈兘淇敼锛�"); + } + order.OrderName = orderDto.OrderName; + order.WordStartTime = orderDto.WordStartTime; + order.WordEndTime = orderDto.WordEndTime; + order.Demand = orderDto.Demand; + order.WorderCount = orderDto.WorderCount; + order.WorderAddress = orderDto.WorderAddress; + order.ContactPhone = orderDto.ContactPhone; + order.WorkerType = orderDto.WorkerType; + order.WorkPrice = orderDto.WorkPrice; + + + order.UpDataBy = ITCode; + order.UpDataTime = DateTime.Now; + res = await orderRes.UpdateAsync(order); + + + } + else + { + var order = _mapper.Map<Order>(orderDto); + order.UpDataBy = ITCode; + order.UpDataTime = DateTime.Now; + order.CreateBy = ITCode; + order.CreateTime = DateTime.Now; + order.OrderStatus = 0; + order.OrderUserId = userid; + res = await orderRes.InsertAsync(order); + } + + + + + + + + return res; + } + + + + /// <summary> + /// 鍏徃閫夋嫨宸ヤ汉 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveQueRen(QueRenDto queRenDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + + var orderBidding = await orderBiddingRes.GetByIdAsync(queRenDto.OrderBiddingId); + if (orderBidding == null || orderBidding.IsEn != true || orderBidding.IsDeleted == true ) + { + throw Oops.Oh("璇ユ姇閫掑凡缁忔棤鏁堬紒"); + } + if(orderBidding.IsSelected == true) + { + throw Oops.Oh("璇ユ姇閫掑凡缁忕‘璁わ紝涓嶈兘閲嶅纭锛�"); + } + + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + if (order == null || order.OrderStatus > 0) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟姇閫掞紒"); + } + + var orderBiddings = await orderBiddingRes.CountAsync(x => x.OrderId == orderBidding.OrderId && x.IsSelected == true && x.IsDeleted == false && x.IsEn == true); + if (orderBiddings >= order.WorderCount) + { + throw Oops.Oh("鎷涘伐浜烘暟宸茬粡婊′簡锛屼笉鑳芥姤鍚嶏紒"); + } + + + + bool res; + + orderBidding.IsSelected = true; + orderBidding.Selectedtime = DateTime.Now; + orderBidding.UpDataBy = ITCode; + orderBidding.UpDataTime = DateTime.Now; + + + res = await orderBiddingRes.UpdateAsync(orderBidding); + + if(order.WorderCount == (orderBiddings + 1)) + { + order.OrderStatus = 1; + res = await orderRes.UpdateAsync(order); + } + + return res; + } + + + + + /// <summary> + /// 鏌ヨ鍏徃涓嬪伐浜虹殑鎵撳崱璁板綍 + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDakaDto>> PostMyComDakaListPage(OrderDakaPageSearch page) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + PageResult<OrderDakaDto> result = new PageResult<OrderDakaDto>(); + var orderRepository = new BaseRepository<Order>(); + + RefAsync<int> total = 0; + + + var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); + + var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail>((a, b, c) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId, + JoinType.Inner, b.Id == c.OrderBiddingId + )) + .Where((a, b, c) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false + && b.IsSelected == true && a.OrderUserId == userid) + .WhereIF(page.WordDate.HasValue, (a, b, c) => (c.WorkDate == page.WordDate)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == true, (a, b, c) => (c.IsShenPi == 2)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == false, (a, b, c) => (c.IsShenPi < 2)) + .OrderByDescending((a,b,c) => c.WorkDate) + .Select((a, b, c) => new OrderDakaDto + { + OrderBiddingDetailId = c.Id, + OrderName = a.OrderName, + WorkDate = c.WorkDate, + WorkTime = c.WorkTime, + WorkerType = a.WorkerType, + WorkPrice = a.WorkPrice, + TodaySalary = c.TodaySalary, + IsShenPi = c.IsShenPi, + WorkCount = c.WorkCount, + }) + + .ToPageListAsync(page.PageIndex, page.PageSize, total); + + if (data != null && data.Count > 0) + { + foreach (var dakaDto in data) + { + int hours = 0; + int minutes = 0; + var orderBiddingDetailChecks = await orderBiddingDetailCheckRepository.GetListAsync(x => x.OrderBiddingDetailId == dakaDto.OrderBiddingDetailId && x.IsEn == true && x.IsDeleted == false); + string DakaMingxi = ""; + for (int i = 0; i < orderBiddingDetailChecks.Count; i++) + { + if (i != orderBiddingDetailChecks.Count - 1) + { + DakaMingxi += orderBiddingDetailChecks[i].Checktime.Value.ToString("HH:mm") + "-"; + } + else + { + DakaMingxi += orderBiddingDetailChecks[i].Checktime.Value.ToString("HH:mm"); + } + + if (i == 1 || i == 3 || i == 5 || i == 7 || i == 9 || i == 11 || i == 13 || i == 15 || i == 17 || i == 19) + { + var timeDifference = orderBiddingDetailChecks[i].Checktime.Value - orderBiddingDetailChecks[i - 1].Checktime.Value; + hours += timeDifference.Hours; + minutes += timeDifference.Minutes; + + } + } + + //濡傛灉褰撳ぉ杩樻病鏈夊~鍐欑敵璇凤紝鍒欒绠楀伐浣滄椂闂村拰宸ヨ祫 + if (dakaDto.IsShenPi == 0) + { + dakaDto.WorkTime = hours + (minutes / 60); + if (dakaDto.WorkerType == 0) + { + dakaDto.TodaySalary = dakaDto.WorkTime * dakaDto.WorkPrice; + } + else + { + var WorkCount = dakaDto.WorkCount ?? 0; + dakaDto.TodaySalary = WorkCount * dakaDto.WorkPrice; + } + + } + + switch (dakaDto.IsShenPi) + { + case (int)IsShenPis.baocun: dakaDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.tijiao: dakaDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.yishenpi: dakaDto.IsShenPiName = "宸茬粨绠�"; break; + default: break; + } + + switch (dakaDto.WorkerType) + { + case (int)WorkerTypes.time: dakaDto.WorkerTypeName = "璁℃椂"; break; + case (int)WorkerTypes.count: dakaDto.WorkerTypeName = "璁′环"; break; + default: break; + } + + + + + + dakaDto.DakaMingxi = DakaMingxi; + + } + + } + result.Items = data; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + + + /// <summary> + /// 鍏徃纭宸ヤ汉褰撳ぉ鎵撳崱璇︽儏 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveDakaDetail(DakaQuerenDetailDto dakaDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var userTiXianDetailRes = new BaseRepository<UserTiXianDetail>(); + //var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + var userWorkerRes = new BaseRepository<UserWorker>(); + var userCompanyRes = new BaseRepository<UserCompany>(); + + var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDto.OrderBiddingDetailId); + var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + + if (orderBidding == null || orderBidding.IsDeleted == true || orderBidding.IsEn == false || orderBidding.IsSelected != true) + { + throw Oops.Oh("璇ユ姇閫掔姸鎬佹棤娉曟墦鍗$‘璁わ紒"); + } + //if (order == null || order.OrderStatus > 1) + //{ + // throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); + //} + var res = false; + try + { + var TodaySalary = orderBiddingDetail.TodaySalary.HasValue? orderBiddingDetail.TodaySalary.Value:0; + if(orderBiddingDetail.IsShenPi == (int)IsShenPis.yishenpi) + { + TodaySalary = dakaDto.TodaySalary.Value - TodaySalary; + } + else + { + TodaySalary = dakaDto.TodaySalary.Value; + } + orderRes.Context.Ado.BeginTran(); + + orderBiddingDetail.WorkTime = dakaDto.WorkTime; + orderBiddingDetail.WorkCount = dakaDto.WorkCount; + orderBiddingDetail.TodaySalary = dakaDto.TodaySalary; + orderBiddingDetail.IsShenPi = (int)IsShenPis.yishenpi; + orderBiddingDetail.ShenPitime = DateTime.Now; + orderBiddingDetail.UpDataBy = ITCode; + orderBiddingDetail.UpDataTime = DateTime.Now; + orderBiddingDetail.IsTiXian = true; + orderBiddingDetail.TiXiantime = DateTime.Now; + //orderBiddingDetail.CreateBy = ITCode; + //orderBiddingDetail.CreateTime = DateTime.Now; + res = await orderBiddingDetailRes.UpdateAsync(orderBiddingDetail); + if (!res) + { + orderRes.Context.Ado.RollbackTran(); + throw Oops.Oh("缁撶畻澶辫触锛�"); + } + + var userCompany = await userCompanyRes.GetFirstAsync(x => x.UserId == order.OrderUserId); + if(userCompany!=null && userCompany.IsTiXian == true) + { + //鎻掑叆鐢ㄦ埛鐨勭粨绠楅噾棰� + UserTiXianDetail userTiXianDetail = new UserTiXianDetail(); + userTiXianDetail.UserId = orderBidding.WorkerUserId; + userTiXianDetail.YiTiXianJine = TodaySalary; + userTiXianDetail.ZhiChuShouRu = (int)ZhiChuShouRus.shouru; + userTiXianDetail.Remark = "鎷涘伐璁㈠崟" + order.OrderName + orderBiddingDetail.WorkDate.Value.ToString("yyyy-MM-dd") + "宸ヨ祫缁撶畻"; + userTiXianDetail.UpDataBy = ITCode; + userTiXianDetail.UpDataTime = DateTime.Now; + userTiXianDetail.CreateBy = ITCode; + userTiXianDetail.CreateTime = DateTime.Now; + + res = await userTiXianDetailRes.InsertAsync(userTiXianDetail); + if (!res) + { + orderRes.Context.Ado.RollbackTran(); + throw Oops.Oh("缁撶畻澶辫触锛�"); + } + var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderBidding.WorkerUserId); + if (userWorker != null) + { + var TiXianZonge = userWorker.TiXianZonge ?? 0; + + userWorker.TiXianZonge = TiXianZonge + TodaySalary; + res = await userWorkerRes.UpdateAsync(userWorker); + if (!res) + { + orderRes.Context.Ado.RollbackTran(); + throw Oops.Oh("缁撶畻澶辫触锛�"); + } + } + } + + + + + + //鍒ゆ柇璁㈠崟鏄惁鍙互淇敼涓虹粨绠楃姸鎬� + + if (order.WordEndTime <= DateTime.Now) + { + var sss = await orderBiddingRes.GetListAsync(x => x.OrderId == order.Id && x.IsEn == true && x.IsDeleted == false && x.IsSelected == true); + var bbb =sss.Select(x => x.Id).ToList(); + var oCount = await orderBiddingDetailRes.CountAsync(x => bbb.Contains(x.OrderBiddingId) && x.IsEn == true && x.IsDeleted == false && x.IsShenPi != (int)IsShenPis.yishenpi); + if (oCount == 0) + { + order.OrderStatus = (int)OrderStatuses.jiesuanwanbi; + res = await orderRes.UpdateAsync(order); + if (!res) + { + orderRes.Context.Ado.RollbackTran(); + throw Oops.Oh("缁撶畻澶辫触锛�"); + } + } + + + } + + + + + + orderRes.Context.Ado.CommitTran(); + } + catch (Exception ex ) + { + orderRes.Context.Ado.RollbackTran(); + throw Oops.Oh(ex.Message); + } + + + + + + + + + + + + + return res; + } + } +} diff --git a/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs b/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs new file mode 100644 index 0000000..3f658a3 --- /dev/null +++ b/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs @@ -0,0 +1,746 @@ +锘縰sing cylsg.Application.Orders.Dtos; +using cylsg.Application.Users.Dtos; +using cylsg.Core; +using cylsg.Model.OrderModel; +using cylsg.Model.UserModel; +using Furion.LinqBuilder; +using MapsterMapper; +using Org.BouncyCastle.Asn1.X509; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Security.Claims; +using System.Text; +using System.Threading.Tasks; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.ChannelsECOrderDeliverySendRequest.Types.Delivery.Types; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.SemanticSemproxySearchResponse.Types; + +namespace cylsg.Application.Orders +{ + /// <summary> + /// 璁㈠崟宸ヤ汉鎺ュ彛 + /// </summary> + public class OrderWorkerAppService : IDynamicApiController + { + private readonly ISystemService _systemService; + private ISqlSugarClient _sqlSugarClient; + private IMapper _mapper; + public OrderWorkerAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper) + { + _systemService = systemService; + _sqlSugarClient = sqlSugarClient; + _mapper = mapper; + } + + + /// <summary> + /// 鏌ヨ宸ヤ汉鍙互鎶曢�掔殑鎷涘伐璁㈠崟 + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [HttpPost] + public async Task<PageResult<OrderDto>> PostListPage(OrderPageSearch page) + { + PageResult<OrderDto> result = new PageResult<OrderDto>(); + + Expression<Func<Order, bool>> expression = t => true; + + expression = expression.And(t => t.IsDeleted == false && t.IsEn == true && t.OrderStatus == 0); + if (!string.IsNullOrEmpty(page.OrderName)) + { + expression = expression.And(t => t.OrderName.Contains(page.OrderName)); + } + if (page.WordStartTime.HasValue) + { + expression = expression.And(t => t.WordStartTime >= page.WordStartTime); + } + if (page.WordEndTime.HasValue) + { + expression = expression.And(t => t.WordStartTime <= page.WordEndTime); + } + + RefAsync<int> total = 0; + var orderRepository = new BaseRepository<Order>(); + + var orderBiddingRepository = new BaseRepository<OrderBidding>(); + + var data = await orderRepository.Context.Queryable<Order>() + .Where(expression) + .OrderByDescending(c => c.WordStartTime) + .ToPageListAsync(page.PageIndex, page.PageSize, total); + var datadto = _mapper.Map<List<OrderDto>>(data); + + if (datadto != null && datadto.Count > 0) + { + foreach (var orderDto in datadto) + { + var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); + orderDto.WorderCounted = orderBiddings; + } + + } + result.Items = datadto; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + /// <summary> + /// 鏌ヨ宸ヤ汉宸茬粡鎶曢�掔殑鎷涘伐璁㈠崟 + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDto>> PostMyListPage(OrderPageSearch page) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + PageResult<OrderDto> result = new PageResult<OrderDto>(); + var orderRepository = new BaseRepository<Order>(); + Expression<Func<Order, bool>> expression = t => true; + + expression = expression.And(t => t.IsDeleted == false && t.IsEn == true + && SqlFunc.Subqueryable<OrderBidding>().Where(oi => oi.OrderId == t.Id && oi.IsDeleted == false && oi.IsEn == true && oi.WorkerUserId == userid).Any()); + + if (!string.IsNullOrEmpty(page.OrderName)) + { + expression = expression.And(t => t.OrderName.Contains(page.OrderName)); + } + if (page.WordStartTime.HasValue) + { + expression = expression.And(t => t.WordStartTime >= page.WordStartTime); + } + if (page.WordEndTime.HasValue) + { + expression = expression.And(t => t.WordStartTime <= page.WordEndTime); + } + + RefAsync<int> total = 0; + + + var orderBiddingRepository = new BaseRepository<OrderBidding>(); + + var data = await orderRepository.Context.Queryable<Order>() + .Where(expression) + .OrderByDescending(c => c.WordStartTime) + .ToPageListAsync(page.PageIndex, page.PageSize, total); + var datadto = _mapper.Map<List<OrderDto>>(data); + + if (datadto != null && datadto.Count > 0) + { + foreach (var orderDto in datadto) + { + switch (orderDto.OrderStatus) + { + case (int)OrderStatuses.fabu: orderDto.OrderStatusName = "鍙戝竷"; break; + case (int)OrderStatuses.zhaogongwanbi: orderDto.OrderStatusName = "鎷涘伐瀹屾瘯"; break; + case (int)OrderStatuses.jiesuanwanbi: orderDto.OrderStatusName = "缁撶畻瀹屾瘯"; break; + default: break; + } + + var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); + orderDto.WorderCounted = orderBiddings; + + + var orderBidding = await orderBiddingRepository.GetFirstAsync(x => x.OrderId == orderDto.Id && x.WorkerUserId == userid && x.IsEn == true && x.IsDeleted == false); + if (orderBidding != null) + { + orderDto.IsSelected = orderBidding.IsSelected; + if (orderDto.IsSelected.HasValue && orderDto.IsSelected.Value) + { + orderDto.IsSelectedName ="宸茬‘璁�"; + } + else + { + orderDto.IsSelectedName = "鏈‘璁�"; + } + } + } + + } + result.Items = datadto; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + + + + /// <summary> + /// 鏍规嵁Id鏌ヨ鎷涘伐鏄庣粏 + /// </summary> + /// <returns></returns> + [Authorize] + public async Task<OrderDto> getOrder(int orderid) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + OrderDto orderDto = new OrderDto(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var userRes = new BaseRepository<User>(); + var order = await orderRes.GetByIdAsync(orderid); + orderDto = _mapper.Map<OrderDto>(order); + switch (orderDto.OrderStatus) + { + case (int)OrderStatuses.fabu: orderDto.OrderStatusName = "鍙戝竷"; break; + case (int)OrderStatuses.zhaogongwanbi: orderDto.OrderStatusName = "鎷涘伐瀹屾瘯"; break; + case (int)OrderStatuses.jiesuanwanbi: orderDto.OrderStatusName = "缁撶畻瀹屾瘯"; break; + default: break; + } + var orderBiddings = await orderBiddingRes.GetListAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false); + var IsSelected = orderBiddings.Count(x => x.IsSelected == true); + orderDto.WorderCounted = IsSelected; + + var orderBidding = orderBiddings.Where(x => x.WorkerUserId == userid).FirstOrDefault(); + if (orderBidding != null) + { + orderDto.IsSelected = orderBidding.IsSelected; + if (orderDto.IsSelected.HasValue && orderDto.IsSelected.Value) + { + orderDto.IsSelectedName = "宸茬‘璁�"; + } + else + { + orderDto.IsSelectedName = "鏈‘璁�"; + } + } + + + var orderBiddingDtos = _mapper.Map<List<OrderBiddingDto>>(orderBiddings); + if(orderBiddingDtos != null&& orderBiddingDtos.Count > 0) + { + foreach (var orderBiddingDto in orderBiddingDtos) + { + if (orderBiddingDto.IsSelected.HasValue && orderBiddingDto.IsSelected.Value) + { + orderBiddingDto.IsSelectedName = "宸茬‘璁�"; + } + else + { + orderBiddingDto.IsSelectedName = "鏈‘璁�"; + } + + var user = await userRes.GetByIdAsync(orderBiddingDto.WorkerUserId); + if (user != null) + { + orderBiddingDto.WorkerName = user.name; + orderBiddingDto.WorkerAvatar = user.Avatar; + } + + } + } + + + orderDto.orderBidding = orderBiddingDtos; + + return orderDto; + } + + + + + + /// <summary> + /// 宸ヤ汉鎶曢�� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveBaoMing(BaoMingDto baoMingDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var userWorkerRes = new BaseRepository<UserWorker>(); + var userWorker = await userWorkerRes.GetFirstAsync(p=>p.UserId == userid && p.IsEn == true && p.IsDeleted == false); + if (userWorker == null || string.IsNullOrEmpty(userWorker.IdCode)) + { + throw Oops.Oh("璇峰厛瀹屾垚宸ヤ汉瀹炲悕璁よ瘉鎵嶈兘鎶曢�掞紒"); + } + + var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); + if (order == null || order.OrderStatus>0) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟姇閫掞紒"); + } + + bool res; + + var orderBidding = await orderBiddingRes.GetFirstAsync(x => x.OrderId == baoMingDto.OrderId && x.WorkerUserId == userid && x.IsDeleted == false && x.IsEn == true); + if (orderBidding != null) + { + throw Oops.Oh("宸茬粡鎶曢�掕繃浜嗭紒"); + } + else + { + + + var orderBiddings = await orderBiddingRes.CountAsync(x => x.OrderId == baoMingDto.OrderId && x.IsSelected == true && x.IsDeleted == false && x.IsEn == true); + if(orderBiddings>= order.WorderCount) + { + throw Oops.Oh("鎷涘伐浜烘暟宸茬粡婊′簡锛屼笉鑳芥姤鍚嶏紒"); + } + + + OrderBidding orderBidding1 = new OrderBidding(); + orderBidding1.WorkerUserId = userid; + orderBidding1.OrderId = baoMingDto.OrderId; + orderBidding1.IsSelected = false; + orderBidding1.UpDataBy = ITCode; + orderBidding1.UpDataTime = DateTime.Now; + orderBidding1.CreateBy = ITCode; + orderBidding1.CreateTime = DateTime.Now; + + res = await orderBiddingRes.InsertAsync(orderBidding1); + + } + + return res; + } + + /// <summary> + /// 杩涘叆鎵撳崱椤甸潰 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<OrderBiddingDetailDto> getDaka(BaoMingDto baoMingDto) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + OrderBiddingDetailDto orderBiddingDetailDto = null; + + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); + if (order == null || order.OrderStatus > 1) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟墦鍗★紒"); + } + var orderBidding = await orderBiddingRes.GetFirstAsync(x => x.OrderId == baoMingDto.OrderId && x.WorkerUserId == userid && x.IsDeleted == false && x.IsEn == true); + if (orderBidding == null || orderBidding.IsSelected != true) + { + throw Oops.Oh("娌℃湁纭鐨勬姇閫掞紒"); + } + var dateTime = DateTime.Now.Date; + var orderBiddingDetail = await orderBiddingDetailRes.GetFirstAsync(x => x.OrderBiddingId == orderBidding.Id && x.WorkDate == dateTime && x.IsDeleted == false && x.IsEn == true); + if (orderBiddingDetail != null ) + { + if(orderBiddingDetail.IsShenPi>0) + { + throw Oops.Oh("褰撳ぉ鐨勬墦鍗″凡缁忔彁浜わ紝涓嶈兘鎵撳崱锛�"); + } + orderBiddingDetailDto = _mapper.Map<OrderBiddingDetailDto>(orderBiddingDetail); + var orderBiddingDetailChecks = await OrderBiddingDetailCheckRes.GetListAsync(x => x.OrderBiddingDetailId == orderBiddingDetail.Id && x.IsDeleted == false && x.IsEn == true); + orderBiddingDetailDto.orderBiddingDetailCheck = _mapper.Map<List<OrderBiddingDetailCheckDto>>(orderBiddingDetailChecks); + } + + return orderBiddingDetailDto; + } + + /// <summary> + /// 宸ヤ汉鎵撳崱 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveDaka(DakaDto dakaDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + + var orderBidding = await orderBiddingRes.GetByIdAsync(dakaDto.OrderBiddingId); + if (orderBidding == null || orderBidding.IsDeleted ==true || orderBidding.IsEn == false || orderBidding.IsSelected !=true ) + { + throw Oops.Oh("璇ユ姇閫掔姸鎬佹棤娉曟墦鍗★紒"); + } + + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + if (order == null || order.OrderStatus > 1) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱锛�"); + } + bool res; + var dateTime = DateTime.Now.Date; + var orderBiddingDetail = await orderBiddingDetailRes.GetFirstAsync(x => x.OrderBiddingId == orderBidding.Id && x.WorkDate == dateTime && x.IsDeleted == false && x.IsEn == true); + if (orderBiddingDetail!=null && orderBiddingDetail.IsShenPi>0) + { + throw Oops.Oh("璇ユ墦鍗¤褰曞凡缁忓鎵癸紝涓嶈兘鎵撳崱锛�"); + } + if(orderBiddingDetail == null) + { + orderBiddingDetail = new OrderBiddingDetail(); + orderBiddingDetail.OrderBiddingId = orderBidding.Id; + orderBiddingDetail.WorkDate = dateTime; + orderBiddingDetail.IsShenPi = 0; + orderBiddingDetail.IsTiXian = false; + orderBiddingDetail.UpDataBy = ITCode; + orderBiddingDetail.UpDataTime = DateTime.Now; + orderBiddingDetail.CreateBy = ITCode; + orderBiddingDetail.CreateTime = DateTime.Now; + orderBiddingDetail.Id = await orderBiddingDetailRes.InsertReturnIdentityAsync(orderBiddingDetail); + } + //鎻掑叆鎵撳崱璁板綍 + var orderBiddingDetailCheck = new OrderBiddingDetailCheck(); + orderBiddingDetailCheck.OrderBiddingDetailId = orderBiddingDetail.Id; + orderBiddingDetailCheck.CheckPhoto = dakaDto.CheckPhoto; + orderBiddingDetailCheck.Checktime = DateTime.Now; + orderBiddingDetailCheck.UpDataBy = ITCode; + orderBiddingDetailCheck.UpDataTime = DateTime.Now; + orderBiddingDetailCheck.CreateBy = ITCode; + orderBiddingDetailCheck.CreateTime = DateTime.Now; + res = await OrderBiddingDetailCheckRes.InsertAsync(orderBiddingDetailCheck); + + + + return res; + } + + + + + + + /// <summary> + /// 鏌ヨ宸ヤ汉鐨勬墦鍗¤褰� + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDakaDto>> PostMyDakaListPage(OrderDakaPageSearch page) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + PageResult<OrderDakaDto> result = new PageResult<OrderDakaDto>(); + var orderRepository = new BaseRepository<Order>(); + + RefAsync<int> total = 0; + + + var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); + + var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail>((a, b ,c) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId , + JoinType.Inner, b.Id == c.OrderBiddingId + )) + .Where((a, b, c) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false + && b.IsSelected == true && b.WorkerUserId == userid) + .WhereIF(page.WordDate.HasValue, (a, b, c) => (c.WorkDate == page.WordDate)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == true, (a, b, c) => (c.IsShenPi == 2)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == false, (a, b, c) => (c.IsShenPi < 2)) + .OrderByDescending((a, b, c) => c.WorkDate) + .Select((a, b, c) => new OrderDakaDto + { + OrderBiddingDetailId = c.Id, + OrderName = a.OrderName, + WorkDate = c.WorkDate, + WorkTime = c.WorkTime, + WorkerType = a.WorkerType, + WorkPrice = a.WorkPrice, + TodaySalary = c.TodaySalary, + IsShenPi = c.IsShenPi, + WorkCount = c.WorkCount, + + }) + + .ToPageListAsync(page.PageIndex, page.PageSize, total); + + if (data != null && data.Count > 0) + { + foreach (var dakaDto in data) + { + var orderBiddingDetailChecks = await orderBiddingDetailCheckRepository.GetListAsync(x => x.OrderBiddingDetailId == dakaDto.OrderBiddingDetailId && x.IsEn == true && x.IsDeleted == false); + string DakaMingxi = ""; + int hours = 0; + int minutes = 0; + for (int i = 0; i < orderBiddingDetailChecks.Count; i++) + { + + if (i != orderBiddingDetailChecks.Count - 1) + { + DakaMingxi += orderBiddingDetailChecks[i].Checktime.Value.ToString("HH:mm") + "-"; + } + else + { + DakaMingxi += orderBiddingDetailChecks[i].Checktime.Value.ToString("HH:mm"); + } + + if (i == 1 || i == 3 || i == 5 || i == 7 || i == 9 || i == 11 || i == 13 || i == 15 || i == 17 || i == 19 ) + { + var timeDifference = orderBiddingDetailChecks[i].Checktime.Value - orderBiddingDetailChecks[i - 1].Checktime.Value; + hours += timeDifference.Hours; + minutes += timeDifference.Minutes; + + } + } + //濡傛灉褰撳ぉ杩樻病鏈夊~鍐欑敵璇凤紝鍒欒绠楀伐浣滄椂闂村拰宸ヨ祫 + if(dakaDto.IsShenPi == 0) + { + dakaDto.WorkTime = hours+(minutes/60); + if(dakaDto.WorkerType == 0) + { + dakaDto.TodaySalary = dakaDto.WorkTime * dakaDto.WorkPrice; + } + else + { + var WorkCount = dakaDto.WorkCount ?? 0; + dakaDto.TodaySalary = WorkCount * dakaDto.WorkPrice; + } + + } + + switch (dakaDto.IsShenPi) + { + case (int)IsShenPis.baocun: dakaDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.tijiao: dakaDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.yishenpi: dakaDto.IsShenPiName = "宸茬粨绠�"; break; + default: break; + } + + switch (dakaDto.WorkerType) + { + case (int)WorkerTypes.time: dakaDto.WorkerTypeName = "璁℃椂"; break; + case (int)WorkerTypes.count: dakaDto.WorkerTypeName = "璁′环"; break; + default: break; + } + + + + + + dakaDto.DakaMingxi = DakaMingxi; + + } + + } + result.Items = data; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + + + + /// <summary> + /// 杩涘叆濉啓/瀹℃壒宸ヤ环椤甸潰 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<OrderDakaMingxiDto> getDakaDetail(DakaDetailDto dakaDetailDto) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + OrderDakaMingxiDto orderDakaMingxiDto = new OrderDakaMingxiDto(); ; + + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + var userRes = new BaseRepository<User>(); + + + var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDetailDto.OrderBiddingDetailId); + var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + + var orderBiddingDetailChecks = await OrderBiddingDetailCheckRes.GetListAsync(x => x.OrderBiddingDetailId == orderBiddingDetail.Id && x.IsEn == true && x.IsDeleted == false); + orderDakaMingxiDto.orderBiddingDetailCheck = _mapper.Map<List<OrderBiddingDetailCheckDto>>(orderBiddingDetailChecks); + + orderDakaMingxiDto.OrderBiddingDetailId = orderBiddingDetail.Id; + orderDakaMingxiDto.OrderName = order.OrderName; + orderDakaMingxiDto.WorkDate = orderBiddingDetail.WorkDate; + orderDakaMingxiDto.WorkTime = orderBiddingDetail.WorkTime; + orderDakaMingxiDto.WorkerType = order.WorkerType; + orderDakaMingxiDto.WorkPrice = order.WorkPrice; + orderDakaMingxiDto.TodaySalary = orderBiddingDetail.TodaySalary; + orderDakaMingxiDto.IsShenPi = orderBiddingDetail.IsShenPi; + orderDakaMingxiDto.WorkCount = orderBiddingDetail.WorkCount; + orderDakaMingxiDto.WorkerUserId = orderBidding.WorkerUserId; + var user = await userRes.GetByIdAsync(orderDakaMingxiDto.WorkerUserId); + if (user != null) + { + orderDakaMingxiDto.WorkerUserName = user.name; + orderDakaMingxiDto.WorkerUserAvatar = user.Avatar; + } + + + + switch (orderDakaMingxiDto.IsShenPi) + { + case (int)IsShenPis.baocun: orderDakaMingxiDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.tijiao: orderDakaMingxiDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.yishenpi: orderDakaMingxiDto.IsShenPiName = "宸茬粨绠�"; break; + default: break; + } + + switch (orderDakaMingxiDto.WorkerType) + { + case (int)WorkerTypes.time: orderDakaMingxiDto.WorkerTypeName = "璁℃椂"; break; + case (int)WorkerTypes.count: orderDakaMingxiDto.WorkerTypeName = "璁′环"; break; + default: break; + } + + if (orderDakaMingxiDto.IsShenPi == 0) + { + int hours = 0; + int minutes = 0; + + for (int i = 0; i < orderBiddingDetailChecks.Count; i++) + { + + if (i == 1 || i == 3 || i == 5 || i == 7 || i == 9 || i == 11 || i == 13 || i == 15 || i == 17 || i == 19) + { + var timeDifference = orderBiddingDetailChecks[i].Checktime.Value - orderBiddingDetailChecks[i - 1].Checktime.Value; + hours += timeDifference.Hours; + minutes += timeDifference.Minutes; + + } + } + + orderDakaMingxiDto.WorkTime = hours + (minutes / 60); + if (orderDakaMingxiDto.WorkerType == 0) + { + orderDakaMingxiDto.TodaySalary = orderDakaMingxiDto.WorkTime * orderDakaMingxiDto.WorkPrice; + } + else + { + var WorkCount = orderDakaMingxiDto.WorkCount ?? 0; + orderDakaMingxiDto.TodaySalary = WorkCount * orderDakaMingxiDto.WorkPrice; + } + } + + + + + return orderDakaMingxiDto; + } + + + + /// <summary> + /// 宸ヤ汉纭褰撳ぉ鎵撳崱璇︽儏 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveDakaDetail(DakaQuerenDetailDto dakaDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + //var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + + var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDto.OrderBiddingDetailId); + var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + + if (orderBidding == null || orderBidding.IsDeleted == true || orderBidding.IsEn == false || orderBidding.IsSelected != true) + { + throw Oops.Oh("璇ユ姇閫掔姸鎬佹棤娉曟墦鍗$‘璁わ紒"); + } + if (order == null || order.OrderStatus > 1) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); + } + if (orderBiddingDetail == null || orderBiddingDetail.IsShenPi > 1) + { + throw Oops.Oh("璇ユ墦鍗$姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); + } + + + orderBiddingDetail.WorkTime = dakaDto.WorkTime; + orderBiddingDetail.WorkCount = dakaDto.WorkCount; + orderBiddingDetail.TodaySalary = dakaDto.TodaySalary; + orderBiddingDetail.IsShenPi = 1; + orderBiddingDetail.UpDataBy = ITCode; + orderBiddingDetail.UpDataTime = DateTime.Now; + //orderBiddingDetail.CreateBy = ITCode; + //orderBiddingDetail.CreateTime = DateTime.Now; + var res = await orderBiddingDetailRes.UpdateAsync(orderBiddingDetail); + + + + + return res; + } + + + + } +} diff --git a/cylsg/cylsg.Application/Users/Dtos/Mapper.cs b/cylsg/cylsg.Application/Users/Dtos/Mapper.cs new file mode 100644 index 0000000..a905df2 --- /dev/null +++ b/cylsg/cylsg.Application/Users/Dtos/Mapper.cs @@ -0,0 +1,24 @@ +锘縰sing cylsg.Model.UserModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Application.Users.Dtos +{ + public class Mapper : IRegister + { + public void Register(TypeAdapterConfig config) + { + config.ForType<User, UserDto>(); + config.ForType<UserDto, User>(); + + config.ForType<UserCompany, UserCompanyDto>(); + config.ForType<UserCompanyDto, UserCompany>(); + + config.ForType<UserWorker, UserWorkerDto>(); + config.ForType<UserWorkerDto, UserWorker>(); + } + } +} diff --git a/cylsg/cylsg.Application/Users/Dtos/UserDto.cs b/cylsg/cylsg.Application/Users/Dtos/UserDto.cs new file mode 100644 index 0000000..bbe62f6 --- /dev/null +++ b/cylsg/cylsg.Application/Users/Dtos/UserDto.cs @@ -0,0 +1,193 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Application.Users.Dtos +{ + public class UserDto + { + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public int Id { get; set; } + + /// <summary> + /// 鐢佃瘽 + /// </summary> + public string Phone { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + public string name { get; set; } + /// <summary> + /// 鐢佃瘽鍙风爜 + /// </summary> + public string ItCode { get; set; } + + /// <summary> + /// 鏄电О + /// </summary> + public string? Nickname { get; set; } + + + /// <summary> + /// 瀵嗙爜 + /// </summary> + public string? PassWord { get; set; } + + /// <summary> + /// 澶村儚鍦板潃 + /// </summary> + public string? Avatar { get; set; } + /// <summary> + /// 寰俊WxOpenId + /// </summary> + public string? WxOpenId { get; set; } + + /// <summary> + /// 鐢ㄦ埛宸ヤ汉淇℃伅 + /// </summary> + public UserWorkerDto userWorker { get; set; } + + /// <summary> + /// 鐢ㄦ埛鍏徃淇℃伅 + /// </summary> + public UserCompanyDto userCompany { get; set; } + + + } + + public class UserWorkerDto + { + /// <summary> + /// 鐢ㄦ埛宸ヤ汉Id + /// </summary> + public int Id { get; set; } + + /// <summary> + /// 鐢ㄦ埛id + /// </summary> + public int UserId { get; set; } + + /// <summary> + /// 韬唤璇佹闈㈣矾寰� + /// </summary> + public string IdCardFace { get; set; } + + /// <summary> + /// 韬唤璇佸弽闈㈣矾寰� + /// </summary> + public string IdCardBack { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string name { get; set; } + + /// <summary> + /// 鐢佃瘽鍙风爜 + /// </summary> + public string Phone { get; set; } + + /// <summary> + /// 韬唤璇佸彿 + /// </summary> + public string IdCode { get; set; } + + /// <summary> + /// 鑱旂郴鍦板潃 + /// </summary> + public string Address { get; set; } + + /// <summary> + /// 绠�鍘嗘弿杩� + /// </summary> + public string Resume { get; set; } + + + /// <summary> + /// 鎻愮幇鎬婚 + /// </summary> + public decimal? TiXianZonge { get; set; } + + + /// <summary> + /// 宸叉彁鐜伴噾棰� + /// </summary> + public decimal? YiTiXianJine { get; set; } + } + + public class UserCompanyDto + { + /// <summary> + /// 鐢ㄦ埛鍏徃Id + /// </summary> + public int Id { get; set; } + + /// <summary> + /// 鐢ㄦ埛id + /// </summary> + public int UserId { get; set; } + + /// <summary> + /// 钀ヤ笟鎵х収璺緞 + /// </summary> + public string BusinessLicense { get; set; } + + + + /// <summary> + /// 浼佷笟鍚嶇О + /// </summary> + public string Suppliername { get; set; } + + /// <summary> + /// 娉ㄥ唽鏃堕棿 + /// </summary> + public DateTime? Regtime { get; set; } + + /// <summary> + /// 鑱旂郴鍦板潃 + /// </summary> + public string Address { get; set; } + + /// <summary> + /// 浼佷笟娉ㄥ唽鍙� + /// </summary> + public string Suppliercode { get; set; } + + + /// <summary> + /// 鑱旂郴浜� + /// </summary> + public string Contact { get; set; } + + + /// <summary> + /// 鑱旂郴鐢佃瘽 + /// </summary> + public string Phone { get; set; } + + + + /// <summary> + /// 鍏徃绠�浠� + /// </summary> + public string Resume { get; set; } + + + /// <summary> + /// 鍏呭�间綑棰� + /// </summary> + public decimal? ChongZhiYue { get; set; } + + /// <summary> + /// 鏄惁鍙互鍏呭�硷紝宸ヤ汉鎻愮幇 + /// </summary> + public bool? IsTiXian { get; set; } + + } +} diff --git a/cylsg/cylsg.Application/Users/UserAppService.cs b/cylsg/cylsg.Application/Users/UserAppService.cs new file mode 100644 index 0000000..baf8708 --- /dev/null +++ b/cylsg/cylsg.Application/Users/UserAppService.cs @@ -0,0 +1,206 @@ +锘縰sing cylsg.Core.Attributes; +using cylsg.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using cylsg.Application.Users.Dtos; +using cylsg.Model.UserModel; +using System.Security.Claims; +using System.Runtime.Intrinsics.Arm; +using MapsterMapper; + +namespace cylsg.Application.Users +{ + /// <summary> + /// 鐢ㄦ埛鎺ュ彛 + /// </summary> + [Authorize] + public class UserAppService : IDynamicApiController + { + private readonly ISystemService _systemService; + private ISqlSugarClient _sqlSugarClient; + private IMapper _mapper; + public UserAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper) + { + _systemService = systemService; + _sqlSugarClient = sqlSugarClient; + _mapper = mapper; + } + + + + /// <summary> + /// 鏌ヨ褰撳墠鐢ㄦ埛 + /// </summary> + /// <returns></returns> + public async Task<UserDto> getUser() + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + UserDto userDto = new UserDto(); + var userRes = new BaseRepository<User>(); + var userWorkerRes = new BaseRepository<UserWorker>(); + var userCompanyRes = new BaseRepository<UserCompany>(); + var user = await userRes.GetByIdAsync(userid); + userDto = _mapper.Map<UserDto>(user); + + var userWorker = await userWorkerRes.GetFirstAsync(p=>p.UserId== userid); + userDto.userWorker = _mapper.Map<UserWorkerDto>(userWorker); + + var userCompany = await userCompanyRes.GetFirstAsync(p => p.UserId == userid); + userDto.userCompany = _mapper.Map<UserCompanyDto>(userCompany); + + + + return userDto; + } + + + /// <summary> + /// 淇濆瓨鐢ㄦ埛宸ヤ汉淇℃伅 + /// </summary> + /// <returns></returns> + public async Task<bool> saveUserWorker(UserWorkerDto userWorkerDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var userWorkerRes = new BaseRepository<UserWorker>(); + bool res; + if (userWorkerDto.Id > 0) + { + var userWorker1 = await userWorkerRes.GetByIdAsync(userWorkerDto.Id); + userWorker1.IdCardBack = userWorkerDto.IdCardBack; + userWorker1.IdCardFace = userWorkerDto.IdCardFace; + userWorker1.name = userWorkerDto.name; + userWorker1.Phone = userWorkerDto.Phone; + userWorker1.IdCode = userWorkerDto.IdCode; + userWorker1.Address = userWorkerDto.Address; + userWorker1.Resume = userWorkerDto.Resume; + + userWorker1.UpDataBy = ITCode; + userWorker1.UpDataTime = DateTime.Now; + res = await userWorkerRes.UpdateAsync(userWorker1); + + + } + else + { + var userWorker = _mapper.Map<UserWorker>(userWorkerDto); + userWorker.UpDataBy = ITCode; + userWorker.UpDataTime = DateTime.Now; + userWorker.CreateBy = ITCode; + userWorker.CreateTime = DateTime.Now; + userWorker.UserId = userid; + res = await userWorkerRes.InsertAsync(userWorker); + } + + + + + + + + return res; + } + + + + + /// <summary> + /// 淇濆瓨鐢ㄦ埛鍏徃淇℃伅 + /// </summary> + /// <returns></returns> + public async Task<bool> saveUserCompany(UserCompanyDto userCompanyDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var userCompanyRes = new BaseRepository<UserCompany>(); + bool res; + if (userCompanyDto.Id > 0) + { + var userCompany1 = await userCompanyRes.GetByIdAsync(userCompanyDto.Id); + userCompany1.BusinessLicense = userCompanyDto.BusinessLicense; + userCompany1.Suppliername = userCompanyDto.Suppliername; + userCompany1.Regtime = userCompanyDto.Regtime; + userCompany1.Address = userCompanyDto.Address; + userCompany1.Suppliercode = userCompanyDto.Suppliercode; + userCompany1.Contact = userCompanyDto.Contact; + userCompany1.Phone = userCompanyDto.Phone; + userCompany1.Resume = userCompanyDto.Resume; + + + userCompany1.UpDataBy = ITCode; + userCompany1.UpDataTime = DateTime.Now; + res = await userCompanyRes.UpdateAsync(userCompany1); + + + } + else + { + var userCompany = _mapper.Map<UserCompany>(userCompanyDto); + userCompany.UpDataBy = ITCode; + userCompany.UpDataTime = DateTime.Now; + userCompany.CreateBy = ITCode; + userCompany.CreateTime = DateTime.Now; + userCompany.UserId = userid; + res = await userCompanyRes.InsertAsync(userCompany); + } + + + + + + + + return res; + } + + + + /// <summary> + /// 鏍规嵁Id鏌ヨ鐢ㄦ埛 + /// </summary> + /// <returns></returns> + public async Task<UserDto> getUser(int userid) + { + UserDto userDto = new UserDto(); + var userRes = new BaseRepository<User>(); + var userWorkerRes = new BaseRepository<UserWorker>(); + var userCompanyRes = new BaseRepository<UserCompany>(); + var user = await userRes.GetByIdAsync(userid); + userDto = _mapper.Map<UserDto>(user); + + var userWorker = await userWorkerRes.GetFirstAsync(p => p.UserId == userid); + userDto.userWorker = _mapper.Map<UserWorkerDto>(userWorker); + + var userCompany = await userCompanyRes.GetFirstAsync(p => p.UserId == userid); + userDto.userCompany = _mapper.Map<UserCompanyDto>(userCompany); + + + + return userDto; + } + + } +} diff --git a/cylsg/cylsg.Model/OrderModel/Order.cs b/cylsg/cylsg.Model/OrderModel/Order.cs index b76a4e7..bad6fe3 100644 --- a/cylsg/cylsg.Model/OrderModel/Order.cs +++ b/cylsg/cylsg.Model/OrderModel/Order.cs @@ -80,7 +80,7 @@ /// 宸ヤ綔鏂瑰紡 /// </summary> [SugarColumn(ColumnDescription = "宸ヤ綔鏂瑰紡", IsNullable = true)] - public WorkerTypes? WorkerType { get; set; } + public int? WorkerType { get; set; } /// <summary> @@ -94,7 +94,7 @@ /// 鎷涘伐鐘舵�� /// </summary> [SugarColumn(ColumnDescription = "鎷涘伐鐘舵��", IsNullable = true)] - public OrderStatuses? OrderStatus { get; set; } + public int? OrderStatus { get; set; } } diff --git a/cylsg/cylsg.Model/OrderModel/OrderBidding.cs b/cylsg/cylsg.Model/OrderModel/OrderBidding.cs index 13602e6..39ef9c3 100644 --- a/cylsg/cylsg.Model/OrderModel/OrderBidding.cs +++ b/cylsg/cylsg.Model/OrderModel/OrderBidding.cs @@ -29,6 +29,12 @@ [SugarColumn(ColumnDescription = "鐢ㄦ埛id")] public int WorkerUserId { get; set; } + /// <summary> + /// 鎷涘伐id + /// </summary> + [SugarColumn(ColumnDescription = "鎷涘伐id")] + public int OrderId { get; set; } + /// <summary> /// 鏄惁閫変腑 diff --git a/cylsg/cylsg.Model/OrderModel/OrderBiddingDetail.cs b/cylsg/cylsg.Model/OrderModel/OrderBiddingDetail.cs index 28d48b4..4a243a2 100644 --- a/cylsg/cylsg.Model/OrderModel/OrderBiddingDetail.cs +++ b/cylsg/cylsg.Model/OrderModel/OrderBiddingDetail.cs @@ -57,7 +57,7 @@ /// 瀹℃壒鐘舵�� /// </summary> [SugarColumn(ColumnDescription = "瀹℃壒鐘舵��", IsNullable = true)] - public IsShenPis? IsShenPi { get; set; } + public int? IsShenPi { get; set; } /// <summary> /// 瀹℃壒鏃堕棿 @@ -87,13 +87,17 @@ public enum IsShenPis { /// <summary> - ///璁℃椂 + ///淇濆瓨 /// </summary> - weishenpi = 0, + baocun = 0, /// <summary> - ///璁′欢 + ///鎻愪氦 /// </summary> - yishenpi = 1 + tijiao = 1, + /// <summary> + ///宸插鎵� + /// </summary> + yishenpi = 2 } } diff --git a/cylsg/cylsg.Model/UserModel/UserTiXianDetail.cs b/cylsg/cylsg.Model/UserModel/UserTiXianDetail.cs new file mode 100644 index 0000000..f867e3f --- /dev/null +++ b/cylsg/cylsg.Model/UserModel/UserTiXianDetail.cs @@ -0,0 +1,72 @@ +锘縰sing cylsg.Core; +using cylsg.Core.Attributes; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace cylsg.Model.UserModel +{ + /// <summary> + /// 鐢ㄦ埛宸ヤ汉鎻愮幇鏄庣粏琛� + /// </summary> + [Description("鐢ㄦ埛宸ヤ汉鎻愮幇鏄庣粏琛�")] + [CoderFirst] + public class UserTiXianDetail : BaseModel + { + /// <summary> + /// 鎻愮幇鏄庣粏Id + /// </summary> + [SugarColumn(ColumnDescription = "鎻愮幇鏄庣粏Id", IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + + /// <summary> + /// 鐢ㄦ埛id + /// </summary> + [SugarColumn(ColumnDescription = "鐢ㄦ埛id")] + public int UserId { get; set; } + + + /// <summary> + /// 閲戦 + /// </summary> + [SugarColumn(ColumnDescription = "閲戦", Length = 18, DecimalDigits = 2, IsNullable = true)] + public decimal? YiTiXianJine { get; set; } + + + /// <summary> + /// 鏀嚭杩樻槸鏀跺叆 + /// </summary> + [SugarColumn(ColumnDescription = "鏀嚭杩樻槸鏀跺叆")] + public int ZhiChuShouRu { get; set; } + + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnDescription = "澶囨敞", ColumnDataType = "nvarchar(200)", IsNullable = true)] + public string Remark { get; set; } + + + } + + /// <summary> + /// 鎸囧嚭杩樻槸鏀跺叆 + /// </summary> + public enum ZhiChuShouRus + { + /// <summary> + ///鏀嚭 + /// </summary> + zhichu = 0, + /// <summary> + ///鏀跺叆 + /// </summary> + shouru = 1 + } + +} diff --git a/cylsg/cylsg.Model/UserModel/UserWorker.cs b/cylsg/cylsg.Model/UserModel/UserWorker.cs index 4a3235d..22f8da9 100644 --- a/cylsg/cylsg.Model/UserModel/UserWorker.cs +++ b/cylsg/cylsg.Model/UserModel/UserWorker.cs @@ -73,10 +73,17 @@ public string Resume { get; set; } /// <summary> - /// 鎻愮幇浣欓 + /// 鎻愮幇鎬婚 /// </summary> - [SugarColumn(ColumnDescription = "鎻愮幇浣欓", Length = 18, DecimalDigits = 2, IsNullable = true)] - public decimal? TiXianYue { get; set; } + [SugarColumn(ColumnDescription = "鎻愮幇鎬婚", Length = 18, DecimalDigits = 2, IsNullable = true)] + public decimal? TiXianZonge { get; set; } + + + /// <summary> + /// 宸叉彁鐜伴噾棰� + /// </summary> + [SugarColumn(ColumnDescription = "宸叉彁鐜伴噾棰�", Length = 18, DecimalDigits = 2, IsNullable = true)] + public decimal? YiTiXianJine { get; set; } } } -- Gitblit v1.9.1