コード例 #1
0
        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);
            }
        }
コード例 #2
0
 public int EditNotice(Api_yg_Syncordernotice notice)
 {
     using (var helper = new SqlHelper())
     {
         int r = new InternalApi_yg_Syncordernotice(helper).EditNotice(notice);
         return(r);
     }
 }
コード例 #3
0
        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()));
            }
        }
コード例 #4
0
        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;
                }
            }
        }