예제 #1
0
        public ReturnResult SimulationMTGetDeal(string url, OrderQueryRequestBody body)
        {
            ReturnResult result = new ReturnResult
            {
                IsSuccess = false,
            };

            try
            {
                OrderQueryRequest requestData = new OrderQueryRequest
                {
                    partnerId = agentinfo.mt_partnerId,
                    body      = body
                };

                var responseStr = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).DoRequest(url, JsonConvert.SerializeObject(requestData));
                if (string.IsNullOrEmpty(responseStr))
                {
                    result.Message = "返回数据为空";
                }
                else
                {
                    OrderQueryResponse responseBody = (OrderQueryResponse)JsonConvert.DeserializeObject(responseStr, typeof(OrderQueryResponse));
                    if (responseBody.code == 200)
                    {
                        result.IsSuccess = true;
                        result.Message   = JsonConvert.SerializeObject(responseBody);
                    }
                    else
                    {
                        result.Message = responseBody.describe;
                    }
                }
            }
            catch (Exception ex)
            {
                result.Message = "异常" + ex.Message;
            }
            return(result);
        }
예제 #2
0
        ///     产品查询
        public string Getorderquery(Meituan_reqlog mlog)
        {
            var response = new OrderQueryResponse();

            response.partnerId = int.Parse(agentinfo.mt_partnerId);
            try
            {
                var data = JsonConvert.DeserializeObject <OrderQueryRequest>(_requestParam);
                if (data.body == null)
                {
                    response.code     = 399;
                    response.describe = "Body数据解析失败";
                    return(EditMTlog_Err(response, mlog));
                }
                else
                {
                    OrderQueryRequestBody body = data.body;

                    string mtorderid = body.orderId.ToString();
                    //如果合作商订单Id不存在,则查询美团订单创建日志
                    if (body.partnerOrderId == "")
                    {
                        Meituan_reqlog mtOrderCrateSucLog = new Meituan_reqlogData().GetMtOrderCrateLogByMtorder(body.orderId.ToString(), "200");
                        body.partnerOrderId = mtOrderCrateSucLog.ordernum;
                    }
                    string ordernum = body.partnerOrderId;

                    mlog.mtorderid = mtorderid;
                    mlog.ordernum  = ordernum;


                    int organization = agentinfo.Id;

                    //判断分销商查询订单是否是 自己发送的接口订单
                    Agent_requestlog mrequestlogg = new Agent_requestlogData().GetAgent_addorderlogByReq_seq(organization.ToString(), mtorderid);
                    if (mrequestlogg == null)
                    {
                        response.code     = 301;
                        response.describe = "当前查询的订单不存在";
                        return(EditMTlog_Err(response, mlog));
                    }
                    if (mrequestlogg.Is_dealsuc == 0)
                    {
                        response.code     = 301;
                        response.describe = "当前查询的订单不存在";
                        return(EditMTlog_Err(response, mlog));
                    }
                    if (mtorderid.Trim() == "")
                    {
                        response.code     = 301;
                        response.describe = "美团订单号 不可为空";
                        return(EditMTlog_Err(response, mlog));
                    }

                    B2b_order morder = new B2bOrderData().GetOrderByAgentRequestReqSeq(mtorderid);
                    if (morder != null)
                    {
                        if (morder.Pro_id > 0)
                        {
                            B2b_com_pro pro = new B2bComProData().GetProById(morder.Pro_id.ToString());
                            if (pro == null)
                            {
                                response.code     = 399;
                                response.describe = "产品不存在";
                                return(EditMTlog_Err(response, mlog));
                            }
                            else
                            {
                                #region 主要用途 判断是否是商家自己产品,如果为外来接口产品,暂时不售卖
                                //判断产品码来源 (4分销倒过来的产品 1系统自动生成产品  2倒码产品 判断分销是否是 自己发码;3外来接口产品暂时不售卖)
                                int prosourtype = pro.Source_type;
                                //if (prosourtype == 3)//外来接口产品,暂时只有阳光接口产品(需要手机号)
                                //{
                                //    //暂时只售卖商家自己产品,主要是产品有效期 需要另外通过外部接口获取,过于麻烦
                                //    response.code = 301;
                                //    response.describe = "暂时只可查询商家自己产品";
                                //    return EditMTlog_Err(response, mlog);

                                //}
                                if (prosourtype == 4)                                                              //分销导入产品;
                                {
                                    int old_proid = new B2bComProData().GetOldproidById(morder.Pro_id.ToString()); //绑定产品的原始编号
                                    if (old_proid == 0)
                                    {
                                        response.code     = 399;
                                        response.describe = "分销导入产品的原始产品编号没有查到";
                                        return(EditMTlog_Err(response, mlog));
                                    }
                                    else
                                    {
                                        prosourtype = new B2bComProData().GetProSource_typeById(old_proid.ToString());
                                        //if (prosourtype == 3)
                                        //{
                                        //    //暂时只售卖商家自己产品,主要是产品有效期 需要另外通过外部接口获取,过于麻烦
                                        //    response.code = 300;
                                        //    response.describe = "暂时只可查询商家自己产品";
                                        //    return EditMTlog_Err(response, mlog);

                                        //}
                                    }
                                }
                                #endregion

                                #region 产品有效期
                                //经过以上赋值prosourtype,只可能2个值:1系统自动生成码产品;2倒码产品
                                DateTime pro_start = pro.Pro_start;
                                DateTime pro_end   = pro.Pro_end;
                                if (prosourtype == 2) //倒码产品
                                {
                                }
                                if (prosourtype == 1) //系统自动生成码产品
                                {
                                    #region 产品有效期判定(微信模板--门票订单预订成功通知 中也有用到)
                                    string provalidatemethod = pro.ProValidateMethod;
                                    int    appointdate       = pro.Appointdata;
                                    int    iscanuseonsameday = pro.Iscanuseonsameday;

                                    //DateTime pro_end = modelcompro.Pro_end;
                                    if (provalidatemethod == "2")//按指定有效期
                                    {
                                        if (appointdate == (int)ProAppointdata.NotAppoint)
                                        {
                                        }
                                        else if (appointdate == (int)ProAppointdata.OneWeek)
                                        {
                                            pro_end = DateTime.Now.AddDays(7);
                                        }
                                        else if (appointdate == (int)ProAppointdata.OneMonth)
                                        {
                                            pro_end = DateTime.Now.AddMonths(1);
                                        }
                                        else if (appointdate == (int)ProAppointdata.ThreeMonth)
                                        {
                                            pro_end = DateTime.Now.AddMonths(3);
                                        }
                                        else if (appointdate == (int)ProAppointdata.SixMonth)
                                        {
                                            pro_end = DateTime.Now.AddMonths(6);
                                        }
                                        else if (appointdate == (int)ProAppointdata.OneYear)
                                        {
                                            pro_end = DateTime.Now.AddYears(1);
                                        }

                                        //如果指定有效期大于产品有效期,则按产品有效期
                                        if (pro_end > pro.Pro_end)
                                        {
                                            pro_end = pro.Pro_end;
                                        }
                                    }
                                    else //按产品有效期
                                    {
                                        pro_end = pro.Pro_end;
                                    }

                                    //DateTime pro_start = modelcompro.Pro_start;
                                    DateTime nowday = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                                    if (iscanuseonsameday == 1) //当天可用
                                    {
                                        if (nowday < pro_start) //当天日期小于产品起始日期
                                        {
                                            pro_start = pro.Pro_start;
                                        }
                                        else
                                        {
                                            pro_start = nowday;
                                        }
                                    }
                                    else //当天不可用
                                    {
                                        if (nowday < pro_start)//当天日期小于产品起始日期
                                        {
                                            pro_start = pro.Pro_start;
                                        }
                                        else
                                        {
                                            pro_start = nowday.AddDays(1);
                                        }
                                    }
                                    #endregion
                                }
                                #endregion

                                #region  购买数量   可使用数量  使用数量 退票数量 出票时间 电子票号(列表)

                                string all_pno     = ""; //全部电子码
                                string keyong_pno  = ""; //可用电子码
                                string add_time    = morder.U_subdate.ToString("yyyy-MM-dd HH:mm:ss");
                                int    buy_num     = 0;
                                int    keyong_num  = 0;
                                int    consume_num = 0;
                                int    tuipiao_num = morder.Cancelnum;

                                if (prosourtype == 1)//系统自动生成码产品
                                {
                                    int noworderid = morder.Id;
                                    //判断是否含有绑定订单
                                    if (morder.Bindingagentorderid > 0)
                                    {
                                        noworderid = morder.Bindingagentorderid;
                                    }

                                    //根据订单号得到电子票信息
                                    List <B2b_eticket> meticketlist = new B2bEticketData().GetEticketListByOrderid(noworderid);
                                    if (meticketlist == null)
                                    {
                                        response.code     = 302;
                                        response.describe = "根据订单号查询电子票信息失败";
                                        return(EditMTlog_Err(response, mlog));
                                    }
                                    else
                                    {
                                        if (meticketlist.Count == 0)
                                        {
                                            response.code     = 302;
                                            response.describe = "根据订单号查询电子票信息失败";
                                            return(EditMTlog_Err(response, mlog));
                                        }
                                        else
                                        {
                                            foreach (B2b_eticket meticket in meticketlist)
                                            {
                                                if (meticket != null)
                                                {
                                                    buy_num     += meticket.Pnum;
                                                    keyong_num  += meticket.Use_pnum;
                                                    consume_num += meticket.Pnum - meticket.Use_pnum;
                                                    all_pno     += meticket.Pno + ",";
                                                    if (meticket.Use_pnum > 0)
                                                    {
                                                        keyong_pno += meticket.Pno + ",";
                                                    }
                                                }
                                            }
                                            if (all_pno.Length > 0)
                                            {
                                                all_pno = all_pno.Substring(0, all_pno.Length - 1);
                                            }
                                            if (keyong_pno.Length > 0)
                                            {
                                                keyong_pno = keyong_pno.Substring(0, keyong_pno.Length - 1);
                                            }
                                        }
                                    }
                                }
                                else if (prosourtype == 3)
                                {
                                    if (pro.Serviceid == 4)
                                    { //如果是接口产品
                                        B2b_company commanage = B2bCompanyData.GetAllComMsg(pro.Com_id);
                                        WlGetProInfoDealRequestData wldata = new WlGetProInfoDealRequestData(commanage.B2bcompanyinfo.wl_PartnerId, commanage.B2bcompanyinfo.wl_userkey);
                                        var wlorderinfo = wldata.SearchWlOrderData(pro.Com_id, 0, "", morder.Id);
                                        if (wlorderinfo != null)
                                        {
                                            all_pno     = wlorderinfo.vouchers;
                                            buy_num     = wlorderinfo.quantity;
                                            keyong_num  = wlorderinfo.quantity - wlorderinfo.usedQuantity;
                                            consume_num = wlorderinfo.usedQuantity;;
                                        }
                                    }
                                }


                                else //倒码产品
                                {
                                }
                                #endregion

                                #region 实名制类型 真是姓名 状态
                                string real_name_type = pro.Realnametype.ToString();
                                string real_name      = morder.U_name;
                                string statusdesc     = EnumUtils.GetName((OrderStatus)morder.Order_state);
                                #endregion


                                #region 手机号 根据订单号得到 分销商发送接口请求记录
                                string           mobile      = "";
                                Agent_requestlog mrequestlog = new Agent_requestlogData().GetAgent_addorderlogByOrderId(morder.Id.ToString(), 1);
                                if (mrequestlog == null)
                                {
                                    response.code     = 399;
                                    response.describe = "根据订单号获得分销商接口发送请求记录失败";
                                    return(EditMTlog_Err(response, mlog));
                                }
                                #endregion


                                int orderstate = morder.Order_state;
                                //
                                int mt_orderstatus = (int)Meituan_orderStatus.CreateFail;
                                if (orderstate == (int)OrderStatus.HasSendCode)
                                {
                                    mt_orderstatus = (int)Meituan_orderStatus.CreateSuc;
                                }
                                else if (orderstate == (int)OrderStatus.HasUsed)
                                {
                                    mt_orderstatus = (int)Meituan_orderStatus.PaySuc;
                                }
                                else
                                {
                                    if (orderstate == (int)PayStatus.HasPay)
                                    {
                                        mt_orderstatus = (int)Meituan_orderStatus.PaySuc;
                                    }
                                    if (orderstate == (int)PayStatus.NotPay)
                                    {
                                        mt_orderstatus = (int)Meituan_orderStatus.PayFailed;
                                    }
                                    if (orderstate == (int)PayStatus.WaitPay)
                                    {
                                        mt_orderstatus = (int)Meituan_orderStatus.Paying;
                                    }
                                }


                                response.code     = 200;
                                response.describe = "success";


                                /************现在只有一单一码的情况************
                                 * required	凭证状态	见映射表<凭证码状态>
                                 *  0	未使用
                                 * 1	已使用
                                 * 2	已退款
                                 * 3	已废弃 对应的门票还未消费,但是此凭证码作废了
                                 * ************************/
                                List <Voucher> voucherlist = new List <Voucher>();

                                //电子票未使用
                                if (keyong_num == buy_num)
                                {
                                    Voucher vou = new Voucher
                                    {
                                        voucher            = all_pno,
                                        voucherPics        = "",
                                        voucherInvalidTime = morder.U_subdate.ToString("yyyy-MM-dd HH:mm:ss"),
                                        quantity           = keyong_num,
                                        status             = 0
                                    };
                                    voucherlist.Add(vou);
                                }
                                else
                                {
                                    //电子票已使用
                                    if (tuipiao_num == 0)
                                    {
                                        string yanzhengtime = morder.U_subdate.ToString("yyyy-MM-dd HH:mm:ss");
                                        //得到电子票最近的一条验证成功日志
                                        B2b_eticket_log lastyanzhengsuclog = new B2bEticketLogData().GetlastyanzhengsuclogByPno(all_pno);
                                        if (lastyanzhengsuclog != null)
                                        {
                                            yanzhengtime = lastyanzhengsuclog.Actiondate.ToString("yyyy-MM-dd HH:mm:ss");
                                        }
                                        Voucher vou = new Voucher
                                        {
                                            voucher            = all_pno,
                                            voucherPics        = "",
                                            voucherInvalidTime = morder.U_subdate.ToString("yyyy-MM-dd HH:mm:ss"),
                                            quantity           = consume_num,
                                            status             = 1
                                        };
                                        voucherlist.Add(vou);
                                    }
                                    else
                                    {
                                        //电子票退票
                                        if (tuipiao_num != buy_num)
                                        {
                                            Voucher vou = new Voucher
                                            {
                                                voucher            = all_pno,
                                                voucherPics        = "",
                                                voucherInvalidTime = morder.Backtickettime.ToString("yyyy-MM-dd HH:mm:ss"),
                                                quantity           = keyong_num,
                                                status             = 2
                                            };
                                            voucherlist.Add(vou);
                                        }
                                        //电子票废弃
                                        else
                                        {
                                            Voucher vou = new Voucher
                                            {
                                                voucher            = all_pno,
                                                voucherPics        = "",
                                                voucherInvalidTime = morder.Backtickettime.ToString("yyyy-MM-dd HH:mm:ss"),
                                                quantity           = keyong_num,
                                                status             = 3
                                            };
                                            voucherlist.Add(vou);
                                        }
                                    }
                                }



                                response.body = new OrderQueryResponseBody
                                {
                                    orderId          = body.orderId,
                                    partnerOrderId   = body.partnerOrderId,
                                    orderStatus      = mt_orderstatus,
                                    orderQuantity    = morder.U_num,
                                    usedQuantity     = (consume_num - morder.Cancelnum),
                                    refundedQuantity = morder.Cancelnum,
                                    voucherType      = 2,
                                    voucherList      = voucherlist
                                };

                                return(EditMTlog_Err(response, mlog));
                            }
                        }
                        else
                        {
                            response.code     = 301;
                            response.describe = "订单中产品不存在";

                            return(EditMTlog_Err(response, mlog));
                        }
                    }
                    else
                    {
                        response.code     = 301;
                        response.describe = "订单不存在";

                        return(EditMTlog_Err(response, mlog));
                    }
                }
            }
            catch (Exception ex)
            {
                response.code     = 399;
                response.describe = "异常错误";

                return(EditMTlog_Err(response, mlog));
            }
        }