Exemplo n.º 1
0
        /// <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);

            Products.IncreaseProductStockNumber(GetOrderProductList(orderInfo.Oid));//增加商品库存数量
        }
Exemplo n.º 2
0
        /// <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
                    {
                        StoreId       = orderInfo.StoreId,
                        StoreName     = orderInfo.StoreName,
                        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
                    {
                        StoreId       = orderInfo.StoreId,
                        StoreName     = orderInfo.StoreName,
                        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));//增加商品库存数量
        }