Skip to content

Commit

Permalink
Merge pull request #106 from depromeet/dev
Browse files Browse the repository at this point in the history
유저 정보에 깃발 동의여부 추가
  • Loading branch information
ImNM authored Jun 29, 2022
2 parents 677f0cd + 0c93202 commit ac16ef1
Show file tree
Hide file tree
Showing 6 changed files with 110 additions and 13 deletions.
22 changes: 11 additions & 11 deletions src/apis/rooms/rooms.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,17 @@ import { RoomUserListDto } from './dto/roomUserList.res.dto';
export class RoomsController {
constructor(private readonly roomsService: RoomsService) {}

@ApiOperation({ summary: '룸을 생성할수 있음' })
@ApiBody({ type: CreateRoomDto })
@ApiResponse({
status: 201,
description: '요청 성공시',
type: Room,
})
@Post()
create(@Body() createRoomDto: CreateRoomDto) {
return this.roomsService.createRoom(createRoomDto);
}
// @ApiOperation({ summary: '룸을 생성할수 있음' })
// @ApiBody({ type: CreateRoomDto })
// @ApiResponse({
// status: 201,
// description: '요청 성공시',
// type: Room,
// })
// @Post()
// create(@Body() createRoomDto: CreateRoomDto) {
// return this.roomsService.createRoom(createRoomDto);
// }

@ApiOperation({
summary:
Expand Down
4 changes: 4 additions & 0 deletions src/apis/users/dto/flagInfo.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { PickType } from '@nestjs/swagger';
import { User } from 'src/models/user.model';

export class FlagInfoDto extends PickType(User, ['flagInfo'] as const) {}
29 changes: 28 additions & 1 deletion src/apis/users/user.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ import { CanChangeNicknameResDto } from './dto/canChangeNickname.res.dto';
import { NewAlarmStateResDto } from './dto/newAlarmState.res.dto';
import { SendLightningSuccessDtoResDto } from './dto/sendLigningSuccessDto.res.dto';
import { AlarmService } from '../alarm/alarm.service';
import { FCMUpdateDto } from './dto/fcmUpdate.dto';
import { FlagInfoDto } from './dto/flagInfo.dto';
import { UserProfileClickDto } from './dto/UserProfileClick.dto';
import { OfficialNoti } from 'src/models/officialNoti';
import { FCMUpdateDto } from './dto/fcmUpdate.dto';

@ApiTags('user')
@Controller('user')
Expand Down Expand Up @@ -101,6 +102,32 @@ export class UserController {
return this.userService.updateUserFCMToken(user.userIdDto, fCMUpdateDto);
}

@ApiOperation({
summary: 'flagInfo 업데이트하기',
})
@Patch('flagInfo')
@ApiResponse({
status: 200,
description: '요청 성공시',
type: FlagInfoDto,
})
updateUserFlagInfo(@ReqUser() user: User, @Body() flagInfoDto: FlagInfoDto) {
return this.userService.updateUserFlagInfo(user.userIdDto, flagInfoDto);
}

@ApiOperation({
summary: 'flagInfo 정보 가져오기',
})
@Get('flagInfo')
@ApiResponse({
status: 200,
description: '요청 성공시',
type: FlagInfoDto,
})
getUserFlagInfo(@ReqUser() user: User) {
return this.userService.getUserFlagInfo(user.userIdDto);
}

@ApiOperation({ summary: '내 차단유저 목록을 불러온다' })
@Get('/block')
@ApiResponse({
Expand Down
27 changes: 26 additions & 1 deletion src/apis/users/user.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ import {
USER_LEVEL_TYPE,
} from 'src/common/consts/enum';
import { AlarmService } from '../alarm/alarm.service';
import { FCMUpdateDto } from './dto/fcmUpdate.dto';
import { FlagInfoDto } from './dto/flagInfo.dto';
import { RoomsService } from '../rooms/rooms.service';
import { RoomIdDto } from 'src/common/dtos/RoomId.dto';
import { UserProfileClickDto } from './dto/UserProfileClick.dto';
import { OfficialNotiRepository } from 'src/repositories/officialNoti.repository';
import { OfficialNoti } from 'src/models/officialNoti';
import { FCMUpdateDto } from './dto/fcmUpdate.dto';

@Injectable()
export class UserService {
Expand Down Expand Up @@ -309,4 +310,28 @@ export class UserService {

return { FCMToken: updatedUserFCMToken };
}

@returnValueToDto(FlagInfoDto)
async updateUserFlagInfo(
myUserIdDto: UserIdDto,
flagInfoDto: FlagInfoDto,
): Promise<FlagInfoDto> {
const updatedUserFlagInfo = await this.userRepository.updateUserFlagInfo(
myUserIdDto,
flagInfoDto,
);
console.log('asdfasdfasdfafsdF', updatedUserFlagInfo);

return { flagInfo: updatedUserFlagInfo };
}

@returnValueToDto(FlagInfoDto)
async getUserFlagInfo(myUserIdDto: UserIdDto): Promise<FlagInfoDto> {
const getUserFlagInfo = await this.userRepository.getUserFlagInfo(
myUserIdDto,
);
console.log('asdfasdfasdfafsdF', getUserFlagInfo);

return { flagInfo: getUserFlagInfo };
}
}
13 changes: 13 additions & 0 deletions src/models/user.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { toKRTimeZone } from 'src/common/funcs/toKRTimezone';
import { TransformObjectIdToString } from 'src/common/decorators/Expose.decorator';
import { ResShortCutRoomDto } from 'src/common/dtos/shortCutRoomInfo.res.dto';
import { BlockedUserDto } from 'src/common/dtos/BlockedUserList.dto';
import { animationFrameScheduler } from 'rxjs';

const options: SchemaOptions = {
id: false,
Expand Down Expand Up @@ -211,6 +212,18 @@ export class User {
@Expose()
isJoin: boolean;

@ApiProperty({
type: Boolean,
description: '유저 깃발정보 동의 여부',
})
@Prop({
type: Boolean,
default: true,
})
@Expose()
@IsBoolean()
flagInfo: boolean;

lastChat: Types.ObjectId | null;
}

Expand Down
28 changes: 28 additions & 0 deletions src/repositories/user.repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
userFcmInfoSelect,
} from 'src/apis/alarm/dto/userFcmInfo.dto';
import { Types } from 'mongoose';
import { FlagInfoDto } from 'src/apis/users/dto/flagInfo.dto';
import { FCMUpdateDto } from 'src/apis/users/dto/fcmUpdate.dto';

@Injectable()
Expand Down Expand Up @@ -495,4 +496,31 @@ export class UserRepository {
}
return user.FCMToken;
}

async updateUserFlagInfo(
myUserIdDto: UserIdDto,
flagInfoDto: FlagInfoDto,
): Promise<boolean> {
const user = await this.userModel
.findOneAndUpdate(
{ _id: myUserIdDto.userId },
[{ $set: { flagInfo: { $eq: [false, '$flagInfo'] } } }],
{ new: true },
)
.lean<User>({ defaults: true });
if (!user) {
throw new InternalServerErrorException('잘못된 접근');
}
return user.flagInfo;
}

async getUserFlagInfo(myUserIdDto: UserIdDto): Promise<boolean> {
const user = await this.userModel
.findOne({ _id: myUserIdDto.userId })
.lean<User>({ defaults: true });
if (!user) {
throw new InternalServerErrorException('잘못된 접근');
}
return user.flagInfo;
}
}

0 comments on commit ac16ef1

Please sign in to comment.