Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="contextSession"></param>
        /// <param name="order"></param>
        /// <param name="orderItem"></param>
        /// <param name="refund"></param>
        /// <param name="refundDTO"></param>
        /// <returns></returns>
        public static ResultDTO SNSubmitRefund(ContextSession contextSession, CommodityOrder order, OrderItem orderItem, OrderRefundAfterSales refund, SubmitOrderRefundDTO refundDTO)
        {
            //if (address == null)
            //{
            //    return new ResultDTO { isSuccess = false, Message = "取件地址不能为空。" };
            //}
            var snOrderItem = SNOrderItem.ObjectSet()
                              .Where(_ => _.OrderItemId == refundDTO.OrderItemId).FirstOrDefault();

            if (snOrderItem == null)
            {
                return(new ResultDTO {
                    isSuccess = false, ResultCode = 1, Message = "该订单不是苏宁订单。"
                });
            }
            SNReturnPartOrderDTO retDto = new SNReturnPartOrderDTO
            {
                OrderId  = snOrderItem.CustomOrderId,
                SkusList = new List <SNReturnPartOrderAddSkusDTO>()
                {
                    new SNReturnPartOrderAddSkusDTO()
                    {
                        SkuId = snOrderItem.CustomSkuId, Num = orderItem.Number.ToString()
                    }
                }
            };

            ResultDTO result = new ResultDTO {
                isSuccess = false, ResultCode = 1, Message = "退货失败"
            };
            SNFactoryDeliveryEnum fac = GetOrderFactoryDeliveryType(orderItem.CommodityOrderId, snOrderItem.CustomSkuId);

            if (fac == SNFactoryDeliveryEnum.NonFactoryDelivery)
            {
                result = SuningSV.ReturnPartOrder(retDto);;
                if (result.isSuccess)
                {
                    // 保存到 SNOrderRefundAfterSales
                    SNOrderRefundAfterSales snOrderRefundAfterSales = new SNOrderRefundAfterSales
                    {
                        Id         = Guid.NewGuid(),
                        SubTime    = DateTime.Now,
                        ModifiedOn = DateTime.Now,
                        AppId      = order.AppId,
                        OrderRefundAfterSalesId = refund.Id,
                        OrderId       = orderItem.CommodityOrderId,
                        OrderItemId   = orderItem.Id,
                        CustomOrderId = snOrderItem.CustomOrderId,
                        CommodityId   = orderItem.CommodityId,
                        CommodityNum  = orderItem.Number,
                        CustomSkuId   = snOrderItem.CustomSkuId,
                        Cancel        = 1,
                        //取件方式(必填 1 上门取件-非厂送-自营    2快递寄回-厂送 )
                        PickwareType = fac.GetHashCode(),

                        CustomerContactName = refundDTO.Address.customerContactName,
                        CustomerTel         = refundDTO.Address.customerTel,
                        PickwareAddress     = refundDTO.Address.ProviceCityStr + refundDTO.Address.pickwareAddress,
                        //暂时没用
                        AfsServiceId       = "",
                        AfsServiceStep     = 10,
                        AfsServiceStepName = "申请阶段",

                        EntityState = EntityState.Added
                    };

                    contextSession.SaveObject(snOrderRefundAfterSales);

                    UpdateApplyOrderStatus(contextSession, 3, orderItem.Id);
                }
                else
                {
                    UpdateApplyOrderStatus(contextSession, 4, orderItem.Id);
                    var log = new Deploy.JdlogsDTO
                    {
                        Id                 = Guid.NewGuid(),
                        SubTime            = DateTime.Now,
                        ThirdECommerceType = ThirdECommerceTypeEnum.SuNingYiGou.GetHashCode(),
                        Content            = "【苏宁售后】----【" + order.Code + "】中的" + orderItem.Name + "商品【" + snOrderItem.CustomSkuId + "】,提交售后申请失败,失败原因:【" + result.ResultCode + ":" + result.Message + "】"
                    };
                    JdlogsFacade facade = new JdlogsFacade();
                    facade.SaveJdlogs(log);
                }
            }
            else
            {
                // 保存到 SNOrderRefundAfterSales
                SNOrderRefundAfterSales snOrderRefundAfterSales = new SNOrderRefundAfterSales
                {
                    Id         = Guid.NewGuid(),
                    SubTime    = DateTime.Now,
                    ModifiedOn = DateTime.Now,
                    AppId      = order.AppId,
                    OrderRefundAfterSalesId = refund.Id,
                    OrderId       = orderItem.CommodityOrderId,
                    OrderItemId   = orderItem.Id,
                    CustomOrderId = snOrderItem.CustomOrderId,
                    CommodityId   = orderItem.CommodityId,
                    CommodityNum  = orderItem.Number,
                    CustomSkuId   = snOrderItem.CustomSkuId,
                    Cancel        = 1,
                    //取件方式(必填 1 上门取件-非厂送-自营    2快递寄回-厂送 )
                    PickwareType = fac.GetHashCode(),

                    CustomerContactName = refundDTO.Address.customerContactName,
                    CustomerTel         = refundDTO.Address.customerTel,
                    PickwareAddress     = refundDTO.Address.ProviceCityStr + refundDTO.Address.pickwareAddress,
                    //暂时没用
                    AfsServiceId       = "",
                    AfsServiceStep     = 10,
                    AfsServiceStepName = "申请阶段",

                    EntityState = EntityState.Added
                };

                contextSession.SaveObject(snOrderRefundAfterSales);

                UpdateApplyOrderStatus(contextSession, 3, orderItem.Id);
                result = new ResultDTO {
                    isSuccess = true, ResultCode = 0, Message = "退款申请成功"
                };
            }

            return(result);
        }
Пример #2
0
        public static ResultDTO SubmitRefund(ContextSession contextSession, CommodityOrder order, OrderItem orderItem, OrderRefundAfterSales refund, AddressInfo address)
        {
            if (address == null)
            {
                return(new ResultDTO {
                    isSuccess = false, Message = "取件地址不能为空。"
                });
            }
            var strCommodityOrderId = orderItem.CommodityOrderId.ToString();
            var jdorderitem         = JdOrderItem.ObjectSet()
                                      .Where(_ => _.CommodityOrderId == strCommodityOrderId && _.TempId == orderItem.CommodityId).FirstOrDefault();

            if (jdorderitem == null)
            {
                return(new ResultDTO {
                    isSuccess = false, ResultCode = 1, Message = "该订单不是京东订单。"
                });
            }
            AfterSaleDto dto = new AfterSaleDto();

            dto.jdOrderId      = jdorderitem.JdOrderId;
            dto.customerExpect = 10;
            dto.questionDesc   = refund.RefundDesc;
            dto.questionPic    = refund.OrderRefundImgs;
            dto.asCustomerDto  = new AfterSaleCustomerDto()
            {
                jdOrderId           = jdorderitem.JdOrderId,
                customerContactName = address.customerContactName,
                customerTel         = address.customerTel
            };
            dto.asPickwareDto = new AfterSalePickwareDto()
            {
                pickwareType     = 4,
                pickwareProvince = address.pickwareProvince,
                pickwareCity     = address.pickwareCity,
                pickwareCounty   = address.pickwareCounty,
                pickwareVillage  = address.pickwareVillage,
                pickwareAddress  = address.pickwareAddress
            };
            dto.asReturnwareDto = new AfterSaleReturnwareDto
            {
                returnwareType     = 10,
                returnwareCity     = address.pickwareCity,
                returnwareCounty   = address.pickwareCounty,
                returnwareProvince = address.pickwareProvince,
                returnwareVillage  = address.pickwareVillage,
                returnwareAddress  = address.pickwareAddress
            };
            dto.asDetailDto = new AfterSaleDetailDto()
            {
                skuId  = jdorderitem.CommoditySkuId,
                skuNum = orderItem.Number
            };
            var result = JDSV.CreateAfsApply(dto);

            if (result.isSuccess)
            {
                // 保存到 JdOrderRefundAfterSales
                var jdOrderRefundAfterSales = JdOrderRefundAfterSales.CreateJdOrderRefundAfterSales();
                jdOrderRefundAfterSales.AppId = order.AppId;
                jdOrderRefundAfterSales.OrderRefundAfterSalesId = refund.Id;
                jdOrderRefundAfterSales.OrderId             = orderItem.CommodityOrderId;
                jdOrderRefundAfterSales.OrderItemId         = orderItem.Id;
                jdOrderRefundAfterSales.JdOrderId           = jdorderitem.JdOrderId;
                jdOrderRefundAfterSales.CommodityId         = orderItem.CommodityId;
                jdOrderRefundAfterSales.CommodityNum        = orderItem.Number;
                jdOrderRefundAfterSales.SkuId               = jdorderitem.CommoditySkuId;
                jdOrderRefundAfterSales.Cancel              = 1;
                jdOrderRefundAfterSales.PickwareType        = 4;
                jdOrderRefundAfterSales.CustomerContactName = address.customerContactName;
                jdOrderRefundAfterSales.CustomerTel         = address.customerTel;
                jdOrderRefundAfterSales.PickwareAddress     = address.ProviceCityStr + address.pickwareAddress;
                jdOrderRefundAfterSales.AfsServiceStep      = 10;
                jdOrderRefundAfterSales.AfsServiceStepName  = "申请阶段";
                contextSession.SaveObject(jdOrderRefundAfterSales);
            }
            else
            {
                bool isWriteLog = false;
                switch (result.ResultCode)
                {
                case -1:     // 系统异常
                    break;

                //京东异常
                case 2000:
                    result.Message = "提交失败,请重试~";
                    break;

                case 6000:
                    result.Message = "网络异常,请稍后重试~";
                    break;

                case 6001:
                case 6002:
                case 6003:
                case 6004:
                case 6006:
                case 6007:
                case 6011:
                case 6012:
                    isWriteLog = true;
                    break;

                case 6005:
                    result.Message = "收货后才能申请退货~";
                    break;

                case 6008:
                    result.Message = "收货后才能申请退货~";
                    break;

                case 6009:
                    result.Message = "该商品不支持售后~";
                    break;

                case 6010:
                    result.Message = "退货申请商品数量超过订单商品数量~";
                    isWriteLog     = true;
                    break;

                case 6013:
                    result.Message = "售后申请审核未通过,如有异议,请联系客服处理~";
                    break;

                default:
                    break;
                }
                if (isWriteLog)
                {
                    var log = new Jinher.AMP.BTP.Deploy.JdlogsDTO
                    {
                        Id      = Guid.NewGuid(),
                        Content = "【" + order.Code + "】中的" + orderItem.Name + "商品【" + jdorderitem.CommoditySkuId + "】,提交售后申请失败,失败原因:【" + result.ResultCode + ":" + result.Message + "】"
                    };
                    JdlogsFacade facade = new JdlogsFacade();
                    facade.SaveJdlogs(log);
                }
            }
            return(result);
        }