Commit b5aaf815 by Leo Zheng

修改 paymentMethodAnalysis 和 ticketAnalysis 接口的参数

parent a2b78e4f
......@@ -13,7 +13,7 @@ import { strategyFactory } from "./strategyFactory";
* @param strategyType - The type of strategy to be used.
*/
export function getData(req, res, strategyType: string) {
console.log(`Request received from IP: ${req.ip}, Request: ${JSON.stringify(req.query)}`);
console.log(`Request received from IP: ${req.ip}, Request: ${strategyType}, Params: ${JSON.stringify(req.query)}`);
const strategy = strategyFactory.createStrategy(strategyType);
let ret = strategy.execute(req);
res.setHeader('Content-Type', 'application/json; charset=utf-8');
......
......@@ -8,7 +8,7 @@ export default class paymentMethodAnalysisStrategy extends abstractDataStrategyL
execute(params?: any): any {
paramChecker.checkDiscreteParam(params, 'timeFrame', '12month', '3year');
paramChecker.checkDiscreteParam(params, 'type', 'amount', 'ticketNumber');
paramChecker.checkDiscreteParam(params, 'type', 'amount', 'ticketCount');
paramChecker.checkDiscreteParam(params, 'ticketCategory', 'sales', 'verified', 'refund');
const data = this.extractor.getData(paymentMethodAnalysisStrategy.FILENAME, paymentMethodAnalysisStrategy.SHEETNAME);
return this.processData(data, params.query['timeFrame'], params.query['type'], params.query['ticketCategory']);
......@@ -70,7 +70,7 @@ export default class paymentMethodAnalysisStrategy extends abstractDataStrategyL
return {
paymentMethod: key,
amount: parseFloat(amount.toFixed(2)),
percentage: `${percentage}%`,
percentage: parseFloat(parseFloat(percentage).toFixed(0)),
unit: type === 'amount' ? '元' : '张'
};
});
......
import { abstractDataStrategyLeft } from "./abstractDataStrategyLeft";
import paramChecker from "../../../../util/paramChecker";
import excelSerialToJSDate from "../../../../util/excelDateToJSDate";
export default class ticketAnalysisStrategy extends abstractDataStrategyLeft {
static readonly FILENAME = '票务系统.xlsx';
......@@ -9,18 +8,18 @@ export default class ticketAnalysisStrategy extends abstractDataStrategyLeft {
execute(params?: any): any {
paramChecker.checkDiscreteParam(params, 'category', 'total', 'group', 'solo');
paramChecker.checkDiscreteParam(params, 'timeFrame', '12month', '3year');
paramChecker.checkDiscreteParam(params, 'type', 'amount', 'ticketNumber');
paramChecker.checkDiscreteParam(params, 'type', 'amount', 'ticketCount');
paramChecker.checkDiscreteParam(params, 'ticketCategory', 'sales', 'verified', 'refund', 'conversion');
const data = this.extractor.getData(ticketAnalysisStrategy.FILENAME, ticketAnalysisStrategy.SHEETNAME);
return this.processData(data, params.query['category'], params.query['timeFrame'], params.query['type'], params.query['ticketCategory']);
}
processData(data: any, category: string, timeFrame: string, type: string, ticketCategory: string): any {
return this.processTrendData(data, timeFrame);
return this.processTrendData(data, timeFrame, category);
}
private processTrendData(data: any, timeFrame: string): any {
private processTrendData(data: any, timeFrame: string, category: string): any {
const currentDate = new Date();
const startMonth = currentDate.getMonth() + 1;
let startDate = new Date();
......@@ -34,19 +33,26 @@ export default class ticketAnalysisStrategy extends abstractDataStrategyLeft {
for (let i = 0; i < 12; i++) {
const date = new Date(startDate);
date.setMonth(startDate.getMonth() + i - (line - 1) * 12);
const month = (date.getMonth() + 1).toString().padStart(2, '0'); // Format the month to MM
const month = (date.getMonth() + 1).toString().padStart(2, '0');
monthlyTrend.push({ key: month, value: Math.floor(Math.random() * 100) + 20 });
}
// monthlyTrend.sort((a, b) => parseInt(a.key) - parseInt(b.key));
trendData.push({
line,
monthlyTrend: monthlyTrend
});
}
return trendData;
const totalSolo = 800;
const totalGroup = 750;
const total = totalSolo + totalGroup;
const soloRatio = ((totalSolo / total) * 100).toFixed(0);
const ratioData = category === 'group'
? { name: '团客占比', value: 100 - parseFloat(soloRatio) }
: category === 'solo' ? { name: '散客占比', value: parseFloat(soloRatio) } : null;
return ratioData ? { trendData, ratioData } : {trendData};
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment