Browse Source

feat: 用户封禁/解封

lihao
nili 7 months ago
parent
commit
48e196257b
  1. 2
      dist/_umi_route_preload_helper.af31d2ec.js
  2. 4
      dist/index.html
  3. 1
      dist/p__UserManagement.687c40f2.async.js
  4. 1
      dist/p__UserManagement.6d77584d.async.js
  5. 2
      dist/umi.a0a9fd71.js
  6. 43
      src/pages/UserManagement.tsx
  7. 15
      src/services/matrix/matrixUserController.ts
  8. 6
      src/services/matrix/typings.d.ts

2
dist/_umi_route_preload_helper.48597c5e.js → dist/_umi_route_preload_helper.af31d2ec.js

@ -1 +1 @@
!function(){"use strict";var t="/".replace(/([^/])$/,"$1/"),e=location.pathname,n=e.startsWith(t)&&decodeURI("/".concat(e.slice(t.length)));if(n){var a=document,c=a.head,r=a.createElement.bind(a),i=function(t,e,n){var a,c=e.r[t]||(null===(a=Object.entries(e.r).find((function(e){var n=e[0];return new RegExp("^".concat(n.replace(/\/:[^/]+/g,"/[^/]+").replace("/*","/.+"),"$")).test(t)})))||void 0===a?void 0:a[1]);return null==c?void 0:c.map((function(t){var a=e.f[t][1],c=e.f[t][0];return{type:c.split(".").pop(),url:"".concat(n.publicPath).concat(c),attrs:[["data-".concat(e.b),"".concat(e.p,":").concat(a)]]}}))}(n,{"p":"ant-design-pro","b":"webpack","f":[["51.a2ea1b3b.async.js",51],["63.86ff1d28.async.js",63],["134.6fc81d91.async.js",134],["169.57647c7d.async.js",169],["p__Welcome.61596037.async.js",185],["p__MoneyManagement.44667bc9.async.js",190],["247.3fe8fb10.async.js",247],["t__plugin-layout__Layout.6cae69f5.chunk.css",301],["t__plugin-layout__Layout.4594a64b.async.js",301],["p__User__Login__index.9d3ab92e.async.js",366],["p__DeviceOwnerApp.ec53e5c4.async.js",371],["390.41467286.async.js",390],["393.38316f72.async.js",393],["397.fb5f72c1.async.js",397],["427.f16a2970.async.js",427],["p__SuperAdmin.7ef997d3.async.js",455],["531.3d4ec55a.async.js",531],["539.49b7b156.async.js",539],["p__AdvRecordListV2.1e290899.async.js",542],["p__Bind.b6ee068f.async.js",557],["559.016bfdbb.async.js",559],["p__404.0c100574.async.js",571],["635.20e45f05.async.js",635],["p__App__AppManagement.e532244b.async.js",731],["804.139cd916.async.js",804],["p__AdminManagement.5e2368b3.async.js",816],["841.614ef4c0.async.js",841],["p__AdvRecordList.8e5ef22c.async.js",857],["p__UserManagement.6d77584d.async.js",903],["905.6e225d1b.async.js",905],["930.fca7adbf.async.js",930]],"r":{"/*":[21,29],"/":[2,7,8,20,22,29],"/welcome":[2,3,4,12,20,30,7,8,22,29],"/super":[0,1,2,3,6,14,15,30,7,8,20,22,29],"/adminList":[0,3,14,24,25,2,7,8,20,22,29],"/bind":[2,3,12,13,19,20,30,7,8,22,29],"/appList":[0,1,2,3,6,13,14,16,17,23,24,29,30,7,8,20,22],"/advList/:code":[0,1,2,3,14,16,17,20,24,26,27,29,30,7,8,22],"/advListV2/:code":[0,1,2,3,14,16,17,18,20,24,26,29,30,7,8,22],"/user/:code":[0,1,2,3,14,16,17,24,28,29,30,7,8,20,22],"/money/:code":[0,1,2,3,5,14,16,17,24,29,30,7,8,20,22],"/app/:code":[0,1,2,3,10,14,16,17,20,24,26,29,30,7,8,22],"/user/login":[1,2,3,9,14,16,24]}},{publicPath:"/"});null==i||i.forEach((function(t){var e,n=t.type,a=t.url;if("js"===n)(e=r("script")).src=a,e.async=!0;else{if("css"!==n)return;(e=r("link")).href=a,e.rel="preload",e.as="style"}t.attrs.forEach((function(t){e.setAttribute(t[0],t[1]||"")})),c.appendChild(e)}))}}(); !function(){"use strict";var t="/".replace(/([^/])$/,"$1/"),e=location.pathname,n=e.startsWith(t)&&decodeURI("/".concat(e.slice(t.length)));if(n){var a=document,c=a.head,r=a.createElement.bind(a),i=function(t,e,n){var a,c=e.r[t]||(null===(a=Object.entries(e.r).find((function(e){var n=e[0];return new RegExp("^".concat(n.replace(/\/:[^/]+/g,"/[^/]+").replace("/*","/.+"),"$")).test(t)})))||void 0===a?void 0:a[1]);return null==c?void 0:c.map((function(t){var a=e.f[t][1],c=e.f[t][0];return{type:c.split(".").pop(),url:"".concat(n.publicPath).concat(c),attrs:[["data-".concat(e.b),"".concat(e.p,":").concat(a)]]}}))}(n,{"p":"ant-design-pro","b":"webpack","f":[["51.a2ea1b3b.async.js",51],["63.86ff1d28.async.js",63],["134.6fc81d91.async.js",134],["169.57647c7d.async.js",169],["p__Welcome.61596037.async.js",185],["p__MoneyManagement.44667bc9.async.js",190],["247.3fe8fb10.async.js",247],["t__plugin-layout__Layout.6cae69f5.chunk.css",301],["t__plugin-layout__Layout.4594a64b.async.js",301],["p__User__Login__index.9d3ab92e.async.js",366],["p__DeviceOwnerApp.ec53e5c4.async.js",371],["390.41467286.async.js",390],["393.38316f72.async.js",393],["397.fb5f72c1.async.js",397],["427.f16a2970.async.js",427],["p__SuperAdmin.7ef997d3.async.js",455],["531.3d4ec55a.async.js",531],["539.49b7b156.async.js",539],["p__AdvRecordListV2.1e290899.async.js",542],["p__Bind.b6ee068f.async.js",557],["559.016bfdbb.async.js",559],["p__404.0c100574.async.js",571],["635.20e45f05.async.js",635],["p__App__AppManagement.e532244b.async.js",731],["804.139cd916.async.js",804],["p__AdminManagement.5e2368b3.async.js",816],["841.614ef4c0.async.js",841],["p__AdvRecordList.8e5ef22c.async.js",857],["p__UserManagement.687c40f2.async.js",903],["905.6e225d1b.async.js",905],["930.fca7adbf.async.js",930]],"r":{"/*":[21,29],"/":[2,7,8,20,22,29],"/welcome":[2,3,4,12,20,30,7,8,22,29],"/super":[0,1,2,3,6,14,15,30,7,8,20,22,29],"/adminList":[0,3,14,24,25,2,7,8,20,22,29],"/bind":[2,3,12,13,19,20,30,7,8,22,29],"/appList":[0,1,2,3,6,13,14,16,17,23,24,29,30,7,8,20,22],"/advList/:code":[0,1,2,3,14,16,17,20,24,26,27,29,30,7,8,22],"/advListV2/:code":[0,1,2,3,14,16,17,18,20,24,26,29,30,7,8,22],"/user/:code":[0,1,2,3,14,16,17,24,28,29,30,7,8,20,22],"/money/:code":[0,1,2,3,5,14,16,17,24,29,30,7,8,20,22],"/app/:code":[0,1,2,3,10,14,16,17,20,24,26,29,30,7,8,22],"/user/login":[1,2,3,9,14,16,24]}},{publicPath:"/"});null==i||i.forEach((function(t){var e,n=t.type,a=t.url;if("js"===n)(e=r("script")).src=a,e.async=!0;else{if("css"!==n)return;(e=r("link")).href=a,e.rel="preload",e.as="style"}t.attrs.forEach((function(t){e.setAttribute(t[0],t[1]||"")})),c.appendChild(e)}))}}();

4
dist/index.html

@ -7,10 +7,10 @@
<title>Ant Design Pro</title> <title>Ant Design Pro</title>
<link rel="stylesheet" href="/umi.1ca9308c.css"> <link rel="stylesheet" href="/umi.1ca9308c.css">
<script async src="/scripts/loading.js"></script> <script async src="/scripts/loading.js"></script>
<script src="/_umi_route_preload_helper.48597c5e.js"></script> <script src="/_umi_route_preload_helper.af31d2ec.js"></script>
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
<script src="/umi.85d0d09b.js"></script> <script src="/umi.a0a9fd71.js"></script>
</body> </body>
</html> </html>

1
dist/p__UserManagement.687c40f2.async.js

File diff suppressed because one or more lines are too long

1
dist/p__UserManagement.6d77584d.async.js

File diff suppressed because one or more lines are too long

2
dist/umi.85d0d09b.js → dist/umi.a0a9fd71.js

File diff suppressed because one or more lines are too long

43
src/pages/UserManagement.tsx

@ -1,8 +1,8 @@
import { ActionType, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; import { ActionType, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components';
import { useParams } from '@umijs/max'; import { useParams } from '@umijs/max';
import { Avatar, Tag } from 'antd'; import { Avatar, Flex, Popconfirm, Tag } from 'antd';
import { useEffect, useRef } from 'react'; import { useEffect, useRef } from 'react';
import { list } from '../services/matrix/matrixUserController'; import { changeStatus, list } from '../services/matrix/matrixUserController';
import { cent2Yuan, formatIncome } from '../utils/numberUtils'; import { cent2Yuan, formatIncome } from '../utils/numberUtils';
const UserManagement: React.FC = () => { const UserManagement: React.FC = () => {
@ -86,6 +86,45 @@ const UserManagement: React.FC = () => {
dataIndex: 'createdAt', dataIndex: 'createdAt',
valueType: 'dateRange', valueType: 'dateRange',
}, },
{
title: '操作',
width: 100,
hideInSearch: true,
renderText: (record: API.UserBo) => (
<Flex gap="small" wrap>
<>
{record.status === 0 && (
<Popconfirm
title="封禁用户"
description="封禁后用户将无法登录、无法获取收益"
onConfirm={async () => {
await changeStatus({ userId: record.id || 0, status: -1 });
actionRef.current?.reload();
}}
okText="确定"
cancelText="取消"
>
<a></a>
</Popconfirm>
)}
{record.status === -1 && (
<Popconfirm
title="解封用户"
description="解封后用户可以正常登录、获取收益"
onConfirm={async () => {
await changeStatus({ userId: record.id || 0, status: 0 });
actionRef.current?.reload();
}}
okText="确定"
cancelText="取消"
>
<a></a>
</Popconfirm>
)}
</>
</Flex>
),
},
]; ];
return ( return (

15
src/services/matrix/matrixUserController.ts

@ -2,6 +2,21 @@
/* eslint-disable */ /* eslint-disable */
import { request } from '@umijs/max'; import { request } from '@umijs/max';
/** 此处后端没有提供注释 POST /api/admin/user/changeStatus */
export async function changeStatus(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.changeStatusParams,
options?: { [key: string]: any },
) {
return request<API.RVoid>('/api/admin/user/changeStatus', {
method: 'POST',
params: {
...params,
},
...(options || {}),
});
}
/** 此处后端没有提供注释 POST /api/admin/user/list */ /** 此处后端没有提供注释 POST /api/admin/user/list */
export async function list(body: API.UserQuery, options?: { [key: string]: any }) { export async function list(body: API.UserQuery, options?: { [key: string]: any }) {
return request<API.RPageResultUserBo>('/api/admin/user/list', { return request<API.RPageResultUserBo>('/api/admin/user/list', {

6
src/services/matrix/typings.d.ts

@ -66,6 +66,11 @@ declare namespace API {
hide: number; hide: number;
}; };
type changeStatusParams = {
userId: number;
status: number;
};
type DateIncome = { type DateIncome = {
date?: number; date?: number;
income?: number; income?: number;
@ -456,6 +461,7 @@ declare namespace API {
inviteCode?: string; inviteCode?: string;
inviteUrl?: string; inviteUrl?: string;
env?: number; env?: number;
status?: number;
wxOpenId?: string; wxOpenId?: string;
createdAt?: number; createdAt?: number;
}; };

Loading…
Cancel
Save