Merge remote-tracking branch 'origin/S01-轨迹中台' into S01-轨迹中台

This commit is contained in:
李鹏军 2024-02-28 10:09:08 +08:00
commit 752f65b1e2
76 changed files with 1199 additions and 735 deletions

View File

@ -1,6 +1,6 @@
using SJZY.Track.Domain;
using SJZY.Expand.ABP.Core.Localization;
using SJZY.Expand.ABP.Core.Localization;
using SJZY.Track.Application.Localization;
using SJZY.Track.Domain;
using SJZY.UserCenter.Contracts;
using SJZY.UserCenter.SharedModel;
using Volo.Abp.AspNetCore.Mvc;

View File

@ -1,7 +1,7 @@
using AutoMapper;
using SJZY.Track.Application.Dtos.Demo;
using SJZY.Track.Domain.DemoAggregate;
using SJZY.Track.Domain.DemoAggregate.Dtos;
using SJZY.Track.Application.Dtos.Demo;
namespace SJZY.Track.Application.AutoMapper;

View File

@ -1,5 +1,6 @@
using AutoMapper;
using SJZY.Track.Application.Dtos.TrackTemplates;
using SJZY.Track.Domain.TrackTemplateAggregate;
using SJZY.Track.Domain.TrackTemplateAggregate.Dtos;
namespace SJZY.Track.Application.AutoMapper
@ -14,6 +15,8 @@ namespace SJZY.Track.Application.AutoMapper
CreateMap<GetTrackTemplateDetailVO, GetTrackTemplateDetailDto>(MemberList.None);
//CreateMap<UnifyResultDto<GetTrackTemplateDetailVO>, UnifyResultDto<GetTrackTemplateDetailDto>>(MemberList.None);
CreateMap<EditTrackTemplateContentInput, TrackTemplateContentEntity>(MemberList.None);
}
}
}
}

View File

@ -24,12 +24,12 @@ public enum SortMethod
/// 按轨迹发生时间排序
/// </summary>
ByTrackTime,
/// <summary>
/// 按轨迹发生时间降序
/// </summary>
ByTrackTimeDesc,
/// <summary>
/// 按订单模板排序
/// </summary>

View File

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Dtos.TrackStatus
{
public class EditTrackStatusInput
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 操作类型
/// </summary>
public OptionType Options { get; set; }
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
/// <summary>
/// 所属节点id
/// </summary>
public int NodeId { get; set; }
/// <summary>
/// 轨迹状态代码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 轨迹状态
/// </summary>
public string TrackStatus { get; set; }
/// <summary>
/// 轨迹状态英文
/// </summary>
public string EntrackStatus { get; set; }
}
}

View File

@ -0,0 +1,38 @@
namespace SJZY.Track.Application.Dtos.TrackTemplates;
/// <inheritdoc/>
public class EditTrackTemplateContentInput
{
/// <summary>
/// 操作类型
/// </summary>
public OptionTypeNoNull Options { get; set; }
/// <inheritdoc/>
public int? Id { get; set; }
/// <summary>
/// 是否可删
/// </summary>
public bool IsCanDelete { get; set; }
/// <summary>
/// 是否对外
/// </summary>
public bool IsExternal { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 轨迹内容id
/// </summary>
public int TrackContentId { get; set; }
/// <summary>
/// 轨迹模板id
/// </summary>
public int TrackTemplateId { get; set; }
}

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Dtos.TrackTemplates
namespace SJZY.Track.Application.Dtos.TrackTemplates
{
/// <summary>
/// 获取轨迹模版分页输入
@ -14,11 +8,16 @@ namespace SJZY.Track.Application.Dtos.TrackTemplates
/// <summary>
/// 子系统id
/// </summary>
public int SubSystemId { get; set; }
public int SubSystemId { get; set; }
/// <summary>
/// 关键字
/// </summary>
public string Keywords { get; set; }
public string Keywords { get; set; }
/// <summary>
/// 轨迹模版id,轨迹映射的查询使用
/// </summary>
public int TrackTemplateId { get; set; }
}
}

View File

@ -1,11 +1,4 @@
using Microsoft.OpenApi.Writers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Dtos.TrackTemplates
namespace SJZY.Track.Application.Dtos.TrackTemplates
{
/// <summary>
/// 获取轨迹模版详情
@ -77,12 +70,12 @@ namespace SJZY.Track.Application.Dtos.TrackTemplates
/// <summary>
/// Id
/// </summary>
public int Id { set; get; }
public int Id { set; get; }
/// <summary>
/// 操作类型
/// </summary>
public OptionType Options { get; set; }
public OptionType Options { get; set; }
/// <summary>
/// 子系统id

View File

@ -2,7 +2,6 @@
global using Microsoft.Extensions.DependencyInjection;
global using SJZY.Expand.ABP.Common.Enums;
global using SJZY.Expand.ABP.Core.Common.Dto;
global using SJZY.Track.Repository;
global using Volo.Abp;
global using Volo.Abp.Application.Services;
global using Volo.Abp.Validation;

View File

@ -1,7 +1,7 @@
using SJZY.Track.Domain.DemoAggregate;
using SJZY.Track.Domain.DemoAggregate.Dtos;
using SJZY.Expand.ABP.Core.Common;
using SJZY.Expand.ABP.Core.Common;
using SJZY.Track.Application.Dtos.Demo;
using SJZY.Track.Domain.DemoAggregate;
using SJZY.Track.Domain.DemoAggregate.Dtos;
namespace SJZY.Track.Application.Services.Demo
{

View File

@ -1,3 +1,5 @@
using SJZY.Track.Application.Dtos.ProvideServices;
using SJZY.Track.Domain;
using SJZY.Track.Domain.OrderAggregate;
using SJZY.Track.Domain.TrackTemplateAggregate;
using SJZY.Track.Application.Dtos.ProvideServices;

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Services.TrackStatus
{
public interface ITrackStatusService
{
}
}

View File

@ -0,0 +1,72 @@
using SJZY.Track.Application.Dtos.TrackStatus;
using SJZY.Track.Application.Dtos.TrackTemplates;
using SJZY.Track.Domain.TrackStatusAggregate;
using SJZY.Track.Domain.TrackTemplateAggregate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.TrackStatus
{
/// <summary>
/// 轨迹状态
/// </summary>
[ApiExplorerSettings(GroupName = "轨迹状态")]
[Route("/Track/Status")]
public class TrackStatusService : ApplicationService, ITransientDependency
{
private readonly ITrackStatusRepository _trackStatusRepository;
public TrackStatusService(
ITrackStatusRepository trackStatusRepository
)
{
this._trackStatusRepository=trackStatusRepository;
}
/// <summary>
/// 轨迹状态编辑
/// </summary>
/// <returns></returns>
[HttpPost("Edit")]
public async Task<UnifyResultDto> EditAsync(EditTrackStatusInput input)
{
return input.Options switch
{
OptionType.新增 => await AddAsync(input),
OptionType.修改 => await UpdateAsync(input),
OptionType.删除 => await DeleteAsync(input),
_ => throw new BusinessException(message: "当前操作动作不合法")
};
}
#region 私有方法
private async Task<UnifyResultDto> AddAsync(EditTrackStatusInput input)
{
var entity = ObjectMapper.Map<EditTrackStatusInput, TrackStatusEntity>(input);
var isTrue = await _trackStatusRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue);
}
private async Task<UnifyResultDto> UpdateAsync(EditTrackStatusInput input)
{
var templateEntity = await _trackStatusRepository.GetFirstAsync(a => a.Id == input.Id);
ObjectMapper.Map(input, templateEntity);
var isTrue = await _trackStatusRepository.UpdateAsync(templateEntity);
return new UnifyResultDto("200", "修改成功", isTrue);
}
private async Task<UnifyResultDto> DeleteAsync(EditTrackStatusInput input)
{
var isTrue = await _trackStatusRepository.SoftDeleteAsync(x => x.Id == input.Id);
return new UnifyResultDto("200", "删除成功", isTrue);
}
#endregion
}
}

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Services.TrackTemplates
namespace SJZY.Track.Application.Services.TrackTemplates
{
public interface ITrackTemplateService
{

View File

@ -1,6 +1,10 @@
using SJZY.Track.Application.Dtos.TrackTemplates;
using Microsoft.Extensions.Localization;
using SJZY.Expand.ABP.Core.Localization;
using SJZY.Track.Application.Dtos.TrackTemplates;
using SJZY.Track.Application.Localization;
using SJZY.Track.Domain.TrackTemplateAggregate;
using SJZY.Track.Domain.TrackTemplateAggregate.Dtos;
using System.Linq.Expressions;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.TrackTemplates;
@ -9,15 +13,18 @@ namespace SJZY.Track.Application.Services.TrackTemplates;
/// 轨迹模版
/// </summary>
[ApiExplorerSettings(GroupName = "轨迹模版")]
[Route("/Track")]
public class TrackTemplateService : ApplicationService, ITrackTemplateService, IScopedDependency
[Route("/Track/Template")]
public class TrackTemplateService : ApplicationService, ITransientDependency
{
private readonly IStringLocalizer<TrackLocalizationResource> _stringLocalizer;
private readonly ITrackTemplateRepository _trackTemplateRepository;
/// <inheritdoc/>
public TrackTemplateService(
ITrackTemplateRepository trackTemplateRepository
)
IStringLocalizer<TrackLocalizationResource> stringLocalizer,
ITrackTemplateRepository trackTemplateRepository)
{
_stringLocalizer = stringLocalizer;
_trackTemplateRepository = trackTemplateRepository;
}
@ -25,7 +32,7 @@ public class TrackTemplateService : ApplicationService, ITrackTemplateService, I
/// 轨迹模版编辑
/// </summary>
/// <returns></returns>
[HttpPost("/Template/Edit")]
[HttpPost("Edit")]
public async Task<UnifyResultDto> EditAsync(EditTrackTemplateInput input)
{
return input.Options switch
@ -42,7 +49,7 @@ public class TrackTemplateService : ApplicationService, ITrackTemplateService, I
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("/Template/GetDetail")]
[HttpGet("GetDetail")]
public async Task<UnifyResultDto<GetTrackTemplateDetailDto>> GetDetailAsync(int id)
{
var detailInfo = await _trackTemplateRepository.GetDetailAsync(id);
@ -60,7 +67,7 @@ public class TrackTemplateService : ApplicationService, ITrackTemplateService, I
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/Template/GetList")]
[HttpPost("GetList")]
public async Task<UnifyPageResultDto<GetTrackTemplateListDto>> GetPageTrackTemplate(GetPageTrackTemplateInput input)
{
var vo = ObjectMapper.Map<GetPageTrackTemplateInput, GetPageTrackTemplateVO>(input);
@ -98,5 +105,78 @@ public class TrackTemplateService : ApplicationService, ITrackTemplateService, I
return new UnifyResultDto("200", "删除成功", isTrue);
}
#endregion
#endregion 私有方法
/// <summary>
/// 轨迹模板内容列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetContentPage")]
public async Task<UnifyPageResultDto<GetTrackTemplateContentPageOutputVO>> GetContentPageAsync([FromBody] GetTrackTemplateContentPageInputVO input)
{
return await _trackTemplateRepository.GetContentPageAsync(input);
}
/// <summary>
/// 轨迹模板内容详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("GetContentDetail")]
public async Task<GetTrackTemplateContentDetailOutputVO> GetContentDetailAsync(int id)
{
return await _trackTemplateRepository.GetContentDetailAsync(id);
}
/// <summary>
/// 轨迹模板内容编辑
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("EditContent")]
public async Task<bool> EditContentAsync([FromBody] EditTrackTemplateContentInput input)
{
if (input.Options != OptionTypeNoNull.删除)
{
Expression<Func<TrackTemplateContentEntity, bool>> isAnyExp = x =>
x.TrackTemplateId == input.TrackTemplateId && x.TrackContentId == input.TrackContentId;
if (input.Options == OptionTypeNoNull.修改) isAnyExp.And(x => x.Id != input.Id);
if (await _trackTemplateRepository.IsAnyAsync(isAnyExp))
throw new BusinessException(message: _stringLocalizer["IsTrackTemplateContentAny"]);
}
switch (input.Options)
{
case OptionTypeNoNull.新增:
var entity = ObjectMapper.Map<EditTrackTemplateContentInput, TrackTemplateContentEntity>(input);
await _trackTemplateRepository.InsertAsync(entity);
break;
case OptionTypeNoNull.修改:
var oldEntity = await _trackTemplateRepository.GetByIdAsync(input.Id!.Value) ?? throw new BusinessException(message: _stringLocalizer["NotFindData"]);
ObjectMapper.Map(input, oldEntity);
await _trackTemplateRepository.UpdateAsync(oldEntity);
break;
case OptionTypeNoNull.删除:
await _trackTemplateRepository.SoftDeleteContentAsync(input.Id!.Value);
break;
default:
throw new BusinessException(message: _stringLocalizer[SjzyBasicLocalization.Validation_IsInEnum, nameof(EditTrackTemplateContentInput.Options)]);
}
return true;
}
}

View File

@ -1,11 +1,5 @@
using FluentValidation;
using SJZY.Track.Application.Dtos.Demo;
using SJZY.Track.Application.Dtos.TrackTemplates;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Application.Validations.TrackTemplates
{

View File

@ -1,9 +1,9 @@
// Global using directives
global using SJZY.Expand.ABP.Core.Common.Dto;
global using SJZY.Expand.ABP.Core.SqlSugar.Entitys;
global using SqlSugar;
global using System;
global using System.Collections.Generic;
global using System.Linq.Expressions;
global using System.Threading.Tasks;
global using SJZY.Expand.ABP.Core.Common.Dto;
global using SJZY.Expand.ABP.Core.SqlSugar.Entitys;
global using SqlSugar;

View File

@ -8,8 +8,8 @@ public interface IBasicRepository<T>
/// <param name="whereExpression"></param>
/// <returns></returns>
Task<T> GetFirstAsync(Expression<Func<T, bool>> whereExpression);
Task<TResult> GetFirstAsync<TResult>(Expression<Func<T, bool>> whereExpression,Expression<Func<T, TResult>> resultExpression);
Task<TResult> GetFirstAsync<TResult>(Expression<Func<T, bool>> whereExpression, Expression<Func<T, TResult>> resultExpression);
/// <summary>
/// get list
@ -17,8 +17,8 @@ public interface IBasicRepository<T>
/// <param name="whereExpression"></param>
/// <returns></returns>
Task<List<T>> GetListAsync(Expression<Func<T, bool>> whereExpression);
Task<List<TResult>> GetListAsync<TResult>(Expression<Func<T, bool>> whereExpression,Expression<Func<T, TResult>> resultExpression);
Task<List<TResult>> GetListAsync<TResult>(Expression<Func<T, bool>> whereExpression, Expression<Func<T, TResult>> resultExpression);
/// <summary>
/// count
@ -33,7 +33,7 @@ public interface IBasicRepository<T>
/// <param name="exp"></param>
/// <returns></returns>
Task<bool> IsAnyAsync(Expression<Func<T, bool>> exp);
/// <summary>
/// update
/// </summary>
@ -41,7 +41,7 @@ public interface IBasicRepository<T>
/// <param name="ignoreColumns">要忽略更新的列</param>
/// <returns></returns>
Task<bool> UpdateAsync(T entity, Expression<Func<T, object>> ignoreColumns);
/// <summary>
/// update
/// </summary>
@ -58,7 +58,7 @@ public interface IBasicRepository<T>
/// <param name="ignoreAllDefaultValue">不更新默认值列</param>
/// <returns></returns>
Task<bool> UpdateAsync(T entity, bool ignoreAllNullColumns = false, bool ignoreAllDefaultValue = false);
/// <summary>
/// 批量更新
/// </summary>
@ -66,28 +66,28 @@ public interface IBasicRepository<T>
/// <param name="updateColumns">要更新的列</param>
/// <returns></returns>
Task<bool> UpdateRangeAsync(List<T> entities, Expression<Func<T, object>> updateColumns = null);
/// <summary>
/// 软删
/// </summary>
/// <param name="where"></param>
/// <returns></returns>
Task<bool> SoftDeleteAsync(Expression<Func<T, bool>> where);
/// <summary>
/// insert
/// </summary>
/// <param name="insertObj"></param>
/// <returns></returns>
Task<bool> InsertAsync(T insertObj);
/// <summary>
/// 新增返回id
/// </summary>
/// <param name="insertObj"></param>
/// <returns></returns>
Task<int> InsertReturnIdentityAsync(T insertObj);
/// <summary>
/// 批量insert
/// </summary>

View File

@ -10,5 +10,14 @@
<PackageReference Include="SJZY.Expand.ABP.Core" Version="7.7.1" />
<PackageReference Include="SJZY.Expand.ElasticSearch" Version="7.0.17" />
</ItemGroup>
<ItemGroup>
<Folder Include="TrackContentAggregate\Dtos\" />
<Folder Include="TrackFlagAggregate\Dtos\" />
<Folder Include="TrackPullAggregate\Dtos\" />
<Folder Include="TrackPushAggregate\Dtos\" />
<Folder Include="TrackStatusAggregate\Dtos\" />
<Folder Include="TrackStatusAggregate\Dtos\" />
</ItemGroup>
</Project>

View File

@ -2,6 +2,6 @@
namespace SJZY.Track.Domain;
public class SJZYTrackDomainModule:AbpModule
public class SJZYTrackDomainModule : AbpModule
{
}

View File

@ -0,0 +1,6 @@
namespace SJZY.Track.Domain.TrackContentAggregate
{
public interface ITrackContentRepository : IBasicRepository<TrackContentEntity>
{
}
}

View File

@ -0,0 +1,50 @@
namespace SJZY.Track.Domain.TrackContentAggregate;
/// <summary>
/// 轨迹内容
/// </summary>
[SugarTable("t_track_content")]
public class TrackContentEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 轨迹内容代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 轨迹内容
/// </summary>
[SugarColumn(ColumnName = "Content")]
public string Content { get; set; }
/// <summary>
/// 轨迹内容英文
/// </summary>
[SugarColumn(ColumnName = "EnContent")]
public string EnContent { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
/// <summary>
/// 轨迹标记id
/// </summary>
[SugarColumn(ColumnName = "TrackFlagId")]
public int TrackFlagId { get; set; }
/// <summary>
/// 所属轨迹状态id
/// </summary>
[SugarColumn(ColumnName = "TrackStatusId")]
public int TrackStatusId { get; set; }
}

View File

@ -0,0 +1,26 @@
namespace SJZY.Track.Domain.TrackContentAggregate;
/// <summary>
/// 轨迹内容映射表
/// </summary>
[SugarTable("t_track_content_map")]
public class TrackContentMapEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 映射轨迹内容id
/// </summary>
[SugarColumn(ColumnName = "MapTrackContentId")]
public int MapTrackContentId { get; set; }
/// <summary>
/// 源轨迹内容id
/// </summary>
[SugarColumn(ColumnName = "TrackContentId")]
public int TrackContentId { get; set; }
}

View File

@ -47,7 +47,7 @@ public class TrackDetailsIndex : IdBaseIndex
/// 原轨迹内容
/// </summary>
public string OriginTrackContent { get; set; }
/// <summary>
/// 原轨迹报文
/// </summary>

View File

@ -0,0 +1,5 @@
namespace SJZY.Track.Domain.TrackFlagAggregate;
public interface ITrackFlagRepository : IBasicRepository<TrackFlagEntity>
{
}

View File

@ -0,0 +1,32 @@
namespace SJZY.Track.Domain.TrackFlagAggregate;
/// <summary>
/// 轨迹标记表
/// </summary>
[SugarTable("t_track_flag")]
public class TrackFlagEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 标记代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 标记名称
/// </summary>
[SugarColumn(ColumnName = "Name")]
public string Name { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
}

View File

@ -0,0 +1,80 @@
namespace SJZY.Track.Domain.TrackPullAggregate;
/// <summary>
/// 轨迹拉取/推送参数配置
/// </summary>
[SugarTable("t_track_push_pull_params_config")]
public class TrackPushPullParamsConfigEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 扩展字段参数名
/// </summary>
[SugarColumn(ColumnName = "ExpandFieldsName")]
public string ExpandFieldsName { get; set; }
/// <summary>
/// 推拉模式,0拉取,1推送
/// </summary>
[SugarColumn(ColumnName = "IsPush")]
public bool IsPush { get; set; }
/// <summary>
/// 单号参数名
/// </summary>
[SugarColumn(ColumnName = "OrderNoName")]
public string OrderNoName { get; set; }
/// <summary>
/// 推拉配置id
/// </summary>
[SugarColumn(ColumnName = "PullOrPushConfigId")]
public int PullOrPushConfigId { get; set; }
/// <summary>
/// 轨迹时区参数名
/// </summary>
[SugarColumn(ColumnName = "TackTimeZoneName")]
public string TackTimeZoneName { get; set; }
/// <summary>
/// 轨迹代码参数名
/// </summary>
[SugarColumn(ColumnName = "TrackContentCodeName")]
public string TrackContentCodeName { get; set; }
/// <summary>
/// 轨迹内容参数名
/// </summary>
[SugarColumn(ColumnName = "TrackContentName")]
public string TrackContentName { get; set; }
/// <summary>
/// 轨迹内容英文参数名
/// </summary>
[SugarColumn(ColumnName = "TrackEnContentName")]
public string TrackEnContentName { get; set; }
/// <summary>
/// 轨迹发生地参数名
/// </summary>
[SugarColumn(ColumnName = "TrackPlaceName")]
public string TrackPlaceName { get; set; }
/// <summary>
/// 轨迹状态参数名
/// </summary>
[SugarColumn(ColumnName = "TrackStatusName")]
public string TrackStatusName { get; set; }
/// <summary>
/// 轨迹发生时间参数名
/// </summary>
[SugarColumn(ColumnName = "TrackTimeName")]
public string TrackTimeName { get; set; }
}

View File

@ -0,0 +1,5 @@
namespace SJZY.Track.Domain.TrackPushAggregate;
public interface ITrackPushConfigRepository : IBasicRepository<TrackPushConfigEntity>
{
}

View File

@ -0,0 +1,44 @@
namespace SJZY.Track.Domain.TrackPushAggregate;
/// <summary>
/// 轨迹推送配置表
/// </summary>
[SugarTable("t_track_push_config")]
public class TrackPushConfigEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 客户id(外部主体id)
/// </summary>
[SugarColumn(ColumnName = "CustomId")]
public int CustomId { get; set; }
/// <summary>
/// 是否自动推送
/// </summary>
[SugarColumn(ColumnName = "IsAutoPush")]
public bool IsAutoPush { get; set; }
/// <summary>
/// 服务商id(客户:服务商 1:1)
/// </summary>
[SugarColumn(ColumnName = "ServiceProviderId")]
public int ServiceProviderId { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
/// <summary>
/// 模板id(多个之间英文逗号分隔)
/// </summary>
[SugarColumn(ColumnName = "TrackTemplateId")]
public string TrackTemplateId { get; set; }
}

View File

@ -0,0 +1,74 @@
namespace SJZY.Track.Domain.TrackPushAggregate;
/// <summary>
/// 轨迹推送内容配置表
/// </summary>
[SugarTable("t_track_push_content_config")]
public class TrackPushContentConfigEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 扩展字段参数值
/// </summary>
[SugarColumn(ColumnName = "ExpandFieldsValue")]
public string ExpandFieldsValue { get; set; }
/// <summary>
/// 推送单号类型(主数据枚举TrackOrderType)
/// </summary>
[SugarColumn(ColumnName = "OrderNoType")]
public int OrderNoType { get; set; }
/// <summary>
/// 推送轨迹排序
/// </summary>
[SugarColumn(ColumnName = "Sort")]
public int Sort { get; set; }
/// <summary>
/// 轨迹代码参数值
/// </summary>
[SugarColumn(ColumnName = "TrackContentCodeValue")]
public string TrackContentCodeValue { get; set; }
/// <summary>
/// 轨迹内容id
/// </summary>
[SugarColumn(ColumnName = "TrackContentId")]
public int TrackContentId { get; set; }
/// <summary>
/// 轨迹内容参数值
/// </summary>
[SugarColumn(ColumnName = "TrackContentValue")]
public string TrackContentValue { get; set; }
/// <summary>
/// 轨迹内容英文参数值
/// </summary>
[SugarColumn(ColumnName = "TrackEnContentValue")]
public string TrackEnContentValue { get; set; }
/// <summary>
/// 轨迹推送配置id
/// </summary>
[SugarColumn(ColumnName = "TrackPushConfigId")]
public int TrackPushConfigId { get; set; }
/// <summary>
/// 轨迹状态参数值
/// </summary>
[SugarColumn(ColumnName = "TrackStatusValue")]
public string TrackStatusValue { get; set; }
/// <summary>
/// 轨迹时区GMT
/// </summary>
[SugarColumn(ColumnName = "TrackTimeZone")]
public string TrackTimeZone { get; set; }
}

View File

@ -0,0 +1,6 @@
namespace SJZY.Track.Domain.TrackStatusAggregate;
public interface ITrackStatusRepository : IBasicRepository<TrackStatusEntity>
{
}

View File

@ -0,0 +1,44 @@
namespace SJZY.Track.Domain.TrackStatusAggregate;
/// <summary>
/// 轨迹状态表
/// </summary>
[SugarTable("t_track_status")]
public class TrackStatusEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 轨迹状态代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 轨迹状态英文
/// </summary>
[SugarColumn(ColumnName = "EnStatus")]
public string EnStatus { get; set; }
/// <summary>
/// 所属节点(主数据枚举ServiceNode)
/// </summary>
[SugarColumn(ColumnName = "Node")]
public int Node { get; set; }
/// <summary>
/// 轨迹状态
/// </summary>
[SugarColumn(ColumnName = "Status")]
public string Status { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
}

View File

@ -11,4 +11,14 @@ public class GetPageTrackTemplateVO : PageInfoInput
/// 关键字
/// </summary>
public string Keywords { get; set; }
///// <summary>
///// 是否置顶
///// </summary>
//public bool IsTop { get; set; }=false;
/// <summary>
/// 轨迹模版id
/// </summary>
public int TrackTemplateId { get; set; }
}

View File

@ -0,0 +1,42 @@
namespace SJZY.Track.Domain.TrackTemplateAggregate.Dtos
{
public class GetTrackTemplateContentDetailOutputVO
{
public int Id { get; set; }
/// <summary>
/// 是否可删
/// </summary>
public bool IsCanDelete { get; set; }
/// <summary>
/// 是否对外
/// </summary>
public bool IsExternal { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 轨迹内容
/// </summary>
public string TrackContent { get; set; }
/// <summary>
/// 轨迹内容id
/// </summary>
public int TrackContentId { get; set; }
/// <summary>
/// 轨迹状态
/// </summary>
public string TrackStatus { get; set; }
/// <summary>
/// 轨迹状态id
/// </summary>
public int TrackStatusId { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SJZY.Track.Domain.TrackTemplateAggregate.Dtos;
public class GetTrackTemplateContentPageInputVO : PageInfoInput
{
/// <summary>
/// 轨迹模板id
/// </summary>
public int TrackTemplateId { get; set; }
}

View File

@ -0,0 +1,71 @@
namespace SJZY.Track.Domain.TrackTemplateAggregate.Dtos;
public class GetTrackTemplateContentPageOutputVO
{
/// <summary>
/// 轨迹内容代码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 轨迹内容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 轨迹内容英文
/// </summary>
public string EnContent { get; set; }
public int Id { get; set; }
/// <summary>
/// 是否可删
/// </summary>
public bool IsCanDelete { get; set; }
/// <summary>
/// 是否对外
/// </summary>
public bool IsExternal { get; set; }
/// <summary>
/// 所属节点
/// </summary>
public string Node { get; set; }
/// <summary>
/// 排序
/// </summary>
public long Sort { get; set; }
/// <summary>
/// 轨迹标记
/// </summary>
public string TrackFlag { get; set; }
/// <summary>
/// 所属状态
/// </summary>
public string TrackStatus { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public string UpdateUser { get; set; }
}

View File

@ -5,8 +5,32 @@ namespace SJZY.Track.Domain.TrackTemplateAggregate;
public interface ITrackTemplateRepository : IBasicRepository<TrackTemplateEntity>
{
Task<TemplateContentDto> GetTemplateContentsAsync(List<int> distinctTemplateIds);
Task<GetTrackTemplateDetailVO?> GetDetailAsync(int id);
Task<UnifyPageResultDto<GetTrackTemplateListVO>> GetPageTrackTemplate(GetPageTrackTemplateVO input);
/// <summary>
/// 轨迹模板内容列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<UnifyPageResultDto<GetTrackTemplateContentPageOutputVO>> GetContentPageAsync(GetTrackTemplateContentPageInputVO input);
/// <summary>
/// 轨迹模板内容详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<GetTrackTemplateContentDetailOutputVO> GetContentDetailAsync(int id);
Task<bool> IsAnyAsync(Expression<Func<TrackTemplateContentEntity, bool>> whereExpression);
Task<bool> InsertAsync(TrackTemplateContentEntity insertObj);
Task<TrackTemplateContentEntity> GetByIdAsync(int id);
Task<bool> UpdateAsync(TrackTemplateContentEntity updateObj);
Task<bool> SoftDeleteContentAsync(int id);
}

View File

@ -6,7 +6,6 @@
[SugarTable("t_track_template_content")]
public class TrackTemplateContentEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
@ -42,5 +41,4 @@ public class TrackTemplateContentEntity : IFullAuditedBasicEntitys
/// </summary>
[SugarColumn(ColumnName = "TrackTemplateId")]
public int TrackTemplateId { get; set; }
}

View File

@ -0,0 +1,50 @@
namespace SJZY.Track.Domain.VEntities;
/// <summary>
/// 主数据枚举
/// </summary>
[SugarTable("v_enum_value_info")]
public class VEnumValueInfoEntity : IFullAuditedBasicEntitys
{
/// <summary>
///
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// '属性 开发人员设定,禁止用户修改'
/// </summary>
[SugarColumn(ColumnName = "Property")]
public string Property { get; set; }
/// <summary>
/// '关键字;外部使用:系统自动生成 同一个Property的Enumkey 自动排序递增 内部使用:开发人员设定'
/// </summary>
[SugarColumn(ColumnName = "Enumkey")]
public int Enumkey { get; set; }
/// <summary>
/// 描述
/// </summary>
[SugarColumn(ColumnName = "Disp")]
public string Disp { get; set; }
/// <summary>
/// 描述英文名
/// </summary>
[SugarColumn(ColumnName = "EnDisp")]
public string EnDisp { get; set; }
/// <summary>
/// 是否内部使用, 1是 0不是,外部使用,无需设置此值.
/// </summary>
[SugarColumn(ColumnName = "IsInside")]
public int IsInside { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(ColumnName = "Remark")]
public string Remark { get; set; }
}

View File

@ -1,131 +1,128 @@
namespace SJZY.Track.Repository.VData.Entitys
namespace SJZY.Track.Repository.VData.Entitys;
/// <summary>
/// 外部主体
/// </summary>
[SugarTable("v_external_subject")]
public class VExternalSubjectEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 外部主体
///
/// </summary>
[SugarTable("v_external_subject")]
public class VExternalSubjectEntity : IFullAuditedBasicEntitys
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
///
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 公司简称
/// </summary>
[SugarColumn(ColumnName = "Abbreviation")]
public string Abbreviation { get; set; }
/// <summary>
/// 公司简称
/// </summary>
[SugarColumn(ColumnName = "Abbreviation")]
public string Abbreviation { get; set; }
/// <summary>
/// 所属网络(主数据枚举表 (属性=AffiliatedNetwork)WCA,WEB,Atlas,CCA,CTN,CLN,GLN,PCN,SCN,WPA,EGLN,Other)
/// </summary>
[SugarColumn(ColumnName = "AffiliatedNetwork")]
public int? AffiliatedNetwork { get; set; }
/// <summary>
/// 所属网络(主数据枚举表 (属性=AffiliatedNetwork)WCA,WEB,Atlas,CCA,CTN,CLN,GLN,PCN,SCN,WPA,EGLN,Other)
/// </summary>
[SugarColumn(ColumnName = "AffiliatedNetwork")]
public int? AffiliatedNetwork { get; set; }
/// <summary>
/// 公司代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 公司代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// (主数据枚举表 (属性=CustomerQuality)国内同行,国外同行,国内直客,国外直客,海外代理,国内贸易公司,国外贸易公司,仅供应商,内部子公司,个人,内部子部门)
/// </summary>
[SugarColumn(ColumnName = "CooperationNature")]
public int? CooperationNature { get; set; }
/// <summary>
/// (主数据枚举表 (属性=CustomerQuality)国内同行,国外同行,国内直客,国外直客,海外代理,国内贸易公司,国外贸易公司,仅供应商,内部子公司,个人,内部子部门)
/// </summary>
[SugarColumn(ColumnName = "CooperationNature")]
public int? CooperationNature { get; set; }
/// <summary>
/// 公司英文名
/// </summary>
[SugarColumn(ColumnName = "EnName")]
public string EnName { get; set; }
/// <summary>
/// 公司英文名
/// </summary>
[SugarColumn(ColumnName = "EnName")]
public string EnName { get; set; }
/// <summary>
/// 是否核准
/// </summary>
[SugarColumn(ColumnName = "IsApprove")]
public bool IsApprove { get; set; }
/// <summary>
/// 是否核准
/// </summary>
[SugarColumn(ColumnName = "IsApprove")]
public bool IsApprove { get; set; }
/// <summary>
/// 是否黑名单
/// </summary>
[SugarColumn(ColumnName = "IsBlacklist")]
public bool IsBlacklist { get; set; }
/// <summary>
/// 是否黑名单
/// </summary>
[SugarColumn(ColumnName = "IsBlacklist")]
public bool IsBlacklist { get; set; }
/// <summary>
/// 是否订香港
/// </summary>
[SugarColumn(ColumnName = "IsBookingHongKong")]
public bool? IsBookingHongKong { get; set; }
/// <summary>
/// 是否订香港
/// </summary>
[SugarColumn(ColumnName = "IsBookingHongKong")]
public bool? IsBookingHongKong { get; set; }
/// <summary>
/// 是否海外代理
/// </summary>
[SugarColumn(ColumnName = "IsOverseasAgent")]
public bool IsOverseasAgent { get; set; }
/// <summary>
/// 是否海外代理
/// </summary>
[SugarColumn(ColumnName = "IsOverseasAgent")]
public bool IsOverseasAgent { get; set; }
/// <summary>
/// 是否自行结算
/// </summary>
[SugarColumn(ColumnName = "IsSelfSettlement")]
public bool IsSelfSettlement { get; set; }
/// <summary>
/// 是否自行结算
/// </summary>
[SugarColumn(ColumnName = "IsSelfSettlement")]
public bool IsSelfSettlement { get; set; }
/// <summary>
/// 是否结算主体
/// </summary>
[SugarColumn(ColumnName = "IsSettlementSubject")]
public bool IsSettlementSubject { get; set; }
/// <summary>
/// 是否结算主体
/// </summary>
[SugarColumn(ColumnName = "IsSettlementSubject")]
public bool IsSettlementSubject { get; set; }
/// <summary>
/// 主网络,从多选的所属网络中选其中一个
/// </summary>
[SugarColumn(ColumnName = "MainNetwork")]
public int? MainNetwork { get; set; }
/// <summary>
/// 主网络,从多选的所属网络中选其中一个
/// </summary>
[SugarColumn(ColumnName = "MainNetwork")]
public int? MainNetwork { get; set; }
/// <summary>
/// 公司名称
/// </summary>
[SugarColumn(ColumnName = "Name")]
public string Name { get; set; }
/// <summary>
/// 公司名称
/// </summary>
[SugarColumn(ColumnName = "Name")]
public string Name { get; set; }
/// <summary>
/// 性质,t_enum_value_info表Property="CompanyQuality;1 国有企业,2 国有控股企业,3 外资企业,4 合资企业,5 股份企业,6 私营企业,7 个体户
/// </summary>
[SugarColumn(ColumnName = "Nature")]
public int? Nature { get; set; }
/// <summary>
/// 性质,t_enum_value_info表Property="CompanyQuality;1 国有企业,2 国有控股企业,3 外资企业,4 合资企业,5 股份企业,6 私营企业,7 个体户
/// </summary>
[SugarColumn(ColumnName = "Nature")]
public int? Nature { get; set; }
/// <summary>
/// 内部组织id
/// </summary>
[SugarColumn(ColumnName = "OrgId")]
public int? OrgId { get; set; }
/// <summary>
/// 内部组织id
/// </summary>
[SugarColumn(ColumnName = "OrgId")]
public int? OrgId { get; set; }
/// <summary>
/// 母公司id
/// </summary>
[SugarColumn(ColumnName = "ParentId")]
public int? ParentId { get; set; }
/// <summary>
/// 母公司id
/// </summary>
[SugarColumn(ColumnName = "ParentId")]
public int? ParentId { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(ColumnName = "Remark")]
public string Remark { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(ColumnName = "Remark")]
public string Remark { get; set; }
/// <summary>
/// 类型,位运算存储;t_enum_value_info表Property="SubjectType;1客户,2供应商,4内部子公司
/// </summary>
[SugarColumn(ColumnName = "Type")]
public int Type { get; set; }
/// <summary>
/// 类型,位运算存储;t_enum_value_info表Property="SubjectType;1客户,2供应商,4内部子公司
/// </summary>
[SugarColumn(ColumnName = "Type")]
public int Type { get; set; }
/// <summary>
/// 已验证公司名称
/// </summary>
[SugarColumn(ColumnName = "VerifiedName")]
public string VerifiedName { get; set; }
}
/// <summary>
/// 已验证公司名称
/// </summary>
[SugarColumn(ColumnName = "VerifiedName")]
public string VerifiedName { get; set; }
}

View File

@ -6,7 +6,6 @@
[SugarTable("v_service_provider")]
public class VServiceProviderEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
@ -72,5 +71,4 @@ public class VServiceProviderEntity : IFullAuditedBasicEntitys
/// </summary>
[SugarColumn(ColumnName = "Types")]
public string Types { get; set; }
}

View File

@ -1,12 +1,11 @@
namespace SJZY.Track.Domain.VEntities;
/// <summary>
///
///
/// </summary>
[SugarTable("v_system")]
public class VSystemEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 子系统id
/// </summary>
@ -125,8 +124,8 @@ public class VSystemEntity : IFullAuditedBasicEntitys
/// 排序值
/// </summary>
[SugarColumn(ColumnName = "Sort")]
public int? Sort { get; set; }
public int? Sort { get; set; }
/// <summary>
/// 跨境电商物流1 干线物流2 国内代理贸易3 非业务类4
/// </summary>
@ -150,5 +149,4 @@ public class VSystemEntity : IFullAuditedBasicEntitys
/// </summary>
[SugarColumn(ColumnName = "Token")]
public string Token { get; set; }
}

View File

@ -6,7 +6,6 @@
[SugarTable("v_user")]
public class VUserEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 用户id
/// </summary>
@ -102,5 +101,4 @@ public class VUserEntity : IFullAuditedBasicEntitys
/// </summary>
[SugarColumn(ColumnName = "UserOrigin")]
public bool? UserOrigin { get; set; }
}

View File

@ -1,5 +1,5 @@
using System.Linq.Expressions;
using SJZY.Track.Domain;
using SJZY.Track.Domain;
using System.Linq.Expressions;
using Volo.Abp;
namespace SJZY.Track.Repository;
@ -8,7 +8,7 @@ namespace SJZY.Track.Repository;
/// 仓储基类实现
/// </summary>
/// <typeparam name="T"></typeparam>
public class BasicRepository<T> : SimpleClient<T>,IBasicRepository<T> where T : class, new()
public class BasicRepository<T> : SimpleClient<T>, IBasicRepository<T> where T : class, new()
{
public BasicRepository()
{
@ -63,7 +63,7 @@ public class BasicRepository<T> : SimpleClient<T>,IBasicRepository<T> where T :
// tips: required where
if (where == default) return false;
return await Context.Updateable<T>()
.Where(where)
.SetColumns(nameof(ISoftDeleteBasicEntity.IsDeleted), 1)

View File

@ -1,6 +1,6 @@
using System.Transactions;
using SJZY.Track.Domain.DemoAggregate;
using SJZY.Track.Domain.DemoAggregate;
using SJZY.Track.Domain.DemoAggregate.Dtos;
using System.Transactions;
namespace SJZY.Track.Repository
{

View File

@ -0,0 +1,15 @@
using System.ComponentModel;
namespace SJZY.Track.Repository.Enum;
/// <summary>
/// 枚举属性
/// </summary>
public enum EnumPropertyEnums
{
/// <summary>
/// 节点
/// </summary>
[Description("ServiceNode")]
节点,
}

View File

@ -24,15 +24,8 @@
<ItemGroup>
<Folder Include="TrackContentMap\ValueObjects\" />
<Folder Include="TrackContent\ValueObjects\" />
<Folder Include="TrackFlag\ValueObjects\" />
<Folder Include="TrackPushConfig\ValueObjects\" />
<Folder Include="TrackPushContentConfig\ValueObjects\" />
<Folder Include="TrackPushPullParamsConfig\ValueObjects\" />
<Folder Include="TrackPushRecordDetails\ValueObjects\" />
<Folder Include="TrackPushRecord\ValueObjects\" />
<Folder Include="TrackStatus\ValueObjects\" />
</ItemGroup>

View File

@ -32,8 +32,8 @@ public class SJZYTrackRepositoryModule : AbpModule
}
);
}, DataBaseContext.OnExcutingAction, "SJZY.Track.Repository");
context.Services.AddScoped(typeof(IBasicRepository<>), typeof(BasicRepository<>));

View File

@ -1,53 +0,0 @@
namespace SJZY.Track.Repository.TrackContent.Entitys
{
/// <summary>
/// 轨迹内容
/// </summary>
[SugarTable("t_track_content")]
public class TrackContentEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 轨迹内容代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 轨迹内容
/// </summary>
[SugarColumn(ColumnName = "Content")]
public string Content { get; set; }
/// <summary>
/// 轨迹内容英文
/// </summary>
[SugarColumn(ColumnName = "EnContent")]
public string EnContent { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
/// <summary>
/// 轨迹标记id
/// </summary>
[SugarColumn(ColumnName = "TrackFlagId")]
public int TrackFlagId { get; set; }
/// <summary>
/// 所属轨迹状态id
/// </summary>
[SugarColumn(ColumnName = "TrackStatusId")]
public int TrackStatusId { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackContent.Entitys;
namespace SJZY.Track.Repository.TrackContent.Services
{
public interface ITrackContentRepository : ISimpleClient<TrackContentEntity>
{
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackContent.Entitys;
namespace SJZY.Track.Repository.TrackContent.Services
{
public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrackContentRepository, IScopedDependency
{
}
}

View File

@ -1,29 +0,0 @@
namespace SJZY.Track.Repository.TrackContentMap.Entitys
{
/// <summary>
/// 轨迹内容映射表
/// </summary>
[SugarTable("t_track_content_map")]
public class TrackContentMapEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 映射轨迹内容id
/// </summary>
[SugarColumn(ColumnName = "MapTrackContentId")]
public int MapTrackContentId { get; set; }
/// <summary>
/// 源轨迹内容id
/// </summary>
[SugarColumn(ColumnName = "TrackContentId")]
public int TrackContentId { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackContentMap.Entitys;
namespace SJZY.Track.Repository.TrackContentMap.Services
{
public interface ITrackContentMapRepository : ISimpleClient<TrackContentMapEntity>
{
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackContentMap.Entitys;
namespace SJZY.Track.Repository.TrackContentMap.Services
{
public class TrackContentMapRepository : BasicRepository<TrackContentMapEntity>, ITrackContentMapRepository, IScopedDependency
{
}
}

View File

@ -0,0 +1,7 @@
using SJZY.Track.Domain.TrackContentAggregate;
namespace SJZY.Track.Repository;
public class TrackContentRepository : BasicRepository<TrackContentEntity>, ITrackContentRepository, IScopedDependency
{
}

View File

@ -1,8 +1,8 @@
using Nest;
using SJZY.Track.Domain.TrackDetailsAggregate;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Expand.ElasticSearch.Services;
using SJZY.Track.Domain.TrackDetailsAggregate;
using SJZY.Track.Repository.TrackDetails;
using SJZY.Track.Repository.TrackDetails.Dtos;
@ -33,7 +33,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<List<TrackDetailsIndex>> GetListAsync(List<string> orderNos)
{
if (orderNos.Count < 1) return new List<TrackDetailsIndex>();
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Source(s => s.Includes(fd => fd
.Field(f => f.TrackStatus)

View File

@ -1,35 +0,0 @@
namespace SJZY.Track.Repository.TrackFlag.Entitys
{
/// <summary>
/// 轨迹标记表
/// </summary>
[SugarTable("t_track_flag")]
public class TrackFlagEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 标记代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 标记名称
/// </summary>
[SugarColumn(ColumnName = "Name")]
public string Name { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackFlag.Entitys;
namespace SJZY.Track.Repository.TrackFlag.Services
{
public interface ITrackFlagRepository : ISimpleClient<TrackFlagEntity>
{
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackFlag.Entitys;
namespace SJZY.Track.Repository.TrackFlag.Services
{
public class TrackFlagRepository : BasicRepository<TrackFlagEntity>, ITrackFlagRepository, IScopedDependency
{
}
}

View File

@ -0,0 +1,7 @@
using SJZY.Track.Domain.TrackFlagAggregate;
namespace SJZY.Track.Repository;
public class TrackFlagRepository : BasicRepository<TrackFlagEntity>, ITrackFlagRepository, IScopedDependency
{
}

View File

@ -1,9 +1,7 @@
using SJZY.Track.Domain.TrackPullAggregate;
namespace SJZY.Track.Repository
{
public class TrackPullConfigRepository : BasicRepository<TrackPullConfigEntity>, ITrackPullConfigRepository, IScopedDependency
{
namespace SJZY.Track.Repository;
}
}
public class TrackPullConfigRepository : BasicRepository<TrackPullConfigEntity>, ITrackPullConfigRepository, IScopedDependency
{
}

View File

@ -1,47 +0,0 @@
namespace SJZY.Track.Repository.TrackPushConfig.Entitys
{
/// <summary>
/// 轨迹推送配置表
/// </summary>
[SugarTable("t_track_push_config")]
public class TrackPushConfigEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 客户id(外部主体id)
/// </summary>
[SugarColumn(ColumnName = "CustomId")]
public int CustomId { get; set; }
/// <summary>
/// 是否自动推送
/// </summary>
[SugarColumn(ColumnName = "IsAutoPush")]
public bool IsAutoPush { get; set; }
/// <summary>
/// 服务商id(客户:服务商 1:1)
/// </summary>
[SugarColumn(ColumnName = "ServiceProviderId")]
public int ServiceProviderId { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
/// <summary>
/// 模板id(多个之间英文逗号分隔)
/// </summary>
[SugarColumn(ColumnName = "TrackTemplateId")]
public string TrackTemplateId { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackPushConfig.Entitys;
namespace SJZY.Track.Repository.TrackPushConfig.Services
{
public interface ITrackPushConfigRepository : ISimpleClient<TrackPushConfigEntity>
{
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackPushConfig.Entitys;
namespace SJZY.Track.Repository.TrackPushConfig.Services
{
public class TrackPushConfigRepository : BasicRepository<TrackPushConfigEntity>, ITrackPushConfigRepository, IScopedDependency
{
}
}

View File

@ -0,0 +1,7 @@
using SJZY.Track.Domain.TrackPushAggregate;
namespace SJZY.Track.Repository;
public class TrackPushConfigRepository : BasicRepository<TrackPushConfigEntity>, ITrackPushConfigRepository, IScopedDependency
{
}

View File

@ -1,77 +0,0 @@
namespace SJZY.Track.Repository.TrackPushContentConfig.Entitys
{
/// <summary>
/// 轨迹推送内容配置表
/// </summary>
[SugarTable("t_track_push_content_config")]
public class TrackPushContentConfigEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 扩展字段参数值
/// </summary>
[SugarColumn(ColumnName = "ExpandFieldsValue")]
public string ExpandFieldsValue { get; set; }
/// <summary>
/// 推送单号类型(主数据枚举TrackOrderType)
/// </summary>
[SugarColumn(ColumnName = "OrderNoType")]
public int OrderNoType { get; set; }
/// <summary>
/// 推送轨迹排序
/// </summary>
[SugarColumn(ColumnName = "Sort")]
public int Sort { get; set; }
/// <summary>
/// 轨迹代码参数值
/// </summary>
[SugarColumn(ColumnName = "TrackContentCodeValue")]
public string TrackContentCodeValue { get; set; }
/// <summary>
/// 轨迹内容id
/// </summary>
[SugarColumn(ColumnName = "TrackContentId")]
public int TrackContentId { get; set; }
/// <summary>
/// 轨迹内容参数值
/// </summary>
[SugarColumn(ColumnName = "TrackContentValue")]
public string TrackContentValue { get; set; }
/// <summary>
/// 轨迹内容英文参数值
/// </summary>
[SugarColumn(ColumnName = "TrackEnContentValue")]
public string TrackEnContentValue { get; set; }
/// <summary>
/// 轨迹推送配置id
/// </summary>
[SugarColumn(ColumnName = "TrackPushConfigId")]
public int TrackPushConfigId { get; set; }
/// <summary>
/// 轨迹状态参数值
/// </summary>
[SugarColumn(ColumnName = "TrackStatusValue")]
public string TrackStatusValue { get; set; }
/// <summary>
/// 轨迹时区GMT
/// </summary>
[SugarColumn(ColumnName = "TrackTimeZone")]
public string TrackTimeZone { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackPushContentConfig.Entitys;
namespace SJZY.Track.Repository.TrackPushContentConfig.Services
{
public interface ITrackPushContentConfigRepository : ISimpleClient<TrackPushContentConfigEntity>
{
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackPushContentConfig.Entitys;
namespace SJZY.Track.Repository.TrackPushContentConfig.Services
{
public class TrackPushContentConfigRepository : BasicRepository<TrackPushContentConfigEntity>, ITrackPushContentConfigRepository, IScopedDependency
{
}
}

View File

@ -1,83 +0,0 @@
namespace SJZY.Track.Repository.TrackPushPullParamsConfig.Entitys
{
/// <summary>
/// 轨迹拉取/推送参数配置
/// </summary>
[SugarTable("t_track_push_pull_params_config")]
public class TrackPushPullParamsConfigEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 扩展字段参数名
/// </summary>
[SugarColumn(ColumnName = "ExpandFieldsName")]
public string ExpandFieldsName { get; set; }
/// <summary>
/// 推拉模式,0拉取,1推送
/// </summary>
[SugarColumn(ColumnName = "IsPush")]
public bool IsPush { get; set; }
/// <summary>
/// 单号参数名
/// </summary>
[SugarColumn(ColumnName = "OrderNoName")]
public string OrderNoName { get; set; }
/// <summary>
/// 推拉配置id
/// </summary>
[SugarColumn(ColumnName = "PullOrPushConfigId")]
public int PullOrPushConfigId { get; set; }
/// <summary>
/// 轨迹时区参数名
/// </summary>
[SugarColumn(ColumnName = "TackTimeZoneName")]
public string TackTimeZoneName { get; set; }
/// <summary>
/// 轨迹代码参数名
/// </summary>
[SugarColumn(ColumnName = "TrackContentCodeName")]
public string TrackContentCodeName { get; set; }
/// <summary>
/// 轨迹内容参数名
/// </summary>
[SugarColumn(ColumnName = "TrackContentName")]
public string TrackContentName { get; set; }
/// <summary>
/// 轨迹内容英文参数名
/// </summary>
[SugarColumn(ColumnName = "TrackEnContentName")]
public string TrackEnContentName { get; set; }
/// <summary>
/// 轨迹发生地参数名
/// </summary>
[SugarColumn(ColumnName = "TrackPlaceName")]
public string TrackPlaceName { get; set; }
/// <summary>
/// 轨迹状态参数名
/// </summary>
[SugarColumn(ColumnName = "TrackStatusName")]
public string TrackStatusName { get; set; }
/// <summary>
/// 轨迹发生时间参数名
/// </summary>
[SugarColumn(ColumnName = "TrackTimeName")]
public string TrackTimeName { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackPushPullParamsConfig.Entitys;
namespace SJZY.Track.Repository.TrackPushPullParamsConfig.Services
{
public interface ITrackPushPullParamsConfigRepository : ISimpleClient<TrackPushPullParamsConfigEntity>
{
}
}

View File

@ -1,14 +0,0 @@
using SJZY.Track.Repository.TrackPushPullParamsConfig.Entitys;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SJZY.Track.Repository.TrackPushPullParamsConfig.Services
{
public class TrackPushPullParamsConfigRepository : BasicRepository<TrackPushPullParamsConfigEntity>, ITrackPushPullParamsConfigRepository, IScopedDependency
{
}
}

View File

@ -1,47 +0,0 @@
namespace SJZY.Track.Repository.TrackStatus.Entitys
{
/// <summary>
/// 轨迹状态表
/// </summary>
[SugarTable("t_track_status")]
public class TrackStatusEntity : IFullAuditedBasicEntitys
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 轨迹状态代码
/// </summary>
[SugarColumn(ColumnName = "Code")]
public string Code { get; set; }
/// <summary>
/// 轨迹状态英文
/// </summary>
[SugarColumn(ColumnName = "EnStatus")]
public string EnStatus { get; set; }
/// <summary>
/// 所属节点(主数据枚举ServiceNode)
/// </summary>
[SugarColumn(ColumnName = "Node")]
public int Node { get; set; }
/// <summary>
/// 轨迹状态
/// </summary>
[SugarColumn(ColumnName = "Status")]
public string Status { get; set; }
/// <summary>
/// 子系统id
/// </summary>
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackStatus.Entitys;
namespace SJZY.Track.Repository.TrackStatus.Services
{
public interface ITrackStatusRepository : ISimpleClient<TrackStatusEntity>
{
}
}

View File

@ -1,9 +0,0 @@
using SJZY.Track.Repository.TrackStatus.Entitys;
namespace SJZY.Track.Repository.TrackStatus.Services
{
public class TrackStatusRepository : BasicRepository<TrackStatusEntity>, ITrackStatusRepository, IScopedDependency
{
}
}

View File

@ -0,0 +1,12 @@
using SJZY.Track.Domain.TrackStatusAggregate;
namespace SJZY.Track.Repository;
public class TrackStatusRepository : BasicRepository<TrackStatusEntity>, ITrackStatusRepository, IScopedDependency
{
public TrackStatusRepository()
{
}
}

View File

@ -1,16 +1,24 @@
using SJZY.Track.Domain.TrackTemplateAggregate;
using SJZY.Expand.ABP.Core.Common.Dto;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Domain.TrackContentAggregate;
using SJZY.Track.Domain.TrackFlagAggregate;
using SJZY.Track.Domain.TrackStatusAggregate;
using SJZY.Track.Domain.TrackTemplateAggregate;
using SJZY.Track.Domain.TrackTemplateAggregate.Dtos;
using SJZY.Track.Domain.VEntities;
using SJZY.Track.Repository.Enum;
using System.Linq.Expressions;
namespace SJZY.Track.Repository;
/// <inheritdoc/>
public class TrackTemplateRepository : BasicRepository<TrackTemplateEntity>, ITrackTemplateRepository, IScopedDependency
{
public Task<TemplateContentDto> GetTemplateContentsAsync(List<int> distinctTemplateIds)
{
throw new NotImplementedException();
}
/// <summary>
/// 获取轨迹模版明细
/// </summary>
@ -18,22 +26,21 @@ public class TrackTemplateRepository : BasicRepository<TrackTemplateEntity>, ITr
/// <returns></returns>
public async Task<GetTrackTemplateDetailVO?> GetDetailAsync(int id)
{
var detail = await Context.Queryable<TrackTemplateEntity>().LeftJoin<VSystemEntity>((a, b) => a.SubSystemId==b.Id)
.Where((a, b) => a.Id==id)
var detail = await Context.Queryable<TrackTemplateEntity>().LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.Where((a, b) => a.Id == id)
.Select((a, b) => new
GetTrackTemplateDetailVO
{
Id = a.Id,
Code = a.Code,
Name = a.Name,
SubSystemId = a.SubSystemId,
SubSystem=b.CnName
}).FirstAsync();
{
Id = a.Id,
Code = a.Code,
Name = a.Name,
SubSystemId = a.SubSystemId,
SubSystem = b.CnName
}).FirstAsync();
return detail;
}
/// <summary>
/// 分页获取轨迹模版
/// </summary>
@ -41,18 +48,130 @@ public class TrackTemplateRepository : BasicRepository<TrackTemplateEntity>, ITr
/// <returns></returns>
public async Task<UnifyPageResultDto<GetTrackTemplateListVO>> GetPageTrackTemplate(GetPageTrackTemplateVO input)
{
var pagedList = await Context.Queryable<TrackTemplateEntity>().LeftJoin<VSystemEntity>((a, b) => a.SubSystemId==b.Id)
.WhereIF(input.SubSystemId>0, (a, b) => a.SubSystemId==input.SubSystemId)
.WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (a, b) => a.Name.Contains(input.Keywords)|| a.Code.Contains(input.Keywords))
.Select((a, b) => new GetTrackTemplateListVO
UnifyPageResultDto<GetTrackTemplateListVO> pagedList = new UnifyPageResultDto<GetTrackTemplateListVO>();
pagedList = await Context.Queryable<TrackTemplateEntity>().LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.WhereIF(input.SubSystemId > 0, (a, b) => a.SubSystemId == input.SubSystemId)
.WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (a, b) => a.Name.Contains(input.Keywords) || a.Code.Contains(input.Keywords))
.Select((a, b) => new GetTrackTemplateListVO
{
Id = a.Id,
Code = a.Code,
CreateTime = a.CreateTime,
Name = a.Name,
SubSystem = b.CnName
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
//如果轨迹模版id传值了,就置顶在第一条
if (input.TrackTemplateId>0&& (!pagedList.List.IsNullOrEmpty()))
{
if (input.PageIndex==1)
{
Id=a.Id,
Code=a.Code,
CreateTime= a.CreateTime,
Name = a.Name,
SubSystem = b.CnName
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
bool existCurrent = pagedList.List.Any(x => x.Id==input.TrackTemplateId);
if (existCurrent)
{
var item = pagedList.List.FirstOrDefault(x => x.Id==input.TrackTemplateId);
pagedList.List.Remove(item);
pagedList.List.Insert(0, item);
}
else
{
var item = await Context.Queryable<TrackTemplateEntity>().LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id)
.Where((a, b) => a.Id==input.TrackTemplateId)
.Select((a, b) => new GetTrackTemplateListVO
{
Id = a.Id,
Code = a.Code,
CreateTime = a.CreateTime,
Name = a.Name,
SubSystem = b.CnName
})
.FirstAsync();
if (item!=null)
{
var removeItem = pagedList.List.LastOrDefault();
pagedList.List.Remove(removeItem);
pagedList.List.Insert(0, item);
}
}
}
}
return pagedList;
}
/// <inheritdoc/>
public async Task<UnifyPageResultDto<GetTrackTemplateContentPageOutputVO>> GetContentPageAsync(GetTrackTemplateContentPageInputVO input)
{
return await Context.Queryable<TrackTemplateContentEntity>()
.InnerJoin<TrackContentEntity>((templateContent, trackContent) => templateContent.TrackContentId == trackContent.Id && !trackContent.IsDeleted)
.LeftJoin<TrackStatusEntity>((templateContent, trackContent, trackStatus) => trackContent.TrackStatusId == trackStatus.Id && !trackStatus.IsDeleted)
.LeftJoin<VEnumValueInfoEntity>((templateContent, trackContent, trackStatus, enumValue) => enumValue.Property == EnumPropertyEnums.节点.GetDescription() && trackStatus.Node == enumValue.Enumkey && !enumValue.IsDeleted)
.LeftJoin<TrackFlagEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag) => trackContent.TrackFlagId == trackFlag.Id && !trackFlag.IsDeleted)
.LeftJoin<VUserEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser) => templateContent.CreateUserId == createUser.Id && !createUser.IsDeleted)
.LeftJoin<VUserEntity>((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) => templateContent.UpdateUserId == updateUser.Id && !updateUser.IsDeleted)
.Filter(null, true)
.Where(templateContent => templateContent.TrackTemplateId == input.TrackTemplateId && !templateContent.IsDeleted)
.Select((templateContent, trackContent, trackStatus, enumValue, trackFlag, createUser, updateUser) => new GetTrackTemplateContentPageOutputVO
{
Id = templateContent.Id,
TrackStatus = trackStatus.Status,
Node = enumValue.Disp,
TrackFlag = trackFlag.Name,
CreateTime = templateContent.CreateTime,
CreateUser = createUser.Name,
UpdateTime = templateContent.UpdateTime,
UpdateUser = updateUser.Name
}, true)
.ToPagedListAsync(input.PageIndex, input.PageSize);
}
/// <inheritdoc/>
public async Task<GetTrackTemplateContentDetailOutputVO> GetContentDetailAsync(int id)
{
return await Context.Queryable<TrackTemplateContentEntity>()
.InnerJoin<TrackContentEntity>((templateContent, trackContent) => templateContent.TrackContentId == trackContent.Id && !trackContent.IsDeleted)
.LeftJoin<TrackStatusEntity>((templateContent, trackContent, trackStatus) => trackContent.TrackStatusId == trackStatus.Id && !trackStatus.IsDeleted)
.Filter(null, true)
.Where(templateContent => templateContent.Id == id && !templateContent.IsDeleted)
.Select((templateContent, trackContent, trackStatus) => new GetTrackTemplateContentDetailOutputVO
{
Id = templateContent.Id,
TrackContent = trackContent.Code + "-" + trackContent.Content,
TrackStatus = trackStatus.Status
}, true)
.SingleAsync();
}
/// <inheritdoc/>
public async Task<bool> IsAnyAsync(Expression<Func<TrackTemplateContentEntity, bool>> whereExpression)
{
return await Context.Queryable<TrackTemplateContentEntity>().Where(whereExpression).AnyAsync();
}
/// <inheritdoc/>
public async Task<bool> InsertAsync(TrackTemplateContentEntity insertObj)
{
return await Context.Insertable(insertObj).ExecuteCommandAsync() > 0;
}
/// <inheritdoc/>
public async Task<TrackTemplateContentEntity> GetByIdAsync(int id)
{
return await Context.Queryable<TrackTemplateContentEntity>().InSingleAsync(id);
}
/// <inheritdoc/>
public async Task<bool> UpdateAsync(TrackTemplateContentEntity updateObj)
{
return await Context.Updateable(updateObj).ExecuteCommandHasChangeAsync();
}
/// <inheritdoc/>
public async Task<bool> SoftDeleteContentAsync(int id)
{
return await Context.Updateable<TrackTemplateContentEntity>()
.Where(x => x.Id == id)
.SetColumns(nameof(ISoftDeleteBasicEntity.IsDeleted), true)
.ExecuteCommandHasChangeAsync();
}
}