ComplianceServer/oldcode/BLL/Redis/REDIS_Util_BL.cs

153 lines
6.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.Common;
using WX.CRM.Model.EntitySync;
namespace WX.CRM.BLL.Redis
{
public class REDIS_Util_BL
{
//获取 待同步数据
public List<WX.CRM.Model.EntitySync.REDIS_CACHE_SSODATASYNC> GetList(int topNum, WX.CRM.Model.Redis.RedisConfig redisdb)
{
using (WX.CRM.Model.EntitySync.Entities db = new WX.CRM.Model.EntitySync.Entities())
{
string[] dbCodes = this.GetDbCodeList_SynsLog(redisdb);
return db.REDIS_CACHE_SSODATASYNC.Where(m => dbCodes.Contains(m.TABLETYPE)).OrderBy(p => p.PKID).Skip(0).Take(topNum).ToList();
}
}
//获取 待同步数据记录数
public int GetList_Count(WX.CRM.Model.Redis.RedisConfig redisdb)
{
using (WX.CRM.Model.EntitySync.Entities db = new WX.CRM.Model.EntitySync.Entities())
{
string[] dbCodes = this.GetDbCodeList_SynsLog(redisdb);
return db.REDIS_CACHE_SSODATASYNC.Where(m => dbCodes.Contains(m.TABLETYPE)).Count();
}
}
/// <summary>
/// 缓存字典表数据
/// </summary>
/// <returns></returns>
public List<WX.CRM.Model.EntitySync.REDIS_CACHE_TABLETYPE> GetTableType_CacheList()
{
string cacheKey = "cache_REDIS_CACHE_TABLETYPE_getList";
if (CacheHelper.Exists(cacheKey))
return CacheHelper.Get<List<WX.CRM.Model.EntitySync.REDIS_CACHE_TABLETYPE>>(cacheKey);
using (WX.CRM.Model.EntitySync.Entities db = new WX.CRM.Model.EntitySync.Entities())
{
List<WX.CRM.Model.EntitySync.REDIS_CACHE_TABLETYPE> list = db.REDIS_CACHE_TABLETYPE.ToList();
CacheHelper.Set(cacheKey, list);
return list;
}
}
/// <summary>
/// 获取某个db类型的数据
/// </summary>
/// <returns></returns>
public string[] GetDbCodeList_SynsLog(WX.CRM.Model.Redis.RedisConfig redisdb)
{
string dbname = string.Empty;
switch (redisdb)
{
case WX.CRM.Model.Redis.RedisConfig.Redis0: dbname = "0"; break;//实例1
case WX.CRM.Model.Redis.RedisConfig.Redis1: dbname = "1"; break;//实例2
default: dbname = "0"; break;
}
return this.GetTableType_CacheList().Where(m => m.REDISDB == dbname).Select(m => m.TABLECODE).ToArray();
}
/// <summary>
/// 获取DB名称 (根据类型)
/// </summary>
/// <param name="tableType">类型</param>
/// <returns></returns>
public string GetTableRedisDb(string tableType)
{
WX.CRM.Model.EntitySync.REDIS_CACHE_TABLETYPE dataType = this.GetTableType_CacheList().Where(m => m.TABLECODE == tableType).FirstOrDefault();
return dataType == null ? "" : dataType.REDISDB;
}
/// <summary>
/// 获取字典表信息
/// </summary>
/// <param name="tableCode"></param>
/// <returns></returns>
public WX.CRM.Model.EntitySync.REDIS_CACHE_TABLETYPE GetDataType(string tableCode)
{
return GetTableType_CacheList().Where(m => m.TABLECODE == tableCode).FirstOrDefault();
}
/// <summary>
/// 执行Ok转义到ok表数据去
/// </summary>
/// <param name="info">待处理记录</param>
public void InsertOkData(WX.CRM.Model.EntitySync.REDIS_CACHE_SSODATASYNC info)
{
try
{
using (WX.CRM.Model.EntitySync.Entities db = new WX.CRM.Model.EntitySync.Entities())
{
REDIS_CACHE_SSODATASYNC_OK model = new REDIS_CACHE_SSODATASYNC_OK()
{
PKID = info.PKID,
KEYS = info.KEYS,
LASTSYNCTIME = info.LASTSYNCTIME,
ERRMSG = info.ERRMSG,
ERRNUM = info.ERRNUM,
OPTYPE = info.OPTYPE,
TABLETYPE = info.TABLETYPE,
TIME = info.TIME
};
db.REDIS_CACHE_SSODATASYNC_OK.Add(model);
REDIS_CACHE_SSODATASYNC entity = db.REDIS_CACHE_SSODATASYNC.FirstOrDefault(m => m.PKID == info.PKID);
db.REDIS_CACHE_SSODATASYNC.Remove(entity);
db.SaveChanges();
}
}
catch { throw; }
}
/// <summary>
/// 执行Redis待同步出现错误修改信息
/// </summary>
/// <param name="info"></param>
public void UpdateErroData(WX.CRM.Model.EntitySync.REDIS_CACHE_SSODATASYNC info)
{
try
{
using (WX.CRM.Model.EntitySync.Entities db = new WX.CRM.Model.EntitySync.Entities())
{
REDIS_CACHE_SSODATASYNC entity = db.REDIS_CACHE_SSODATASYNC.FirstOrDefault(m => m.PKID == info.PKID);
if (info.ERRNUM >= 3)
{
REDIS_CACHE_SSODATASYNC_OK model = new REDIS_CACHE_SSODATASYNC_OK()
{
PKID = info.PKID,
KEYS = info.KEYS,
LASTSYNCTIME = info.LASTSYNCTIME,
ERRMSG = info.ERRMSG,
ERRNUM = info.ERRNUM,
OPTYPE = info.OPTYPE,
TABLETYPE = info.TABLETYPE,
TIME = info.TIME
};
db.REDIS_CACHE_SSODATASYNC_OK.Add(model);
db.REDIS_CACHE_SSODATASYNC.Remove(entity);
}
else
{
entity.ERRNUM = info.ERRNUM;
entity.LASTSYNCTIME = info.LASTSYNCTIME;
entity.ERRMSG = info.ERRMSG;
}
db.SaveChanges();
}
}
catch (Exception ex) { LogHelper.Error(string.Concat("REDIS_Util_BL.UpdateErroData", ex.Message, ex.StackTrace)); }
}
}
}