Beispiel #1
0
        /// <summary>
        /// 获取二级地址
        /// </summary>
        /// <returns></returns>
        public ThirdResponse <Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDTO> GetCityExt(string Code)
        {
            ThirdResponse <Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDTO> res = new ThirdResponse <Deploy.CustomDTO.JD.AreaDTO>();

            try
            {
                Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDTO        Areadto = new Deploy.CustomDTO.JD.AreaDTO();
                List <Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDto> objlist = new List <Deploy.CustomDTO.JD.AreaDto>();
                string objstr = JdHelper.GetCity(Code);
                if (!string.IsNullOrEmpty(objstr))
                {
                    JObject obj = JObject.Parse(objstr);
                    if (obj.Count > 0)
                    {
                        foreach (var item in obj)
                        {
                            Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDto model = new Deploy.CustomDTO.JD.AreaDto();
                            model.Name = item.Key;
                            model.Code = item.Value.ToString();
                            objlist.Add(model);
                        }
                    }
                    Areadto.Count = objlist.Count();
                    Areadto.Data  = objlist;

                    res.Code   = 200;
                    res.Result = Areadto;
                    res.Msg    = "查询成功!";
                }
                else
                {
                    res.Code   = 200;
                    res.Result = Areadto;
                    res.Msg    = "查询成功!";
                }
            }
            catch (Exception ex)
            {
                res.Code   = 200;
                res.Result = new Deploy.CustomDTO.JD.AreaDTO();
                res.Msg    = ex.Message;
            }
            return(res);
        }
        /// <summary>
        /// 第三方电商售后服务退货结果回调
        /// </summary>
        /// <param name="resultJsonStr"></param>
        /// <returns></returns>
        public static ThirdResponse RefundResultCallback(string resultJsonStr)
        {
            LogHelper.Debug("ThirdECommerceServiceHelper.RefundResultCallback第三方电商售后服务退货结果回调,Input:" + resultJsonStr);
            if (string.IsNullOrEmpty(resultJsonStr))
            {
                return new ThirdResponse {
                           Code = 20500, Msg = "缺少参数serviceRefundResult"
                }
            }
            ;
            var result = new ThirdResponse {
                Code = 200, Msg = "ok"
            };

            try
            {
                var serviceResult = JsonConvert.DeserializeObject <ThirdServiceRefundResult>(resultJsonStr);

                if (serviceResult == null)
                {
                    return new ThirdResponse {
                               Code = 20501, Msg = "非法参数serviceRejectResult"
                    }
                }
                ;
                Guid     orderId, serviceId;
                DateTime auditTime;
                Guid.TryParse(serviceResult.OrderId, out orderId);
                Guid.TryParse(serviceResult.ServiceId, out serviceId);
                DateTime.TryParse(serviceResult.AuditTime, out auditTime);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 20502, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (serviceId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 20503, Msg = "非法参数ServiceId"
                    }
                }
                ;
                if (string.IsNullOrEmpty(serviceResult.SkuId))
                {
                    return new ThirdResponse {
                               Code = 20504, Msg = "非法参数SkuId"
                    }
                }
                ;
                if (auditTime == DateTime.MinValue)
                {
                    return new ThirdResponse {
                               Code = 20505, Msg = "非法参数AuditTime"
                    }
                }
                ;
                if (serviceResult.RefundStatus < 0 || serviceResult.RefundStatus > 1)
                {
                    return new ThirdResponse {
                               Code = 20506, Msg = "非法参数RefundStatus"
                    }
                }
                ;
                if (serviceResult.RefundStatus == 1 && string.IsNullOrEmpty(serviceResult.RejectReason))
                {
                    return new ThirdResponse {
                               Code = 20507, Msg = "缺少参数RejectReason"
                    }
                }
                ;
                #region 判断是否第三方电商售后服务单及获取售后服务单信息
                var service = ThirdECService.ObjectSet().FirstOrDefault(o => o.OrderId == orderId &&
                                                                        o.OrderRefundAfterSalesId == serviceId && o.SkuId == serviceResult.SkuId);
                if (service == null)
                {
                    return new ThirdResponse {
                               Code = 20508, Msg = "未找到此服务单"
                    }
                }
                ;
                var orderRefund = OrderRefundAfterSales.ObjectSet().FirstOrDefault(p => p.Id == service.OrderRefundAfterSalesId);
                if (service == null)
                {
                    return new ThirdResponse {
                               Code = 20509, Msg = "未找到此服务单"
                    }
                }
                ;
                if (service.AgreeRefundTime.HasValue || service.RejectRefundTime.HasValue)
                {
                    return(result);
                }
                #endregion
                #region 退款处理
                var errorMessage = string.Empty;
                if (serviceResult.RefundStatus == 0)
                {
                    var refundResult = OrderHelper.ApproveOrderRefundAfterSales(orderRefund.OrderId, orderRefund.OrderItemId ?? Guid.Empty);
                    if (refundResult.ResultCode == 0)
                    {
                        service.AgreeRefundTime = auditTime;
                        service.StateName       = "允许退货";
                        service.StateDesc       = "售后服务退货结果回调:允许退货";
                    }
                    else
                    {
                        errorMessage = refundResult.Message;
                        result       = new ThirdResponse {
                            Code = 20510, Msg = "内部异常"
                        };
                    }
                }
                else
                {
                    var refundResult = OrderHelper.RejectOrderRefundAfterSales(orderId, orderRefund.OrderItemId ?? Guid.Empty, serviceResult.RejectReason);
                    if (refundResult.ResultCode == 0)
                    {
                        service.RejectRefundTime = auditTime;
                        service.StateName        = "拒绝退货";
                        service.StateDesc        = "售后服务退货结果回调:拒绝退货," + serviceResult.RejectReason;
                    }
                    else
                    {
                        errorMessage = refundResult.Message;
                        result       = new ThirdResponse {
                            Code = 20511, Msg = "内部异常"
                        };
                    }
                }
                #endregion
                #region 保存ThirdECOrderJournal
                var journal = new ThirdECServiceJournal
                {
                    Id                      = Guid.NewGuid(),
                    OrderId                 = service.OrderId,
                    OrderCode               = service.OrderCode,
                    OrderItemId             = service.OrderItemId,
                    OrderRefundAfterSalesId = service.OrderRefundAfterSalesId,
                    Name                    = serviceResult.RefundStatus == 0 ? "允许退货" : "拒绝退货",
                    Details                 = string.IsNullOrEmpty(errorMessage) ? service.StateDesc : errorMessage,
                    Json                    = resultJsonStr,
                    EntityState             = EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(journal);
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count == 0)
                {
                    LogHelper.Error(string.Format("ThirdECommerceServiceHelper.RefundResultCallback第三方电商售后服务退货结果回调数据保存失败,入参:{0}", resultJsonStr));
                    result = new ThirdResponse {
                        Code = 20512, Msg = "内部异常"
                    };
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("ThirdECommerceServiceHelper.RefundResultCallback第三方电商售后服务退货结果回调异常,Input:" + resultJsonStr, ex);
                result = new ThirdResponse {
                    Code = 20513, Msg = "内部异常"
                };
            }
            return(result);
        }

        #endregion
    }
        /// <summary>
        /// 第三方电商允许售后结果回调
        /// </summary>
        /// <param name="resultJsonStr"></param>
        public static ThirdResponse AgreeServiceCallback(string resultJsonStr)
        {
            LogHelper.Debug("ThirdECommerceServiceHelper.AgreeServiceCallback第三方电商允许售后结果回调,Input:" + resultJsonStr);
            if (string.IsNullOrEmpty(resultJsonStr))
            {
                return new ThirdResponse {
                           Code = 20100, Msg = "缺少参数serviceAgreeResult"
                }
            }
            ;
            var result = new ThirdResponse {
                Code = 200, Msg = "ok"
            };

            try
            {
                var serviceResult = JsonConvert.DeserializeObject <ThirdServiceAgreeResult>(resultJsonStr);

                if (serviceResult == null)
                {
                    return new ThirdResponse {
                               Code = 20101, Msg = "非法参数serviceAgreeResult"
                    }
                }
                ;
                Guid     orderId, serviceId;
                DateTime agreeTime;
                Guid.TryParse(serviceResult.OrderId, out orderId);
                Guid.TryParse(serviceResult.ServiceId, out serviceId);
                DateTime.TryParse(serviceResult.AgreeTime, out agreeTime);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 20102, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (serviceId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 20103, Msg = "非法参数ServiceId"
                    }
                }
                ;
                if (agreeTime == DateTime.MinValue)
                {
                    return new ThirdResponse {
                               Code = 20104, Msg = "非法参数AgreeTime"
                    }
                }
                ;
                if (serviceResult.Address == null)
                {
                    return new ThirdResponse {
                               Code = 20105, Msg = "非法参数Address"
                    }
                }
                ;
                if (string.IsNullOrEmpty(serviceResult.Address.Name))
                {
                    return new ThirdResponse {
                               Code = 20106, Msg = "缺少参数Address.Name"
                    }
                }
                ;
                if (string.IsNullOrEmpty(serviceResult.Address.Phone))
                {
                    return new ThirdResponse {
                               Code = 20107, Msg = "缺少参数Address.Phone"
                    }
                }
                ;
                //if (string.IsNullOrEmpty(serviceResult.Address.ProvinceName)) return new ThirdResponse { Code = 20108, Msg = "缺少参数Address.ProvinceName" };
                //if (string.IsNullOrEmpty(serviceResult.Address.CityName)) return new ThirdResponse { Code = 20109, Msg = "缺少参数Address.CityName" };
                //if (string.IsNullOrEmpty(serviceResult.Address.CountyName)) return new ThirdResponse { Code = 20110, Msg = "缺少参数Address.CountyName" };
                //if (string.IsNullOrEmpty(serviceResult.Address.TownName)) return new ThirdResponse { Code = 20111, Msg = "缺少参数Address.TownName" };
                //if (string.IsNullOrEmpty(serviceResult.Address.AddressDetail)) return new ThirdResponse { Code = 20112, Msg = "缺少参数Address.AddressDetail" };
                if (string.IsNullOrEmpty(serviceResult.Address.FullAddress))
                {
                    return new ThirdResponse {
                               Code = 20113, Msg = "缺少参数Address.FullAddress"
                    }
                }
                ;
                #region 判断是否第三方电商售后服务单及获取售后服务单信息
                var service = ThirdECService.ObjectSet().FirstOrDefault(o => o.OrderId == orderId && o.OrderRefundAfterSalesId == serviceId);
                if (service == null)
                {
                    return new ThirdResponse {
                               Code = 20114, Msg = "未找到此服务单"
                    }
                }
                ;
                var orderRefund = OrderRefundAfterSales.ObjectSet().FirstOrDefault(p => p.Id == service.OrderRefundAfterSalesId);
                if (service == null)
                {
                    return new ThirdResponse {
                               Code = 20115, Msg = "未找到此服务单"
                    }
                }
                ;
                if (service.AgreeApplyTime.HasValue)
                {
                    return(result);
                }
                #endregion
                #region 退款处理
                var refundResult = OrderHelper.ApproveOrderRefundAfterSales(orderId, orderRefund.OrderItemId ?? Guid.Empty);
                if (refundResult.ResultCode == 0)
                {
                    service.AgreeApplyTime = agreeTime;
                    service.StateName      = "允许售后";
                    service.StateDesc      = "售后服务申请审核结果回调:允许售后";
                    orderRefund.RefundReceiveFullAddress = serviceResult.Address.FullAddress;
                    orderRefund.RefundReceiveMobile      = serviceResult.Address.Phone;
                    orderRefund.RefundReceiveName        = serviceResult.Address.Name;
                }
                else
                {
                    result = new ThirdResponse {
                        Code = 20116, Msg = "内部异常"
                    }
                };
                #endregion
                #region 保存ThirdECOrderJournal
                var journal = new ThirdECServiceJournal
                {
                    Id                      = Guid.NewGuid(),
                    OrderId                 = service.OrderId,
                    OrderCode               = service.OrderCode,
                    OrderItemId             = service.OrderItemId,
                    OrderRefundAfterSalesId = service.OrderRefundAfterSalesId,
                    Name                    = "售后服务申请审核结果回调:允许售后",
                    Details                 = refundResult.ResultCode == 0 ? "售后服务申请审核结果回调:允许售后" : refundResult.Message,
                    Json                    = resultJsonStr,
                    EntityState             = EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(journal);
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count == 0)
                {
                    LogHelper.Error(string.Format("ThirdECommerceServiceHelper.AgreeServiceCallback第三方电商允许售后结果回调数据保存失败,入参:{0}", resultJsonStr));
                    result = new ThirdResponse {
                        Code = 20117, Msg = "内部异常"
                    };
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("ThirdECommerceServiceHelper.AgreeServiceCallback第三方电商允许售后结果回调异常,Input:" + resultJsonStr, ex);
                result = new ThirdResponse {
                    Code = 20118, Msg = "内部异常"
                };
            }
            return(result);
        }
        /// <summary>
        /// 第三方电商售后服务超过X天未收到退货物流回调
        /// </summary>
        /// <param name="resultJsonStr"></param>
        /// <returns></returns>
        public static ThirdResponse NotReceiveMailCallback(string resultJsonStr)
        {
            LogHelper.Debug("ThirdECommerceServiceHelper.NotReceiveMailCallback第三方电商售后服务超过X天未收到退货物流回调,Input:" + resultJsonStr);
            if (string.IsNullOrEmpty(resultJsonStr))
            {
                return new ThirdResponse {
                           Code = 20400, Msg = "缺少参数mailNotReceiveResult"
                }
            }
            ;
            var result = new ThirdResponse {
                Code = 200, Msg = "ok"
            };

            try
            {
                var mailResult = JsonConvert.DeserializeObject <ThirdMailNotReceiveResult>(resultJsonStr);

                if (mailResult == null)
                {
                    return new ThirdResponse {
                               Code = 20401, Msg = "非法参数mailNotReceiveResult"
                    }
                }
                ;
                Guid     orderId, serviceId;
                DateTime notReceiveTime;
                Guid.TryParse(mailResult.OrderId, out orderId);
                Guid.TryParse(mailResult.ServiceId, out serviceId);
                DateTime.TryParse(mailResult.NotifyTime, out notReceiveTime);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 20402, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 20403, Msg = "非法参数ServiceId"
                    }
                }
                ;
                if (notReceiveTime == DateTime.MinValue)
                {
                    return new ThirdResponse {
                               Code = 20404, Msg = "非法参数ReceiveTime"
                    }
                }
                ;
                if (mailResult.Days <= 0)
                {
                    return new ThirdResponse {
                               Code = 20405, Msg = "非法参数Days"
                    }
                }
                ;
                #region 判断是否第三方电商售后服务单及获取售后服务单信息
                var service = ThirdECService.ObjectSet().FirstOrDefault(o => o.OrderId == orderId && o.OrderRefundAfterSalesId == serviceId);
                if (service == null)
                {
                    return new ThirdResponse {
                               Code = 20406, Msg = "未找到此服务单"
                    }
                }
                ;
                if (service.MailNotReceiveTime.HasValue)
                {
                    return(result);
                }
                service.MailNotReceiveTime = notReceiveTime;
                service.StateName          = "超过" + mailResult.Days + "天未收到退货物流";
                service.StateDesc          = service.StateDesc;
                #endregion
                #region 保存ThirdECOrderJournal
                var journal = new ThirdECServiceJournal
                {
                    Id                      = Guid.NewGuid(),
                    OrderId                 = service.OrderId,
                    OrderCode               = service.OrderCode,
                    OrderItemId             = service.OrderItemId,
                    OrderRefundAfterSalesId = service.OrderRefundAfterSalesId,
                    Name                    = service.StateDesc,
                    Details                 = service.StateDesc,
                    Json                    = resultJsonStr,
                    EntityState             = EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(journal);
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count == 0)
                {
                    LogHelper.Error(string.Format("ThirdECommerceServiceHelper.NotReceiveMailCallback第三方电商售后服务超过X天未收到退货物流回调数据保存失败,入参:{0}", resultJsonStr));
                    result = new ThirdResponse {
                        Code = 20207, Msg = "内部异常"
                    };
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("ThirdECommerceServiceHelper.NotReceiveMailCallback第三方电商售后服务超过X天未收到退货物流回调异常,Input:" + resultJsonStr, ex);
                result = new ThirdResponse {
                    Code = 20208, Msg = "内部异常"
                };
            }
            return(result);
        }
        /// <summary>
        /// 第三方电商订单取消审核结果回调
        /// </summary>
        /// <param name="result"></param>
        public static ThirdResponse CancelOrderCallback(string resultJsonStr)
        {
            LogHelper.Debug("ThirdECommerceOrderHelper.CancelOrderCallback第三方电商订单取消审核结果回调,Input:" + resultJsonStr);
            if (string.IsNullOrEmpty(resultJsonStr))
            {
                return new ThirdResponse {
                           Code = 10200, Msg = "缺少参数orderCancelResult"
                }
            }
            ;
            var result = new ThirdResponse {
                Code = 200, Msg = "ok"
            };

            try
            {
                var cancelResult = JsonConvert.DeserializeObject <ThirdOrderCancelResultCallBack>(resultJsonStr);

                if (cancelResult == null)
                {
                    return new ThirdResponse {
                               Code = 10201, Msg = "非法参数orderCancelResult"
                    }
                }
                ;
                Guid     orderId;
                DateTime auditTime;
                Guid.TryParse(cancelResult.OrderId, out orderId);
                DateTime.TryParse(cancelResult.AuditTime, out auditTime);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 10202, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (!new List <int> {
                    0, 1
                }.Contains(cancelResult.CancelStatus))
                {
                    return new ThirdResponse {
                               Code = 10203, Msg = "非法参数CancelStatus"
                    }
                }
                ;
                if (cancelResult.CancelStatus == 0 && string.IsNullOrEmpty(cancelResult.RejectReason))
                {
                    return new ThirdResponse {
                               Code = 10204, Msg = "非法参数RejectReason"
                    }
                }
                ;
                if (auditTime == DateTime.MinValue)
                {
                    return new ThirdResponse {
                               Code = 10205, Msg = "非法参数CancelStatus"
                    }
                }
                ;
                #region 判断是否第三方电商订单及获取订单信息
                var order = ThirdECOrder.ObjectSet().FirstOrDefault(o => o.OrderId == orderId);
                if (order == null)
                {
                    return new ThirdResponse {
                               Code = 10206, Msg = "未找到此订单"
                    }
                }
                ;
                if (order.CancelCallBackTime.HasValue)
                {
                    return(result);
                }
                #endregion
                #region 处理退款
                var errorMessage = string.Empty;
                OrderSV.UnLockOrder(orderId);
                if (cancelResult.CancelStatus == 0)
                {
                    var optResult = OrderHelper.RejectOrderRefund(orderId, cancelResult.RejectReason);
                    if (optResult.ResultCode != 0)
                    {
                        errorMessage = optResult.Message;
                        LogHelper.Error("ThirdECommerceOrderHelper.CancelOrderCallback 取消订单失败,RejectOrderRefund返回:" + JsonConvert.SerializeObject(optResult));
                        result = new ThirdResponse {
                            Code = 10207, Msg = "内部异常"
                        };
                    }
                    else
                    {
                        order.StateName          = "不允许取消";
                        order.CancelCallBackTime = auditTime;
                        order.StateDesc          = "订单取消审核结果回调:不允许取消," + cancelResult.RejectReason;
                    }
                }
                else
                {
                    order.StateName = "允许取消";
                    var optResult = OrderHelper.ApproveCancelOrder(orderId);
                    if (optResult.ResultCode != 0)
                    {
                        errorMessage = optResult.Message;
                        LogHelper.Error("ThirdECommerceOrderHelper.CancelOrderCallback 取消订单失败,ApproveCancelOrder返回:" + JsonConvert.SerializeObject(optResult));
                        result = new ThirdResponse {
                            Code = 10208, Msg = "内部异常"
                        };
                    }
                    else
                    {
                        order.StateName          = "允许取消";
                        order.CancelCallBackTime = auditTime;
                        order.StateDesc          = "订单取消审核结果回调:允许取消";
                    }
                }
                #endregion
                #region 保存ThirdECOrderJournal
                var thirdOrderJournal = new ThirdECOrderJournal
                {
                    Id          = Guid.NewGuid(),
                    OrderId     = order.OrderId,
                    OrderCode   = order.OrderCode,
                    SubTime     = DateTime.Now,
                    SubId       = order.SubId,
                    Name        = "取消订单审核结果回调",
                    Details     = result.Successed ? order.StateDesc : errorMessage,
                    Json        = resultJsonStr,
                    EntityState = EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(thirdOrderJournal);
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count == 0)
                {
                    LogHelper.Error(string.Format("ThirdECommerceOrderHelper.CancelOrderCallback第三方电商订单取消审核结果回调数据保存失败,入参:{0}", resultJsonStr));
                    return(new ThirdResponse {
                        Code = 10209, Msg = "内部异常"
                    });
                }
            }
            catch (JsonReaderException ex)
            {
                LogHelper.Error("ThirdECommerceOrderHelper.CancelOrderCallback第三方电商订单取消审核结果回调反序列化异常,Input:" + resultJsonStr, ex);
                return(new ThirdResponse <ThirdOrderCancelResult> {
                    Msg = "反序列化异常"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error("ThirdECommerceOrderHelper.CancelOrderCallback第三方电商订单取消审核结果回调异常,Input:" + resultJsonStr, ex);
                return(new ThirdResponse {
                    Code = 10210, Msg = "内部异常"
                });
            }
            return(result);
        }