diff --git a/src/config/config.local.ts b/src/config/config.local.ts index 22747e7..e49f053 100644 --- a/src/config/config.local.ts +++ b/src/config/config.local.ts @@ -46,6 +46,15 @@ export default { email: '444693295@qq.com', emailPswd: 'lulin91.', }, + { + id: '3', + wpApiUrl: 'http://t1-shop.local/', + consumerKey: 'ck_a369473a6451dbaec63d19cbfd74a074b2c5f742', + consumerSecret: 'cs_0946bbbeea1bfefff08a69e817ac62a48412df8c', + siteName: 'Local-test-2', + email: '444693295@qq.com', + emailPswd: 'lulin91.', + }, // { // id: '2', // wpApiUrl: 'http://localhost:10004', diff --git a/src/controller/wp_product.controller.ts b/src/controller/wp_product.controller.ts index e79f15e..dad295d 100644 --- a/src/controller/wp_product.controller.ts +++ b/src/controller/wp_product.controller.ts @@ -95,8 +95,8 @@ export class WpProductController { @Body() body: any, // todo ) { try { - await this.wpProductService.updateProductStatus(id, body?.status); - return successResponse(true); + const res = await this.wpProductService.updateProductStatus(id, body?.status, body?.stock_status); + return successResponse(res); } catch (error) { return errorResponse(error.message); } diff --git a/src/entity/wp_product.entity.ts b/src/entity/wp_product.entity.ts index 12eae35..a2b2fb6 100644 --- a/src/entity/wp_product.entity.ts +++ b/src/entity/wp_product.entity.ts @@ -7,7 +7,7 @@ import { Entity, } from 'typeorm'; import { ApiProperty } from '@midwayjs/swagger'; -import { ProductStatus, ProductType } from '../enums/base.enum'; +import { ProductStatus, ProductStockStatus, ProductType } from '../enums/base.enum'; @Entity('wp_product') @Unique(['siteId', 'externalProductId']) // 确保产品的唯一性 @@ -56,6 +56,15 @@ export class WpProduct { @Column({ type: 'enum', enum: ProductStatus }) status: ProductStatus; + @ApiProperty({ description: '上下架状态', enum: ProductStockStatus }) + @Column({ + name: 'stock_status', + type: 'enum', + enum: ProductStockStatus, + default: ProductStockStatus.INSTOCK + }) + stockStatus: ProductStockStatus; + @ApiProperty({ description: '常规价格', type: Number }) @Column('decimal', { precision: 10, scale: 2, nullable: true }) regular_price: number; // 常规价格 diff --git a/src/enums/base.enum.ts b/src/enums/base.enum.ts index 24e5d85..e46034c 100644 --- a/src/enums/base.enum.ts +++ b/src/enums/base.enum.ts @@ -9,6 +9,12 @@ export enum ProductStatus { INHERIT = 'inherit', // 继承状态 } +export enum ProductStockStatus { + INSTOCK = 'instock', + OUT_OF_STOCK = 'outofstock', + ON_BACK_ORDER = 'onbackorder', +} + export enum ProductType { SIMPLE = 'simple', VARIABLE = 'variable', diff --git a/src/service/wp.service.ts b/src/service/wp.service.ts index 48734af..70c07ae 100644 --- a/src/service/wp.service.ts +++ b/src/service/wp.service.ts @@ -4,7 +4,7 @@ import { WpSite } from '../interface'; import { WpProduct } from '../entity/wp_product.entity'; import { Variation } from '../entity/variation.entity'; import { UpdateVariationDTO, UpdateWpProductDTO } from '../dto/wp_product.dto'; -import { ProductStatus } from '../enums/base.enum'; +import { ProductStatus, ProductStockStatus } from '../enums/base.enum'; @Provide() export class WPService { @@ -227,14 +227,17 @@ export class WPService { * 更新 WooCommerce 产品 上下架状态 * @param productId 产品 ID * @param status 状态 + * @param stock_status 上下架状态 */ async updateProductStatus( site: WpSite, productId: string, status: ProductStatus, + stock_status: ProductStockStatus ): Promise { const res = await this.updateData(`/wc/v3/products/${productId}`, site, { - status + status, + stock_status, }); console.log('res', res); return res; diff --git a/src/service/wp_product.service.ts b/src/service/wp_product.service.ts index e6335e8..fd08046 100644 --- a/src/service/wp_product.service.ts +++ b/src/service/wp_product.service.ts @@ -11,7 +11,7 @@ import { UpdateWpProductDTO, } from '../dto/wp_product.dto'; import { Product } from '../entity/product.entty'; -import { ProductStatus } from '../enums/base.enum'; +import { ProductStatus, ProductStockStatus } from '../enums/base.enum'; @Provide() export class WpProductService { @@ -58,11 +58,12 @@ export class WpProductService { } // 控制产品上下架 - async updateProductStatus(id: number, status: ProductStatus) { + async updateProductStatus(id: number, status: ProductStatus, stock_status: ProductStockStatus) { const wpProduct = await this.wpProductModel.findOneBy({ id }); const site = await this.getSite(wpProduct.siteId); wpProduct.status = status; - const res = await this.wpApiService.updateProductStatus(site, wpProduct.externalProductId, status); + wpProduct.stockStatus = stock_status; + const res = await this.wpApiService.updateProductStatus(site, wpProduct.externalProductId, status, stock_status); if (res === true) { this.wpProductModel.save(wpProduct); return true;