From d72120f788f92c0cf8e87b1c167fb8a98fc5279f Mon Sep 17 00:00:00 2001 From: zpc Date: Sat, 3 Aug 2024 07:11:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin-client/src/components.d.ts | 2 + .../hm-action-type-select.vue | 41 ++ .../hm-tenant-group-select.vue | 76 ++++ .../select-components/hm-tenant-select.vue | 2 +- .../src/core/utils/AppDictionaryCache.ts | 6 + .../cache/AppDictionaryActionTypeCache.ts | 22 ++ .../T_Category_Child_MenuService.ts | 84 ++++ .../services/system/SysDictionaryService.ts | 10 + .../apps/T_Category_Child_Menus/Index.vue | 371 ++++++++++++++++++ .../apps/T_Category_Child_Menus/Info.vue | 197 ++++++++++ .../src/views/system/sys_dictionary/Index.vue | 2 +- .../T_Category_Child_MenuService.cs | 187 +++++++++ .../Systems/SysDictionaryService.cs | 30 +- .../T_Category_Child_MenuController.cs | 111 ++++++ .../Systems/SysDictionaryController.cs | 12 + .../MiaoYu.Api.Admin/MiaoYu.Api.Admin.xml | 123 ++++++ .../Entities/Apps/T_Category_Child_Menu.cs | 65 +++ .../MiaoYu.Repository.ChatAI.Admin.xml | 50 +++ 18 files changed, 1388 insertions(+), 3 deletions(-) create mode 100644 admin-client/src/core/components/curd/select-components/hm-action-type-select.vue create mode 100644 admin-client/src/core/components/curd/select-components/hm-tenant-group-select.vue create mode 100644 admin-client/src/core/utils/cache/AppDictionaryActionTypeCache.ts create mode 100644 admin-client/src/services/apps/T_Category_Child_Menus/T_Category_Child_MenuService.ts create mode 100644 admin-client/src/views/apps/T_Category_Child_Menus/Index.vue create mode 100644 admin-client/src/views/apps/T_Category_Child_Menus/Info.vue create mode 100644 admin-server/MiaoYu.Api.Admin/ApplicationServices/Apps/MiaoYuChat/T_Category_Child_MenuService.cs create mode 100644 admin-server/MiaoYu.Api.Admin/Controllers/Apps/MiaoYuChat/T_Category_Child_MenuController.cs create mode 100644 admin-server/MiaoYu.Repository.ChatAI.Admin/Entities/Apps/T_Category_Child_Menu.cs diff --git a/admin-client/src/components.d.ts b/admin-client/src/components.d.ts index b801000..25ada05 100644 --- a/admin-client/src/components.d.ts +++ b/admin-client/src/components.d.ts @@ -84,8 +84,10 @@ declare module 'vue' { ExternalJump: typeof import('./core/components/ExternalJump.vue')['default'] FindBack: typeof import('./core/components/FindBack.vue')['default'] GenerateCron: typeof import('./core/components/GenerateCron.vue')['default'] + HmActionTypeSelect: typeof import('./core/components/curd/select-components/hm-action-type-select.vue')['default'] HmImage: typeof import('./core/components/huanmeng/hm-image.vue')['default'] HmImageTypeSelect: typeof import('./core/components/curd/select-components/hm-image-type-select.vue')['default'] + HmTenantGroupSelect: typeof import('./core/components/curd/select-components/hm-tenant-group-select.vue')['default'] HmTenantSelect: typeof import('./core/components/curd/select-components/hm-tenant-select.vue')['default'] Index: typeof import('./core/components/vue3-cron-core/Index.vue')['default'] LablesCharacters: typeof import('./core/components/characters/lables-characters.vue')['default'] diff --git a/admin-client/src/core/components/curd/select-components/hm-action-type-select.vue b/admin-client/src/core/components/curd/select-components/hm-action-type-select.vue new file mode 100644 index 0000000..d2e43e3 --- /dev/null +++ b/admin-client/src/core/components/curd/select-components/hm-action-type-select.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/admin-client/src/core/components/curd/select-components/hm-tenant-group-select.vue b/admin-client/src/core/components/curd/select-components/hm-tenant-group-select.vue new file mode 100644 index 0000000..5c80d29 --- /dev/null +++ b/admin-client/src/core/components/curd/select-components/hm-tenant-group-select.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/admin-client/src/core/components/curd/select-components/hm-tenant-select.vue b/admin-client/src/core/components/curd/select-components/hm-tenant-select.vue index 60c050d..e51754e 100644 --- a/admin-client/src/core/components/curd/select-components/hm-tenant-select.vue +++ b/admin-client/src/core/components/curd/select-components/hm-tenant-select.vue @@ -22,7 +22,7 @@ const props = withDefaults(defineProps<{ // 定义 emits const emits = defineEmits(['update:modelValue']); -// 异步获取数据并更新 options +// 异步获取数据并更新 options AppDictionaryCache.appDictionaryTenantCache.getDataListSelect().then(data => { // console.log(data); options.value?.push(...data); diff --git a/admin-client/src/core/utils/AppDictionaryCache.ts b/admin-client/src/core/utils/AppDictionaryCache.ts index 49148aa..7d72c4b 100644 --- a/admin-client/src/core/utils/AppDictionaryCache.ts +++ b/admin-client/src/core/utils/AppDictionaryCache.ts @@ -5,6 +5,7 @@ import AppDictionaryTenantCache from "./cache/AppDictionaryTenantCache"; import AppDictionaryTypesCache from "./cache/AppDictionaryTypesCache"; import AppDictionaryPersonalitysCache from "./cache/AppDictionaryPersonalitysCache"; import AppDictionaryLablesCache from "./cache/AppDictionaryLablesCache"; +import AppDictionaryActionTypeCache from "./cache/AppDictionaryActionTypeCache"; /** * 基础数据缓存类 */ @@ -33,6 +34,11 @@ class AppDictionaryCache { * 标签配置 */ static appDictionaryLablesCache: AbstractDictionaryCache = new AppDictionaryLablesCache(); + + /** + * 动作类型 + */ + static appDictionaryActionTypeCache: AbstractDictionaryCache = new AppDictionaryActionTypeCache(); } export default AppDictionaryCache; diff --git a/admin-client/src/core/utils/cache/AppDictionaryActionTypeCache.ts b/admin-client/src/core/utils/cache/AppDictionaryActionTypeCache.ts new file mode 100644 index 0000000..1888444 --- /dev/null +++ b/admin-client/src/core/utils/cache/AppDictionaryActionTypeCache.ts @@ -0,0 +1,22 @@ +import { AbstractDictionaryCache, AppDictionaryModel, _AbstractDictionaryCache } from './AbstractDictionaryCache' +import { DefaultOptionType } from "ant-design-vue/es/select"; + +/** + * 图片类型配置 + */ +class AppDictionaryActionTypeCache extends AbstractDictionaryCache { + protected code: string = "categorymenu_actiontype"; + public static _lock: Promise | null = null; + constructor() { + super(AppDictionaryActionTypeCache._lock); + } + public async getDataListSelect(): Promise { + const _data = await this.getDataList(); + return _data.map((item) => { + return { label: item.name, value: item.value, name: item.code, } as DefaultOptionType; + }); + } + +} + +export default AppDictionaryActionTypeCache; \ No newline at end of file diff --git a/admin-client/src/services/apps/T_Category_Child_Menus/T_Category_Child_MenuService.ts b/admin-client/src/services/apps/T_Category_Child_Menus/T_Category_Child_MenuService.ts new file mode 100644 index 0000000..96ca48e --- /dev/null +++ b/admin-client/src/services/apps/T_Category_Child_Menus/T_Category_Child_MenuService.ts @@ -0,0 +1,84 @@ +import Http from "@/core/utils/Http"; + +/** + * T_Category_Child_Menu服务 + */ +export default class T_Category_Child_MenuService { + + static urlPrefix = "/api/v1/admin/T_Category_Child_Menu"; + + /** + * 获取数据列表 + * @param current + * @param pageSize + * @param search + * @param searchSort + * @returns + */ + static findList(current: number, pageSize: number, search: any = {}, searchSort: any[] = []) { + return Http.post(`${this.urlPrefix}/findList`, { + page: current, + size: pageSize, + search, + searchSort + }) + } + + /** + * 删除集合数据 + * + * @param ids + * @returns + */ + static deleteList(ids: string[]) { + return Http.post(`${this.urlPrefix}/deleteList`, ids) + } + + /** + * 查询表单 + * + * @param id + * @returns + */ + static findForm(id?: string | undefined) { + return Http.get(`${this.urlPrefix}/findForm${(id ? '/' + id : '')}`) + } + + /** + * 保存表单数据 + * + * @param id + * @param formData + * @returns + */ + static saveForm(id: string | undefined, formData: any) { + return Http.post(`${this.urlPrefix}/${id ? 'update' : 'create'}`, formData) + } + + /** + * 导出 excel + * + * @param search + * @param searchSort + * @returns + */ + static exportExcel(search: any = {}, searchSort: any[] = []) { + return Http.download(`${this.urlPrefix}/exportExcel`, { + page: -1, + size: -1, + search, + searchSort + }); + } + +/** + * 修改状态 + * @param id + * @param v + * @returns + */ +static async setVisibility(id: number | undefined, v: boolean | undefined) { + return await Http.post(`${this.urlPrefix}/updateState/${id}/${(v == true ? "1" : "0")}`) +} + +} \ No newline at end of file diff --git a/admin-client/src/services/system/SysDictionaryService.ts b/admin-client/src/services/system/SysDictionaryService.ts index 31e921a..687986e 100644 --- a/admin-client/src/services/system/SysDictionaryService.ts +++ b/admin-client/src/services/system/SysDictionaryService.ts @@ -61,4 +61,14 @@ export default class SysDictionaryService { static getDictionaryByCode(code: string) { return Http.get(`${this.urlPrefix}/GetDictionaryByCode/${code}`); } + + + /** + * 获取字典集合,包含子数据 + * @param code 字典编码 + * @returns + */ + static getDictionaryByProjectCode(code: string) { + return Http.get(`${this.urlPrefix}/GetDictionaryByProjectCode/${code}`); + } } diff --git a/admin-client/src/views/apps/T_Category_Child_Menus/Index.vue b/admin-client/src/views/apps/T_Category_Child_Menus/Index.vue new file mode 100644 index 0000000..51d4afe --- /dev/null +++ b/admin-client/src/views/apps/T_Category_Child_Menus/Index.vue @@ -0,0 +1,371 @@ + + + diff --git a/admin-client/src/views/apps/T_Category_Child_Menus/Info.vue b/admin-client/src/views/apps/T_Category_Child_Menus/Info.vue new file mode 100644 index 0000000..fd4e33b --- /dev/null +++ b/admin-client/src/views/apps/T_Category_Child_Menus/Info.vue @@ -0,0 +1,197 @@ + + + diff --git a/admin-client/src/views/system/sys_dictionary/Index.vue b/admin-client/src/views/system/sys_dictionary/Index.vue index e8b1eb6..eb73d52 100644 --- a/admin-client/src/views/system/sys_dictionary/Index.vue +++ b/admin-client/src/views/system/sys_dictionary/Index.vue @@ -58,7 +58,7 @@ async function findList() { // state.total = result.data.total; // state.columns = result.data.columns; state.data = Tools.genTreeData(result.data, null); - state.expandedRowKeys =[];// result.data.map((item: any) => item.id); + state.expandedRowKeys =result.data.map((item: any) => item.id);//[];// } catch (error) { state.loading = false; } diff --git a/admin-server/MiaoYu.Api.Admin/ApplicationServices/Apps/MiaoYuChat/T_Category_Child_MenuService.cs b/admin-server/MiaoYu.Api.Admin/ApplicationServices/Apps/MiaoYuChat/T_Category_Child_MenuService.cs new file mode 100644 index 0000000..9d4b368 --- /dev/null +++ b/admin-server/MiaoYu.Api.Admin/ApplicationServices/Apps/MiaoYuChat/T_Category_Child_MenuService.cs @@ -0,0 +1,187 @@ +using MiaoYu.Repository.ChatAI.Admin.Entities; +using MiaoYu.Repository.ChatAI.Admin.Entities.Apps; + +using TencentCloud.Tsf.V20180326.Models; +namespace MiaoYu.Api.Admin.ApplicationServices.Apps; + +/// +/// 发现页类别菜单 服务 T_Category_Child_MenuService +/// +public class T_Category_Child_MenuService( + IRepository defaultRepository, + IRepository imageRepository, + IRepository character, + IRepository sysDictionary) + : ApplicationService>(defaultRepository) +{ + + + /// + /// 获取列表数据 + /// + /// + /// + public async Task FindListAsync(PagingSearchInput pagingSearchInput) + { + var query = this._defaultRepository.Select + + //项目 + .WhereIf(pagingSearchInput.Search?.TenantId != null, + w => w.TenantId == pagingSearchInput.Search.TenantId) + .WhereIf(!string.IsNullOrEmpty(pagingSearchInput.Search?.Type), + w => w.Type == pagingSearchInput.Search.Type) + + + + .OrderByDescending(w => w.Id) + .Select(w => new + { + TypeName = "", + w.TenantId, + w.Id, + w.Type, + Name = w.Name == null && w.ActionType == "Chat" ? character.Select.FirstOrDefault(it => it.Id.ToString() == w.ActionId).Name : w.Name, + w.ActionId, + w.ActionType, + ImageId = w.ImageId == 0 && w.ActionType == "Chat" ? character.Select.FirstOrDefault(it => it.Id.ToString() == w.ActionId).BgImg : w.ImageId, + w.OrderById, + w.ImageUrl, + w.IsEnabled, + w.SubTitle, + // w.LastModificationTime, + // w.CreationTime + }) + ; + + var result = await _defaultRepository.AsPagingViewAsync(query, pagingSearchInput); + + var imageIds = new List(); + result.DataSource.ForEach(it => + { + + if (it.TryGetValue("ImageId", out var bgImg)) + { + if (int.TryParse(bgImg.ToString(), out var t)) + { + imageIds.Add(t); + } + } + + + }); + var imageList = imageRepository.GetAllList(it => imageIds.Contains(it.ImageId)); + + + result.DataSource.ForEach(it => + { + if (it.TryGetValue("Type", out var type)) + { + it["TypeName"] = sysDictionary.Select.FirstOrDefault(item => item.Code == type.ToString())?.Name ?? ""; + } + if (string.IsNullOrEmpty(it["ImageUrl"]?.ToString())) + { + setImageId(it, imageList, "ImageId", "ImageUrl"); + } + + }); + return result; + } + + private void setImageId(Dictionary it, List imageList, string key, string keyurl) + { + it.TryAdd(keyurl, ""); + if (it.TryGetValue(key, out var bgImg)) + { + if (int.TryParse(bgImg.ToString(), out var t)) + { + var img = imageList.FirstOrDefault(it => it.ImageId == t); + if (img != null) + { + it[keyurl] = img.Url ?? ""; + } + } + } + } + + /// + /// 根据id数组删除 + /// + /// ids + /// + public async Task DeleteListAsync(List ids) + { + await this._defaultRepository.DeleteByIdsAsync(ids); + } + + /// + /// 查询表单数据 + /// + /// id + /// + public async Task> FindFormAsync(int id) + { + var res = new Dictionary(); + var form = await this._defaultRepository.FindByIdAsync(id); + //form = form.NullSafe(); + if (form == null) + { + form = new T_Category_Child_Menu() + { + IsEnabled = true + }; + } + //if (form.CreateTime == null || form.CreateTime == DateTime.MinValue) + //{ + // form.CreateTime = DateTime.Now; + //} + //if (form.UpdateTime == null || form.UpdateTime == DateTime.MinValue) + //{ + // form.UpdateTime = DateTime.Now; + //} + res[nameof(id)] = id; + res[nameof(form)] = form; + return res; + } + + /// + /// 保存数据 + /// + /// form + /// + public Task SaveFormAsync(T_Category_Child_Menu form) + { + return this._defaultRepository.InsertOrUpdateAsync(form); + } + + /// + /// 导出Excel + /// + /// + /// + public async Task ExportExcelAsync(PagingSearchInput pagingSearchInput) + { + pagingSearchInput.Page = -1; + var tableViewModel = await this.FindListAsync(pagingSearchInput); + return ExcelUtil.ExportExcelByPagingView(tableViewModel, null, "Id"); + } + + + /// + /// 修改状态 + /// + /// + /// + /// + + public async Task UpdateState(bool state, int id) + { + var form = await this._defaultRepository.FindByIdAsync(id); + if (form == null) + { + return false; + } + form.IsEnabled = state; + await SaveFormAsync(form); + return true; + } +} \ No newline at end of file diff --git a/admin-server/MiaoYu.Api.Admin/ApplicationServices/Systems/SysDictionaryService.cs b/admin-server/MiaoYu.Api.Admin/ApplicationServices/Systems/SysDictionaryService.cs index b10be51..7f6cbc2 100644 --- a/admin-server/MiaoYu.Api.Admin/ApplicationServices/Systems/SysDictionaryService.cs +++ b/admin-server/MiaoYu.Api.Admin/ApplicationServices/Systems/SysDictionaryService.cs @@ -162,10 +162,38 @@ public class SysDictionaryService : ApplicationService w.Code == code); if (dictionary == null) return default; - var dictionarys = await _defaultRepository.Select.Where(w => w.ParentId == dictionary.Id).ToListAsync(); + var dictionarys = await _defaultRepository.Select.Where(w => w.ParentId == dictionary.Id).OrderBy(it => it.Sort).ToListAsync(); if (!dictionarys.Any()) return default; var result = new List(); return CreateDictionaryTree(dictionary.Id, dictionarys); } + + /// + /// + /// + /// + /// + /// + public async Task> GetDictionaryByProjectCodeAsync(string tenant, string code) + { + if (string.IsNullOrWhiteSpace(tenant)) + { + MessageBox.Show("参数Code是空!"); + } + //拿到租户 + var dictionary = await _defaultRepository.FindAsync(w => w.Code == tenant); + if (dictionary == null) return default; + //拿到租户的子标签 + //var dictionarys = await _defaultRepository.Select.Where(w => w.ParentId == dictionary.Id).OrderBy(it => it.Sort).ToListAsync(); + //if (dictionarys.Count == 0) return default; + var list = await _defaultRepository.SelectNoTracking.ToListAsync(); + + //dictionarys.ForEach(_dictionary => + //{ + + //}); + //var result = new List(); + return CreateDictionaryTree(dictionary.Id, list); + } } \ No newline at end of file diff --git a/admin-server/MiaoYu.Api.Admin/Controllers/Apps/MiaoYuChat/T_Category_Child_MenuController.cs b/admin-server/MiaoYu.Api.Admin/Controllers/Apps/MiaoYuChat/T_Category_Child_MenuController.cs new file mode 100644 index 0000000..7ef0bd7 --- /dev/null +++ b/admin-server/MiaoYu.Api.Admin/Controllers/Apps/MiaoYuChat/T_Category_Child_MenuController.cs @@ -0,0 +1,111 @@ +using MiaoYu.Api.Admin.ApplicationServices.Apps; +using MiaoYu.Repository.ChatAI.Admin.Entities.Apps; +namespace MiaoYu.Api.Admin.Controllers.Apps; + +/// +/// 发现页类别菜单 控制器 +/// +[ControllerDescriptor(MenuId = "请设置菜单Id 系统菜单表中查找,如果不设置不受权限保护!", DisplayName = "发现页类别菜单")] +public class T_Category_Child_MenuController : AdminControllerBase +{ + public T_Category_Child_MenuController(T_Category_Child_MenuService defaultService) + : base(defaultService) + { + + } + + /// + /// 获取列表 + /// + /// + /// + [ActionDescriptor(PermissionFunctionConsts.Function_Display, DisplayName = "查看数据")] + [HttpPost] + public Task FindListAsync([FromBody] PagingSearchInput pagingSearchInput) + { + return this._defaultService.FindListAsync(pagingSearchInput); + } + + /// + /// 根据id数组删除 + /// + /// ids + /// + [ActionDescriptor(PermissionFunctionConsts.Function_Delete, DisplayName = "删除数据")] + [HttpPost] + public async Task DeleteListAsync([FromBody] List ids) + { + await this._defaultService.DeleteListAsync(ids); + return true; + } + + /// + /// 查询表单数据 + /// + /// id + /// + [ActionDescriptor(DisplayName = "查看表单")] + [HttpGet("{id?}")] + public Task> FindFormAsync([FromRoute] int id) + { + return this._defaultService.FindFormAsync(id); + } + + /// + /// 添加 + /// + /// + /// + [RequestLimitFilter(Duration = 1, LimitCount = 1)] + [ActionDescriptor(PermissionFunctionConsts.Function_Insert, DisplayName = "创建表单")] + [HttpPost] + [ApiCheckModel] + public Task CreateAsync([FromBody] T_Category_Child_Menu form) + { + return this._defaultService.SaveFormAsync(form); + } + + /// + /// 编辑 + /// + /// + /// + [RequestLimitFilter(Duration = 1, LimitCount = 1)] + [ActionDescriptor(PermissionFunctionConsts.Function_Update, DisplayName = "编辑表单")] + [HttpPost] + [ApiCheckModel] + public Task UpdateAsync([FromBody] T_Category_Child_Menu form) + { + return this._defaultService.SaveFormAsync(form); + } + + /// + /// 导出Excel + /// + /// + /// + [ActionDescriptor(PermissionFunctionConsts.Function_Export, DisplayName = "导出数据")] + [ApiResourceCacheFilter(10)] + [HttpPost] + public async Task ExportExcelAsync([FromBody] PagingSearchInput pagingSearchInput) + { + var data = await this._defaultService.ExportExcelAsync(pagingSearchInput); + var name = $"{PermissionUtil.GetControllerDisplayName(this.GetType())}列表数据 {DateTime.Now.ToString("yyyy-MM-dd")}.xls"; + base.HttpContext.DownLoadFile(data, Tools.GetFileContentType[".xls"].ToStr(), name); + } + + + /// + /// 修改角色状态 + /// + /// + /// + /// + [ActionDescriptor(PermissionFunctionConsts.Function_Update, DisplayName = "修改角色状态")] + [HttpPost("{id?}/{v?}")] + public async Task UpdateState([FromRoute] int id, [FromRoute] int v) + { + return await this._defaultService.UpdateState(v == 0 ? false : true, id); + } + +} \ No newline at end of file diff --git a/admin-server/MiaoYu.Api.Admin/Controllers/Systems/SysDictionaryController.cs b/admin-server/MiaoYu.Api.Admin/Controllers/Systems/SysDictionaryController.cs index 71fb48e..d3909d4 100644 --- a/admin-server/MiaoYu.Api.Admin/Controllers/Systems/SysDictionaryController.cs +++ b/admin-server/MiaoYu.Api.Admin/Controllers/Systems/SysDictionaryController.cs @@ -112,4 +112,16 @@ public class SysDictionaryController : AdminControllerBase return _defaultService.GetDictionaryByCodeAsync(code); } + /// + /// 根据编码获取 字典集合 + /// + /// + /// + [HttpGet("{tenant}")] + [AllowAnonymous] + public Task> GetDictionaryByProjectCodeAsync([FromRoute] string tenant) + { + return _defaultService.GetDictionaryByProjectCodeAsync(tenant,""); + } + } \ No newline at end of file diff --git a/admin-server/MiaoYu.Api.Admin/MiaoYu.Api.Admin.xml b/admin-server/MiaoYu.Api.Admin/MiaoYu.Api.Admin.xml index 876e528..766459d 100644 --- a/admin-server/MiaoYu.Api.Admin/MiaoYu.Api.Admin.xml +++ b/admin-server/MiaoYu.Api.Admin/MiaoYu.Api.Admin.xml @@ -195,6 +195,59 @@ + + + 发现页类别菜单 服务 T_Category_Child_MenuService + + + + + 发现页类别菜单 服务 T_Category_Child_MenuService + + + + + 获取列表数据 + + + + + + + 根据id数组删除 + + ids + + + + + 查询表单数据 + + id + + + + + 保存数据 + + form + + + + + 导出Excel + + + + + + + 修改状态 + + + + + 人物表 服务 T_CharacterService @@ -1648,6 +1701,14 @@ + + + + + + + + 功能服务 @@ -2064,6 +2125,61 @@ + + + 发现页类别菜单 控制器 + + + + + 获取列表 + + + + + + + 根据id数组删除 + + ids + + + + + 查询表单数据 + + id + + + + + 添加 + + + + + + + 编辑 + + + + + + + 导出Excel + + + + + + + 修改角色状态 + + + + + 人物表 控制器 @@ -3246,6 +3362,13 @@ + + + 根据编码获取 字典集合 + + + + 功能控制器 diff --git a/admin-server/MiaoYu.Repository.ChatAI.Admin/Entities/Apps/T_Category_Child_Menu.cs b/admin-server/MiaoYu.Repository.ChatAI.Admin/Entities/Apps/T_Category_Child_Menu.cs new file mode 100644 index 0000000..ef96ef4 --- /dev/null +++ b/admin-server/MiaoYu.Repository.ChatAI.Admin/Entities/Apps/T_Category_Child_Menu.cs @@ -0,0 +1,65 @@ +namespace MiaoYu.Repository.ChatAI.Admin.Entities.Apps; + +/// +/// 发现页类别菜单 +/// +[EntityDescription(FieldIgnored = true)] +public class T_Category_Child_Menu : DefaultEntityV4 +{ + + + /// + /// 菜单类型 => 备注: 菜单类型(banner,热门推荐,热门小说) + /// + public string? Type { get; set; } + + + /// + /// 名称 => 备注: 名称 + /// + public string? Name { get; set; } + + + /// + /// 动作I => 备注: 动作Id + /// + public string? ActionId { get; set; } + + + /// + /// 动作类型 => 备注: 动作类型 + /// + public string? ActionType { get; set; } + + + /// + /// 图片Id => 备注: 图片Id + /// + public Int32 ImageId { get; set; } + + + /// + /// 排序 => 备注: 排序 + /// + public Int32 OrderById { get; set; } + + + /// + /// 图片补位 => 备注: 图片补位 + /// + public string? ImageUrl { get; set; } + + + /// + /// 是否启用 => 备注: IsEnabled + /// + public Boolean IsEnabled { get; set; } + + + /// + /// 副标题 => 备注: SubTitle + /// + public string? SubTitle { get; set; } + + +} \ No newline at end of file diff --git a/admin-server/MiaoYu.Repository.ChatAI.Admin/MiaoYu.Repository.ChatAI.Admin.xml b/admin-server/MiaoYu.Repository.ChatAI.Admin/MiaoYu.Repository.ChatAI.Admin.xml index 5992d12..e44cf53 100644 --- a/admin-server/MiaoYu.Repository.ChatAI.Admin/MiaoYu.Repository.ChatAI.Admin.xml +++ b/admin-server/MiaoYu.Repository.ChatAI.Admin/MiaoYu.Repository.ChatAI.Admin.xml @@ -37,6 +37,56 @@ + + + 发现页类别菜单 + + + + + 菜单类型 => 备注: 菜单类型(banner,热门推荐,热门小说) + + + + + 名称 => 备注: 名称 + + + + + 动作I => 备注: 动作Id + + + + + 动作类型 => 备注: 动作类型 + + + + + 图片Id => 备注: 图片Id + + + + + 排序 => 备注: 排序 + + + + + 图片补位 => 备注: 图片补位 + + + + + 是否启用 => 备注: IsEnabled + + + + + 副标题 => 备注: SubTitle + + 人物表