예제 #1
0
        public static tbl_cp_trone_rateItem QueryBySpTroneId(Shotgun.Database.IBaseDataClass2 dBase, int spTroneId, int cpId)
        {
            var m = _cache.FindFirstData(e => e.sp_trone_id == spTroneId && e.cp_id == cpId);

            if (m != null)
            {
                return(m);
            }

            var q = GetQueries(dBase);

            q.Filter.AndFilters.Add(Fields.cp_id, cpId);
            q.Filter.AndFilters.Add(Fields.sp_trone_id, spTroneId);
            m = q.GetRowByFilters();
            if (m != null)
            {
                _cache.InsertItem(m);
            }
            else
            {
                _cache.InsertItem(m = new tbl_cp_trone_rateItem()
                {
                    cp_id = cpId, sp_trone_id = spTroneId
                });
            }
            return(m);
        }
예제 #2
0
        /// <summary>
        /// 加载分省扣量数据
        /// </summary>
        /// <param name="defCfg"></param>
        /// <param name="prvCfg">为空时,直接反回默认扣量</param>
        /// <param name="ProvinceId">当前传入省份信息</param>
        /// <returns></returns>
        public static IHold_DataItem LoadProvinceData(tbl_trone_orderItem defCfg, tbl_cp_trone_rateItem prvCfg, int ProvinceId)
        {
            if (prvCfg == null || string.IsNullOrEmpty(prvCfg.province_hold_rate))
            {
                return(defCfg);
            }
            //23,4,28,22,13,11,27=0.36;7,19,24,29,3,15,17,25=0.25;5,2,16=0.36;30,8,26,9,20=0.35
            var cfg = prvCfg.province_hold_rate.Replace(" ", "");

            var mc = Regex.Match(cfg, "((?in)(^|;)([\\d,]+?,|)" + ProvinceId.ToString() + "(,.+?|))=([\\d\\.]+)");

            if (!mc.Success)
            {
                return(defCfg);
            }

            float rate;

            if (!float.TryParse(mc.Groups[2].Value, out rate))
            {
                return(defCfg);
            }
            int bitsKey = prvCfg.sp_trone_id;

            bitsKey <<= 13;
            bitsKey  |= defCfg.cp_id & 0x1fff;
            bitsKey <<= 13;
            bitsKey  |= ProvinceId;

            //sp_trone id 13bit  + cp id 13bit + provinceId 6bit
            // 13bit max int 8191
            return(new ProvinceHoldConfg(defCfg, rate, bitsKey));
        }