forked from yoone/API
1
0
Fork 0

Improvement,增加一个上下架状态

This commit is contained in:
黄珑 2025-09-16 16:30:46 +08:00
parent 2ad48143b7
commit 9137e95c02
6 changed files with 36 additions and 8 deletions

View File

@ -46,6 +46,15 @@ export default {
email: '444693295@qq.com', email: '444693295@qq.com',
emailPswd: 'lulin91.', 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', // id: '2',
// wpApiUrl: 'http://localhost:10004', // wpApiUrl: 'http://localhost:10004',

View File

@ -95,8 +95,8 @@ export class WpProductController {
@Body() body: any, // todo @Body() body: any, // todo
) { ) {
try { try {
await this.wpProductService.updateProductStatus(id, body?.status); const res = await this.wpProductService.updateProductStatus(id, body?.status, body?.stock_status);
return successResponse(true); return successResponse(res);
} catch (error) { } catch (error) {
return errorResponse(error.message); return errorResponse(error.message);
} }

View File

@ -7,7 +7,7 @@ import {
Entity, Entity,
} from 'typeorm'; } from 'typeorm';
import { ApiProperty } from '@midwayjs/swagger'; import { ApiProperty } from '@midwayjs/swagger';
import { ProductStatus, ProductType } from '../enums/base.enum'; import { ProductStatus, ProductStockStatus, ProductType } from '../enums/base.enum';
@Entity('wp_product') @Entity('wp_product')
@Unique(['siteId', 'externalProductId']) // 确保产品的唯一性 @Unique(['siteId', 'externalProductId']) // 确保产品的唯一性
@ -56,6 +56,15 @@ export class WpProduct {
@Column({ type: 'enum', enum: ProductStatus }) @Column({ type: 'enum', enum: ProductStatus })
status: ProductStatus; status: ProductStatus;
@ApiProperty({ description: '上下架状态', enum: ProductStockStatus })
@Column({
name: 'stock_status',
type: 'enum',
enum: ProductStockStatus,
default: ProductStockStatus.INSTOCK
})
stockStatus: ProductStockStatus;
@ApiProperty({ description: '常规价格', type: Number }) @ApiProperty({ description: '常规价格', type: Number })
@Column('decimal', { precision: 10, scale: 2, nullable: true }) @Column('decimal', { precision: 10, scale: 2, nullable: true })
regular_price: number; // 常规价格 regular_price: number; // 常规价格

View File

@ -9,6 +9,12 @@ export enum ProductStatus {
INHERIT = 'inherit', // 继承状态 INHERIT = 'inherit', // 继承状态
} }
export enum ProductStockStatus {
INSTOCK = 'instock',
OUT_OF_STOCK = 'outofstock',
ON_BACK_ORDER = 'onbackorder',
}
export enum ProductType { export enum ProductType {
SIMPLE = 'simple', SIMPLE = 'simple',
VARIABLE = 'variable', VARIABLE = 'variable',

View File

@ -4,7 +4,7 @@ import { WpSite } from '../interface';
import { WpProduct } from '../entity/wp_product.entity'; import { WpProduct } from '../entity/wp_product.entity';
import { Variation } from '../entity/variation.entity'; import { Variation } from '../entity/variation.entity';
import { UpdateVariationDTO, UpdateWpProductDTO } from '../dto/wp_product.dto'; import { UpdateVariationDTO, UpdateWpProductDTO } from '../dto/wp_product.dto';
import { ProductStatus } from '../enums/base.enum'; import { ProductStatus, ProductStockStatus } from '../enums/base.enum';
@Provide() @Provide()
export class WPService { export class WPService {
@ -227,14 +227,17 @@ export class WPService {
* WooCommerce * WooCommerce
* @param productId ID * @param productId ID
* @param status * @param status
* @param stock_status
*/ */
async updateProductStatus( async updateProductStatus(
site: WpSite, site: WpSite,
productId: string, productId: string,
status: ProductStatus, status: ProductStatus,
stock_status: ProductStockStatus
): Promise<Boolean> { ): Promise<Boolean> {
const res = await this.updateData(`/wc/v3/products/${productId}`, site, { const res = await this.updateData(`/wc/v3/products/${productId}`, site, {
status status,
stock_status,
}); });
console.log('res', res); console.log('res', res);
return res; return res;

View File

@ -11,7 +11,7 @@ import {
UpdateWpProductDTO, UpdateWpProductDTO,
} from '../dto/wp_product.dto'; } from '../dto/wp_product.dto';
import { Product } from '../entity/product.entty'; import { Product } from '../entity/product.entty';
import { ProductStatus } from '../enums/base.enum'; import { ProductStatus, ProductStockStatus } from '../enums/base.enum';
@Provide() @Provide()
export class WpProductService { 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 wpProduct = await this.wpProductModel.findOneBy({ id });
const site = await this.getSite(wpProduct.siteId); const site = await this.getSite(wpProduct.siteId);
wpProduct.status = status; 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) { if (res === true) {
this.wpProductModel.save(wpProduct); this.wpProductModel.save(wpProduct);
return true; return true;