Ver Fonte

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

田爽 há 1 ano atrás
pai
commit
3cfcbe45cf

+ 12 - 1
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -182,6 +182,17 @@ namespace Hotline.Api.Controllers
             await _telApplication.SignOutAsync(_sessionContext.RequiredUserId, HttpContext.RequestAborted);
         }
 
+        /// <summary>
+        /// 下班-管理手动操作
+        /// </summary>
+        /// <param name="telNo"></param>
+        /// <returns></returns>
+        [HttpGet("off-duty-manage")]
+        public async Task OffDuty([FromQuery]string telNo)
+        {
+           await _telApplication.SignOutByTelNoAsync(telNo, HttpContext.RequestAborted);
+        }
+
         //提供关闭浏览器事件触发调用
         [HttpPost("off-duty-no-auth")]
         [AllowAnonymous]
@@ -189,7 +200,7 @@ namespace Hotline.Api.Controllers
         {
             if (string.IsNullOrEmpty(userId))
                 throw new UserFriendlyException("无效用户编号");
-            await _telApplication.SignOutAsync(userId, HttpContext.RequestAborted);
+            await _telApplication.SignOutByTelNoAsync(userId, HttpContext.RequestAborted);
         }
 
         #endregion

+ 3 - 0
src/Hotline.Application/Tels/ITelApplication.cs

@@ -13,5 +13,8 @@ namespace Hotline.Application.Tels
         /// 用户签出分机
         /// </summary>
         Task SignOutAsync(string userId, CancellationToken cancellationToken);
+
+
+        Task SignOutByTelNoAsync(string telNo, CancellationToken cancellationToken);
     }
 }

+ 18 - 0
src/Hotline.Application/Tels/TelApplication.cs

@@ -46,4 +46,22 @@ public class TelApplication : ITelApplication, IScopeDependency
         _cacheWork.Remove(work.GetKey(KeyMode.UserId));
         _cacheWork.Remove(work.GetKey(KeyMode.TelNo));
     }
+
+    public async Task SignOutByTelNoAsync(string telNo,CancellationToken cancellationToken)
+    {
+        var work = _userCacheManager.GetWorkByTelNoExp(telNo);
+        if (work is null) return;
+
+        var telRest = await _telRestRepository.GetAsync(x => x.TelNo == work.TelNo && !x.EndTime.HasValue, cancellationToken);
+        if (telRest is not null)
+        {
+            telRest.EndRest();
+            await _telRestRepository.UpdateAsync(telRest, cancellationToken);
+        }
+
+        work.OffDuty();
+        await _workRepository.UpdateAsync(work, cancellationToken);
+        _cacheWork.Remove(work.GetKey(KeyMode.UserId));
+        _cacheWork.Remove(work.GetKey(KeyMode.TelNo));
+    }
 }

+ 5 - 0
src/Hotline/Permissions/EPermission.cs

@@ -1764,6 +1764,11 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="话务管理",Name ="监听分机",Description ="监听分机")]
         ListenInTel = 800301,
+        /// <summary>
+        /// 强制下线
+        /// </summary>
+        [Display(GroupName ="话务管理",Name ="强制下线",Description ="强制下线")]
+        ForceOffDuty = 800302,
         #endregion
 
         #endregion