C# TransactionScope 分布式事物使用实例
来源:互联网 发布:win7远程桌面端口号 编辑:程序博客网 时间:2024/06/06 16:35
protected void btnSave_Click(object sender, EventArgs e) { var order = new BLL.A_OrderInfo().GetModel(this.OrderId);//订单 if (order != null && IsUpOrder(order.OrderState, order.PayWay, order.PayState)) { var itemIds = Request.Form.GetValues("hdId"); var proIdList = Request.Form.GetValues("hdProId");//新商品ID var proPriceList = Request.Form.GetValues("txtPreProPrice");//优惠价格 var proNumList = Request.Form.GetValues("txtProNum");//商品数量 using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { try { //订单原来商品 var oldOrderPro = new BLL.A_OrderPro().GetList(null, "OrderId=" + order.OrderId, null); //备份原来订单商品 new BLL.A_OrderProBak().Add(oldOrderPro); //还原订单原来商品库存 Common.OperGoodsStockAndInsert(order.OrderId, order.OrderCode, 0, (int)Enums.StockRemarkType.修改订单商品增加库存, (int)Enums.StockType.虚拟库存, "虚拟库存-修改订单商品增加库存-正品-入库"); var newOrderPro = this.AddNewOrderPro(order.OrderId, order.OrderCode, itemIds, proIdList, proPriceList, proNumList); if (newOrderPro != null) { //删除订单原来商品 new BLL.A_OrderPro().DeleteByOrderId(order.OrderId); //修改订单金额 int oldStatus = order.OrderState;//保存原始订单状态 order.GoodsAmount = Util.GetDecimal(txtGoodsAmount.Text);//商品金额 order.IntegralMoney = Util.GetDecimal(txtIntegralMoney.Text);//积分抵扣金额 order.CouponAmount = Util.GetInt(txtCouponAmount.Text);//优惠卷抵扣金额 order.OrderFreight = Util.GetDecimal(txtOrderFreight.Text);//运费金额 order.OrderAmount = Util.GetDecimal(txtOrderAmount.Text);//订单金额 order.PayAmount = Util.GetDecimal(txtPayAmount.Text);//已支付金额 order.NeedPayAmount = Util.GetDecimal(txtNeedPayAmount.Text);//应支付金额 if (order.NeedPayAmount == 0 && order.PayWay != (int)Enums.OrderPayWay.NotPay && order.PayState == (int)Enums.PayState.未支付) { order.PayWay = (int)Enums.OrderPayWay.NotPay; order.PayState = (int)Enums.PayState.已支付; order.OrderState = (int)Enums.OrderState.等待处理中; } if (order.NeedPayAmount > 0 && order.PayWay == (int)Enums.OrderPayWay.NotPay) { order.PayWay = (int)Enums.OrderPayWay.Bill99; order.PayState = (int)Enums.PayState.未支付; order.OrderState = (int)Enums.OrderState.等待支付中; } new BLL.A_OrderInfo().Update(order); //写订单状态日志 OperOrderLog(oldStatus, order); //添加订单新商品 new BLL.A_OrderPro().Add(newOrderPro); //减少订单新商品库存 Common.OperGoodsStockAndInsert(order.OrderId, order.OrderCode, 1, (int)Enums.StockRemarkType.修改订单商品减少库存, (int)Enums.StockType.虚拟库存, "虚拟库存-修改订单商品扣库存-正品-出库"); scope.Complete(); JScript.Alert("修改订单成功"); JScript.Redirect("/SysManager/OrderManager/OrderEdit.aspx"); } } catch (Exception ex) { throw new Exception("发送信息异常,原因:" + ex.Message); } finally { scope.Dispose(); } } } else { JScript.Alert("此订单不能修改"); JScript.Redirect("/SysManager/OrderManager/OrderEdit.aspx"); } } //是否可以修改 private bool IsUpOrder(int orderState, int payWay, int payState) { if (orderState <= (int)Enums.OrderState.已发送到仓储)//&& (payWay == (int)Enums.OrderPayWay.NotPay || payState == (int)Enums.PayState.未支付) return true; else return false; }
0 0
- C# TransactionScope 分布式事物使用实例
- 分布式事物TransactionScope的正确用法
- C#语言中TransactionScope类的使用(分布式事务)
- C#分布式事务(TransactionScope )
- C#分布式事务(TransactionScope )
- 使用TransactionScope做分布式事务协调
- 使用TransactionScope来实现分布式事务
- TransactionScope处理分布式事物时提示"事务已被隐式或显式提交,或已终止"
- C#语言中TransactionScope类的使用
- C#语言中TransactionScope类的使用
- C#语言中TransactionScope类的使用
- 使用spring解决分布式事物
- Jotm 分布式事物管理入门实例
- TransactionScope和分布式事务
- TransactionScope 之分布式配置
- 分布式事务处理 TransactionScope
- TransactionScope 分布式事务
- TransactionScope分布式事务
- ArcGIS切片和天地图瓦片匹配
- [LeetCode OJ]Search Insert Position
- POJ 3373 Changing Digits (记忆化搜索)
- multimap 多重映照容器
- ajax 原型
- C# TransactionScope 分布式事物使用实例
- JMX在Tomcat中的应用
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方案 SP2013中的BCS
- 用户及角色管理(下)
- HLG 1375 The Active Leyni
- hdu1753(模拟大实数相加)
- Erlang自动绑定端口的秘密
- hdu 1285 确定比赛名次
- 《严蔚敏数据结构_03》