using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using djy.Paas.IService;
using djy.Paas.Model;
using Ys.Core.Common;
using djy.Model;
using System.Text.Json;
using DotNetCore.CAP;
using Microsoft.IdentityModel.Tokens;
using System.Security.Claims;
namespace djy.Paas.Service
{
public class ToolsService : ServBase, IToolsService
{
///
/// demo 订阅
///
///
[CapSubscribe("demo")]
public void Demo(string Data)
{
_LogsAdd("demo订阅接收" + DateTime.Now, "mq", Data);
}
#region 数据字典配置
public ReturnPagedResult GetDictionaryList(tb_sys_Dictionary Dto, PageEntity pageEntity)
{
var rs = new ReturnPagedResult();
//var sql = DbBus.Get(DbList.djypublicedb).Select().WhereIf(Dto.GroupName.IsNotNull(), w => w.GroupName == Dto.GroupName)
// .WhereIf(Dto.Key.IsNotNull(), w => w.Key == Dto.Key);
//var list = sql.Count(out var totalcount).Page(pageEntity.Page, pageEntity.Limit).ToList();
//rs.Pageset(pageEntity, totalcount);
//rs.Data = list;
//rs.OK();
var getlist = YsRedisHelp.RedisGet>("dictlist");
if (getlist == null)
{
var sql = DbBus.Get(DbList.djypublicedb).Select().WhereIf(Dto.GroupName.IsNotNull(), w => w.GroupName == Dto.GroupName)
.WhereIf(Dto.Key.IsNotNull(), w => w.Key == Dto.Key);
rs.Data = sql.ToList();
}
else
{
if (Dto.GroupName.IsNotNull() && Dto.Key.IsNull())
{
rs.Data = getlist.Where(w => w.GroupName == Dto.GroupName).ToList();
}
else if (Dto.GroupName.IsNotNull() && Dto.Key.IsNotNull())
{
rs.Data = getlist.Where(w => w.GroupName == Dto.GroupName && w.Key == Dto.Key).ToList();
}
else
{
rs.Data = getlist;
}
}
rs.Count = rs.Data.Count();
rs.PageIndex = 1;
rs.Limit = rs.Data.Count;
rs.OK();
return rs;
}
public ReturnResult UpDictionary(tb_sys_Dictionary Dto)
{
var rs = new ReturnResult();
rs.Data = DbBus.Get(DbList.djypublicedb).Update().Set(w => w.Value, Dto.Value).WhereIf(Dto.Key.IsNotNull(), w => w.Key == Dto.Key)
.WhereIf(Dto.Id > 0, w => w.Id == Dto.Id).ExecuteAffrows();
rs.OK();
bindConfigDict();
return rs;
}
///
/// 初始化绑定数据字典到 sysOptionConfig.ConfigDcit配置
///
/// 间隔自动刷新
/// 间隔时间 分钟 默认一分钟
///
public bool bindConfigDict(bool Isjob = false, int jobtime = 1)
{
var GetDcitList = DbBus.Get(DbList.djypublicedb).Select().OrderBy(w => w.GroupName).OrderBy(w => w.Indexint).ToList();
var grouplist = GetDcitList.GroupBy(w => w.GroupName).Select(g => new { GroupName = g.Key }).ToList();
YsRedisHelp.RedisSet("dictlist", GetDcitList.Where(w => w.GroupName != "sys").ToList());
//grouplist.ForEach(item => {
// //写入redis缓存
// YsRedisHelp.RedisSet("dict_"+item.GroupName, GetDcitList.Where(w=>w.GroupName==item.GroupName).ToList());
//});
var dlist = GetDcitList.Where(w => w.DictType == "config").ToList();
if (dlist.Count == 0)
{ //没有字典数据则初始化数据库字典
sysOptionConfig.YsWebconfig.ConfigInitcount++;
if (sysOptionConfig.YsWebconfig.ConfigInitStatus == false)
{
sysOptionConfig.YsWebconfig.ConfigInitStatus = true;
_DictInit();
dlist = DbBus.Get(DbList.djypublicedb).Select().Where(w => w.DictType == "config").OrderBy(w => w.GroupName).ToList();
}
}
var dictlist = dlist.ToDictionary(item => string.Format("{0}.{1}", item.GroupName, item.Key), item => item.Value);
sysOptionConfig.YsWebconfig.ConfigList = dictlist;
if (Isjob)
{
int _dict_refreshtime = jobtime;
try
{
if (sysOptionConfig.YsWebconfig.ConfigList.GetValueOrDefault("sys.dict_refreshtime").IsNotNull())
{
_dict_refreshtime = int.Parse(sysOptionConfig.YsWebconfig.ConfigList.GetValueOrDefault("sys.dict_refreshtime"));
}
}
catch { }
Hangfire.RecurringJob.AddOrUpdate(() => bindConfigDict(false, 1), Hangfire.Cron.MinuteInterval(_dict_refreshtime), TimeZoneInfo.Local);
}
_LogsAdd($"刷新缓存{DateTime.Now},Isjob:{Isjob}", "bindConfigDict", null);
return true;
}
///
/// 获取数据字典分组列表
///
///
public Dictionary GetConfigList(string GroupName = null)
{
if (sysOptionConfig.YsWebconfig.ConfigList == null)
{
bindConfigDict();
}
if (GroupName.IsNotNull())
return sysOptionConfig.YsWebconfig.ConfigList.Where(w => w.Key.StartsWith(GroupName + ".")).ToDictionary(x => x.Key, x => x.Value);
else
return sysOptionConfig.YsWebconfig.ConfigList;
}
///
/// 获取配置参数
///
///
/// 默认sys
public string GetConfigKey(string key, string GroupName = "sys")
{
if (sysOptionConfig.YsWebconfig.ConfigList == null)
{
bindConfigDict();
}
var dictkey = string.Format("{0}.{1}", GroupName, key);
return sysOptionConfig.YsWebconfig.ConfigList.GetValueOrDefault(dictkey);
}
///
/// 获取配置参数转djy标准dict类型对象列表
///
///
///
///
public List GetConfigKeyToDictList(string Key, string GroupName = "sys")
{
var list = new List();
try
{
list = YsJson.JsonToObject>(GetConfigKey(Key));
}
catch { }
return list;
}
///
/// 初始化配置数据库字典
///
private static void _DictInit()
{
//sysOptionConfig.YsWebconfig.ConfigInitStatus = true;
//var dictlist = new List();
//dictlist.AddRange(
// new List() {
// new tb_sys_Dictionary{Indexint=3, GroupName="sys", Key="Email_SmtpHost", Value="smtpcom.263xmail.com", Title="email smtm服务器地址", Memo="" },
// new tb_sys_Dictionary{Indexint=4, GroupName="sys", Key="Email_SmtpPort", Value="465", Title="email发动端口", Memo="" },
// new tb_sys_Dictionary{Indexint=5, GroupName="sys", Key="Email_LoginName", Value="admin@dongshengsoft.com", Title="email发送者账户", Memo="" },
// new tb_sys_Dictionary{Indexint=6, GroupName="sys", Key="Email_Password", Value="ds!@#)(*", Title="发送账户密码", Memo="" },
// new tb_sys_Dictionary{Indexint=7, GroupName="sys", Key="Email_SendAccess", Value="dongshengsoft@dongshengsoft.com", Title="发送者", Memo="" },
// new tb_sys_Dictionary{Indexint=14, GroupName="sys", Title="船务公司数据 json格式",Key="carrierlist", Value="[{\"Code\":\"BSL\",\"Name\":\"巴拉基船务\"},{\"Code\":\"MEL\",\"Name\":\"玛利亚那\"},{\"Code\":\"JIJIANG\",\"Name\":\"锦江航运\"},{\"Code\":\"SCIL\",\"Name\":\"印度国航\"},{\"Code\":\"PCL\",\"Name\":\"泛舟海运\"},{\"Code\":\"SITC\",\"Name\":\"海丰船务\"},{\"Code\":\"SLS\",\"Name\":\"新加坡海领\"},{\"Code\":\"CCL\",\"Name\":\"中通\"},{\"Code\":\"STX\",\"Name\":\"世腾船务\"},{\"Code\":\"UASC\",\"Name\":\"阿拉伯航运\"},{\"Code\":\"NILEDUTCH\",\"Name\":\"尼罗河航运\"},{\"Code\":\"MCC\",\"Name\":\"新航\"},{\"Code\":\"SML\",\"Name\":\"森罗商船\"},{\"Code\":\"YML\",\"Name\":\"阳明\"},{\"Code\":\"OUASCA\",\"Name\":\"怡和\"},{\"Code\":\"KKC\",\"Name\":\"神原汽船\"},{\"Code\":\"CNC\",\"Name\":\"正利航运\",\"Config\":\"OrderHead=AA\"},{\"Code\":\"ANL\",\"Name\":\"澳航\",\"Config\":\"OrderHead=WD\"},{\"Code\":\"VSI\",\"Name\":\"维萨航运\"},{\"Code\":\"SMH\",\"Name\":\"上海德生达人\"},{\"Code\":\"SWIRE\",\"Name\":\"太古\"},{\"Code\":\"CMA\",\"Name\":\"法国达飞\",\"Config\":\"OrderHead=QD\"},{\"Code\":\"ZIM\",\"Name\":\"以星轮船\"},{\"Code\":\"HLC\",\"Name\":\"赫伯罗特\"},{\"Code\":\"ASL\",\"Name\":\"亚海\"},{\"Code\":\"CKL\",\"Name\":\"天敬海运\"},{\"Code\":\"MSC\",\"Name\":\"地中海航运\"},{\"Code\":\"GSL\",\"Name\":\"金星轮船\"},{\"Code\":\"CCNI\",\"Name\":\"智利航运\"},{\"Code\":\"IAL\",\"Name\":\"运达\"},{\"Code\":\"HMM\",\"Name\":\"现代\"},{\"Code\":\"OOCL\",\"Name\":\"东方海外\"},{\"Code\":\"WHL\",\"Name\":\"万海\"},{\"Code\":\"DSL\",\"Name\":\"斗宇\"},{\"Code\":\"TYS\",\"Name\":\"太荣\"},{\"Code\":\"DYL\",\"Name\":\"东映\"},{\"Code\":\"FESCO\",\"Name\":\"FESCO\"},{\"Code\":\"GFS\",\"Name\":\"格飞驰\"},{\"Code\":\"WINFAST\",\"Name\":\"永发航运\"},{\"Code\":\"ONE\",\"Name\":\"网联船务\"},{\"Code\":\"EAS\",\"Name\":\"达通\"},{\"Code\":\"ACI\",\"Name\":\"亚利安莎\"},{\"Code\":\"APL\",\"Name\":\"美国总统\"},{\"Code\":\"TSL\",\"Name\":\"德祥\"},{\"Code\":\"MARI\",\"Name\":\"玛丽亚娜\"},{\"Code\":\"ESL\",\"Name\":\"阿联酋航运\"},{\"Code\":\"KMTC\",\"Name\":\"高丽\"},{\"Code\":\"HSD\",\"Name\":\"汉堡南美\"},{\"Code\":\"AAL\",\"Name\":\"澳亚航运\"},{\"Code\":\"CUL\",\"Name\":\"中联航运\"},{\"Code\":\"SINOLINE\",\"Name\":\"中外运集装箱\"},{\"Code\":\"MSK\",\"Name\":\"马士基\"},{\"Code\":\"PHL\",\"Name\":\"浦海\"},{\"Code\":\"SAF\",\"Name\":\"南非航运\"},{\"Code\":\"EMC\",\"Name\":\"长荣\"},{\"Code\":\"SNKO\",\"Name\":\"长锦\"},{\"Code\":\"COHE\",\"Name\":\"京汉\"},{\"Code\":\"NAM\",\"Name\":\"南星\"},{\"Code\":\"SOF\",\"Name\":\"顺发\"},{\"Code\":\"PIL\",\"Name\":\"太平\"},{\"Code\":\"IRL\",\"Name\":\"伊朗航运\"},{\"Code\":\"POS\",\"Name\":\"泛奥升\"},{\"Code\":\"GQF\",\"Name\":\"安通\"},{\"Code\":\"HAT\",\"Name\":\"兴亚船务\"},{\"Code\":\"RCL\",\"Name\":\"宏海\"},{\"Code\":\"COSCO\",\"Name\":\"中远海运\"}]", Memo="" },
// new tb_sys_Dictionary{Indexint=15, GroupName="sys", Key="boxstationlist", Title="场站 json列表数据",Value="[{\"Code\":\"JIEFENG\",\"Name\":\"捷丰国际\",\"Config\":\"\"},{\"Code\":\"STXKEYUN\",\"Name\":\"世腾客运\",\"Config\":\"\"},{\"Code\":\"ZHONGCHUANG\",\"Name\":\"中创物流\",\"Config\":\"\"},{\"Code\":\"GangLianXin\",\"Name\":\"港联欣物流\",\"Config\":\"\"},{\"Code\":\"GLCZ\",\"Name\":\"青岛港路\",\"Config\":\"\"},{\"Code\":\"SSCZ\",\"Name\":\"胜狮物流\",\"Config\":\"\"},{\"Code\":\"SZX\",\"Name\":\"青岛神州行\",\"Config\":\"\"},{\"Code\":\"GANGWAN\",\"Name\":\"青岛港联海物流\",\"Config\":\"\"},{\"Code\":\"ZHENGHUA\",\"Name\":\"青岛振华\",\"Config\":\"\"},{\"Code\":\"WYCZ\",\"Name\":\"中国外运\",\"Config\":\"\"},{\"Code\":\"LUHAI\",\"Name\":\"青岛陆海国际\",\"Config\":\"\"},{\"Code\":\"JINHENG\",\"Name\":\"青岛锦恒\",\"Config\":\"\"},{\"Code\":\"GLJ\",\"Name\":\"港联捷,怡航\",\"Config\":\"\"},{\"Code\":\"DAYA\",\"Name\":\"大亚场站\",\"Config\":\"\"},{\"Code\":\"WLXX\",\"Name\":\"物流信息\",\"Config\":\"\"},{\"Code\":\"FLCZ\",\"Name\":\"泛联场站\",\"Config\":\"\"},{\"Code\":\"QDKY\",\"Name\":\"青岛客运\",\"Config\":\"\"},{\"Code\":\"SDITDS\",\"Name\":\"通关与物流状态\",\"Config\":\"\"},{\"Code\":\"MJCZ\",\"Name\":\"青岛珉钧\",\"Config\":\"\"},{\"Code\":\"MGDG\",\"Name\":\"青岛东港,明港东港\",\"Config\":\"\"},{\"Code\":\"QDGLH\",\"Name\":\"青岛港联华\",\"Config\":\"\"},{\"Code\":\"CHANGRONG\",\"Name\":\"长荣\",\"Config\":\"vgmislogin=1\"},{\"Code\":\"GLR\",\"Name\":\"港联荣\",\"Config\":\"vgmislogin=1\"},{\"Code\":\"YGT\",\"Name\":\"云港通\",\"Config\":\"\"},{\"Code\":\"XINBADA\",\"Name\":\"新霸达场站\",\"Config\":\"vgmislogin=1\"}]", Memo="" },
// new tb_sys_Dictionary{Indexint=16, GroupName="sys", Key="boxweigthbetween", Title="箱子重量区间",Value="2600,36000", Memo="" }
// // new tb_tb_sys_Dictionary{Indexint=9, GroupName="sys", Key="", Title="",Value="", Memo="" }
// }
// );
//dictlist.ForEach(x => { x.Init(); });
//DbBus.Get(DbList.djypublicedb).Insert(dictlist).ExecuteAffrows();
}
#endregion
#region 大简云字典
///
///
///
///
///
///
public ReturnResult