コード例 #1
0
    /// <summary>
    /// 支付成功后的处理,如果不是返回success,则表示处理失败,将记录在日志中
    /// </summary>
    /// <param name="orderNum"></param>
    /// <param name="memberUserName"></param>
    /// <param name="moneyPayed"></param>
    /// <returns></returns>
    public static bool PaySuccessHandler(string orderNum, string memberUserName, decimal moneyPayed, out string msg)
    {
        //支付成功后的处理
        //更改订单的已支付额
        //更改订单的状态为完成
        //增加用户的点数
        //记录用户的消费记录

        msg = "";
        bool   success  = false;
        int    points   = Convert.ToInt32(moneyPayed);
        string orderSql = "Update TravelOrder Set OrderStatus='" + OrderStatus.Finished + "',MoneyPayed=" + moneyPayed + " Where OrderNum='" + orderNum + "' And AddMemberName='" + memberUserName + "'";

        using (DbConnection conn = Db.Helper.CreateConnection())
        {
            conn.ConnectionString = Db.Helper.ConnectionString;
            conn.Open();
            using (DbTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable))
            {
                try
                {
                    SiteMemberInfo member = MemberBLL.Select(memberUserName, tran);
                    if (member == null)
                    {
                        msg = "用户不存在!";
                        return(false);
                    }

                    decimal oldTotalCost   = member.TotalCost;
                    decimal newTotalCost   = oldTotalCost + moneyPayed;
                    int     oldTotalPoints = member.TotalPoints;
                    int     newTotalPoints = oldTotalPoints + points;

                    member.TotalCost   = newTotalCost;
                    member.TotalPoints = newTotalPoints;

                    CostHistoryInfo model = new CostHistoryInfo();
                    model.AddTime        = DateTime.Now;
                    model.CostType       = CostType.JoinGroup;
                    model.GoodsID        = 0;
                    model.GoodsName      = "";
                    model.GoodsNum       = 0;
                    model.MoneyCost      = moneyPayed;
                    model.OrderNum       = orderNum;
                    model.PointsAfter    = newTotalPoints;
                    model.PointsBefore   = oldTotalPoints;
                    model.MoneyBefore    = oldTotalCost;
                    model.MoneyAfter     = newTotalCost;
                    model.PointsCost     = points;
                    model.ExchangeStatus = "";
                    model.SendTime       = GlobalSetting.MinTime;
                    model.FinishTime     = GlobalSetting.MinTime;
                    model.ExpressName    = "";
                    model.ExpressNum     = "";
                    model.LinkAddress    = "";
                    model.LinkMan        = "";
                    model.LinkPhone      = "";
                    model.Remarks        = "";
                    model.UserName       = memberUserName;

                    Db.Helper.ExecuteNonQuery(tran, orderSql);
                    MemberBLL.Update(member, tran);
                    MemberBLL.AddCostHistory(model, tran);

                    tran.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    msg = ex.Message;
                    tran.Rollback();
                }
            }
        }



        return(success);
    }
コード例 #2
0
ファイル: MemberBLL.cs プロジェクト: syunie/.NETandCloud
    /// <summary>
    /// 兑换商品
    /// </summary>
    /// <param name="userName"></param>
    /// <param name="goodsID"></param>
    /// <param name="goodsNum"></param>
    /// <returns></returns>
    public static bool ExchangeGoods(string userName, int goodsID, int goodsNum, string address, string realName, string phone, out string msg)
    {
        msg = "";
        bool success = false;

        //判断点数是否足够
        //判断商品数量是否足够
        //商品数量减去购买数量
        //用户已使用点数增加
        //写入消费记录
        using (DbConnection conn = Db.Helper.CreateConnection())
        {
            conn.ConnectionString = Db.Helper.ConnectionString;
            conn.Open();
            DbTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable);
            try
            {
                var user = Select(userName, tran);
                if (user == null)
                {
                    msg = "用户不存在!";
                    return(false);
                }
                var goods = GoodsBLL.SelectGoods(goodsID, tran);
                if (goods == null)
                {
                    msg = "商品不存在!";
                    return(false);
                }
                if (goods.Num <= 0)
                {
                    msg = "商品已被兑换完!";
                    return(false);
                }
                if (goods.Num < goodsNum)
                {
                    msg = "商品库存不足!";
                    return(false);
                }
                int remainPoints = user.TotalPoints - user.UsedPoints;
                int pointsCost   = goods.Points * goodsNum;
                if (remainPoints < pointsCost)
                {
                    msg = "点数不足!";
                    return(false);
                }

                goods.Num       = goods.Num - goodsNum;
                user.UsedPoints = user.UsedPoints + pointsCost;

                CostHistoryInfo model = new CostHistoryInfo();
                model.AddTime        = DateTime.Now;
                model.CostType       = CostType.Exchange;
                model.GoodsID        = goodsID;
                model.GoodsName      = goods.Name;
                model.GoodsNum       = goodsNum;
                model.MoneyAfter     = user.TotalCost;
                model.MoneyBefore    = user.TotalCost;
                model.OrderNum       = "";
                model.MoneyCost      = 0M;
                model.PointsAfter    = user.TotalPoints - user.UsedPoints;
                model.PointsBefore   = remainPoints;
                model.PointsCost     = pointsCost;
                model.ExchangeStatus = ExchangeStatus.WaitingSend;
                model.SendTime       = GlobalSetting.MinTime;
                model.FinishTime     = GlobalSetting.MinTime;
                model.ExpressName    = "";
                model.ExpressNum     = "";

                model.LinkAddress = address;
                model.LinkMan     = realName;
                model.LinkPhone   = phone;

                model.Remarks  = "";
                model.UserName = userName;

                GoodsBLL.UpdateGoods(goods, tran);
                MemberBLL.Update(user, tran);
                MemberBLL.AddCostHistory(model, tran);

                tran.Commit();

                msg     = "操作成功!";
                success = true;
            }
            catch (Exception ex)
            {
                tran.Rollback();
                msg     = ex.Message;
                success = false;
            }
        }



        return(success);
    }