소스 검색

Merge branch 'master' of http://git.fwt.com/Hotline/hotline

TANG JIANG 2 년 전
부모
커밋
3a920d91d7

+ 15 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -180,7 +180,21 @@ public class OrderController : BaseController
     [HttpPut]
     public async Task Update([FromBody] UpdateOrderDto dto)
     {
-        var order = _mapper.Map<Order>(dto);
+        var order = await _orderRepository.Queryable()
+            .Includes(d => d.OrderComplain)
+            .Includes(d => d.OrderReport)
+            .FirstAsync(d => d.Id == dto.Id);
+        if (order == null)
+            throw UserFriendlyException.SameMessage("无效工单编号");
+        if (order.Status != EOrderStatus.Temporary || !string.IsNullOrEmpty(order.WorkflowId))
+            throw UserFriendlyException.SameMessage("工单已发起流程");
+
+        if (order.OrderComplain is not null)
+            await _orderRepository.RemoveOrderComplainAsync(order.OrderComplain, HttpContext.RequestAborted);
+        if (order.OrderReport is not null)
+            await _orderRepository.RemoveOrderReportAsync(order.OrderReport, HttpContext.RequestAborted);
+
+        _mapper.Map(dto, order);
         await _orderRepository.UpdateOrderNavAsync(order, HttpContext.RequestAborted);
     }
 

+ 2 - 46
src/Hotline.Api/Controllers/TestController.cs

@@ -207,55 +207,11 @@ public class TestController : BaseController
     }
 
     [HttpGet("rsa")]
-    public async Task Rsa()
+    public async Task<string> Rsa()
     {
         var keyList = RsaKeyGenerator.Pkcs1Key(2048, true);
         var privateKey = keyList[0];
         var publicKey = keyList[1];
-    }
-
-    [HttpPost("dersa")]
-    public async Task DeRsa([FromBody] string str)
-    {
-        var pubKey = @"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgw+/x6IQPkH0A4eoF63j
-kLThsOXWyNBdcL9LATGy/G1yTHOr1RyKJB//iNug+V8DIoIHuFTlhgLHDbSqxvRW
-MONxIIF289riS6bDI4Ox/pFmOfmElFRk0lKGihaTE2Aefd6g/N+RfLLaHWztY+/v
-oVeDTiOIw9y3tokIxjKwuJ/mQ66MkKh78AqQjjSD/3jcBP8ZhMyCJOK9XQcqvhD6
-WBFWkxlAqKOWggDU7YohfrbNkg3bd0oGE6zCE2EHhkcQbzGCh3lu1zf4TfKMXD+P
-Prr5JWDNYQTXFQklqgae+Puge7xxZGYRoi5YpIUnkQGm6zpPxhIOdxlz+Yb5geSJ
-UQIDAQAB
------END PUBLIC KEY-----";
-        var priKey = @"-----BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAgw+/x6IQPkH0A4eoF63jkLThsOXWyNBdcL9LATGy/G1yTHOr
-1RyKJB//iNug+V8DIoIHuFTlhgLHDbSqxvRWMONxIIF289riS6bDI4Ox/pFmOfmE
-lFRk0lKGihaTE2Aefd6g/N+RfLLaHWztY+/voVeDTiOIw9y3tokIxjKwuJ/mQ66M
-kKh78AqQjjSD/3jcBP8ZhMyCJOK9XQcqvhD6WBFWkxlAqKOWggDU7YohfrbNkg3b
-d0oGE6zCE2EHhkcQbzGCh3lu1zf4TfKMXD+PPrr5JWDNYQTXFQklqgae+Puge7xx
-ZGYRoi5YpIUnkQGm6zpPxhIOdxlz+Yb5geSJUQIDAQABAoIBAAe+312BKUbsp0BV
-fOyCqoTLqTJHBcBneWY86pte9bjaZQYPU1PsdF452o8a38gXwpErBcwcjwCyWv48
-iQKUv8qdiSWGe+Jh3hGM1lKGfsyl3i3wnlJqgcI2U1zc2a4BoREHnmm4yBnfs2lI
-HegpRCG7u3cGPZfJtxJyxdHPfsc3wk8sXt+Byqkuym87l0a8wEF7b33f2hP2R7m/
-37qYvTaGX3yN4s1rssQ3wBEfHEsesQmrQrEkRIUnWfgpkH3FdR5T1V4USC6GhM6x
-sIxqwBBYLL2LhVcNEifegqHtLZOw0VfUfpvoKnH5omSjUP5X+c8dmY9KPoKGpYFT
-l09fiRMCgYEAwSAmJr8G/xOCPtkRZ9qpxOwAeqA9iEhB3ViIydESrYMZGUaIKAWV
-ofOuDIdaMgW/2hyQtJasAnlX87Za7iODcBAMMAPSNiLEXk9nHWO+Xw/oMakgS5Dg
-uE2J02Bn4KFTCGALtfo70A40kkikkR2UdD4RG6j+DgI2JxxrCgaKiIMCgYEArbrv
-cvJs62LlvOFdVCY3mWEJkoBbStHGq2GdtZ5Rx9oNqiy3j/xT7Wav061OPCaC2rcd
-ALEH7AA3JJtAMr6QRv3HYyd2NIrlqS6pn4tInIpqlarrnVkkOk0WhsWVkScQJyx6
-eLKQ24zEF3wHslrRpHcclCWjtQ52TmWOuUvy9psCgYAWw6BbntbHSFho6hNIJ5kt
-Uhg4XB0ErGe/HIl7KH7IHxTdStgPx6C8p0mTxnyWOuFDZ2yTLNN3sy/v1UXgniUH
-F40oN7sWkICPEVL5PuGYuPpIqEPbRGeIsfMWDF4SN1HfQdr/h1B3lMUTnSZwyIjQ
-LuS7Wu8fXZlegNYJJ3462wKBgE5TSF9vktGw/djhVj15GXoKONGXExGxcDuWQA9A
-+Kf81EpT7NJ6tbADquPpb6tIxZgsFGRabDLnifT0FcaLCesnwXwfr3hS4uYaxpjK
-qAsDkLg3nhCLvvyWAsDyVdNiZDL1J6ZBA3Qoi8P2xFWSApB+ryDPs3YOtiH0QZui
-9UBfAoGBAIQ2uv4J7ql++EpNNtLzOhTEpyjWS+qRSZRRXfKN2lm7e7czOsSpKIJx
-Q9PP8NTEmKqdI3WVFYqW/OlOFC6sjiscTOOn9Tc5Mrcn8ocCjAPjkhkCCVRMiJnv
-jxrWXHbT1FB6DqkdOnBbQqS1Azqz5HxLlSyEK3F60e3SgB5iZsDZ
------END RSA PRIVATE KEY-----";
-        var pkcs1 = new RsaPkcs1Util(Encoding.UTF8, pubKey, priKey);
-        //pkcs1.Decrypt(str, RSAEncryptionPadding.OaepSHA256);
-        //pkcs1.Decrypt(str, RSAEncryptionPadding.OaepSHA1);
-        pkcs1.Decrypt(str, RSAEncryptionPadding.Pkcs1);
+        return $"{publicKey} \r\n {privateKey}";
     }
 }

+ 4 - 0
src/Hotline.Repository.SqlSugar/DataPermissions/DataPermissionFilterBuilder.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Enums.Settings;
 using System.Linq.Expressions;
+using Hotline.SeedData;
 using SqlSugar;
 using XF.Domain.Authentications;
 using XF.Domain.Dependency;
@@ -44,6 +45,9 @@ public class DataPermissionFilterBuilder : IDataPermissionFilterBuilder, IScopeD
     {
         var userId = _sessionContext.RequiredUserId;
         var orgCode = _sessionContext.RequiredOrgCode;
+        var roles = _sessionContext.Roles;
+        if (roles != null && roles.Contains(RoleSeedData.AdminRole))
+            return d => true;
 
         return d => SqlFunc.JsonArrayAny(d.AssignUserIds, userId) ||
                     SqlFunc.JsonArrayAny(d.AssignOrgCodes, orgCode);

+ 12 - 2
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -59,11 +59,11 @@ namespace Hotline.Repository.SqlSugar.Orders
             {
                 if (order.AcceptType == EAcceptType.Complain)
                 {
-                    await Db.Updateable(order.OrderComplain).ExecuteCommandAsync();
+                    await Db.Insertable(order.OrderComplain).ExecuteCommandAsync();
                 }
                 else if (order.AcceptType == EAcceptType.Report)
                 {
-                    await Db.Updateable(order.OrderReport).ExecuteCommandAsync();
+                    await Db.Insertable(order.OrderReport).ExecuteCommandAsync();
                 }
                 else
                 {
@@ -71,5 +71,15 @@ namespace Hotline.Repository.SqlSugar.Orders
                 }
             }
         }
+
+        public async Task RemoveOrderComplainAsync(OrderComplain orderComplain, CancellationToken cancellationToken)
+        {
+            await Db.Deleteable(orderComplain).ExecuteCommandAsync();
+        }
+
+        public async Task RemoveOrderReportAsync(OrderReport orderReport, CancellationToken cancellationToken)
+        {
+            await Db.Deleteable(orderReport).ExecuteCommandAsync();
+        }
     }
 }

+ 1 - 1
src/Hotline/CallCenter/Tels/Tel.cs

@@ -38,7 +38,7 @@ public class Tel : CreationSoftDeleteEntity
     public List<TelGroup> Groups { get; set; }
 }
 
-public class TelTelGroup
+public class TelTelGroup : ITable
 {
     /// <summary>
     /// 分机Id

+ 3 - 0
src/Hotline/Orders/IOrderRepository.cs

@@ -11,5 +11,8 @@ namespace Hotline.Orders
     {
         Task<string> AddOrderNavAsync(Order order, CancellationToken cancellationToken);
         Task UpdateOrderNavAsync(Order order, CancellationToken cancellationToken);
+
+        Task RemoveOrderComplainAsync(OrderComplain orderComplain, CancellationToken cancellationToken);
+        Task RemoveOrderReportAsync(OrderReport orderReport, CancellationToken cancellationToken);
     }
 }