Browse Source

Merge branch 'feature/snapshot' into dev

qinchaoyue 4 tháng trước cách đây
mục cha
commit
5e4be9aba3

+ 7 - 0
src/Hotline.Api/Controllers/Snapshot/RedPackController.cs

@@ -125,6 +125,13 @@ public class RedPackController : BaseController
     public async Task UpdateRedPackRecordAsync([FromBody] UpdateRedPackRecordInDto dto)
         => await _redPackApplication.UpdateRedPackRecordAsync(dto);
 
+    /// <summary>
+    /// 补充发放集合
+    /// </summary>
+    [HttpGet("record/supplement")]
+    public async Task<PagedDto<SnapshotRedPackRecordSupplementItemsOutDto>> GetRedPackRecordSupplementItemsAsync([FromQuery] SnapshotRedPackRecordSupplementItemsInDto dto)
+        => await _redPackApplication.GetRedPackRecordSupplementItemsAsync(dto);
+
     /// <summary>
     /// 红包审核通过或拒绝
     /// </summary>

+ 15 - 0
src/Hotline.Application.Tests/Application/RedPackApplicationTest.cs

@@ -51,6 +51,21 @@ public class RedPackApplicationTest : TestBase
             RedPackAuditId = audit.Id,
         };
         await _redPackApplication.AuditRedPackAuditAsync(inDto);
+        var suInDto = new UpdateRedPackRecordInDto
+        {
+            RedPackAuditId = audit.Id,
+            Name = "单元测试Name",
+            BankCardNo = "单元测试银行号",
+            OpenBank = "单元测试开户行",
+            ReplenishAmount = 100.01,
+            ReplenishTime = DateTime.Now,
+            ReplenishRemark = "单元测试补发备注",
+            IsSendSMS = false,
+            ReplenishType = "%15",
+            ReplenishTypeId = "1",
+        };
+        await _redPackApplication.UpdateRedPackRecordAsync(suInDto);
+
         items = await _redPackApplication.GetRedPackAuditItemsAsync(new SnapshotOrderAuditItemsInDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1)).ToListAsync();
         items.Any(m => m.Id == audit.Id).ShouldBeTrue();
 

+ 3 - 1
src/Hotline.Application/Snapshot/IRedPackApplication.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Dtos.Snapshot;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Snapshot;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -83,6 +84,7 @@ public interface IRedPackApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     ISugarQueryable<SnapshotRedPackRecordItemsOutDto> GetRedPackRecordItemsAsync(SnapshotRedPackRecordItemsInDto dto);
+    Task<PagedDto<SnapshotRedPackRecordSupplementItemsOutDto>> GetRedPackRecordSupplementItemsAsync(SnapshotRedPackRecordSupplementItemsInDto dto);
 
     /// <summary>
     /// 审核添加备注

+ 12 - 4
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -1,4 +1,5 @@
 using Hotline.Orders;
+using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.Snapshot;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Snapshot;
@@ -27,8 +28,9 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
     private readonly ISessionContext _sessionContext;
     private readonly IRedPackGuiderAuditRepository _redPackGuiderAuditRepository;
     private readonly IThirdAccountRepository _thirdAccountRepository;
+    private readonly ISupplementRecordRepository _supplementRecordRepository;
 
-    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderRepository orderRepository, IIndustryRepository industryRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, IRepository<OrderSpecial> orderSpecialRepository, ISessionContext sessionContext, IRedPackGuiderAuditRepository redPackGuiderAuditRepository, IThirdAccountRepository thirdAccountRepository)
+    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderRepository orderRepository, IIndustryRepository industryRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, IRepository<OrderSpecial> orderSpecialRepository, ISessionContext sessionContext, IRedPackGuiderAuditRepository redPackGuiderAuditRepository, IThirdAccountRepository thirdAccountRepository, ISupplementRecordRepository supplementRecordRepository)
     {
         _orderSnapshotRepository = orderSnapshotRepository;
         _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository;
@@ -40,6 +42,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         _sessionContext = sessionContext;
         _redPackGuiderAuditRepository = redPackGuiderAuditRepository;
         _thirdAccountRepository = thirdAccountRepository;
+        _supplementRecordRepository = supplementRecordRepository;
     }
 
     /// <summary>
@@ -393,12 +396,12 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
             .FirstAsync() ?? throw UserFriendlyException.SameMessage("审核记录不存在");
         var audit = await _redPackAuditRepository.GetAsync(dto.RedPackAuditId) ?? throw UserFriendlyException.SameMessage("审核记录不存在");
 
-        dto.Adapt(record);
-        await _redPackRecordRepository.UpdateAsync(record);
-
         dto.Adapt(audit);
         await _redPackAuditRepository.UpdateAsync(audit);
 
+        var entity = dto.Adapt<SupplementRecord>();
+        await _supplementRecordRepository.AddAsync(entity);
+
         if (dto.IsSendSMS)
         {
             // TODO: 发送短信
@@ -494,6 +497,11 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         return query;
     }
 
+    public Task<PagedDto<SnapshotRedPackRecordSupplementItemsOutDto>> GetRedPackRecordSupplementItemsAsync(SnapshotRedPackRecordSupplementItemsInDto dto)
+    {
+        throw new NotImplementedException();
+    }
+
 
     #endregion
 }

+ 9 - 4
src/Hotline.Application/Snapshot/SnapshotApplicationBase.cs

@@ -202,6 +202,11 @@ public abstract class SnapshotApplicationBase
         if (indurstry.IndustryType == EIndustryType.Declare)
         {
             outDto.AreaTree = (await _systemAreaDomainService.GetAreaTree(parentId: "510300")).Adapt<List<SystemAreaOutDto>>();
+            outDto.AreaTree.ToList().ForEach(m => 
+            {
+                if (m.Children.IsNullOrEmpty())
+                    m.Children = new List<SystemAreaOutDto>() { new SystemAreaOutDto { Id = "0",  AreaName = "无"} };
+            });
             outDto.Files = (await _fileRepository.GetByKeyAsync(indurstry.Id, requestAborted)).Adapt<List<IndustryFileDto>>();
             outDto.Files.ToList().ForEach(m => m.Url = fileDownloadApi + m.AdditionId);
             outDto.WorkplaceName = _systemDicDataCacheManager.WorkplaceName;
@@ -523,22 +528,22 @@ public abstract class SnapshotApplicationBase
         dto.ValidateObject();
         if (int.TryParse(dto.InvitationCode, out var invitationCode) == false)
         { 
-            throw UserFriendlyException.SameMessage("邀请码格式错误");
+            throw new UserFriendlyException(200, "邀请码格式错误");
         }
         var third = await _thirdAccountRepository.GetByOpenIdAsync(_sessionContext.OpenId)
             ?? throw UserFriendlyException.SameMessage("用户不存在");
         if (third.InvitationCode.NotNullOrEmpty())
         {
-            throw UserFriendlyException.SameMessage("邀请码已存在");
+            throw new UserFriendlyException(200, "邀请码已存在");
         }
         if (_inviteCodeRecordRepository.Queryable().Where(m => m.InviteCode == dto.InvitationCode).Any())
         {
-            throw UserFriendlyException.SameMessage("邀请码已经被使用");
+            throw new UserFriendlyException(200, "邀请码已经被使用");
         }
         third.InvitationCode = dto.InvitationCode;
         var invite = await _inviteCodeRepository.Queryable()
             .Where(m => invitationCode >= m.BeginCode && invitationCode <= m.EndCode)
-            .FirstAsync() ?? throw UserFriendlyException.SameMessage("邀请码无效");
+            .FirstAsync() ?? throw new UserFriendlyException(200, "邀请码无效");
         var entity = new InviteCodeRecord
         {
             OrgId = invite.Id,

+ 18 - 0
src/Hotline.Repository.SqlSugar/Snapshot/SupplementRecordRepository.cs

@@ -0,0 +1,18 @@
+using Hotline.Repository.SqlSugar.DataPermissions;
+using Hotline.Snapshot;
+using Hotline.Snapshot.Interfaces;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Dependency;
+
+namespace Hotline.Repository.SqlSugar.Snapshot;
+public class SupplementRecordRepository : BaseRepository<SupplementRecord>, ISupplementRecordRepository, IScopeDependency
+{
+    public SupplementRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+    {
+    }
+}

+ 10 - 0
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -122,6 +122,16 @@ public class AddSnapshotOrderInDto : Position
     /// </summary>
     public string? WorkplaceName { get; set; }
 
+    /// <summary>
+    /// 作业区域
+    /// </summary>
+    public string WorkArea { get; set; }
+
+    /// <summary>
+    /// 作业区域Id
+    /// </summary>
+    public string WorkAreaId { get; set; }
+
     /// <summary>
     /// 作业时间
     /// </summary>

+ 90 - 1
src/Hotline.Share/Dtos/Snapshot/RedPackDto.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.Snapshot;
+using Hotline.Share.Enums.Order;
+using Hotline.Share.Enums.Snapshot;
 using Hotline.Share.Requests;
 using Hotline.Share.Tools;
 using System.ComponentModel.DataAnnotations;
@@ -151,3 +152,91 @@ public class UpdateRedPackRecordInDto
     public string ReplenishTypeId { get; set; }
 }
 
+
+/// <summary>
+/// 补充发放OutDto
+/// </summary>
+public class SnapshotRedPackRecordSupplementItemsOutDto
+{
+    /// <summary>
+    /// OrderId
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public string StatusTxt { get; set; }
+
+    /// <summary>
+    /// 来源
+    /// </summary>
+    public string SourceChannel { get; set; }
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string FromPhone { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 补发金额
+    /// </summary>
+    public double ReplenishAmount { get; set; }
+
+    /// <summary>
+    /// 姓名
+    /// </summary>
+    public string Name { get; set; }
+
+    /// <summary>
+    /// 卡号
+    /// </summary>
+    public string BankCardNo { get; set; }
+
+    /// <summary>
+    /// 开户行
+    /// </summary>
+    public string OpenBank { get; set; }
+
+    /// <summary>
+    /// 补发放时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 补充发放人员
+    /// </summary>
+    public string CreatorName { get; set; }
+
+    /// <summary>
+    /// 备注
+    /// </summary>
+    public string Remark { get; set; }
+}
+
+public record SnapshotRedPackRecordSupplementItemsInDto : PagedRequest;

+ 11 - 0
src/Hotline/Snapshot/Interfaces/ISupplementRecordRepository.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Snapshot.Interfaces;
+public interface ISupplementRecordRepository : IRepository<SupplementRecord>
+{
+}

+ 12 - 1
src/Hotline/Snapshot/OrderSnapshot.cs

@@ -65,6 +65,18 @@ public class OrderSnapshot : CreationSoftDeleteEntity
     [SugarColumn(ColumnDescription = "场所名称")]
     public string? WorkplaceName { get; set; }
 
+    /// <summary>
+    /// 作业区域
+    /// </summary>
+    [SugarColumn(ColumnDescription = "作业区域")]
+    public string? WorkArea { get; set; }
+
+    /// <summary>
+    /// 作业区域Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "作业区域Id")]
+    public string? WorkAreaId { get; set; }
+
     /// <summary>
     /// 作业时间
     /// </summary>
@@ -324,5 +336,4 @@ public class OrderSnapshot : CreationSoftDeleteEntity
     /// </summary>
     [SugarColumn(ColumnDescription = "购气单位/个人名称")]
     public string? CompanyName { get; set; }
-
 }

+ 0 - 30
src/Hotline/Snapshot/RedPackAudit.cs

@@ -61,36 +61,6 @@ public class RedPackAudit : CreationSoftDeleteEntity
     [SugarColumn(ColumnDescription = "实发金额")]
     public double? AcutalAmount { get; set; }
 
-    /// <summary>
-    /// 补充发放金额
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放金额")]
-    public double? ReplenishAmount { get; set; }
-
-    /// <summary>
-    /// 补充发放时间
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放时间")]
-    public DateTime? ReplenishTime { get; set; }
-
-    /// <summary>
-    /// 补充发放备注
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放备注")]
-    public string? ReplenishRemark { get; set; }
-
-    /// <summary>
-    /// 补充发放类型
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放类型")]
-    public string? ReplenishType { get; set; }
-
-    /// <summary>
-    /// 补充发放类型Id
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放类型Id")]
-    public string? ReplenishTypeId { get; set; }
-
     /// <summary>
     /// 市民奖励发放结果
     /// </summary>

+ 77 - 0
src/Hotline/Snapshot/SupplementRecord.cs

@@ -0,0 +1,77 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Snapshot;
+
+/// <summary>
+/// 补充发放记录
+/// </summary>
+[Description("补充发放记录")]
+public class SupplementRecord : FullStateEntity
+{
+    /// <summary>
+    /// OrderId
+    /// </summary>
+    [SugarColumn(ColumnDescription = "OrderId")]
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// No
+    /// </summary>
+    [SugarColumn(ColumnDescription ="No")]
+    public string No { get; set; }
+
+    /// <summary>
+    /// RedPackAuditId
+    /// </summary>
+    [SugarColumn(ColumnDescription = "RedPackAuditId")]
+    public string RedPackAuditId { get; set; }
+
+    /// <summary>
+    /// RedPackRecordId
+    /// </summary>
+    [SugarColumn(ColumnDescription = "RedPackRecordId")]
+    public string RedPackRecordId { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    [SugarColumn(ColumnDescription = "行业名称")]
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 补充发放金额
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放金额")]
+    public double? ReplenishAmount { get; set; }
+
+    /// <summary>
+    /// 补充发放时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放时间")]
+    public DateTime? ReplenishTime { get; set; }
+
+    /// <summary>
+    /// 补充发放备注
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放备注")]
+    public string? ReplenishRemark { get; set; }
+
+    /// <summary>
+    /// 补充发放类型
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放类型")]
+    public string? ReplenishType { get; set; }
+
+    /// <summary>
+    /// 补充发放类型Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放类型Id")]
+    public string? ReplenishTypeId { get; set; }
+}