admin hai 1 ano
pai
achega
2e93114690

+ 11 - 5
src/Hotline.Api/Controllers/PbxController.cs

@@ -316,13 +316,19 @@ namespace Hotline.Api.Controllers
         /// <returns></returns>
         [Permission(EPermission.Rest)]
         [HttpGet("begin-rest")]
-        public async Task BeginRest(string id)
+        public async Task BeginRest()
         {
-            if (string.IsNullOrEmpty(id))
-                throw UserFriendlyException.SameMessage("无效分机休息编号");
-            var telRest = await _telRestRepository.GetAsync(id, HttpContext.RequestAborted);
+            //TODO
+            var telRest = await _telRestRepository.GetAsync(x => !x.EndTime.HasValue && !x.StartTime.HasValue  && x.TelNo == "8029",HttpContext.RequestAborted);
+
             if (telRest == null)
-                throw new UserFriendlyException($"无效分机休息编号, telRestId: {id}", "无效分机休息编号");
+                throw new UserFriendlyException($"错误");
+
+            //if (string.IsNullOrEmpty(id))
+            //    throw UserFriendlyException.SameMessage("无效分机休息编号");
+            //var telRest = await _telRestRepository.GetAsync(id, HttpContext.RequestAborted);
+            //if (telRest == null)
+            //    throw new UserFriendlyException($"无效分机休息编号, telRestId: {id}", "无效分机休息编号");
 
             telRest.ApplyStatus = ETelRestApplyStatus.Resting;
             telRest.StartTime = DateTime.Now;

+ 54 - 24
src/Hotline.Api/Controllers/SettingController.cs

@@ -1,9 +1,14 @@
-using Hotline.Caching.Interfaces;
+using Google.Protobuf.WellKnownTypes;
+using Hotline.Caching.Interfaces;
 using Hotline.CallCenter.Manage;
 using Hotline.Permissions;
+using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Settings;
 using Hotline.Settings.TimeLimits;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Order;
 using Hotline.Share.Requests;
+using MapsterMapper;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using XF.Domain.Exceptions;
@@ -20,14 +25,16 @@ namespace Hotline.Api.Controllers
         private readonly ISystemSettingGroupRepository _systemSettingGroupRepository;
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly IDaySettingRepository _daysettingRepository;
+        private readonly IMapper _mapper;
 
-        public SettingController(IVoiceFileDomainService voiceFileDomainService, ISystemSettingRepository systemSettingsRepository, ISystemSettingGroupRepository systemSettingGroupRepository,ISystemSettingCacheManager systemSettingCacheManager,IDaySettingRepository daySettingRepository)
+        public SettingController(IVoiceFileDomainService voiceFileDomainService, ISystemSettingRepository systemSettingsRepository, ISystemSettingGroupRepository systemSettingGroupRepository,ISystemSettingCacheManager systemSettingCacheManager,IDaySettingRepository daySettingRepository, IMapper mapper)
         {
             _voiceFileDomainService = voiceFileDomainService;
             _systemSettingsRepository = systemSettingsRepository;
             _systemSettingGroupRepository = systemSettingGroupRepository;
             _systemSettingCacheManager = systemSettingCacheManager;
             _daysettingRepository = daySettingRepository;
+            _mapper = mapper;
         }
 
         /// <summary>
@@ -59,39 +66,62 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <returns></returns>
         [Permission(EPermission.GetSysSettingsAsync)]
-        [HttpGet("getsyssettings")]
-        public async Task<List<SystemSettingGroup>> GetSysSettingsAsync()
+        [HttpPost("getsyssettings")]
+        public async Task<PagedDto<SystemSetting>> GetSysSettingsAsync([FromQuery]SettingsQueryDto dto)
         {
-           //return await _systemSettingsRepository.QueryAsync(x => true);
+            //return await _systemSettingsRepository.QueryAsync(x => true);
 
-           return await _systemSettingGroupRepository.QueryExtAsync(
-               x => true, 
-               x => x.Includes(d => d.SystemSettings.OrderBy(x=>x.Sort).ToList()),
-               x => x.OrderBy(d=>d.Sort));
+            var (total,items) = await _systemSettingsRepository.Queryable()
+                .WhereIF(!string.IsNullOrEmpty(dto.settingName), d => d.SettingName.Contains(dto.settingName))
+                .WhereIF(!string.IsNullOrEmpty(dto.code),d=>d.Code.Contains(dto.code))
+                .OrderBy(d => d.Sort)
+                .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
+            return new PagedDto<SystemSetting>(total, _mapper.Map<IReadOnlyList<SystemSetting>>(items));
         }
 
         /// <summary>
-        /// 更新配置
+        /// 获取系统参数
         /// </summary>
-        /// <param name="request"></param>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [Permission(EPermission.GetSettingEntityAsync)]
+        [HttpGet("getsetting-entity/{id}")]
+        public async Task<SystemSetting?> GetSettingEntityAsync(string id)
+        {
+            return await _systemSettingsRepository.GetAsync(id, HttpContext.RequestAborted);
+        }
+
+
+        /// <summary>
+        /// 新增系统参数
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [Permission(EPermission.AddSettingAsync)]
+        [HttpPost("setting-add")]
+        public async Task AddSettingAsync([FromBody]AddSettingDto dto)
+        {
+            var setting = _mapper.Map<SystemSetting>(dto);
+
+            await _systemSettingsRepository.AddAsync(setting, HttpContext.RequestAborted);
+        }
+
+        /// <summary>
+        /// 修改配置
+        /// </summary>
+        /// <param name="dto"></param>
         /// <returns></returns>
-        /// <exception cref="UserFriendlyException"></exception>
         [Permission(EPermission.ModifySettings)]
         [HttpPost("modifysettings")]
-        public async Task ModifySettings([FromBody] ModifySettingsRequest request)
+        public async Task ModifySettingsAsync([FromBody]ModifySettingDto  dto)
         {
-            for (int i = 0; i < request.list.Count; i++)
-            {
-                var model = await _systemSettingsRepository.GetAsync(x => x.Id == request.list[i].id,HttpContext.RequestAborted);
-                if (model != null)
-                {
-                    model.SettingValue = request.list[i].value;
-                    await _systemSettingsRepository.UpdateAsync(model, HttpContext.RequestAborted);
-                    //清除缓存
-                    _systemSettingCacheManager.DelSystemSetting(model.Code);
-                }
-            }
+            var model = await _systemSettingsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
+            if (model is null)
+                throw UserFriendlyException.SameMessage("未知配置,请刷新界面");
+
+            model = _mapper.Map<SystemSetting>(dto);
+            await _systemSettingsRepository.UpdateAsync(model, HttpContext.RequestAborted);
         }
 
         #endregion

+ 0 - 37
src/Hotline.Api/Controllers/SysController.cs

@@ -57,43 +57,6 @@ namespace Hotline.Api.Controllers
             _sysDicDataRepository = sysDicDataRepository;
         }
 
-        #region 系统参数
-
-        /// <summary>
-        /// 获取系统参数列表
-        /// </summary>
-        /// <returns></returns>
-        [Permission(EPermission.GetSysSettingsAsync)]
-        [HttpGet("getsyssettings")]
-        public async Task<List<SystemSettingGroup>> GetSysSettingsAsync()
-        {
-            return await _systemSettingGroupRepository.QueryExtAsync(x => true, x => x.Includes(d => d.SystemSettings));
-        }
-
-        /// <summary>
-        /// 更新配置
-        /// </summary>
-        /// <param name="request"></param>
-        /// <returns></returns>
-        /// <exception cref="UserFriendlyException"></exception>
-        [Permission(EPermission.ModifySettings)]
-        [HttpPost("modifysettings")]
-        public async Task ModifySettings([FromBody] ModifySettingsRequest request)
-        {
-            for (int i = 0; i < request.list.Count; i++)
-            {
-                var model = await _systemSettingsRepository.GetAsync(x => x.Id == request.list[i].id, HttpContext.RequestAborted);
-                if (model != null)
-                {
-                    model.SettingValue = request.list[i].value;
-                    await _systemSettingsRepository.UpdateAsync(model, HttpContext.RequestAborted);
-                }
-            }
-        }
-
-
-        #endregion
-
         #region 菜单管理
         /// <summary>
         /// 获取菜单

+ 23 - 2
src/Hotline.Share/Requests/SettingsRequest.cs

@@ -1,9 +1,30 @@
 
+using Hotline.Settings;
+
 namespace Hotline.Share.Requests
 {
-    public record ModifySettingsRequest(List<ModifySettingsModel> list);
+    public record class SettingsQueryDto: PagedRequest
+    {
+        public string settingName { get; set; }
+
+        public string code { get; set; }
+    }
+
+    public record class AddSettingDto
+    {
+        public string Code { get; set; }
+
+        public string SettingName { get; set; }
+
+        public string SettingValue { get; set; }
+
+        public int Sort { get; set; }
+    }
 
-    public record ModifySettingsModel(string id, string value);
+    public record class ModifySettingDto:AddSettingDto
+    {
+        public string Id { get; set; }
+    }
 
 
     public record SetDaySettingsRequest(List<DateTime> list,bool isWorkDay);

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

@@ -131,6 +131,19 @@ namespace Hotline.Permissions
         [Display(GroupName = "系统设置", Name = "更新设置", Description = "更新设置")]
         ModifySettings = 100301,
 
+        /// <summary>
+        /// 获取系统参数对象
+        /// </summary>
+        [Display(GroupName ="系统设置",Name ="获取系统参数对象",Description = "获取系统参数对象")]
+        GetSettingEntityAsync = 100302,
+
+        /// <summary>
+        /// 新增系统参数
+        /// </summary>
+        [Display(GroupName ="系统设置",Name = "新增系统参数",Description = "新增系统参数")]
+        AddSettingAsync = 100303,
+
+
         #endregion
         #region 菜单管理(100400)
         /// <summary>

+ 1 - 17
src/Hotline/Settings/SystemSetting.cs

@@ -8,11 +8,6 @@ namespace Hotline.Settings
     [Description("系统参数")]
     public class SystemSetting:CreationEntity
     {
-        /// <summary>
-        /// 分组ID
-        /// </summary>
-        public string SystemSettingGroupId { get; set; }
-
         /// <summary>
         /// 编码
         /// </summary>
@@ -23,21 +18,10 @@ namespace Hotline.Settings
         /// </summary>
         public string SettingName { get; set; }
 
-        /// <summary>
-        /// 预设值
-        /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(4000)", IsNullable = true)]
-        public string PresetValue { get; set; }
-
-        /// <summary>
-        /// 值类型
-        /// </summary>
-        public EValueType ValueType { get; set; }
-
         /// <summary>
         /// 值
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(4000)", IsNullable = true)]
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
         public string SettingValue { get; set; }
 
         /// <summary>

+ 1 - 1
src/Hotline/Settings/SystemSettingGroup.cs

@@ -21,7 +21,7 @@ namespace Hotline.Settings
         /// <summary>
         /// 分组
         /// </summary>
-        [Navigate(NavigateType.OneToMany, nameof(SystemSetting.SystemSettingGroupId))]
+       
         public List<SystemSetting> SystemSettings { get; set; }
 
         /// <summary>