added protocol SYNC > BUDDY, GROUP, ROOM
This commit is contained in:
parent
58e4f249a2
commit
8c5cbe185a
|
@ -5,3 +5,5 @@
|
|||
export * from './lib/services/event-protocol.service';
|
||||
|
||||
export * from './lib/ucap-event-protocol.module';
|
||||
|
||||
export * from './lib/types/event.type';
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
} from '@ucap-webmessenger/protocol';
|
||||
import { LocaleCode } from '@ucap-webmessenger/core';
|
||||
import { RoomType } from '../types/room.type';
|
||||
import { EventType } from 'projects/ucap-webmessenger-protocol-event/src/lib/types/event.type';
|
||||
import { EventType } from '@ucap-webmessenger/protocol-event';
|
||||
import { EmployeeType } from '../types/employee.type';
|
||||
import { RoleCode } from '@ucap-webmessenger/protocol-authentication';
|
||||
|
||||
|
@ -97,9 +97,9 @@ export interface UserInfo {
|
|||
isMobile: boolean;
|
||||
// 10. 부서명
|
||||
deptName: string;
|
||||
// 11. 참여 여부
|
||||
// 11. 참여 여부 <<<<
|
||||
isJoinRoom: boolean;
|
||||
// 12. 최종확인SEQ
|
||||
// 12. 최종확인SEQ <<<<
|
||||
lastReadEventSeq: number;
|
||||
// 13. ActiveYN
|
||||
isActive: boolean;
|
||||
|
@ -125,7 +125,7 @@ export interface UserInfo {
|
|||
deptNameEn: string;
|
||||
// 24. 부서명(중국어)
|
||||
deptNameCn: string;
|
||||
// 25. CALL_MODE
|
||||
// 25. CALL_MODE <<<
|
||||
callMode: string;
|
||||
// 26. 이용약관동의여부YN
|
||||
isPrivacyAgree: boolean;
|
||||
|
@ -133,7 +133,7 @@ export interface UserInfo {
|
|||
isValidLogin: boolean;
|
||||
// 28. 임직원유형(s)
|
||||
employeeType: EmployeeType;
|
||||
// 29. 사용자아이디(s)
|
||||
// 29. 사용자아이디(s) <<<
|
||||
id: string;
|
||||
}
|
||||
|
||||
|
@ -167,7 +167,7 @@ export interface RoomUserShortDataResponse extends ProtocolResponse {
|
|||
export interface RoomUserDataResponse extends ProtocolResponse {
|
||||
// 0. 대화방SEQ(s)
|
||||
roomSeq: string;
|
||||
// 1n. {참여자정보}
|
||||
// 1n. {참여자정보-D}
|
||||
userInfos: UserInfo[];
|
||||
}
|
||||
|
||||
|
|
118
projects/ucap-webmessenger-protocol-sync/src/lib/models/buddy.ts
Normal file
118
projects/ucap-webmessenger-protocol-sync/src/lib/models/buddy.ts
Normal file
|
@ -0,0 +1,118 @@
|
|||
import {
|
||||
ProtocolRequest,
|
||||
ProtocolResponse,
|
||||
ProtocolEncoder,
|
||||
PacketBody,
|
||||
PacketBodyValue,
|
||||
ProtocolDecoder,
|
||||
ProtocolMessage,
|
||||
BodyStringDivider
|
||||
} from '@ucap-webmessenger/protocol';
|
||||
import { UserInfo } from '../types/userInfo';
|
||||
|
||||
export interface BuddyInfo {
|
||||
// 사용자SEQ
|
||||
userSeq: number;
|
||||
// 즐.찾 여부
|
||||
isFavorit: boolean;
|
||||
// 친구여부
|
||||
isBuddy: boolean;
|
||||
}
|
||||
|
||||
export interface SyncBuddyRequest extends ProtocolRequest {
|
||||
// 0. 동료 씽크일시(s) cf)2019-09-24 16:51:42
|
||||
syncDate: string;
|
||||
}
|
||||
|
||||
export interface SyncBuddyDataResponse extends ProtocolResponse {
|
||||
// n. {동료정보-S}...
|
||||
buddyInfos: BuddyInfo[];
|
||||
}
|
||||
|
||||
export interface SyncBuddyDataDetailResponse extends ProtocolResponse {
|
||||
// n. {동료정보-S}...
|
||||
buddyInfos: UserInfo[];
|
||||
}
|
||||
|
||||
export interface SyncBuddyResponse extends ProtocolResponse {
|
||||
// 0. 동료 씽크일시(s) cf)2019-09-24 16:51:42
|
||||
syncDate: string;
|
||||
}
|
||||
|
||||
export const encodeSyncBuddy: ProtocolEncoder<SyncBuddyRequest> = (
|
||||
req: SyncBuddyRequest
|
||||
) => {
|
||||
const bodyList: PacketBody[] = [];
|
||||
|
||||
bodyList.push({ type: PacketBodyValue.String, value: req.syncDate || '' });
|
||||
return bodyList;
|
||||
};
|
||||
|
||||
export const decodeSyncBuddy: ProtocolDecoder<SyncBuddyResponse> = (
|
||||
message: ProtocolMessage
|
||||
) => {
|
||||
return {
|
||||
syncDate: message.bodyList[0]
|
||||
} as SyncBuddyResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncBuddyData: ProtocolDecoder<SyncBuddyDataResponse> = (
|
||||
message: ProtocolMessage
|
||||
) => {
|
||||
const buddyInfos: BuddyInfo[] = [];
|
||||
message.bodyList.forEach(buddyinfo => {
|
||||
const info = buddyinfo.split(BodyStringDivider);
|
||||
buddyInfos.push({
|
||||
userSeq: info[0],
|
||||
isFavorit: info[1] === 'Y' ? true : false,
|
||||
isBuddy: info[2] === 'Y' ? true : false
|
||||
});
|
||||
});
|
||||
return {
|
||||
buddyInfos
|
||||
} as SyncBuddyDataResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncBuddyDataDetail: ProtocolDecoder<
|
||||
SyncBuddyDataDetailResponse
|
||||
> = (message: ProtocolMessage) => {
|
||||
const buddyInfos: UserInfo[] = [];
|
||||
message.bodyList.forEach(buddyinfo => {
|
||||
const info = buddyinfo.split(BodyStringDivider);
|
||||
let i = 0;
|
||||
buddyInfos.push({
|
||||
userSeq: info[i],
|
||||
name: info[i++],
|
||||
profileImageFile: info[i++],
|
||||
grade: info[i++],
|
||||
intro: info[i++],
|
||||
companyCode: info[i++],
|
||||
hpNumber: info[i++],
|
||||
lineNumber: info[i++],
|
||||
email: info[i++],
|
||||
isMobile: info[i++],
|
||||
deptName: info[i++],
|
||||
isFavorit: info[i++],
|
||||
isBuddy: info[i++],
|
||||
isActive: info[i++],
|
||||
roleCd: info[i++],
|
||||
employeeNum: info[i++],
|
||||
madn: info[i++],
|
||||
hardSadn: info[i++],
|
||||
fmcSadn: info[i++],
|
||||
nameEn: info[i++],
|
||||
nameCn: info[i++],
|
||||
gradeEn: info[i++],
|
||||
gradeCn: info[i++],
|
||||
deptNameEn: info[i++],
|
||||
deptNameCn: info[i++],
|
||||
isPrivacyAgree: info[i++],
|
||||
isValidLogin: info[i++],
|
||||
employeeType: info[i++],
|
||||
nickName: info[i++]
|
||||
});
|
||||
});
|
||||
return {
|
||||
buddyInfos
|
||||
} as SyncBuddyDataDetailResponse;
|
||||
};
|
101
projects/ucap-webmessenger-protocol-sync/src/lib/models/group.ts
Normal file
101
projects/ucap-webmessenger-protocol-sync/src/lib/models/group.ts
Normal file
|
@ -0,0 +1,101 @@
|
|||
import {
|
||||
ProtocolRequest,
|
||||
ProtocolResponse,
|
||||
ProtocolEncoder,
|
||||
PacketBody,
|
||||
PacketBodyValue,
|
||||
ProtocolDecoder,
|
||||
ProtocolMessage,
|
||||
BodyStringDivider
|
||||
} from '@ucap-webmessenger/protocol';
|
||||
|
||||
export interface GroupInfo {
|
||||
// 그룹SEQ(n)
|
||||
seq: number;
|
||||
// 그룹이름(s)
|
||||
name: string;
|
||||
// ActiveYN(s)
|
||||
isActive: boolean;
|
||||
// 사용자SEQ(s)
|
||||
userSeqStr: string;
|
||||
}
|
||||
export interface SyncGroupRequest extends ProtocolRequest {
|
||||
// 0. 동료 씽크일시(s) cf)2019-09-24 16:51:42
|
||||
syncDate: string;
|
||||
}
|
||||
|
||||
export interface SyncGroupDataResponse extends ProtocolResponse {
|
||||
// n. {동료그룹정보}...
|
||||
groupInfos: GroupInfo[];
|
||||
}
|
||||
|
||||
export interface SyncGroupDataDetailResponse extends ProtocolResponse {
|
||||
// 그룹SEQ(n)
|
||||
seq: number;
|
||||
// 그룹이름(s)
|
||||
name: string;
|
||||
// ActiveYN(s)
|
||||
isActive: boolean;
|
||||
// 사용자SEQ(n)1
|
||||
userSeqs: number[];
|
||||
}
|
||||
|
||||
export interface SyncGroupResponse extends ProtocolResponse {
|
||||
// 0. 동료 씽크일시(s) cf)2019-09-24 16:51:42
|
||||
syncDate: string;
|
||||
}
|
||||
|
||||
export const encodeSyncGroup: ProtocolEncoder<SyncGroupRequest> = (
|
||||
req: SyncGroupRequest
|
||||
) => {
|
||||
const bodyList: PacketBody[] = [];
|
||||
|
||||
bodyList.push({ type: PacketBodyValue.String, value: req.syncDate || '' });
|
||||
return bodyList;
|
||||
};
|
||||
|
||||
export const decodeSyncGroup: ProtocolDecoder<SyncGroupResponse> = (
|
||||
message: ProtocolMessage
|
||||
) => {
|
||||
return {
|
||||
syncDate: message.bodyList[0]
|
||||
} as SyncGroupResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncGroupData: ProtocolDecoder<SyncGroupDataResponse> = (
|
||||
message: ProtocolMessage
|
||||
) => {
|
||||
const groupInfos: GroupInfo[] = [];
|
||||
message.bodyList.forEach(buddyinfo => {
|
||||
const info = buddyinfo.split(BodyStringDivider);
|
||||
groupInfos.push({
|
||||
seq: info[0],
|
||||
name: info[1],
|
||||
isActive: info[2] === 'Y' ? true : false,
|
||||
userSeqStr: info[3]
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
groupInfos
|
||||
} as SyncGroupDataResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncGroupDataDetail: ProtocolDecoder<
|
||||
SyncGroupDataDetailResponse
|
||||
> = (message: ProtocolMessage) => {
|
||||
let userSeqs: number[] = [];
|
||||
if (message.bodyList.length > 3) {
|
||||
userSeqs = message.bodyList.slice(3);
|
||||
}
|
||||
return {
|
||||
// 그룹SEQ(n)
|
||||
seq: message.bodyList[0],
|
||||
// 그룹이름(s)
|
||||
name: message.bodyList[1],
|
||||
// ActiveYN(s)
|
||||
isActive: message.bodyList[2] === 'Y' ? true : false,
|
||||
// 사용자SEQ(n)1
|
||||
userSeqs
|
||||
} as SyncGroupDataDetailResponse;
|
||||
};
|
175
projects/ucap-webmessenger-protocol-sync/src/lib/models/room.ts
Normal file
175
projects/ucap-webmessenger-protocol-sync/src/lib/models/room.ts
Normal file
|
@ -0,0 +1,175 @@
|
|||
import { LocaleCode } from '@ucap-webmessenger/core';
|
||||
import {
|
||||
ProtocolRequest,
|
||||
ProtocolResponse,
|
||||
ProtocolEncoder,
|
||||
PacketBody,
|
||||
PacketBodyValue,
|
||||
ProtocolDecoder,
|
||||
ProtocolMessage,
|
||||
BodyStringDivider
|
||||
} from '@ucap-webmessenger/protocol';
|
||||
import {
|
||||
RoomInfo,
|
||||
UserInfoShort,
|
||||
UserInfo,
|
||||
EmployeeType
|
||||
} from '@ucap-webmessenger/protocol-room';
|
||||
import { RoleCode } from '@ucap-webmessenger/protocol-authentication';
|
||||
import { EventType } from '@ucap-webmessenger/protocol-event';
|
||||
|
||||
export interface SyncRoomRequest extends ProtocolRequest {
|
||||
// 0. 동료 씽크일시(s) cf)2019-09-24 16:51:42
|
||||
syncDate: string;
|
||||
// 언어코드
|
||||
localeCode: LocaleCode;
|
||||
}
|
||||
|
||||
export interface SyncRoomDataResponse extends ProtocolResponse {
|
||||
// n. {대화방정보}...
|
||||
roomInfos: RoomInfo[];
|
||||
}
|
||||
|
||||
export interface SyncRoomUserDataResponse extends ProtocolResponse {
|
||||
// 0. 대화방SEQ(s)
|
||||
roomSeq: string;
|
||||
// 1n. {참여자정보}
|
||||
userInfos: UserInfoShort[];
|
||||
}
|
||||
|
||||
export interface SyncRoomUserDataDetailResponse extends ProtocolResponse {
|
||||
// 0. 대화방SEQ(s)
|
||||
roomSeq: string;
|
||||
// 1n. {참여자정보-D}
|
||||
userInfos: UserInfo[];
|
||||
}
|
||||
|
||||
export interface SyncRoomResponse extends ProtocolResponse {
|
||||
// 0. 동료 씽크일시(s) cf)2019-09-24 16:51:42
|
||||
syncDate: string;
|
||||
}
|
||||
|
||||
export const encodeSyncRoom: ProtocolEncoder<SyncRoomRequest> = (
|
||||
req: SyncRoomRequest
|
||||
) => {
|
||||
const bodyList: PacketBody[] = [];
|
||||
|
||||
bodyList.push({ type: PacketBodyValue.String, value: req.syncDate || '' });
|
||||
bodyList.push({ type: PacketBodyValue.String, value: req.localeCode });
|
||||
return bodyList;
|
||||
};
|
||||
|
||||
export const decodeSyncRoom: ProtocolDecoder<SyncRoomResponse> = (
|
||||
message: ProtocolMessage
|
||||
) => {
|
||||
return {
|
||||
syncDate: message.bodyList[0]
|
||||
} as SyncRoomResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncRoomData: ProtocolDecoder<SyncRoomDataResponse> = (
|
||||
message: ProtocolMessage
|
||||
) => {
|
||||
const roomInfos: RoomInfo[] = [];
|
||||
if (message.bodyList.length > 1) {
|
||||
const info = message.bodyList[1].split(BodyStringDivider);
|
||||
if (info.length > 11) {
|
||||
roomInfos.push({
|
||||
roomSeq: info[0],
|
||||
roomType: info[1],
|
||||
roomName: info[2],
|
||||
finalEventType: info[3] as EventType,
|
||||
finalEventMessage: info[4],
|
||||
finalEventDate: info[5],
|
||||
joinUserCount: info[6],
|
||||
noReadCnt: info[7],
|
||||
isAlarm: info[8] !== 'N' ? true : false,
|
||||
isJoinRoom: info[9] === 'Y' ? true : false,
|
||||
expiredFileStdSeq: info[10],
|
||||
isTimeRoom: info[11] === 'Y' ? true : false,
|
||||
timeRoomInterval: info[11] !== 'Y' ? 0 : info[12] || 0
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
roomSeq: message.bodyList[0],
|
||||
roomInfos
|
||||
} as SyncRoomDataResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncRoomUserData: ProtocolDecoder<
|
||||
SyncRoomUserDataResponse
|
||||
> = (message: ProtocolMessage) => {
|
||||
const userInfos: UserInfoShort[] = [];
|
||||
message.bodyList.slice(1).forEach(userInfo => {
|
||||
const info = userInfo.split(BodyStringDivider);
|
||||
userInfos.push({
|
||||
userSeq: info[0],
|
||||
name: info[1],
|
||||
profileImageFile: info[2],
|
||||
isJoinRoom: info[3],
|
||||
lastReadEventSeq: info[4],
|
||||
madn: info[5],
|
||||
hardSadn: info[6],
|
||||
fmcSadn: info[7],
|
||||
nameEn: info[8],
|
||||
nameCn: info[9],
|
||||
isPrivacyAgree: info[10] === 'Y' ? true : false,
|
||||
isValidLogin: info[11] === 'Y' ? true : false,
|
||||
employeeType: info[12] as EmployeeType,
|
||||
fontColor: info[13]
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
roomSeq: message.bodyList[0],
|
||||
userInfos
|
||||
} as SyncRoomUserDataResponse;
|
||||
};
|
||||
|
||||
export const decodeSyncRoomUserDataDetail: ProtocolDecoder<
|
||||
SyncRoomUserDataDetailResponse
|
||||
> = (message: ProtocolMessage) => {
|
||||
const userInfos: UserInfo[] = [];
|
||||
message.bodyList.slice(1).forEach(userInfo => {
|
||||
const info = userInfo.split(BodyStringDivider);
|
||||
userInfos.push({
|
||||
userSeq: info[0],
|
||||
name: info[1],
|
||||
profileImageFile: info[2],
|
||||
grade: info[3],
|
||||
intro: info[4],
|
||||
companyCode: info[5],
|
||||
hpNumber: info[6],
|
||||
lineNumber: info[7],
|
||||
email: info[8],
|
||||
isMobile: info[9] === 'Y' ? true : false,
|
||||
deptName: info[10],
|
||||
isJoinRoom: info[11] === 'Y' ? true : false,
|
||||
lastReadEventSeq: info[12],
|
||||
isActive: info[13] === 'Y' ? true : false,
|
||||
roleCd: info[14] as RoleCode,
|
||||
employeeNum: info[15],
|
||||
madn: info[16],
|
||||
hardSadn: info[17],
|
||||
fmcSadn: info[18],
|
||||
nameEn: info[19],
|
||||
nameCn: info[20],
|
||||
gradeEn: info[21],
|
||||
gradeCn: info[22],
|
||||
deptNameEn: info[23],
|
||||
deptNameCn: info[24],
|
||||
callMode: info[25],
|
||||
isPrivacyAgree: info[26] === 'Y' ? true : false,
|
||||
isValidLogin: info[27] === 'Y' ? true : false,
|
||||
employeeType: info[28] as EmployeeType,
|
||||
id: info[29]
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
roomSeq: message.bodyList[0],
|
||||
userInfos
|
||||
} as SyncRoomUserDataDetailResponse;
|
||||
};
|
|
@ -1,8 +1,211 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, take, takeWhile } from 'rxjs/operators';
|
||||
|
||||
import { ProtocolService } from '@ucap-webmessenger/protocol';
|
||||
import {
|
||||
SyncBuddyRequest,
|
||||
SyncBuddyResponse,
|
||||
SyncBuddyDataResponse,
|
||||
encodeSyncBuddy,
|
||||
decodeSyncBuddyData,
|
||||
decodeSyncBuddy,
|
||||
decodeSyncBuddyDataDetail
|
||||
} from '../models/buddy';
|
||||
import {
|
||||
SVC_TYPE_SYNC_BUDDY,
|
||||
SSVC_TYPE_SYNC_BUDDY_REQ,
|
||||
SSVC_TYPE_SYNC_BUDDY_RES,
|
||||
SSVC_TYPE_SYNC_BUDDY_DATA,
|
||||
SSVC_TYPE_SYNC_BUDDY2_REQ,
|
||||
SSVC_TYPE_SYNC_BUDDY2_RES,
|
||||
SSVC_TYPE_SYNC_BUDDY2_DATA,
|
||||
SVC_TYPE_SYNC_GROUP,
|
||||
SSVC_TYPE_SYNC_GROUP_REQ,
|
||||
SSVC_TYPE_SYNC_GROUP_RES,
|
||||
SSVC_TYPE_SYNC_GROUP_DATA,
|
||||
SSVC_TYPE_SYNC_GROUP_REQ2,
|
||||
SSVC_TYPE_SYNC_GROUP_RES2,
|
||||
SSVC_TYPE_SYNC_GROUP_DATA2,
|
||||
SVC_TYPE_SYNC_ROOM,
|
||||
SSVC_TYPE_SYNC_ROOM_REQ,
|
||||
SSVC_TYPE_SYNC_ROOM_RES,
|
||||
SSVC_TYPE_SYNC_ROOM_DATA,
|
||||
SSVC_TYPE_SYNC_ROOM_USER,
|
||||
SSVC_TYPE_SYNC_ROOM_USER2,
|
||||
SSVC_TYPE_SYNC_ROOM2_REQ,
|
||||
SSVC_TYPE_SYNC_ROOM2_RES,
|
||||
SSVC_TYPE_SYNC_ROOM2_DATA,
|
||||
SSVC_TYPE_SYNC_ROOM2_USER,
|
||||
SSVC_TYPE_SYNC_ROOM2_USER2
|
||||
} from '../types/service';
|
||||
import {
|
||||
SyncGroupRequest,
|
||||
SyncGroupResponse,
|
||||
SyncGroupDataResponse,
|
||||
encodeSyncGroup,
|
||||
decodeSyncGroupDataDetail,
|
||||
decodeSyncGroup,
|
||||
decodeSyncGroupData,
|
||||
SyncGroupDataDetailResponse
|
||||
} from '../models/group';
|
||||
import {
|
||||
SyncRoomRequest,
|
||||
SyncRoomResponse,
|
||||
encodeSyncRoom,
|
||||
decodeSyncRoom,
|
||||
SyncRoomUserDataResponse,
|
||||
SyncRoomUserDataDetailResponse,
|
||||
SyncRoomDataResponse,
|
||||
decodeSyncRoomData,
|
||||
decodeSyncRoomUserData,
|
||||
decodeSyncRoomUserDataDetail
|
||||
} from '../models/room';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class SyncProtocolService {
|
||||
constructor() {}
|
||||
constructor(private protocolService: ProtocolService) {}
|
||||
|
||||
public syncBuddy(
|
||||
req: SyncBuddyRequest
|
||||
): Observable<SyncBuddyResponse | SyncBuddyDataResponse> {
|
||||
return this.protocolService
|
||||
.call(
|
||||
SVC_TYPE_SYNC_BUDDY,
|
||||
SSVC_TYPE_SYNC_BUDDY_REQ,
|
||||
...encodeSyncBuddy(req)
|
||||
)
|
||||
.pipe(
|
||||
takeWhile(res => SSVC_TYPE_SYNC_BUDDY_RES !== res.subServiceType),
|
||||
map(res => {
|
||||
if (SSVC_TYPE_SYNC_BUDDY_DATA === res.subServiceType) {
|
||||
return decodeSyncBuddyData(res);
|
||||
}
|
||||
|
||||
return decodeSyncBuddy(res);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public syncBuddy2(
|
||||
req: SyncBuddyRequest
|
||||
): Observable<SyncBuddyResponse | SyncBuddyDataResponse> {
|
||||
return this.protocolService
|
||||
.call(
|
||||
SVC_TYPE_SYNC_BUDDY,
|
||||
SSVC_TYPE_SYNC_BUDDY2_REQ,
|
||||
...encodeSyncBuddy(req)
|
||||
)
|
||||
.pipe(
|
||||
takeWhile(res => SSVC_TYPE_SYNC_BUDDY2_RES !== res.subServiceType),
|
||||
map(res => {
|
||||
if (SSVC_TYPE_SYNC_BUDDY2_DATA === res.subServiceType) {
|
||||
return decodeSyncBuddyDataDetail(res);
|
||||
}
|
||||
|
||||
return decodeSyncBuddy(res);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public syncGroup(
|
||||
req: SyncGroupRequest
|
||||
): Observable<SyncGroupResponse | SyncGroupDataResponse> {
|
||||
return this.protocolService
|
||||
.call(
|
||||
SVC_TYPE_SYNC_GROUP,
|
||||
SSVC_TYPE_SYNC_GROUP_REQ,
|
||||
...encodeSyncGroup(req)
|
||||
)
|
||||
.pipe(
|
||||
takeWhile(res => SSVC_TYPE_SYNC_GROUP_RES !== res.subServiceType),
|
||||
map(res => {
|
||||
if (SSVC_TYPE_SYNC_GROUP_DATA === res.subServiceType) {
|
||||
return decodeSyncGroupData(res);
|
||||
}
|
||||
|
||||
return decodeSyncGroup(res);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public syncGroup2(
|
||||
req: SyncGroupRequest
|
||||
): Observable<SyncGroupResponse | SyncGroupDataDetailResponse> {
|
||||
return this.protocolService
|
||||
.call(
|
||||
SVC_TYPE_SYNC_GROUP,
|
||||
SSVC_TYPE_SYNC_GROUP_REQ2,
|
||||
...encodeSyncGroup(req)
|
||||
)
|
||||
.pipe(
|
||||
takeWhile(res => SSVC_TYPE_SYNC_GROUP_RES2 !== res.subServiceType),
|
||||
map(res => {
|
||||
if (SSVC_TYPE_SYNC_GROUP_DATA2 === res.subServiceType) {
|
||||
return decodeSyncGroupDataDetail(res);
|
||||
}
|
||||
|
||||
return decodeSyncGroup(res);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public syncRoom(
|
||||
req: SyncRoomRequest
|
||||
): Observable<
|
||||
| SyncRoomResponse
|
||||
| SyncRoomDataResponse
|
||||
| SyncRoomUserDataResponse
|
||||
| SyncRoomUserDataDetailResponse
|
||||
> {
|
||||
return this.protocolService
|
||||
.call(SVC_TYPE_SYNC_ROOM, SSVC_TYPE_SYNC_ROOM_REQ, ...encodeSyncRoom(req))
|
||||
.pipe(
|
||||
takeWhile(res => SSVC_TYPE_SYNC_ROOM_RES !== res.subServiceType),
|
||||
map(res => {
|
||||
if (SSVC_TYPE_SYNC_ROOM_DATA === res.subServiceType) {
|
||||
return decodeSyncRoomData(res);
|
||||
} else if (SSVC_TYPE_SYNC_ROOM_USER === res.subServiceType) {
|
||||
return decodeSyncRoomUserData(res);
|
||||
} else if (SSVC_TYPE_SYNC_ROOM_USER2 === res.subServiceType) {
|
||||
return decodeSyncRoomUserDataDetail(res);
|
||||
}
|
||||
|
||||
return decodeSyncRoom(res);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public syncRoom2(
|
||||
req: SyncRoomRequest
|
||||
): Observable<
|
||||
| SyncRoomResponse
|
||||
| SyncRoomDataResponse
|
||||
| SyncRoomUserDataResponse
|
||||
| SyncRoomUserDataDetailResponse
|
||||
> {
|
||||
return this.protocolService
|
||||
.call(
|
||||
SVC_TYPE_SYNC_ROOM,
|
||||
SSVC_TYPE_SYNC_ROOM2_REQ,
|
||||
...encodeSyncRoom(req)
|
||||
)
|
||||
.pipe(
|
||||
takeWhile(res => SSVC_TYPE_SYNC_ROOM2_RES !== res.subServiceType),
|
||||
map(res => {
|
||||
if (SSVC_TYPE_SYNC_ROOM2_DATA === res.subServiceType) {
|
||||
return decodeSyncRoomData(res);
|
||||
} else if (SSVC_TYPE_SYNC_ROOM2_USER === res.subServiceType) {
|
||||
return decodeSyncRoomUserData(res);
|
||||
} else if (SSVC_TYPE_SYNC_ROOM2_USER2 === res.subServiceType) {
|
||||
return decodeSyncRoomUserDataDetail(res);
|
||||
}
|
||||
|
||||
return decodeSyncRoom(res);
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
export const SVC_TYPE_SYNC_BUDDY = 81; // 동료 씽크
|
||||
export const SSVC_TYPE_SYNC_BUDDY_REQ = 1; // 동료목록 씽크 요청
|
||||
export const SSVC_TYPE_SYNC_BUDDY_DATA = 2; // 동료목록 Data
|
||||
export const SSVC_TYPE_SYNC_BUDDY_RES = 3; // 동료목록 씽크 완료
|
||||
export const SSVC_TYPE_SYNC_BUDDY2_REQ = 11; // 동료목록 씽크 요청(상세)
|
||||
export const SSVC_TYPE_SYNC_BUDDY2_DATA = 12; // 동료 정보 Data(상세)
|
||||
export const SSVC_TYPE_SYNC_BUDDY2_RES = 13; // 동료 정보 쿼리 완료(상세)
|
||||
|
||||
export const SVC_TYPE_SYNC_GROUP = 82; // 동료 씽크
|
||||
export const SSVC_TYPE_SYNC_GROUP_REQ = 1; // 그룹목록 씽크 요청
|
||||
export const SSVC_TYPE_SYNC_GROUP_DATA = 2; // 그룹 Data
|
||||
export const SSVC_TYPE_SYNC_GROUP_RES = 3; // 그룹목록 씽크 완료
|
||||
export const SSVC_TYPE_SYNC_GROUP_REQ2 = 4; // 그룹목록 씽크 요청
|
||||
export const SSVC_TYPE_SYNC_GROUP_DATA2 = 5; // 그룹 Data
|
||||
export const SSVC_TYPE_SYNC_GROUP_RES2 = 6; // 그룹목록 씽크 완료
|
||||
|
||||
export const SVC_TYPE_SYNC_ROOM = 83; // 대화방 씽크
|
||||
export const SSVC_TYPE_SYNC_ROOM_REQ = 1; // 대화방 목록 씽크 요청
|
||||
export const SSVC_TYPE_SYNC_ROOM_DATA = 2; // 대화방 목록 Data
|
||||
export const SSVC_TYPE_SYNC_ROOM_USER = 3; // 참여 정보(방갯수만큼)
|
||||
export const SSVC_TYPE_SYNC_ROOM_USER2 = 5; // 참여 정보(방갯수만큼)
|
||||
export const SSVC_TYPE_SYNC_ROOM_RES = 4; // 대화방 목록 씽크 완료
|
||||
export const SSVC_TYPE_SYNC_ROOM2_REQ = 11; // 대화방 목록 씽크 요청
|
||||
export const SSVC_TYPE_SYNC_ROOM2_DATA = 12; // 대화방 목록 Data
|
||||
export const SSVC_TYPE_SYNC_ROOM2_USER = 13; // 참여 정보(방갯수만큼)
|
||||
export const SSVC_TYPE_SYNC_ROOM2_USER2 = 15; // 참여 정보(방갯수만큼)
|
||||
export const SSVC_TYPE_SYNC_ROOM2_RES = 14; // 대화방 목록 씽크 완료
|
|
@ -0,0 +1,63 @@
|
|||
import { RoleCode } from '@ucap-webmessenger/protocol-authentication';
|
||||
import { EmployeeType } from '@ucap-webmessenger/protocol-room';
|
||||
|
||||
export interface UserInfo {
|
||||
// 사용자SEQ
|
||||
userSeq: number;
|
||||
// 사용자명
|
||||
name: string;
|
||||
// 사진파일
|
||||
profileImageFile: string;
|
||||
// 직급
|
||||
grade: string;
|
||||
// 업무소개
|
||||
intro: string;
|
||||
// 기관코드
|
||||
companyCode: string;
|
||||
// 핸드폰번호
|
||||
hpNumber: string;
|
||||
// 내선번호
|
||||
lineNumber: string;
|
||||
// 이메일
|
||||
email: string;
|
||||
// 모바일YN
|
||||
isMobile: boolean;
|
||||
// 부서명
|
||||
deptName: string;
|
||||
// 즐.찾 여부
|
||||
isFavorit: boolean;
|
||||
// 친구여부
|
||||
isBuddy: boolean;
|
||||
// ActiveYN
|
||||
isActive: boolean;
|
||||
// 역할코드
|
||||
roleCd: RoleCode;
|
||||
// 사번
|
||||
employeeNum: string;
|
||||
// MADN
|
||||
madn: string;
|
||||
// HARDPHONE_SADN
|
||||
hardSadn: string;
|
||||
// FMC_SADN
|
||||
fmcSadn: string;
|
||||
// 사용자명(영어)
|
||||
nameEn: string;
|
||||
// 사용자명(중국어)
|
||||
nameCn: string;
|
||||
// 직급(영어)
|
||||
gradeEn: string;
|
||||
// 직급(중국어)
|
||||
gradeCn: string;
|
||||
// 부서명(영어)
|
||||
deptNameEn: string;
|
||||
// 부서명(중국어)
|
||||
deptNameCn: string;
|
||||
// 이용약관동의여부YN
|
||||
isPrivacyAgree: boolean;
|
||||
// 유효접속여부YN
|
||||
isValidLogin: boolean;
|
||||
// 임직원유형(s)
|
||||
employeeType: EmployeeType;
|
||||
// 별명
|
||||
nickName: string;
|
||||
}
|
|
@ -1,7 +1,11 @@
|
|||
/*
|
||||
* Public API Surface of ucap-webmessenger-protocol-sync
|
||||
*/
|
||||
export * from './lib/models/buddy';
|
||||
export * from './lib/models/group';
|
||||
|
||||
export * from './lib/services/sync-protocol.service';
|
||||
|
||||
export * from './lib/ucap-sync-protocol.module';
|
||||
|
||||
export * from './lib/types/userInfo';
|
||||
|
|
Loading…
Reference in New Issue
Block a user