/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 2021/7/10 22:41:46 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CoreCms.Net.Configuration; using CoreCms.Net.IServices; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities; using InitQ.Abstractions; using InitQ.Attributes; using Newtonsoft.Json; namespace CoreCms.Net.RedisMQ { /// /// 订单退款处理 /// public class RefundSubscribe : IRedisSubscribe { private readonly ICoreCmsOrderServices _orderServices; private readonly ICoreCmsBillRefundServices _billRefundServices; private readonly ISysTaskLogServices _taskLogServices; public RefundSubscribe(ICoreCmsOrderServices orderServices, ICoreCmsBillRefundServices billRefundServices, ISysTaskLogServices taskLogServices) { _orderServices = orderServices; _billRefundServices = billRefundServices; _taskLogServices = taskLogServices; } /// /// 订单退款处理 /// /// /// [Subscribe(RedisMessageQueueKey.RefundSubscribeQueue)] private async Task RefundSubscribeQueue(string msg) { try { var refundInfo = JsonConvert.DeserializeObject(msg); //去退款 var toRefundResult = await _billRefundServices.ToRefund(refundInfo.refundId, (int)GlobalEnumVars.BillRefundStatus.STATUS_REFUND); //插入退款日志 var log = new SysTaskLog { createTime = DateTime.Now, isSuccess = toRefundResult.status, name = "定时任务取消拼团订单退款日志", parameters = JsonConvert.SerializeObject(toRefundResult) }; await _taskLogServices.InsertAsync(log); //更新订单状态为已退款已完成 await _orderServices.UpdateAsync(p => new CoreCmsOrder() { payStatus = (int)GlobalEnumVars.OrderPayStatus.Refunded, status = (int)GlobalEnumVars.OrderStatus.Complete }, p => p.orderId == refundInfo.sourceId); NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单退款处理-成功", msg); } catch (Exception ex) { NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "订单退款处理-异常", msg, ex); throw; } await Task.CompletedTask; } } }