Prechádzať zdrojové kódy

修复设置安全卫士

qinchaoyue 3 dní pred
rodič
commit
6b78a4bbbe

+ 7 - 1
src/Hotline.Application/Snapshot/SnapshotPointsApplication.cs

@@ -79,7 +79,13 @@ public class SnapshotPointsApplication : ISnapshotPointsApplication, IScopeDepen
                         if (dto.IsSecurityMax)
                             citizen.SafetyTypes.Add(safetyType);
                         else
-                            citizen.SafetyTypes.Remove(safetyType);
+                        {
+                            var delete = citizen.SafetyTypes.Where(m => m.Name == "安全卫士").ToList();
+                            foreach (var item in delete)
+                            {
+                                citizen.SafetyTypes.Remove(item);
+                            }
+                        }
                         await _citizenRepository.UpdateNav(citizen).Include(m => m.SafetyTypes)
                                 .ExecuteCommandAsync();
                     });

+ 36 - 1
test/Hotline.Tests/Application/PointsRecordApplicationTest.cs

@@ -2,8 +2,10 @@
 using Hotline.Application.Snapshot.Contracts;
 using Hotline.Identity.Accounts;
 using Hotline.Identity.Roles;
+using Hotline.Orders;
 using Hotline.Settings;
 using Hotline.Share.Dtos.Snapshot;
+using Hotline.Snapshot.IRepository;
 using Hotline.ThirdAccountDomainServices;
 using Hotline.ThirdAccountDomainServices.Interfaces;
 using Hotline.Users;
@@ -15,6 +17,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using XF.Domain.Authentications;
 using XF.Domain.Cache;
 using XF.Domain.Repository;
 
@@ -24,10 +27,17 @@ public class PointsRecordApplicationTest : TestBase
 {
     private readonly ISnapshotPointsApplication _pointsRecordApplication;
     private readonly ISnapshotApplication _snapshotApplication;
-    public PointsRecordApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, ITypedCache<SystemSetting> cacheSettingData, ThirdAccounSupplierFactory thirdAccountDomainFactory, ISnapshotPointsApplication pointsRecordApplication, ISnapshotApplication snapshotApplication, IServiceProvider serviceProvider) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
+    private readonly ISessionContext _sessionContext;
+    private readonly ICitizenRepository _citizenRepository;
+    private readonly ISafetyTypeRepository _safetyTypeRepository;
+
+    public PointsRecordApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, ITypedCache<SystemSetting> cacheSettingData, ThirdAccounSupplierFactory thirdAccountDomainFactory, ISnapshotPointsApplication pointsRecordApplication, ISnapshotApplication snapshotApplication, IServiceProvider serviceProvider, ISessionContext sessionContext, ICitizenRepository citizenRepository, ISafetyTypeRepository safetyTypeRepository) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
     {
         _pointsRecordApplication = pointsRecordApplication;
         _snapshotApplication = snapshotApplication;
+        _sessionContext = sessionContext;
+        _citizenRepository = citizenRepository;
+        _safetyTypeRepository = safetyTypeRepository;
     }
 
     [Fact]
@@ -42,6 +52,31 @@ public class PointsRecordApplicationTest : TestBase
         items.ShouldNotBeNull();
     }
 
+    [Fact]
+    public async Task UpdateIsSecurityMax_Test()
+    {
+        SetWeiXin();
+        var inDto = new UpdateIsSecurityMaxAsync
+        {
+            UserId = _sessionContext.UserId,
+            IsSecurityMax = false
+        };
+        await _pointsRecordApplication.UpdateIsSecurityMaxAsync(inDto, CancellationToken.None);
+        var citizen = await _citizenRepository.Queryable()
+            .Where(m => m.Id == inDto.UserId)
+            .Includes(m => m.SafetyTypes)
+            .FirstAsync();
+        citizen.SafetyTypes.Any(m => m.Name == "安全卫士").ShouldBeFalse();
+
+        inDto.IsSecurityMax = true;
+        await _pointsRecordApplication.UpdateIsSecurityMaxAsync(inDto, CancellationToken.None);
+        citizen = await _citizenRepository.Queryable()
+            .Where(m => m.Id == inDto.UserId)
+            .Includes(m => m.SafetyTypes)
+            .FirstAsync();
+        citizen.SafetyTypes.Any(m => m.Name == "安全卫士").ShouldBeTrue();
+    }
+
     [Fact]
     public async Task GetPointsRank_Test()
     {