public void CommodityDeductionTest() { using (var client = new TuboAllianceClient()) { var model = new CommodityDeductionRequest(); model.OrderId = "123502862"; var result = client.CommodityDeductionAsync(model); Assert.IsNotNull(result.Result); } }
/// <summary> /// 订单商品扣佣接口 /// </summary> /// <param name="request"></param> /// <returns></returns> public static async Task <CommodityDeductionResponse> CommodityDeductionManager(CommodityDeductionRequest request) { var resultModule = new CommodityDeductionResponse(); resultModule.Success = true; try { var orderId = string.IsNullOrWhiteSpace(request.OrderId) ? 0 : Convert.ToInt32(request.OrderId); //红冲订单关联信息 var orderRelationShipOnly = await GetOrderRelationShipOnly(orderId); if (orderRelationShipOnly?.Count > 0) { //红冲订单的父订单ID var redRushParentOrderId = orderRelationShipOnly.Where(a => a.RelationshipType == Convert.ToInt32(OrderRelationshipTypeEnum.HCOrder)).Select(a => a.ParentOrderId).FirstOrDefault(); //获取拆单订单号集合 var relatedSplitOrderIds = await GetRelatedSplitOrderIDs(redRushParentOrderId); //拆单是需要获取主订单号ID,关联订单集合最小的一位是主订单ID var mainOrderId = relatedSplitOrderIds.OrderBy(splitOrderId => splitOrderId).FirstOrDefault() + ""; //下单商品记录集合 var orderItemRecordList = await DalTuboAlliance.GetOrderItemRecordListDal(mainOrderId); //红冲订单主订单再下单记录表存在 if (orderItemRecordList?.Count > 0) { var orderModel = FetchOrderInfoByID(orderId).Result; if (orderModel.OrderType == "5红冲订单") { await orderModel.OrderListModel.ForEachAsync(async orderItem => { //去除套餐的子产品与赠品 if (orderItem.PayPrice < 0 && (orderItem.ParentId == null || orderItem.ParentId == 0)) { //当前订单的PID在父订单商品集合中查询 var orderItemRecord = orderItemRecordList?.Where(p => p.PID == orderItem.Pid).FirstOrDefault(); if (orderItemRecord != null) { var commissionFlowRecord = await DalTuboAlliance.GetCommissionFlowRecordDetalDal(redRushParentOrderId, orderItemRecord.CpsId, orderItemRecord.DarenID, orderItem.Pid, nameof(CpsEnum.CpsRunningType.VALUEADDED)); if (commissionFlowRecord != null) { //计算退佣金使用实体 var calculateCommissionModel = new CalculateCommissionModel(); calculateCommissionModel.OrderItem = orderItem; calculateCommissionModel.CpsId = orderItemRecord.CpsId; calculateCommissionModel.DarenId = orderItemRecord.DarenID; calculateCommissionModel.Pid = orderItem.Pid; calculateCommissionModel.Number = orderItem.Num; calculateCommissionModel.CommissionRatio = commissionFlowRecord.CommissionRatio; calculateCommissionModel.OriOrderId = "" + redRushParentOrderId; calculateCommissionModel.OriPayInstructionId = commissionFlowRecord.TransactionNo; await DeductionCommission(calculateCommissionModel); } else { Logger.Info($"CommodityDeductionManager:【orderId:{orderId}】" + $"【mainOrderId:{mainOrderId}】【PID:{orderItem.Pid}】" + $"【CpsId:{orderItemRecord.CpsId}】【DarenID:{orderItemRecord.DarenID}】无增长流水记录"); } } else { Logger.Info($"CommodityDeductionManager:【orderId:{orderId}】" + $"【mainOrderId:{mainOrderId}】【PID:{orderItem.Pid}】订单商品未在下单主记录表中存在"); } } else { Logger.Info($"CommodityDeductionManager:【orderId:{orderId}】" + $"【mainOrderId:{mainOrderId}】【PID:{orderItem.Pid}】【ParentId:{orderItem.ParentId}】为套装子产品或者是赠品"); } }); } else { Logger.Info($"CommodityDeductionManager:【orderId:{orderId}】非红冲订单"); } } else { Logger.Info($"CommodityDeductionManager:【orderId:{orderId}】【mainOrderId:{mainOrderId}】红冲订单的主订单无下单商品记录"); } } else { Logger.Info($"CommodityDeductionManager:【orderId:{orderId}】红冲关联订单为空"); } } catch (Exception ex) { Logger.Error($"CommodityDeductionManager订单商品退佣佣接口异常:{ex.Message};堆栈信息:{ex.StackTrace}"); resultModule.ErrorMessage = ex.Message; resultModule.Success = false; } return(resultModule); }
/// <summary> /// 订单商品扣佣接口 /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <OperationResult <CommodityDeductionResponse> > CommodityDeductionAsync(CommodityDeductionRequest request) { if (request == null || string.IsNullOrEmpty(request.OrderId)) { return(OperationResult.FromError <CommodityDeductionResponse> (nameof(Resource.ParameterError), Resource.ParameterError)); } else { return(OperationResult.FromResult(await TuboAllianceManager.CommodityDeductionManager(request))); } }