示例#1
0
        /// <summary>
        /// 退款结果回调
        /// </summary>
        /// <param name="result"></param>
        public static void OrderRefundResult(RefundResult result)
        {
            try
            {
                Guid orderId;
                Guid.TryParse(result.orderId, out orderId);
                LogHelper.Debug("进入 YXOrderHelper.OrderRefundResult,Input:" + JsonConvert.SerializeObject(result));

                var orderRefund = OrderRefundAfterSales.ObjectSet().Where(_ => _.ApplyId == result.applyId).FirstOrDefault();
                if (orderRefund == null)
                {
                    LogHelper.Error("YXOrderHelper.OrderRefundResult 失败,未找到退款记录,Input:" + JsonConvert.SerializeObject(result));
                }
                var    orderItem = OrderItem.FindByID(orderRefund.OrderItemId.Value);
                string skuId;
                if (orderItem.CommodityStockId == null || orderItem.CommodityStockId.Value == Guid.Empty || orderItem.CommodityStockId == orderItem.CommodityId)
                {
                    var commodity = Commodity.FindByID(orderItem.CommodityId);
                    skuId = commodity.JDCode;
                }
                else
                {
                    var comStock = CommodityStock.FindByID(orderItem.CommodityStockId.Value);
                    skuId = comStock.JDCode;
                }

                var skuResult        = result.refundSkuList.Where(_ => _.skuId == skuId).FirstOrDefault();
                var skuOperateResult = skuResult.operateSkus.Where(_ => _.skuId == skuId).FirstOrDefault();

                if (skuOperateResult.status == OrderRefundApplySkuOperateStatusEnum.审核通过)
                {
                    var refundResult = OrderHelper.ApproveOrderRefundAfterSales(orderRefund.OrderId, orderRefund.OrderItemId ?? Guid.Empty);
                    if (refundResult.ResultCode != 0)
                    {
                        // 失败
                        LogHelper.Error("YXOrderHelper.OrderRefundResult 失败," + refundResult.Message + ",Input:" + JsonConvert.SerializeObject(result));
                    }
                }
                else if (skuOperateResult.status == OrderRefundApplySkuOperateStatusEnum.已拒绝)
                {
                    var refundResult = OrderHelper.RejectOrderRefundAfterSales(orderId, orderRefund.OrderItemId ?? Guid.Empty, skuOperateResult.reason);
                    if (refundResult.ResultCode != 0)
                    {
                        // 失败
                        LogHelper.Error("YXOrderHelper.RejectOrderRefund 失败," + refundResult.Message + ",Input:" + JsonConvert.SerializeObject(result));
                    }
                }
                else
                {
                    LogHelper.Error("YXOrderHelper.RejectOrderRefund -> OrderId: " + orderId + ", ApplyId: " + result.applyId + ", 忽略的状态:" + skuOperateResult.status.ToString());
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("YXOrderHelper.OrderRefundResult 异常,Input:" + JsonConvert.SerializeObject(result), ex);
            }
        }
示例#2
0
        /// <summary>
        /// 发起售后申请(售前-不支持)
        /// </summary>
        /// <returns></returns>
        public static ResultDTO ApplyRefundOrder(CommodityOrder order, OrderItem orderItem, OrderRefund refund)
        {
            string skuId = null;

            if (orderItem.CommodityStockId.HasValue && orderItem.CommodityStockId != Guid.Empty && orderItem.CommodityStockId != orderItem.CommodityId)
            {
                var comStock = CommodityStock.FindByID(orderItem.CommodityStockId.Value);
                if (comStock == null)
                {
                    return(new ResultDTO {
                        isSuccess = false, Message = "商品不存在。", ResultCode = -1
                    });
                }
                else
                {
                    skuId = comStock.JDCode;
                }
            }
            else
            {
                var commodity = Commodity.FindByID(orderItem.CommodityId);
                if (commodity == null)
                {
                    return(new ResultDTO {
                        isSuccess = false, Message = "商品不存在。", ResultCode = -1
                    });
                }
                else
                {
                    skuId = commodity.JDCode;
                }
            }
            if (string.IsNullOrEmpty(skuId))
            {
                return(new ResultDTO {
                    isSuccess = false, Message = "商品SKU编码不存在。", ResultCode = -1
                });
            }
            var orderSku = YXOrderSku.ObjectSet().Where(_ => _.OrderId == order.Id && _.SkuId == skuId).FirstOrDefault();

            if (orderSku == null)
            {
                return(new ResultDTO {
                    isSuccess = false, Message = "订单SKU存在。", ResultCode = -1
                });
            }
            var requestData = new ApplyInfo
            {
                orderId   = order.Id.ToString(),
                requestId = refund.Id.ToString(),
                applyUser = new ApplyUser {
                    name = order.ReceiptUserName, mobile = order.ReceiptPhone
                },
                applySku = new ApplySku
                {
                    packageId      = orderSku.PackageId,
                    skuId          = orderSku.SkuId,
                    count          = orderSku.SaleCount,
                    originalPrice  = orderSku.OriginPrice,
                    subtotalPrice  = orderSku.SubtotalAmount,
                    applySkuReason = new ApplySkuReason {
                        reason = refund.RefundReason, reasonDesc = refund.RefundDesc
                    },
                    applyPicList = new List <ApplyPic> {
                    }
                }
            };

            if (!string.IsNullOrEmpty(refund.OrderRefundImgs))
            {
                foreach (var img in refund.OrderRefundImgs.Split(','))
                {
                    requestData.applySku.applyPicList.Add(new ApplyPic {
                        fileName = System.IO.Path.GetFileName(img), url = img
                    });
                }
            }
            var result = YXSV.ApplyRefundOrder(requestData);

            if (!result.isSuccess)
            {
                return(result);
            }
            refund.ApplyId = result.Data.applyId;
            return(new ResultDTO {
                isSuccess = true
            });
        }