SysPermissionController.cs 8.98 KB
using HHECS.Application.Enums;
using HHECS.Application.Service;
using HHECS.BllModel;
using HHECS.Infrastructure.CommonHelper;
using HHECS.Model.Entities;
using HHECS.Web.Aop;
using HHECS.WebCommon;
using HHECS.WebCommon.Entities;
using HHECS.WebCommon.Http;
using HHECS.WebCommon.Json;
using HHECS.WebCommon.SystemHelp.Log;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;

namespace HHECS.Web.Controllers
{
    /// <summary>
	/// 权限
	/// </summary>
    public class SysPermissionController : BaseController
    {
        private readonly ILogger<SysPermissionController> _logger;
        private readonly PermissionService _permissionService;
        private readonly LogService _logService;
        public SysPermissionController(ILogger<SysPermissionController> logger, PermissionService permissionService, LogService logService)
        {
            _logger = logger;
            _permissionService = permissionService;
            _logService = logService;
        }

        #region 视图功能
        /// <summary>
        /// 默认视图Action
        /// </summary>
        /// <returns></returns>
        [ResponseCache(Duration = 60)]
        public ActionResult Index()
        {
            return View();
        }
        #endregion

        #region 获取数据
        /// <summary>
        /// 加载及分页查询
        /// </summary>
        /// <param name="pageRequest">表单请求信息</param>
        /// <param name="entity">请求条件实例</param>
        /// <returns></returns>
        [HttpPost]
        public string Load(PageReq pageRequest, WebPermission entity)
        {
            return ExceptionsHelp.Instance.Execute(() =>
            {
                var response = new Response();
                var result = _permissionService.GetAllPermission("WEB");
                if (result.Success)
                {
                    int indexStart = 1 + ((pageRequest.page - 1) * pageRequest.limit);
                    int indexEnd = pageRequest.page * pageRequest.limit;
                    int currentIndex = 1;
                    List<Permission> permissions = new List<Permission>();
                    List<Permission> tempList = result.Data.OrderBy(t => t.OrderNum).ToList();
                    foreach (var item in tempList)
                    {
                        if (currentIndex >= indexStart && currentIndex <= indexEnd && item.ParentId == entity.Id)
                        {
                            permissions.Add(item);
                        }
                        currentIndex++;
                    }
                    response.Result = permissions;
                    response.Count = result.Data.Count;
                }
                return JsonHelper.Instance.Serialize(response);
            });
        }

        /// <summary>
        /// 获取所有权限
        /// <para>用于树状结构</para>
        /// </summary>
        [HttpGet]
        public string GetAllPermission()
        {
            return ExceptionsHelp.Instance.Execute(() =>
            {
                var result = _permissionService.GetAllPermission("WEB");
                List<WebPermission> permissions = new List<WebPermission>();
                result.Data.OrderBy(t => t.OrderNum).ToList().ForEach(permission =>
                {
                    var obj = ObjectHelper.TransReflection<Permission, WebPermission>(permission);
                    obj.Name = permission.PermissionName;
                    permissions.Add(obj);
                });
                return permissions.ToJson();
            });
        }

        #endregion

        #region 提交数据
        /// <summary>
        /// 新增数据
        /// </summary>
        /// <param name="Table_entity">新增实例</param>
        /// <returns></returns>
        [HttpPost]
        [XSSFilter]
        [ServiceFilter(typeof(OperLogFilter))]
        public string Ins(WebPermission Table_entity)
        {
            return ExceptionsHelp.Instance.Execute(() =>
            {
                var permission = new Permission()
                {
                    PermissionCode = Table_entity.PermissionCode,
                    PermissionName = Table_entity.PermissionName,
                    PermissionType = Table_entity.PermissionType,
                    WebUrl = Table_entity.WebUrl,
                    Url = Table_entity.Url,
                    Icon = Table_entity.Icon,
                    OrderNum = Table_entity.OrderNum,
                    Visible = Table_entity.Visible,
                    MenuType = Table_entity.MenuType,
                    MenuName = Table_entity.MenuName,
                    MenuCode = Table_entity.MenuCode,
                    ParentId = Table_entity.ParentId,
                    CreateBy = User.UserCode
                };

                BllResult<Permission> result = _permissionService.InsertOrUpdatePermission(permission);
                var response = new Response();
                if (result.Success)
                {
                    _logService.LogOperation(Title.RoleAdd, ModuleConst.Role, $"权限新增保存成功.数据:{JsonConvert.SerializeObject(permission)}", result.Code.ToString(), User.UserCode);
                }
                else
                {
                    response.ResponseError(result.Msg);
                    _logService.LogOperation(Title.RoleAdd, ModuleConst.Role, $"权限新增保存失败.数据:{JsonConvert.SerializeObject(permission)},详情:{result.Msg}", result.Code.ToString(), User.UserCode);
                }
                return JsonHelper.Instance.Serialize(response);
            });
        }

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="Table_entity">修改实例</param>
        /// <returns></returns>
        [HttpPost]
        [XSSFilter]
        [ServiceFilter(typeof(OperLogFilter))]
        public string Upd(WebPermission Table_entity)
        {
            return ExceptionsHelp.Instance.Execute(() =>
            {
                Table_entity.UpdateBy = User.UserCode;
                BllResult<Permission> result = _permissionService.InsertOrUpdatePermission(Table_entity);
                var response = new Response();
                if (result.Success)
                {
                    _logService.LogOperation(Title.RoleAdd, ModuleConst.Role, $"权限编辑保存成功.数据:{JsonConvert.SerializeObject(Table_entity)}", result.Code.ToString(), User.UserCode);
                }
                else
                {
                    response.ResponseError(result.Msg);
                    _logService.LogOperation(Title.RoleAdd, ModuleConst.Role, $"权限编辑保存失败.数据:{JsonConvert.SerializeObject(Table_entity)},详情:{result.Msg}", result.Code.ToString(), User.UserCode);
                }
                return JsonHelper.Instance.Serialize(response);
            });
        }

        [HttpPost]
        [XSSFilter]
        [ServiceFilter(typeof(OperLogFilter))]
        public string DelByIds(int[] ids)
        {
            return ExceptionsHelp.Instance.Execute(() =>
            {
                var response = new Response();
                var resultPermissions = _permissionService.GetAllPermission();
                if (resultPermissions.Success)
                {
                    List<int> permissionIds = new List<int>(ids);
                    List<Permission> permissions = resultPermissions.Data.FindAll(permission =>
                    {
                        return permissionIds.Contains(permission.Id);
                    });
                    List<Permission> permissionList = new List<Permission>();
                    foreach (Permission permission in permissions)
                    {
                        permissionList.Add(new Permission() { Id = permission.Id, PermissionName = permission.PermissionName, PermissionCode = permission.PermissionCode, PermissionType = permission.PermissionType });
                    }
                    BllResult result = _permissionService.DeletePermissionByIds(permissionIds);
                    if (result.Success)
                    {
                        _logService.LogOperation(Title.RoleDelete, ModuleConst.Role, $"权限删除成功.数据:{JsonConvert.SerializeObject(permissionList)}", result.Code.ToString(), User.UserCode);
                    }
                    else
                    {
                        response.ResponseError(result.Msg);
                        _logService.LogOperation(Title.RoleDelete, ModuleConst.Role, $"权限删除失败.数据:{JsonConvert.SerializeObject(permissionList)}.详情:{result.Msg}", result.Code.ToString(), User.UserCode);
                    }
                }
                else
                {
                    response.ResponseError(resultPermissions.Msg);
                }
                return JsonHelper.Instance.Serialize(response);
            });
        }
        #endregion

        #region 自定义方法

        #endregion
    }
}