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 = [
{
id: '7eb7c859-1347-4317-96b6-9476a7e2ba3c',
signinId: 'aa200',
highRank: '[매장]kgon5',
gameId: 'ks1_1007',
signinId: 'aa100',
nickname: 'aa100',
gameName: '프라그마틱슬롯',
gameInfo1: '스타라이트 프린세스',
gameInfo2: '',
gameInfo3: '62afded8114e77723a93caa2',
gameType: '배팅',
betting: 800,
beforeBetting: 187730,
afterBetting: 186903,
data: '',
nickname: 'aa200',
vendorName: '프라그마스틱 슬롯',
gameName: '스타라이트 프린세스',
bettingId: '62acfwdcmdkei911dkd81221fb',
betStatus: '베팅',
betPrevMoney: '187,730',
bettingMoney: '1,000',
betAfterMoney: '186,930',
comp: 'Y',
mainofficeName: 'kgon1',
mainofficePercent: '2.80',
mainofficePoint: '22.40',
branchName: 'kgon2',
branchPercent: '0.20',
branchPoint: '1.60',
divisionName: 'kgon3',
divisionPercent: '0.20',
divisionPoint: '1.60',
officeName: 'kgon4',
officePercent: '0.30',
officePoint: '2.40',
storeName: 'kgon5',
storePercent: '1.50',
storePoint: '12.00',
memberName: '',
memberPercent: '',
memberPoint: '',
bettingTime: '2022-06-20 11:43:37',
registrationDate: '2022-06-20 11:45:02',
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-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>
</div>
<!-- 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 -->
<div class="flex shrink-0 items-center mt-6 sm:mt-0 sm:ml-4">
<!-- 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()">
<mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon>
</button>
</div>
</div>
<!-- Memo -->
<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"
>
<!-- <mat-form-field
class="bet-mat-form-field-wrapper-mb-0 mr-2"
style="width: 100%"
>
<textarea matInput cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
</mat-form-field>
<button mat-flat-button [color]="'primary'">메모저장</button> -->
<div class="flex items-center justify-center px-6 py-4 space-x-3">
<div class="grid grid-cols-2 gap-x-4 gap-y-1">
<div class="font-medium tracking-tight text-secondary">기간</div>
<div class="font-medium" style="color: blue">
2022-06-01 00:00 ~ 2022-06-21 23:59 까지
</div>
<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>
<!-- Search -->
@ -68,82 +62,85 @@
<!-- Actions -->
<div fxLayout="row wrap" class="items-center mt-6 sm:mt-0 sm:ml-0">
<!-- SelectBox -->
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="슬롯">
<mat-option value="">카지노</mat-option>
<mat-option value="">슬롯</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="전체">
<mat-option value="">전체</mat-option>
<mat-option value="">프라그마틱슬롯</mat-option>
<mat-option value="">마이크로게이밍슬롯</mat-option>
<mat-option value="">하바네로</mat-option>
<mat-option value="">부운고</mat-option>
<mat-option value="">플레이손</mat-option>
<mat-option value="">퀵스핀</mat-option>
<mat-option value="">플레이엔고</mat-option>
<mat-option value="">넷엔트</mat-option>
<mat-option value="">메버릭</mat-option>
<mat-option value="">레드레이크</mat-option>
<mat-option value="">릴렉스</mat-option>
<mat-option value="">블루프린트</mat-option>
<mat-option value="">ELK</mat-option>
<mat-option value="">아시안게이밍슬롯</mat-option>
<mat-option value="">CQ9슬롯</mat-option>
<mat-option value="">레드타이거</mat-option>
<mat-option value="">드래곤소프트</mat-option>
<mat-option value="">스피어헤드</mat-option>
<mat-option value="">엘리시움</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="전체">
<mat-option value="">전체</mat-option>
<mat-option value="">배팅100만미만</mat-option>
<mat-option value="">배팅100-300만</mat-option>
<mat-option value="">배팅300-500만</mat-option>
<mat-option value="">배팅500만이상</mat-option>
<mat-option value="">당첨1000만초과</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="검색항목">
<mat-option value="">아이디</mat-option>
<mat-option value="">게임아이디</mat-option>
<mat-option value="">닉네임</mat-option>
<mat-option value="">게임종류</mat-option>
</mat-select>
</mat-form-field>
<!-- Search -->
<mat-form-field
fxFlex
class="fuse-mat-rounded min-w-64 bet-mat-form-field-wrapper-mb-0 mr-2"
>
<mat-icon
class="icon-size-5"
matPrefix
[svgIcon]="'heroicons_solid:search'"
></mat-icon>
<input
matInput
[formControl]="searchInputControl"
[autocomplete]="'off'"
[placeholder]="'Search user'"
/>
</mat-form-field>
<!-- Add user button -->
<button
fxFlex
mat-flat-button
style="position: fixed; margin-top: 4px"
[color]="'primary'"
(click)="__createProduct()"
>
<mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon>
<span class="ml-2 mr-1">Search</span>
</button>
<div fxLayout="row wrap" class="items-center mt-6 sm:mt-0 sm:ml-0">
<!-- SelectBox -->
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="슬롯">
<mat-option value="">카지노</mat-option>
<mat-option value="">슬롯</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="전체">
<mat-option value="">전체</mat-option>
<mat-option value="">프라그마틱슬롯</mat-option>
<mat-option value="">마이크로게이밍슬롯</mat-option>
<mat-option value="">하바네로</mat-option>
<mat-option value="">부운고</mat-option>
<mat-option value="">플레이손</mat-option>
<mat-option value="">퀵스핀</mat-option>
<mat-option value="">플레이엔고</mat-option>
<mat-option value="">넷엔트</mat-option>
<mat-option value="">메버릭</mat-option>
<mat-option value="">레드레이크</mat-option>
<mat-option value="">릴렉스</mat-option>
<mat-option value="">블루프린트</mat-option>
<mat-option value="">ELK</mat-option>
<mat-option value="">아시안게이밍슬롯</mat-option>
<mat-option value="">CQ9슬롯</mat-option>
<mat-option value="">레드타이거</mat-option>
<mat-option value="">드래곤소프트</mat-option>
<mat-option value="">스피어헤드</mat-option>
<mat-option value="">엘리시움</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="전체">
<mat-option value="">전체</mat-option>
<mat-option value="">배팅100만미만</mat-option>
<mat-option value="">배팅100-300만</mat-option>
<mat-option value="">배팅300-500만</mat-option>
<mat-option value="">배팅500만이상</mat-option>
<mat-option value="">당첨1000만초과</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="검색항목">
<mat-option value="">아이디</mat-option>
<mat-option value="">게임아이디</mat-option>
<mat-option value="">닉네임</mat-option>
<mat-option value="">게임종류</mat-option>
</mat-select>
</mat-form-field>
<!-- Search -->
<mat-form-field
fxFlex
class="fuse-mat-rounded min-w-64 bet-mat-form-field-wrapper-mb-0 mr-2"
>
<mat-icon
class="icon-size-5"
matPrefix
[svgIcon]="'heroicons_solid:search'"
></mat-icon>
<input
matInput
[formControl]="searchInputControl"
[autocomplete]="'off'"
[placeholder]="'Search user'"
/>
</mat-form-field>
<!-- Add user button -->
<button
fxFlex
mat-flat-button
style="position: fixed; margin-top: 4px"
[color]="'primary'"
(click)="__createProduct()"
>
<mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon>
<span class="ml-2 mr-1">Search</span>
</button>
</div>
</div>
</div>
@ -154,18 +151,36 @@
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.length > 0; else noSlot">
<ng-container *ngIf="slots.length > 0; else noUser">
<div class="grid">
<!-- Header -->
<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>유저</div>
<div>게임</div>
<div>형식</div>
<div class="hidden sm:block">금액</div>
<div class="hidden md:block">콤프</div>
<div class="hidden lg:block">상위</div>
<div class="hidden lg:block">
게임코드ID
<hr style="margin: 7px 0px" />
사이트ID
<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">
배팅시간
@ -177,65 +192,69 @@
<ng-container *ngIf="slots$ | async as slots">
<ng-container *ngFor="let slot of slots; trackBy: __trackByFn">
<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>
게임ID{{ slot.gameId }}
<hr style="margin: 7px 0px" />
사이트ID{{ slot.signinId }}
<hr style="margin: 7px 0px" />
닉네임{{ slot.nickname }}
<div class="hidden lg:block">
{{ slot.highRank }}
</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 }}
<hr style="margin: 7px 0px" />
{{ slot.gameInfo1 }}
<hr style="margin: 7px 0px" />
{{ slot.gameInfo2 }}
<hr style="margin: 7px 0px" />
{{ slot.gameInfo3 }}
{{ slot.bettingId }}
</div>
<div>
{{ slot.gameType }}
</div>
<div class="hidden sm:block">
배팅전{{ slot.beforeBetting }}
<div class="hidden lg:block">{{ slot.betStatus }}</div>
<div class="hidden lg:block">
{{ slot.betPrevMoney }}
<hr style="margin: 7px 0px" />
배팅{{ slot.betting }}
{{ slot.bettingMoney }}
<hr style="margin: 7px 0px" />
배팅후{{ slot.afterBetting }}
{{ slot.betAfterMoney }}
</div>
<div class="hidden md:block">
<div class="hidden lg:block">
{{ slot.comp }}
</div>
<div class="hidden lg:block">
본사{{ slot.mainofficeName }}({{
slot.mainofficePercent
}}%&nbsp;:&nbsp;{{ slot.mainofficePoint }}P)
<hr style="margin: 7px 0px" />
대본{{ slot.branchName }}({{
slot.branchPercent
}}%&nbsp;:&nbsp;{{ slot.branchPoint }}P)
<hr style="margin: 7px 0px" />
부본{{ slot.divisionName }}({{
slot.divisionPercent
}}%&nbsp;:&nbsp;{{ slot.divisionPoint }}P)
<hr style="margin: 7px 0px" />
총판{{ slot.officeName }}({{
slot.officePercent
}}%&nbsp;:&nbsp;{{ slot.officePoint }}P)
<hr style="margin: 7px 0px" />
매장{{ slot.storeName }}({{
slot.storePercent
}}%&nbsp;:&nbsp;{{ slot.storePoint }}P)
<hr style="margin: 7px 0px" />
회원{{ slot.memberName }}({{
slot.memberPercent
}}%&nbsp;:&nbsp;{{ slot.memberPoint }}P)
<span *ngIf="!!slot.mainInfo">
본사: {{ slot.mainInfo.name }}({{
slot.mainInfo.commissionRate
}},{{ slot.mainInfo.point }})</span
>
<hr *ngIf="!!slot.mainInfo" style="margin: 7px 0px" />
<span *ngIf="!!slot.branchInfo"
>대본: {{ slot.branchInfo.name }}({{
slot.branchInfo.commissionRate
}},{{ slot.branchInfo.point }})</span
>
<hr *ngIf="!!slot.branchInfo" style="margin: 7px 0px" />
<span *ngIf="!!slot.divisionInfo"
>부본: {{ slot.divisionInfo.name }}({{
slot.divisionInfo.commissionRate
}},{{ slot.divisionInfo.point }})</span
>
<hr *ngIf="!!slot.divisionInfo" style="margin: 7px 0px" />
<span *ngIf="!!slot.officeInfo"
>총판: {{ slot.officeInfo.name }}({{
slot.officeInfo.commissionRate
}},{{ slot.officeInfo.point }})</span
>
<hr *ngIf="!!slot.officeInfo" style="margin: 7px 0px" />
<span *ngIf="!!slot.storeInfo"
>매장: {{ slot.storeInfo.name }}({{
slot.storeInfo.commissionRate
}},{{ slot.storeInfo.point }})</span
>
</div>
<div class="hidden lg:block">
{{ slot.bettingTime }}
{{ slot.bettingRegistDate }}
<hr style="margin: 7px 0px" />
{{ slot.registrationDate }}
</div>
@ -256,7 +275,7 @@
</ng-container>
</ng-container>
<ng-template #noSlot>
<ng-template #noUser>
<div
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: [
/* language=SCSS */
`
.slot-grid {
/* 상부 유저 게임 형식 금액 */
grid-template-columns: 100px 140px auto 100px 100px;
.game-slot-grid {
/* 상위 게임 베팅 형식 금액 콤프 롤링 배팅시간*/
grid-template-columns: 100px 100px auto 60px 100px 40px 150px 150px;
@screen sm {
/* 상부 유저 게임 형식 금액 콤프 */
grid-template-columns: 100px 140px auto 100px 100px 140px;
/* 상위 게임 베팅 형식 금액 콤프 롤링 배팅시간*/
grid-template-columns: 100px 100px auto 60px 100px 40px 150px 150px;
}
@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 {
/* 상부 유저 게임 형식 금액 콤프 롤링 */
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;
gameId?: string;
nickname?: string;
vendorName?: string;
gameName?: string;
gameInfo1?: string;
gameInfo2?: string;
gameInfo3?: string;
gameType?: string;
betting?: number;
afterBetting?: number;
beforeBetting?: number;
bettingId?: string;
betStatus?: string;
betPrevMoney?: number;
bettingMoney?: number;
betAfterMoney?: number;
comp?: string;
mainofficeName?: string;
mainofficePercent?: number;
mainofficePoint?: number;
branchName?: string;
branchPercent?: number;
branchPoint?: number;
divisionName?: string;
divisionPercent?: number;
divisionPoint?: number;
officeName?: string;
officePercent?: number;
officePoint?: number;
storeName?: string;
storePercent?: number;
storePoint?: number;
memberName?: string;
memberPercent?: number;
memberPoint?: number;
bettingTime?: string;
mainInfo?: {
name?: string;
commissionRate?: string;
point?: string;
};
branchInfo?: {
name?: string;
commissionRate?: string;
point?: string;
};
divisionInfo?: {
name?: string;
commissionRate?: string;
point?: string;
};
officeInfo?: {
name?: string;
commissionRate?: string;
point?: string;
};
storeInfo?: {
name?: string;
commissionRate?: string;
point?: string;
};
bettingRegistDate?: string;
registrationDate?: string;
}