Files
HTCloud/HT.Cloud.Web/Controllers/ClientsDataController.cs
2023-03-03 16:07:50 +08:00

408 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
* Copyright © 2020 HT.Cloud.Framework 版权所有
* Author: HT.Cloud
* Description: WaterCloud快速开发平台
* Website
*********************************************************************************/
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HT.Cloud.Code;
using HT.Cloud.Domain;
using HT.Cloud.Domain.SystemManage;
using HT.Cloud.Service.InfoManage;
using HT.Cloud.Service.SystemManage;
using HT.Cloud.Service.SystemOrganize;
using HT.Cloud.Service.SystemSecurity;
namespace HT.Cloud.Web.Controllers
{
[HandlerLogin]
public class ClientsDataController : Controller
{
/// <summary>
/// 缓存操作类
/// </summary>
private string cacheKeyOperator = GlobalContext.SystemConfig.ProjectPrefix + "_operator_";// +登录者token
public QuickModuleService _quickModuleService { get; set; }
public NoticeService _noticeService { get; set; }
public UserService _userService { get; set; }
public ModuleService _moduleService { get; set; }
public LogService _logService { get; set; }
public RoleAuthorizeService _roleAuthorizeService { get; set; }
public ItemsDataService _itemsDetailService { get; set; }
public ItemsTypeService _itemsService { get; set; }
public SystemSetService _setService { get; set; }
public MessageService _msgService { get; set; }
/// <summary>
/// 初始数据加载请求方法
/// </summary>
/// <returns></returns>
[HttpGet]
[HandlerAjaxOnly]
[AllowAnonymous]
public async Task<ActionResult> GetClientsDataJson()
{
var data = new
{
dataItems = await this.GetDataItemList(),
authorizeButton = await this.GetMenuButtonListNew(),
moduleFields = await this.GetMenuFields(),
authorizeFields = await this.GetMenuFieldsListNew(),
};
return Content(data.ToJson());
}
/// <summary>
/// 清空缓存请求方法
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult> ClearCache()
{
try
{
if (!_setService.currentuser.IsSuperAdmin)
{
return Content(new { code = 0, msg = "此功能需要管理员权限" }.ToJson());
}
await CacheHelper.FlushAllAsync();
await OperatorProvider.Provider.EmptyCurrent("pc_");
return Content(new { code = 1, msg = "服务端清理缓存成功" }.ToJson());
}
catch (Exception)
{
return Content(new { code = 0, msg = "此功能需要管理员权限" }.ToJson());
}
}
/// <summary>
/// 模块字段权限
/// </summary>
/// <returns></returns>
private async Task<object> GetMenuFields()
{
var roleId = _userService.currentuser.RoleId;
if (roleId == null && _userService.currentuser.IsAdmin)
{
roleId = "admin";
}
else if (roleId == null && !_userService.currentuser.IsSuperAdmin)
{
roleId = "visitor";
}
Dictionary<string, bool> dictionary = new Dictionary<string, bool>();
var list = await _roleAuthorizeService.GetMenuList(roleId);
foreach (ModuleEntity item in list.Where(a => a.F_UrlAddress != null))
{
dictionary.Add(item.F_UrlAddress, item.F_IsFields ?? false);
}
return dictionary;
}
/// <summary>
/// 快捷菜单列表
/// </summary>
/// <returns></returns>
private async Task<object> GetQuickModuleList()
{
var currentuser = _userService.currentuser;
if (currentuser.UserId == null)
{
return null;
}
var userId = currentuser.UserId;
var data = await _quickModuleService.GetQuickModuleList(userId);
return data;
}
/// <summary>
/// 获取公告信息
/// </summary>
/// <returns></returns>
private async Task<object> GetNoticeList()
{
var data = (await _noticeService.GetList("")).Where(a => a.F_EnabledMark == true).OrderByDescending(a => a.F_CreatorTime).Take(6).ToList();
return data;
}
/// <summary>
/// 初始菜单列表请求方法
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult> GetInitDataJson()
{
var currentuser = _userService.currentuser;
if (currentuser.UserId == null)
{
return Content("");
}
var data = await GetMenuListNew();
return Content(data);
}
/// <summary>
/// 获取公告信息请求方法
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult> GetNoticeInfo()
{
var data = await this.GetNoticeList();
return Content(data.ToJson());
}
/// <summary>
/// 获取当前用户信息请求方法
/// </summary>
/// <returns></returns>
[HttpGet]
[HandlerAjaxOnly]
[AllowAnonymous]
public async Task<ActionResult> GetUserCode()
{
var currentuser = _userService.currentuser;
if (currentuser.UserId == null)
{
return Content("");
}
var data = await _userService.GetFormExtend(currentuser.UserId);
var msglist = await _msgService.GetUnReadListJson();
data.MsgCout = msglist.Count();
return Content(data.ToJson());
}
/// <summary>
/// 获取快捷菜单请求方法
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult> GetQuickModule()
{
try
{
var data = await this.GetQuickModuleList();
return Content(data.ToJson());
}
catch (Exception)
{
return Content("");
}
}
/// <summary>
/// 获取数据信息接口
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult> GetCoutData()
{
var currentuser = _userService.currentuser;
if (currentuser.UserId == null)
{
return Content("");
}
int usercout = (await _userService.GetUserList("")).Count();
var temp = await CacheHelper.GetAsync<OperatorUserInfo>(cacheKeyOperator + "info_" + currentuser.UserId);
int logincout = temp != null && temp.F_LogOnCount != null ? (int)temp.F_LogOnCount : 0;
int modulecout = (await _moduleService.GetList()).Where(a => a.F_EnabledMark == true && a.F_UrlAddress != null).Count();
int logcout = (await _logService.GetList()).Count();
var data = new { usercout = usercout, logincout = logincout, modulecout = modulecout, logcout = logcout };
return Content(data.ToJson());
}
/// <summary>
/// 菜单按钮信息
/// </summary>
/// <returns></returns>
private async Task<string> GetMenuListNew()
{
var currentuser = _userService.currentuser;
var roleId = currentuser.RoleId;
StringBuilder sbJson = new StringBuilder();
InitEntity init = new InitEntity();
init.homeInfo = new HomeInfoEntity();
init.homeInfo.href = GlobalContext.SystemConfig.HomePage;
init.logoInfo = new LogoInfoEntity();
var systemset = await _setService.GetForm(currentuser.CompanyId);
//修改主页及logo参数
init.logoInfo.title = systemset.F_LogoCode;
init.logoInfo.image = ".." + systemset.F_Logo;
init.menuInfo = new List<MenuInfoEntity>();
init.menuInfo = ToMenuJsonNew(await _roleAuthorizeService.GetMenuList(roleId), "0");
sbJson.Append(init.ToJson());
return sbJson.ToString();
}
/// <summary>
/// 菜单信息
/// </summary>
/// <param name="data"></param>
/// <param name="parentId"></param>
/// <returns></returns>
private List<MenuInfoEntity> ToMenuJsonNew(List<ModuleEntity> data, string parentId)
{
List<MenuInfoEntity> list = new List<MenuInfoEntity>();
List<ModuleEntity> entitys = data.FindAll(t => t.F_ParentId == parentId);
if (entitys.Count > 0)
{
foreach (var item in entitys)
{
MenuInfoEntity munu = new MenuInfoEntity();
munu.title = item.F_FullName;
munu.icon = item.F_Icon;
munu.href = item.F_UrlAddress;
switch (item.F_Target)
{
case "iframe":
munu.target = "_self";
break;
case "open":
munu.target = "_open";
break;
case "blank":
munu.target = "_blank";
break;
default:
munu.target = "_self";
break;
}
if (data.FindAll(t => t.F_ParentId == item.F_Id).Count > 0)
{
munu.child = new List<MenuInfoEntity>();
munu.child = ToMenuJsonNew(data, item.F_Id);
}
if (item.F_IsMenu == true)
{
list.Add(munu);
}
};
}
return list;
}
/// <summary>
/// 字段信息
/// </summary>
/// <returns></returns>
private async Task<object> GetDataItemList()
{
var itemdata = await _itemsDetailService.GetList();
Dictionary<string, object> dictionaryItem = new Dictionary<string, object>();
var itemlist = await _itemsService.GetList();
foreach (var item in itemlist.Where(a => a.F_EnabledMark == true).ToList())
{
var dataItemList = itemdata.FindAll(t => t.F_ItemId == item.F_Id);
Dictionary<string, string> dictionaryItemList = new Dictionary<string, string>();
foreach (var itemList in dataItemList)
{
dictionaryItemList.Add(itemList.F_ItemCode, itemList.F_ItemName);
}
dictionaryItem.Add(item.F_EnCode, dictionaryItemList);
}
return dictionaryItem;
}
/// <summary>
/// 菜单按钮信息
/// </summary>
/// <returns></returns>
private async Task<object> GetMenuButtonListNew()
{
var currentuser = _userService.currentuser;
var roleId = currentuser.RoleId;
if (roleId == null && currentuser.IsAdmin)
{
roleId = "admin";
}
else if (roleId == null && !currentuser.IsAdmin)
{
roleId = "visitor";
}
var rolelist = roleId.Split(',');
var dictionarylist = new Dictionary<string, List<ModuleButtonEntity>>();
if (currentuser.UserId == null)
{
return dictionarylist;
}
foreach (var roles in rolelist)
{
var dictionarytemp = new Dictionary<string, List<ModuleButtonEntity>>();
var data = await _roleAuthorizeService.GetButtonList(roles);
var dataModuleId = data.Where(a => a.F_ModuleId != null && a.F_ModuleId != "" && a.F_EnabledMark == true).Distinct(new ExtList<ModuleButtonEntity>("F_ModuleId"));
foreach (ModuleButtonEntity item in dataModuleId)
{
var buttonList = data.Where(t => t.F_ModuleId == item.F_ModuleId && t.F_EnabledMark == true).ToList();
dictionarytemp.Add(item.F_ModuleId, buttonList);
if (dictionarylist.ContainsKey(item.F_ModuleId))
{
dictionarylist[item.F_ModuleId].AddRange(buttonList);
dictionarylist[item.F_ModuleId] = dictionarylist[item.F_ModuleId].GroupBy(p => p.F_Id).Select(q => q.First()).ToList();
}
else
{
dictionarylist.Add(item.F_ModuleId, buttonList);
}
}
}
return dictionarylist;
}
/// <summary>
/// 菜单字段信息
/// </summary>
/// <returns></returns>
private async Task<object> GetMenuFieldsListNew()
{
var currentuser = _userService.currentuser;
var roleId = currentuser.RoleId;
if (roleId == null && currentuser.IsAdmin)
{
roleId = "admin";
}
else if (roleId == null && !currentuser.IsAdmin)
{
roleId = "visitor";
}
var rolelist = roleId.Split(',');
var dictionarylist = new Dictionary<string, List<ModuleFieldsEntity>>();
if (currentuser.UserId == null)
{
return dictionarylist;
}
foreach (var roles in rolelist)
{
var dictionarytemp = new Dictionary<string, List<ModuleFieldsEntity>>();
var data = await _roleAuthorizeService.GetFieldsList(roles);
var dataModuleId = data.Where(a => a.F_ModuleId != null && a.F_ModuleId != "" && a.F_EnabledMark == true).Distinct(new ExtList<ModuleFieldsEntity>("F_ModuleId"));
foreach (ModuleFieldsEntity item in dataModuleId)
{
var buttonList = data.Where(t => t.F_ModuleId == item.F_ModuleId && t.F_EnabledMark == true).ToList();
dictionarytemp.Add(item.F_ModuleId, buttonList);
if (dictionarylist.ContainsKey(item.F_ModuleId))
{
dictionarylist[item.F_ModuleId].AddRange(buttonList);
dictionarylist[item.F_ModuleId] = dictionarylist[item.F_ModuleId].GroupBy(p => p.F_Id).Select(q => q.First()).ToList();
}
else
{
dictionarylist.Add(item.F_ModuleId, buttonList);
}
}
}
return dictionarylist;
}
}
}