Beispiel #1
0
        /// <summary>
        /// 部分商品退货
        /// http://open.suning.com/ospos/apipage/toApiMethodDetailMenu.do?interCode=suning.govbus.returnpartorder.add
        /// </summary>
        /// <param name="reqDto">实体数据</param>
        /// <returns></returns>
        public static ResultDTO ReturnPartOrder(SNReturnPartOrderDTO reqDto)
        {
            ResultDTO ret = new ResultDTO();

            try
            {
                #region 将系统中自有的实体转换为苏宁自己的实体传入
                List <snsdk.suning_api_sdk.Models.CustomGovbusModel.ReturnpartorderAddSkusReq> skusReqList = new List <snsdk.suning_api_sdk.Models.CustomGovbusModel.ReturnpartorderAddSkusReq>();

                reqDto.SkusList.ForEach(p =>
                {
                    skusReqList.Add(new snsdk.suning_api_sdk.Models.CustomGovbusModel.ReturnpartorderAddSkusReq()
                    {
                        skuId = p.SkuId, num = p.Num
                    });
                });

                snsdk.suning_api_sdk.BizRequest.CustomGovbusRequest.ReturnpartorderAddRequest request = new snsdk.suning_api_sdk.BizRequest.CustomGovbusRequest.ReturnpartorderAddRequest()
                {
                    orderId = reqDto.OrderId,
                    skus    = skusReqList
                };
                #endregion


                snsdk.suning_api_sdk.BizResponse.CustomGovbusResponse.ReturnpartorderAddResponse response = SuningClient.Execute(request);
                #region 构造返回实体
                if (response != null)
                {
                    if (response.isSuccess.Equals("Y"))
                    {
                        return(new ResultDTO {
                            isSuccess = true
                        });
                    }
                    else
                    {
                        return(new ResultDTO {
                            isSuccess = false, ResultCode = 1, Message = response.infoList.First().unableReason
                        });
                    }

                    //List<SNReturnPartOrderReturnListDTO> listRet = new List<SNReturnPartOrderReturnListDTO>();

                    //response.infoList.ForEach(p =>
                    //{
                    //    listRet.Add(new SNReturnPartOrderReturnListDTO() { SkuId = p.skuId, Status = p.status, UnableReason = p.unableReason });
                    //});
                    //ret = new SNReturnPartOrderReturnDTO() { OrderId = response.orderId, InfoList = listRet, IsSuccess = response.isSuccess.Equals("Y") ? true : false };
                }
                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.Error("SuningSV.ReturnPartOrder 部分商品退货", ex);
            }
            return(ret);
        }
Beispiel #2
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);
        }