/// <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); }
/// <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); }