Skip to content

Commit

Permalink
Merge pull request #55 from hgh9/feature/payments
Browse files Browse the repository at this point in the history
Feature/payments
  • Loading branch information
IamMinkyu authored Jul 17, 2023
2 parents 7972f38 + c802eb6 commit 6bf33f5
Show file tree
Hide file tree
Showing 45 changed files with 616 additions and 427 deletions.
3 changes: 2 additions & 1 deletion vet_nest/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ export default () => ({
type: process.env.DB_TYPE === 'mariadb' ? 'mariadb' : 'mysql',
host:
process.env.REACT_APP_ENV === 'local'
? process.env.DB_HOST
? '127.0.0.1'
: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
timezone: '+00:00',
// entities: ['dist/**/*.entity.js'],
// logging: Boolean(JSON.parse(process.env.DB_LOGGING)),
logging: true,
Expand Down
7 changes: 4 additions & 3 deletions vet_nest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
"test:e2e": "jest --config ./test/jest-e2e.json"
},
"dependencies": {
"@nestjs/axios": "^3.0.0",
"@nestjs/common": "^10.0.5",
"@automapper/core": "^8.7.7",
"@automapper/nestjs": "^8.7.7",
"@nestjs/axios": "^3.0.0",
"@nestjs/common": "^10.0.5",
"@nestjs/config": "^2.2.0",
"@nestjs/core": "^9.2.1",
"@nestjs/jwt": "^10.1.0",
Expand All @@ -41,8 +41,8 @@
"@types/redis": "^4.0.11",
"@types/winston": "^2.4.4",
"@willsoto/nestjs-prometheus": "^5.2.0",
"axios": "^1.4.0",
"applicationinsights": "^2.7.0",
"axios": "^1.4.0",
"body-parser": "^1.20.1",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.0",
Expand All @@ -61,6 +61,7 @@
"rxjs": "^7.6.0",
"socket.io-redis": "^6.1.1",
"typeorm": "^0.3.11",
"uuid": "^9.0.0",
"winston": "^3.8.2",
"winston-azure-application-insights": "^4.0.0",
"winston-daily-rotate-file": "^4.7.1"
Expand Down
32 changes: 4 additions & 28 deletions vet_nest/src/app/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Logger, Module, LoggerService } from '@nestjs/common';
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import * as winston from 'winston';
import {
Expand All @@ -16,24 +15,13 @@ import { VetsModule } from '../vets/vets.module';
import { PaymentsModule } from '../payments/payments.module';
import { UsersModule } from '../users/users.module';
import { ExceptionsModule } from '../exceptions/exceptions.module';
import { PetsController } from '../pets/pets.controller';
import { VetsController } from '../vets/vets.controller';
import { PaymentsController } from '../payments/payments.controller';
import { UsersController } from '../users/users.controller';
import { DisgnosisController } from '../diagnosis/diagnosis.controller';
import { PetsService } from '../pets/pets.service';
import { PetsRepository } from '../pets/repository/pets.repository';
import { VetsService } from '../vets/vets.service';
import { PaymentsService } from '../payments/payments.service';
import { UsersService } from '../users/users.service';
import { DiagnosisService } from '../diagnosis/diagnosis.service';
import { UsersRepository } from '../users/repository/users.repository';
import { JwtService } from '@nestjs/jwt';
import { ExceptionsService } from '../exceptions/exceptions.service';
import { currentModeProviders } from './providers/currentMode.provider';
import { PaymentsRepository } from '../payments/repository/payments.repository';
import { HttpModule } from '@nestjs/axios';
import { TimeSlotReposiotory } from '../reservations/repository/timeslot-repository';
import { FakePgModule } from '@/fake-pg/fake-pg.module';

@Module({
imports: [
Expand All @@ -57,31 +45,19 @@ import { TimeSlotReposiotory } from '../reservations/repository/timeslot-reposit
],
}),
DatabaseModule,
PaymentsModule,
ReservationsModule,
DiagnosisModule,
PetsModule,
VetsModule,
PaymentsModule,
UsersModule,
ExceptionsModule,
HttpModule,
],
controllers: [
AppController,
PetsController,
VetsController,
PaymentsController,
UsersController,
FakePgModule,
],
providers: [
AppService,
PetsService,
PetsRepository,
VetsService,
PaymentsService,
PaymentsRepository,
UsersService,
UsersRepository,
JwtService,
ExceptionsService,
currentModeProviders,
Expand Down
23 changes: 18 additions & 5 deletions vet_nest/src/database/providers/database.provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
} from '../../reservations/entity/reservation.entity';
import * as moment from 'moment';
import { ConfigService } from '@nestjs/config';
import { Payment, PaymentMethod, PaymentStatus } from '@/payments/entity/payments.entity';

export const databaseProviders = [
{
Expand Down Expand Up @@ -115,7 +116,7 @@ export async function dbInitializeCallback(db: DataSource) {
id: 1,
receptionMethod: ReceptionMethod.RESERVATION,
status: TreatmentStatus.RESERVATION_COMPLETED,
reservedAt: moment(new Date()).add(1.5, 'hours').add(9, 'hours').toDate(),
reservedAt: moment(new Date()).add(1.5, 'hours').toDate(),
vetId: 1,
slotId: 1,
petId: '263df66a-c1e0-4ad3-94e7-bf8236ec3f09',
Expand All @@ -125,9 +126,9 @@ export async function dbInitializeCallback(db: DataSource) {
},
{
id: 2,
receptionMethod: ReceptionMethod.ON_SITE,
receptionMethod: ReceptionMethod.RESERVATION,
status: TreatmentStatus.RESERVATION_COMPLETED,
reservedAt: moment().add(0.5, 'hours').add(9, 'hours').toDate(),
reservedAt: moment().add(0.5, 'hours').toDate(),
vetId: 1,
slotId: 1,
petId: '263df66a-c1e0-4ad3-94e7-bf8236ec3f09',
Expand All @@ -138,8 +139,8 @@ export async function dbInitializeCallback(db: DataSource) {
{
id: 3,
receptionMethod: ReceptionMethod.RESERVATION,
status: TreatmentStatus.RESERVATION_COMPLETED,
reservedAt: moment(new Date()).add(1.5, 'hours').add(9, 'hours').toDate(),
status: TreatmentStatus.RESERVATION_CANCELED,
reservedAt: moment(new Date()).add(1.5, 'hours').toDate(),
vetId: 1,
slotId: 1,
petId: '263df66a-c1e0-4ad3-94e7-bf8236ec3f09',
Expand All @@ -160,4 +161,16 @@ export async function dbInitializeCallback(db: DataSource) {
amount: 20000,
},
]);

const paymentRepo = db.getRepository(Payment);
paymentRepo.save([{
paymentId: 1,
appId: '1280ad9c-31d9-4342-a7b2-3126a5ff738f',
method: PaymentMethod.CARD,
amount: 5000,
status: PaymentStatus.COMPLETE,
reservationId: 1,
userId: 1
},
]);
}
4 changes: 2 additions & 2 deletions vet_nest/src/database/typeorm-maria-testing.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { User, UserLevel, UserStatus } from '../users/entity/users.entity';
import { Vet } from '../vets/entity/vet.entity';
import { TimeSlot } from '../vets/entity/timeslot.entity';
import { Pet } from '../pets/entity/pet.entity';
import { TreatmentResult } from '@/diagnosis/entity/TreatmentResult.entity';
import { TreatmentResult } from '../diagnosis/entity/TreatmentResult.entity';

export const testDbDataSource: DataSourceOptions = {
type: 'mariadb',
Expand All @@ -17,7 +17,7 @@ export const testDbDataSource: DataSourceOptions = {
database: 'test',
synchronize: true,
logging: true,
timezone: '+09:00',
timezone: '+00:00',
entities: [Reservation, Payment, Vet, TimeSlot, Pet, User, TreatmentResult],
};

Expand Down
50 changes: 50 additions & 0 deletions vet_nest/src/fake-pg/fake-pg.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { Controller, Post, Body, HttpException, Param, Patch } from '@nestjs/common';
import { PgPaymentRequest } from '@/payments/dto/pg-payment.request';
import { PgPaymentResponse } from '@/payments/dto/pg-payment.response';
import { v4 as uuidv4 } from 'uuid';
import { PgCancelPaymentRequest } from '@/payments/dto/pg-cancel-payment.request';
import { PgCancelPaymentResponse } from '@/payments/dto/pg-cancel-payment.response';
import { ApiTags } from '@nestjs/swagger';
import { FakePgPaymentRequest } from './request/fake-pg-payment.request';
import { FakePgPaymentResponse } from './response/fake-pg-payment.response';
import { FakePgCancelPaymentRequest } from './request/fake-pg-cancel-payment.request';
import { FakePgCancelPaymentResponse } from './response/fake-pg-cancel-payment.response';

@Controller('pg')
@ApiTags('FakePgController')
export class FakePgController {
constructor() {}

@Post('create')
createPayment(@Body() param: FakePgPaymentRequest
): FakePgPaymentResponse {

let response = new PgPaymentResponse();
response.resultCode = 'OK';
response.uuid = uuidv4();
response.cardNumber = param['cardNumber'];
response.amount = param['amount'];
return response;
}

@Patch('cancel')
cancelPayment(
@Body() param: FakePgCancelPaymentRequest
): FakePgCancelPaymentResponse {
return <FakePgCancelPaymentResponse>{
resultCode: 'OK',
uuid: param['uuid']
};
}

@Post('refund')
refundPayment(@Body() refundPaymentDto) {
try {
// const result = this.PgService.refundPayment(refundPaymentDto);
return { result: {}, code: 200, message: 'OK' };
}
catch (error) {
throw new HttpException({ result: false, message: error.message }, 400);
}
}
}
8 changes: 8 additions & 0 deletions vet_nest/src/fake-pg/fake-pg.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { Module } from '@nestjs/common';
import { FakePgController as FakePgController } from './fake-pg.controller';

@Module({
imports: [],
controllers: [FakePgController]
})
export class FakePgModule {}
13 changes: 13 additions & 0 deletions vet_nest/src/fake-pg/request/fake-pg-cancel-payment.request.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { ApiProperty } from "@nestjs/swagger";
import { IsOptional } from "class-validator";


export class FakePgCancelPaymentRequest {
@IsOptional()
@ApiProperty({
default: '1234-1234-1234-1234',
type: 'string',
description: '결제 uuid'
})
uuid: string;
}
41 changes: 41 additions & 0 deletions vet_nest/src/fake-pg/request/fake-pg-payment.request.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { PaymentMethod } from "@/payments/entity/payments.entity";
import { ApiProperty } from "@nestjs/swagger";
import { IsOptional } from "class-validator";

export class FakePgPaymentRequest {
@ApiProperty({
default: 'CARD',
type: 'string',
description: '결제방법',
})
@IsOptional()
method: PaymentMethod;
@ApiProperty({
default: '1234-1234-1234-1234',
type: 'string',
description: '결제번호',
})
@IsOptional()
cardNumber: string;
@ApiProperty({
default: '10/23',
type: 'string',
description: '유효기간',
})
@IsOptional()
validPeriod: string;
@ApiProperty({
default: '10000',
type: 'number',
description: '결제금액'
})
@IsOptional()
amount: number;
@ApiProperty({
default: 'WON',
type: 'string',
description: '통화코드'
})
@IsOptional()
currency: string;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export class FakePgCancelPaymentResponse {
resultCode: string;
uuid: string;
}
10 changes: 10 additions & 0 deletions vet_nest/src/fake-pg/response/fake-pg-payment.response.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export class FakePgPaymentResponse {
uuid: string;
resultCode: string;
cardNumber: string;
amount: number;

constructor() {

}
}
Loading

0 comments on commit 6bf33f5

Please sign in to comment.