회원 상태, 레벨 수정
This commit is contained in:
parent
1f875b708e
commit
dd50a301c3
|
@ -12,6 +12,18 @@
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="text-4xl font-extrabold tracking-tight">
|
<div class="text-4xl font-extrabold tracking-tight">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
|
<span
|
||||||
|
><fuse-alert
|
||||||
|
class="ml-8 pl-8"
|
||||||
|
*ngIf="changeResultShowAlert"
|
||||||
|
[appearance]="'outline'"
|
||||||
|
[showIcon]="false"
|
||||||
|
[type]="alertConfig.type"
|
||||||
|
[@shake]="alertConfig.type === 'error'"
|
||||||
|
>
|
||||||
|
{{ alertConfig.message }}
|
||||||
|
</fuse-alert></span
|
||||||
|
>
|
||||||
<div *ngIf="!!__isAllPage">
|
<div *ngIf="!!__isAllPage">
|
||||||
<button
|
<button
|
||||||
mat-flat-button
|
mat-flat-button
|
||||||
|
@ -23,6 +35,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<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>
|
<div>
|
||||||
|
@ -43,12 +56,12 @@
|
||||||
상태 변경
|
상태 변경
|
||||||
</button>
|
</button>
|
||||||
<mat-menu #menuChangeMemberState="matMenu">
|
<mat-menu #menuChangeMemberState="matMenu">
|
||||||
<button mat-menu-item>정상</button>
|
<button mat-menu-item (click)="__onChangeState(1)">정상</button>
|
||||||
<button mat-menu-item>대기</button>
|
<button mat-menu-item (click)="__onChangeState(2)">대기</button>
|
||||||
<button mat-menu-item>탈퇴</button>
|
<button mat-menu-item (click)="__onChangeState(3)">탈퇴</button>
|
||||||
<button mat-menu-item>휴면</button>
|
<button mat-menu-item (click)="__onChangeState(4)">휴면</button>
|
||||||
<button mat-menu-item>블랙</button>
|
<button mat-menu-item (click)="__onChangeState(5)">블랙</button>
|
||||||
<button mat-menu-item>정지</button>
|
<button mat-menu-item (click)="__onChangeState(6)">정지</button>
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
<button mat-button [matMenuTriggerFor]="menuChangeMemberLevel">
|
<button mat-button [matMenuTriggerFor]="menuChangeMemberLevel">
|
||||||
레벨 변경
|
레벨 변경
|
||||||
|
@ -176,7 +189,7 @@
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
</div>
|
</div>
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
<div [matTooltip]="__getRateTooltop()">요율</div>
|
<div [matTooltip]="__getRateTooltop(partner)">요율</div>
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
<div>
|
<div>
|
||||||
<div>2 3 2 1 5</div>
|
<div>2 3 2 1 5</div>
|
||||||
|
@ -202,14 +215,16 @@
|
||||||
LV
|
LV
|
||||||
{{ partner.getMemberLevel()?.getName()?.substring(5, 6) }}
|
{{ partner.getMemberLevel()?.getName()?.substring(5, 6) }}
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
{{ __getStateString(partner) }}
|
{{ __getMemberState(partner) }}
|
||||||
</div>
|
</div>
|
||||||
<!-- 예금주 -->
|
<!-- 예금주 -->
|
||||||
<div class="hidden lg:block">
|
<div class="hidden lg:block">
|
||||||
{{ partner.getBankAccount()?.getName() }}
|
{{ partner.getBankAccount()?.getName() }}
|
||||||
</div>
|
</div>
|
||||||
<!-- 정산종류 -->
|
<!-- 정산종류 -->
|
||||||
<div class="hidden lg:block">정산종류</div>
|
<div class="hidden lg:block">
|
||||||
|
{{ __getMemberSettlementType(partner) }}
|
||||||
|
</div>
|
||||||
<!-- 보유금 -->
|
<!-- 보유금 -->
|
||||||
<div class="hidden lg:block">
|
<div class="hidden lg:block">
|
||||||
캐쉬: 2,900
|
캐쉬: 2,900
|
||||||
|
|
|
@ -53,13 +53,19 @@ import { MemberModel, MemberState } from 'app/modules/proto/models/member_pb';
|
||||||
import {
|
import {
|
||||||
ListMembersRequest,
|
ListMembersRequest,
|
||||||
ListMembersResponse,
|
ListMembersResponse,
|
||||||
|
UpdateMemberForStateRequest,
|
||||||
|
UpdateMemberRequest,
|
||||||
} from 'app/modules/proto/c2se/member_pb';
|
} from 'app/modules/proto/c2se/member_pb';
|
||||||
import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
|
import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
|
||||||
import { ListMemberLevelsResponse } from 'app/modules/proto/c2se/member_level_pb';
|
import {
|
||||||
|
ListMemberLevelsResponse,
|
||||||
|
UpdateMemberLevelRequest,
|
||||||
|
} from 'app/modules/proto/c2se/member_level_pb';
|
||||||
import { MemberLevel } from 'app/modules/proto/models/member_level_pb';
|
import { MemberLevel } from 'app/modules/proto/models/member_level_pb';
|
||||||
import { Pagination } from 'app/modules/proto/protobuf/pagination_pb';
|
import { Pagination } from 'app/modules/proto/protobuf/pagination_pb';
|
||||||
import { VendorService } from 'app/modules/polyglot/api/services/vendor.service';
|
import { VendorService } from 'app/modules/polyglot/api/services/vendor.service';
|
||||||
import { environment } from 'environments/environment';
|
import { environment } from 'environments/environment';
|
||||||
|
import { FuseAlertType } from '@fuse/components/alert';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-list',
|
selector: 'partner-list',
|
||||||
|
@ -101,6 +107,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
|
|
||||||
@ViewChildren('chkUsers') chkUsers!: QueryList<MatCheckbox>;
|
@ViewChildren('chkUsers') chkUsers!: QueryList<MatCheckbox>;
|
||||||
|
|
||||||
|
listMember!: MemberModel[];
|
||||||
listPartner$!: Observable<MemberModel[] | undefined>;
|
listPartner$!: Observable<MemberModel[] | undefined>;
|
||||||
listMemberLevels$!: Observable<MemberLevel[] | undefined>;
|
listMemberLevels$!: Observable<MemberLevel[] | undefined>;
|
||||||
|
|
||||||
|
@ -114,11 +121,21 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
__members: MemberModel[] = [];
|
__members: MemberModel[] = [];
|
||||||
__checkedUsers: string[] = [];
|
__checkedUsers: string[] = [];
|
||||||
|
|
||||||
|
alertTitle = '알림';
|
||||||
|
|
||||||
title: string = '';
|
title: string = '';
|
||||||
btnTitle: string = '';
|
btnTitle: string = '';
|
||||||
memberClassId = '';
|
memberClassId = '';
|
||||||
|
|
||||||
signoutBlockConfigForm!: FormGroup;
|
signoutBlockConfigForm!: FormGroup;
|
||||||
|
fuseAlertConfirmConfigForm!: FormGroup;
|
||||||
|
|
||||||
|
changeResultShowAlert: boolean = false;
|
||||||
|
|
||||||
|
alertConfig: { type: FuseAlertType; message: string } = {
|
||||||
|
type: 'success',
|
||||||
|
message: '회원 정보가 수정 되었습니다.',
|
||||||
|
};
|
||||||
|
|
||||||
private _unsubscribeAll: Subject<any> = new Subject<any>();
|
private _unsubscribeAll: Subject<any> = new Subject<any>();
|
||||||
|
|
||||||
|
@ -173,6 +190,28 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
console.log(this.router.url);
|
console.log(this.router.url);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.fuseAlertConfirmConfigForm = this._formBuilder.group({
|
||||||
|
title: '알림',
|
||||||
|
message: '비밀번호를 변경 하시겠습니까?',
|
||||||
|
icon: this._formBuilder.group({
|
||||||
|
show: true,
|
||||||
|
name: 'heroicons_outline:exclamation',
|
||||||
|
color: 'warn',
|
||||||
|
}),
|
||||||
|
actions: this._formBuilder.group({
|
||||||
|
confirm: this._formBuilder.group({
|
||||||
|
show: true,
|
||||||
|
label: '확인',
|
||||||
|
color: 'warn',
|
||||||
|
}),
|
||||||
|
cancel: this._formBuilder.group({
|
||||||
|
show: true,
|
||||||
|
label: '취소',
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
dismissible: true,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
@ -199,9 +238,11 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
this._activatedRoute.data.subscribe((data) => {
|
this._activatedRoute.data.subscribe((data) => {
|
||||||
let listMemberResult: ListMembersResponse.Result = data['listPartner'];
|
let listMemberResult: ListMembersResponse.Result = data['listPartner'];
|
||||||
this.listPartner$ = of(listMemberResult.getMembersList());
|
this.listPartner$ = of(listMemberResult.getMembersList());
|
||||||
|
this.listMember = listMemberResult.getMembersList();
|
||||||
|
|
||||||
let listMemberLevelsResult: ListMemberLevelsResponse.Result =
|
let listMemberLevelsResult: ListMemberLevelsResponse.Result =
|
||||||
data['listMemberLevels'];
|
data['listMemberLevels'];
|
||||||
|
|
||||||
this.listMemberLevels$ = of(listMemberLevelsResult.getMemberLevelsList());
|
this.listMemberLevels$ = of(listMemberLevelsResult.getMemberLevelsList());
|
||||||
|
|
||||||
// Mark for check
|
// Mark for check
|
||||||
|
@ -380,19 +421,98 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
__getRateTooltop(): string {
|
private showAlert(type: FuseAlertType, message: string): void {
|
||||||
|
// Set the alert
|
||||||
|
this.changeResultShowAlert = true;
|
||||||
|
this.alertConfig = {
|
||||||
|
type,
|
||||||
|
message,
|
||||||
|
};
|
||||||
|
this._changeDetectorRef.markForCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async showConfirmAlert(
|
||||||
|
title: string,
|
||||||
|
message: string
|
||||||
|
): Promise<boolean> {
|
||||||
|
this.fuseAlertConfirmConfigForm.get('title')?.setValue(title);
|
||||||
|
this.fuseAlertConfirmConfigForm.get('message')?.setValue(message);
|
||||||
|
|
||||||
|
return new Promise<boolean>((resolve, reject) => {
|
||||||
|
const dialogRef = this._fuseConfirmationService.open(
|
||||||
|
this.fuseAlertConfirmConfigForm.value
|
||||||
|
);
|
||||||
|
|
||||||
|
dialogRef.afterClosed().subscribe((result) => {
|
||||||
|
if (result === 'confirmed') {
|
||||||
|
resolve(true);
|
||||||
|
} else {
|
||||||
|
resolve(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private closeChangeAlert(): void {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.changeResultShowAlert = false;
|
||||||
|
this._changeDetectorRef.markForCheck();
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
__onChangeState(type: number): void {
|
||||||
|
let count = 0;
|
||||||
|
const totalCount = this.chkUsers.length;
|
||||||
|
|
||||||
|
this.showConfirmAlert(
|
||||||
|
this.alertTitle,
|
||||||
|
'선택된 회원 상태를 모두 수정하시겠습니까?'
|
||||||
|
).then((result) => {
|
||||||
|
if (!!result) {
|
||||||
|
this.__checkedUsers.forEach((memberId: string) => {
|
||||||
|
const req = new UpdateMemberForStateRequest();
|
||||||
|
const findMember = this.listMember.find(
|
||||||
|
(m) => m.getId() === memberId
|
||||||
|
);
|
||||||
|
req.setId(findMember!.getId());
|
||||||
|
req.setState(type as any);
|
||||||
|
|
||||||
|
this.__memberService
|
||||||
|
.updateMemberForState(req)
|
||||||
|
.then((result) => {
|
||||||
|
count++;
|
||||||
|
})
|
||||||
|
.catch((reson) => {
|
||||||
|
this.showAlert('error', '회원 상태 변경이 실패하였습니다.');
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
if (count === totalCount) {
|
||||||
|
this.showAlert('success', '회원 상태가 수정 되었습니다.');
|
||||||
|
this.closeChangeAlert();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
__getRateTooltop(partner: MemberModel): string {
|
||||||
const tempRate = 0;
|
const tempRate = 0;
|
||||||
|
const memberSettlement = partner.getMemberSettlementSetting();
|
||||||
|
|
||||||
const resultTooltip = `
|
const resultTooltip = `
|
||||||
요율확인 \n 카지노-바카라: ${tempRate}% \n 카지노-룰렛: ${tempRate}% \n 카지노-드레곤타이거: ${tempRate}% \n 카지노-그외:${tempRate}% \n 슬롯:${tempRate}% \n 카지노루징: ${tempRate}% \n 슬롯루징: ${tempRate}%
|
요율확인 \n
|
||||||
|
카지노-바카라: ${memberSettlement?.getRateCasinoBacara()}% \n
|
||||||
|
카지노-룰렛: ${memberSettlement?.getRateCasinoRoulette()}% \n
|
||||||
|
카지노-드레곤타이거: ${memberSettlement?.getRateCasinoDragonTiger()}% \n
|
||||||
|
카지노-그외:${memberSettlement?.getRateCasino()}% \n
|
||||||
|
슬롯:${memberSettlement?.getRateSlot()}% \n
|
||||||
|
카지노루징: ${memberSettlement?.getRateCasinoLoosing()}% \n
|
||||||
|
슬롯루징: ${memberSettlement?.getRateSlotLoosing()}%
|
||||||
`;
|
`;
|
||||||
return resultTooltip;
|
return resultTooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
__getStateString(state: any): string {
|
|
||||||
console.log(state.getState());
|
|
||||||
|
|
||||||
return '정상';
|
|
||||||
}
|
|
||||||
__signoutBlockConfirmConfig(): void {
|
__signoutBlockConfirmConfig(): void {
|
||||||
this.signoutBlockConfigForm = this._formBuilder.group({
|
this.signoutBlockConfigForm = this._formBuilder.group({
|
||||||
title: '알림',
|
title: '알림',
|
||||||
|
@ -446,6 +566,45 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
|
|
||||||
__onClickChangeLevel(member_level_id: string): void {
|
__onClickChangeLevel(member_level_id: string): void {
|
||||||
console.log('member_level_id', member_level_id);
|
console.log('member_level_id', member_level_id);
|
||||||
|
let count = 0;
|
||||||
|
const totalCount = this.chkUsers.length;
|
||||||
|
|
||||||
|
this.showConfirmAlert(
|
||||||
|
this.alertTitle,
|
||||||
|
'선택된 회원 레벨을 모두 수정하시겠습니까?'
|
||||||
|
).then((result) => {
|
||||||
|
if (!!result) {
|
||||||
|
this.__checkedUsers.forEach((memberId: string) => {
|
||||||
|
const req = new UpdateMemberRequest();
|
||||||
|
const findMember = this.listMember.find(
|
||||||
|
(m) => m.getId() === memberId
|
||||||
|
);
|
||||||
|
req.setId(findMember!.getId());
|
||||||
|
req.setMemberLevelId(member_level_id);
|
||||||
|
|
||||||
|
this.__memberService
|
||||||
|
.updateMember(req)
|
||||||
|
.then((result) => {
|
||||||
|
count++;
|
||||||
|
})
|
||||||
|
.catch((reson) => {
|
||||||
|
this.showAlert('error', '회원 레벨 수정이 실패하였습니다.');
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
if (count === totalCount) {
|
||||||
|
this.showAlert('success', '회원 레벨이 수정 되었습니다.');
|
||||||
|
this.closeChangeAlert();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
__getMemberSettlementType(member: MemberModel): string | undefined {
|
||||||
|
const type = member.getMemberSettlementSetting()?.getSettlementType();
|
||||||
|
|
||||||
|
return type === 1 ? '롤링' : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
__getMemberState(member: MemberModel): string {
|
__getMemberState(member: MemberModel): string {
|
||||||
|
|
|
@ -32,6 +32,7 @@ export const partnerRoutes: Route[] = [
|
||||||
component: ListComponent,
|
component: ListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
listPartner: PartnerListForMainOfficeResolver,
|
listPartner: PartnerListForMainOfficeResolver,
|
||||||
|
listMemberLevels: ListMemberLevelsResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -39,6 +40,7 @@ export const partnerRoutes: Route[] = [
|
||||||
component: ListComponent,
|
component: ListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
listPartner: PartnerListForBranchResolver,
|
listPartner: PartnerListForBranchResolver,
|
||||||
|
listMemberLevels: ListMemberLevelsResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -46,6 +48,7 @@ export const partnerRoutes: Route[] = [
|
||||||
component: ListComponent,
|
component: ListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
listPartner: PartnerListForDivisionResolver,
|
listPartner: PartnerListForDivisionResolver,
|
||||||
|
listMemberLevels: ListMemberLevelsResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -53,6 +56,7 @@ export const partnerRoutes: Route[] = [
|
||||||
component: ListComponent,
|
component: ListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
listPartner: PartnerListForOfficeResolver,
|
listPartner: PartnerListForOfficeResolver,
|
||||||
|
listMemberLevels: ListMemberLevelsResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -60,6 +64,7 @@ export const partnerRoutes: Route[] = [
|
||||||
component: ListComponent,
|
component: ListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
listPartner: PartnerListForStoreResolver,
|
listPartner: PartnerListForStoreResolver,
|
||||||
|
listMemberLevels: ListMemberLevelsResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -425,9 +425,6 @@ export class ViewComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
|
|
||||||
/* const dialogRef; */
|
/* const dialogRef; */
|
||||||
|
|
||||||
const req = new UpdateMemberRequest();
|
|
||||||
req.setId(this.currentMember?.getId());
|
|
||||||
|
|
||||||
switch (this.selectedPanel) {
|
switch (this.selectedPanel) {
|
||||||
case 'accountInfo':
|
case 'accountInfo':
|
||||||
this.modifyMemberDefaultInfo();
|
this.modifyMemberDefaultInfo();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user