修改参数表字段;添加拉去配置缓存

This commit is contained in:
柳文翔 2024-03-11 09:46:17 +08:00
parent 9ae2a8335a
commit edf9704ffe
15 changed files with 157 additions and 22 deletions

View File

@ -37,7 +37,7 @@ public class EditTrackPullConfigInput
/// <summary> /// <summary>
/// 拉取轨迹时区 /// 拉取轨迹时区
/// </summary> /// </summary>
public string? TackTimeZoneName { get; set; } public string? TrackTimeZoneName { get; set; }
/// <summary> /// <summary>
/// 拉取轨迹内容代码 /// 拉取轨迹内容代码

View File

@ -10,7 +10,7 @@ public class TrackPullParamConfigDto
/// <summary> /// <summary>
/// 轨迹时区参数名 /// 轨迹时区参数名
/// </summary> /// </summary>
public string TackTimeZoneName { get; set; } = null!; public string TrackTimeZoneName { get; set; } = null!;
/// <summary> /// <summary>
/// 轨迹代码参数名 /// 轨迹代码参数名
@ -37,11 +37,6 @@ public class TrackPullParamConfigDto
/// </summary> /// </summary>
public string TrackTimeName { get; set; } = null!; public string TrackTimeName { get; set; } = null!;
/// <summary>
/// 轨迹发生时间参数名
/// </summary>
public string TrackTimeZoneName { get; set; } = null!;
/// <summary> /// <summary>
/// 订单数组路径 /// 订单数组路径
/// </summary> /// </summary>

View File

@ -42,7 +42,7 @@ public class EditTrackPushConfigInput
/// <summary> /// <summary>
/// 推送轨迹时区 /// 推送轨迹时区
/// </summary> /// </summary>
public string? TackTimeZoneName { get; set; } public string? TrackTimeZoneName { get; set; }
/// <summary> /// <summary>
/// 推送轨迹内容代码 /// 推送轨迹内容代码

View File

@ -11,4 +11,13 @@ public interface ITrackPullCacheService
/// <param name="serviceProviderId">服务商id</param> /// <param name="serviceProviderId">服务商id</param>
/// <returns></returns> /// <returns></returns>
Task<TrackPullConfigDto> GetPullConfigAsync(int subSystemId, int serviceProviderId); Task<TrackPullConfigDto> GetPullConfigAsync(int subSystemId, int serviceProviderId);
/// <summary>
/// 设置拉取配置缓存
/// </summary>
/// <param name="id"></param>
/// <param name="subSystemId">子系统id</param>
/// <param name="serviceProviderId">服务商id</param>
/// <returns></returns>
Task<TrackPullConfigDto> SetPullConfigAsync(int? id = null, int? subSystemId = null, int? serviceProviderId = null);
} }

View File

@ -1,6 +1,7 @@
using AutoMapper; using AutoMapper;
using SJZY.Track.Application.Contract.Dtos.TrackPull; using SJZY.Track.Application.Contract.Dtos.TrackPull;
using SJZY.Track.Domain.Aggregates.TrackPullAggregate; using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Dtos.TrackPull;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
namespace SJZY.Track.Application.AutoMapper; namespace SJZY.Track.Application.AutoMapper;
@ -15,5 +16,7 @@ public class TrackPullAutoMapperProfile : Profile
CreateMap<EditTrackPullContentInput, TrackPullContentConfigEntity>(MemberList.None) CreateMap<EditTrackPullContentInput, TrackPullContentConfigEntity>(MemberList.None)
.ForMember(dest => dest.TrackKeyword, opt => opt.MapFrom(src => string.Join(',', src.TrackKeywords))) .ForMember(dest => dest.TrackKeyword, opt => opt.MapFrom(src => string.Join(',', src.TrackKeywords)))
.ForMember(dest => dest.TrackKeywordReverse, opt => opt.MapFrom(src => string.Join(',', src.TrackKeywordReverses))); .ForMember(dest => dest.TrackKeywordReverse, opt => opt.MapFrom(src => string.Join(',', src.TrackKeywordReverses)));
CreateMap<GetTrackPullConfigDetailOutputVO, TrackPullParamConfigDto>(MemberList.None);
CreateMap<GetTrackPullContentListCacheVO, TrackPullContentConfigDto>(MemberList.None);
} }
} }

View File

@ -0,0 +1,53 @@
using SJZY.Expand.ABP.Core;
using SJZY.Track.Application.Contract.Dtos.TrackPull;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Dtos.TrackPull;
using System.Linq.Expressions;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.TrackPull;
public class TrackPullCacheService : ApplicationService, ITrackPullCacheService, ITransientDependency
{
private readonly ITrackPullConfigRepository _trackPullConfigRepository;
private string RedisKey(int subSystemId, int serviceProviderId) => GlobalConst.TrackPushKeyPrefix + subSystemId + ":" + serviceProviderId;
public TrackPullCacheService(ITrackPullConfigRepository trackPullConfigRepository)
{
_trackPullConfigRepository = trackPullConfigRepository;
}
[NonAction]
public async Task<TrackPullConfigDto> GetPullConfigAsync(int subSystemId, int serviceProviderId)
{
var data = await RedisHelper.Client.GetAsync<TrackPullConfigDto>(RedisKey(subSystemId, serviceProviderId));
data ??= await SetPullConfigAsync(subSystemId: subSystemId, serviceProviderId: serviceProviderId);
return data;
}
[NonAction]
public async Task<TrackPullConfigDto> SetPullConfigAsync(int? id = null, int? subSystemId = null, int? serviceProviderId = null)
{
var data = new TrackPullConfigDto();
Expression<Func<TrackPullConfigEntity, bool>> exp = x => id.HasValue ? x.Id == id : x.SubSystemId == subSystemId && x.ServiceProviderId == serviceProviderId;
var trackPullConfigEntity = await _trackPullConfigRepository.GetFirstAsync(exp);
if (trackPullConfigEntity == null) return data;
var trackPullConfigDetail = await _trackPullConfigRepository.GetDetailAsync(trackPullConfigEntity.Id);
if (trackPullConfigDetail is null) return data;
var trackPullContentList = await _trackPullConfigRepository.GetContentListCacheAsync(trackPullConfigEntity.Id);
if (trackPullContentList.Count == 0) return data;
data.ParamConfig = ObjectMapper.Map<GetTrackPullConfigDetailOutputVO, TrackPullParamConfigDto>(trackPullConfigDetail);
data.ContentConfigs = ObjectMapper.Map<List<GetTrackPullContentListCacheVO>, List<TrackPullContentConfigDto>>(trackPullContentList);
await RedisHelper.Client.SetAsync(RedisKey(trackPullConfigEntity.SubSystemId, trackPullConfigEntity.ServiceProviderId), data, 86400);
return data;
}
}

View File

@ -3,9 +3,9 @@ using Microsoft.Extensions.Localization;
using SJZY.Expand.ABP.Core.Localization; using SJZY.Expand.ABP.Core.Localization;
using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Dtos.TrackPull; using SJZY.Track.Application.Contract.Dtos.TrackPull;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Application.Localization; using SJZY.Track.Application.Localization;
using SJZY.Track.Domain.Aggregates.TrackPullAggregate; using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
using SJZY.Track.Domain.Dtos.Common; using SJZY.Track.Domain.Dtos.Common;
using SJZY.Track.Domain.Dtos.TrackPull; using SJZY.Track.Domain.Dtos.TrackPull;
using SqlSugar; using SqlSugar;
@ -22,16 +22,16 @@ public class TrackPullService : ApplicationService, ITransientDependency
{ {
private readonly IStringLocalizer<TrackLocalizationResource> _stringLocalizer; private readonly IStringLocalizer<TrackLocalizationResource> _stringLocalizer;
private readonly ITrackPullConfigRepository _trackPullConfigRepository; private readonly ITrackPullConfigRepository _trackPullConfigRepository;
private readonly ITrackTemplateRepository _trackTemplateRepository; private readonly ITrackPullCacheService _trackPullCacheService;
public TrackPullService( public TrackPullService(
IStringLocalizer<TrackLocalizationResource> stringLocalizer, IStringLocalizer<TrackLocalizationResource> stringLocalizer,
ITrackPullConfigRepository trackPullConfigRepository, ITrackPullConfigRepository trackPullConfigRepository,
ITrackTemplateRepository trackTemplateRepository) ITrackPullCacheService trackPullCacheService)
{ {
_stringLocalizer = stringLocalizer; _stringLocalizer = stringLocalizer;
_trackPullConfigRepository = trackPullConfigRepository; _trackPullConfigRepository = trackPullConfigRepository;
_trackTemplateRepository = trackTemplateRepository; _trackPullCacheService = trackPullCacheService;
} }
/// <summary> /// <summary>
@ -104,15 +104,19 @@ public class TrackPullService : ApplicationService, ITransientDependency
var trackPullEntity = ObjectMapper.Map<EditTrackPullConfigInput, TrackPullConfigEntity>(input); var trackPullEntity = ObjectMapper.Map<EditTrackPullConfigInput, TrackPullConfigEntity>(input);
var trackPullParamsEntity = ObjectMapper.Map<EditTrackPullConfigInput, TrackPushPullParamsConfigEntity>(input); var trackPullParamsEntity = ObjectMapper.Map<EditTrackPullConfigInput, TrackPushPullParamsConfigEntity>(input);
int id = 0;
using (var ts = TransactionScopeHelper.Create()) using (var ts = TransactionScopeHelper.Create())
{ {
int id = await _trackPullConfigRepository.InsertReturnIdentityAsync(trackPullEntity); id = await _trackPullConfigRepository.InsertReturnIdentityAsync(trackPullEntity);
trackPullParamsEntity.PullOrPushConfigId = id; trackPullParamsEntity.PullOrPushConfigId = id;
await _trackPullConfigRepository.InsertParamsAsync(trackPullParamsEntity); await _trackPullConfigRepository.InsertParamsAsync(trackPullParamsEntity);
ts.Complete(); ts.Complete();
} }
await _trackPullCacheService.SetPullConfigAsync(id);
} }
break; break;
@ -132,6 +136,8 @@ public class TrackPullService : ApplicationService, ITransientDependency
ts.Complete(); ts.Complete();
} }
await _trackPullCacheService.SetPullConfigAsync(input.Id);
} }
break; break;
@ -156,7 +162,7 @@ public class TrackPullService : ApplicationService, ITransientDependency
} }
/// <summary> /// <summary>
/// 轨迹拉取配置内容修改 /// 轨迹拉取配置内容编辑
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
@ -193,6 +199,7 @@ public class TrackPullService : ApplicationService, ITransientDependency
var entity = ObjectMapper.Map<EditTrackPullContentInput, TrackPullContentConfigEntity>(input); var entity = ObjectMapper.Map<EditTrackPullContentInput, TrackPullContentConfigEntity>(input);
await _trackPullConfigRepository.InsertContentAsync(entity); await _trackPullConfigRepository.InsertContentAsync(entity);
await _trackPullCacheService.SetPullConfigAsync(input.TrackPullConfigId);
break; break;
} }
@ -205,6 +212,7 @@ public class TrackPullService : ApplicationService, ITransientDependency
ObjectMapper.Map(input, oldTrackPullContentEntity); ObjectMapper.Map(input, oldTrackPullContentEntity);
await _trackPullConfigRepository.UpdateContentAsync(oldTrackPullContentEntity); await _trackPullConfigRepository.UpdateContentAsync(oldTrackPullContentEntity);
await _trackPullCacheService.SetPullConfigAsync(input.TrackPullConfigId);
break; break;
} }

View File

@ -48,7 +48,7 @@ public class EditTrackPullConfigInputValidation : AbstractValidator<EditTrackPul
When(x => x.ParseMethod == 1, () => When(x => x.ParseMethod == 1, () =>
{ {
RuleFor(x => x.TackTimeZoneName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TackTimeZoneName)]); RuleFor(x => x.TrackTimeZoneName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackTimeZoneName)]);
RuleFor(x => x.TrackContentCodeName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackContentCodeName)]); RuleFor(x => x.TrackContentCodeName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackContentCodeName)]);

View File

@ -19,6 +19,13 @@ public interface ITrackPullConfigRepository : IBasicRepository<TrackPullConfigEn
/// <returns></returns> /// <returns></returns>
Task<UnifyPageResultDto<GetTrackPullContentPageOutputVO>> GetContentPageAsync(GetTrackPullContentPageInputVO input); Task<UnifyPageResultDto<GetTrackPullContentPageOutputVO>> GetContentPageAsync(GetTrackPullContentPageInputVO input);
/// <summary>
/// 轨迹拉取配置内容集合(缓存使用)
/// </summary>
/// <param name="trackPullConfigId"></param>
/// <returns></returns>
Task<List<GetTrackPullContentListCacheVO>> GetContentListCacheAsync(int trackPullConfigId);
/// <summary> /// <summary>
/// 轨迹拉取配置详情 /// 轨迹拉取配置详情
/// </summary> /// </summary>

View File

@ -39,8 +39,8 @@ public class TrackPushPullParamsConfigEntity : IFullAuditedBasicEntitys, IEntity
/// <summary> /// <summary>
/// 轨迹时区参数名 /// 轨迹时区参数名
/// </summary> /// </summary>
[SugarColumn(ColumnName = "TackTimeZoneName")] [SugarColumn(ColumnName = "TrackTimeZoneName")]
public string TackTimeZoneName { get; set; } public string TrackTimeZoneName { get; set; }
/// <summary> /// <summary>
/// 轨迹代码参数名 /// 轨迹代码参数名

View File

@ -42,7 +42,7 @@ public class GetTrackPullConfigDetailOutputVO
/// <summary> /// <summary>
/// 拉取轨迹时区 /// 拉取轨迹时区
/// </summary> /// </summary>
public string TackTimeZoneName { get; set; } public string TrackTimeZoneName { get; set; }
/// <summary> /// <summary>
/// 拉取轨迹内容代码 /// 拉取轨迹内容代码

View File

@ -0,0 +1,44 @@
namespace SJZY.Track.Domain.Dtos.TrackPull;
public class GetTrackPullContentListCacheVO
{
/// <summary>
/// 轨迹内容代码
/// </summary>
public string TrackContentCode { get; set; }
/// <summary>
/// 服务商轨迹状态参数值
/// </summary>
public string? TrackStatusValue { get; set; }
/// <summary>
/// 服务商轨迹代码参数值
/// </summary>
public string? TrackContentCodeValue { get; set; }
/// <summary>
/// 服务商轨迹内容参数值
/// </summary>
public string? TrackContentValue { get; set; }
/// <summary>
/// 轨迹关键词(正向),多个逗分隔
/// </summary>
public string? TrackKeyword { get; set; }
/// <summary>
/// 轨迹关键词(反向),多个逗分隔
/// </summary>
public string? TrackKeywordReverse { get; set; }
/// <summary>
/// 轨迹发生地参数值(主数据枚举)
/// </summary>
public int? TrackPlaceValue { get; set; }
/// <summary>
/// 轨迹时区GMT
/// </summary>
public float? TrackTimeZone { get; set; }
}

View File

@ -54,7 +54,7 @@ public class GetTrackPushConfigDetailOutputVO
/// <summary> /// <summary>
/// 推送轨迹时区 /// 推送轨迹时区
/// </summary> /// </summary>
public string TackTimeZoneName { get; set; } public string TrackTimeZoneName { get; set; }
/// <summary> /// <summary>
/// 推送轨迹内容代码 /// 推送轨迹内容代码

View File

@ -36,4 +36,9 @@ public class GlobalConst
/// 轨迹要推送的客户redis key前缀 /// 轨迹要推送的客户redis key前缀
/// </summary> /// </summary>
public const string TrackPushKeyPrefix = "TrackPush:"; public const string TrackPushKeyPrefix = "TrackPush:";
/// <summary>
/// 轨迹拉取配置信息redis key前缀
/// </summary>
public const string TrackPullConfigInfoKeyPrefix = "TrackPullConfigInfo:";
} }

View File

@ -36,11 +36,10 @@ public class TrackPullConfigRepository : BasicRepository<TrackPullConfigEntity>,
{ {
return await Context.Queryable<TrackPullContentConfigEntity>() return await Context.Queryable<TrackPullContentConfigEntity>()
.InnerJoin<TrackContentEntity>((pullContent, trackContent) => pullContent.TrackContentId == trackContent.Id) .InnerJoin<TrackContentEntity>((pullContent, trackContent) => pullContent.TrackContentId == trackContent.Id)
.InnerJoin<TrackPullConfigEntity>((pullContent, trackContent, trackPull) => pullContent.TrackPullConfigId == trackPull.Id) .LeftJoin<VEnumValueInfoEntity>((pullContent, trackContent, enumValue) => enumValue.Property == EnumPropertyEnums.轨迹发生地.GetDescription() && pullContent.TrackPlaceValue == enumValue.Enumkey)
.LeftJoin<VEnumValueInfoEntity>((pullContent, trackContent, trackPull, enumValue) => enumValue.Property == EnumPropertyEnums.轨迹发生地.GetDescription() && pullContent.TrackPlaceValue == enumValue.Enumkey)
.Where(pullContent => pullContent.TrackPullConfigId == input.TrackPullConfigId) .Where(pullContent => pullContent.TrackPullConfigId == input.TrackPullConfigId)
.OrderBy(pullContent => pullContent.CreateTime) .OrderBy(pullContent => pullContent.CreateTime)
.Select((pullContent, trackContent, trackPull, enumValue) => new GetTrackPullContentPageOutputVO .Select((pullContent, trackContent, enumValue) => new GetTrackPullContentPageOutputVO
{ {
Id = pullContent.Id, Id = pullContent.Id,
TrackPlaceValue = enumValue.Disp TrackPlaceValue = enumValue.Disp
@ -48,6 +47,18 @@ public class TrackPullConfigRepository : BasicRepository<TrackPullConfigEntity>,
.ToPagedListAsync(input.PageIndex, input.PageSize); .ToPagedListAsync(input.PageIndex, input.PageSize);
} }
public async Task<List<GetTrackPullContentListCacheVO>> GetContentListCacheAsync(int trackPullConfigId)
{
return await Context.Queryable<TrackPullContentConfigEntity>()
.InnerJoin<TrackContentEntity>((pullContent, trackContent) => pullContent.TrackContentId == trackContent.Id)
.Where(pullContent => pullContent.TrackPullConfigId == trackPullConfigId)
.Select((pullContent, trackContent) => new GetTrackPullContentListCacheVO
{
TrackContentCode = trackContent.Code
}, true)
.ToListAsync();
}
public async Task<GetTrackPullConfigDetailOutputVO> GetDetailAsync(int id) public async Task<GetTrackPullConfigDetailOutputVO> GetDetailAsync(int id)
{ {
return await AsQueryable() return await AsQueryable()