/// <summary> /// 取消订单 /// </summary> /// <param name="partUserInfo">用户信息</param> /// <param name="orderInfo">订单信息</param> /// <param name="operatorId">操作人id</param> /// <param name="cancelTime">取消时间</param> public static void CancelOrder(ref PartUserInfo partUserInfo, OrderInfo orderInfo, int operatorId, DateTime cancelTime) { UpdateOrderState(orderInfo.Oid, OrderState.Cancelled); //将订单状态设为取消状态 if (orderInfo.CouponMoney > 0) //退回用户使用的优惠劵 { Coupons.ReturnUserOrderUseCoupons(orderInfo.Oid); } if (orderInfo.PayCreditCount > 0)//退回用户使用的积分 { Credits.ReturnUserOrderUseCredits(ref partUserInfo, orderInfo, operatorId, cancelTime); } if (orderInfo.PaySN.Length > 0)//退回用户支付的金钱(此操作只是将退款记录保存到表'orderrefunds'中,实际退款还需要再次操作) { OrderRefunds.ApplyRefund(new OrderRefundInfo { Oid = orderInfo.Oid, OSN = orderInfo.OSN, Uid = orderInfo.Uid, State = 0, ApplyTime = cancelTime, PayMoney = orderInfo.SurplusMoney, RefundMoney = orderInfo.SurplusMoney, PaySN = orderInfo.PaySN, PaySystemName = orderInfo.PaySystemName, PayFriendName = orderInfo.PayFriendName }); } Products.IncreaseProductStockNumber(GetOrderProductList(orderInfo.Oid));//增加商品库存数量 }
/// <summary> /// 退货 /// </summary> /// <param name="partUserInfo">用户信息</param> /// <param name="orderInfo">订单信息</param> /// <param name="operatorId">操作人id</param> /// <param name="returnTime">退货时间</param> public static void ReturnOrder(ref PartUserInfo partUserInfo, OrderInfo orderInfo, int operatorId, DateTime returnTime) { UpdateOrderState(orderInfo.Oid, OrderState.Returned); //将订单状态设为退货状态 if (orderInfo.OrderState == (int)OrderState.Sended) //用户收货时退货 { if (orderInfo.CouponMoney > 0) //退回用户使用的优惠劵 { Coupons.ReturnUserOrderUseCoupons(orderInfo.Oid); } if (orderInfo.PayCreditCount > 0)//退回用户使用的积分 { Credits.ReturnUserOrderUseCredits(ref partUserInfo, orderInfo, operatorId, returnTime); } if (orderInfo.PaySN.Length > 0)//退回用户支付的金钱(此操作只是将退款记录保存到表'orderrefunds'中,实际退款还需要再次操作) { OrderRefunds.ApplyRefund(new OrderRefundInfo { Oid = orderInfo.Oid, OSN = orderInfo.OSN, Uid = orderInfo.Uid, State = 0, ApplyTime = returnTime, PayMoney = orderInfo.SurplusMoney, RefundMoney = orderInfo.SurplusMoney, PaySN = orderInfo.PaySN, PaySystemName = orderInfo.PaySystemName, PayFriendName = orderInfo.PayFriendName }); } } else if (orderInfo.OrderState == (int)OrderState.Completed) //订单完成后退货 { if (orderInfo.CouponMoney > 0) //退回用户使用的优惠劵 { Coupons.ReturnUserOrderUseCoupons(orderInfo.Oid); } if (orderInfo.PayCreditCount > 0)//退回用户使用的积分 { Credits.ReturnUserOrderUseCredits(ref partUserInfo, orderInfo, operatorId, returnTime); } //应退金钱 decimal returnMoney = orderInfo.SurplusMoney; //订单发放的积分 DataTable sendCredits = Credits.GetUserOrderSendCredits(orderInfo.Oid); int payCreditAmount = TypeHelper.ObjectToInt(sendCredits.Rows[0]["paycreditamount"]); int rankCreditAmount = TypeHelper.ObjectToInt(sendCredits.Rows[0]["rankcreditamount"]); //判断用户当前积分是否足够退回,如果不足够就将差额核算成金钱并在应退金钱中减去 if (partUserInfo.PayCredits < payCreditAmount) { returnMoney = returnMoney - Credits.PayCreditsToMoney(payCreditAmount - partUserInfo.PayCredits); payCreditAmount = partUserInfo.PayCredits; } //收回订单发放的积分 Credits.ReturnUserOrderSendCredits(ref partUserInfo, orderInfo, payCreditAmount, rankCreditAmount, operatorId, returnTime); StringBuilder couponIdList = new StringBuilder(); //订单发放的优惠劵列表 List <CouponInfo> couponList = Coupons.GetUserOrderSendCouponList(orderInfo.Oid); //判断优惠劵是否已经被使用,如果已经使用就在应退金钱中减去优惠劵金额 foreach (CouponInfo couponInfo in couponList) { if (couponInfo.Oid > 0) { returnMoney = returnMoney - couponInfo.Money; } else { couponIdList.AppendFormat("{0},", couponInfo.CouponId); } } //收回订单发放的优惠劵 if (couponIdList.Length > 0) { Coupons.DeleteCouponById(couponIdList.Remove(couponIdList.Length - 1, 1).ToString()); } if (returnMoney > 0)//退回用户支付的金钱(此操作只是将退款记录保存到表'orderrefunds'中,实际退款还需要再次操作) { OrderRefunds.ApplyRefund(new OrderRefundInfo { Oid = orderInfo.Oid, OSN = orderInfo.OSN, Uid = orderInfo.Uid, State = 0, ApplyTime = returnTime, PayMoney = orderInfo.SurplusMoney, RefundMoney = returnMoney, PaySN = orderInfo.PaySN, PaySystemName = orderInfo.PaySystemName, PayFriendName = orderInfo.PayFriendName }); } } Products.IncreaseProductStockNumber(GetOrderProductList(orderInfo.Oid));//增加商品库存数量 }