Improvement,增加一个上下架状态 #16

Merged
longbot merged 1 commits from longbot/API:Feature-control-product-status into main 2025-09-16 08:39:54 +00:00
6 changed files with 36 additions and 8 deletions
Showing only changes of commit 9137e95c02 - Show all commits

View File

@ -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',

View File

@ -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);
}

View File

@ -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; // 常规价格

View File

@ -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',

View File

@ -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<Boolean> {
const res = await this.updateData(`/wc/v3/products/${productId}`, site, {
status
status,
stock_status,
});
console.log('res', res);
return res;

View File

@ -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;