internal Api_yg_Syncordernotice GetSucNotice(string platform_req_seq) { string sql = "select * from api_yg_Syncordernotice where platform_req_seq='" + platform_req_seq + "' and rcontent='success'"; var cmd = sqlHelper.PrepareTextSqlCommand(sql); using (var reader = cmd.ExecuteReader()) { Api_yg_Syncordernotice m = null; if (reader.Read()) { m = new Api_yg_Syncordernotice { id = reader.GetValue <int>("id"), req_seq = reader.GetValue <string>("req_seq"), platform_req_seq = reader.GetValue <string>("platform_req_seq"), order_num = reader.GetValue <string>("order_num"), num = reader.GetValue <int>("num"), use_time = reader.GetValue <DateTime>("use_time"), rcontent = reader.GetValue <string>("rcontent"), orderid = reader.GetValue <int>("orderid"), }; } return(m); } }
public int EditNotice(Api_yg_Syncordernotice notice) { using (var helper = new SqlHelper()) { int r = new InternalApi_yg_Syncordernotice(helper).EditNotice(notice); return(r); } }
internal int EditNotice(Api_yg_Syncordernotice m) { if (m.id > 0) { string sql = @"UPDATE [api_yg_Syncordernotice] SET [req_seq] = @req_seq ,[platform_req_seq] = @platform_req_seq ,[order_num] = @order_num ,[num] = @num ,[use_time] = @use_time ,[rcontent] = @rcontent ,[orderid] = @orderid WHERE id=@id"; var cmd = sqlHelper.PrepareTextSqlCommand(sql); cmd.AddParam("@id", m.id); cmd.AddParam("@req_seq", m.req_seq); cmd.AddParam("@platform_req_seq", m.platform_req_seq); cmd.AddParam("@order_num", m.order_num); cmd.AddParam("@num", m.num); cmd.AddParam("@use_time", m.use_time); cmd.AddParam("@rcontent", m.rcontent); cmd.AddParam("@orderid", m.orderid); cmd.ExecuteNonQuery(); return(m.id); } else { string sql = @"INSERT [api_yg_Syncordernotice] ([req_seq] ,[platform_req_seq] ,[order_num] ,[num] ,[use_time] ,[rcontent] ,[orderid]) VALUES (@req_seq ,@platform_req_seq ,@order_num ,@num ,@use_time ,@rcontent ,@orderid);select @@identity;"; var cmd = sqlHelper.PrepareTextSqlCommand(sql); cmd.AddParam("@req_seq", m.req_seq); cmd.AddParam("@platform_req_seq", m.platform_req_seq); cmd.AddParam("@order_num", m.order_num); cmd.AddParam("@num", m.num); cmd.AddParam("@use_time", m.use_time); cmd.AddParam("@rcontent", m.rcontent); cmd.AddParam("@orderid", m.orderid); object o = cmd.ExecuteScalar(); return(int.Parse(o.ToString())); } }
delegate void AsyncsendEventHandler(string updateurl, string pno, int confirmnum, string confirmtime, int agentcomid, int comid, int validateticketlogid, int aorderid);//发送验证同步发送请求委托 /// <summary> /// 阳光验证通知接口 /// </summary> /// <param name="context"></param> public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string xml = context.Request["xml"].ConvertTo <string>(""); if (xml == "") { context.Response.Write("fail 接收参数为空");//参数为空 return; } if (xml != "") { //录入交互日志 ApiLog mapilog = new ApiLog { Id = 0, request_type = "sync_order", Serviceid = 1, Str = xml.Trim(), Subdate = DateTime.Now, ReturnStr = "", ReturnSubdate = DateTime.Now, Errmsg = "", }; int ins = new ApiLogData().EditLog(mapilog); mapilog.Id = ins; try { XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); XmlElement root = doc.DocumentElement; string request_type = root.SelectSingleNode("request_type").InnerText; string req_seq = root.SelectSingleNode("req_seq").InnerText; //原订单流水号 string platform_req_seq = root.SelectSingleNode("platform_req_seq").InnerText; //平台请求流水号 string order_num = root.SelectSingleNode("order/order_num").InnerText; //订单号 string num = root.SelectSingleNode("order/num").InnerText; //使用张数 string use_time = root.SelectSingleNode("order/use_time").InnerText; //使用时间 //根据平台订单号得到易城订单号 int orderid = new B2bOrderData().GetOrderidByServiceOrderNum(order_num); if (orderid == 0) { //"老系统订单,服务商订单信息获取不到"===只有阳光订单才有这种可能,其他接口则直接返回错误 //把验票记录 记入 验证同步日志表 Api_yg_Syncordernotice notice = new Api_yg_Syncordernotice { id = 0, req_seq = req_seq, platform_req_seq = platform_req_seq, order_num = order_num, num = num.ConvertTo <int>(0), use_time = use_time.ConvertTo <DateTime>(), rcontent = "老系统订单,服务商订单信息获取不到", orderid = 0 }; int insnotice = new Api_yg_SyncordernoticeData().EditNotice(notice); notice.id = insnotice; mapilog.ReturnStr = "success"; mapilog.ReturnSubdate = DateTime.Now; mapilog.Errmsg = notice.rcontent; new ApiLogData().EditLog(mapilog); context.Response.Write("success"); return; } //根据平台流水号 得到正确处理的验证通知记录 Api_yg_Syncordernotice sucnotice = new Api_yg_SyncordernoticeData().GetSucNotice(platform_req_seq); if (sucnotice == null) { //把验票记录 记入 验证同步日志表 Api_yg_Syncordernotice notice = new Api_yg_Syncordernotice { id = 0, req_seq = req_seq, platform_req_seq = platform_req_seq, order_num = order_num, num = num.ConvertTo <int>(0), use_time = use_time.ConvertTo <DateTime>(), rcontent = "", orderid = orderid }; int insnotice = new Api_yg_SyncordernoticeData().EditNotice(notice); notice.id = insnotice; //易城系统订单 处理 B2b_order morder = new B2bOrderData().GetOrderById(orderid); if (morder != null) { int incount = morder.U_num; //总数量 int usecount = morder.service_usecount + num.ConvertTo <int>(0); //验证数量 if (incount == usecount) //全部验证 { morder.service_usecount = usecount; morder.service_lastcount = incount - usecount - morder.Cancelnum; morder.Servicepro_v_state = ((int)Product_V_State.AllValidate).ToString(); //验证全部 morder.Order_state = (int)OrderStatus.HasUsed; //已消费 new B2bOrderData().InsertOrUpdate(morder); } else //部分验证 { morder.service_usecount = usecount; morder.service_lastcount = incount - usecount - morder.Cancelnum; morder.Servicepro_v_state = ((int)Product_V_State.PartValidate).ToString(); //验证部分 morder.Order_state = (int)OrderStatus.HasUsed; //已消费 new B2bOrderData().InsertOrUpdate(morder); } //根据b单判断是否有a单存在 B2b_order aorder = new B2bOrderData().GetOldorderBybindingId(morder.Id); if (aorder != null) { aorder.Order_state = morder.Order_state; new B2bOrderData().InsertOrUpdate(aorder); } notice.rcontent = "success"; new Api_yg_SyncordernoticeData().EditNotice(notice); //如果是分销订单,则需要给分销发送验证通知 //判断b订单 是否 属于某个a订单 if (aorder != null) { //得到a订单的分销信息 if (aorder.Agentid > 0) { Agent_company acompany = new AgentCompanyData().GetAgentCompany(aorder.Agentid); if (acompany != null) { //异步发送验证同步请求 AsyncsendEventHandler mydelegate = new AsyncsendEventHandler(AsyncSend); mydelegate.BeginInvoke(acompany.Agent_updateurl.Trim(), morder.Pno, morder.service_usecount, use_time, aorder.Agentid, aorder.Comid, 0, aorder.Id, new AsyncCallback(Completed), null); } } } else { if (morder.Agentid > 0) { Agent_company acompany = new AgentCompanyData().GetAgentCompany(morder.Agentid); if (acompany != null) { //异步发送验证同步请求 AsyncsendEventHandler mydelegate = new AsyncsendEventHandler(AsyncSend); mydelegate.BeginInvoke(acompany.Agent_updateurl.Trim(), morder.Pno, morder.service_usecount, use_time, morder.Agentid, morder.Comid, 0, morder.Id, new AsyncCallback(Completed), null); } } } mapilog.ReturnStr = "success"; mapilog.ReturnSubdate = DateTime.Now; mapilog.Errmsg = "成功"; new ApiLogData().EditLog(mapilog); context.Response.Write("success"); return; } else { mapilog.ReturnStr = "fail 获取订单失败"; mapilog.ReturnSubdate = DateTime.Now; mapilog.Errmsg = "fail 获取订单失败"; new ApiLogData().EditLog(mapilog); notice.rcontent = "fail 获取订单失败"; new Api_yg_SyncordernoticeData().EditNotice(notice); context.Response.Write("fail 获取订单失败"); return; } } else { mapilog.ReturnStr = "success"; mapilog.ReturnSubdate = DateTime.Now; mapilog.Errmsg = "已经成功处理过,不在处理"; new ApiLogData().EditLog(mapilog); context.Response.Write("success"); return; } } catch { context.Response.Write("fail 意外错误");//意外错误 return; } } }