private void UpdateShopVisti(OrderRefundInfo refund, DateTime payDate) { ShopVistiInfo shopVistiInfo = context.ShopVistiInfo.FindBy((ShopVistiInfo item) => item.ShopId == refund.ShopId && (item.Date == payDate.Date)).FirstOrDefault(); if (shopVistiInfo != null) { if (refund.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { List <OrderItemInfo> list = ( from d in context.OrderItemInfo where d.OrderId == refund.OrderId select d).ToList(); foreach (OrderItemInfo orderItemInfo in list) { ShopVistiInfo saleCounts = shopVistiInfo; saleCounts.SaleCounts = saleCounts.SaleCounts - orderItemInfo.Quantity; } } else if (refund.IsReturn) { ShopVistiInfo saleCounts1 = shopVistiInfo; saleCounts1.SaleCounts = saleCounts1.SaleCounts - refund.OrderItemInfo.ReturnQuantity; } ShopVistiInfo saleAmounts = shopVistiInfo; saleAmounts.SaleAmounts = saleAmounts.SaleAmounts - refund.Amount; context.SaveChanges(); } }
/// <summary> /// 申请退款 /// </summary> /// <param name="orderRefundInfo">订单退款信息</param> public void ApplyRefund(OrderRefundInfo orderRefundInfo) { DbParameter[] parms = { GenerateInParam("@storeid", SqlDbType.Int, 4, orderRefundInfo.StoreId), GenerateInParam("@storename", SqlDbType.NVarChar, 60, orderRefundInfo.StoreName), GenerateInParam("@oid", SqlDbType.Int, 4, orderRefundInfo.Oid), GenerateInParam("@osn", SqlDbType.VarChar, 30, orderRefundInfo.OSN), GenerateInParam("@uid", SqlDbType.Int, 4, orderRefundInfo.Uid), GenerateInParam("@state", SqlDbType.TinyInt, 1, orderRefundInfo.State), GenerateInParam("@applytime", SqlDbType.DateTime, 8, orderRefundInfo.ApplyTime), GenerateInParam("@paymoney", SqlDbType.Decimal, 8, orderRefundInfo.PayMoney), GenerateInParam("@refundmoney", SqlDbType.Decimal, 8, orderRefundInfo.RefundMoney), GenerateInParam("@refundsn", SqlDbType.VarChar, 30, orderRefundInfo.RefundSN), GenerateInParam("@refundsystemname", SqlDbType.VarChar, 20, orderRefundInfo.RefundSystemName), GenerateInParam("@refundfriendname", SqlDbType.NVarChar, 30, orderRefundInfo.RefundFriendName), GenerateInParam("@refundtime", SqlDbType.DateTime, 8, orderRefundInfo.RefundTime), GenerateInParam("@paysn", SqlDbType.VarChar, 30, orderRefundInfo.PaySN), GenerateInParam("@paysystemname", SqlDbType.VarChar, 20, orderRefundInfo.PaySystemName), GenerateInParam("@payfriendname", SqlDbType.NVarChar, 30, orderRefundInfo.PayFriendName) }; RDBSHelper.ExecuteNonQuery(CommandType.StoredProcedure, string.Format("{0}applyrefund", RDBSHelper.RDBSTablePre), parms); }
public void OnCancelOrderRefund(ResturantPlatformType platformType, OrderRefundInfo info) { using (Way.Lib.CLog log = new Way.Lib.CLog("用户取消退单")) { log.LogJson(info); } }
public ActionResult Detail(long id) { OrderRefundInfo orderRefund = ServiceHelper.Create <IRefundService>().GetOrderRefund(id, base.CurrentUser.Id); ViewBag.UserName = base.CurrentUser.UserName; return(View(orderRefund)); }
static void handleOrderAgreeRefund(Newtonsoft.Json.Linq.JObject jsonObj) { var message = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonObj.Value <string>("message")); var orderid = message.Value <string>("orderId"); string reason = message.Value <string>("reason"); var refundInfo = new OrderRefundInfo() { OrderID = orderid, Reason = reason, Money = message.Value <double?>("totalPrice") }; try { var goodsList = (Newtonsoft.Json.Linq.JArray)message["goodsList"]; for (int i = 0; i < goodsList.Count; i++) { var good = goodsList[i]; RefundDishInfo info = new RefundDishInfo(); info.DishName = good.Value <string>("name"); info.Quantity = good.Value <int>("quantity"); info.Price = good.Value <double>("price"); info.RefundPrice = good.Value <double>("price"); refundInfo.RefundDishInfos.Add(info); } } catch { } ResturantFactory.ResturantListener.OnOrderRefundCompleted(ResturantPlatformType.Ele, refundInfo); }
/// <summary> /// 审核订单退款申请 /// </summary> /// <param name="approveStatus">1:通过;0:拒绝</param> private void Approve(int approveStatus, OrderRefundInfo orderRefund) { var submitOrderRefund = orderRefund; string returnUrl = "/mobileadmin/orderrefunddetail.html?id=" + orderRefund.Id; switch (submitOrderRefund.Status) { case (int)OrderRefundStatus.Submit: CheckAdminPower("OrderRefundApprove", PowerCheckType.Single); //如果是团购单,且拼团正在进行中,暂不能申请退款 var order = OrderBLL.Read(submitOrderRefund.OrderId); if (order.IsActivity == (int)OrderKind.GroupBuy && order.FavorableActivityId > 0) { var groupBuy = GroupBuyBLL.Read(order.FavorableActivityId); if (groupBuy.StartTime <= DateTime.Now && groupBuy.EndTime >= DateTime.Now && groupBuy.Quantity > groupBuy.SignCount) { ScriptHelper.AlertFront("拼团正在进行,暂不能退款", returnUrl); } } if (approveStatus == (int)BoolType.True) { submitOrderRefund.Status = (int)OrderRefundStatus.Approve; submitOrderRefund.Remark = "系统审核通过,等待处理退款: "; } else { submitOrderRefund.Status = (int)OrderRefundStatus.Reject; submitOrderRefund.Remark = "系统审核不通过: "; } break; case (int)OrderRefundStatus.Returning: ScriptHelper.AlertFront("正在处理退款,请不要重复退款", returnUrl); break; case (int)OrderRefundStatus.HasReturn: ScriptHelper.AlertFront("退款已完成,请不要重复退款", returnUrl); break; case (int)OrderRefundStatus.Reject: ScriptHelper.AlertFront("退款已被拒绝,请不要重复退款", returnUrl); break; default: ScriptHelper.AlertFront("无效的操作", returnUrl); break; } OrderRefundBLL.Update(submitOrderRefund); //退款操作记录 AddOrderRefundAction(submitOrderRefund, approveStatus); AdminLogBLL.Add(ShopLanguage.ReadLanguage("UpdateRecord"), ShopLanguage.ReadLanguage("OrderRefund"), submitOrderRefund.Id); ScriptHelper.AlertFront("操作成功", returnUrl); }
public void Update(OrderRefundInfo entity) { using (var conn = new SqlConnection(connectString)) { string sql = @"UPDATE OrderRefund SET RefundNumber = @RefundNumber, OrderId = @OrderId, OrderNumber = @OrderNumber, OrderDetailId = @OrderDetailId, RefundCount = @RefundCount, RefundBalance = @RefundBalance, RefundMoney = @RefundMoney, RefundPayKey = @RefundPayKey, RefundPayName = @RefundPayName, BatchNo = @BatchNo, Status = @Status, TmCreate = @TmCreate, TmRefund = @TmRefund, RefundRemark = @RefundRemark, Remark = @Remark, IsCommented = @IsCommented, TmComment = @TmComment, CommentContent = @CommentContent, UserType = @UserType, UserId = @UserId, UserName = @UserName, OwnerId = @OwnerId where Id=@Id"; conn.Execute(sql, entity); } }
public int Add(OrderRefundInfo entity) { using (var conn = new SqlConnection(connectString)) { string sql = @"INSERT INTO OrderRefund( RefundNumber,OrderId,OrderNumber,OrderDetailId,RefundCount,RefundBalance,RefundMoney,RefundPayKey,RefundPayName,BatchNo,Status,TmCreate,TmRefund,RefundRemark,Remark,IsCommented,TmComment,CommentContent,UserType,UserId,UserName,OwnerId) VALUES(@RefundNumber,@OrderId,@OrderNumber,@OrderDetailId,@RefundCount,@RefundBalance,@RefundMoney,@RefundPayKey,@RefundPayName,@BatchNo,@Status,@TmCreate,@TmRefund,@RefundRemark,@Remark,@IsCommented,@TmComment,@CommentContent,@UserType,@UserId,@UserName,@OwnerId); select SCOPE_IDENTITY()"; return(conn.Query <int>(sql, entity).Single()); } }
protected override void PageLoad() { base.PageLoad(); int id = RequestHelper.GetQueryString <int>("id"); orderRefund = OrderRefundBLL.Read(id); order = OrderBLL.Read(orderRefund.OrderId); order.OrderDetailList = OrderDetailBLL.ReadList(orderRefund.OrderId); topNav = 0; }
/// <summary> /// 获得订单退款列表 /// </summary> /// <param name="pageSize">每页数</param> /// <param name="pageNumber">当前页数</param> /// <param name="condition">条件</param> /// <returns></returns> public static List <OrderRefundInfo> GetOrderRefundList(int pageSize, int pageNumber, string condition) { List <OrderRefundInfo> orderRefundList = new List <OrderRefundInfo>(); IDataReader reader = BrnShop.Core.BSPData.RDBS.GetOrderRefundList(pageSize, pageNumber, condition); while (reader.Read()) { OrderRefundInfo orderRefundInfo = BuildOrderRefundFromReader(reader); orderRefundList.Add(orderRefundInfo); } reader.Close(); return(orderRefundList); }
private void UpdateProductVisti(OrderRefundInfo refund, DateTime payDate) { OrderItemInfo orderItemInfo = refund.OrderItemInfo; ProductInfo productInfo = new ProductInfo(); ProductVistiInfo productVistiInfo = new ProductVistiInfo(); if (refund.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { List <OrderItemInfo> list = ( from d in context.OrderItemInfo where d.OrderId == refund.OrderId select d).ToList(); foreach (OrderItemInfo orderItemInfo1 in list) { productInfo = context.ProductInfo.FirstOrDefault((ProductInfo d) => d.Id == orderItemInfo1.ProductId); if (productInfo != null) { ProductInfo saleCounts = productInfo; saleCounts.SaleCounts = saleCounts.SaleCounts - orderItemInfo1.Quantity; } productVistiInfo = context.ProductVistiInfo.FindBy((ProductVistiInfo d) => d.ProductId == orderItemInfo1.ProductId && (d.Date == payDate.Date)).FirstOrDefault(); if (productVistiInfo == null) { continue; } ProductVistiInfo saleCounts1 = productVistiInfo; saleCounts1.SaleCounts = saleCounts1.SaleCounts - orderItemInfo.Quantity; ProductVistiInfo saleAmounts = productVistiInfo; saleAmounts.SaleAmounts = saleAmounts.SaleAmounts - refund.Amount; } } else if (refund.IsReturn) { productInfo = context.ProductInfo.FirstOrDefault((ProductInfo d) => d.Id == refund.OrderItemInfo.ProductId); if (productInfo != null) { ProductInfo productInfo1 = productInfo; productInfo1.SaleCounts = productInfo1.SaleCounts - refund.OrderItemInfo.ReturnQuantity; } productVistiInfo = context.ProductVistiInfo.FindBy((ProductVistiInfo item) => item.ProductId == orderItemInfo.ProductId && (item.Date == payDate.Date)).FirstOrDefault(); if (productVistiInfo != null) { ProductVistiInfo productVistiInfo1 = productVistiInfo; productVistiInfo1.SaleCounts = productVistiInfo1.SaleCounts - orderItemInfo.Quantity; ProductVistiInfo saleAmounts1 = productVistiInfo; saleAmounts1.SaleAmounts = saleAmounts1.SaleAmounts - refund.Amount; } } context.SaveChanges(); }
private void Submit() { int orderId = RequestHelper.GetQueryString <int>("orderId"); int orderDetailId = RequestHelper.GetQueryString <int>("orderDetailId"); int needRefundCount = RequestHelper.GetForm <int>("refund_count"); decimal needRefundMoney = RequestHelper.GetForm <decimal>("refund_money"); string refundRemark = StringHelper.AddSafe(RequestHelper.GetForm <string>("refund_remark")); OrderRefundInfo orderRefund = new OrderRefundInfo(); orderRefund.RefundNumber = ShopCommon.CreateOrderRefundNumber(); orderRefund.OrderId = orderId; if (orderDetailId > 0) { orderRefund.OrderDetailId = orderDetailId; orderRefund.RefundCount = needRefundCount; } orderRefund.Status = (int)OrderRefundStatus.Submit; orderRefund.TmCreate = DateTime.Now; orderRefund.RefundRemark = refundRemark; orderRefund.UserType = 1; orderRefund.UserId = base.UserId; orderRefund.UserName = base.UserName; var refundMsg = JWRefund.VerifySubmitOrderRefund(orderRefund, needRefundMoney); if (refundMsg.CanRefund) { int id = OrderRefundBLL.Add(orderRefund); OrderRefundActionBLL.Add(new OrderRefundActionInfo { OrderRefundId = id, Status = (int)BoolType.True, Tm = DateTime.Now, UserType = 1, UserId = base.UserId, UserName = base.UserName, Remark = "用户提交退款申请" }); ResponseHelper.Write("ok|" + id); ResponseHelper.End(); } else { ResponseHelper.Write("error|" + refundMsg.ErrorCodeMsg); ResponseHelper.End(); } }
//增加退款操作记录 private void AddOrderRefundAction(OrderRefundInfo entity, int status) { OrderRefundActionInfo submitOrderRefundAction = new OrderRefundActionInfo { OrderRefundId = entity.Id, Status = status, Remark = entity.Remark, Tm = DateTime.Now, UserType = 2, UserId = Cookies.Admin.GetAdminID(false), UserName = Cookies.Admin.GetAdminName(false) }; OrderRefundActionBLL.Add(submitOrderRefundAction); }
protected void SubmitButton_Click(object sender, EventArgs e) { CheckAdminPower("OrderRefundApply", PowerCheckType.Single); int orderId = RequestHelper.GetQueryString <int>("orderId"); int orderDetailId = RequestHelper.GetQueryString <int>("orderDetailId"); decimal needRefundMoney = Convert.ToDecimal(RefundMoney.Text); OrderRefundInfo orderRefund = new OrderRefundInfo(); orderRefund.RefundNumber = ShopCommon.CreateOrderRefundNumber(); orderRefund.OrderId = orderId; if (orderDetailId > 0) { orderRefund.OrderDetailId = orderDetailId; orderRefund.RefundCount = Convert.ToInt32(RefundCount.Text); } orderRefund.Status = (int)OrderRefundStatus.Submit; orderRefund.TmCreate = DateTime.Now; orderRefund.RefundRemark = RefundRemark.Text; orderRefund.UserType = 2; orderRefund.UserId = Cookies.Admin.GetAdminID(false); orderRefund.UserName = Cookies.Admin.GetAdminName(false); var refundMsg = JWRefund.VerifySubmitOrderRefund(orderRefund, needRefundMoney); if (refundMsg.CanRefund) { int id = OrderRefundBLL.Add(orderRefund); OrderRefundActionBLL.Add(new OrderRefundActionInfo { OrderRefundId = id, Status = (int)BoolType.True, Tm = DateTime.Now, UserType = 2, UserId = orderRefund.UserId, UserName = orderRefund.UserName, Remark = "系统提交退款申请" }); AdminLogBLL.Add(ShopLanguage.ReadLanguage("AddRecord"), ShopLanguage.ReadLanguage("OrderRefund"), id); ScriptHelper.Alert("退款申请成功", RequestHelper.RawUrl); } else { ScriptHelper.Alert(refundMsg.ErrorCodeMsg); } }
private double GetNextSecond(OrderRefundInfo data) { double result = -999; var sitesetser = ServiceHelper.Create <ISiteSettingService>(); var siteSetting = sitesetser.GetSiteSettings(); if (data != null) { if (data.SellerAuditStatus == OrderRefundInfo.OrderRefundAuditStatus.WaitAudit || data.SellerAuditStatus == OrderRefundInfo.OrderRefundAuditStatus.WaitDelivery || data.SellerAuditStatus == OrderRefundInfo.OrderRefundAuditStatus.WaitReceiving ) { int num = 0; DateTime _time = DateTime.Now; switch (data.SellerAuditStatus) { case OrderRefundInfo.OrderRefundAuditStatus.WaitAudit: _time = data.ApplyDate; num = siteSetting.AS_ShopConfirmTimeout; break; case OrderRefundInfo.OrderRefundAuditStatus.WaitDelivery: _time = data.SellerAuditDate; num = siteSetting.AS_SendGoodsCloseTimeout; break; case OrderRefundInfo.OrderRefundAuditStatus.WaitReceiving: _time = data.BuyerDeliverDate.GetValueOrDefault(); num = siteSetting.AS_ShopNoReceivingTimeout; break; } TimeSpan ts = (DateTime.Now - _time); if (num > 0) { result = num * 24 * 60 * 60; result = result - ts.TotalSeconds; if (result < 0) { result = -1; } } } } return(result); }
/// <summary> /// 订单退款减少销量 /// </summary> /// <param name="orderids"></param> public void ReduceSaleCount(OrderRefundInfo refund) { var order = DbFactory.Default.Get <OrderInfo>().Where(p => p.Id == refund.OrderId).FirstOrDefault(); if (order == null) { return; } var orderItem = OrderApplication.GetOrderItem(refund.OrderItemId); //限时购销量 var orderid = orderItem.OrderId; long productid = orderItem.ProductId; var result = DbFactory.Default.Get <FlashSaleInfo>().Where(p => p.Id == orderItem.FlashSaleId && p.ProductId == productid && p.BeginDate <DateTime.Now && p.EndDate> DateTime.Now && p.Status == FlashSaleInfo.FlashSaleStatus.Ongoing).FirstOrDefault(); if (result != null) { var refoundInfo = DbFactory.Default.Get <OrderRefundInfo>().Where(p => p.OrderId == orderid).FirstOrDefault(); if (refoundInfo != null) { long saleCount = 0; //退款取订单详情数量 if (refoundInfo.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { saleCount = orderItem.Quantity; } //退货退款,取退货数量 else if (refoundInfo.RefundMode == OrderRefundInfo.OrderRefundMode.ReturnGoodsRefund) { if (refund.IsReturn) { //判断是否有会员发货,没有会员发货视为弃货,不扣销量 if (!string.IsNullOrEmpty(refoundInfo.ExpressCompanyName) && !string.IsNullOrEmpty(refoundInfo.ShipOrderNumber)) { saleCount = refoundInfo.ReturnQuantity; } } } //弃货不扣销量 var count = result.SaleCount - (int)saleCount; result.SaleCount = count < 0 ? 0 : count; DbFactory.Default.Update(result); } } }
/// <summary> /// 添加部分退单商品信息 /// </summary> /// <param name="cdto"></param> /// <returns></returns> public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO AddRefundComdtyInfoExt(Jinher.AMP.BTP.Deploy.CustomDTO.BOrderRefundInfoCDTO cdto) { Deploy.CustomDTO.ResultDTO ret = new Deploy.CustomDTO.ResultDTO() { isSuccess = false, ResultCode = 1, Message = "添加失败!" }; if (cdto == null) { ret.Message = "参数不能为空!"; return(ret); } BE.OrderRefundInfo refundInfo = new OrderRefundInfo(); refundInfo.Id = cdto.id; refundInfo.OrderId = cdto.orderId; refundInfo.ItemId = cdto.itemId; refundInfo.Refund = cdto.refund; refundInfo.isDelivery = cdto.isDelivery; refundInfo.OrderRefundId = cdto.orderRefundId; refundInfo.SubId = cdto.subId; refundInfo.SubTime = cdto.subTime; refundInfo.ModifiedOn = cdto.modifiedOn; refundInfo.EntityState = System.Data.EntityState.Added; try { ContextSession contextSession = ContextFactory.CurrentThreadContext; contextSession.SaveObject(refundInfo); int change = contextSession.SaveChanges(); ret.isSuccess = change > 0; if (ret.isSuccess) { ret.Message = "添加成功!"; } return(ret); } catch (Exception ex) { ret.Message = ex.Message; } return(ret); }
protected override void PageLoad() { base.PageLoad(); string action = RequestHelper.GetQueryString <string>("Action"); if (action == "CancelRefund") { this.CancelRefund(); } int id = RequestHelper.GetQueryString <int>("id"); orderRefund = OrderRefundBLL.Read(id); orderRefundActionList = OrderRefundActionBLL.ReadList(id); order = OrderBLL.Read(orderRefund.OrderId); Title = "退款记录"; }
/// <summary> /// 从IDataReader创建OrderRefundInfo /// </summary> public static OrderRefundInfo BuildOrderRefundFromReader(IDataReader reader) { OrderRefundInfo orderRefundInfo = new OrderRefundInfo(); orderRefundInfo.Oid = TypeHelper.ObjectToInt(reader["oid"]); orderRefundInfo.OSN = reader["osn"].ToString(); orderRefundInfo.Uid = TypeHelper.ObjectToInt(reader["uid"]); orderRefundInfo.State = TypeHelper.ObjectToInt(reader["state"]); orderRefundInfo.ApplyTime = TypeHelper.ObjectToDateTime(reader["applytime"]); orderRefundInfo.PayMoney = TypeHelper.ObjectToDecimal(reader["paymoney"]); orderRefundInfo.RefundMoney = TypeHelper.ObjectToDecimal(reader["refundmoney"]); orderRefundInfo.RefundSN = reader["refundsn"].ToString(); orderRefundInfo.RefundSystemName = reader["refundsystemname"].ToString(); orderRefundInfo.RefundFriendName = reader["refundfriendname"].ToString(); orderRefundInfo.RefundTime = TypeHelper.ObjectToDateTime(reader["refundtime"]); orderRefundInfo.PaySN = reader["paysn"].ToString(); orderRefundInfo.PaySystemName = reader["paysystemname"].ToString(); orderRefundInfo.PayFriendName = reader["payfriendname"].ToString(); return(orderRefundInfo); }
public void SellerConfirmRefundGood(long id, string sellerName) { OrderRefundInfo nullable = context.OrderRefundInfo.FindById <OrderRefundInfo>(id); if (nullable.SellerAuditStatus != OrderRefundInfo.OrderRefundAuditStatus.WaitReceiving) { throw new HimallException("只有待收货状态的退货才能进行确认收货操作"); } nullable.SellerAuditStatus = OrderRefundInfo.OrderRefundAuditStatus.Audited; nullable.SellerConfirmArrivalDate = new DateTime?(DateTime.Now); nullable.ManagerConfirmDate = DateTime.Now; OrderOperationLogInfo orderOperationLogInfo = new OrderOperationLogInfo() { Operator = sellerName, OrderId = nullable.OrderId, OperateDate = DateTime.Now, OperateContent = "商家确认收到退货" }; context.OrderOperationLogInfo.Add(orderOperationLogInfo); context.SaveChanges(); }
public void UserConfirmRefundGood(long id, string sellerName, string expressCompanyName, string shipOrderNumber) { OrderRefundInfo nullable = context.OrderRefundInfo.FindById <OrderRefundInfo>(id); if (nullable.SellerAuditStatus != OrderRefundInfo.OrderRefundAuditStatus.WaitDelivery) { throw new HimallException("只有待等待发货状态的能进行发货操作"); } nullable.ShipOrderNumber = shipOrderNumber; nullable.ExpressCompanyName = expressCompanyName; nullable.SellerAuditStatus = OrderRefundInfo.OrderRefundAuditStatus.WaitReceiving; nullable.BuyerDeliverDate = new DateTime?(DateTime.Now); OrderOperationLogInfo orderOperationLogInfo = new OrderOperationLogInfo() { Operator = sellerName, OrderId = nullable.OrderId, OperateDate = DateTime.Now, OperateContent = "买家确认发回产品" }; context.OrderOperationLogInfo.Add(orderOperationLogInfo); context.SaveChanges(); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { CheckAdminPower("OrderRefundApprove", PowerCheckType.Single); int orderRefundId = RequestHelper.GetQueryString <int>("Id"); orderRefund = OrderRefundBLL.Read(orderRefundId); if (orderRefund.Id > 0) { order = OrderBLL.Read(orderRefund.OrderId); if (orderRefund.OrderDetailId > 0) { orderDetailList.Add(OrderDetailBLL.Read(orderRefund.OrderDetailId)); } else { orderDetailList = OrderDetailBLL.ReadList(orderRefund.OrderId); } orderRefundActionList = OrderRefundActionBLL.ReadList(orderRefund.Id); } } }
public static int Add(OrderRefundInfo entity) { int id = dal.Add(entity); //增加订单详细表中的退款商品数量 if (id > 0) { //退商品 if (entity.OrderDetailId > 0) { OrderDetailBLL.ChangeRefundCount(entity.OrderDetailId, entity.RefundCount, ChangeAction.Plus); } //退订单 else { foreach (var orderDetail in OrderDetailBLL.ReadList(entity.OrderId)) { OrderDetailBLL.ChangeRefundCount(orderDetail.Id, orderDetail.BuyCount - orderDetail.RefundCount, ChangeAction.Plus); } } } return(id); }
public object GetOrders(int?status, int pageIndex, int pageSize = 8) { CheckUserLogin(); IShopAppletService iShopAppletService = ServiceProvider.Instance <IShopAppletService> .Create; var orderService = ServiceProvider.Instance <IOrderService> .Create; var allOrders = orderService.GetTopOrders(int.MaxValue, CurrentUser.Id); //待评价 var queryModelAll = new OrderQuery() { Status = OrderInfo.OrderOperateStatus.Finish, UserId = CurrentUser.Id, PageSize = int.MaxValue, PageNo = 1, Commented = false }; var allOrderCounts = allOrders.Count(); var waitingForComments = orderService.GetOrders <OrderInfo>(queryModelAll).Total; var waitingForRecieve = allOrders.Count(item => item.OrderStatus == OrderInfo.OrderOperateStatus.WaitReceiving); //获取待收货订单数 var waitingForPay = allOrders.Count(item => item.OrderStatus == OrderInfo.OrderOperateStatus.WaitPay); //获取待支付订单数 if (status.HasValue && status == 0) { status = null; } var queryModel = new OrderQuery() { Status = (OrderInfo.OrderOperateStatus?)status, UserId = CurrentUser.Id, PageSize = pageSize, PageNo = pageIndex }; if (queryModel.Status.HasValue && queryModel.Status.Value == OrderInfo.OrderOperateStatus.WaitReceiving) { if (queryModel.MoreStatus == null) { queryModel.MoreStatus = new List <OrderInfo.OrderOperateStatus>() { }; } queryModel.MoreStatus.Add(OrderInfo.OrderOperateStatus.WaitSelfPickUp); } if (status.GetValueOrDefault() == (int)OrderInfo.OrderOperateStatus.Finish) { queryModel.Commented = false;//只查询未评价的订单 } ObsoletePageModel <OrderInfo> orders = orderService.GetOrders <OrderInfo>(queryModel); var productService = ServiceProvider.Instance <IProductService> .Create; var vshopService = ServiceProvider.Instance <IVShopService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); var result = orders.Models.ToArray().Select(item => { if (item.OrderStatus >= OrderInfo.OrderOperateStatus.WaitDelivery) { orderService.CalculateOrderItemRefund(item.Id); } var vshop = vshopService.GetVShopByShopId(item.ShopId); var _ordrefobj = orderRefundService.GetOrderRefundByOrderId(item.Id) ?? new OrderRefundInfo { Id = 0 }; if (item.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery && item.OrderStatus != OrderInfo.OrderOperateStatus.WaitSelfPickUp) { _ordrefobj = new OrderRefundInfo { Id = 0 }; } int?ordrefstate = (_ordrefobj == null ? null : (int?)_ordrefobj.SellerAuditStatus); ordrefstate = (ordrefstate > 4 ? (int?)_ordrefobj.ManagerConfirmStatus : ordrefstate); //参照PC端会员中心的状态描述信息 string statusText = item.OrderStatus.ToDescription(); if (item.OrderStatus == OrderInfo.OrderOperateStatus.WaitDelivery || item.OrderStatus == OrderInfo.OrderOperateStatus.WaitSelfPickUp) { if (ordrefstate.HasValue && ordrefstate != 0 && ordrefstate != 4) { statusText = "退款中"; } } var shopInfo = ServiceProvider.Instance <IShopService> .Create.GetShop(item.ShopId); if (shopInfo != null) { shopInfo.Logo = Himall.Core.HimallIO.GetRomoteImagePath(shopInfo.Logo); //是否可退货、退款 bool IsShowReturn = (item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitDelivery || item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitSelfPickUp) && !item.RefundStats.HasValue && item.PaymentType != Himall.Model.OrderInfo.PaymentTypes.CashOnDelivery && item.PaymentType != Himall.Model.OrderInfo.PaymentTypes.None && (item.FightGroupCanRefund == null || item.FightGroupCanRefund == true) && ordrefstate.GetValueOrDefault().Equals(0); return(new { PayCode = item.PayCode, ShopId = item.ShopId, ShopLogo = shopInfo.Logo, OrderAmount = item.OrderAmount, OrderId = item.Id, StatusText = statusText, Status = item.OrderStatus, orderType = item.OrderType, orderTypeName = item.OrderType.ToDescription(), shopname = item.ShopName, vshopId = vshop == null ? 0 : vshop.Id, Amount = item.OrderTotalAmount.ToString("F2"), Quantity = item.OrderProductQuantity, commentCount = item.OrderCommentInfo.Count(), pickupCode = item.PickupCode, EnabledRefundAmount = item.OrderEnabledRefundAmount, LineItems = item.OrderItemInfo.Select(a => { var prodata = productService.GetProduct(a.ProductId); ProductTypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.GetType(prodata.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; var itemStatusText = ""; var itemrefund = orderRefunds.Where(or => or.OrderItemId == a.Id).FirstOrDefault(d => d.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund); int?itemrefstate = (itemrefund == null ? 0 : (int?)itemrefund.SellerAuditStatus); itemrefstate = (itemrefstate > 4 ? (int?)itemrefund.ManagerConfirmStatus : itemrefstate); if (itemrefund != null) { //默认为商家处理进度 if (itemrefstate == 4) { //商家拒绝 itemStatusText = ""; } else { itemStatusText = "售后处理中"; } } if (itemrefstate > 4) {//如果商家已经处理完,则显示平台处理进度 if (itemrefstate == 7) { itemStatusText = "退款成功"; } } var activeModel = ServiceProvider.Instance <IFightGroupService> .Create.GetActiveByProId(a.ProductId); return new { Status = itemrefstate, StatusText = itemStatusText, Id = activeModel.Id, productId = a.ProductId, Name = a.ProductName, Image = activeModel.ProductDefaultImage, Amount = a.Quantity, Price = a.SalePrice, Unit = prodata == null ? "" : prodata.MeasureUnit, SkuText = colorAlias + ":" + a.Color + " " + sizeAlias + ":" + a.Size + " " + versionAlias + ":" + a.Version, color = a.Color, size = a.Size, version = a.Version, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, RefundStats = itemrefstate, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), EnabledRefundAmount = a.EnabledRefundAmount, IsShowRefund = IsShowReturn, IsShowAfterSale = IsShowReturn, SalePrice = iShopAppletService.GetSkuSalePrice(a.SkuId, a.ProductId) }; }), RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id, IsShowLogistics = !string.IsNullOrWhiteSpace(item.ShipOrderNumber), ShipOrderNumber = item.ShipOrderNumber, IsShowCreview = item.OrderStatus == OrderInfo.OrderOperateStatus.Finish, IsShowPreview = false, Invoice = item.InvoiceType.ToDescription(), InvoiceValue = (int)item.InvoiceType, InvoiceContext = item.InvoiceContext, InvoiceTitle = item.InvoiceTitle, PaymentType = item.PaymentType.ToDescription(), PaymentTypeValue = (int)item.PaymentType, IsShowClose = (item.OrderStatus == OrderInfo.OrderOperateStatus.WaitPay), IsShowFinishOrder = (item.OrderStatus == OrderInfo.OrderOperateStatus.WaitReceiving), IsShowRefund = IsShowReturn, IsShowReturn = IsShowReturn, IsShowTakeCodeQRCode = !string.IsNullOrWhiteSpace(item.PickupCode), OrderDate = item.OrderDate, SupplierId = 0, ShipperName = string.Empty, StoreName = item.ShopName, IsShowCertification = false, CreviewText = !HasAppendComment(item) ? "评价订单" : "追加评论", ProductCommentPoint = 0 }); } else { return(null); } }); return(Json(new { Status = "OK", AllOrderCounts = allOrderCounts, WaitingForComments = waitingForComments, WaitingForRecieve = waitingForRecieve, WaitingForPay = waitingForPay, Data = result })); }
public object GetOrders(int?orderStatus, int pageNo, int pageSize = 8) { CheckUserLogin(); var allOrders = ServiceProvider.Instance <IOrderService> .Create.GetTopOrders(int.MaxValue, CurrentUser.Id); var orderService = ServiceProvider.Instance <IOrderService> .Create; //待评价 var queryModelAll = new OrderQuery() { Status = OrderInfo.OrderOperateStatus.Finish, UserId = CurrentUser.Id, PageSize = int.MaxValue, PageNo = 1, Commented = false }; var allOrderCounts = allOrders.Count(); var waitingForComments = orderService.GetOrders <OrderInfo>(queryModelAll).Total; var waitingForRecieve = allOrders.Count(item => item.OrderStatus == OrderInfo.OrderOperateStatus.WaitReceiving); //获取待收货订单数 var waitingForPay = allOrders.Count(item => item.OrderStatus == OrderInfo.OrderOperateStatus.WaitPay); //获取待支付订单数 if (orderStatus.HasValue && orderStatus == 0) { orderStatus = null; } var queryModel = new OrderQuery() { Status = (OrderInfo.OrderOperateStatus?)orderStatus, UserId = CurrentUser.Id, PageSize = pageSize, PageNo = pageNo }; if (queryModel.Status.HasValue && queryModel.Status.Value == OrderInfo.OrderOperateStatus.WaitReceiving) { if (queryModel.MoreStatus == null) { queryModel.MoreStatus = new List <OrderInfo.OrderOperateStatus>() { }; } queryModel.MoreStatus.Add(OrderInfo.OrderOperateStatus.WaitSelfPickUp); } if (orderStatus.GetValueOrDefault() == (int)OrderInfo.OrderOperateStatus.Finish) { queryModel.Commented = false;//只查询未评价的订单 } ObsoletePageModel <OrderInfo> orders = orderService.GetOrders <OrderInfo>(queryModel); var productService = ServiceProvider.Instance <IProductService> .Create; var vshopService = ServiceProvider.Instance <IVShopService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var orderItems = OrderApplication.GetOrderItemsByOrderId(orders.Models.Select(p => p.Id)); var orderRefunds = OrderApplication.GetOrderRefunds(orderItems.Select(p => p.Id)); var result = orders.Models.ToArray().Select(item => { if (item.OrderStatus >= OrderInfo.OrderOperateStatus.WaitDelivery) { orderService.CalculateOrderItemRefund(item.Id); } var vshop = vshopService.GetVShopByShopId(item.ShopId); var _ordrefobj = orderRefundService.GetOrderRefundByOrderId(item.Id) ?? new OrderRefundInfo { Id = 0 }; if (item.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery && item.OrderStatus != OrderInfo.OrderOperateStatus.WaitSelfPickUp) { _ordrefobj = new OrderRefundInfo { Id = 0 }; } int?ordrefstate = (_ordrefobj == null ? null : (int?)_ordrefobj.SellerAuditStatus); ordrefstate = (ordrefstate > 4 ? (int?)_ordrefobj.ManagerConfirmStatus : ordrefstate); return(new { id = item.Id, status = item.OrderStatus.ToDescription(), orderStatus = item.OrderStatus, orderType = item.OrderType, orderTypeName = item.OrderType.ToDescription(), shopname = item.ShopName, vshopId = vshop == null ? 0 : vshop.Id, orderTotalAmount = item.OrderTotalAmount.ToString("F2"), productCount = item.OrderProductQuantity, commentCount = item.OrderCommentInfo.Count(), pickupCode = item.PickupCode, EnabledRefundAmount = item.OrderEnabledRefundAmount, itemInfo = item.OrderItemInfo.Select(a => { var prodata = productService.GetProduct(a.ProductId); ProductTypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.GetType(prodata.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; var itemrefund = orderRefunds.Where(or => or.OrderItemId == a.Id).FirstOrDefault(d => d.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund); int?itemrefstate = (itemrefund == null ? null : (int?)itemrefund.SellerAuditStatus); itemrefstate = (itemrefstate > 4 ? (int?)itemrefund.ManagerConfirmStatus : itemrefstate); return new { productId = a.ProductId, productName = a.ProductName, image = Core.HimallIO.GetRomoteProductSizeImage(a.ThumbnailsUrl, 1, (int)Himall.CommonModel.ImageSize.Size_350), count = a.Quantity, price = a.SalePrice, Unit = prodata == null ? "" : prodata.MeasureUnit, color = a.Color, size = a.Size, version = a.Version, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, RefundStats = itemrefstate, OrderRefundId = (itemrefund == null ? 0 : itemrefund.Id), EnabledRefundAmount = a.EnabledRefundAmount }; }), RefundStats = ordrefstate, OrderRefundId = _ordrefobj.Id, HasExpressStatus = !string.IsNullOrWhiteSpace(item.ShipOrderNumber), HasAppendComment = HasAppendComment(item), Invoice = item.InvoiceType.ToDescription(), InvoiceValue = (int)item.InvoiceType, InvoiceContext = item.InvoiceContext, InvoiceTitle = item.InvoiceTitle, PaymentType = item.PaymentType.ToDescription(), PaymentTypeValue = (int)item.PaymentType, CanRefund = (item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitDelivery || item.OrderStatus == Himall.Model.OrderInfo.OrderOperateStatus.WaitSelfPickUp) && !item.RefundStats.HasValue && item.PaymentType != Himall.Model.OrderInfo.PaymentTypes.CashOnDelivery && item.PaymentType != Himall.Model.OrderInfo.PaymentTypes.None && (item.FightGroupCanRefund == null || item.FightGroupCanRefund == true) && ordrefstate.GetValueOrDefault().Equals(0) }); }); return(Json(new { Success = "true", AllOrderCounts = allOrderCounts, WaitingForComments = waitingForComments, WaitingForRecieve = waitingForRecieve, WaitingForPay = waitingForPay, Orders = result })); }
public JsonResult RefundApply(OrderRefundInfo info) { decimal? nullable; OrderInfo order = ServiceHelper.Create <IOrderService>().GetOrder(info.OrderId, base.CurrentUser.Id); if (order == null) { throw new HimallException("该订单已删除或不属于该用户"); } if (order.OrderStatus < OrderInfo.OrderOperateStatus.WaitDelivery) { throw new HimallException("错误的售后申请,订单状态有误"); } if (order.OrderStatus == OrderInfo.OrderOperateStatus.WaitDelivery) { info.RefundMode = OrderRefundInfo.OrderRefundMode.OrderRefund; info.ReturnQuantity = 0; } if (info.RefundType == 1) { info.ReturnQuantity = 0; info.IsReturn = false; } if (info.ReturnQuantity < 0) { throw new HimallException("错误的退货数量"); } OrderItemInfo orderItemInfo = order.OrderItemInfo.FirstOrDefault((OrderItemInfo a) => a.Id == info.OrderItemId); if (orderItemInfo == null && info.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund) { throw new HimallException("该订单条目已删除或不属于该用户"); } if (info.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund) { decimal amount = info.Amount; decimal?enabledRefundAmount = orderItemInfo.EnabledRefundAmount; decimal refundPrice = orderItemInfo.RefundPrice; if (enabledRefundAmount.HasValue) { nullable = new decimal?(enabledRefundAmount.GetValueOrDefault() - refundPrice); } else { nullable = null; } decimal?nullable1 = nullable; if ((amount <= nullable1.GetValueOrDefault() ? false : nullable1.HasValue)) { throw new HimallException("退款金额不能超过订单的可退金额"); } if (info.ReturnQuantity > orderItemInfo.Quantity - orderItemInfo.ReturnQuantity) { throw new HimallException("退货数量不可以超出可退数量"); } } else { if (order.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery) { throw new HimallException("错误的订单退款申请,订单状态有误"); } info.IsReturn = false; info.ReturnQuantity = 0; if (info.Amount > order.OrderEnabledRefundAmount) { throw new HimallException("退款金额不能超过订单的实际支付金额"); } } info.IsReturn = false; if (info.ReturnQuantity > 0) { info.IsReturn = true; } if (info.RefundType == 2) { info.IsReturn = true; } if (info.IsReturn && info.ReturnQuantity < 1) { throw new HimallException("错误的退货数量"); } if (info.Amount <= new decimal(0)) { throw new HimallException("错误的退款金额"); } info.ShopId = order.ShopId; info.ShopName = order.ShopName; info.UserId = base.CurrentUser.Id; info.Applicant = base.CurrentUser.UserName; info.ApplyDate = DateTime.Now; info.Reason = OrderRefundController.HTMLEncode(info.Reason.Replace("'", "‘").Replace("\"", "”")); ServiceHelper.Create <IRefundService>().AddOrderRefund(info); return(Json(new { success = true, msg = "提交成功", id = info.Id })); }
public void OnOrderRefundCompleted(ResturantPlatformType platformType, OrderRefundInfo info) { }
/// <summary> /// 订单项退货退款 /// </summary> /// <returns></returns> public object PostApplyReturn(RefundApplyReturnPModel model) { var result = new BaseResultModel(true); CheckUserLogin(); try { OrderRefundInfo info = new OrderRefundInfo(); var ordser = ServiceProvider.Instance <IOrderService> .Create; var refundser = ServiceProvider.Instance <IRefundService> .Create; //计算可退金额 预留 ordser.CalculateOrderItemRefund(model.orderId); var order = ordser.GetOrder(model.orderId, CurrentUser.Id); if (order == null) { throw new Himall.Core.HimallException("该订单已删除或不属于该用户"); } if ((int)order.OrderStatus < 2) { throw new Himall.Core.HimallException("错误的售后申请,订单状态有误"); } if (order.OrderStatus == OrderInfo.OrderOperateStatus.WaitDelivery || order.OrderStatus == OrderInfo.OrderOperateStatus.WaitSelfPickUp) { info.RefundMode = OrderRefundInfo.OrderRefundMode.OrderRefund; info.ReturnQuantity = 0; } info.formId = model.formId; //参数处理 if (!model.refundId.HasValue) // 通过skuid获取售后编号 { if (info.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { var _tmprefund = refundser.GetOrderRefundByOrderId(model.orderId); if (_tmprefund != null) { model.refundId = _tmprefund.Id; } } else { if (!model.OrderItemId.HasValue) { if (string.IsNullOrWhiteSpace(model.skuId)) { throw new Himall.Core.HimallException("参数错误"); } foreach (var item in order.OrderItemInfo) { if (item.SkuId == model.skuId) { model.OrderItemId = item.Id; } } } } } else { if (info.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund) { var _tmprefund = refundser.GetOrderRefund(model.refundId.Value); if (_tmprefund == null) { throw new Himall.Core.HimallException("参数错误"); } model.OrderItemId = _tmprefund.OrderItemId; } } #region 表单数据 info.OrderId = model.orderId; if (null != model.OrderItemId) { info.OrderItemId = model.OrderItemId.Value; } if (null != model.refundId) { info.Id = model.refundId.Value; } info.RefundType = model.Quantity > 0 ? 2 : 1; info.ReturnQuantity = model.Quantity; info.Amount = model.RefundAmount; info.Reason = model.RefundReason; info.ContactPerson = model.ContactPerson; info.ContactCellPhone = model.ContactCellPhone; info.RefundPayType = model.RefundType; #endregion #region 初始化售后单的数据 if (info.RefundType == 1) { info.ReturnQuantity = 0; info.IsReturn = false; } if (info.ReturnQuantity < 0) { throw new Himall.Core.HimallException("错误的退货数量"); } var orderitem = order.OrderItemInfo.FirstOrDefault(a => a.Id == info.OrderItemId); if (orderitem == null && info.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund) { throw new Himall.Core.HimallException("该订单条目已删除或不属于该用户"); } if (info.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { if (order.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery && order.OrderStatus != OrderInfo.OrderOperateStatus.WaitSelfPickUp) { throw new Himall.Core.HimallException("错误的订单退款申请,订单状态有误"); } info.IsReturn = false; info.ReturnQuantity = 0; if (info.Amount > order.OrderEnabledRefundAmount) { throw new Himall.Core.HimallException("退款金额不能超过订单的实际支付金额"); } } else { if (info.Amount > (orderitem.EnabledRefundAmount - orderitem.RefundPrice)) { throw new Himall.Core.HimallException("退款金额不能超过订单的可退金额"); } if (info.ReturnQuantity > (orderitem.Quantity - orderitem.ReturnQuantity)) { throw new Himall.Core.HimallException("退货数量不可以超出可退数量"); } } info.IsReturn = false; if (info.ReturnQuantity > 0) { info.IsReturn = true; } if (info.RefundType == 2) { info.IsReturn = true; } if (info.IsReturn == true && info.ReturnQuantity < 1) { throw new Himall.Core.HimallException("错误的退货数量"); } if (info.Amount <= 0) { throw new Himall.Core.HimallException("错误的退款金额"); } info.ShopId = order.ShopId; info.ShopName = order.ShopName; info.UserId = CurrentUser.Id; info.Applicant = CurrentUser.UserName; info.ApplyDate = DateTime.Now; info.Reason = HTMLEncode(info.Reason.Replace("'", "‘").Replace("\"", "”")); #endregion if (!string.IsNullOrEmpty(model.UserCredentials)) { var certPics = model.UserCredentials.Split(','); switch (certPics.Length) { case 1: info.CertPic1 = MoveImages(certPics[0], CurrentUser.Id, info.OrderItemId); break; case 2: info.CertPic1 = MoveImages(certPics[0], CurrentUser.Id, info.OrderItemId); info.CertPic2 = MoveImages(certPics[1], CurrentUser.Id, info.OrderItemId); break; case 3: info.CertPic1 = MoveImages(certPics[0], CurrentUser.Id, info.OrderItemId); info.CertPic2 = MoveImages(certPics[1], CurrentUser.Id, info.OrderItemId); info.CertPic3 = MoveImages(certPics[2], CurrentUser.Id, info.OrderItemId); break; } } //info.RefundAccount = HTMLEncode(info.RefundAccount.Replace("'", "‘").Replace("\"", "”")); if (info.Id > 0) { refundser.ActiveRefund(info); } else { refundser.AddOrderRefund(info); } result.SetStatus(true); result.Message = "成功的申请了售后"; return(Json(new { Status = result.Status, Message = result.Message })); } catch (HimallException he) { result.SetStatus(false); result.Message = he.Message; return(Json(new { Status = result.Status, Message = result.Message })); } catch (Exception ex) { Log.Error("[SPAPI]Refund:" + ex.Message); result.SetStatus(false); result.Message = "系统内部异常"; return(Json(new { Status = result.Status, Message = result.Message })); } }
/// <summary> /// 申请订单退款 /// </summary> /// <returns></returns> public object PostApplyRefund(RefundApplyRefundPModel model) { var result = new BaseResultModel(true); CheckUserLogin(); try { var ordser = ServiceProvider.Instance <IOrderService> .Create; var refundser = ServiceProvider.Instance <IRefundService> .Create; //计算可退金额 预留 ordser.CalculateOrderItemRefund(model.orderId); //参数处理 if (!model.refundId.HasValue) { var _tmprefund = refundser.GetOrderRefundByOrderId(model.orderId); if (_tmprefund != null) { model.refundId = _tmprefund.Id; } } OrderRefundInfo info = new OrderRefundInfo(); #region 表单数据 info.OrderId = model.orderId; if (null != model.OrderItemId) { info.OrderItemId = model.OrderItemId.Value; } if (null != model.refundId) { info.Id = model.refundId.Value; } info.RefundType = 1; info.ReturnQuantity = 0; info.Reason = model.RefundReason; info.ContactPerson = model.ContactPerson; info.ContactCellPhone = model.ContactCellPhone; info.RefundPayType = model.RefundType; info.formId = model.formId; #endregion #region 初始化售后单的数据 var order = ordser.GetOrder(info.OrderId, CurrentUser.Id); info.Amount = order.OrderEnabledRefundAmount; if (order == null) { throw new Himall.Core.HimallException("该订单已删除或不属于该用户"); } if ((int)order.OrderStatus < 2) { throw new Himall.Core.HimallException("错误的售后申请,订单状态有误"); } if (order.OrderStatus == OrderInfo.OrderOperateStatus.WaitDelivery || order.OrderStatus == OrderInfo.OrderOperateStatus.WaitSelfPickUp) { info.RefundMode = OrderRefundInfo.OrderRefundMode.OrderRefund; info.ReturnQuantity = 0; } else { throw new Himall.Core.HimallException("仅待发货或待自提订单可以申请订单退款"); } if (info.RefundType == 1) { info.ReturnQuantity = 0; info.IsReturn = false; } if (info.ReturnQuantity < 0) { throw new Himall.Core.HimallException("错误的退货数量"); } var orderitem = order.OrderItemInfo.FirstOrDefault(a => a.Id == info.OrderItemId); if (orderitem == null && info.RefundMode != OrderRefundInfo.OrderRefundMode.OrderRefund) { throw new Himall.Core.HimallException("该订单条目已删除或不属于该用户"); } if (info.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { if (order.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery && order.OrderStatus != OrderInfo.OrderOperateStatus.WaitSelfPickUp) { throw new Himall.Core.HimallException("错误的订单退款申请,订单状态有误"); } info.IsReturn = false; info.ReturnQuantity = 0; if (info.Amount > order.OrderEnabledRefundAmount) { throw new Himall.Core.HimallException("退款金额不能超过订单的实际支付金额"); } } else { if (info.Amount > (orderitem.EnabledRefundAmount - orderitem.RefundPrice)) { throw new Himall.Core.HimallException("退款金额不能超过订单的可退金额"); } if (info.ReturnQuantity > (orderitem.Quantity - orderitem.ReturnQuantity)) { throw new Himall.Core.HimallException("退货数量不可以超出可退数量"); } } info.IsReturn = false; if (info.ReturnQuantity > 0) { info.IsReturn = true; } if (info.RefundType == 2) { info.IsReturn = true; } if (info.IsReturn == true && info.ReturnQuantity < 1) { throw new Himall.Core.HimallException("错误的退货数量"); } if (info.Amount <= 0) { throw new Himall.Core.HimallException("错误的退款金额"); } info.ShopId = order.ShopId; info.ShopName = order.ShopName; info.UserId = CurrentUser.Id; info.Applicant = CurrentUser.UserName; info.ApplyDate = DateTime.Now; info.Reason = HTMLEncode(info.Reason.Replace("'", "‘").Replace("\"", "”")); #endregion //info.RefundAccount = HTMLEncode(info.RefundAccount.Replace("'", "‘").Replace("\"", "”")); if (info.Id > 0) { refundser.ActiveRefund(info); } else { refundser.AddOrderRefund(info); } result.SetStatus(true); result.Message = "成功的申请了退款"; return(Json(new { Status = result.Status, Message = result.Message })); } catch (HimallException he) { result.SetStatus(false); result.Message = he.Message; return(Json(new { Status = result.Status, Message = result.Message })); } catch (Exception ex) { Log.Error("[SPAPI]Refund:" + ex.Message); result.SetStatus(false); result.Message = "系统内部异常"; return(Json(new { Status = result.Status, Message = result.Message })); } }
public TaskStatus Handle(IHttpProxy httpHandler) { httpHandler.ResponseContentType = "application/json"; var forms = httpHandler.Form.ToObject <SortedDictionary <string, string> >(); try { if (forms.Count > 0) { //验证sign var config = new Config(ResturantFactory.ResturantListener.OnGetPlatformConfigXml(ResturantPlatformType.Meituan)); if (forms["sign"] != MeituanHelper.Sign(forms, config.SignKey)) { throw new Exception("签名验证失败"); } string notifyType = forms["notifyType"]; /* * part 发起退款 * agree 确认退款 * reject 驳回退款 */ OrderRefundInfo info = new OrderRefundInfo(); info.OrderID = forms["orderId"]; info.Reason = forms["reason"]; info.Money = Convert.ToDouble(forms["money"]); if (ResturantFactory.ResturantListener != null) { new Thread(() => { try { var foodJsonArr = (Newtonsoft.Json.Linq.JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(forms["food"]); for (int i = 0; i < foodJsonArr.Count; i++) { var dishinfo = new RefundDishInfo(); dishinfo.DishName = foodJsonArr[i].Value <string>("food_name"); dishinfo.ErpDishId = foodJsonArr[i].Value <string>("app_food_code"); dishinfo.RefundPrice = foodJsonArr[i].Value <double>("refund_price"); dishinfo.Price = foodJsonArr[i].Value <double>("origin_food_price"); dishinfo.Quantity = foodJsonArr[i].Value <int>("count"); info.RefundDishInfos.Add(dishinfo); } } catch { } try { if (notifyType == "part") { ResturantFactory.ResturantListener.OnOrderRefund(ResturantPlatformType.Meituan, info); } else if (notifyType == "agree") { ResturantFactory.ResturantListener.OnOrderRefundCompleted(ResturantPlatformType.Meituan, info); } } catch { } }).Start(); } } } catch (Exception ex) { using (Log log = new Log("美团OrderPartRefundCallback解析错误")) { log.Log(ex.ToString()); } throw ex; } httpHandler.ResponseWrite("{\"data\":\"OK\"}"); return(TaskStatus.Completed); }