feat(api): 新增系统用户登录日志查询接口

- 新增查询登录日志详情接口及相关请求响应模型
- 新增查询登录日志列表接口及相关请求响应模型
- 更新 API 生成器,添加对应接口的参数创建与请求功能
- 在 DefaultApi 中实现登录日志相关接口方法
- 新增分页枚举类型以支持登录日志查询分页功能
- 替换京东 Cookie 批量校验接口命名及模型,删除废弃接口
- 移除京东订单支付状态检查相关接口及模型,简化代码结构
This commit is contained in:
danial
2025-11-12 20:26:32 +08:00
parent 32ef2187a5
commit d985ca0cca
27 changed files with 1473 additions and 470 deletions

View File

@@ -222,18 +222,13 @@ docs/KamiApiChannelV2EntranceListReq.md
docs/KamiApiChannelV2EntranceListRes.md
docs/KamiApiChannelV2EntranceParams.md
docs/KamiApiChannelV2EntranceUpdateReq.md
docs/KamiApiJdCookieV1BatchCheckReq.md
docs/KamiApiJdCookieV1BatchCheckRes.md
docs/KamiApiJdCookieV1BatchCreateReq.md
docs/KamiApiJdCookieV1BatchCreateRes.md
docs/KamiApiJdCookieV1BatchCreateResult.md
docs/KamiApiJdCookieV1BatchValidateReq.md
docs/KamiApiJdCookieV1BatchValidateRes.md
docs/KamiApiJdCookieV1BatchValidateCookieReq.md
docs/KamiApiJdCookieV1BatchValidateCookieRes.md
docs/KamiApiJdCookieV1BatchValidateResult.md
docs/KamiApiJdCookieV1CheckJdOrderPaymentReq.md
docs/KamiApiJdCookieV1CheckJdOrderPaymentRes.md
docs/KamiApiJdCookieV1CookieAccountInfo.md
docs/KamiApiJdCookieV1CookieCheckResult.md
docs/KamiApiJdCookieV1CookieDeleteResult.md
docs/KamiApiJdCookieV1CookieHistoryInfo.md
docs/KamiApiJdCookieV1CookieHistoryReq.md
@@ -342,6 +337,10 @@ docs/KamiApiSysPaymentV1SysPaymentGetRes.md
docs/KamiApiSysPaymentV1SysPaymentRecordsGetReq.md
docs/KamiApiSysPaymentV1SysPaymentRecordsGetRes.md
docs/KamiApiSysPaymentV1SysPaymentRecordsGetStatisticsRes.md
docs/KamiApiSysUserLoginLogV1LoginLogDetailReq.md
docs/KamiApiSysUserLoginLogV1LoginLogDetailRes.md
docs/KamiApiSysUserLoginLogV1LoginLogQueryReq.md
docs/KamiApiSysUserLoginLogV1LoginLogQueryRes.md
docs/KamiApiSysUserLoginV1UserLoginReq.md
docs/KamiApiSysUserLoginV1UserLoginRes.md
docs/KamiApiSysUserLoginV1UserMenus.md
@@ -393,6 +392,7 @@ docs/KamiInternalModelEntityV1RechargeTMallShop.md
docs/KamiInternalModelEntityV1RechargeTMallShopHistory.md
docs/KamiInternalModelEntityV1SysRole.md
docs/KamiInternalModelEntityV1SysUser.md
docs/KamiInternalModelEntityV1SysUserLoginLog.md
docs/KamiInternalModelEntityV1SysUserPayment.md
docs/KamiInternalModelEntityV1SysUserPaymentRecords.md
docs/KamiInternalModelUserInfo.md
@@ -610,18 +610,13 @@ models/kami-api-channel-v2-entrance-list-req.ts
models/kami-api-channel-v2-entrance-list-res.ts
models/kami-api-channel-v2-entrance-params.ts
models/kami-api-channel-v2-entrance-update-req.ts
models/kami-api-jd-cookie-v1-batch-check-req.ts
models/kami-api-jd-cookie-v1-batch-check-res.ts
models/kami-api-jd-cookie-v1-batch-create-req.ts
models/kami-api-jd-cookie-v1-batch-create-res.ts
models/kami-api-jd-cookie-v1-batch-create-result.ts
models/kami-api-jd-cookie-v1-batch-validate-req.ts
models/kami-api-jd-cookie-v1-batch-validate-res.ts
models/kami-api-jd-cookie-v1-batch-validate-cookie-req.ts
models/kami-api-jd-cookie-v1-batch-validate-cookie-res.ts
models/kami-api-jd-cookie-v1-batch-validate-result.ts
models/kami-api-jd-cookie-v1-check-jd-order-payment-req.ts
models/kami-api-jd-cookie-v1-check-jd-order-payment-res.ts
models/kami-api-jd-cookie-v1-cookie-account-info.ts
models/kami-api-jd-cookie-v1-cookie-check-result.ts
models/kami-api-jd-cookie-v1-cookie-delete-result.ts
models/kami-api-jd-cookie-v1-cookie-history-info.ts
models/kami-api-jd-cookie-v1-cookie-history-req.ts
@@ -730,6 +725,10 @@ models/kami-api-sys-payment-v1-sys-payment-get-res.ts
models/kami-api-sys-payment-v1-sys-payment-records-get-req.ts
models/kami-api-sys-payment-v1-sys-payment-records-get-res.ts
models/kami-api-sys-payment-v1-sys-payment-records-get-statistics-res.ts
models/kami-api-sys-user-login-log-v1-login-log-detail-req.ts
models/kami-api-sys-user-login-log-v1-login-log-detail-res.ts
models/kami-api-sys-user-login-log-v1-login-log-query-req.ts
models/kami-api-sys-user-login-log-v1-login-log-query-res.ts
models/kami-api-sys-user-login-v1-user-login-req.ts
models/kami-api-sys-user-login-v1-user-login-res.ts
models/kami-api-sys-user-login-v1-user-menus.ts
@@ -780,6 +779,7 @@ models/kami-internal-model-entity-v1-recharge-tmall-order.ts
models/kami-internal-model-entity-v1-recharge-tmall-shop-history.ts
models/kami-internal-model-entity-v1-recharge-tmall-shop.ts
models/kami-internal-model-entity-v1-sys-role.ts
models/kami-internal-model-entity-v1-sys-user-login-log.ts
models/kami-internal-model-entity-v1-sys-user-payment-records.ts
models/kami-internal-model-entity-v1-sys-user-payment.ts
models/kami-internal-model-entity-v1-sys-user.ts

View File

@@ -361,6 +361,10 @@ import type { KamiApiSysPaymentV1SysPaymentRecordsGetRes } from '../models';
// @ts-ignore
import type { KamiApiSysPaymentV1SysPaymentRecordsGetStatisticsRes } from '../models';
// @ts-ignore
import type { KamiApiSysUserLoginLogV1LoginLogDetailRes } from '../models';
// @ts-ignore
import type { KamiApiSysUserLoginLogV1LoginLogQueryRes } from '../models';
// @ts-ignore
import type { KamiApiSysUserLoginV1UserLoginReq } from '../models';
// @ts-ignore
import type { KamiApiSysUserLoginV1UserLoginRes } from '../models';
@@ -9873,6 +9877,138 @@ export const DefaultApiAxiosParamCreator = function (
options: localVarRequestOptions
};
},
/**
*
* @summary 查询登录日志详情
* @param {number} id
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysUserLoginLogDetailGet: async (
id: number,
options: RawAxiosRequestConfig = {}
): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('apiSysUserLoginLogDetailGet', 'id', id);
const localVarPath = `/api/sys-user-login-log/detail`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions = {
method: 'GET',
...baseOptions,
...options
};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
if (id !== undefined) {
localVarQueryParameter['id'] = id;
}
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions =
baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {
...localVarHeaderParameter,
...headersFromBaseOptions,
...options.headers
};
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions
};
},
/**
*
* @summary 查询登录日志列表
* @param {number} current 页数
* @param {ApiSysUserLoginLogListGetPageSizeEnum} pageSize 页码
* @param {string} [userId] 用户ID可选
* @param {string} [loginName] 登录名(可选)
* @param {number} [status] 登录状态1登录成功 2登录失败可选
* @param {string} [startTime] 开始时间格式为2006-01-02可选
* @param {string} [endTime] 结束时间格式为2006-01-02可选
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysUserLoginLogListGet: async (
current: number,
pageSize: ApiSysUserLoginLogListGetPageSizeEnum,
userId?: string,
loginName?: string,
status?: number,
startTime?: string,
endTime?: string,
options: RawAxiosRequestConfig = {}
): Promise<RequestArgs> => {
// verify required parameter 'current' is not null or undefined
assertParamExists('apiSysUserLoginLogListGet', 'current', current);
// verify required parameter 'pageSize' is not null or undefined
assertParamExists('apiSysUserLoginLogListGet', 'pageSize', pageSize);
const localVarPath = `/api/sys-user-login-log/list`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions = {
method: 'GET',
...baseOptions,
...options
};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
if (userId !== undefined) {
localVarQueryParameter['userId'] = userId;
}
if (loginName !== undefined) {
localVarQueryParameter['loginName'] = loginName;
}
if (status !== undefined) {
localVarQueryParameter['status'] = status;
}
if (startTime !== undefined) {
localVarQueryParameter['startTime'] = startTime;
}
if (endTime !== undefined) {
localVarQueryParameter['endTime'] = endTime;
}
if (current !== undefined) {
localVarQueryParameter['current'] = current;
}
if (pageSize !== undefined) {
localVarQueryParameter['pageSize'] = pageSize;
}
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions =
baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {
...localVarHeaderParameter,
...headersFromBaseOptions,
...options.headers
};
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions
};
},
/**
*
* @summary 充值
@@ -17048,6 +17184,92 @@ export const DefaultApiFp = function (configuration?: Configuration) {
configuration
)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary 查询登录日志详情
* @param {number} id
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysUserLoginLogDetailGet(
id: number,
options?: RawAxiosRequestConfig
): Promise<
(
axios?: AxiosInstance,
basePath?: string
) => AxiosPromise<KamiApiSysUserLoginLogV1LoginLogDetailRes>
> {
const localVarAxiosArgs =
await localVarAxiosParamCreator.apiSysUserLoginLogDetailGet(
id,
options
);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath =
operationServerMap['DefaultApi.apiSysUserLoginLogDetailGet']?.[
localVarOperationServerIndex
]?.url;
return (axios, basePath) =>
createRequestFunction(
localVarAxiosArgs,
globalAxios,
BASE_PATH,
configuration
)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary 查询登录日志列表
* @param {number} current 页数
* @param {ApiSysUserLoginLogListGetPageSizeEnum} pageSize 页码
* @param {string} [userId] 用户ID可选
* @param {string} [loginName] 登录名(可选)
* @param {number} [status] 登录状态1登录成功 2登录失败可选
* @param {string} [startTime] 开始时间格式为2006-01-02可选
* @param {string} [endTime] 结束时间格式为2006-01-02可选
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiSysUserLoginLogListGet(
current: number,
pageSize: ApiSysUserLoginLogListGetPageSizeEnum,
userId?: string,
loginName?: string,
status?: number,
startTime?: string,
endTime?: string,
options?: RawAxiosRequestConfig
): Promise<
(
axios?: AxiosInstance,
basePath?: string
) => AxiosPromise<KamiApiSysUserLoginLogV1LoginLogQueryRes>
> {
const localVarAxiosArgs =
await localVarAxiosParamCreator.apiSysUserLoginLogListGet(
current,
pageSize,
userId,
loginName,
status,
startTime,
endTime,
options
);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath =
operationServerMap['DefaultApi.apiSysUserLoginLogListGet']?.[
localVarOperationServerIndex
]?.url;
return (axios, basePath) =>
createRequestFunction(
localVarAxiosArgs,
globalAxios,
BASE_PATH,
configuration
)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary 充值
@@ -20920,6 +21142,45 @@ export const DefaultApiFactory = function (
.apiRoadSimpleGetAllGet(options)
.then(request => request(axios, basePath));
},
/**
*
* @summary 查询登录日志详情
* @param {DefaultApiApiSysUserLoginLogDetailGetRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysUserLoginLogDetailGet(
requestParameters: DefaultApiApiSysUserLoginLogDetailGetRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiSysUserLoginLogV1LoginLogDetailRes> {
return localVarFp
.apiSysUserLoginLogDetailGet(requestParameters.id, options)
.then(request => request(axios, basePath));
},
/**
*
* @summary 查询登录日志列表
* @param {DefaultApiApiSysUserLoginLogListGetRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysUserLoginLogListGet(
requestParameters: DefaultApiApiSysUserLoginLogListGetRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiSysUserLoginLogV1LoginLogQueryRes> {
return localVarFp
.apiSysUserLoginLogListGet(
requestParameters.current,
requestParameters.pageSize,
requestParameters.userId,
requestParameters.loginName,
requestParameters.status,
requestParameters.startTime,
requestParameters.endTime,
options
)
.then(request => request(axios, basePath));
},
/**
*
* @summary 充值
@@ -23358,6 +23619,30 @@ export interface DefaultApiInterface {
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiRoadV1SimpleAllGetRoadRes>;
/**
*
* @summary 查询登录日志详情
* @param {DefaultApiApiSysUserLoginLogDetailGetRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysUserLoginLogDetailGet(
requestParameters: DefaultApiApiSysUserLoginLogDetailGetRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiSysUserLoginLogV1LoginLogDetailRes>;
/**
*
* @summary 查询登录日志列表
* @param {DefaultApiApiSysUserLoginLogListGetRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiSysUserLoginLogListGet(
requestParameters: DefaultApiApiSysUserLoginLogListGetRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiSysUserLoginLogV1LoginLogQueryRes>;
/**
*
* @summary 充值
@@ -25597,6 +25882,53 @@ export interface DefaultApiApiRestrictionLocationCheckIPAllowedGetRequest {
readonly deviceId?: string;
}
/**
* Request parameters for apiSysUserLoginLogDetailGet operation in DefaultApi.
*/
export interface DefaultApiApiSysUserLoginLogDetailGetRequest {
readonly id: number;
}
/**
* Request parameters for apiSysUserLoginLogListGet operation in DefaultApi.
*/
export interface DefaultApiApiSysUserLoginLogListGetRequest {
/**
* 页数
*/
readonly current: number;
/**
* 页码
*/
readonly pageSize: ApiSysUserLoginLogListGetPageSizeEnum;
/**
* 用户ID可选
*/
readonly userId?: string;
/**
* 登录名(可选)
*/
readonly loginName?: string;
/**
* 登录状态1登录成功 2登录失败可选
*/
readonly status?: number;
/**
* 开始时间格式为2006-01-02可选
*/
readonly startTime?: string;
/**
* 结束时间格式为2006-01-02可选
*/
readonly endTime?: string;
}
/**
* Request parameters for apiSysUserPaymentAddPost operation in DefaultApi.
*/
@@ -29099,6 +29431,47 @@ export class DefaultApi extends BaseAPI implements DefaultApiInterface {
.then(request => request(this.axios, this.basePath));
}
/**
*
* @summary 查询登录日志详情
* @param {DefaultApiApiSysUserLoginLogDetailGetRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
public apiSysUserLoginLogDetailGet(
requestParameters: DefaultApiApiSysUserLoginLogDetailGetRequest,
options?: RawAxiosRequestConfig
) {
return DefaultApiFp(this.configuration)
.apiSysUserLoginLogDetailGet(requestParameters.id, options)
.then(request => request(this.axios, this.basePath));
}
/**
*
* @summary 查询登录日志列表
* @param {DefaultApiApiSysUserLoginLogListGetRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
public apiSysUserLoginLogListGet(
requestParameters: DefaultApiApiSysUserLoginLogListGetRequest,
options?: RawAxiosRequestConfig
) {
return DefaultApiFp(this.configuration)
.apiSysUserLoginLogListGet(
requestParameters.current,
requestParameters.pageSize,
requestParameters.userId,
requestParameters.loginName,
requestParameters.status,
requestParameters.startTime,
requestParameters.endTime,
options
)
.then(request => request(this.axios, this.basePath));
}
/**
*
* @summary 充值
@@ -29749,6 +30122,14 @@ export enum ApiRechargeTMallGameWorkspaceOrderSummaryGetCallbackTypeEnum {
Confirm = 'confirm',
Evaluation = 'evaluation'
}
export enum ApiSysUserLoginLogListGetPageSizeEnum {
NUMBER_5 = 5,
NUMBER_10 = 10,
NUMBER_15 = 15,
NUMBER_20 = 20,
NUMBER_50 = 50,
NUMBER_100 = 100
}
export enum ApiSysUserPaymentListGetPageSizeEnum {
NUMBER_5 = 5,
NUMBER_10 = 10,

View File

@@ -39,17 +39,13 @@ import {
operationServerMap
} from '../base';
// @ts-ignore
import type { KamiApiJdCookieV1BatchCheckReq } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1BatchCheckRes } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1BatchCreateReq } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1BatchCreateRes } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1BatchValidateReq } from '../models';
import type { KamiApiJdCookieV1BatchValidateCookieReq } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1BatchValidateRes } from '../models';
import type { KamiApiJdCookieV1BatchValidateCookieRes } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1CreateAccountReq } from '../models';
// @ts-ignore
@@ -73,54 +69,6 @@ export const JDCookieManagementApiAxiosParamCreator = function (
configuration?: Configuration
) {
return {
/**
*
* @summary Batch Check Cookie Status
* @param {KamiApiJdCookieV1BatchCheckReq} [kamiApiJdCookieV1BatchCheckReq]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieAccountBatchCheckPost: async (
kamiApiJdCookieV1BatchCheckReq?: KamiApiJdCookieV1BatchCheckReq,
options: RawAxiosRequestConfig = {}
): Promise<RequestArgs> => {
const localVarPath = `/api/jd-cookie/account/batch-check`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions = {
method: 'POST',
...baseOptions,
...options
};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
localVarHeaderParameter['Content-Type'] = 'application/json';
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions =
baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {
...localVarHeaderParameter,
...headersFromBaseOptions,
...options.headers
};
localVarRequestOptions.data = serializeDataIfNeeded(
kamiApiJdCookieV1BatchCheckReq,
localVarRequestOptions,
configuration
);
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions
};
},
/**
*
* @summary Batch Create Cookie Accounts
@@ -172,12 +120,12 @@ export const JDCookieManagementApiAxiosParamCreator = function (
/**
*
* @summary Batch Validate Cookies
* @param {KamiApiJdCookieV1BatchValidateReq} [kamiApiJdCookieV1BatchValidateReq]
* @param {KamiApiJdCookieV1BatchValidateCookieReq} [kamiApiJdCookieV1BatchValidateCookieReq]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieAccountBatchValidatePost: async (
kamiApiJdCookieV1BatchValidateReq?: KamiApiJdCookieV1BatchValidateReq,
kamiApiJdCookieV1BatchValidateCookieReq?: KamiApiJdCookieV1BatchValidateCookieReq,
options: RawAxiosRequestConfig = {}
): Promise<RequestArgs> => {
const localVarPath = `/api/jd-cookie/account/batch-validate`;
@@ -207,7 +155,7 @@ export const JDCookieManagementApiAxiosParamCreator = function (
...options.headers
};
localVarRequestOptions.data = serializeDataIfNeeded(
kamiApiJdCookieV1BatchValidateReq,
kamiApiJdCookieV1BatchValidateCookieReq,
localVarRequestOptions,
configuration
);
@@ -569,40 +517,6 @@ export const JDCookieManagementApiFp = function (
const localVarAxiosParamCreator =
JDCookieManagementApiAxiosParamCreator(configuration);
return {
/**
*
* @summary Batch Check Cookie Status
* @param {KamiApiJdCookieV1BatchCheckReq} [kamiApiJdCookieV1BatchCheckReq]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiJdCookieAccountBatchCheckPost(
kamiApiJdCookieV1BatchCheckReq?: KamiApiJdCookieV1BatchCheckReq,
options?: RawAxiosRequestConfig
): Promise<
(
axios?: AxiosInstance,
basePath?: string
) => AxiosPromise<KamiApiJdCookieV1BatchCheckRes>
> {
const localVarAxiosArgs =
await localVarAxiosParamCreator.apiJdCookieAccountBatchCheckPost(
kamiApiJdCookieV1BatchCheckReq,
options
);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath =
operationServerMap[
'JDCookieManagementApi.apiJdCookieAccountBatchCheckPost'
]?.[localVarOperationServerIndex]?.url;
return (axios, basePath) =>
createRequestFunction(
localVarAxiosArgs,
globalAxios,
BASE_PATH,
configuration
)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary Batch Create Cookie Accounts
@@ -640,22 +554,22 @@ export const JDCookieManagementApiFp = function (
/**
*
* @summary Batch Validate Cookies
* @param {KamiApiJdCookieV1BatchValidateReq} [kamiApiJdCookieV1BatchValidateReq]
* @param {KamiApiJdCookieV1BatchValidateCookieReq} [kamiApiJdCookieV1BatchValidateCookieReq]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiJdCookieAccountBatchValidatePost(
kamiApiJdCookieV1BatchValidateReq?: KamiApiJdCookieV1BatchValidateReq,
kamiApiJdCookieV1BatchValidateCookieReq?: KamiApiJdCookieV1BatchValidateCookieReq,
options?: RawAxiosRequestConfig
): Promise<
(
axios?: AxiosInstance,
basePath?: string
) => AxiosPromise<KamiApiJdCookieV1BatchValidateRes>
) => AxiosPromise<KamiApiJdCookieV1BatchValidateCookieRes>
> {
const localVarAxiosArgs =
await localVarAxiosParamCreator.apiJdCookieAccountBatchValidatePost(
kamiApiJdCookieV1BatchValidateReq,
kamiApiJdCookieV1BatchValidateCookieReq,
options
);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
@@ -922,24 +836,6 @@ export const JDCookieManagementApiFactory = function (
) {
const localVarFp = JDCookieManagementApiFp(configuration);
return {
/**
*
* @summary Batch Check Cookie Status
* @param {JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieAccountBatchCheckPost(
requestParameters: JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest = {},
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1BatchCheckRes> {
return localVarFp
.apiJdCookieAccountBatchCheckPost(
requestParameters.kamiApiJdCookieV1BatchCheckReq,
options
)
.then(request => request(axios, basePath));
},
/**
*
* @summary Batch Create Cookie Accounts
@@ -968,10 +864,10 @@ export const JDCookieManagementApiFactory = function (
apiJdCookieAccountBatchValidatePost(
requestParameters: JDCookieManagementApiApiJdCookieAccountBatchValidatePostRequest = {},
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1BatchValidateRes> {
): AxiosPromise<KamiApiJdCookieV1BatchValidateCookieRes> {
return localVarFp
.apiJdCookieAccountBatchValidatePost(
requestParameters.kamiApiJdCookieV1BatchValidateReq,
requestParameters.kamiApiJdCookieV1BatchValidateCookieReq,
options
)
.then(request => request(axios, basePath));
@@ -1101,18 +997,6 @@ export const JDCookieManagementApiFactory = function (
* JDCookieManagementApi - interface
*/
export interface JDCookieManagementApiInterface {
/**
*
* @summary Batch Check Cookie Status
* @param {JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieAccountBatchCheckPost(
requestParameters?: JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1BatchCheckRes>;
/**
*
* @summary Batch Create Cookie Accounts
@@ -1135,7 +1019,7 @@ export interface JDCookieManagementApiInterface {
apiJdCookieAccountBatchValidatePost(
requestParameters?: JDCookieManagementApiApiJdCookieAccountBatchValidatePostRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1BatchValidateRes>;
): AxiosPromise<KamiApiJdCookieV1BatchValidateCookieRes>;
/**
*
@@ -1220,13 +1104,6 @@ export interface JDCookieManagementApiInterface {
): AxiosPromise<KamiApiJdCookieV1ValidateCookieRes>;
}
/**
* Request parameters for apiJdCookieAccountBatchCheckPost operation in JDCookieManagementApi.
*/
export interface JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest {
readonly kamiApiJdCookieV1BatchCheckReq?: KamiApiJdCookieV1BatchCheckReq;
}
/**
* Request parameters for apiJdCookieAccountBatchCreatePost operation in JDCookieManagementApi.
*/
@@ -1238,7 +1115,7 @@ export interface JDCookieManagementApiApiJdCookieAccountBatchCreatePostRequest {
* Request parameters for apiJdCookieAccountBatchValidatePost operation in JDCookieManagementApi.
*/
export interface JDCookieManagementApiApiJdCookieAccountBatchValidatePostRequest {
readonly kamiApiJdCookieV1BatchValidateReq?: KamiApiJdCookieV1BatchValidateReq;
readonly kamiApiJdCookieV1BatchValidateCookieReq?: KamiApiJdCookieV1BatchValidateCookieReq;
}
/**
@@ -1314,25 +1191,6 @@ export class JDCookieManagementApi
extends BaseAPI
implements JDCookieManagementApiInterface
{
/**
*
* @summary Batch Check Cookie Status
* @param {JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
public apiJdCookieAccountBatchCheckPost(
requestParameters: JDCookieManagementApiApiJdCookieAccountBatchCheckPostRequest = {},
options?: RawAxiosRequestConfig
) {
return JDCookieManagementApiFp(this.configuration)
.apiJdCookieAccountBatchCheckPost(
requestParameters.kamiApiJdCookieV1BatchCheckReq,
options
)
.then(request => request(this.axios, this.basePath));
}
/**
*
* @summary Batch Create Cookie Accounts
@@ -1365,7 +1223,7 @@ export class JDCookieManagementApi
) {
return JDCookieManagementApiFp(this.configuration)
.apiJdCookieAccountBatchValidatePost(
requestParameters.kamiApiJdCookieV1BatchValidateReq,
requestParameters.kamiApiJdCookieV1BatchValidateCookieReq,
options
)
.then(request => request(this.axios, this.basePath));

View File

@@ -39,10 +39,6 @@ import {
operationServerMap
} from '../base';
// @ts-ignore
import type { KamiApiJdCookieV1CheckJdOrderPaymentReq } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1CheckJdOrderPaymentRes } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1CreateOrderReq } from '../models';
// @ts-ignore
import type { KamiApiJdCookieV1CreateOrderRes } from '../models';
@@ -412,54 +408,6 @@ export const JDOrderManagementApiAxiosParamCreator = function (
options: localVarRequestOptions
};
},
/**
*
* @summary Check JD Order Payment Status
* @param {KamiApiJdCookieV1CheckJdOrderPaymentReq} [kamiApiJdCookieV1CheckJdOrderPaymentReq]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieOrderJdPaymentStatusPost: async (
kamiApiJdCookieV1CheckJdOrderPaymentReq?: KamiApiJdCookieV1CheckJdOrderPaymentReq,
options: RawAxiosRequestConfig = {}
): Promise<RequestArgs> => {
const localVarPath = `/api/jd-cookie/order/jd-payment-status`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions = {
method: 'POST',
...baseOptions,
...options
};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
localVarHeaderParameter['Content-Type'] = 'application/json';
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions =
baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {
...localVarHeaderParameter,
...headersFromBaseOptions,
...options.headers
};
localVarRequestOptions.data = serializeDataIfNeeded(
kamiApiJdCookieV1CheckJdOrderPaymentReq,
localVarRequestOptions,
configuration
);
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions
};
},
/**
*
* @summary Order List Query
@@ -865,40 +813,6 @@ export const JDOrderManagementApiFp = function (configuration?: Configuration) {
configuration
)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary Check JD Order Payment Status
* @param {KamiApiJdCookieV1CheckJdOrderPaymentReq} [kamiApiJdCookieV1CheckJdOrderPaymentReq]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiJdCookieOrderJdPaymentStatusPost(
kamiApiJdCookieV1CheckJdOrderPaymentReq?: KamiApiJdCookieV1CheckJdOrderPaymentReq,
options?: RawAxiosRequestConfig
): Promise<
(
axios?: AxiosInstance,
basePath?: string
) => AxiosPromise<KamiApiJdCookieV1CheckJdOrderPaymentRes>
> {
const localVarAxiosArgs =
await localVarAxiosParamCreator.apiJdCookieOrderJdPaymentStatusPost(
kamiApiJdCookieV1CheckJdOrderPaymentReq,
options
);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath =
operationServerMap[
'JDOrderManagementApi.apiJdCookieOrderJdPaymentStatusPost'
]?.[localVarOperationServerIndex]?.url;
return (axios, basePath) =>
createRequestFunction(
localVarAxiosArgs,
globalAxios,
BASE_PATH,
configuration
)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary Order List Query
@@ -1138,24 +1052,6 @@ export const JDOrderManagementApiFactory = function (
)
.then(request => request(axios, basePath));
},
/**
*
* @summary Check JD Order Payment Status
* @param {JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieOrderJdPaymentStatusPost(
requestParameters: JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest = {},
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1CheckJdOrderPaymentRes> {
return localVarFp
.apiJdCookieOrderJdPaymentStatusPost(
requestParameters.kamiApiJdCookieV1CheckJdOrderPaymentReq,
options
)
.then(request => request(axios, basePath));
},
/**
*
* @summary Order List Query
@@ -1290,18 +1186,6 @@ export interface JDOrderManagementApiInterface {
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1GetJdOrderHistoryRes>;
/**
*
* @summary Check JD Order Payment Status
* @param {JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiJdCookieOrderJdPaymentStatusPost(
requestParameters?: JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest,
options?: RawAxiosRequestConfig
): AxiosPromise<KamiApiJdCookieV1CheckJdOrderPaymentRes>;
/**
*
* @summary Order List Query
@@ -1446,13 +1330,6 @@ export interface JDOrderManagementApiApiJdCookieOrderJdOrderHistoryGetRequest {
readonly size?: number;
}
/**
* Request parameters for apiJdCookieOrderJdPaymentStatusPost operation in JDOrderManagementApi.
*/
export interface JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest {
readonly kamiApiJdCookieV1CheckJdOrderPaymentReq?: KamiApiJdCookieV1CheckJdOrderPaymentReq;
}
/**
* Request parameters for apiJdCookieOrderListGet operation in JDOrderManagementApi.
*/
@@ -1625,25 +1502,6 @@ export class JDOrderManagementApi
.then(request => request(this.axios, this.basePath));
}
/**
*
* @summary Check JD Order Payment Status
* @param {JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest} requestParameters Request parameters.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
public apiJdCookieOrderJdPaymentStatusPost(
requestParameters: JDOrderManagementApiApiJdCookieOrderJdPaymentStatusPostRequest = {},
options?: RawAxiosRequestConfig
) {
return JDOrderManagementApiFp(this.configuration)
.apiJdCookieOrderJdPaymentStatusPost(
requestParameters.kamiApiJdCookieV1CheckJdOrderPaymentReq,
options
)
.then(request => request(this.axios, this.basePath));
}
/**
*
* @summary Order List Query

View File

@@ -181,6 +181,8 @@ All URIs are relative to _http://localhost_
| [**apiRestrictionLocationGetAllProvinceGet**](#apirestrictionlocationgetallprovinceget) | **GET** /api/restriction/location/getAllProvince | 获取所有的地理位置 |
| [**apiRoadPoolSimpleGetAllGet**](#apiroadpoolsimplegetallget) | **GET** /api/roadPool/simple/getAll | 获取支付通道 |
| [**apiRoadSimpleGetAllGet**](#apiroadsimplegetallget) | **GET** /api/road/simple/getAll | 获取支付通道 |
| [**apiSysUserLoginLogDetailGet**](#apisysuserloginlogdetailget) | **GET** /api/sys-user-login-log/detail | 查询登录日志详情 |
| [**apiSysUserLoginLogListGet**](#apisysuserloginloglistget) | **GET** /api/sys-user-login-log/list | 查询登录日志列表 |
| [**apiSysUserPaymentAddPost**](#apisysuserpaymentaddpost) | **POST** /api/sysUser/payment/add | 充值 |
| [**apiSysUserPaymentGetGet**](#apisysuserpaymentgetget) | **GET** /api/sysUser/payment/get | 用户钱包详情 |
| [**apiSysUserPaymentListGet**](#apisysuserpaymentlistget) | **GET** /api/sysUser/payment/list | 用户充值列表 |
@@ -9016,6 +9018,114 @@ No authorization required
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **apiSysUserLoginLogDetailGet**
> KamiApiSysUserLoginLogV1LoginLogDetailRes apiSysUserLoginLogDetailGet()
### Example
```typescript
import { DefaultApi, Configuration } from './api';
const configuration = new Configuration();
const apiInstance = new DefaultApi(configuration);
let id: number; // (default to undefined)
const { status, data } = await apiInstance.apiSysUserLoginLogDetailGet(id);
```
### Parameters
| Name | Type | Description | Notes |
| ------ | ------------ | ----------- | --------------------- |
| **id** | [**number**] | | defaults to undefined |
### Return type
**KamiApiSysUserLoginLogV1LoginLogDetailRes**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
| ----------- | ----------- | ---------------- |
| **200** | | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **apiSysUserLoginLogListGet**
> KamiApiSysUserLoginLogV1LoginLogQueryRes apiSysUserLoginLogListGet()
### Example
```typescript
import { DefaultApi, Configuration } from './api';
const configuration = new Configuration();
const apiInstance = new DefaultApi(configuration);
let current: number; //页数 (default to undefined)
let pageSize: 5 | 10 | 15 | 20 | 50 | 100; //页码 (default to undefined)
let userId: string; //用户ID可选 (optional) (default to undefined)
let loginName: string; //登录名(可选) (optional) (default to undefined)
let status: number; //登录状态1登录成功 2登录失败可选 (optional) (default to undefined)
let startTime: string; //开始时间格式为2006-01-02可选 (optional) (default to undefined)
let endTime: string; //结束时间格式为2006-01-02可选 (optional) (default to undefined)
const { status, data } = await apiInstance.apiSysUserLoginLogListGet(
current,
pageSize,
userId,
loginName,
status,
startTime,
endTime
);
```
### Parameters
| Name | Type | Description | Notes |
| ------------- | ------------ | ------------------------------------- | -------------------------------- | --- | --- | ----------------------------------------------------------------------- | ---- | --------------------- |
| **current** | [**number**] | 页数 | defaults to undefined |
| **pageSize** | [\*\*5 | 10 | 15 | 20 | 50 | 100**]**Array<5 &#124; 10 &#124; 15 &#124; 20 &#124; 50 &#124; 100>\*\* | 页码 | defaults to undefined |
| **userId** | [**string**] | 用户ID可选 | (optional) defaults to undefined |
| **loginName** | [**string**] | 登录名(可选) | (optional) defaults to undefined |
| **status** | [**number**] | 登录状态1登录成功 2登录失败可选 | (optional) defaults to undefined |
| **startTime** | [**string**] | 开始时间格式为2006-01-02可选 | (optional) defaults to undefined |
| **endTime** | [**string**] | 结束时间格式为2006-01-02可选 | (optional) defaults to undefined |
### Return type
**KamiApiSysUserLoginLogV1LoginLogQueryRes**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
| ----------- | ----------- | ---------------- |
| **200** | | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **apiSysUserPaymentAddPost**
> object apiSysUserPaymentAddPost()

View File

@@ -4,7 +4,6 @@ All URIs are relative to _http://localhost_
| Method | HTTP request | Description |
| ----------------------------------------------------------------------------------- | ------------------------------------------------ | ---------------------------- |
| [**apiJdCookieAccountBatchCheckPost**](#apijdcookieaccountbatchcheckpost) | **POST** /api/jd-cookie/account/batch-check | Batch Check Cookie Status |
| [**apiJdCookieAccountBatchCreatePost**](#apijdcookieaccountbatchcreatepost) | **POST** /api/jd-cookie/account/batch-create | Batch Create Cookie Accounts |
| [**apiJdCookieAccountBatchValidatePost**](#apijdcookieaccountbatchvalidatepost) | **POST** /api/jd-cookie/account/batch-validate | Batch Validate Cookies |
| [**apiJdCookieAccountCreatePost**](#apijdcookieaccountcreatepost) | **POST** /api/jd-cookie/account/create | Create Cookie Account |
@@ -15,56 +14,6 @@ All URIs are relative to _http://localhost_
| [**apiJdCookieAccountUpdatePut**](#apijdcookieaccountupdateput) | **PUT** /api/jd-cookie/account/update | Update Cookie Account |
| [**apiJdCookieAccountValidatePost**](#apijdcookieaccountvalidatepost) | **POST** /api/jd-cookie/account/validate | Validate Cookie |
# **apiJdCookieAccountBatchCheckPost**
> KamiApiJdCookieV1BatchCheckRes apiJdCookieAccountBatchCheckPost()
### Example
```typescript
import {
JDCookieManagementApi,
Configuration,
KamiApiJdCookieV1BatchCheckReq
} from './api';
const configuration = new Configuration();
const apiInstance = new JDCookieManagementApi(configuration);
let kamiApiJdCookieV1BatchCheckReq: KamiApiJdCookieV1BatchCheckReq; // (optional)
const { status, data } = await apiInstance.apiJdCookieAccountBatchCheckPost(
kamiApiJdCookieV1BatchCheckReq
);
```
### Parameters
| Name | Type | Description | Notes |
| ---------------------------------- | ---------------------------------- | ----------- | ----- |
| **kamiApiJdCookieV1BatchCheckReq** | **KamiApiJdCookieV1BatchCheckReq** | | |
### Return type
**KamiApiJdCookieV1BatchCheckRes**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
| ----------- | ----------- | ---------------- |
| **200** | | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **apiJdCookieAccountBatchCreatePost**
> KamiApiJdCookieV1BatchCreateRes apiJdCookieAccountBatchCreatePost()
@@ -117,7 +66,7 @@ No authorization required
# **apiJdCookieAccountBatchValidatePost**
> KamiApiJdCookieV1BatchValidateRes apiJdCookieAccountBatchValidatePost()
> KamiApiJdCookieV1BatchValidateCookieRes apiJdCookieAccountBatchValidatePost()
### Example
@@ -125,28 +74,28 @@ No authorization required
import {
JDCookieManagementApi,
Configuration,
KamiApiJdCookieV1BatchValidateReq
KamiApiJdCookieV1BatchValidateCookieReq
} from './api';
const configuration = new Configuration();
const apiInstance = new JDCookieManagementApi(configuration);
let kamiApiJdCookieV1BatchValidateReq: KamiApiJdCookieV1BatchValidateReq; // (optional)
let kamiApiJdCookieV1BatchValidateCookieReq: KamiApiJdCookieV1BatchValidateCookieReq; // (optional)
const { status, data } = await apiInstance.apiJdCookieAccountBatchValidatePost(
kamiApiJdCookieV1BatchValidateReq
kamiApiJdCookieV1BatchValidateCookieReq
);
```
### Parameters
| Name | Type | Description | Notes |
| ------------------------------------- | ------------------------------------- | ----------- | ----- |
| **kamiApiJdCookieV1BatchValidateReq** | **KamiApiJdCookieV1BatchValidateReq** | | |
| Name | Type | Description | Notes |
| ------------------------------------------- | ------------------------------------------- | ----------- | ----- |
| **kamiApiJdCookieV1BatchValidateCookieReq** | **KamiApiJdCookieV1BatchValidateCookieReq** | | |
### Return type
**KamiApiJdCookieV1BatchValidateRes**
**KamiApiJdCookieV1BatchValidateCookieRes**
### Authorization

View File

@@ -2,18 +2,17 @@
All URIs are relative to _http://localhost_
| Method | HTTP request | Description |
| ------------------------------------------------------------------------------- | ----------------------------------------------- | ----------------------------- |
| [**apiJdCookieOrderCreatePost**](#apijdcookieordercreatepost) | **POST** /api/jd-cookie/order/create | Create Order |
| [**apiJdCookieOrderExportGet**](#apijdcookieorderexportget) | **GET** /api/jd-cookie/order/export | Export JD Orders |
| [**apiJdCookieOrderGetGet**](#apijdcookieordergetget) | **GET** /api/jd-cookie/order/get | Get Single Order |
| [**apiJdCookieOrderJdListGet**](#apijdcookieorderjdlistget) | **GET** /api/jd-cookie/order/jd-list | JD Order List Query |
| [**apiJdCookieOrderJdOrderGet**](#apijdcookieorderjdorderget) | **GET** /api/jd-cookie/order/jd-order | Get Single JD Order |
| [**apiJdCookieOrderJdOrderHistoryGet**](#apijdcookieorderjdorderhistoryget) | **GET** /api/jd-cookie/order/jd-order-history | Get JD Order History |
| [**apiJdCookieOrderJdPaymentStatusPost**](#apijdcookieorderjdpaymentstatuspost) | **POST** /api/jd-cookie/order/jd-payment-status | Check JD Order Payment Status |
| [**apiJdCookieOrderListGet**](#apijdcookieorderlistget) | **GET** /api/jd-cookie/order/list | Order List Query |
| [**apiJdCookieOrderPaymentUrlPost**](#apijdcookieorderpaymenturlpost) | **POST** /api/jd-cookie/order/payment-url | Get Payment URL |
| [**apiJdCookieOrderStatusGet**](#apijdcookieorderstatusget) | **GET** /api/jd-cookie/order/status | Query Order Status |
| Method | HTTP request | Description |
| --------------------------------------------------------------------------- | --------------------------------------------- | -------------------- |
| [**apiJdCookieOrderCreatePost**](#apijdcookieordercreatepost) | **POST** /api/jd-cookie/order/create | Create Order |
| [**apiJdCookieOrderExportGet**](#apijdcookieorderexportget) | **GET** /api/jd-cookie/order/export | Export JD Orders |
| [**apiJdCookieOrderGetGet**](#apijdcookieordergetget) | **GET** /api/jd-cookie/order/get | Get Single Order |
| [**apiJdCookieOrderJdListGet**](#apijdcookieorderjdlistget) | **GET** /api/jd-cookie/order/jd-list | JD Order List Query |
| [**apiJdCookieOrderJdOrderGet**](#apijdcookieorderjdorderget) | **GET** /api/jd-cookie/order/jd-order | Get Single JD Order |
| [**apiJdCookieOrderJdOrderHistoryGet**](#apijdcookieorderjdorderhistoryget) | **GET** /api/jd-cookie/order/jd-order-history | Get JD Order History |
| [**apiJdCookieOrderListGet**](#apijdcookieorderlistget) | **GET** /api/jd-cookie/order/list | Order List Query |
| [**apiJdCookieOrderPaymentUrlPost**](#apijdcookieorderpaymenturlpost) | **POST** /api/jd-cookie/order/payment-url | Get Payment URL |
| [**apiJdCookieOrderStatusGet**](#apijdcookieorderstatusget) | **GET** /api/jd-cookie/order/status | Query Order Status |
# **apiJdCookieOrderCreatePost**
@@ -322,56 +321,6 @@ No authorization required
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **apiJdCookieOrderJdPaymentStatusPost**
> KamiApiJdCookieV1CheckJdOrderPaymentRes apiJdCookieOrderJdPaymentStatusPost()
### Example
```typescript
import {
JDOrderManagementApi,
Configuration,
KamiApiJdCookieV1CheckJdOrderPaymentReq
} from './api';
const configuration = new Configuration();
const apiInstance = new JDOrderManagementApi(configuration);
let kamiApiJdCookieV1CheckJdOrderPaymentReq: KamiApiJdCookieV1CheckJdOrderPaymentReq; // (optional)
const { status, data } = await apiInstance.apiJdCookieOrderJdPaymentStatusPost(
kamiApiJdCookieV1CheckJdOrderPaymentReq
);
```
### Parameters
| Name | Type | Description | Notes |
| ------------------------------------------- | ------------------------------------------- | ----------- | ----- |
| **kamiApiJdCookieV1CheckJdOrderPaymentReq** | **KamiApiJdCookieV1CheckJdOrderPaymentReq** | | |
### Return type
**KamiApiJdCookieV1CheckJdOrderPaymentRes**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
| ----------- | ----------- | ---------------- |
| **200** | | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **apiJdCookieOrderListGet**
> KamiApiJdCookieV1ListOrderRes apiJdCookieOrderListGet()

View File

@@ -0,0 +1,19 @@
# KamiApiJdCookieV1BatchValidateCookieReq
## Properties
| Name | Type | Description | Notes |
| ----------- | ---------------------------------------------------------------------------------------------- | ----------- | ---------------------- |
| **cookies** | [**Array&lt;KamiApiJdCookieV1ValidateCookieItem&gt;**](KamiApiJdCookieV1ValidateCookieItem.md) | Cookie列表 | [default to undefined] |
## Example
```typescript
import { KamiApiJdCookieV1BatchValidateCookieReq } from './api';
const instance: KamiApiJdCookieV1BatchValidateCookieReq = {
cookies
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,25 @@
# KamiApiJdCookieV1BatchValidateCookieRes
## Properties
| Name | Type | Description | Notes |
| ---------------- | ------------------------------------------------------------------------------------------------ | ------------ | --------------------------------- |
| **totalCount** | **number** | 总数量 | [optional] [default to undefined] |
| **validCount** | **number** | 有效数量 | [optional] [default to undefined] |
| **invalidCount** | **number** | 无效数量 | [optional] [default to undefined] |
| **results** | [**Array&lt;KamiApiJdCookieV1BatchValidateResult&gt;**](KamiApiJdCookieV1BatchValidateResult.md) | 验证结果详情 | [optional] [default to undefined] |
## Example
```typescript
import { KamiApiJdCookieV1BatchValidateCookieRes } from './api';
const instance: KamiApiJdCookieV1BatchValidateCookieRes = {
totalCount,
validCount,
invalidCount,
results
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,19 @@
# KamiApiSysUserLoginLogV1LoginLogDetailReq
## Properties
| Name | Type | Description | Notes |
| ------ | ---------- | ----------- | ---------------------- |
| **id** | **number** | | [default to undefined] |
## Example
```typescript
import { KamiApiSysUserLoginLogV1LoginLogDetailReq } from './api';
const instance: KamiApiSysUserLoginLogV1LoginLogDetailReq = {
id
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,19 @@
# KamiApiSysUserLoginLogV1LoginLogDetailRes
## Properties
| Name | Type | Description | Notes |
| -------- | ------------------------------------------------------------------------------------------- | ----------- | --------------------------------- |
| **data** | [**KamiInternalModelEntityV1SysUserLoginLog**](KamiInternalModelEntityV1SysUserLoginLog.md) | | [optional] [default to undefined] |
## Example
```typescript
import { KamiApiSysUserLoginLogV1LoginLogDetailRes } from './api';
const instance: KamiApiSysUserLoginLogV1LoginLogDetailRes = {
data
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,31 @@
# KamiApiSysUserLoginLogV1LoginLogQueryReq
## Properties
| Name | Type | Description | Notes |
| ------------- | ---------- | ------------------------------------- | --------------------------------- |
| **userId** | **string** | 用户ID可选 | [optional] [default to undefined] |
| **loginName** | **string** | 登录名(可选) | [optional] [default to undefined] |
| **status** | **number** | 登录状态1登录成功 2登录失败可选 | [optional] [default to undefined] |
| **startTime** | **string** | 开始时间格式为2006-01-02可选 | [optional] [default to undefined] |
| **endTime** | **string** | 结束时间格式为2006-01-02可选 | [optional] [default to undefined] |
| **current** | **number** | 页数 | [default to undefined] |
| **pageSize** | **number** | 页码 | [default to undefined] |
## Example
```typescript
import { KamiApiSysUserLoginLogV1LoginLogQueryReq } from './api';
const instance: KamiApiSysUserLoginLogV1LoginLogQueryReq = {
userId,
loginName,
status,
startTime,
endTime,
current,
pageSize
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,21 @@
# KamiApiSysUserLoginLogV1LoginLogQueryRes
## Properties
| Name | Type | Description | Notes |
| --------- | -------------------------------------------------------------------------------------------------------- | ----------- | --------------------------------- |
| **total** | **number** | | [optional] [default to undefined] |
| **list** | [**Array&lt;KamiInternalModelEntityV1SysUserLoginLog&gt;**](KamiInternalModelEntityV1SysUserLoginLog.md) | | [optional] [default to undefined] |
## Example
```typescript
import { KamiApiSysUserLoginLogV1LoginLogQueryRes } from './api';
const instance: KamiApiSysUserLoginLogV1LoginLogQueryRes = {
total,
list
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,43 @@
# KamiInternalModelEntityV1SysUserLoginLog
## Properties
| Name | Type | Description | Notes |
| ----------------- | ---------- | --------------------------- | --------------------------------- |
| **id** | **number** | | [optional] [default to undefined] |
| **userId** | **string** | | [optional] [default to undefined] |
| **loginName** | **string** | 登录名 | [optional] [default to undefined] |
| **ipAddr** | **string** | 登录IP | [optional] [default to undefined] |
| **loginLocation** | **string** | 登录地点 | [optional] [default to undefined] |
| **userAgent** | **string** | | [optional] [default to undefined] |
| **browser** | **string** | | [optional] [default to undefined] |
| **os** | **string** | | [optional] [default to undefined] |
| **createdAt** | **string** | 登录时间 | [optional] [default to undefined] |
| **status** | **number** | 登录状态 1登录成功2登录失败 | [optional] [default to undefined] |
| **message** | **string** | | [optional] [default to undefined] |
| **loginTime** | **string** | 登录时长 | [optional] [default to undefined] |
| **module** | **string** | | [optional] [default to undefined] |
## Example
```typescript
import { KamiInternalModelEntityV1SysUserLoginLog } from './api';
const instance: KamiInternalModelEntityV1SysUserLoginLog = {
id,
userId,
loginName,
ipAddr,
loginLocation,
userAgent,
browser,
os,
createdAt,
status,
message,
loginTime,
module
};
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -207,18 +207,13 @@ export * from './kami-api-channel-v2-entrance-list-req';
export * from './kami-api-channel-v2-entrance-list-res';
export * from './kami-api-channel-v2-entrance-params';
export * from './kami-api-channel-v2-entrance-update-req';
export * from './kami-api-jd-cookie-v1-batch-check-req';
export * from './kami-api-jd-cookie-v1-batch-check-res';
export * from './kami-api-jd-cookie-v1-batch-create-req';
export * from './kami-api-jd-cookie-v1-batch-create-res';
export * from './kami-api-jd-cookie-v1-batch-create-result';
export * from './kami-api-jd-cookie-v1-batch-validate-req';
export * from './kami-api-jd-cookie-v1-batch-validate-res';
export * from './kami-api-jd-cookie-v1-batch-validate-cookie-req';
export * from './kami-api-jd-cookie-v1-batch-validate-cookie-res';
export * from './kami-api-jd-cookie-v1-batch-validate-result';
export * from './kami-api-jd-cookie-v1-check-jd-order-payment-req';
export * from './kami-api-jd-cookie-v1-check-jd-order-payment-res';
export * from './kami-api-jd-cookie-v1-cookie-account-info';
export * from './kami-api-jd-cookie-v1-cookie-check-result';
export * from './kami-api-jd-cookie-v1-cookie-delete-result';
export * from './kami-api-jd-cookie-v1-cookie-history-info';
export * from './kami-api-jd-cookie-v1-cookie-history-req';
@@ -327,6 +322,10 @@ export * from './kami-api-sys-payment-v1-sys-payment-get-res';
export * from './kami-api-sys-payment-v1-sys-payment-records-get-req';
export * from './kami-api-sys-payment-v1-sys-payment-records-get-res';
export * from './kami-api-sys-payment-v1-sys-payment-records-get-statistics-res';
export * from './kami-api-sys-user-login-log-v1-login-log-detail-req';
export * from './kami-api-sys-user-login-log-v1-login-log-detail-res';
export * from './kami-api-sys-user-login-log-v1-login-log-query-req';
export * from './kami-api-sys-user-login-log-v1-login-log-query-res';
export * from './kami-api-sys-user-login-v1-user-login-req';
export * from './kami-api-sys-user-login-v1-user-login-res';
export * from './kami-api-sys-user-login-v1-user-menus';
@@ -378,6 +377,7 @@ export * from './kami-internal-model-entity-v1-recharge-tmall-shop';
export * from './kami-internal-model-entity-v1-recharge-tmall-shop-history';
export * from './kami-internal-model-entity-v1-sys-role';
export * from './kami-internal-model-entity-v1-sys-user';
export * from './kami-internal-model-entity-v1-sys-user-login-log';
export * from './kami-internal-model-entity-v1-sys-user-payment';
export * from './kami-internal-model-entity-v1-sys-user-payment-records';
export * from './kami-internal-model-user-info';

View File

@@ -0,0 +1,24 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
// May contain unused imports in some cases
// @ts-ignore
import type { KamiApiJdCookieV1ValidateCookieItem } from './kami-api-jd-cookie-v1-validate-cookie-item';
export interface KamiApiJdCookieV1BatchValidateCookieReq {
/**
* Cookie列表
*/
cookies: Array<KamiApiJdCookieV1ValidateCookieItem>;
}

View File

@@ -0,0 +1,36 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
// May contain unused imports in some cases
// @ts-ignore
import type { KamiApiJdCookieV1BatchValidateResult } from './kami-api-jd-cookie-v1-batch-validate-result';
export interface KamiApiJdCookieV1BatchValidateCookieRes {
/**
* 总数量
*/
totalCount?: number;
/**
* 有效数量
*/
validCount?: number;
/**
* 无效数量
*/
invalidCount?: number;
/**
* 验证结果详情
*/
results?: Array<KamiApiJdCookieV1BatchValidateResult>;
}

View File

@@ -0,0 +1,17 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface KamiApiSysUserLoginLogV1LoginLogDetailReq {
id: number;
}

View File

@@ -0,0 +1,21 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
// May contain unused imports in some cases
// @ts-ignore
import type { KamiInternalModelEntityV1SysUserLoginLog } from './kami-internal-model-entity-v1-sys-user-login-log';
export interface KamiApiSysUserLoginLogV1LoginLogDetailRes {
data?: KamiInternalModelEntityV1SysUserLoginLog;
}

View File

@@ -0,0 +1,53 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface KamiApiSysUserLoginLogV1LoginLogQueryReq {
/**
* 用户ID可选
*/
userId?: string;
/**
* 登录名(可选)
*/
loginName?: string;
/**
* 登录状态1登录成功 2登录失败可选
*/
status?: number;
/**
* 开始时间格式为2006-01-02可选
*/
startTime?: string;
/**
* 结束时间格式为2006-01-02可选
*/
endTime?: string;
/**
* 页数
*/
current: number;
/**
* 页码
*/
pageSize: KamiApiSysUserLoginLogV1LoginLogQueryReqPageSizeEnum;
}
export enum KamiApiSysUserLoginLogV1LoginLogQueryReqPageSizeEnum {
NUMBER_5 = 5,
NUMBER_10 = 10,
NUMBER_15 = 15,
NUMBER_20 = 20,
NUMBER_50 = 50,
NUMBER_100 = 100
}

View File

@@ -0,0 +1,22 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
// May contain unused imports in some cases
// @ts-ignore
import type { KamiInternalModelEntityV1SysUserLoginLog } from './kami-internal-model-entity-v1-sys-user-login-log';
export interface KamiApiSysUserLoginLogV1LoginLogQueryRes {
total?: number;
list?: Array<KamiInternalModelEntityV1SysUserLoginLog>;
}

View File

@@ -0,0 +1,47 @@
/* tslint:disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document:
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface KamiInternalModelEntityV1SysUserLoginLog {
id?: number;
userId?: string;
/**
* 登录名
*/
loginName?: string;
/**
* 登录IP
*/
ipAddr?: string;
/**
* 登录地点
*/
loginLocation?: string;
userAgent?: string;
browser?: string;
os?: string;
/**
* 登录时间
*/
createdAt?: string;
/**
* 登录状态 1登录成功2登录失败
*/
status?: number;
message?: string;
/**
* 登录时长
*/
loginTime?: string;
module?: string;
}

View File

@@ -22,6 +22,16 @@ const DASHBOARD: AppRouteRecordRaw = {
requiresAuth: true,
roles: ['*']
}
},
{
path: 'login-log',
name: 'LoginLog',
component: () => import('@/views/user-center/login-log/index.vue'),
meta: {
locale: '登录日志',
requiresAuth: true,
roles: ['*']
}
}
]
};

View File

@@ -1,29 +0,0 @@
import { DEFAULT_LAYOUT } from '../base';
import type { AppRouteRecordRaw } from '../types';
const MERCHANT_USER_MANAGEMENT: AppRouteRecordRaw = {
path: '/userCenter',
name: 'userCenter',
component: DEFAULT_LAYOUT,
meta: {
showInMenu: false,
locale: '用户管理',
requiresAuth: true,
icon: 'icon-dashboard',
order: 0
},
children: [
{
path: 'management',
name: 'Management',
component: () => import('@/views/user-center/management/index.vue'),
meta: {
locale: '用户管理',
requiresAuth: true,
roles: ['*']
}
}
]
};
export default MERCHANT_USER_MANAGEMENT;

View File

@@ -476,7 +476,7 @@ const handleValidate = async (): Promise<void> => {
}));
const response = await jdCookieClient.apiJdCookieAccountBatchValidatePost({
kamiApiJdCookieV1BatchValidateReq: {
kamiApiJdCookieV1BatchValidateCookieReq: {
cookies: validateCookies
}
});

View File

@@ -0,0 +1,190 @@
<template>
<a-modal
:visible="visible"
:title="'登录日志详情'"
width="600px"
:footer="false"
@cancel="handleCancel"
>
<a-spin :loading="loading" style="width: 100%">
<div v-if="loginLogData" class="detail-container">
<a-descriptions :column="2" :size="'large'" bordered>
<a-descriptions-item label="ID">
{{ loginLogData.id || '-' }}
</a-descriptions-item>
<a-descriptions-item label="用户ID">
{{ loginLogData.userId || '-' }}
</a-descriptions-item>
<a-descriptions-item label="登录名">
{{ loginLogData.loginName || '-' }}
</a-descriptions-item>
<a-descriptions-item label="登录IP">
{{ loginLogData.ipAddr || '-' }}
</a-descriptions-item>
<a-descriptions-item label="登录地点" :span="2">
{{ loginLogData.loginLocation || '-' }}
</a-descriptions-item>
<a-descriptions-item label="浏览器">
{{ loginLogData.browser || '-' }}
</a-descriptions-item>
<a-descriptions-item label="操作系统">
{{ loginLogData.os || '-' }}
</a-descriptions-item>
<a-descriptions-item label="登录状态">
<a-tag v-if="loginLogData.status === 1" color="green">
登录成功
</a-tag>
<a-tag v-else-if="loginLogData.status === 2" color="red">
登录失败
</a-tag>
<a-tag v-else color="gray">未知</a-tag>
</a-descriptions-item>
<a-descriptions-item label="登录时长">
{{ loginLogData.loginTime || '-' }}
</a-descriptions-item>
<a-descriptions-item label="登录时间" :span="2">
{{ formatDateTime(loginLogData.createdAt) }}
</a-descriptions-item>
<a-descriptions-item
v-if="loginLogData.message"
label="登录消息"
:span="2"
>
<a-typography-text
:type="loginLogData.status === 2 ? 'danger' : 'primary'"
>
{{ loginLogData.message }}
</a-typography-text>
</a-descriptions-item>
<a-descriptions-item
v-if="loginLogData.userAgent"
label="User Agent"
:span="2"
>
<a-typography-text copyable>
{{ loginLogData.userAgent }}
</a-typography-text>
</a-descriptions-item>
<a-descriptions-item
v-if="loginLogData.module"
label="登录模块"
:span="1"
>
{{ loginLogData.module }}
</a-descriptions-item>
</a-descriptions>
</div>
<a-empty v-else-if="!loading" description="暂无数据" />
</a-spin>
<div class="modal-footer">
<div class="action-section">
<a-space>
<a-button @click="handleCancel">关闭</a-button>
</a-space>
</div>
</div>
</a-modal>
</template>
<script lang="ts" setup>
import { ref, watch } from 'vue';
import useLoading from '@/hooks/loading';
import { Message } from '@arco-design/web-vue';
import { apiClient } from '@/api';
import { KamiInternalModelEntityV1SysUserLoginLog } from '@/api/generated/models';
interface Props {
visible: boolean;
loginLogId?: number;
}
interface Emits {
(e: 'update:visible', visible: boolean): void;
}
const props = defineProps<Props>();
const emit = defineEmits<Emits>();
const { loading, setLoading } = useLoading();
const loginLogData = ref<KamiInternalModelEntityV1SysUserLoginLog>();
// 获取详情数据
const fetchDetail = async (id: number) => {
if (!id) return;
setLoading(true);
try {
const response = await apiClient.apiSysUserLoginLogDetailGet({ id });
if (response.data?.data) {
loginLogData.value = response.data.data;
} else {
Message.error('获取登录日志详情失败');
}
} catch (error) {
console.error('获取登录日志详情失败:', error);
Message.error('获取登录日志详情失败');
} finally {
setLoading(false);
}
};
// 格式化日期时间
const formatDateTime = (dateTime?: string) => {
if (!dateTime) return '-';
try {
return new Date(dateTime).toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
} catch {
return dateTime;
}
};
// 取消/关闭
const handleCancel = () => {
emit('update:visible', false);
loginLogData.value = undefined;
};
// 监听弹窗显示状态
watch(
() => props.visible,
visible => {
if (visible && props.loginLogId) {
fetchDetail(props.loginLogId);
} else if (!visible) {
loginLogData.value = undefined;
}
}
);
</script>
<style scoped>
.detail-container {
padding: 16px 0;
}
.modal-footer {
margin-top: 24px;
padding-top: 16px;
border-top: 1px solid var(--color-border-2);
}
.action-section {
display: flex;
justify-content: flex-end;
}
:deep(.arco-descriptions-item) {
padding-bottom: 12px;
}
</style>

View File

@@ -0,0 +1,330 @@
<template>
<a-card :bordered="false">
<a-row>
<a-col :flex="1">
<a-form
:model="formModel"
:label-col-props="{ span: 6 }"
:wrapper-col-props="{ span: 18 }"
label-align="left"
>
<a-row :gutter="16">
<a-col :span="8">
<a-form-item field="loginName" label="登录名">
<a-input
v-model="formModel.loginName"
placeholder="请输入登录名"
allow-clear
/>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item field="status" label="登录状态">
<a-select
v-model="formModel.status"
placeholder="请选择登录状态"
allow-clear
>
<a-option :value="1">登录成功</a-option>
<a-option :value="2">登录失败</a-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item field="dateRange" label="登录时间">
<a-range-picker
v-model="formModel.dateRange"
style="width: 100%"
:shortcuts="dateShortcuts"
/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-col>
<a-divider style="height: 42px" direction="vertical" />
<a-col flex="172px" style="text-align: right">
<a-space direction="horizontal" :size="18">
<a-button type="primary" @click="search">
<template #icon>
<icon-search />
</template>
搜索
</a-button>
<a-button @click="reset">
<template #icon>
<icon-refresh />
</template>
重置
</a-button>
</a-space>
</a-col>
</a-row>
<a-divider style="margin-top: 0" />
<a-table
row-key="id"
:loading="loading"
:pagination="{
current: pagination.current,
pageSize: pagination.pageSize,
total: pagination.total,
pageSizeOptions: [10, 20, 50, 100],
showPageSize: true,
showTotal: true,
showJumper: true
}"
:columns="columns"
:data="renderData"
:scroll="{ x: 1400 }"
@page-change="onPageChange"
@page-size-change="onPageSizeChange"
>
<template #index="{ rowIndex }">
{{ rowIndex + 1 + (pagination.current - 1) * pagination.pageSize }}
</template>
<template #status="{ record }">
<a-tag v-if="record.status === 1" color="green">登录成功</a-tag>
<a-tag v-else-if="record.status === 2" color="red">登录失败</a-tag>
<a-tag v-else color="gray">未知</a-tag>
</template>
<template #browser="{ record }">
<a-tooltip :content="record.userAgent">
<span>{{ record.browser || '-' }}</span>
</a-tooltip>
</template>
<template #os="{ record }">
<span>{{ record.os || '-' }}</span>
</template>
<template #operations="{ record }">
<a-space size="small">
<a-tooltip content="查看详情">
<a-button size="small" @click="showDetail(record)">
<template #icon>
<icon-eye />
</template>
</a-button>
</a-tooltip>
</a-space>
</template>
</a-table>
<!-- 详情弹窗 -->
<DetailModal
v-model:visible="detailModalVisible"
:login-log-id="selectedLoginLogId"
/>
</a-card>
</template>
<script lang="ts" setup>
import { ref, reactive, onMounted, computed } from 'vue';
import useLoading from '@/hooks/loading';
import type { Pagination } from '@/types/global';
import { Message } from '@arco-design/web-vue';
import { apiClient } from '@/api';
import { KamiInternalModelEntityV1SysUserLoginLog } from '@/api/generated/models';
import DetailModal from './components/detail-modal.vue';
const { loading, setLoading } = useLoading();
// 生成搜索参数ID
const generateSearchId = () => {
return Date.now().toString();
};
const searchId = ref(generateSearchId());
// 表单模型
const formModel = reactive({
loginName: '',
status: undefined as number | undefined,
dateRange: undefined as [string, string] | undefined
});
// 基础分页配置
const basePagination: Pagination = {
current: 1,
pageSize: 20
};
const pagination = reactive({ ...basePagination });
// 表格数据
const renderData = ref<KamiInternalModelEntityV1SysUserLoginLog[]>([]);
// 详情弹窗
const detailModalVisible = ref(false);
const selectedLoginLogId = ref<number>();
// 日期快捷选项
const dateShortcuts = [
{
label: '今天',
value: () => {
const end = new Date();
const start = new Date();
start.setHours(0, 0, 0, 0);
return [start, end];
}
},
{
label: '昨天',
value: () => {
const end = new Date();
const start = new Date();
end.setDate(end.getDate() - 1);
end.setHours(23, 59, 59, 999);
start.setDate(start.getDate() - 1);
start.setHours(0, 0, 0, 0);
return [start, end];
}
},
{
label: '最近7天',
value: () => {
const end = new Date();
const start = new Date();
start.setDate(start.getDate() - 7);
return [start, end];
}
},
{
label: '最近30天',
value: () => {
const end = new Date();
const start = new Date();
start.setDate(start.getDate() - 30);
return [start, end];
}
}
];
// 表格列配置
const columns = [
{
title: '序号',
dataIndex: 'index',
slotName: 'index',
width: 80
},
{
title: '登录名',
dataIndex: 'loginName',
width: 120
},
{
title: '登录IP',
dataIndex: 'ipAddr',
width: 140
},
{
title: '登录地点',
dataIndex: 'loginLocation',
width: 160,
ellipsis: true,
tooltip: true
},
{
title: '浏览器',
dataIndex: 'browser',
width: 120,
slotName: 'browser'
},
{
title: '操作系统',
dataIndex: 'os',
width: 120,
slotName: 'os'
},
{
title: '登录状态',
dataIndex: 'status',
width: 100,
slotName: 'status'
},
{
title: '登录时长',
dataIndex: 'loginTime',
width: 100
},
{
title: '登录时间',
dataIndex: 'createdAt',
width: 180
},
{
title: '操作',
slotName: 'operations',
width: 100,
fixed: 'right'
}
];
// 获取数据
const fetchData = async (
params: { current?: number; pageSize?: number } = {}
) => {
setLoading(true);
try {
const { current = 1, pageSize = pagination.pageSize } = params;
const requestParams = {
current,
pageSize,
loginName: formModel.loginName || undefined,
status: formModel.status,
startTime: formModel.dateRange?.[0],
endTime: formModel.dateRange?.[1]
};
const response = await apiClient.apiSysUserLoginLogListGet(requestParams);
if (response.data) {
renderData.value = response.data.list || [];
pagination.current = current;
pagination.total = response.data.total || 0;
}
} catch (error) {
console.error('获取登录日志失败:', error);
Message.error('获取登录日志失败');
} finally {
setLoading(false);
}
};
// 搜索
const search = () => {
fetchData({ current: 1 });
searchId.value = generateSearchId();
};
// 重置
const reset = () => {
formModel.loginName = '';
formModel.status = undefined;
formModel.dateRange = undefined;
fetchData({ current: 1 });
};
// 分页变化
const onPageChange = (current: number) => {
fetchData({ current });
};
// 每页条数变化
const onPageSizeChange = (pageSize: number) => {
pagination.pageSize = pageSize;
fetchData({ current: 1 });
};
// 显示详情
const showDetail = (record: KamiInternalModelEntityV1SysUserLoginLog) => {
selectedLoginLogId.value = record.id;
detailModalVisible.value = true;
};
onMounted(() => {
fetchData();
});
</script>