347 lines
8.1 KiB
TypeScript
Raw Normal View History

2023-09-11 11:49:58 +08:00
/*
* @Author: Kane
* @Date: 2023-09-11 09:59:00
* @LastEditors: Kane
* @FilePath: /task_schedule/src/utils/reward.ts
2023-09-11 18:27:06 +08:00
* @Description: API
2023-09-11 11:49:58 +08:00
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { type AxiosResponse } from "axios";
import { service as instance } from "./api/request.js";
import { API_URL } from "./api/config.js";
interface RewardProject
{
rewardCode: number;
rewardName: string;
}
interface RewardProjectResponse
{
success: boolean;
message: string;
2023-09-11 18:27:06 +08:00
rewardList: RewardProject[] | null;
2023-09-11 11:49:58 +08:00
}
interface RewardGainer
{
2023-09-13 18:01:07 +08:00
recID: number;
2023-09-11 11:49:58 +08:00
callerName: string;
callerCode: string;
rewardProjectCode: string;
rewardProjectName: string;
}
2023-09-11 18:27:06 +08:00
interface RewardGainerResponse
{
success: boolean;
message: string;
2023-09-13 18:01:07 +08:00
gainerList: RewardGainer[] | null;
2023-09-11 18:27:06 +08:00
}
2023-09-21 22:58:01 +08:00
interface AddRewardTelsalerRequest
{
telsalerName: string;
rewardIndex: number;
}
interface AddRewardTelsalerResponse
{
success: boolean;
message: string;
}
2023-09-24 01:17:54 +08:00
interface UpdateRewardTelsalerRequest
{
recordID: number,
telsalerName: string;
rewardIndex: number;
}
interface UpdateRewardTelsalerResponse
{
success: boolean;
message: string;
}
2023-09-18 18:32:21 +08:00
interface DeleteRewardTelsalerRequest
{
2023-09-25 16:23:26 +08:00
recordID: number[];
2023-09-18 18:32:21 +08:00
}
interface DeleteRewardTelsalerResponse
{
success: boolean;
message: string;
}
2023-09-11 11:49:58 +08:00
/**
*
* @param handler
*/
function requestRewardPorjectsList( handler: any ): void
{
if ( handler === undefined || handler === null )
{
return;
}
2023-09-11 18:27:06 +08:00
const rewardResponse: RewardProjectResponse = {
success: false,
message: "",
rewardList: [],
};
2023-09-11 11:49:58 +08:00
instance.request({
url: API_URL.URL_RWARD_PROJECTS,
method: "post",
})
// 请求成功,检查服务器返回结果
.then(( response: AxiosResponse<any, any> ): void =>
{
const data = response.data ?? {};
2023-09-11 18:27:06 +08:00
rewardResponse.success = data.success ?? false;
rewardResponse.message = data.message ?? "";
rewardResponse.rewardList = checkRewardProjects( data.rewardList ?? []);
handler( rewardResponse, null );
2023-09-11 11:49:58 +08:00
})
.catch(( error: any ): void =>
{
console.log( error );
2023-09-11 18:27:06 +08:00
rewardResponse.success = false;
handler( rewardResponse, error );
});
}
/**
2023-09-18 18:32:21 +08:00
*
* @param handler
2023-09-11 18:27:06 +08:00
*/
function requestRewardGainers( handler: any ): void
{
if ( handler === undefined || handler === null )
{
return;
}
const rewardResponse: RewardGainerResponse = {
success: false,
message: "",
gainerList: [],
};
instance.request({
url: API_URL.URL_REWARD_GAINERS,
method: "post",
})
.then(( response: AxiosResponse<any, any> ): void =>
{
const data = response.data ?? {};
rewardResponse.success = data.success;
rewardResponse.message = data.message;
2023-09-13 18:01:07 +08:00
rewardResponse.gainerList = checkRewardGainers( data.gainerList );
2023-09-11 18:27:06 +08:00
handler( rewardResponse, null );
})
.catch(( error: any ): void =>
{
console.log( error );
rewardResponse.success = false;
handler( rewardResponse, error );
2023-09-11 11:49:58 +08:00
});
}
2023-09-21 22:58:01 +08:00
function addRewardTelsaler( data: AddRewardTelsalerRequest, handler: any ): void
{
if ( handler === undefined || handler === null )
{
return;
}
const addResponse: AddRewardTelsalerResponse = {
success: false,
message: "",
};
instance.request({
method: "post",
url: API_URL.URL_ADD_REWARD_TELSALER,
data,
})
.then(( response: AxiosResponse<any, any> ): void =>
{
2023-09-24 01:17:54 +08:00
const data: AddRewardTelsalerResponse = response.data ?? {};
addResponse.success = data.success ?? false;
addResponse.message = data.message ?? "";
2023-09-21 22:58:01 +08:00
2023-09-24 01:17:54 +08:00
handler( addResponse );
2023-09-21 22:58:01 +08:00
})
.catch(( error ): void =>
{
console.log( error );
2023-09-24 01:17:54 +08:00
addResponse.success = false;
addResponse.message = "请求添加获奖坐席失败,请查看控制台!";
handler( addResponse, error );
});
}
/**
* handler函数
* @param data
* @param handler
*/
function updateTelsalerReward( data: UpdateRewardTelsalerRequest, handler: any ): void
{
if ( handler === undefined || handler === null )
{
return;
}
const updateResponse: UpdateRewardTelsalerResponse = {
success: false,
message: "",
};
instance.request({
method: "post",
url: API_URL.URL_UPDATE_REWARD_TELSALER,
data,
})
.then(( response: AxiosResponse<any, any> ): any =>
{
const data: UpdateRewardTelsalerResponse = response.data ?? {};
updateResponse.success = data.success ?? false;
updateResponse.message = data.message ?? "";
handler( updateResponse );
})
.catch(( error: any ): void =>
{
updateResponse.success = false;
updateResponse.message = "请求更新获奖坐席失败,请查看控制台!";
console.log( error );
handler( updateResponse, error );
2023-09-21 22:58:01 +08:00
});
}
2023-09-18 18:32:21 +08:00
/**
*
* @param data
* @param handler
*/
function deleteRewardTelsaler( data: DeleteRewardTelsalerRequest, handler: any ): void
{
if ( handler === undefined || handler === null )
{
return;
}
const deleteResponse: DeleteRewardTelsalerResponse = {
success: false,
message: "",
};
instance.request({
method: "post",
2023-09-25 16:23:26 +08:00
url: API_URL.URL_DEL_REWARD_TELSALER,
2023-09-18 18:32:21 +08:00
data,
})
.then(( response: AxiosResponse<any, any> ): void =>
{
const data: DeleteRewardTelsalerResponse = response.data ?? {};
deleteResponse.success = data.success ?? false;
deleteResponse.message = data.message ?? "";
handler( deleteResponse );
})
.catch(( error: any ): void =>
{
deleteResponse.message = "请求删除获奖坐席失败,请检查日志!";
deleteResponse.success = false;
console.log( error );
2023-09-24 01:17:54 +08:00
handler( deleteResponse, error );
2023-09-18 18:32:21 +08:00
});
}
2023-09-11 11:49:58 +08:00
// **功能函数 **********************************/
function checkRewardProjects( data: any[]): RewardProject[] | null
{
const rewardList: RewardProject[] = [];
// 检查一下参数的类型,如果不是数组返回 null
if ( !( data instanceof Array ))
{
return null;
}
data.forEach(( item: any ) =>
{
const reward = {
rewardCode: item.rewardCode ?? "",
rewardName: item.rewardName ?? "",
};
rewardList.push( reward );
});
return rewardList;
}
2023-09-11 18:27:06 +08:00
function checkRewardGainers( gainers: any[]): RewardGainer[] | null
{
const gainerList: RewardGainer[] = [];
if ( !( gainers instanceof Array ))
{
return null;
}
gainers.forEach(( item: RewardGainer ): void =>
{
const gainer: RewardGainer = {
2023-09-13 18:01:07 +08:00
recID: item.recID ?? "",
2023-09-11 18:27:06 +08:00
callerName: item.callerName ?? "",
callerCode: item.callerCode ?? "",
rewardProjectCode: item.rewardProjectCode ?? "",
rewardProjectName: item.rewardProjectName ?? "",
};
2023-09-13 18:01:07 +08:00
gainerList.push( gainer );
2023-09-11 18:27:06 +08:00
});
return gainerList;
}
2023-09-11 11:49:58 +08:00
export {
type RewardProject,
type RewardGainer,
type RewardProjectResponse,
2023-09-11 18:27:06 +08:00
type RewardGainerResponse,
2023-09-18 18:32:21 +08:00
type DeleteRewardTelsalerRequest,
type DeleteRewardTelsalerResponse,
2023-09-21 22:58:01 +08:00
type AddRewardTelsalerRequest,
type AddRewardTelsalerResponse,
2023-09-24 01:17:54 +08:00
type UpdateRewardTelsalerRequest,
type UpdateRewardTelsalerResponse,
2023-09-11 18:27:06 +08:00
requestRewardPorjectsList,
2023-09-18 18:32:21 +08:00
requestRewardGainers,
2023-09-21 22:58:01 +08:00
addRewardTelsaler,
2023-09-24 01:17:54 +08:00
updateTelsalerReward,
2023-09-18 18:32:21 +08:00
deleteRewardTelsaler
2023-09-11 11:49:58 +08:00
};