|
-
- //
-
-
-
-
-
-
-
-
- namespace SafeCampus.System;
-
- /// <summary>
- /// <inheritdoc cref="ISpaService"/>
- /// </summary>
- public class SpaService : DbRepository<SysResource>, ISpaService
- {
- private readonly IResourceService _resourceService;
-
- public SpaService(IResourceService resourceService)
- {
- _resourceService = resourceService;
- }
-
- /// <inheritdoc/>
- public async Task<SqlSugarPagedList<SysResource>> Page(SpaPageInput input)
- {
- var query = Context.Queryable<SysResource>().Where(it => it.Category == CateGoryConst.RESOURCE_SPA)//单页
- .WhereIF(!string.IsNullOrEmpty(input.MenuType), it => it.MenuType == input.MenuType)//根据菜单类型查询
- .WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Title.Contains(input.SearchKey) || it.Path.Contains(input.SearchKey))//根据关键字查询
- .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}").OrderBy(it => it.SortCode);//排序
- var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
- return pageInfo;
- }
-
- /// <inheritdoc />
- public async Task Add(SpaAddInput input)
- {
- await CheckInput(input);//检查参数
- input.Code = RandomHelper.CreateRandomString(10);//code取随机值
- var sysResource = input.Adapt<SysResource>();//实体转换
- if (await InsertAsync(sysResource))//插入数据
- await _resourceService.RefreshCache(CateGoryConst.RESOURCE_SPA);//刷新缓存
- }
-
- /// <inheritdoc />
- public async Task Edit(SpaEditInput input)
- {
- await CheckInput(input);//检查参数
- var sysResource = input.Adapt<SysResource>();//实体转换
- if (await UpdateAsync(sysResource))//更新数据
- await _resourceService.RefreshCache(CateGoryConst.RESOURCE_SPA);//刷新缓存
- }
-
- /// <inheritdoc />
- public async Task Delete(BaseIdListInput input)
- {
- //获取所有ID
- var ids = input.Ids;
- if (ids.Count > 0)
- {
- //获取所有
- var resourceList = await _resourceService.GetListByCategory(CateGoryConst.RESOURCE_SPA);
- //找到要删除的
- var sysresources = resourceList.Where(it => ids.Contains(it.Id)).ToList();
- //查找内置单页面
- var system = sysresources.Where(it => it.Code == SysResourceConst.SYSTEM).FirstOrDefault();
- if (system != null)
- throw Oops.Bah($"不可删除系统内置单页面:{system.Title}");
- //删除菜单
- await DeleteAsync(sysresources);
- await _resourceService.RefreshCache(CateGoryConst.RESOURCE_SPA);//刷新缓存
- }
- }
-
- /// <inheritdoc />
- public async Task<SysResource> Detail(BaseIdInput input)
- {
- var sysResources = await _resourceService.GetListByCategory(CateGoryConst.RESOURCE_SPA);
- var resource = sysResources.Where(it => it.Id == input.Id).FirstOrDefault();
- return resource;
- }
-
-
- #region 方法
-
- /// <summary>
- /// 检查输入参数
- /// </summary>
- /// <param name="sysResource"></param>
- private async Task CheckInput(SysResource sysResource)
- {
- //判断菜单类型
- if (sysResource.MenuType == SysResourceConst.MENU)//如果是菜单
- {
- if (string.IsNullOrEmpty(sysResource.Name))
- {
- throw Oops.Bah("单页名称不能为空");
- }
- if (string.IsNullOrEmpty(sysResource.Component))
- {
- throw Oops.Bah("组件地址不能为空");
- }
- }
- else if (sysResource.MenuType == SysResourceConst.IFRAME || sysResource.MenuType == SysResourceConst.LINK)//如果是内链或者外链
- {
- // sysResource.Name = RandomHelper.CreateNum(10);//设置name为随机数
- sysResource.Name = null;//设置name为标题
- sysResource.Component = null;
- }
- else
- {
- throw Oops.Bah($"单页类型错误:{sysResource.MenuType}");//都不是
- }
- if (sysResource.IsHome)
- {
- var spas = await _resourceService.GetListByCategory(SysResourceConst.SPA);//获取所有单页
- if (spas.Any(it => it.IsHome && it.Id != sysResource.Id))//如果有多个主页
- {
- throw Oops.Bah("已存在首页,请取消其他主页后再试");
- }
- sysResource.IsHide = false;//如果是主页,则不隐藏
- sysResource.IsAffix = true;//如果是主页,则固定
- }
- //设置为单页
- sysResource.Category = CateGoryConst.RESOURCE_SPA;
- }
-
- #endregion 方法
- }
|