Merge branch 'feature/BETERAN-BACKEND-APP-BROWSER-init' of https://gitlab.loafle.net/bet/beteran-backend-app-browser into feature/BETERAN-BACKEND-APP-BROWSER-init

This commit is contained in:
이담 정 2022-08-04 11:50:11 +00:00
commit 73f369ac42
4 changed files with 347 additions and 233 deletions

View File

@ -3,39 +3,128 @@
export const slots = [ export const slots = [
{ {
id: '7eb7c859-1347-4317-96b6-9476a7e2ba3c', id: '7eb7c859-1347-4317-96b6-9476a7e2ba3c',
signinId: 'aa200',
highRank: '[매장]kgon5', highRank: '[매장]kgon5',
gameId: 'ks1_1007', gameId: 'ks1_1007',
signinId: 'aa100', nickname: 'aa200',
nickname: 'aa100', vendorName: '프라그마스틱 슬롯',
gameName: '프라그마틱슬롯', gameName: '스타라이트 프린세스',
gameInfo1: '스타라이트 프린세스', bettingId: '62acfwdcmdkei911dkd81221fb',
gameInfo2: '', betStatus: '베팅',
gameInfo3: '62afded8114e77723a93caa2', betPrevMoney: '187,730',
gameType: '배팅', bettingMoney: '1,000',
betting: 800, betAfterMoney: '186,930',
beforeBetting: 187730,
afterBetting: 186903,
data: '',
comp: 'Y', comp: 'Y',
mainofficeName: 'kgon1', mainInfo: {
mainofficePercent: '2.80', name: 'kgon1',
mainofficePoint: '22.40', commissionRate: '2.80%',
branchName: 'kgon2', point: '22.40P',
branchPercent: '0.20', },
branchPoint: '1.60', branchInfo: {
divisionName: 'kgon3', name: 'kgon2',
divisionPercent: '0.20', commissionRate: '0.20%',
divisionPoint: '1.60', point: '1.60P',
officeName: 'kgon4', },
officePercent: '0.30', divisionInfo: {
officePoint: '2.40', name: 'kgon3',
storeName: 'kgon5', commissionRate: '0.20%',
storePercent: '1.50', point: '1.60P',
storePoint: '12.00', },
memberName: '', officeInfo: {
memberPercent: '', name: 'kgon4',
memberPoint: '', commissionRate: '0.30%',
bettingTime: '2022-06-20 11:43:37', point: '2.40P',
registrationDate: '2022-06-20 11:45:02', },
storeInfo: {
name: 'kgon5',
commissionRate: '1.50',
point: '12.00P',
},
bettingRegistDate: '2022-06-20 11:43:37',
registrationDate: '2022-06-20 11:43:37',
},
{
id: '7eb7c859-1347-4337-96b6-9476a7e2ba3c',
signinId: 'aa200',
highRank: '[매장]kgon5',
gameId: 'ks1_1007',
nickname: 'aa200',
vendorName: '프라그마스틱 슬롯',
gameName: '스타라이트 프린세스',
bettingId: '62acfwdcmdkei911dkd81221fb',
betStatus: '베팅',
betPrevMoney: '187,730',
bettingMoney: '1,000',
betAfterMoney: '186,930',
comp: 'Y',
mainInfo: {
name: 'kgon1',
commissionRate: '2.80%',
point: '22.40P',
},
branchInfo: {
name: 'kgon2',
commissionRate: '0.20%',
point: '1.60P',
},
divisionInfo: {
name: 'kgon3',
commissionRate: '0.20%',
point: '1.60P',
},
officeInfo: {
name: 'kgon4',
commissionRate: '0.30%',
point: '2.40P',
},
storeInfo: {
name: 'kgon5',
commissionRate: '1.50',
point: '12.00P',
},
bettingRegistDate: '2022-06-20 11:43:37',
registrationDate: '2022-06-20 11:43:37',
},
{
id: '7eb7c859-1347-4327-96b6-9476a7e2ba3c',
signinId: 'aa200',
highRank: '[매장]kgon5',
gameId: 'ks1_1007',
nickname: 'aa200',
vendorName: '프라그마스틱 슬롯',
gameName: '스타라이트 프린세스',
bettingId: '62acfwdcmdkei911dkd81221fb',
betStatus: '베팅',
betPrevMoney: '187,730',
bettingMoney: '1,000',
betAfterMoney: '186,930',
comp: 'Y',
mainInfo: {
name: 'kgon1',
commissionRate: '2.80%',
point: '22.40P',
},
branchInfo: {
name: 'kgon2',
commissionRate: '0.20%',
point: '1.60P',
},
divisionInfo: {
name: 'kgon3',
commissionRate: '0.20%',
point: '1.60P',
},
officeInfo: {
name: 'kgon4',
commissionRate: '0.30%',
point: '2.40P',
},
storeInfo: {
name: 'kgon5',
commissionRate: '1.50',
point: '12.00P',
},
bettingRegistDate: '2022-06-20 11:43:37',
registrationDate: '2022-06-20 11:43:37',
}, },
]; ];

View File

@ -10,54 +10,48 @@
<mat-progress-bar [mode]="'indeterminate'"></mat-progress-bar> <mat-progress-bar [mode]="'indeterminate'"></mat-progress-bar>
</div> </div>
<!-- Title --> <!-- Title -->
<div class="text-4xl font-extrabold tracking-tight">슬롯배팅리스트</div> <div class="text-4xl font-extrabold tracking-tight">슬롯베팅리스트</div>
<!-- 슬롯 게임 요약 정보 -->
<div
class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-4 px-6 md:px-8 border-b"
></div>
<!-- Actions --> <!-- Actions -->
<div class="flex shrink-0 items-center mt-6 sm:mt-0 sm:ml-4"> <div class="flex shrink-0 items-center mt-6 sm:mt-0 sm:ml-4">
<!-- Search --> <!-- Search -->
<div>
<span style="color: blue">2022-01-01 00:00</span><span>~</span>
<span style="color: blue">2022-06-21 23:59</span>
<span
>까지의 총 유효배팅:<span style="color: red">12,440,000</span></span
>&nbsp;&nbsp;
<span>배팅금액:<span style="color: red">12,751,000</span></span
>&nbsp;&nbsp;
<span>당첨:<span style="color: red">12,199,950</span></span
>&nbsp;&nbsp;
<span>취소:<span style="color: red">10,000</span></span>&nbsp;&nbsp;
<span>배팅-당첨-취소:<span style="color: red">542,050</span></span
>&nbsp;&nbsp;
<span>본사롤링:<span style="color: red">60,202</span></span
>&nbsp;&nbsp;
<span>대본롤링:<span style="color: red">36,390</span></span
>&nbsp;&nbsp;
<span>부본롤링:<span style="color: red">24,828</span></span
>&nbsp;&nbsp;
<span>총판롤링:<span style="color: red">24,752</span></span
>&nbsp;&nbsp;
<span>매장롤링:<span style="color: red">13,451</span></span
>&nbsp;&nbsp;
<span>회원롤링:<span style="color: red">81,037</span></span
>&nbsp;&nbsp;
<span>롤링합계:<span style="color: red">240,660</span></span>
</div>
<button mat-icon-button (click)="__onClickSearch()"> <button mat-icon-button (click)="__onClickSearch()">
<mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon> <mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon>
</button> </button>
</div> </div>
</div> </div>
<!-- Memo -->
<div <div
class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-4 px-6 md:px-8 border-b" class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-4 px-6 md:px-8 border-b"
> >
<!-- <mat-form-field <div class="flex items-center justify-center px-6 py-4 space-x-3">
class="bet-mat-form-field-wrapper-mb-0 mr-2" <div class="grid grid-cols-2 gap-x-4 gap-y-1">
style="width: 100%" <div class="font-medium tracking-tight text-secondary">기간</div>
> <div class="font-medium" style="color: blue">
<textarea matInput cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea> 2022-06-01 00:00 ~ 2022-06-21 23:59 까지
</mat-form-field> </div>
<button mat-flat-button [color]="'primary'">메모저장</button> --> <div class="font-medium tracking-tight text-secondary">
총 유효배팅 | 배팅금액
</div>
<div class="font-medium" style="color: red">816,335원 | 816,335원</div>
<div class="font-medium tracking-tight text-secondary">
당첨 | 취소 | 배팅-당첨-취소
</div>
<div class="font-medium" style="color: red">717,335원 | 0원 98,847</div>
<div class="font-medium tracking-tight text-secondary">
본사롤링 | 대본롤링 | 부본롤링 | 총판 롤링 | 매장롤링 | 회원롤링
</div>
<div class="font-medium" style="color: red">
6,335원 | 1,663원 | 1,633원 | 2,304원 | 5,544원 | 6,119원
</div>
<div class="font-medium tracking-tight text-secondary">롤링합계</div>
<div class="font-medium">3,9041원</div>
</div>
</div>
</div> </div>
<!-- Search --> <!-- Search -->
@ -66,6 +60,8 @@
class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-4 px-6 md:px-8 border-b" class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-4 px-6 md:px-8 border-b"
> >
<!-- Actions --> <!-- Actions -->
<div fxLayout="row wrap" class="items-center mt-6 sm:mt-0 sm:ml-0">
<!-- SelectBox -->
<div fxLayout="row wrap" class="items-center mt-6 sm:mt-0 sm:ml-0"> <div fxLayout="row wrap" class="items-center mt-6 sm:mt-0 sm:ml-0">
<!-- SelectBox --> <!-- SelectBox -->
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2"> <mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
@ -146,6 +142,7 @@
</button> </button>
</div> </div>
</div> </div>
</div>
<!-- Main --> <!-- Main -->
<div class="flex flex-auto overflow-hidden"> <div class="flex flex-auto overflow-hidden">
@ -154,18 +151,36 @@
class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto" class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto"
> >
<ng-container *ngIf="slots$ | async as slots"> <ng-container *ngIf="slots$ | async as slots">
<ng-container *ngIf="slots.length > 0; else noSlot"> <ng-container *ngIf="slots.length > 0; else noUser">
<div class="grid"> <div class="grid">
<!-- Header --> <!-- Header -->
<div <div
class="slot-grid z-10 sticky top-0 grid gap-4 py-4 px-6 md:px-8 shadow text-md font-semibold text-secondary bg-gray-50 dark:bg-black dark:bg-opacity-5" class="game-slot-grid z-10 sticky top-0 grid gap-4 py-4 px-6 md:px-8 shadow text-md font-semibold text-secondary bg-gray-50 dark:bg-black dark:bg-opacity-5"
> >
<div>상부</div> <div class="hidden lg:block">상위</div>
<div>유저</div> <div class="hidden lg:block">
<div>게임</div> 게임코드ID
<div>형식</div> <hr style="margin: 7px 0px" />
<div class="hidden sm:block">금액</div> 사이트ID
<div class="hidden md:block">콤프</div> <hr style="margin: 7px 0px" />
닉네임
</div>
<div class="hidden lg:block">
게임사이름
<hr style="margin: 7px 0px" />
게임 이름
<hr style="margin: 7px 0px" />
배팅고유코드
</div>
<div class="hidden lg:block">형식</div>
<div class="hidden lg:block">
배팅전
<hr style="margin: 7px 0px" />
배팅
<hr style="margin: 7px 0px" />
배팅 후
</div>
<div class="hidden lg:block">콤프</div>
<div class="hidden lg:block">롤링</div> <div class="hidden lg:block">롤링</div>
<div class="hidden lg:block"> <div class="hidden lg:block">
배팅시간 배팅시간
@ -177,65 +192,69 @@
<ng-container *ngIf="slots$ | async as slots"> <ng-container *ngIf="slots$ | async as slots">
<ng-container *ngFor="let slot of slots; trackBy: __trackByFn"> <ng-container *ngFor="let slot of slots; trackBy: __trackByFn">
<div <div
class="slot-grid grid items-center gap-4 py-3 px-6 md:px-8 border-b" class="game-slot-grid grid items-center gap-4 py-3 px-6 md:px-8 border-b"
> >
<div>{{ slot.highRank }}</div> <div class="hidden lg:block">
<div> {{ slot.highRank }}
게임ID{{ slot.gameId }}
<hr style="margin: 7px 0px" />
사이트ID{{ slot.signinId }}
<hr style="margin: 7px 0px" />
닉네임{{ slot.nickname }}
</div> </div>
<div> <div class="hidden lg:block">
{{ slot.gameId }}
<hr style="margin: 7px 0px" />
{{ slot.signinId }}
<hr style="margin: 7px 0px" />
{{ slot.nickname }}
</div>
<div class="hidden lg:block">
{{ slot.vendorName }}
<hr style="margin: 7px 0px" />
{{ slot.gameName }} {{ slot.gameName }}
<hr style="margin: 7px 0px" /> <hr style="margin: 7px 0px" />
{{ slot.gameInfo1 }} {{ slot.bettingId }}
<hr style="margin: 7px 0px" />
{{ slot.gameInfo2 }}
<hr style="margin: 7px 0px" />
{{ slot.gameInfo3 }}
</div> </div>
<div> <div class="hidden lg:block">{{ slot.betStatus }}</div>
{{ slot.gameType }} <div class="hidden lg:block">
</div> {{ slot.betPrevMoney }}
<div class="hidden sm:block">
배팅전{{ slot.beforeBetting }}
<hr style="margin: 7px 0px" /> <hr style="margin: 7px 0px" />
배팅{{ slot.betting }} {{ slot.bettingMoney }}
<hr style="margin: 7px 0px" /> <hr style="margin: 7px 0px" />
배팅후{{ slot.afterBetting }} {{ slot.betAfterMoney }}
</div> </div>
<div class="hidden md:block"> <div class="hidden lg:block">
{{ slot.comp }} {{ slot.comp }}
</div> </div>
<div class="hidden lg:block"> <div class="hidden lg:block">
본사{{ slot.mainofficeName }}({{ <span *ngIf="!!slot.mainInfo">
slot.mainofficePercent 본사: {{ slot.mainInfo.name }}({{
}}%&nbsp;:&nbsp;{{ slot.mainofficePoint }}P) slot.mainInfo.commissionRate
<hr style="margin: 7px 0px" /> }},{{ slot.mainInfo.point }})</span
대본{{ slot.branchName }}({{ >
slot.branchPercent <hr *ngIf="!!slot.mainInfo" style="margin: 7px 0px" />
}}%&nbsp;:&nbsp;{{ slot.branchPoint }}P) <span *ngIf="!!slot.branchInfo"
<hr style="margin: 7px 0px" /> >대본: {{ slot.branchInfo.name }}({{
부본{{ slot.divisionName }}({{ slot.branchInfo.commissionRate
slot.divisionPercent }},{{ slot.branchInfo.point }})</span
}}%&nbsp;:&nbsp;{{ slot.divisionPoint }}P) >
<hr style="margin: 7px 0px" /> <hr *ngIf="!!slot.branchInfo" style="margin: 7px 0px" />
총판{{ slot.officeName }}({{ <span *ngIf="!!slot.divisionInfo"
slot.officePercent >부본: {{ slot.divisionInfo.name }}({{
}}%&nbsp;:&nbsp;{{ slot.officePoint }}P) slot.divisionInfo.commissionRate
<hr style="margin: 7px 0px" /> }},{{ slot.divisionInfo.point }})</span
매장{{ slot.storeName }}({{ >
slot.storePercent <hr *ngIf="!!slot.divisionInfo" style="margin: 7px 0px" />
}}%&nbsp;:&nbsp;{{ slot.storePoint }}P) <span *ngIf="!!slot.officeInfo"
<hr style="margin: 7px 0px" /> >총판: {{ slot.officeInfo.name }}({{
회원{{ slot.memberName }}({{ slot.officeInfo.commissionRate
slot.memberPercent }},{{ slot.officeInfo.point }})</span
}}%&nbsp;:&nbsp;{{ slot.memberPoint }}P) >
<hr *ngIf="!!slot.officeInfo" style="margin: 7px 0px" />
<span *ngIf="!!slot.storeInfo"
>매장: {{ slot.storeInfo.name }}({{
slot.storeInfo.commissionRate
}},{{ slot.storeInfo.point }})</span
>
</div> </div>
<div class="hidden lg:block"> <div class="hidden lg:block">
{{ slot.bettingTime }} {{ slot.bettingRegistDate }}
<hr style="margin: 7px 0px" /> <hr style="margin: 7px 0px" />
{{ slot.registrationDate }} {{ slot.registrationDate }}
</div> </div>
@ -256,7 +275,7 @@
</ng-container> </ng-container>
</ng-container> </ng-container>
<ng-template #noSlot> <ng-template #noUser>
<div <div
class="p-8 sm:p-16 border-t text-4xl font-semibold tracking-tight text-center" class="p-8 sm:p-16 border-t text-4xl font-semibold tracking-tight text-center"
> >

View File

@ -39,23 +39,23 @@ import { SlotService } from '../services/slot.service';
styles: [ styles: [
/* language=SCSS */ /* language=SCSS */
` `
.slot-grid { .game-slot-grid {
/* 상부 유저 게임 형식 금액 */ /* 상위 게임 베팅 형식 금액 콤프 롤링 배팅시간*/
grid-template-columns: 100px 140px auto 100px 100px; grid-template-columns: 100px 100px auto 60px 100px 40px 150px 150px;
@screen sm { @screen sm {
/* 상부 유저 게임 형식 금액 콤프 */ /* 상위 게임 베팅 형식 금액 콤프 롤링 배팅시간*/
grid-template-columns: 100px 140px auto 100px 100px 140px; grid-template-columns: 100px 100px auto 60px 100px 40px 150px 150px;
} }
@screen md { @screen md {
/* 상부 유저 게임 형식 금액 콤프 롤링 */ /* 상위 게임 베팅 형식 금액 콤프 롤링 배팅시간*/
grid-template-columns: 100px 140px auto 100px 100px 140px 100px; grid-template-columns: 100px 100px auto 60px 100px 40px 150px 150px;
} }
@screen lg { @screen lg {
/* 상부 유저 게임 형식 금액 콤프 롤링 */ /* 상위 게임 베팅 형식 금액 콤프 롤링 배팅시간*/
grid-template-columns: 100px 140px auto 100px 100px 140px 100px; grid-template-columns: 100px 100px auto 60px 100px 40px 150px 150px;
} }
} }
`, `,

View File

@ -4,33 +4,39 @@ export interface Slot {
highRank?: string; highRank?: string;
gameId?: string; gameId?: string;
nickname?: string; nickname?: string;
vendorName?: string;
gameName?: string; gameName?: string;
gameInfo1?: string; bettingId?: string;
gameInfo2?: string; betStatus?: string;
gameInfo3?: string; betPrevMoney?: number;
gameType?: string; bettingMoney?: number;
betting?: number; betAfterMoney?: number;
afterBetting?: number;
beforeBetting?: number;
comp?: string; comp?: string;
mainofficeName?: string; mainInfo?: {
mainofficePercent?: number; name?: string;
mainofficePoint?: number; commissionRate?: string;
branchName?: string; point?: string;
branchPercent?: number; };
branchPoint?: number; branchInfo?: {
divisionName?: string; name?: string;
divisionPercent?: number; commissionRate?: string;
divisionPoint?: number; point?: string;
officeName?: string; };
officePercent?: number; divisionInfo?: {
officePoint?: number; name?: string;
storeName?: string; commissionRate?: string;
storePercent?: number; point?: string;
storePoint?: number; };
memberName?: string; officeInfo?: {
memberPercent?: number; name?: string;
memberPoint?: number; commissionRate?: string;
bettingTime?: string; point?: string;
};
storeInfo?: {
name?: string;
commissionRate?: string;
point?: string;
};
bettingRegistDate?: string;
registrationDate?: string; registrationDate?: string;
} }