Przeglądaj źródła

统一权限验证,添加新方法和属性

注释掉了对 `DraftId` 和 `cityIds` 的验证代码。
在 `EnterExitCostDraftVisaTips` 方法中,添加了对 `TipsType` 为 2 的处理逻辑。
添加了 `EnterExitCostDraftMobileCreate` 方法,用于创建出入境费用草稿。
添加了 `_viewPermStr` 字符串,用于提示未分配查看权限。
修改了 `EnterExitCostDraftMobileParentInfo` 方法,增加了查看编辑权限的验证。
修改了多个方法,统一使用 `PermissionValidationAsync` 方法进行查看编辑权限的验证。
在 `EnterExitCostDraftMobileFeeTipsDto` 类中,删除了 `TipsType` 属性,添加了 `DraftId` 属性。
在 `EnterExitCostDraftMobileParentInfoView` 类中,添加了 `IsAssignPerm` 属性。
删除了 `MobilePermissionsValidationAsync` 方法,改为统一使用 `PermissionValidationAsync` 方法进行权限验证。
LEIYI 3 miesięcy temu
rodzic
commit
45f5844a22

+ 87 - 48
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -7531,7 +7531,7 @@ FROM
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> EnterExitCostDraftVisaTips(EnterExitCostDraftVisaTipsDto dto)
         {
-            if (dto.DraftId < 1) return Ok(JsonView(false,MsgTips.Id));
+            //if (dto.DraftId < 1) return Ok(JsonView(false,MsgTips.Id));
 
             var cityIds = await _sqlSugar.Queryable<Grp_DayAndCostDraft>()
                 .Where(x => x.IsDel == 0 && x.ParentId == dto.DraftId)
@@ -7539,14 +7539,14 @@ FROM
                 .Distinct()
                 .ToListAsync();
 
-            if (!cityIds.Any()) return Ok(JsonView(false, "请先录入出入境费用明细!"));
+            //if (!cityIds.Any()) return Ok(JsonView(false, "请先录入出入境费用明细!"));
 
             var countrys = await _sqlSugar.Queryable<Grp_NationalTravelFee>()
                 .Where(x => x.IsDel == 0 && cityIds.Contains(x.Id))
                 .Select(x => x.Country)
                 .Distinct()
                 .ToArrayAsync();
-            if (!countrys.Any()) return Ok(JsonView(false, "请先录入出入境费用明细!"));
+            //if (!countrys.Any()) return Ok(JsonView(false, "请先录入出入境费用明细!"));
 
             (decimal totalAmt, string remark) = await _visaFeeInfoRep.EnterExitCostDraftVisaTips(countrys);
 
@@ -10497,41 +10497,34 @@ WHERE
 
             if (dto.TipsType == 1)
             {
-                //默认币种显示
-                var _currencyInfos = _currencyInit;
-
-                var _currencyRate = await _juHeApi.PostItemRateAsync(_currencyInfos.Select(it => it.CurrencyCode!).ToArray());
-                List<dynamic> reteInfos = new List<dynamic>();
-                if (_currencyRate.Count > 0)
-                {
-                    foreach (var item in _currencyInfos)
-                    {
-                        var rateInfo = _currencyRate.Where(it => it.Name.Equals(item.CurrencyName)).FirstOrDefault();
-                        if (rateInfo != null)
-                        {
-                            item.Rate = Convert.ToDecimal((Convert.ToDecimal(rateInfo.FSellPri == null ? 0.00M : rateInfo.FSellPri) / 100.00M).ToString("#0.0000"));
+                return Ok(JsonView(true, "查询成功!", await GeneralMethod.EnterExitCostLiveRate()));
+            }
+            else if (dto.TipsType == 2)
+            {
+                //if (dto.DraftId < 1) return Ok(JsonView(false,MsgTips.Id));
 
-                            decimal rate1 = item.Rate;
-                            rate1 *= 1.03M;
+                var cityIds = await _sqlSugar.Queryable<Grp_DayAndCostDraft>()
+                    .Where(x => x.IsDel == 0 && x.ParentId == dto.DraftId)
+                    .Select(x => x.NationalTravelFeeId)
+                    .Distinct()
+                    .ToListAsync();
 
-                            decimal rate2 = Convert.ToDecimal(rate1.ToString("#0.00")) + 0.01M;
+                //if (!cityIds.Any()) return Ok(JsonView(false, "请先录入出入境费用明细!"));
 
-                            reteInfos.Add(new
-                            {
-                                currCode = item.CurrencyCode,
-                                currName = item.CurrencyName,
-                                rate = rate2,
-                                lastUpdateDt = rateInfo.Date + " " + rateInfo.Time
-                            });
-                        }
-                    }
-                }
+                var countrys = await _sqlSugar.Queryable<Grp_NationalTravelFee>()
+                    .Where(x => x.IsDel == 0 && cityIds.Contains(x.Id))
+                    .Select(x => x.Country)
+                    .Distinct()
+                    .ToArrayAsync();
+                //if (!countrys.Any()) return Ok(JsonView(false, "请先录入出入境费用明细!"));
 
-                return Ok(JsonView(true, "查询成功!", reteInfos));
-            }
-            else if (dto.TipsType == 2)
-            {
+                (decimal totalAmt, string remark) = await _visaFeeInfoRep.EnterExitCostDraftVisaTips(countrys);
 
+                return Ok(JsonView(true, "查询成功!", new
+                {
+                    totalAmt = totalAmt,
+                    remark = remark
+                }));
 
             }
             else if (dto.TipsType == 3)
@@ -10541,6 +10534,53 @@ WHERE
             return Ok(JsonView(false));
         }
 
+        /// <summary>
+        /// 团组模块 - 出入境费用-草稿-移动端 - 创建
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> EnterExitCostDraftMobileCreate(EnterExitCostDraftMobileCreateDto dto)
+        {
+            if (string.IsNullOrEmpty(dto.DraftName)) return Ok(JsonView(false, "草稿名称为空!"));
+            if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
+
+            var eecInfo = await _sqlSugar.Queryable<Grp_EnterExitCostDraft>().OrderByDescending(x => x.CreateTime).FirstAsync(it => it.DraftName.Equals(dto.DraftName) && it.IsDel == 0);
+            if (eecInfo != null) return Ok(JsonView(false, "草稿名称重复!"));
+
+            var rateInfos = await EnterExitCostMobileGetCurrencyInit();
+
+            var info = new Grp_EnterExitCostDraft() { 
+                DraftName = dto.DraftName,
+                CurrencyRemark = CommonFun.GetCurrencyChinaToString(rateInfos),
+                CreateUserId = dto.CurrUserId
+            };
+
+            _sqlSugar.BeginTran();
+            var draftId = await _sqlSugar.Insertable(info).ExecuteReturnIdentityAsync();
+            if (draftId < 1) {
+                _sqlSugar.RollbackTran();
+                return Ok(JsonView(false, "草稿创建失败!"));
+            }
+            //添加默认权限
+            await _enterExitCostDraftRep.InitPerm(draftId,dto.CurrUserId);
+            _sqlSugar.CommitTran();
+
+            (bool viewPerm, bool assignPerm) = await _enterExitCostDraftRep.PermissionValidationAsync(draftId, dto.CurrUserId);
+            var mobileInfo = new EnterExitCostDraftMobileParentInfoView();
+            mobileInfo.Id = draftId;
+            mobileInfo.DraftName = dto.DraftName;
+            mobileInfo.Currencys = rateInfos;
+            mobileInfo.IsAssignPerm = assignPerm;
+
+            return Ok(JsonView(mobileInfo));
+        }
+
+        /// <summary>
+        /// 出入境费用-草稿-移动端 查看编辑提示消息
+        /// </summary>
+        private static string _viewPermStr = $"未分配查看权限,如要查看,请联系市场部或国交部负责人!";
+
         /// <summary>
         /// 团组模块 - 出入境费用-草稿-移动端 - ParentInfo
         /// </summary>
@@ -10556,14 +10596,14 @@ WHERE
 
             var mobileInfo = new EnterExitCostDraftMobileParentInfoView();
             mobileInfo.Currencys = await EnterExitCostMobileGetCurrencyInit();
-            if (eecInfo == null) return Ok(mobileInfo);
+            if (eecInfo == null) return Ok(JsonView(mobileInfo));
 
-            //验证查看权限
-            (bool isView, string msg) = await _enterExitCostDraftRep.MobilePermissionsValidationAsync(dto.DraftId, dto.CurrUserId);
-            if (!isView) return Ok(JsonView(false, msg));
+            //验证查看编辑权限
+            (bool viewPerm, bool assignPerm) = await _enterExitCostDraftRep.PermissionValidationAsync(dto.DraftId, dto.CurrUserId);
+            if (!viewPerm) return Ok(JsonView(false, _viewPermStr));
 
             mobileInfo = _mapper.Map<EnterExitCostDraftMobileParentInfoView>(eecInfo);
-
+            mobileInfo.IsAssignPerm = assignPerm;
             var dayAndCostData = _sqlSugar.Queryable<Grp_DayAndCostDraft>()
                 .LeftJoin<Grp_NationalTravelFee>((dac, ntf) => dac.NationalTravelFeeId == ntf.Id)
                 .LeftJoin<Sys_SetData>((dac, ntf, sd) => dac.Currency == sd.Id)
@@ -10632,9 +10672,9 @@ WHERE
             var subTypes = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };
             if (!subTypes.Contains(dto.SubType)) return Ok(JsonView(false, $"请传入有效的subTypeId!"));
 
-            //验证查看权限
-            (bool isView, string msg) = await _enterExitCostDraftRep.MobilePermissionsValidationAsync(dto.DraftId, dto.CurrUserId);
-            if (!isView) return Ok(JsonView(false, msg));
+            //验证查看编辑权限
+            (bool viewPerm, bool assignPerm) = await _enterExitCostDraftRep.PermissionValidationAsync(dto.DraftId, dto.CurrUserId);
+            if (!viewPerm) return Ok(JsonView(false, _viewPermStr));
 
             var eecInfo = await _sqlSugar.Queryable<Grp_EnterExitCostDraft>().OrderByDescending(x => x.CreateTime).FirstAsync(it => it.Id == dto.DraftId && it.IsDel == 0);
 
@@ -10838,7 +10878,6 @@ WHERE
 
         #region op
 
-
         /// <summary>
         /// 移动端更新费用消息通知
         /// </summary>
@@ -10909,9 +10948,9 @@ WHERE
             if (dto.DraftId < 1) return Ok(JsonView(false, MsgTips.Id));
             if (dto.UserIds.Length < 1) return Ok(JsonView(false, "请传入有效的userId;"));
 
-            //验证编辑权限
-            (bool isEdit, string msg) = await _enterExitCostDraftRep.MobilePermissionsValidationAsync(dto.DraftId, dto.CurrUserId, 2);
-            if (!isEdit) return Ok(JsonView(false, msg));
+            //验证查看编辑权限
+            (bool viewPerm, bool assignPerm) = await _enterExitCostDraftRep.PermissionValidationAsync(dto.DraftId, dto.CurrUserId);
+            if (!viewPerm) return Ok(JsonView(false, _viewPermStr));
 
             var permissions = new List<Grp_EnterExitCostDraftPermission>();
             foreach (var userId in dto.UserIds)
@@ -10968,9 +11007,9 @@ WHERE
             }
             else //update
             {
-                //验证编辑权限
-                (bool isEdit, string msg) = await _enterExitCostDraftRep.MobilePermissionsValidationAsync(dto.DraftId, dto.CurrUserId, 2);
-                if (!isEdit) return Ok(JsonView(false, msg));
+                //验证查看编辑权限
+                (bool viewPerm, bool assignPerm) = await _enterExitCostDraftRep.PermissionValidationAsync(dto.DraftId, dto.CurrUserId);
+                if (!viewPerm) return Ok(JsonView(false, _viewPermStr));
 
                 var upd = await _sqlSugar.Updateable<Grp_EnterExitCostDraft>().SetColumns(x => new Grp_EnterExitCostDraft() { CurrencyRemark = currencyStr }).Where(x => x.Id == dto.DraftId).ExecuteCommandAsync();
                 if (upd < 1) return Ok(JsonView(false));

+ 6 - 1
OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDto.cs

@@ -854,7 +854,6 @@ namespace OASystem.Domain.Dtos.Groups
 
     public class EnterExitCostDraftMobileFeeTipsDto : PortDtoBase
     {
-
         /// <summary>
         /// 提示数据类型
         /// 1 实时汇率
@@ -862,6 +861,7 @@ namespace OASystem.Domain.Dtos.Groups
         /// 3 机票费用
         /// </summary>
         public int TipsType { get; set; }
+        public int DraftId { get; set; }
     }
 
     public class EnterExitCostDraftMobileParentInfoDto
@@ -871,6 +871,11 @@ namespace OASystem.Domain.Dtos.Groups
         public int CurrUserId { get; set; }
     }
 
+    public class EnterExitCostDraftMobileCreateDto
+    {
+        public string DraftName { get; set; }
+        public int CurrUserId { get; set; }
+    }
 
     #region op
 

+ 2 - 0
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostDraftView.cs

@@ -499,6 +499,8 @@ namespace OASystem.Domain.ViewModels.Groups
 
         public string DraftName { get; set; }
 
+        public bool IsAssignPerm { get; set; }
+
         #region 汇率币种
 
         /// <summary>

+ 0 - 34
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostDraftRepository.cs

@@ -168,40 +168,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return  (false, false);
         }
 
-        /// <summary>
-        /// 移动端操作权限验证
-        /// </summary>
-        /// <param name="id"></param>
-        /// <param name="currUserId"></param>
-        /// <param name="permissionType">1 查看 2 编辑</param>
-        /// <returns></returns>
-        public async Task<(bool, string)> MobilePermissionsValidationAsync(int id, int currUserId, int permissionType = 1)
-        {
-            bool status = false;
-            string msg = string.Empty;
-
-            var enterExitCostData = await _sqlSugar.Queryable<Grp_EnterExitCostDraft>().OrderByDescending(x => x.CreateTime).FirstAsync(it => it.Id == id && it.IsDel == 0);
-            if (permissionType == 1)
-            {
-                (status, bool assginPerm) = await PermissionValidationAsync(id, currUserId);//查看权限
-                if (enterExitCostData.CreateUserId == currUserId) status = true; //查看权限
-                if (!status) msg = $"未分配查看权限,如要查看,请联系市场部或国交部负责人!";
-
-                return (status, msg);
-            }
-            else if (permissionType == 2)
-            {
-                (status, bool assginPerm) = await PermissionValidationAsync(id, currUserId);//查看权限
-                if (enterExitCostData.CreateUserId == currUserId) status = true; //查看权限
-                if (!status) msg = $"未分配查看权限,如要查看,请联系市场部或国交部负责人!";
-
-                return (status, msg);
-
-            }
-            else msg = $"请传入正确的权限验证类型!";
-            return (status, msg);
-        }
-
         /// <summary>
         /// 查询 根据 Id 查询
         /// </summary>