using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using CNet.Main.BLL; using CNet.Main.Model; using CNet.Model; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace CNet.Web.Api.Controllers { [Authorize] [Produces("application/json")] [Route("api/PubFunction")] public class PubFunctionController : BaseController { Pub_FunctionBLL bll = new Pub_FunctionBLL(); V_Pubfunction_ParentBLL functionParentBLL = new V_Pubfunction_ParentBLL(); [HttpPost] [Route("GetList")] public DataRes> GetList() { var depts = bll.GetList("StopFlag=0", " sortidx asc"); return new DataRes>() { data = depts }; } /// /// 获取子权限列表 /// /// /// [HttpPost] [Route("GetChildList")] [Route("GetChildList/{code}")] public DataRes> GetChildList(string code = "FC001") { // var depts = functionParentBLL.GetList(string.Format(" StopFlag=0 And FunctionCode IN (Select FunctionCode From f_SearchChildFunction('{0}'))", code), " FunctionCode "); var depts = bll.GetChildFunction(code); return new DataRes>() { data = depts }; } /// /// 添加 /// /// [Route("Add")] [HttpPost] public DataRes Add([FromBody]Pub_Function model) { DataRes res = new DataRes() { code = ResCode.Success, data = true }; model.FunctionCode = bll.GetCode(model.ParentCode); model.editdate = DateTime.Now; var user = User.GetCNetUser(); model.editor = string.Format("{0}-{1}", user.UserCode, user.UserName); model.StopFlag = false; var r = bll.Insert(model); return res; } /// /// 编辑 /// /// [Route("Edit")] [HttpPost] public DataRes Edit([FromBody]Pub_Function model) { DataRes res = new DataRes() { code = ResCode.Success, data = true }; model.editdate = DateTime.Now; var user = User.GetCNetUser(); model.editor = string.Format("{0}-{1}", user.UserCode, user.UserName); var r = bll.Update(model); if (!r) { res.code = ResCode.Error; res.data = false; res.msg = "保存失败"; } return res; } /// /// 删除 /// /// [Route("Delete/{id}")] [HttpPost] public DataRes Delete(string id) { DataRes res = new DataRes() { code = ResCode.Success, data = true }; var r = bll.ChangeSotpStatus("FunctionCode='" + id + "'"); if (!r) { res.code = ResCode.Error; res.data = false; res.msg = "删除失败"; } return res; } /// /// 获取左侧菜单 /// /// [Route("GetMenu")] [HttpPost] //[AllowAnonymous]//添加这个属性后获取不到User public DataRes> GetMenu() { List menus = new List(); DataRes> res = new DataRes>() { code = ResCode.Success, data = menus }; List functions = bll.GetMenu(User.GetCNetUser().UserCode); List functionsRoot = functions.Where(p=>p.FunctionCode.Length==5).ToList(); foreach (var item in functionsRoot) { Menu menu = GetMenuItem(item); var children= GetMenuChild(functions, item.FunctionCode); if (children != null && children.Count > 0) { menu.children = children; } menus.Add(menu); } return res; } /// /// 菜单明细项 /// /// /// private Menu GetMenuItem(Pub_Function item) { Menu menu = new Menu(); menu.path = item.RouterPath; menu.name = item.FunctionEnglish; menu.meta = new Menu.Meta() { icon = item.MenuIcon, notCache = !item.IsCache.Value, title = item.FunctionChina, access=new List(){item.FunctionCode} }; menu.component = item.URLString; return menu; } /// /// 菜单子项 /// /// /// /// private List GetMenuChild(List functions, string parentCode) { List menus = new List(); var childrenFun = functions.Where(p => p.ParentCode == parentCode); if (childrenFun == null || childrenFun.Count() <= 0) { return menus; } foreach (var item in childrenFun) { Menu menu = GetMenuItem(item); var children = GetMenuChild(functions, item.FunctionCode); if (children!=null&&children.Count>0) { menu.children = children; } menus.Add(menu); } return menus; } public class Menu { /// /// 路由路径 /// public string path { get; set; } /// /// 名称 /// public string name { get; set; } public Meta meta { get; set; } /// /// 子组件 /// public List children { get; set; } public class Meta { /// /// 图标 /// public string icon { get; set; } /// /// 不缓存 /// public bool? notCache { get; set; } /// /// 标题 /// public string title { get; set; } /// /// 权限列表 /// public List access { get; set; } } public string component { get; set; } } } }