Esempio n. 1
0
        private bool pushMr(tbl_mrItem m)
        {
            tbl_troneItem trone;

            if (!m.IsMatch)
            {
                trone = BaseSPCallback.FillToneId(dBase, m);
                if (trone == null)
                {
                    SetErrorMesage(tbl_troneItem.GetTroneErrMsg(m.trone_id));
                    return(false);
                }
            }
            trone = LightDataModel.tbl_troneItem.GetRowById(dBase, m.trone_id);
            var sb = new StringBuilder(250);

            var apiPush = new n8wan.Public.Logical.HTAPIPusher()
            {
                dBase      = dBase,
                Trone      = trone,
                LogFile    = logFile,
                IsSyncPush = true,
                TrackLog   = sb
            };

            if (apiPush.LoadCPAPI())
            {
                apiPush.PushObject = m;
                if (apiPush.DoPush())
                {
                    return(true);
                }
            }

            var cp = new n8wan.Public.Logical.AutoMapPush();

            cp.dBase      = dBase;
            cp.Trone      = trone;
            cp.LogFile    = logFile;
            cp.IsSyncPush = true;
            cp.TrackLog   = sb;



            if (!cp.LoadCPAPI())
            {
                SetErrorMesage(sb.ToString());
                return(false);
            }

            cp.PushObject = m;
            if (cp.DoPush())
            {
                return(true);
            }
            SetErrorMesage(sb.ToString());
            return(false);
        }
Esempio n. 2
0
        /// <summary>
        /// 根据ID,加载指令的订单
        /// </summary>
        /// <param name="id">为空或不存在时,返回NULL</param>
        /// <returns></returns>
        private tbl_api_orderItem LoadApiOrder(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(null);
            }
            tbl_mrItem mr = (tbl_mrItem)PushObject;
            var        l  = tbl_api_orderItem.GetQueries(dBase);

            l.TableDate = mr.mr_date;
            l.Filter.AndFilters.Add(tbl_api_orderItem.Fields.PrimaryKey, id);
            return(l.GetRowByFilters());
        }
Esempio n. 3
0
        public override bool DoPush()
        {
            if (_apiMatchAPI == null)
            {
                return(false);
            }
            bool isNew;

            if (PushObject.cp_id > 0 && PushObject.cp_id != 34)
            {//已经关联的订单
                var apiID = PushObject.GetValue(EPushField.ApiOrderId);
                _apiOrder = LoadApiOrder(apiID);
                WriteTrackLog(string.Format("已经关联订单, api id={0}", apiID));
                isNew = false;
            }
            else
            {//未匹配的新订单
                _apiOrder = LoadApiOrder();
                isNew     = true;
            }

            if (_apiOrder == null)
            {
                return(false);
            }

            var apiStatus = _apiOrder.status % 10000;

            if (apiStatus != 1011 && apiStatus != 1013 && apiStatus != 2023)
            {
                WriteTrackLog("订单状态错误:" + apiStatus.ToString());
                return(false);//api 上量是状态错误,如有数据回传,有可能同步状态有问题
            }

            //var tOrder = tbl_trone_orderItem.GetQueries(dBase);
            //tOrder.Filter.AndFilters.Add(tbl_trone_orderItem.Fields.id, _apiOrder.trone_order_id);
            //tOrder.Filter.AndFilters.Add(tbl_trone_orderItem.Fields.disable, false);
            //var m = tOrder.GetRowByFilters();
            var m = tbl_trone_orderItem.GetRowByIdWithCache(dBase, _apiOrder.trone_order_id);

            if (m == null || m.disable)
            {
                return(false);
            }
            this.CP_Id = m.cp_id;
            SetConfig(m);//找到对应的渠道上量(相当于执行 base.LoadCPAPI())
            tbl_mrItem mr = null;

            if (PushObject is tbl_mrItem)
            {
                mr = ((tbl_mrItem)PushObject);
                mr.api_order_id = _apiOrder.id;
                mr.user_md10    = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string.Format("{0}_{1}_{2}", _apiOrder.imsi, _apiOrder.imei, _apiOrder.mobile), "MD5");
                if (string.IsNullOrEmpty(mr.mobile) && !string.IsNullOrEmpty(_apiOrder.mobile))
                {
                    mr.mobile = _apiOrder.mobile;
                }
                if (string.IsNullOrEmpty(mr.imsi) && !string.IsNullOrEmpty(_apiOrder.imsi))
                {
                    mr.imsi = _apiOrder.imsi;
                }
                if (mr.province_id == 32 && (!string.IsNullOrEmpty(mr.mobile) || !string.IsNullOrEmpty(mr.imsi)))
                {
                    var city = Library.GetCityInfo(dBase, mr.mobile, mr.imsi);
                    mr.city_id     = city.id;
                    mr.province_id = city.province_id;
                }
            }


            var ret = base.DoPush();

            if (!ret)
            {
                return(false);
            }

            if (isNew)
            {
                UpdateTroneLimit();
            }

            _apiOrder.IgnoreEquals = true;

            var aStatus = apiStatus + (PushObject.syn_flag == 0 ? 10000 : 20000);

            //扣量和非扣量标识
            _apiOrder.status = aStatus;// apiStatus + (PushObject.syn_flag == 0 ? 10000 : 20000);
            try
            {
                _apiOrder.SaveToDatabase(dBase);
            }
            catch (Exception ex)
            {
                Shotgun.Library.SimpleLogRecord.WriteLog("api_push",
                                                         string.Format("linkid{0} 更新api.status 出错:{1}", PushObject.GetValue(EPushField.LinkID), ex.ToString()));
            }
            finally
            {
            }
            return(true);
        }