From 9f4c18fe7c1b7a04c5ddfe9829523b20d12caab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=A1=E5=A4=8D=E4=B9=A0?= <2353956224@qq.com> Date: Mon, 1 Dec 2025 19:47:24 +0800 Subject: [PATCH] =?UTF-8?q?3.1.0=E7=A8=B3=E5=AE=9A=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/tenant/index.ts | 9 +- src/api/system/tenantPackage/index.ts | 4 + src/api/system/tenantagencypackage/index.ts | 49 ++ src/api/system/tenantbalance/index.ts | 83 ++++ src/api/system/tenantpoints/index.ts | 48 ++ src/locales/en.ts | 3 +- src/locales/zh-CN.ts | 3 +- src/utils/dict.ts | 4 +- src/views/Home/Index.vue | 3 +- src/views/system/tenant/TenantForm.vue | 419 ++++++++++++++---- src/views/system/tenant/index.vue | 51 ++- .../tenantPackage/TenantPackageForm.vue | 42 +- .../TenantAgencyPackageForm.vue | 233 ++++++++++ .../system/tenantagencypackage/index.vue | 200 +++++++++ .../tenantbalance/TenantBalanceForm.vue | 169 +++++++ .../components/TenantPointsForm.vue | 132 ++++++ .../components/TenantPointsList.vue | 112 +++++ src/views/system/tenantbalance/index.vue | 206 +++++++++ .../system/tenantpoints/TenantPointsForm.vue | 129 ++++++ src/views/system/tenantpoints/index.vue | 198 +++++++++ 20 files changed, 1953 insertions(+), 144 deletions(-) create mode 100644 src/api/system/tenantagencypackage/index.ts create mode 100644 src/api/system/tenantbalance/index.ts create mode 100644 src/api/system/tenantpoints/index.ts create mode 100644 src/views/system/tenantagencypackage/TenantAgencyPackageForm.vue create mode 100644 src/views/system/tenantagencypackage/index.vue create mode 100644 src/views/system/tenantbalance/TenantBalanceForm.vue create mode 100644 src/views/system/tenantbalance/components/TenantPointsForm.vue create mode 100644 src/views/system/tenantbalance/components/TenantPointsList.vue create mode 100644 src/views/system/tenantbalance/index.vue create mode 100644 src/views/system/tenantpoints/TenantPointsForm.vue create mode 100644 src/views/system/tenantpoints/index.vue diff --git a/src/api/system/tenant/index.ts b/src/api/system/tenant/index.ts index c51ec7e..5b5bdac 100644 --- a/src/api/system/tenant/index.ts +++ b/src/api/system/tenant/index.ts @@ -35,7 +35,10 @@ export interface TenantExportReqVO { export const getTenantPage = (params: TenantPageReqVO) => { return request.get({ url: '/system/tenant/page', params }) } - +// 查询租户列表(代理) +export const getTenantPageSelf = (params: TenantPageReqVO) => { + return request.get({ url: '/system/tenant/page_self', params }) +} // 查询租户详情 export const getTenant = (id: number) => { return request.get({ url: '/system/tenant/get?id=' + id }) @@ -70,3 +73,7 @@ export const deleteTenantList = (ids: number[]) => { export const exportTenant = (params: TenantExportReqVO) => { return request.download({ url: '/system/tenant/export-excel', params }) } +// 获取租户等级 +export const getSelfTenantLevel = () => { + return request.get({ url: '/system/tenant/getSelfTenantLevel' }) +} \ No newline at end of file diff --git a/src/api/system/tenantPackage/index.ts b/src/api/system/tenantPackage/index.ts index 49d9d40..962f489 100644 --- a/src/api/system/tenantPackage/index.ts +++ b/src/api/system/tenantPackage/index.ts @@ -46,3 +46,7 @@ export const deleteTenantPackageList = (ids: number[]) => { export const getTenantPackageList = () => { return request.get({ url: '/system/tenant-package/simple-list' }) } +// 获取非总后台租户套餐精简信息列表 +export const getTenantPackageListagency = () => { + return request.get({ url: '/system/tenant-agency-package/get-simple-list' }) +} diff --git a/src/api/system/tenantagencypackage/index.ts b/src/api/system/tenantagencypackage/index.ts new file mode 100644 index 0000000..8c54146 --- /dev/null +++ b/src/api/system/tenantagencypackage/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +// 代理租户套餐 VO +export interface TenantAgencyPackageVO { + id: number // 套餐编号 + name: string // 套餐名 + status: number // 租户状态(0正常 1停用) + remark: string // 备注 + menuIds: string // 关联的菜单编号 + days: number // 套餐天数 + price: number // 套餐价格 + hostslClient: number // 爬主播客户端 0 关闭 1 开启 + brotherClient: number // 爬大哥客户端 0 关闭 1 开启 + aiClient: number // AI 客户端 0 关闭 1 开启 + packageType: number // 套餐类型 +} + +// 代理租户套餐 API +export const TenantAgencyPackageApi = { + // 查询代理租户套餐分页 + getTenantAgencyPackagePage: async (params: any) => { + return await request.get({ url: `/system/tenant-agency-package/page`, params }) + }, + + // 查询代理租户套餐详情 + getTenantAgencyPackage: async (id: number) => { + return await request.get({ url: `/system/tenant-agency-package/get?id=` + id }) + }, + + // 新增代理租户套餐 + createTenantAgencyPackage: async (data: TenantAgencyPackageVO) => { + return await request.post({ url: `/system/tenant-agency-package/create`, data }) + }, + + // 修改代理租户套餐 + updateTenantAgencyPackage: async (data: TenantAgencyPackageVO) => { + return await request.put({ url: `/system/tenant-agency-package/update`, data }) + }, + + // 删除代理租户套餐 + deleteTenantAgencyPackage: async (id: number) => { + return await request.delete({ url: `/system/tenant-agency-package/delete?id=` + id }) + }, + + // 导出代理租户套餐 Excel + exportTenantAgencyPackage: async (params) => { + return await request.download({ url: `/system/tenant-agency-package/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/system/tenantbalance/index.ts b/src/api/system/tenantbalance/index.ts new file mode 100644 index 0000000..f1e01cc --- /dev/null +++ b/src/api/system/tenantbalance/index.ts @@ -0,0 +1,83 @@ +import request from '@/config/axios' + +// 租户余额 VO +export interface TenantBalanceVO { + id: number // 租户 Id + balance: number // 当前积分余额 + version: number // 乐观锁版本号 + updatedAt: Date // 更新时间 +} + +// 租户余额 API +export const TenantBalanceApi = { + // 查询租户余额分页 + getTenantBalancePage: async (params: any) => { + return await request.get({ url: `/system/tenant-balance/page`, params }) + }, + // 查询下级租户余额分页 + getSubordinateaMountPage: async (params: any) => { + return await request.get({ url: `/system/tenant-balance/get-self-subordinate-amount-page`, params }) + }, + + //查看当前余额 + getselfamount: async () => { + return await request.get({ url: `/system/tenant-balance/get-self-amount` }) + }, + + // 查询租户余额详情 + getTenantBalance: async (id: number) => { + return await request.get({ url: `/system/tenant-balance/get?id=` + id }) + }, + + // 新增租户余额 + createTenantBalance: async (data: TenantBalanceVO) => { + return await request.post({ url: `/system/tenant-balance/create`, data }) + }, + + // 修改租户余额 + updateTenantBalance: async (data: TenantBalanceVO) => { + return await request.put({ url: `/system/tenant-balance/update`, data }) + }, + + // 删除租户余额 + deleteTenantBalance: async (id: number) => { + return await request.delete({ url: `/system/tenant-balance/delete?id=` + id }) + }, + // 转账租户余额 + tenantTransfer: async (data: TenantBalanceVO) => { + return await request.post({ url: `/system/tenant-balance/transfer`, data }) + }, + addAmount: async (data: TenantBalanceVO) => { + return await request.post({ url: `/system/tenant-balance/addAmount`, data }) + }, + // 导出租户余额 Excel + exportTenantBalance: async (params) => { + return await request.download({ url: `/system/tenant-balance/export-excel`, params }) + }, + +// ==================== 子表(租户余额) ==================== + + // 获得租户余额分页 + getTenantPointsPage: async (params) => { + return await request.get({ url: `/system/tenant-points/transaction-history/page`, params }) + }, + // 新增租户余额 + createTenantPoints: async (data) => { + return await request.post({ url: `/system/tenant-balance/tenant-points/create`, data }) + }, + + // 修改租户余额 + updateTenantPoints: async (data) => { + return await request.put({ url: `/system/tenant-balance/tenant-points/update`, data }) + }, + + // 删除租户余额 + deleteTenantPoints: async (id: number) => { + return await request.delete({ url: `/system/tenant-balance/tenant-points/delete?id=` + id }) + }, + + // 获得租户余额 + getTenantPoints: async (id: number) => { + return await request.get({ url: `/system/tenant-balance/tenant-points/get?id=` + id }) + } +} \ No newline at end of file diff --git a/src/api/system/tenantpoints/index.ts b/src/api/system/tenantpoints/index.ts new file mode 100644 index 0000000..4765294 --- /dev/null +++ b/src/api/system/tenantpoints/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +// 租户积分记录 VO +export interface TenantPointsVO { + id: number // 主键 + points: number // 本次变动点数,正加负减 + balance: number // 变动后余额快照(冗余) + type: string // 变动类型,如 RECHARGE, CONSUME, TRANSFER_OUT, TRANSFER_IN + remark: string // 备注 + orderId: number // 订单 Id/业务单号 + bizNo: string // 业务流水号(转账、订单等唯一标识) + operatorId: number // 操作人 Id + targetTenantId: number // 目标租户 Id(转账使用) + createdAt: Date // 创建时间 +} + +// 租户积分记录 API +export const TenantPointsApi = { + // 查询租户积分记录分页 + getTenantPointsPage: async (params: any) => { + return await request.get({ url: `/system/tenant-points/page`, params }) + }, + + // 查询租户积分记录详情 + getTenantPoints: async (id: number) => { + return await request.get({ url: `/system/tenant-points/get?id=` + id }) + }, + + // 新增租户积分记录 + createTenantPoints: async (data: TenantPointsVO) => { + return await request.post({ url: `/system/tenant-points/create`, data }) + }, + + // 修改租户积分记录 + updateTenantPoints: async (data: TenantPointsVO) => { + return await request.put({ url: `/system/tenant-points/update`, data }) + }, + + // 删除租户积分记录 + deleteTenantPoints: async (id: number) => { + return await request.delete({ url: `/system/tenant-points/delete?id=` + id }) + }, + + // 导出租户积分记录 Excel + exportTenantPoints: async (params) => { + return await request.download({ url: `/system/tenant-points/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/locales/en.ts b/src/locales/en.ts index 54339a9..94f9d5c 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -324,7 +324,8 @@ export default { typeUpdate: 'Dict Type Eidt', dataCreate: 'Dict Data Create', dataUpdate: 'Dict Data Eidt', - fileUpload: 'File Upload' + fileUpload: 'File Upload', + transfer: 'Transfer', }, dialog: { dialog: 'Dialog', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index d837247..1f8230a 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -329,7 +329,8 @@ export default { typeCreate: '字典类型新增', typeUpdate: '字典类型编辑', dataCreate: '字典数据新增', - dataUpdate: '字典数据编辑' + dataUpdate: '字典数据编辑', + transfer: '转账', }, dialog: { dialog: '弹窗', diff --git a/src/utils/dict.ts b/src/utils/dict.ts index c2f6b94..f9d3fc8 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -255,5 +255,7 @@ export enum DICT_TYPE { SORT_STATE = 'sort_state', // 升序降序 SORT_TYPE = 'sort_type', // 排序类型 FLAG_TYPE = 'flag_type', // 旗帜 - HOSTS_KIND = 'hosts_type' // 直播类型 + HOSTS_KIND = 'hosts_type', // 直播类型 + + PAY_TYPE = 'pay_type', // 支付类型 } diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue index b81920d..84fe977 100644 --- a/src/views/Home/Index.vue +++ b/src/views/Home/Index.vue @@ -232,7 +232,7 @@ onMounted(async () => { await getAllApi() await getAllocationList() - + //用户id == 1 且 if (wsCache.get('roleRouters').find(item => item.id === 1)?.children.find(item => item.id === 100)) { await fetchAllHostsCount(1) @@ -246,6 +246,7 @@ onMounted(async () => { // 每次页面“再次显示”时都会触发(前提:该路由组件被 keep-alive 缓存) onActivated(async () => { + console.log(wsCache.get('roleRouters')) await fetchDailyHostsCount() await fetchDailyHostsCountDesc() diff --git a/src/views/system/tenant/TenantForm.vue b/src/views/system/tenant/TenantForm.vue index e0589aa..6001914 100644 --- a/src/views/system/tenant/TenantForm.vue +++ b/src/views/system/tenant/TenantForm.vue @@ -1,46 +1,46 @@ - + + + 基础信息 + - + - - - - + + + + 代理 + 租户 + + - + + - + - + + + + + + + - + + + - - - - - - - - - - - - - - - - + + @@ -48,102 +48,203 @@ - - - - + + + + + + + 套餐 & 权限 + + + + + + + + + + + + + + + + + + + + + 1天 + 3天 + 1个月 + 2个月 + 6个月 + 1年 + + + 到期时间:{{ formatExpire(formData.expireTime) }} + + + + + + + + + + - + - + - + - + + 确 定 取 消 + diff --git a/src/views/system/tenantPackage/TenantPackageForm.vue b/src/views/system/tenantPackage/TenantPackageForm.vue index 2003c9c..16e7a94 100644 --- a/src/views/system/tenantPackage/TenantPackageForm.vue +++ b/src/views/system/tenantPackage/TenantPackageForm.vue @@ -1,12 +1,6 @@ - + @@ -14,39 +8,19 @@ 全选/全不选: - + 全部展开/折叠: - + - + - + {{ dict.label }} diff --git a/src/views/system/tenantagencypackage/TenantAgencyPackageForm.vue b/src/views/system/tenantagencypackage/TenantAgencyPackageForm.vue new file mode 100644 index 0000000..7e537c8 --- /dev/null +++ b/src/views/system/tenantagencypackage/TenantAgencyPackageForm.vue @@ -0,0 +1,233 @@ + + + + + + + + + + 正常 + 停用 + + + + + + + + + + + + 全选/全不选: + + 全部展开/折叠: + + + + + + + + + + + + + + + + 开启 + 关闭 + + + + + + + 开启 + 关闭 + + + + + + + 开启 + 关闭 + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/views/system/tenantagencypackage/index.vue b/src/views/system/tenantagencypackage/index.vue new file mode 100644 index 0000000..d99c4db --- /dev/null +++ b/src/views/system/tenantagencypackage/index.vue @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/tenantbalance/TenantBalanceForm.vue b/src/views/system/tenantbalance/TenantBalanceForm.vue new file mode 100644 index 0000000..538b3ad --- /dev/null +++ b/src/views/system/tenantbalance/TenantBalanceForm.vue @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + + diff --git a/src/views/system/tenantbalance/components/TenantPointsForm.vue b/src/views/system/tenantbalance/components/TenantPointsForm.vue new file mode 100644 index 0000000..d53227f --- /dev/null +++ b/src/views/system/tenantbalance/components/TenantPointsForm.vue @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + \ No newline at end of file diff --git a/src/views/system/tenantbalance/components/TenantPointsList.vue b/src/views/system/tenantbalance/components/TenantPointsList.vue new file mode 100644 index 0000000..1e8e97a --- /dev/null +++ b/src/views/system/tenantbalance/components/TenantPointsList.vue @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/tenantbalance/index.vue b/src/views/system/tenantbalance/index.vue new file mode 100644 index 0000000..8c2df09 --- /dev/null +++ b/src/views/system/tenantbalance/index.vue @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + 新增 + + + 导出 + + + + 余额:{{ mount }} + + + + + + + + + + + + + + + + + 充值 + + + 转账 + + + 删除 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/tenantpoints/TenantPointsForm.vue b/src/views/system/tenantpoints/TenantPointsForm.vue new file mode 100644 index 0000000..4c55ea9 --- /dev/null +++ b/src/views/system/tenantpoints/TenantPointsForm.vue @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + \ No newline at end of file diff --git a/src/views/system/tenantpoints/index.vue b/src/views/system/tenantpoints/index.vue new file mode 100644 index 0000000..c05a7e0 --- /dev/null +++ b/src/views/system/tenantpoints/index.vue @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +