93 lines
3.0 KiB
TypeScript
93 lines
3.0 KiB
TypeScript
import { Body, Controller, Get, Param, Post, Put, UseGuards } from '@nestjs/common';
|
|
import { HqAuthGuard } from '../../common/guards/hq-auth.guard';
|
|
import { HqOperation } from '../../common/hq-operation/hq-operation.decorator';
|
|
import { HqOperationAction } from '../../common/hq-operation/hq-operation.constants';
|
|
import { FulfillmentProviderService } from '../fulfillment/fulfillment-provider.service';
|
|
import {
|
|
CreateFulfillmentProviderDto,
|
|
RechargeFulfillmentProviderDto,
|
|
UpdateFulfillmentProviderDto,
|
|
} from './dto/admin-mutate.dto';
|
|
import type { FulfillmentProviderStatus, FulfillmentProviderType } from '@prisma/client';
|
|
|
|
@Controller('admin/fulfillment-providers')
|
|
@UseGuards(HqAuthGuard)
|
|
export class AdminFulfillmentProvidersController {
|
|
constructor(private readonly service: FulfillmentProviderService) {}
|
|
|
|
@Get()
|
|
list() {
|
|
return this.service.listAll();
|
|
}
|
|
|
|
@Get('active-api')
|
|
listActiveApi() {
|
|
return this.service.listActiveApiProviders();
|
|
}
|
|
|
|
@Post()
|
|
@HqOperation({
|
|
action: HqOperationAction.WAREHOUSE_UPDATE,
|
|
refType: 'FULFILLMENT_PROVIDER',
|
|
refIdField: 'id',
|
|
includeBody: true,
|
|
})
|
|
create(@Body() dto: CreateFulfillmentProviderDto) {
|
|
return this.service.create({
|
|
code: dto.code,
|
|
name: dto.name,
|
|
type: dto.type as FulfillmentProviderType,
|
|
status: dto.status as FulfillmentProviderStatus | undefined,
|
|
configJson: dto.configJson,
|
|
capabilitiesJson: dto.capabilitiesJson,
|
|
xiaofeixiaConfig: dto.xiaofeixiaConfig,
|
|
bankAccountName: dto.bankAccountName,
|
|
bankName: dto.bankName,
|
|
bankBranch: dto.bankBranch,
|
|
bankAccountNo: dto.bankAccountNo,
|
|
settlementMethod: dto.settlementMethod,
|
|
pricingRules: dto.pricingRules,
|
|
});
|
|
}
|
|
|
|
@Get(':id')
|
|
detail(@Param('id') id: string) {
|
|
return this.service.getById(BigInt(id));
|
|
}
|
|
|
|
@Put(':id')
|
|
@HqOperation({
|
|
action: HqOperationAction.WAREHOUSE_UPDATE,
|
|
refType: 'FULFILLMENT_PROVIDER',
|
|
refIdParam: 'id',
|
|
includeBody: true,
|
|
})
|
|
update(@Param('id') id: string, @Body() dto: UpdateFulfillmentProviderDto) {
|
|
return this.service.update(BigInt(id), {
|
|
name: dto.name,
|
|
type: dto.type as FulfillmentProviderType | undefined,
|
|
status: dto.status as FulfillmentProviderStatus | undefined,
|
|
configJson: dto.configJson,
|
|
capabilitiesJson: dto.capabilitiesJson,
|
|
xiaofeixiaConfig: dto.xiaofeixiaConfig,
|
|
bankAccountName: dto.bankAccountName,
|
|
bankName: dto.bankName,
|
|
bankBranch: dto.bankBranch,
|
|
bankAccountNo: dto.bankAccountNo,
|
|
settlementMethod: dto.settlementMethod,
|
|
pricingRules: dto.pricingRules,
|
|
});
|
|
}
|
|
|
|
@Post(':id/recharge')
|
|
@HqOperation({
|
|
action: HqOperationAction.LOGISTICS_PROVIDER_RECHARGE,
|
|
refType: 'FULFILLMENT_PROVIDER',
|
|
refIdParam: 'id',
|
|
includeBody: true,
|
|
})
|
|
recharge(@Param('id') id: string, @Body() dto: RechargeFulfillmentProviderDto) {
|
|
return this.service.rechargePrepaid(BigInt(id), Number(dto.amount), dto.remark);
|
|
}
|
|
}
|