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); }
/// <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)); }