浏览代码

Merge branch 'feature/snapshot' into test

qinchaoyue 1 天之前
父节点
当前提交
b5bc1b6cd2

+ 2 - 1
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -148,7 +148,8 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
             await _redPackRecordRepository.AddAsync(entity);
         }
         await _redPackAuditRepository.UpdateAsync(redPackAudit, token);
-        await _snapshotPointsDomainService.AddPointsAsync(order.Id, EPointsSource.Audit, dto.PointsStatus, dto.ExtraDeductedPoints);
+        await _snapshotPointsDomainService
+            .AddPointsAsync(order.Id, EPointsSource.Audit, dto.PointsStatus, dto.ExtraDeductedPoints, dto.ExtraDeductionPointsTypeName);
         if (dto.IsSendSms)
         {
             var smsTemplate = await _snapshotSMSTemplateRepository.GetAsync(dto.SMSTemplateId);

+ 6 - 0
src/Hotline.Share/Enums/Snapshot/EPointsSource.cs

@@ -21,6 +21,12 @@ public enum EPointsSource
     [Description("审核积分")]
     Audit = 1,
 
+    /// <summary>
+    /// 额外扣除
+    /// </summary>
+    [Description("额外扣除")]
+    AuditDeduct = 2,
+
     /// <summary>
     /// 积分兑换
     /// </summary>

+ 2 - 1
src/Hotline/Snapshot/Contracts/ISnapshotPointsDomainService.cs

@@ -19,6 +19,7 @@ public interface ISnapshotPointsDomainService
     /// <param name="source"></param>
     /// <param name="status"></param>
     /// <param name="extraDeductedPoints"></param>
+    /// <param name="extraDeductionPointsTypeName">额外扣除原因</param>
     /// <returns></returns>
-    Task AddPointsAsync(string orderId, EPointsSource source, ESnapshotSMSStatus? status, int? extraDeductedPoints);
+    Task AddPointsAsync(string orderId, EPointsSource source, ESnapshotSMSStatus? status, int? extraDeductedPoints, string? extraDeductionPointsTypeName);
 }

+ 12 - 2
src/Hotline/Snapshot/Services/SnapshotPointsDomainService.cs

@@ -1,5 +1,6 @@
 using Hotline.Orders;
 using Hotline.Share.Enums.Snapshot;
+using Hotline.Share.Tools;
 using Hotline.Snapshot.Contracts;
 using Hotline.Snapshot.IRepository;
 using System;
@@ -23,7 +24,7 @@ public class SnapshotPointsDomainService : ISnapshotPointsDomainService, IScopeD
         _pointsRecordRepository = snapshotPointsRecordRepository;
     }
 
-    public async Task AddPointsAsync(string orderId, EPointsSource source, ESnapshotSMSStatus? status, int? extraDeductedPoints)
+    public async Task AddPointsAsync(string orderId, EPointsSource source, ESnapshotSMSStatus? status, int? extraDeductedPoints, string? extraDeductionPointsTypeName)
     {
         if (status == null) return;
         var order = await _orderSnapshotRepository.Queryable()
@@ -62,8 +63,17 @@ public class SnapshotPointsDomainService : ISnapshotPointsDomainService, IScopeD
         if (source == EPointsSource.Audit && status == ESnapshotSMSStatus.Refuse)
         {
             points.Direction = Share.Enums.CallCenter.EPointsDirection.Out;
-            points.Points = order.RefusePoints ?? 0 + extraDeductedPoints ?? 0;
+            points.Points = order.RefusePoints ?? 0;
             points.Points *= -1;
+
+            if (extraDeductionPointsTypeName.NotNullOrEmpty() && extraDeductedPoints != null && extraDeductedPoints != 0)
+            {
+                var ex = points.ToJson().FromJson<SnapshotPointsRecord>();
+                ex.Source = EPointsSource.AuditDeduct;
+                ex.Points = extraDeductedPoints.Value * -1;
+                ex.Remark = extraDeductionPointsTypeName;
+                await _pointsRecordRepository.AddAsync(ex);
+            }
         }
         await _pointsRecordRepository.AddAsync(points);
     }

+ 5 - 0
src/Hotline/Snapshot/SnapshotPointsRecord.cs

@@ -37,4 +37,9 @@ public class SnapshotPointsRecord : CreationEntity
     public int Points { get; set; }
 
     public string OrderId { get; set; }
+
+    /// <summary>
+    /// 备注
+    /// </summary>
+    public string? Remark { get; set; }
 }