Example #1
0
        /// <summary>
        /// 更新用户每日计费信息
        /// </summary>
        /// <param name="dBase"></param>
        /// <param name="troneId"></param>
        /// <param name="customId"></param>
        /// <param name="mrDate"></param>
        private static void UpdateUserLimit(Shotgun.Database.IBaseDataClass2 dBase, int troneId, string customId, DateTime mrDate)
        {
            var key = CustomFeeModel.GetIdKey(customId, troneId, mrDate);
            var m   = cache.GetDataByIdx(key);

            if (m != null)
            {//找到用户计费缓存数据
                Shotgun.Library.SimpleLogRecord.WriteLog("api_userlimit_update",
                                                         string.Format("customid:{0},troneId:{1},Count:{2} +1", customId, troneId, m.Count));
                lock (m)
                    m.Count++;
                return;
            }
            var  trone   = LightDataModel.tbl_troneItem.GetRowById(dBase, troneId);
            var  spTrone = LightDataModel.tbl_sp_troneItem.GetRowById(dBase, trone.sp_trone_id);
            var  data    = cache.GetCacheData(false);
            bool iFound  = false;

            if (data != null)
            {
                lock (cache.SyncRoot)
                {
                    foreach (var item in data)
                    {
                        if (item.SpToneId == spTrone.id && item.Id == key)
                        {
                            iFound = true;
                            break;
                        }
                    }
                }
            }
            if (iFound)//用户的缓存已经加载,但没有此通道计费情况
            {
                m          = new CustomFeeModel();
                m.SpToneId = spTrone.id;
                m.TroneId  = trone.id;
                m.Date     = mrDate.Date;
                m.Count    = 1;
                m.Fee      = decimal.ToInt32(trone.price * 100);
                cache.InsertItem(m);
                Shotgun.Library.SimpleLogRecord.WriteLog("api_userlimit_update",
                                                         string.Format("customid:{0},troneId:{1}, found other trone!", customId, troneId));
                return;
            }
            else
            {
                Shotgun.Library.SimpleLogRecord.WriteLog("api_userlimit_update",
                                                         string.Format("customid:{0},troneId:{1},not found!", customId, troneId));
            }
            //无缓存数据时,无需任何处理
            //因为在通道计算时,无缓存数据时,会主动从数据库读取最新信息
            //LoadFromDBase(dBase, spTrone.id, customId);
        }