@yolo-croket-dev/amqp-access 0.7.29 → 0.7.31-slowquery.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/excel-upload-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/index.d.ts +1 -0
- package/excel-upload-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/index.js +1 -0
- package/excel-upload-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/run-naver-search-ad-excel-full-process.dto.d.ts +34 -0
- package/excel-upload-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/run-naver-search-ad-excel-full-process.dto.js +112 -0
- package/excel-upload-server/services/naver-search-ad.modules/amqp.naver-search-ad-excel.service.d.ts +8 -1
- package/excel-upload-server/services/naver-search-ad.modules/amqp.naver-search-ad-excel.service.js +9 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/index.d.ts +3 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/index.js +3 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/process-aggregation-purchased-info.dto.d.ts +12 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/process-aggregation-purchased-info.dto.js +29 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/process-naver-search-ad-excel-init.dto.d.ts +30 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/process-naver-search-ad-excel-init.dto.js +112 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/process-search-naver-sa.dto.d.ts +12 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/process-search-naver-sa.dto.js +29 -0
- package/order-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/run-naver-search-ad-excel-process.dto.d.ts +1 -2
- package/package.json +1 -1
- package/user-service/dto/user/command/app-switching-reward.dto.d.ts +4 -0
- package/user-service/dto/user/command/app-switching-reward.dto.js +2 -0
- package/user-service/dto/user/command/index.d.ts +1 -0
- package/user-service/dto/user/command/index.js +1 -0
- package/user-service/services/amqp.user-entity.service.d.ts +2 -1
- package/user-service/services/amqp.user-entity.service.js +3 -0
package/excel-upload-server/dto/naver-search-ad.modules/naver-search-ad-excel/command/index.js
CHANGED
|
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./generate-naver-search-ad-excel.dto"), exports);
|
|
18
|
+
__exportStar(require("./run-naver-search-ad-excel-full-process.dto"), exports);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author jun
|
|
3
|
+
* @description 네이버 검색광고 엑셀 전체 프로세스 실행 DTO (excel-upload-server 진입점)
|
|
4
|
+
* @process 1. 검색 조건 수신 → 2. order-server 단계별 호출 → 3. 엑셀 생성 → 4. Slack 알림
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 네이버 검색광고 엑셀 전체 프로세스 실행 Payload
|
|
8
|
+
*/
|
|
9
|
+
export declare class RunNaverSearchAdExcelFullProcessPayload {
|
|
10
|
+
/** 캠페인 ID (선택) */
|
|
11
|
+
nccCampaignId?: string;
|
|
12
|
+
/** 광고그룹 ID (선택) */
|
|
13
|
+
nccAdgroupId?: string;
|
|
14
|
+
/** 소재 ID (선택) */
|
|
15
|
+
adId?: string;
|
|
16
|
+
/** 상품 ID (선택) */
|
|
17
|
+
itemId?: string;
|
|
18
|
+
/** 결제 시작일 YYYY-MM-DD (필수) */
|
|
19
|
+
paymentSDate: string;
|
|
20
|
+
/** 결제 종료일 YYYY-MM-DD (필수) */
|
|
21
|
+
paymentEDate: string;
|
|
22
|
+
/** ROAS 시작값 (선택) */
|
|
23
|
+
roasStart?: number;
|
|
24
|
+
/** ROAS 종료값 (선택) */
|
|
25
|
+
roasEnd?: number;
|
|
26
|
+
/** 30일 ROAS 시작값 (선택) */
|
|
27
|
+
roas30Start?: number;
|
|
28
|
+
/** 30일 ROAS 종료값 (선택) */
|
|
29
|
+
roas30End?: number;
|
|
30
|
+
/** 입찰가 시작값 (선택) */
|
|
31
|
+
bidAmtStart?: number;
|
|
32
|
+
/** 입찰가 종료값 (선택) */
|
|
33
|
+
bidAmtEnd?: number;
|
|
34
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @author jun
|
|
4
|
+
* @description 네이버 검색광고 엑셀 전체 프로세스 실행 DTO (excel-upload-server 진입점)
|
|
5
|
+
* @process 1. 검색 조건 수신 → 2. order-server 단계별 호출 → 3. 엑셀 생성 → 4. Slack 알림
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.RunNaverSearchAdExcelFullProcessPayload = void 0;
|
|
18
|
+
const class_validator_1 = require("class-validator");
|
|
19
|
+
function getDaysDifference(startDateStr, endDateStr) {
|
|
20
|
+
const startDate = new Date(startDateStr);
|
|
21
|
+
const endDate = new Date(endDateStr);
|
|
22
|
+
const diffTime = endDate.getTime() - startDate.getTime();
|
|
23
|
+
return Math.floor(diffTime / (1000 * 60 * 60 * 24));
|
|
24
|
+
}
|
|
25
|
+
let DateRangeMax30DaysConstraint = class DateRangeMax30DaysConstraint {
|
|
26
|
+
validate(_value, args) {
|
|
27
|
+
const object = args.object;
|
|
28
|
+
const { paymentSDate, paymentEDate } = object;
|
|
29
|
+
try {
|
|
30
|
+
const diff = getDaysDifference(paymentSDate, paymentEDate);
|
|
31
|
+
return diff >= 0 && diff <= 30;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
defaultMessage() {
|
|
38
|
+
return '날짜 기간은 최대 30일까지만 가능합니다.';
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
DateRangeMax30DaysConstraint = __decorate([
|
|
42
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'dateRangeMax30Days', async: false })
|
|
43
|
+
], DateRangeMax30DaysConstraint);
|
|
44
|
+
/**
|
|
45
|
+
* 네이버 검색광고 엑셀 전체 프로세스 실행 Payload
|
|
46
|
+
*/
|
|
47
|
+
class RunNaverSearchAdExcelFullProcessPayload {
|
|
48
|
+
}
|
|
49
|
+
exports.RunNaverSearchAdExcelFullProcessPayload = RunNaverSearchAdExcelFullProcessPayload;
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, class_validator_1.IsString)(),
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "nccCampaignId", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, class_validator_1.IsString)(),
|
|
57
|
+
(0, class_validator_1.IsOptional)(),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "nccAdgroupId", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsString)(),
|
|
62
|
+
(0, class_validator_1.IsOptional)(),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "adId", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, class_validator_1.IsString)(),
|
|
67
|
+
(0, class_validator_1.IsOptional)(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "itemId", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_validator_1.IsString)(),
|
|
72
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
73
|
+
(0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/, { message: 'paymentSDate는 YYYY-MM-DD 형식이어야 합니다.' }),
|
|
74
|
+
(0, class_validator_1.Validate)(DateRangeMax30DaysConstraint),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "paymentSDate", void 0);
|
|
77
|
+
__decorate([
|
|
78
|
+
(0, class_validator_1.IsString)(),
|
|
79
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
80
|
+
(0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/, { message: 'paymentEDate는 YYYY-MM-DD 형식이어야 합니다.' }),
|
|
81
|
+
__metadata("design:type", String)
|
|
82
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "paymentEDate", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, class_validator_1.IsNumber)(),
|
|
85
|
+
(0, class_validator_1.IsOptional)(),
|
|
86
|
+
__metadata("design:type", Number)
|
|
87
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "roasStart", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, class_validator_1.IsNumber)(),
|
|
90
|
+
(0, class_validator_1.IsOptional)(),
|
|
91
|
+
__metadata("design:type", Number)
|
|
92
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "roasEnd", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, class_validator_1.IsNumber)(),
|
|
95
|
+
(0, class_validator_1.IsOptional)(),
|
|
96
|
+
__metadata("design:type", Number)
|
|
97
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "roas30Start", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, class_validator_1.IsNumber)(),
|
|
100
|
+
(0, class_validator_1.IsOptional)(),
|
|
101
|
+
__metadata("design:type", Number)
|
|
102
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "roas30End", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, class_validator_1.IsNumber)(),
|
|
105
|
+
(0, class_validator_1.IsOptional)(),
|
|
106
|
+
__metadata("design:type", Number)
|
|
107
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "bidAmtStart", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, class_validator_1.IsNumber)(),
|
|
110
|
+
(0, class_validator_1.IsOptional)(),
|
|
111
|
+
__metadata("design:type", Number)
|
|
112
|
+
], RunNaverSearchAdExcelFullProcessPayload.prototype, "bidAmtEnd", void 0);
|
package/excel-upload-server/services/naver-search-ad.modules/amqp.naver-search-ad-excel.service.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { ClientProxy } from '@nestjs/microservices';
|
|
2
2
|
import { AbstractParam } from '@yolo-croket-dev/core/interfaces';
|
|
3
|
-
import { GenerateNaverSearchAdExcelPayload, GenerateNaverSearchAdExcelResult } from '../../dto/naver-search-ad.modules/naver-search-ad-excel';
|
|
3
|
+
import { GenerateNaverSearchAdExcelPayload, GenerateNaverSearchAdExcelResult, RunNaverSearchAdExcelFullProcessPayload } from '../../dto/naver-search-ad.modules/naver-search-ad-excel';
|
|
4
4
|
export declare class AmqpNaverSearchAdExcelService {
|
|
5
5
|
private readonly client;
|
|
6
6
|
private readonly amqpManager;
|
|
7
7
|
constructor(client: ClientProxy);
|
|
8
8
|
generateNaverSearchAdExcel(payload: GenerateNaverSearchAdExcelPayload, param: AbstractParam): Promise<GenerateNaverSearchAdExcelResult>;
|
|
9
|
+
/**
|
|
10
|
+
* 네이버 검색광고 엑셀 전체 프로세스 실행 요청 (fire & forget)
|
|
11
|
+
* excel-upload-server가 order-server를 직접 호출하여 처리
|
|
12
|
+
* @param payload 검색 조건 Payload
|
|
13
|
+
* @param param AbstractParam
|
|
14
|
+
*/
|
|
15
|
+
runNaverSearchAdExcelFullProcess(payload: RunNaverSearchAdExcelFullProcessPayload, param: AbstractParam): void;
|
|
9
16
|
}
|
package/excel-upload-server/services/naver-search-ad.modules/amqp.naver-search-ad-excel.service.js
CHANGED
|
@@ -24,6 +24,15 @@ let AmqpNaverSearchAdExcelService = class AmqpNaverSearchAdExcelService {
|
|
|
24
24
|
async generateNaverSearchAdExcel(payload, param) {
|
|
25
25
|
return this.amqpManager.call('네이버 검색 광고 엑셀 생성', 'naver-search-ad-excel.generate.excel', payload, param, { isErrorThrowing: true });
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* 네이버 검색광고 엑셀 전체 프로세스 실행 요청 (fire & forget)
|
|
29
|
+
* excel-upload-server가 order-server를 직접 호출하여 처리
|
|
30
|
+
* @param payload 검색 조건 Payload
|
|
31
|
+
* @param param AbstractParam
|
|
32
|
+
*/
|
|
33
|
+
runNaverSearchAdExcelFullProcess(payload, param) {
|
|
34
|
+
this.amqpManager.onlyPublish('네이버 검색광고 엑셀 전체 프로세스 실행 요청', 'naver-search-ad-excel.run.full-process', payload, param);
|
|
35
|
+
}
|
|
27
36
|
};
|
|
28
37
|
exports.AmqpNaverSearchAdExcelService = AmqpNaverSearchAdExcelService;
|
|
29
38
|
exports.AmqpNaverSearchAdExcelService = AmqpNaverSearchAdExcelService = __decorate([
|
|
@@ -15,3 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./run-naver-search-ad-excel-process.dto"), exports);
|
|
18
|
+
__exportStar(require("./process-naver-search-ad-excel-init.dto"), exports);
|
|
19
|
+
__exportStar(require("./process-search-naver-sa.dto"), exports);
|
|
20
|
+
__exportStar(require("./process-aggregation-purchased-info.dto"), exports);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author jun
|
|
3
|
+
* @description 구매 정보 집계 DTO
|
|
4
|
+
* @process 1. Payload 검증 → 2. 구매 정보 집계 처리
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 구매 정보 집계 Payload
|
|
8
|
+
*/
|
|
9
|
+
export declare class ProcessAggregationPurchasedInfoPayload {
|
|
10
|
+
/** NaverSearchAdExcel 문서 ID */
|
|
11
|
+
naverSearchAdExcelId: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @author jun
|
|
4
|
+
* @description 구매 정보 집계 DTO
|
|
5
|
+
* @process 1. Payload 검증 → 2. 구매 정보 집계 처리
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ProcessAggregationPurchasedInfoPayload = void 0;
|
|
18
|
+
const class_validator_1 = require("class-validator");
|
|
19
|
+
/**
|
|
20
|
+
* 구매 정보 집계 Payload
|
|
21
|
+
*/
|
|
22
|
+
class ProcessAggregationPurchasedInfoPayload {
|
|
23
|
+
}
|
|
24
|
+
exports.ProcessAggregationPurchasedInfoPayload = ProcessAggregationPurchasedInfoPayload;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsString)(),
|
|
27
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], ProcessAggregationPurchasedInfoPayload.prototype, "naverSearchAdExcelId", void 0);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author jun
|
|
3
|
+
* @description 네이버 검색광고 엑셀 init 생성 DTO
|
|
4
|
+
* @process 1. Payload 검증 → 2. 서비스 호출 → 3. naverSearchAdExcelId 반환
|
|
5
|
+
*/
|
|
6
|
+
import { Types } from 'mongoose';
|
|
7
|
+
/**
|
|
8
|
+
* 네이버 검색광고 엑셀 init 생성 Payload
|
|
9
|
+
*/
|
|
10
|
+
export declare class ProcessNaverSearchAdExcelInitPayload {
|
|
11
|
+
nccCampaignId?: string;
|
|
12
|
+
nccAdgroupId?: string;
|
|
13
|
+
adId?: string;
|
|
14
|
+
itemId?: string;
|
|
15
|
+
paymentSDate: string;
|
|
16
|
+
paymentEDate: string;
|
|
17
|
+
roasStart?: number;
|
|
18
|
+
roasEnd?: number;
|
|
19
|
+
roas30Start?: number;
|
|
20
|
+
roas30End?: number;
|
|
21
|
+
bidAmtStart?: number;
|
|
22
|
+
bidAmtEnd?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 네이버 검색광고 엑셀 init 생성 Result
|
|
26
|
+
*/
|
|
27
|
+
export interface ProcessNaverSearchAdExcelInitResult {
|
|
28
|
+
/** 생성된 NaverSearchAdExcel 문서 ID */
|
|
29
|
+
naverSearchAdExcelId: Types.ObjectId;
|
|
30
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @author jun
|
|
4
|
+
* @description 네이버 검색광고 엑셀 init 생성 DTO
|
|
5
|
+
* @process 1. Payload 검증 → 2. 서비스 호출 → 3. naverSearchAdExcelId 반환
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ProcessNaverSearchAdExcelInitPayload = void 0;
|
|
18
|
+
const class_validator_1 = require("class-validator");
|
|
19
|
+
function getDaysDifference(startDateStr, endDateStr) {
|
|
20
|
+
const startDate = new Date(startDateStr);
|
|
21
|
+
const endDate = new Date(endDateStr);
|
|
22
|
+
const diffTime = endDate.getTime() - startDate.getTime();
|
|
23
|
+
return Math.floor(diffTime / (1000 * 60 * 60 * 24));
|
|
24
|
+
}
|
|
25
|
+
let DateRangeMax30DaysConstraint = class DateRangeMax30DaysConstraint {
|
|
26
|
+
validate(_value, args) {
|
|
27
|
+
const object = args.object;
|
|
28
|
+
const { paymentSDate, paymentEDate } = object;
|
|
29
|
+
try {
|
|
30
|
+
const diff = getDaysDifference(paymentSDate, paymentEDate);
|
|
31
|
+
return diff >= 0 && diff <= 30;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
defaultMessage() {
|
|
38
|
+
return '날짜 기간은 최대 30일까지만 가능합니다.';
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
DateRangeMax30DaysConstraint = __decorate([
|
|
42
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'dateRangeMax30Days', async: false })
|
|
43
|
+
], DateRangeMax30DaysConstraint);
|
|
44
|
+
/**
|
|
45
|
+
* 네이버 검색광고 엑셀 init 생성 Payload
|
|
46
|
+
*/
|
|
47
|
+
class ProcessNaverSearchAdExcelInitPayload {
|
|
48
|
+
}
|
|
49
|
+
exports.ProcessNaverSearchAdExcelInitPayload = ProcessNaverSearchAdExcelInitPayload;
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, class_validator_1.IsString)(),
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "nccCampaignId", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, class_validator_1.IsString)(),
|
|
57
|
+
(0, class_validator_1.IsOptional)(),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "nccAdgroupId", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsString)(),
|
|
62
|
+
(0, class_validator_1.IsOptional)(),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "adId", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, class_validator_1.IsString)(),
|
|
67
|
+
(0, class_validator_1.IsOptional)(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "itemId", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_validator_1.IsString)(),
|
|
72
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
73
|
+
(0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/, { message: 'paymentSDate는 YYYY-MM-DD 형식이어야 합니다.' }),
|
|
74
|
+
(0, class_validator_1.Validate)(DateRangeMax30DaysConstraint),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "paymentSDate", void 0);
|
|
77
|
+
__decorate([
|
|
78
|
+
(0, class_validator_1.IsString)(),
|
|
79
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
80
|
+
(0, class_validator_1.Matches)(/^\d{4}-\d{2}-\d{2}$/, { message: 'paymentEDate는 YYYY-MM-DD 형식이어야 합니다.' }),
|
|
81
|
+
__metadata("design:type", String)
|
|
82
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "paymentEDate", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, class_validator_1.IsNumber)(),
|
|
85
|
+
(0, class_validator_1.IsOptional)(),
|
|
86
|
+
__metadata("design:type", Number)
|
|
87
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "roasStart", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, class_validator_1.IsNumber)(),
|
|
90
|
+
(0, class_validator_1.IsOptional)(),
|
|
91
|
+
__metadata("design:type", Number)
|
|
92
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "roasEnd", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, class_validator_1.IsNumber)(),
|
|
95
|
+
(0, class_validator_1.IsOptional)(),
|
|
96
|
+
__metadata("design:type", Number)
|
|
97
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "roas30Start", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, class_validator_1.IsNumber)(),
|
|
100
|
+
(0, class_validator_1.IsOptional)(),
|
|
101
|
+
__metadata("design:type", Number)
|
|
102
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "roas30End", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, class_validator_1.IsNumber)(),
|
|
105
|
+
(0, class_validator_1.IsOptional)(),
|
|
106
|
+
__metadata("design:type", Number)
|
|
107
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "bidAmtStart", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, class_validator_1.IsNumber)(),
|
|
110
|
+
(0, class_validator_1.IsOptional)(),
|
|
111
|
+
__metadata("design:type", Number)
|
|
112
|
+
], ProcessNaverSearchAdExcelInitPayload.prototype, "bidAmtEnd", void 0);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author jun
|
|
3
|
+
* @description 네이버 SA 데이터 검색 및 저장 DTO
|
|
4
|
+
* @process 1. Payload 검증 → 2. Naver API 데이터 수집 → 3. DB 저장
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 네이버 SA 데이터 검색 및 저장 Payload
|
|
8
|
+
*/
|
|
9
|
+
export declare class ProcessSearchNaverSaPayload {
|
|
10
|
+
/** NaverSearchAdExcel 문서 ID */
|
|
11
|
+
naverSearchAdExcelId: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @author jun
|
|
4
|
+
* @description 네이버 SA 데이터 검색 및 저장 DTO
|
|
5
|
+
* @process 1. Payload 검증 → 2. Naver API 데이터 수집 → 3. DB 저장
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ProcessSearchNaverSaPayload = void 0;
|
|
18
|
+
const class_validator_1 = require("class-validator");
|
|
19
|
+
/**
|
|
20
|
+
* 네이버 SA 데이터 검색 및 저장 Payload
|
|
21
|
+
*/
|
|
22
|
+
class ProcessSearchNaverSaPayload {
|
|
23
|
+
}
|
|
24
|
+
exports.ProcessSearchNaverSaPayload = ProcessSearchNaverSaPayload;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsString)(),
|
|
27
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], ProcessSearchNaverSaPayload.prototype, "naverSearchAdExcelId", void 0);
|
|
@@ -35,10 +35,9 @@ export declare class RunNaverSearchAdExcelProcessPayload {
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* 네이버 검색광고 엑셀 전체 프로세스 실행 Result
|
|
38
|
+
* (엑셀 생성은 excel-upload-server에서 처리하므로 naverSearchAdExcelId만 반환)
|
|
38
39
|
*/
|
|
39
40
|
export interface RunNaverSearchAdExcelProcessResult {
|
|
40
41
|
/** NaverSearchAdExcel 문서 ID */
|
|
41
42
|
naverSearchAdExcelId: Types.ObjectId;
|
|
42
|
-
/** 엑셀 다운로드 URL */
|
|
43
|
-
excelUrl: string;
|
|
44
43
|
}
|
package/package.json
CHANGED
|
@@ -24,3 +24,4 @@ __exportStar(require("./sign-in-guest-user.dto"), exports);
|
|
|
24
24
|
__exportStar(require("./sign-up-guest-user.dto"), exports);
|
|
25
25
|
__exportStar(require("./update-guest-username.dto"), exports);
|
|
26
26
|
__exportStar(require("./reversal-credit-by-p-info-id.dto"), exports);
|
|
27
|
+
__exportStar(require("./app-switching-reward.dto"), exports);
|
|
@@ -3,7 +3,7 @@ import { AbstractParam } from '@yolo-croket-dev/core';
|
|
|
3
3
|
/** @dto -v2 */
|
|
4
4
|
import { DecodePhoneNumbersPayload, PhoneDecodedData } from '@yolo-croket-dev/dto-v2/user-service';
|
|
5
5
|
import { SaveShippingAddressPayload } from '../dto/user/command/save-shipping-address.dto';
|
|
6
|
-
import { GetDuplicateUsersByPhoneNumberPayload, GetDuplicateUsersByPhoneNumberResult, GetUserIdsByUsernamePayload, GetUserIdsByUsernameResult, GetUserInfosForPartialRefundPayload, GetUserInfosForPartialRefundResult, IssueSignupRewardPayload, IssueSignupRewardResult, PatchGenderAndBirthdayPayload, SaveSystemAppPushAcceptPayload, IssueInflowSignupRewardResult, VerificationPhoneForSnsUserPayload, SignInGuestUserPayload, SignInGuestUserResult, UpdateGuestUsernamePayload } from '../dto';
|
|
6
|
+
import { GetDuplicateUsersByPhoneNumberPayload, GetDuplicateUsersByPhoneNumberResult, GetUserIdsByUsernamePayload, GetUserIdsByUsernameResult, GetUserInfosForPartialRefundPayload, GetUserInfosForPartialRefundResult, IssueSignupRewardPayload, IssueSignupRewardResult, PatchGenderAndBirthdayPayload, SaveSystemAppPushAcceptPayload, IssueInflowSignupRewardResult, VerificationPhoneForSnsUserPayload, SignInGuestUserPayload, SignInGuestUserResult, UpdateGuestUsernamePayload, AppSwitchingRewardPayload, AppSwitchingRewardResult } from '../dto';
|
|
7
7
|
/** 기존 userService 와 이름이 겹쳐 userEntityService로 임시 사용 */
|
|
8
8
|
export declare class AmqpUserEntityService {
|
|
9
9
|
private readonly client;
|
|
@@ -21,4 +21,5 @@ export declare class AmqpUserEntityService {
|
|
|
21
21
|
verificationPhoneForSnsUser(payload: VerificationPhoneForSnsUserPayload, param: AbstractParam): Promise<void>;
|
|
22
22
|
signInGuestUser(payload: SignInGuestUserPayload, param: AbstractParam): Promise<SignInGuestUserResult>;
|
|
23
23
|
updateGuestUserName(payload: UpdateGuestUsernamePayload, param: AbstractParam): Promise<void>;
|
|
24
|
+
appSwitchingReward(payload: AppSwitchingRewardPayload, param: AbstractParam): Promise<AppSwitchingRewardResult>;
|
|
24
25
|
}
|
|
@@ -58,6 +58,9 @@ let AmqpUserEntityService = class AmqpUserEntityService {
|
|
|
58
58
|
async updateGuestUserName(payload, param) {
|
|
59
59
|
return this.amqpManager.call('유저 - 게스트 유저 이름 수정', 'user.update.guest-user-name', payload, param, { isErrorThrowing: true });
|
|
60
60
|
}
|
|
61
|
+
async appSwitchingReward(payload, param) {
|
|
62
|
+
return this.amqpManager.call('유저 - 웹 -> 앱 전환 리워드 발급', 'user.issue.app-switching-reward', payload, param, { isErrorThrowing: true });
|
|
63
|
+
}
|
|
61
64
|
};
|
|
62
65
|
exports.AmqpUserEntityService = AmqpUserEntityService;
|
|
63
66
|
exports.AmqpUserEntityService = AmqpUserEntityService = __decorate([
|