153 lines
6.2 KiB
C#
153 lines
6.2 KiB
C#
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)); }
|
||
}
|
||
}
|
||
}
|