标签:
这外包的水平真是不敢恭维,只要达到效果从不考虑效率
看看这个代码:
/// <summary> /// 增加一条数据 /// </summary> /// <param name="model">退货申请实体</param> public int AddReturnOrder(www.bpj.com.webservice.Model.ReturnOrder model, int retractableDays) { // 获取订单ID StringBuilder strSql = new StringBuilder(); strSql.Append("select"); strSql.Append(" OrderId"); strSql.Append(" , datediff(day, CreateTime, getdate()) as days "); strSql.Append("from"); strSql.Append(" Orders "); strSql.Append("where"); strSql.Append(" OrderSn = @OrderSn "); strSql.Append(" and IsDeleted = 0 "); strSql.Append(" and UserDeleted = 0"); SqlParameter[] parameters = { new SqlParameter("@OrderSn", SqlDbType.NVarChar, 50) }; parameters[0].Value = model.OrderSn; DataSet dsOrder = SqlServerHelper.Query(strSql.ToString(), parameters); DataTable dtOrder = dsOrder.Tables[0]; String strOrderId = string.Empty; if (dtOrder.Rows.Count == 0) { return -1; } else { int days = int.Parse(dtOrder.Rows[0]["days"].ToString()); if (days >= retractableDays) { return -2; } strOrderId = dtOrder.Rows[0]["OrderId"].ToString(); } // 获取可退数量 strSql = new StringBuilder(); strSql.Append("select"); strSql.Append(" OrderProductsId, RetractableCount "); strSql.Append("from"); strSql.Append(" OrderProducts "); strSql.Append("where"); strSql.Append(" OrderId = @OrderId "); strSql.Append(" and ProductSKUId = @ProductSKUId "); strSql.Append(" AND IsDeleted = 0"); parameters = new SqlParameter[] { new SqlParameter("@OrderId", SqlDbType.Int, 4) , new SqlParameter("@ProductSKUId", SqlDbType.Int, 4) }; parameters[0].Value = strOrderId; parameters[1].Value = model.ProductSKUId; DataSet dsOrderProduct = SqlServerHelper.Query(strSql.ToString(), parameters); DataTable dtOrderProduct = dsOrderProduct.Tables[0]; String strOrderProductsId = string.Empty; if (dtOrderProduct.Rows.Count == 0) { return -1; } else { int retractableCount = int.Parse(dtOrderProduct.Rows[0]["RetractableCount"].ToString()); if (retractableCount - model.ReturnCount < 0) { return -3; } strOrderProductsId = dtOrderProduct.Rows[0]["OrderProductsId"].ToString(); } // 订单商品表更新 Dictionary<string, SqlParameter[]> dicSQLStringList = new Dictionary<string,SqlParameter[]>(); strSql = new StringBuilder(); strSql.Append("update OrderProducts set RetractableCount = RetractableCount - @ReturnCount from OrderProducts where OrderProductsId = @OrderProductsId"); parameters = new SqlParameter[] { new SqlParameter("@ReturnCount", SqlDbType.Int, 4) , new SqlParameter("@OrderProductsId", SqlDbType.Int, 4) }; parameters[0].Value = model.ReturnCount; parameters[1].Value = strOrderProductsId; dicSQLStringList.Add(strSql.ToString(), parameters); //SqlServerHelper.ExecuteSql(strSql.ToString(), parameters); strSql = new StringBuilder(); strSql.Append("insert into ReturnOrder("); strSql.Append("IsDeleted,UserDeleted,OrderId,ProductSKUId,UserId,ReturnCount,ApplyReturnMoney,ReturnMoney,CreateTime,Status,ReturnOrderReason,ReturnDealResult,ReturnOrderSn,PayPic)"); strSql.Append(" values ("); strSql.Append("@IsDeleted,@UserDeleted,@OrderId,@ProductSKUId,@UserId,@ReturnCount,@ApplyReturnMoney,0,getdate(),1,@ReturnOrderReason,null,@ReturnOrderSn,null)"); //strSql.Append(";select @id=@@IDENTITY"); parameters = new SqlParameter[] { new SqlParameter("@IsDeleted", SqlDbType.Bit,1), new SqlParameter("@UserDeleted", SqlDbType.Int,4), new SqlParameter("@OrderId", SqlDbType.Int,4), new SqlParameter("@ProductSKUId", SqlDbType.Int,4), new SqlParameter("@UserId", SqlDbType.Int,4), new SqlParameter("@ReturnCount", SqlDbType.Int,4), new SqlParameter("@ApplyReturnMoney", SqlDbType.Decimal,9), new SqlParameter("@ReturnOrderReason", SqlDbType.NText), new SqlParameter("@ReturnOrderSn", SqlDbType.NVarChar,50)}; parameters[0].Value = model.IsDeleted; parameters[1].Value = model.UserDeleted; parameters[2].Value = strOrderId; parameters[3].Value = model.ProductSKUId; parameters[4].Value = model.UserId; parameters[5].Value = model.ReturnCount; parameters[6].Value = model.ApplyReturnMoney; parameters[7].Value = model.ReturnOrderReason; parameters[8].Value = model.ReturnOrderSn; dicSQLStringList.Add(strSql.ToString(), parameters); SqlServerHelper.ExecuteSqlTran(dicSQLStringList); // 退货申请ID strSql = new StringBuilder(); strSql.Append("select ReturnOrderId from ReturnOrder where ReturnOrderSn = @ReturnOrderSn"); parameters = new SqlParameter[] { new SqlParameter("@ReturnOrderSn", SqlDbType.NVarChar, 50) }; parameters[0].Value = model.ReturnOrderSn; DataSet dsRet = SqlServerHelper.Query(strSql.ToString(), parameters); int intId = -1; if (dsRet.Tables[0].Rows.Count > 0) { intId = int.Parse(dsRet.Tables[0].Rows[0]["ReturnOrderId"].ToString()); } return intId; }
这一个新增的方法连接5次数据库 大神啊 !你是BDQN毕业的吧!!!
哥还是优化下吧:
public int Add(API.Model.MReturnOrder model) { int rowsAffected; SqlParameter[] parameters = { new SqlParameter("@ReturnOrderId", SqlDbType.Int,4), new SqlParameter("@ProductSKUId", SqlDbType.Int,4), new SqlParameter("@UserId", SqlDbType.Int,4), new SqlParameter("@ReturnCount", SqlDbType.Int,4), new SqlParameter("@ApplyReturnMoney", SqlDbType.Decimal,9), new SqlParameter("@ReturnOrderReason", SqlDbType.NText), new SqlParameter("@ReturnOrderSn", SqlDbType.NVarChar,50), new SqlParameter("@OrderSn", SqlDbType.NVarChar,50) }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Value = model.ProductSKUId; parameters[2].Value = model.UserId; parameters[3].Value = model.ReturnCount; parameters[4].Value = model.ApplyReturnMoney; parameters[5].Value = model.ReturnOrderReason; parameters[6].Value = DateTime.Now.ToString("yyyyMMddhhmmssfff") + model.UserId.PadLeft(5, ‘0‘) + "RO"; DbHelperSQL.RunProcedure("api_ReturnOrder_ADD", parameters, out rowsAffected); return (int)parameters[0].Value; }
存储过程:
CREATE PROCEDURE api_ReturnOrder_ADD @ReturnOrderId int output, @ProductSKUId int, @UserId int, @ReturnCount int, @ApplyReturnMoney decimal(18,2), @ReturnOrderReason ntext, @ReturnOrderSn nvarchar(50), @OrderSn nvarchar(50) AS declare @OrderId int declare @d int declare @OrderProductsId int declare @RetractableCount int if exists(select OrderSn from Orders where OrderSn = @OrderSn and IsDeleted = 0 and UserDeleted = 0) begin select @OrderId=OrderId , @d=datediff(day, CreateTime, getdate()) from Orders where OrderSn = @OrderSn and IsDeleted = 0 and UserDeleted = 0 if @d>=7 begin select @OrderProductsId=OrderProductsId, @RetractableCount=RetractableCount from OrderProducts where OrderId = @OrderId and ProductSKUId = @ProductSKUId AND IsDeleted = 0 if @@ROWCOUNT>0 begin if (@RetractableCount-@ReturnCount)<0 begin set @ReturnOrderId = -3 end begin update OrderProducts set RetractableCount = RetractableCount - @ReturnCount from OrderProducts where OrderProductsId = @OrderProductsId INSERT INTO [ReturnOrder]([IsDeleted],[UserDeleted],[OrderId],[ProductSKUId],[UserId],[ReturnCount],[ApplyReturnMoney],[ReturnMoney],[CreateTime],[Status],[ReturnOrderReason],[ReturnOrderSn],[RebateCalculatedStatus] )VALUES(0,0,@OrderId,@ProductSKUId,@UserId,@ReturnCount,@ApplyReturnMoney,0,GETDATE(),1,@ReturnOrderReason,@ReturnOrderSn,0) SET @ReturnOrderId = @@IDENTITY end end else begin set @ReturnOrderId=-1 end end begin set @ReturnOrderId = -2 end end else begin set @ReturnOrderId=-1 end GO
本文纯属吐糟 ,勿喷!
标签:
原文地址:http://www.cnblogs.com/jasonduan/p/5714388.html