public String AnalysisXml(string ReqXml) { string ResXml = string.Empty; string ReqCode = string.Empty; try { System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument(); xmldoc.LoadXml(ReqXml); //请求指令 ReqCode = xmldoc.SelectSingleNode("JTW91G/MsgData/ReqHeader/ReqCode").InnerText; Trade.CTrade trade = new Trade.CTrade(); MarketLnEnter orderln = new MarketLnEnter(); orderln.LoginID = xmldoc.SelectSingleNode("JTW91G/MsgData/DataBody/LoginId").InnerText; orderln.TradeAccount = xmldoc.SelectSingleNode("JTW91G/MsgData/DataBody/TradeAccount").InnerText; orderln.CurrentTime = Convert.ToDateTime(xmldoc.SelectSingleNode("JTW91G/MsgData/DataBody/Orders/Order/CurrentTime").InnerText); orderln.OrderId = xmldoc.SelectSingleNode("JTW91G/MsgData/DataBody/Orders/Order/OrderId").InnerText; //可以不设置止盈止损价 如果为空 不能直接转换 string ProfitPrice = xmldoc.SelectSingleNode("JTW91G/MsgData/DataBody/Orders/Order/ProfitPrice").InnerText; string LossPrice = xmldoc.SelectSingleNode("JTW91G/MsgData/DataBody/Orders/Order/LossPrice").InnerText; orderln.ProfitPrice = Convert.ToDouble(string.IsNullOrEmpty(ProfitPrice) ? "0" : ProfitPrice); orderln.LossPrice = Convert.ToDouble(string.IsNullOrEmpty(LossPrice) ? "0" : LossPrice); Marketorders orders = trade.ModifyMarketorders(orderln); if (!orders.Result) { string CodeDesc = ResCode.UL005Desc; string ReturnCode = GssGetCode.GetCode(orders.ReturnCode,orders.Desc, ref CodeDesc); ResXml = GssResXml.GetResXml(ReqCode, ReturnCode, CodeDesc, string.Format("<DataBody></DataBody>")); } else { StringBuilder strb = new StringBuilder(); strb.Append("<Order>"); strb.AppendFormat("<OrderId>{0}</OrderId>", orders.TradeOrder.OrderId); strb.AppendFormat("<ProductName>{0}</ProductName>", orders.TradeOrder.ProductName); strb.AppendFormat("<ProductCode>{0}</ProductCode>", orders.TradeOrder.ProductCode); strb.AppendFormat("<PriceCode>{0}</PriceCode>", orders.TradeOrder.PriceCode); strb.AppendFormat("<OrderPrice>{0}</OrderPrice>", orders.TradeOrder.OrderPrice); strb.AppendFormat("<Quantity>{0}</Quantity>", orders.TradeOrder.Quantity); strb.AppendFormat("<UseQuantity>{0}</UseQuantity>", orders.TradeOrder.UseQuantity); strb.AppendFormat("<OccMoney>{0}</OccMoney>", orders.TradeOrder.OccMoney); strb.AppendFormat("<LossPrice>{0}</LossPrice>", orders.TradeOrder.LossPrice); strb.AppendFormat("<ProfitPrice>{0}</ProfitPrice>", orders.TradeOrder.ProfitPrice); strb.AppendFormat("<OrderType>{0}</OrderType>", orders.TradeOrder.OrderType); strb.AppendFormat("<OrderTime>{0}</OrderTime>", orders.TradeOrder.OrderTime.ToString(Const.dateformat)); strb.AppendFormat("<TradeFee>{0}</TradeFee>", orders.TradeOrder.TradeFee); strb.AppendFormat("<StorageFee>{0}</StorageFee>", orders.TradeOrder.StorageFee); strb.AppendFormat("<TotalWeight></TotalWeight>"); strb.Append("</Order>"); //响应消息体 string DataBody = string.Format("<DataBody><Orders>{0}</Orders></DataBody>", strb); ResXml = GssResXml.GetResXml(ReqCode, ResCode.UL004, ResCode.UL004Desc, DataBody); } } catch (Exception ex) { com.individual.helper.LogNet4.WriteErr(ex); //业务处理失败 ResXml = GssResXml.GetResXml(ReqCode, ResCode.UL005, ResCode.UL005Desc, string.Format("<DataBody></DataBody>")); } return ResXml; }
/// <summary> /// 市价单修改 /// </summary> /// <param name="marln">修改信息</param> /// <returns>修改结果</returns> public Marketorders ModifyMarketorders(MarketLnEnter marln) { Marketorders marketorders = new Marketorders(); marketorders.MoneyInventory = new MoneyInventory(); marketorders.TradeOrder = new TradeOrder(); ProductConfig ptc = new ProductConfig(); DateTime dt = DateTime.Now;//服务器当前本地时间 string userId = string.Empty; string order_ip = string.Empty; string order_mac = string.Empty; string operUser = marln.TradeAccount; TradeUser TdUser = new TradeUser(); string ipmac = string.Empty; try { #region 判断用户登陆标识是否过期 if (!ComFunction.ExistUserLoginID(marln.LoginID,ref TdUser)) { marketorders.Result = false; marketorders.ReturnCode = ResCode.UL003; marketorders.Desc = ResCode.UL003Desc; return marketorders; } operUser = TdUser.Account; ipmac = ComFunction.GetIpMac(TdUser.Ip, TdUser.Mac); if (UserType.NormalType == TdUser.UType) { userId = TdUser.UserID; } else { userId = ComFunction.GetUserId(marln.TradeAccount); } #endregion #region 根据订单ID获取订单信息 marketorders.TradeOrder = ComFunction.GetTradeOrder(marln.OrderId, ref order_ip, ref order_mac); if (string.IsNullOrEmpty(marketorders.TradeOrder.OrderId)) { marketorders.Result = false; marketorders.ReturnCode = ResCode.UL028; marketorders.Desc = ResCode.UL028Desc; return marketorders; } #endregion #region 获取商品信息 ptc = ComFunction.GetProductInfo(marketorders.TradeOrder.ProductCode); //订单类型(0买、1卖) //未能获取商品状态 if (string.IsNullOrEmpty(ptc.State)) { marketorders.Result = false; marketorders.ReturnCode = ResCode.UL024; marketorders.Desc = ResCode.UL024Desc; return marketorders; } #endregion #region 判断当前时间是否允许交易 if (!ComFunction.GetDateset(ptc.PriceCode,dt)) { marketorders.Result = false; marketorders.ReturnCode = ResCode.UL022; marketorders.Desc = ResCode.UL022Desc; return marketorders; } #endregion #region 判断商品是否处于交易时段 if (!ComFunction.ProductCanTrade(ptc.Starttime, ptc.Endtime)) { marketorders.Result = false; marketorders.ReturnCode = ResCode.UL025; marketorders.Desc = ResCode.UL025Desc; return marketorders; } #endregion #region 最大交易时间差判断 //当前客户端实时报价时间+允许最大交易时间差>=服务器时间 if (!(marln.CurrentTime.AddSeconds(ptc.MaxTime) >= dt)) { marketorders.Result = false; marketorders.ReturnCode = ResCode.UL014; marketorders.Desc = ResCode.UL014Desc; return marketorders; } #endregion marketorders.MoneyInventory = ComFunction.GetMoneyInventoryByUserId(userId); if (!marketorders.MoneyInventory.Result) { marketorders.Result = false; marketorders.Desc = "未能获取资金库存"; return marketorders; } #region 数据库事务处理 List<string> sqlList = new List<string>(); sqlList.Add(string.Format("UPDATE Trade_Order set profitPrice={0},lossprice={1} where Orderid='{2}' and userid='{3}'", marln.ProfitPrice, marln.LossPrice, marln.OrderId,userId)); //添加操作记录 sqlList.Add(string.Format("insert into Base_OperrationLog([OperTime],[Account],[UserType],[Remark]) values('{0}','{1}',{2},'{3}')", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), operUser, (int)TdUser.UType, string.Format("{1}在手订单{0},设置盈损点", marln.OrderId, ipmac))); if (!ComFunction.SqlTransaction(sqlList)) { marketorders.Result = false; marketorders.Desc = "更新订单错误"; return marketorders; } #endregion #region 给返回对象赋值 marketorders.Result = true; marketorders.Desc = "修改成功"; marketorders.TradeOrder.ProfitPrice = marln.ProfitPrice; marketorders.TradeOrder.LossPrice = marln.LossPrice; marketorders.TradeOrder.PriceCode = ptc.PriceCode; #endregion } catch (Exception ex) { ComFunction.WriteErr(ex); marketorders.Result = false; marketorders.Desc = "市价单修改失败"; } return marketorders; }