diff --git a/BBWYB.Server.API/Controllers/BaseApiController.cs b/BBWYB.Server.API/Controllers/BaseApiController.cs index bfb1ca8..27be7be 100644 --- a/BBWYB.Server.API/Controllers/BaseApiController.cs +++ b/BBWYB.Server.API/Controllers/BaseApiController.cs @@ -1,5 +1,7 @@ using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; + namespace BBWYB.Server.API.Controllers { [Produces("application/json")] @@ -13,5 +15,16 @@ namespace BBWYB.Server.API.Controllers { this.httpContextAccessor = httpContextAccessor; } + + protected string GetUserId() + { + return httpContextAccessor?.HttpContext?.User.Claims.Where(x => x.Type == "userId")?.FirstOrDefault()?.Value; + } + + protected string GetToken() + { + httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token); + return token; + } } } diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index caccde6..2f4d37f 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -68,10 +68,8 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public void CancelOrder([FromBody] CancelOrderRequest request) { - if (!httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token)) - throw new Exception("未获取到token"); - - orderBusiness.CancelOrder(request, token.ToString()); + var token = GetToken(); + orderBusiness.CancelOrder(request, token); } /// diff --git a/BBWYB.Server.API/Controllers/OrderMessageController.cs b/BBWYB.Server.API/Controllers/OrderMessageController.cs new file mode 100644 index 0000000..6175eec --- /dev/null +++ b/BBWYB.Server.API/Controllers/OrderMessageController.cs @@ -0,0 +1,32 @@ +using BBWYB.Server.Business; +using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + public class OrderMessageController : BaseApiController + { + private OrderMessageBusiness orderMessageBusiness; + + public OrderMessageController(IHttpContextAccessor httpContextAccessor, OrderMessageBusiness orderMessageBusiness) : base(httpContextAccessor) + { + this.orderMessageBusiness = orderMessageBusiness; + } + + [HttpPost] + public void AddOrderMessage([FromBody] AddOrderMessageRequest request) + { + var token = GetToken(); + orderMessageBusiness.AddOrderMessage(request, token); + } + + [HttpGet("{orderId}")] + public IList GetOrderMessageList([FromRoute] string orderId) + { + return orderMessageBusiness.GetOrderMessageList(orderId); + } + } +} diff --git a/BBWYB.Server.Business/MDS/MDSBusiness.cs b/BBWYB.Server.Business/MDS/MDSBusiness.cs new file mode 100644 index 0000000..e442f62 --- /dev/null +++ b/BBWYB.Server.Business/MDS/MDSBusiness.cs @@ -0,0 +1,32 @@ +using BBWYB.Common.Http; +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using BBWYB.Server.Model.Dto; +using Newtonsoft.Json; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business +{ + public class MDSBusiness : BaseBusiness, IDenpendency + { + private RestApiService restApiService; + public MDSBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) + { + this.restApiService = restApiService; + } + + public UserInfoResponse GetUserInfo(string token) + { + var httpResult = restApiService.SendRequest("http://mdsapi.qiyue666.com/", "TaskList/User/GetUserInfo", null, new Dictionary() + { + { "Authorization",token} + }, HttpMethod.Get); + if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new BusinessException($"获取用户信息失败 {httpResult.Content}"); + var response = JsonConvert.DeserializeObject>(httpResult.Content); + if (!response.Success) + throw new BusinessException($"获取用户信息失败 {response.Msg}"); + return response.Data; + } + } +} diff --git a/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs new file mode 100644 index 0000000..4542934 --- /dev/null +++ b/BBWYB.Server.Business/Order/Message/OrderMessageBusiness.cs @@ -0,0 +1,47 @@ +using BBWYB.Common.Log; +using BBWYB.Common.Models; +using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; +using Yitter.IdGenerator; + +namespace BBWYB.Server.Business +{ + public class OrderMessageBusiness : BaseBusiness, IDenpendency + { + private MDSBusiness mdsBusiness; + + public OrderMessageBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, MDSBusiness mdsBusiness) : base(fsql, nLogManager, idGenerator) + { + this.mdsBusiness = mdsBusiness; + } + + public void AddOrderMessage(AddOrderMessageRequest request, string token) + { + if (string.IsNullOrEmpty(request.Message) || + string.IsNullOrEmpty(request.OrderId) || + string.IsNullOrEmpty(request.OrderSn) || + request.ShopId == null || + request.ShopId == 0) + throw new BusinessException("留言信息不完整"); + + var user = mdsBusiness.GetUserInfo(token); + var om = new OrderMessage() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + CreatorId = user.Id, + CreatorName = user.UserName, + Message = request.Message, + OrderId = request.OrderId, + OrderSn = request.OrderSn, + ShopId = request.ShopId + }; + fsql.Insert(om).ExecuteAffrows(); + } + + public IList GetOrderMessageList(string orderId) + { + return fsql.Select().Where(om => om.OrderId == orderId).ToList(); + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 4b64c6a..a304858 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -257,6 +257,12 @@ namespace BBWYB.Server.Business } #endregion + #region 查询订单留言 + var orderMessageList = fsql.Select().Where(om => orderIdList.Contains(om.OrderId)).ToList(); + foreach (var order in orderList) + order.OrderMessageList = orderMessageList.Where(om => om.OrderId == order.Id).ToList(); + #endregion + #region 处理订单成本明细 var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); foreach (var order in orderList) @@ -421,6 +427,8 @@ namespace BBWYB.Server.Business } #endregion + + } return new OrderListResponse() { diff --git a/BBWYB.Server.Model/Db/Order/OrderMessage.cs b/BBWYB.Server.Model/Db/Order/OrderMessage.cs new file mode 100644 index 0000000..61ecf9f --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/OrderMessage.cs @@ -0,0 +1,35 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + [Table(Name = "ordermessage", DisableSyncStructure = true)] + public partial class OrderMessage + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + [Column(StringLength = 50)] + public string CreatorId { get; set; } + + [Column(StringLength = 50)] + public string CreatorName { get; set; } + + [Column(StringLength = 500)] + public string Message { get; set; } + + [Column(StringLength = 50)] + public string OrderId { get; set; } + + [Column(StringLength = 50)] + public string OrderSn { get; set; } + + public long? ShopId { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs new file mode 100644 index 0000000..33663da --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/AddOrderMessageRequest.cs @@ -0,0 +1,15 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AddOrderMessageRequest + { + public DateTime? CreateTime { get; set; } + + public string Message { get; set; } + + public string OrderId { get; set; } + + public string OrderSn { get; set; } + + public long? ShopId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs new file mode 100644 index 0000000..75600c0 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/MDS/UserInfoResponse.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class UserInfoResponse + { + public string Id { get; set; } + + public string UserName { get; set; } + + //其余字段需要用到的时候再扩充 + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs new file mode 100644 index 0000000..b2236ca --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderMessageResponse.cs @@ -0,0 +1,8 @@ +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto +{ + public class OrderMessageResponse : OrderMessage + { + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index 2655e4f..b4b50ff 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -154,6 +154,8 @@ public Enums.IntoStoreType? IntoStoreType { get; set; } public Enums.AutoEditOrderPriceType? IsAutoEditOrderPrice { get; set; } + + public IList OrderMessageList { get; set; } } public class OrderListResponse