OrderService.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.Threading.Tasks;
  2. using GxPress.Common.WechatPay;
  3. using GxPress.Repository.Interface.Order;
  4. using GxPress.Service.Interface.Order;
  5. using GxPress.Repository.Interface.Media;
  6. using GxPress.Repository.Interface;
  7. using System;
  8. namespace GxPress.Service.Implement.Order
  9. {
  10. public class OrderService : IOrderService
  11. {
  12. private readonly IOrderRepository orderRepository;
  13. private readonly IMediaRepository mediaRepository;
  14. private readonly IUserRepository userRepository;
  15. public OrderService(IOrderRepository orderRepository, IMediaRepository mediaRepository, IUserRepository userRepository)
  16. {
  17. this.orderRepository = orderRepository;
  18. this.mediaRepository = mediaRepository;
  19. this.userRepository = userRepository;
  20. }
  21. /// <summary>
  22. /// 创建微信订单
  23. /// </summary>
  24. /// <param name="data"></param>
  25. /// <returns></returns>
  26. public async Task<bool> InsertWxOrderAsync(WxPayData data)
  27. {
  28. var order = new Entity.Order.Order();
  29. var attach = data.GetValue("attach").ToString();
  30. if (attach.Split('_').Length > 0)
  31. {
  32. //获取medio属性
  33. var media = await mediaRepository.GetAsync(attach.Split('_')[0]);
  34. //获取用户数据
  35. var user = await userRepository.GetAsync(int.Parse(attach.Split('_')[1]));
  36. order.OutTradeNo = data.GetValue("out_trade_no").ToString();
  37. order.OrderType = 1;
  38. order.IsRefund = false;
  39. order.IsSuccess = true;
  40. order.IsVip = user.IsVip;
  41. order.MediaId = media.Id;
  42. order.Explain=media.Title;
  43. order.Name = user.Name;
  44. order.OrderNumber = DateTime.Now.Ticks.ToString();
  45. order.Price =Decimal.Parse(data.GetValue("total_fee").ToString())/100;
  46. order.TransactionId = data.GetValue("transaction_id").ToString();
  47. order.UserId = user.Id;
  48. order.PayWay = 1;
  49. return await orderRepository.InsertAsync(order) > 0;
  50. }
  51. return false;
  52. }
  53. }
  54. }