Pārlūkot izejas kodu

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

libin 3 nedēļas atpakaļ
vecāks
revīzija
94f800ab00

+ 3 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -1769,6 +1769,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("visit/judge")]
+    [LogFilterAlpha("扭转满意度")]
     public async Task<JudgeVisitRsp> JudgeVisit([FromBody] JudgeVisitReq dto)
     {
         int error = 0;
@@ -1792,6 +1793,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("visit/migration")]
+    [LogFilterAlpha("回访平移")]
     public async Task VisitMigrationBatch([FromBody] DistributionVisitDto dto)
     {
         var visits = await _orderVisitRepository.Queryable()
@@ -1838,6 +1840,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("visit/put_through")]
+    [LogFilterAlpha("设置未接通")]
     public async Task VisitPutThrough([FromBody] VisitPutThroughDto dto)
     {
         await _orderVisitRepository.Updateable().SetColumns(x => new OrderVisit { IsPutThrough = false }).Where(x => x.Id == dto.id)

+ 1 - 0
src/Hotline.Application/Exam/QueryExtensions/Practices/PracticeQueryExtensions.cs

@@ -30,6 +30,7 @@ namespace Hotline.Application.Exam.QueryExtensions.Practices
 
             expression = ExpressionableUtility.CreateExpression<ExamPracticeQuestion>()
                 .AndIF(practiceQuestionGroupRequest.PracticeId.IsNotNull(),x=>x.PracticeId == practiceQuestionGroupRequest.PracticeId)
+                .And(x=>x.QuestionType == EQuestionType.Single || x.QuestionType == EQuestionType.Multi || x.QuestionType == EQuestionType.Judge)
                 .ToExpression();
 
             return expression;

+ 1 - 0
src/Hotline.Application/Exam/QueryExtensions/Questions/QuestionQueryExtesions.cs

@@ -20,6 +20,7 @@ namespace Hotline.Application.Exam.QueryExtensions.Questions
 
             expression = ExpressionableUtility.CreateExpression<ExamQuestion>().AndIF(questionPagedRequest.DifficultyLevel.IsNotNull(), x => questionPagedRequest.DifficultyLevel == x.DifficultyLevel)
             .AndIF(questionPagedRequest.Title.IsNotNullOrEmpty(), x => x.Title.Contains(questionPagedRequest.Title))
+           .AndIF(questionPagedRequest.QuestionType.IsNotNull(),x=>x.QuestionType == questionPagedRequest.QuestionType)
             .ToExpression();
             return expression;
         }

+ 4 - 1
src/Hotline.Application/Exam/Service/Practices/PracticeService.cs

@@ -38,6 +38,7 @@ using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 using Hotline.Repository.SqlSugar.Exam.Service;
 using Hotline.Repository.SqlSugar.Exam.Extensions;
+using Exam.Infrastructure.Extensions;
 
 namespace Hotline.Application.Exam.Service.Practices
 {
@@ -321,6 +322,8 @@ namespace Hotline.Application.Exam.Service.Practices
         }
         private async Task<PracticeQuestionDto> QueryPracticeQuestion(PracticeQuestionRequest practiceQuestionRequest)
         {
+            if (practiceQuestionRequest.PracticeQuestionId.IsNullOrEmpty()) return null;
+
             var practiceQuestion = await _practiceQuestionRepository.GetAsync(x => x.Id == practiceQuestionRequest.PracticeQuestionId);
 
             var practiceQuestionDto = _mapper.Map<PracticeQuestionDto>(practiceQuestion);
@@ -593,7 +596,7 @@ namespace Hotline.Application.Exam.Service.Practices
             var questionRepository = new ExamRepository<ExamQuestion>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
 
             var questionTagTable = questionTagRepostiory.Queryable();
-            var questionTable = questionRepository.Queryable();
+            var questionTable = questionRepository.Queryable().Where(x=>!(x.QuestionType == Share.Enums.Exams.EQuestionType.Single && x.QuestionType == Share.Enums.Exams.EQuestionType.Multi || x.QuestionType == Share.Enums.Exams.EQuestionType.Judge));
 
             // 按照标签获取试题,至少取一道
             if (actionRequest.Count < actionRequest.PracticeTagDtos.Count)

+ 3 - 2
src/Hotline.Application/Exam/Service/Trains/TrainRecordService.cs

@@ -71,7 +71,7 @@ namespace Hotline.Application.Exam.Service.Trains
             trainRecord= _mapper.Map<CompleteTrainRecordDto,ExamTrainRecord>(completeTrainRecordDto, trainRecord);
             trainRecord.ToUpdate(_sessionContext);
 
-            await _repository.ValidateUpdateAsync(trainRecord, cancellationToken);
+            await _repository.UpdateWithValidateAsync(trainRecord, cancellationToken);
         }
 
         public async Task CompleteTrainKnowladgeAsync(CompleteTrainKnowladgeDto completeTrainPracticeDto, CancellationToken cancellationToken)
@@ -80,7 +80,7 @@ namespace Hotline.Application.Exam.Service.Trains
 
             trainKnowladge.ToUpdate(_sessionContext);
 
-            await _trainKnowladgeRepository.ValidateUpdateAsync(trainKnowladge,cancellationToken);
+            await _trainKnowladgeRepository.UpdateWithValidateAsync(trainKnowladge,cancellationToken);
 
         }
 
@@ -381,6 +381,7 @@ namespace Hotline.Application.Exam.Service.Trains
             if (addTrainDto.AddTrainRecordAnswerDto != null)
             {
                 addTrainDto.AddTrainRecordAnswerDto.TrainRecordId = addTrainDto.TrainRecordId;
+                addTrainDto.AddTrainRecordAnswerDto.QuestionId = addTrainDto.QuestionId;
                 trainRecordAnswers.Add(_mapper.Map<ExamTrainRecordAnswer>(addTrainDto.AddTrainRecordAnswerDto));
             }
 

+ 2 - 1
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -2579,7 +2579,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value &&
                         x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
             .WhereIF(string.IsNullOrEmpty(dto.OrgName) == false, x => x.VisitOrgName.Contains(dto.OrgName))
-            .WhereIF(string.IsNullOrEmpty(dto.LineNum) == false, x => x.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
+            .WhereIF(string.IsNullOrEmpty(dto.LineNum) == false && _appOptions.Value.IsYiBin == true, x => x.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
+            .WhereIF(string.IsNullOrEmpty(dto.LineNum) == false && _appOptions.Value.IsYiBin == false, x => x.OrderVisit.Order.FwCallRecord.ToNo.Contains(dto.LineNum))
             .WhereIF(dto.TypeCode != null && dto.TypeCode == 1, x => x.OrderVisit.Order.IdentityType == EIdentityType.Citizen)
             .WhereIF(dto.TypeCode != null && dto.TypeCode == 2, x => x.OrderVisit.Order.IdentityType == EIdentityType.Enterprise)
             .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId))

+ 1 - 1
src/Hotline.Application/Snapshot/Notifications/SnapshotHandler.cs

@@ -64,7 +64,7 @@ public class SnapshotHandler : ICapSubscribe, IScopeDependency
     /// <param name="bulletinId"></param>
     /// <param name="token"></param>
     /// <returns></returns>
-    [CapSubscribe(EventNames.BulletinIsPass, Group = "snapshot")]
+    [CapSubscribe(EventNames.BulletinIsPass)]
     public async Task BulletinIsPassHandler(string bulletinId, CancellationToken token)
     {
         await _snapshotBulletinApplication.NotifyUserAsync(bulletinId, token);

+ 5 - 0
src/Hotline.Share/Dtos/Trains/TrainPracticeOptionsDto.cs

@@ -92,5 +92,10 @@ namespace Hotline.Share.Dtos.Trains
         [Description("是否选择")]
         public bool IsSelected { get; set; }
 
+        /// <summary>
+        /// 是否正确答案
+        /// </summary>
+        [Description("是否正确答案")]
+        public bool IsAnswer { get; set; }
     }
 }

+ 8 - 0
src/Hotline.Share/Dtos/Trains/TrainRecordAnswerDto.cs

@@ -3,6 +3,7 @@ using Exam.Infrastructure.Data.Interface;
 using Exam.Infrastructure.Enums;
 using Hotline.Share.Exams.Interface;
 using System.ComponentModel;
+using System.Text.Json.Serialization;
 
 namespace Hotline.Share.Dtos.Trains
 {
@@ -63,6 +64,13 @@ namespace Hotline.Share.Dtos.Trains
         [Description("培训记录Id")]
         public string TrainRecordId { get; set; }
 
+        /// <summary>
+        /// 试题Id
+        /// </summary>
+        [Description("试题Id")]
+        [JsonIgnore]
+        public string QuestionId { get; set; }
+
         /// <summary>
         /// 答案
         /// </summary>

+ 6 - 0
src/Hotline.Share/Requests/Question/QuestionPagedRequest.cs

@@ -30,5 +30,11 @@ namespace Hotline.Share.Requests.Question
         /// </summary>
         [Description("知识库Id")]
         public List<string> KnowladgeIds { get; set; }
+
+        /// <summary>
+        /// 题型
+        /// </summary>
+        [Description("题型")]
+        public EQuestionType? QuestionType { get; set; }
     }
 }

+ 5 - 5
test/Hotline.Tests/Application/OrderSnapshotApplicationTest.cs

@@ -169,7 +169,7 @@ public class OrderSnapshotApplicationTest : TestBase
     public async Task SnapshotWorkflow_Guider_Timeout_Test()
     {
         SetSettingCache(SettingConstants.OvertimeBack, "0.00027778");
-        var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin)
+        var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin, "安全隐患")
             .办理到网格员(SetZuoXi)
             .StepHandle(async order =>
             {
@@ -381,11 +381,11 @@ public class OrderSnapshotApplicationTest : TestBase
     {
         var snapshotLabels = _systemDicDataCacheManager.SnapshotOrderLabel;
         var inputLable = snapshotLabels.Where(m => m.DicDataValue == "bss").ToList();
-        var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin)
+        var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin, "安全隐患")
             .办理到工单标注(SetZuoXi)
-            .办理到派单员(SetZuoXi, false)
-            .办理到归档(SetZuoXi)
-            .发布工单(SetZuoXi, inputLable.Select(m => new Kv { Key = m.DicDataValue, Value = m.DicDataName }).ToList())
+            .办理到派单员(Set班长, false)
+            .办理到归档(SetPaiDanYuan)
+            .发布工单(SetPaiDanYuan, inputLable.Select(m => new Kv { Key = m.DicDataValue, Value = m.DicDataName }).ToList())
             .GetCreateResult();
         order.Id.ShouldNotBeNull();
 

+ 1 - 1
test/Hotline.Tests/Application/RedPackApplicationTest.cs

@@ -109,7 +109,7 @@ public class RedPackApplicationTest : TestBase
     /// 获取红包记录
     /// </summary>
     /// <returns></returns>
-    [Fact]
+    //[Fact]
     public async Task AuditRedPackAudit_Test()
     {
         var items = await _redPackApplication.GetRedPackAuditItems(new SnapshotOrderAuditItemsInDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0)).ToListAsync();

+ 9 - 8
test/Hotline.Tests/Application/SnapshotApplicationTest.cs

@@ -160,7 +160,7 @@ public class SnapshotApplicationTest : TestBase
     public async Task PublishOrder_Test()
     {
         var industry = await _industryRepository.Queryable()
-            .Where(m => m.IndustryType == EIndustryType.Clue)
+            .Where(m => m.Name == "电气焊作业申报")
             .OrderBy(m => m.DisplayOrder)
             .FirstAsync();
 
@@ -251,11 +251,11 @@ public class SnapshotApplicationTest : TestBase
     [Fact]
     public async Task RefreshTokenAsync()
     {
-        var token = await _identityAppService.GetThirdTokenAsync(new ThirdTokenInDto(), CancellationToken.None);
-        var newToken = await _identityAppService.RefreshTokenAsync(token["OpenId"].ToString(), CancellationToken.None);
+        var token = await _identityAppService.GetThirdTokenAsync(new ThirdTokenInDto { ThirdType = EThirdType.Test, LoginCode = "测试生成的OpenId" }, CancellationToken.None);
+        var newToken = await _identityAppService.RefreshTokenAsync(token["openId"].ToString(), CancellationToken.None);
         newToken.ShouldNotBeNull();
-        newToken["OpenId"].ShouldBe(token["OpenId"].ToString());
-        newToken["PhoneNumber"].ToString().ShouldNotBeNullOrEmpty();
+        newToken["openId"].ShouldBe(token["openId"].ToString());
+        newToken["phoneNumber"].ToString().ShouldNotBeNullOrEmpty();
     }
 
     /// <summary>
@@ -265,8 +265,8 @@ public class SnapshotApplicationTest : TestBase
     [Fact]
     public async Task GetThirdToken_Test()
     {
-        var result = await _identityAppService.GetThirdTokenAsync(new ThirdTokenInDto { AppType = EAppType.Snapshot, ThirdType = EThirdType.WeChat,   LoginCode = "0c3Adhll2zDMBe413rnl2KvEym2AdhlH" }, CancellationToken.None);
-        result["PhoneNumber"].ToString().ShouldNotBeNullOrEmpty();
+        var result = await _identityAppService.GetThirdTokenAsync(new ThirdTokenInDto { AppType = EAppType.Snapshot, ThirdType = EThirdType.Test,   LoginCode = "测试生成的OpenId" }, CancellationToken.None);
+        result["phoneNumber"].ToString().ShouldNotBeNullOrEmpty();
     }
 
     [Fact]
@@ -527,7 +527,8 @@ public class SnapshotApplicationTest : TestBase
     [Fact]
     public async Task Snapshot_Test()
     {
-        var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin)
+        SetSettingCache(SettingConstants.OvertimeBack, "4");
+        var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin, "安全隐患")
             .办理到网格员(SetZuoXi)
             .GetCreateResult();
         await _snapshotApplication.PostOrderGuiderSystemAsync(order.Id, CancellationToken.None);

+ 1 - 1
test/Hotline.Tests/Application/SystemSettingCacheManagerTest.cs

@@ -35,7 +35,7 @@ public class SystemSettingCacheManagerTest : TestBase
     public void CancelPublishOrderEnabled_Test()
     {
         var dd = DateTime.Parse("11/19/2024 18:08:00");
-        _systemSettingCacheManager.CallSyncUnPushDateTime.ShouldBe(DateTime.Parse("2024/11/19 18:08:00"));
+        _systemSettingCacheManager.CallSyncUnPushDateTime.ShouldBe(DateTime.Parse("2025/04/11 15:40:00"));
         //var result = _systemSettingCacheManager.CancelPublishOrderEnabled;
         //result.ShouldBeTrue();
         var seconds = _systemSettingCacheManager.VisitCallDelaySecond;

+ 3 - 3
test/Hotline.Tests/Controller/OrderControllerTest.cs

@@ -249,7 +249,7 @@ public class OrderControllerTest : TestBase
     [Fact]
     public async Task OrderSnapshot_Test()
     {
-        var industryItems = await _industryRepository.Queryable().Select(d => new { d.Id, d.Name, }).ToListAsync();
+        var industryItems = await _industryRepository.Queryable().Where(m => m.Name == "文化旅游").Select(d => new { d.Id, d.Name, }).ToListAsync();
         var industry = industryItems.First();
 
         SetZuoXi();
@@ -447,8 +447,8 @@ public class OrderControllerTest : TestBase
             Remark = "单元测试标注",
             OrderIds = new List<string>()
         };
-        inDto.OrderIds.Add(_orderServiceMock.CreateSnapshotOrder(SetWeiXin).办理到工单标注(SetZuoXi).GetCreateResult().Id);
-        inDto.OrderIds.Add(_orderServiceMock.CreateSnapshotOrder(SetWeiXin).办理到工单标注(SetZuoXi).GetCreateResult().Id);
+        inDto.OrderIds.Add(_orderServiceMock.CreateSnapshotOrder(SetWeiXin, "安全隐患").办理到工单标注(SetZuoXi).GetCreateResult().Id);
+        inDto.OrderIds.Add(_orderServiceMock.CreateSnapshotOrder(SetWeiXin, "安全隐患").办理到工单标注(SetZuoXi).GetCreateResult().Id);
         Set班长();
         await _orderController.GetNextStepsWithRecommend(inDto.OrderIds.First());
         var result = await _orderController.OrderSignBathAsync(inDto);

+ 1 - 1
test/Hotline.Tests/Infrastructure/TianQueTest.cs

@@ -29,7 +29,7 @@ public class TianQueTest
         // b55dfdedba900437d486e70e5fb78ed50afaeb910a2346f16ef03af656f8bb0b
     }
 
-    [Fact]
+    //[Fact]
     public async Task PostAcceptInfo_Test()
     {
         // Arrange