회원 리스트 수정
This commit is contained in:
parent
39d9fc0f19
commit
8724c0468e
|
@ -184,8 +184,8 @@
|
||||||
<div
|
<div
|
||||||
class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto overflow-x-auto overflow-y-hidden"
|
class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto overflow-x-auto overflow-y-hidden"
|
||||||
>
|
>
|
||||||
<ng-container *ngIf="users$ | async as users">
|
<ng-container *ngIf="listMembers$ | async as mebers">
|
||||||
<ng-container *ngIf="users.length > 0; else noUser">
|
<ng-container *ngIf="mebers.length > 0; else noUser">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div
|
<div
|
||||||
|
@ -234,9 +234,13 @@
|
||||||
<div class="hidden lg:block" style="text-align: center">로그</div>
|
<div class="hidden lg:block" style="text-align: center">로그</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Rows -->
|
<!-- Rows -->
|
||||||
<ng-container *ngIf="users$ | async as users">
|
<ng-container *ngIf="listMembers$ | async as mebers">
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngFor="let user of users; let i = index; trackBy: __trackByFn"
|
*ngFor="
|
||||||
|
let member of mebers;
|
||||||
|
let i = index;
|
||||||
|
trackBy: __trackByFn
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="user-grid grid items-center gap-4 py-3 px-6 md:px-8 border-b"
|
class="user-grid grid items-center gap-4 py-3 px-6 md:px-8 border-b"
|
||||||
|
@ -271,7 +275,7 @@
|
||||||
<button mat-menu-item (click)="__onClickMessage($event)">
|
<button mat-menu-item (click)="__onClickMessage($event)">
|
||||||
쪽지보내기
|
쪽지보내기
|
||||||
</button>
|
</button>
|
||||||
<button mat-menu-item (click)="viewSlot(user.id!)">
|
<button mat-menu-item (click)="viewSlot(member.getId())">
|
||||||
배팅리스트
|
배팅리스트
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
|
@ -284,48 +288,48 @@
|
||||||
</div>
|
</div>
|
||||||
<div [matTooltip]="__getRateTooltop()">요율</div>
|
<div [matTooltip]="__getRateTooltop()">요율</div>
|
||||||
<div>
|
<div>
|
||||||
{{ user.highRank }}
|
{{ __getParentUsername(member) }}
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center">
|
<div style="text-align: center">
|
||||||
<div
|
<div
|
||||||
(click)="viewUserDetail(user.id!)"
|
(click)="viewUserDetail(member.getId())"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
>
|
>
|
||||||
{{ user.signinId }}
|
{{ member.getUsername() }}
|
||||||
</div>
|
</div>
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
{{ user.nickname }}
|
{{ member.getNickname() }}
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
{{ user.phoneNumber }}
|
{{ member.getMobilePhoneNumber() }}
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center">
|
<div style="text-align: center">
|
||||||
{{ user.rank }}
|
{{ member.getMemberClass()?.getName() }}
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
{{ user.level }}
|
{{ member.getMemberLevel()?.getName() }}
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
{{ user.state }}
|
{{ __getMemberState(member) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden sm:block" style="text-align: center">
|
<div class="hidden sm:block" style="text-align: center">
|
||||||
{{ user.accountHolder }}
|
{{ member.getBankAccount()?.getName() }}
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden md:block" style="text-align: center">
|
<div class="hidden md:block" style="text-align: center">
|
||||||
캐쉬{{ user.ownCash }}
|
캐쉬: 2000
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
콤프{{ user.ownComp }}P
|
콤프: 2000P
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
쿠폰{{ user.ownCoupon }}
|
쿠폰: 2000
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden md:block" style="text-align: center">
|
<div class="hidden md:block" style="text-align: center">
|
||||||
{{ user.gameMoney }}
|
0
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
{{ user.todayComp }}P
|
0P
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden md:block" style="text-align: center">
|
<div class="hidden md:block" style="text-align: center">
|
||||||
입금{{ user.totalDeposit }}
|
입금 20000
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
출금{{ user.totalWithdraw }}
|
출금 20000
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
차익{{ user.balance }}
|
차익 20000
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden lg:block" style="text-align: center">
|
<div class="hidden lg:block" style="text-align: center">
|
||||||
<button
|
<button
|
||||||
|
@ -345,11 +349,12 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden lg:block" style="text-align: center">
|
<div class="hidden lg:block" style="text-align: center">
|
||||||
가입{{ user.registrationDate }}
|
가입: {{ member.getCreatedAt() | date: "yyyy-MM-dd HH:mm" }}
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
최종{{ user.finalSigninDate }}
|
최종:
|
||||||
|
{{ member.getLastSigninedAt() | date: "yyyy-MM-dd HH:mm" }}
|
||||||
<hr style="margin: 7px 0px" />
|
<hr style="margin: 7px 0px" />
|
||||||
IP{{ user.ip }}
|
IP: {{ member.getLastSigninedIp() }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -11,14 +11,22 @@ import {
|
||||||
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
|
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
|
||||||
import { MatPaginator } from '@angular/material/paginator';
|
import { MatPaginator } from '@angular/material/paginator';
|
||||||
import { MatSort } from '@angular/material/sort';
|
import { MatSort } from '@angular/material/sort';
|
||||||
import { map, merge, Observable, Subject, switchMap, takeUntil } from 'rxjs';
|
import {
|
||||||
|
map,
|
||||||
|
merge,
|
||||||
|
Observable,
|
||||||
|
of,
|
||||||
|
Subject,
|
||||||
|
switchMap,
|
||||||
|
takeUntil,
|
||||||
|
} from 'rxjs';
|
||||||
import { fuseAnimations } from '@fuse/animations';
|
import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../models/user';
|
import { User } from '../models/user';
|
||||||
import { UserPagination } from '../models/user-pagination';
|
import { UserPagination } from '../models/user-pagination';
|
||||||
import { UserService } from '../services/user.service';
|
import { UserService } from '../services/user.service';
|
||||||
import { Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { IdentityService } from 'app/modules/polyglot/identity/services/identity.service';
|
import { IdentityService } from 'app/modules/polyglot/identity/services/identity.service';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { CashComposeComponent } from '../compose/cash-compose.component';
|
import { CashComposeComponent } from '../compose/cash-compose.component';
|
||||||
|
@ -26,6 +34,11 @@ import { CommissionComposeComponent } from '../compose/commission-compose.compon
|
||||||
import { CompComposeComponent } from '../compose/comp-compose.component';
|
import { CompComposeComponent } from '../compose/comp-compose.component';
|
||||||
import { CouponComposeComponent } from '../compose/coupon-compose.component';
|
import { CouponComposeComponent } from '../compose/coupon-compose.component';
|
||||||
import { MessageComposeComponent } from '../compose/message-compose.component';
|
import { MessageComposeComponent } from '../compose/message-compose.component';
|
||||||
|
import { ListMembersResponse } from 'app/modules/proto/c2se/member_pb';
|
||||||
|
import { MemberModel, MemberState } from 'app/modules/proto/models/member_pb';
|
||||||
|
import { MemberClass } from 'app/modules/proto/models/member_class_pb';
|
||||||
|
import { MemberClassService } from 'app/modules/polyglot/member_class/services/member_class.service';
|
||||||
|
import { result } from 'lodash';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'user-list',
|
selector: 'user-list',
|
||||||
|
@ -66,7 +79,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
users$!: Observable<User[] | undefined>;
|
listMembers$!: Observable<MemberModel[] | undefined>;
|
||||||
|
|
||||||
__isSearchOpened = false;
|
__isSearchOpened = false;
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
|
@ -74,6 +87,8 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
selectedUser?: User;
|
selectedUser?: User;
|
||||||
pagination?: UserPagination;
|
pagination?: UserPagination;
|
||||||
|
|
||||||
|
memberClasses!: MemberClass[];
|
||||||
|
|
||||||
signoutBlockConfigForm!: FormGroup;
|
signoutBlockConfigForm!: FormGroup;
|
||||||
|
|
||||||
private _unsubscribeAll: Subject<any> = new Subject<any>();
|
private _unsubscribeAll: Subject<any> = new Subject<any>();
|
||||||
|
@ -83,10 +98,12 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
*/
|
*/
|
||||||
constructor(
|
constructor(
|
||||||
private _changeDetectorRef: ChangeDetectorRef,
|
private _changeDetectorRef: ChangeDetectorRef,
|
||||||
|
private _activatedRoute: ActivatedRoute,
|
||||||
private _fuseConfirmationService: FuseConfirmationService,
|
private _fuseConfirmationService: FuseConfirmationService,
|
||||||
private _formBuilder: FormBuilder,
|
private _formBuilder: FormBuilder,
|
||||||
private _userService: UserService,
|
private _userService: UserService,
|
||||||
private _identityService: IdentityService,
|
private _identityService: IdentityService,
|
||||||
|
private _memberClassService: MemberClassService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private _matDialog: MatDialog
|
private _matDialog: MatDialog
|
||||||
) {}
|
) {}
|
||||||
|
@ -111,7 +128,19 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.users$ = this._userService.users$;
|
this._memberClassService
|
||||||
|
.listMemberClasss()
|
||||||
|
.then((result) => (this.memberClasses = result.getMemberClassesList()));
|
||||||
|
|
||||||
|
// Get the products
|
||||||
|
this._activatedRoute.data.subscribe((data) => {
|
||||||
|
let listMemberResult: ListMembersResponse.Result = data['listmembers'];
|
||||||
|
|
||||||
|
this.listMembers$ = of(listMemberResult.getMembersList());
|
||||||
|
|
||||||
|
// Mark for check
|
||||||
|
this._changeDetectorRef.markForCheck();
|
||||||
|
});
|
||||||
|
|
||||||
// Set signout block config
|
// Set signout block config
|
||||||
this.__signoutBlockConfirmConfig();
|
this.__signoutBlockConfirmConfig();
|
||||||
|
@ -297,4 +326,61 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
this.signoutBlockConfigForm.value
|
this.signoutBlockConfigForm.value
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__getParentUsername(member: MemberModel): string {
|
||||||
|
if (!member.getParentMember()) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
const parentUsername = member.getParentMember()?.getUsername();
|
||||||
|
const parentClassessId = member.getParentMember()?.getMemberClassId();
|
||||||
|
|
||||||
|
const findClass = this.findMemberClasses(parentClassessId);
|
||||||
|
|
||||||
|
if (!findClass) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return `[${findClass.getName()}]${parentUsername}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
__getMemberState(member: MemberModel): string {
|
||||||
|
const state = member.getState();
|
||||||
|
let resultStr = '';
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
|
case MemberState.NONE:
|
||||||
|
resultStr = '없음';
|
||||||
|
break;
|
||||||
|
case MemberState.NORMAL:
|
||||||
|
resultStr = '정상';
|
||||||
|
break;
|
||||||
|
case MemberState.PENDING:
|
||||||
|
resultStr = '대기';
|
||||||
|
break;
|
||||||
|
case MemberState.WITHDRAWAL:
|
||||||
|
resultStr = '탈퇴';
|
||||||
|
break;
|
||||||
|
case MemberState.DORMANCY:
|
||||||
|
resultStr = '휴면';
|
||||||
|
break;
|
||||||
|
case MemberState.BLACKLIST:
|
||||||
|
resultStr = '블랙리스트';
|
||||||
|
break;
|
||||||
|
case MemberState.SUSPENDED:
|
||||||
|
resultStr = '정지';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
private findMemberClasses(classId?: string): MemberClass | undefined {
|
||||||
|
if (!classId || classId === '') {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return this.memberClasses.find((mc) => mc.getId() === classId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,11 @@ import {
|
||||||
} from '@angular/router';
|
} from '@angular/router';
|
||||||
import { MemberService } from 'app/modules/polyglot/member/services/member.service';
|
import { MemberService } from 'app/modules/polyglot/member/services/member.service';
|
||||||
import { GetMemberResponse } from 'app/modules/proto/c2se/member_pb';
|
import { GetMemberResponse } from 'app/modules/proto/c2se/member_pb';
|
||||||
|
import {
|
||||||
|
ListMembersRequest,
|
||||||
|
ListMembersResponse,
|
||||||
|
} from 'app/modules/proto/c2se/member_pb';
|
||||||
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
import { catchError, Observable, throwError } from 'rxjs';
|
||||||
|
|
||||||
import { User } from '../models/user';
|
import { User } from '../models/user';
|
||||||
|
@ -85,6 +90,37 @@ export class UsersResolver implements Resolve<any> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class ListMemberResolver implements Resolve<any> {
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
constructor(private _router: Router, private _memberService: MemberService) {}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
// @ Public methods
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolver
|
||||||
|
*
|
||||||
|
* @param route
|
||||||
|
* @param state
|
||||||
|
*/
|
||||||
|
|
||||||
|
resolve(
|
||||||
|
route: ActivatedRouteSnapshot,
|
||||||
|
state: RouterStateSnapshot
|
||||||
|
):
|
||||||
|
| Observable<ListMembersResponse.Result>
|
||||||
|
| Promise<ListMembersResponse.Result>
|
||||||
|
| ListMembersResponse.Result {
|
||||||
|
return this._memberService.listMembers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
|
|
|
@ -7,6 +7,7 @@ import {
|
||||||
UsersResolver,
|
UsersResolver,
|
||||||
UserResolver,
|
UserResolver,
|
||||||
MemberResolver,
|
MemberResolver,
|
||||||
|
ListMemberResolver,
|
||||||
} from './resolvers/user.resolver';
|
} from './resolvers/user.resolver';
|
||||||
|
|
||||||
export const userRoutes: Route[] = [
|
export const userRoutes: Route[] = [
|
||||||
|
@ -14,7 +15,7 @@ export const userRoutes: Route[] = [
|
||||||
path: '',
|
path: '',
|
||||||
component: ListComponent,
|
component: ListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
users: UsersResolver,
|
listmembers: ListMemberResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user