123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- using Hotline.Caching.Interfaces;
- using Hotline.Repository.SqlSugar.System;
- using Hotline.Settings;
- using Hotline.Share.Dtos.Order;
- using Hotline.Share.Enums.CallCenter;
- using Hotline.Share.Enums.Order;
- using J2N.Collections.ObjectModel;
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- using XF.Domain.Authentications;
- using XF.Domain.Dependency;
- using XF.Utility.EnumExtensions;
- namespace Hotline.Application.Systems;
- public class BaseDataApplication : IScopeDependency
- {
- private readonly ISystemDicDataCacheManager _sysDicDataCacheManager;
- private readonly ISystemOrganizeRepository _systemOrganizeRepository;
- public BaseDataApplication(ISystemDicDataCacheManager sysDicDataCacheManager, ISystemOrganizeRepository systemOrganizeRepository)
- {
- _sysDicDataCacheManager = sysDicDataCacheManager;
- _systemOrganizeRepository = systemOrganizeRepository;
- }
- private ConcurrentDictionary<string, dynamic> _baseData = new ConcurrentDictionary<string, dynamic>();
- //private ConcurrentDictionary<string, int> _baseType = new ConcurrentDictionary<string, int>();
- //private ConcurrentDictionary<string, int> _enumType = new ConcurrentDictionary<string, int>();
- #region 内部方法
- private void Add(Type type)
- {
- var name = new StackTrace().GetFrame(1).GetMethod().Name;
- var method = typeof(EnumExts).GetMethod("GetDescriptions", BindingFlags.Static | BindingFlags.Public);
- var genericMethod = method.MakeGenericMethod(type);
- var result = genericMethod.Invoke(null, null);
- _baseData.TryAdd(name, result);
- }
- private void Add(string key)
- {
- var name = new StackTrace().GetFrame(1).GetMethod().Name;
- var result = _sysDicDataCacheManager
- .GetSysDicDataCache(key)
- .Where(x => x.DicDataValue != "-1")
- .Select(m => new { m.Id, m.DicDataName, m.DicDataValue });
- _baseData.TryAdd(name, result);
- }
- #endregion
- public BaseDataApplication Source()
- {
- Add(typeof(ESource));
- return this;
- }
- public BaseDataApplication VisitType()
- {
- Add(typeof(EVisitType));
- return this;
- }
- public Dictionary<string, dynamic> Build()
- {
- return new Dictionary<string, dynamic>(_baseData);
- }
- public BaseDataApplication VoiceEvaluate()
- {
- Add(typeof(EVoiceEvaluate));
- return this;
- }
- public BaseDataApplication SeatEvaluate()
- {
- Add(typeof(ESeatEvaluate));
- return this;
- }
- public BaseDataApplication VisitSatisfaction()
- {
- Add(SysDicTypeConsts.VisitSatisfaction);
- return this;
- }
- public BaseDataApplication VisitManner()
- {
- Add(SysDicTypeConsts.VisitManner);
- return this;
- }
- public BaseDataApplication VisitStateQuery()
- {
- Add(typeof(EVisitStateQuery));
- return this;
- }
- public BaseDataApplication DissatisfiedReason()
- {
- Add(SysDicTypeConsts.DissatisfiedReason);
- return this;
- }
- public BaseDataApplication CallForwardingSource()
- {
- Add(SysDicTypeConsts.CallForwardingSource);
- return this;
- }
- public BaseDataApplication CallForwardingType()
- {
- Add(SysDicTypeConsts.CallForwardingType);
- return this;
- }
- public BaseDataApplication EndBy()
- {
- Add(typeof(EEndBy));
- return this;
- }
- public BaseDataApplication OrgsOptions(ISessionContext sessionContext)
- {
- IReadOnlyList<SystemOrganize> items;
- if (sessionContext.OrgIsCenter)
- items = _systemOrganizeRepository.GetOrgJson().GetAwaiter().GetResult();
- else
- items = _systemOrganizeRepository.GetOrgJsonForUser(sessionContext.RequiredOrgId).GetAwaiter().GetResult();
- _baseData.TryAdd("OrgsOptions", items);
- return this;
- }
- public BaseDataApplication AttitudeType()
- {
- Add(typeof(EAttitudeType));
- return this;
- }
- }
|