Fix bug
This commit is contained in:
parent
cc23f1694d
commit
fa685d270f
|
|
@ -62,6 +62,10 @@ export class Shipment {
|
||||||
@Expose()
|
@Expose()
|
||||||
state?: string;
|
state?: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, default: false })
|
||||||
|
@Expose()
|
||||||
|
finished: boolean;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@Expose()
|
@Expose()
|
||||||
type?: string;
|
type?: string;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
import { FORMAT, ILogger, Inject, Logger } from '@midwayjs/core';
|
import { FORMAT, ILogger, Inject, Logger } from '@midwayjs/core';
|
||||||
import { IJob, Job } from '@midwayjs/cron';
|
import { IJob, Job } from '@midwayjs/cron';
|
||||||
import { LogisticsService } from '../service/logistics.service';
|
import { LogisticsService } from '../service/logistics.service';
|
||||||
|
import { Repository } from 'typeorm';
|
||||||
|
import { Shipment } from '../entity/shipment.entity';
|
||||||
|
import { InjectEntityModel } from '@midwayjs/typeorm';
|
||||||
|
|
||||||
@Job({
|
@Job({
|
||||||
cronTime: FORMAT.CRONTAB.EVERY_PER_30_MINUTE,
|
cronTime: FORMAT.CRONTAB.EVERY_PER_30_MINUTE,
|
||||||
|
|
@ -20,3 +23,65 @@ export class SyncShipmentJob implements IJob {
|
||||||
}
|
}
|
||||||
onComplete?(result: any) {}
|
onComplete?(result: any) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Job({
|
||||||
|
cronTime: '0 0 12 * * *', // 每天12点执行
|
||||||
|
start: true
|
||||||
|
})
|
||||||
|
export class SyncUniuniShipmentJob implements IJob{
|
||||||
|
@Logger()
|
||||||
|
logger: ILogger;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
logisticsService: LogisticsService;
|
||||||
|
|
||||||
|
@InjectEntityModel(Shipment)
|
||||||
|
shipmentModel: Repository<Shipment>
|
||||||
|
|
||||||
|
uniuniStateCodes = {
|
||||||
|
'190': 'ORDER_RECEIVED',
|
||||||
|
'192': 'CUSTOM_HOLD',
|
||||||
|
'195': 'GATEWAY_TRANSIT_OUT',
|
||||||
|
'198': 'CUSTOM_RELEASE_DIRECT',
|
||||||
|
'199': 'GATEWAY_TRANSIT',
|
||||||
|
'200': 'PARCEL_SCANNED',
|
||||||
|
'202': 'IN_TRANSIT',
|
||||||
|
'203': 'DELIVERED',
|
||||||
|
'204': 'TRANSSHIPMENT',
|
||||||
|
'206': 'WRONG_ADDRESS_FROM_TRANSIT',
|
||||||
|
'207': 'PARCEL_LOST',
|
||||||
|
'209': 'OTHER_EXCEPTION',
|
||||||
|
'211': 'RETURN_OFFICE_FROM_TRANSIT',
|
||||||
|
'212': 'WRONG_ADDRESS_FROM_RECEIVE',
|
||||||
|
'213': 'STORAGE_30_DAYS_FROM_OFFICE',
|
||||||
|
'214': 'STORAGE_30_DAYS_AFTER_SCAN',
|
||||||
|
'215': 'PARCEL_ABANDONED',
|
||||||
|
'216': 'SELF_PICK_UP',
|
||||||
|
'217': 'TRANSSHIPMENT_COMPLETE',
|
||||||
|
'218': 'SCANNED_PARCEL_MISSING',
|
||||||
|
'219': 'WRONG_ROUTE_PARCEL',
|
||||||
|
'220': 'SECOND_DELIVERY',
|
||||||
|
'221': 'RETURNED_PARCEL_SCANNED',
|
||||||
|
'222': 'REJECTED_PARCEL_FROM_TRANSIT',
|
||||||
|
'223': 'CHANGED_ORDER_RESENT',
|
||||||
|
'224': 'RESENT_ORDER_VOIDED',
|
||||||
|
'225': 'FORWARDED_3RDPARTY',
|
||||||
|
'226': 'STORAGE_3RDPARTY_SERVICE_POINT',
|
||||||
|
'228': 'SECOND_DELIVERED',
|
||||||
|
'229': 'DROP_OFF_SERVICE_POINTS',
|
||||||
|
'230': 'RETURN TO SENDER WAREHOUSE',
|
||||||
|
'231': 'FAILED_DELIVERY_RETRY1',
|
||||||
|
'232': 'FAILED_DELIVERY_RETRY2',
|
||||||
|
'255': 'Gateway_To_Gateway_Transit'
|
||||||
|
};
|
||||||
|
async onTick() {
|
||||||
|
const shipments:Shipment[] = await this.shipmentModel.findBy({ finished: false });
|
||||||
|
shipments.forEach(shipment => {
|
||||||
|
this.logisticsService.updateShipmentState(Number(shipment.id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onComplete(result: any) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -121,6 +121,10 @@ export class LogisticsService {
|
||||||
return await this.shippingAddressModel.save(shippingAddress);
|
return await this.shippingAddressModel.save(shippingAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateShipmentState(id: number) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
async updateShippingAddress(id: number, shippingAddress: ShippingAddress) {
|
async updateShippingAddress(id: number, shippingAddress: ShippingAddress) {
|
||||||
const address = await this.shippingAddressModel.findOneBy({ id });
|
const address = await this.shippingAddressModel.findOneBy({ id });
|
||||||
if (!address) {
|
if (!address) {
|
||||||
|
|
@ -208,10 +212,6 @@ export class LogisticsService {
|
||||||
try {
|
try {
|
||||||
const shipment:Shipment = await this.shipmentModel.findOneBy({id: shipmentId});
|
const shipment:Shipment = await this.shipmentModel.findOneBy({id: shipmentId});
|
||||||
const order:Order = await this.orderModel.findOneBy({id: shipment.order_id});
|
const order:Order = await this.orderModel.findOneBy({id: shipment.order_id});
|
||||||
// todo 同步到wooccommerce删除运单信息
|
|
||||||
const site = await this.geSite(order.siteId);
|
|
||||||
await this.wpService.deleteShipment(site, order.externalOrderId, shipment.tracking_id);
|
|
||||||
|
|
||||||
const dataSource = this.dataSourceManager.getDataSource('default');
|
const dataSource = this.dataSourceManager.getDataSource('default');
|
||||||
let transactionError = undefined;
|
let transactionError = undefined;
|
||||||
await dataSource.transaction(async manager => {
|
await dataSource.transaction(async manager => {
|
||||||
|
|
@ -226,15 +226,6 @@ export class LogisticsService {
|
||||||
const res = await this.uniExpressService.deleteShipment(shipment.return_tracking_number);
|
const res = await this.uniExpressService.deleteShipment(shipment.return_tracking_number);
|
||||||
console.log('res', res.data);
|
console.log('res', res.data);
|
||||||
|
|
||||||
// 同步订单状态到woocommerce
|
|
||||||
if (order.status === OrderStatus.COMPLETED) {
|
|
||||||
await this.wpService.updateOrder(site, order.externalOrderId, {
|
|
||||||
status: OrderStatus.PROCESSING,
|
|
||||||
});
|
|
||||||
order.status = OrderStatus.PROCESSING;
|
|
||||||
}
|
|
||||||
order.orderStatus = ErpOrderStatus.PROCESSING;
|
|
||||||
|
|
||||||
await orderRepo.save(order);
|
await orderRepo.save(order);
|
||||||
|
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
|
|
@ -245,6 +236,25 @@ export class LogisticsService {
|
||||||
throw new Error(`数据库同步错误: ${transactionError.message}`);
|
throw new Error(`数据库同步错误: ${transactionError.message}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 同步订单状态到woocommerce
|
||||||
|
const site = await this.geSite(order.siteId);
|
||||||
|
if (order.status === OrderStatus.COMPLETED) {
|
||||||
|
await this.wpService.updateOrder(site, order.externalOrderId, {
|
||||||
|
status: OrderStatus.PROCESSING,
|
||||||
|
});
|
||||||
|
order.status = OrderStatus.PROCESSING;
|
||||||
|
}
|
||||||
|
order.orderStatus = ErpOrderStatus.PROCESSING;
|
||||||
|
this.orderModel.save(order);
|
||||||
|
|
||||||
|
// todo 同步到wooccommerce删除运单信息
|
||||||
|
await this.wpService.deleteShipment(site, order.externalOrderId, shipment.tracking_id);
|
||||||
|
} catch (error) {
|
||||||
|
console.log('同步到woocommerce失败', error);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch {
|
} catch {
|
||||||
throw new Error('删除运单失败');
|
throw new Error('删除运单失败');
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ export class UniExpressService {
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': `Bearer ${token}`
|
'Authorization': `Bearer ${token}`
|
||||||
},
|
},
|
||||||
|
url: `${this.url}/orders`,
|
||||||
params: {
|
params: {
|
||||||
from, to, page, perPage
|
from, to, page, perPage
|
||||||
}
|
}
|
||||||
|
|
@ -135,4 +136,22 @@ export class UniExpressService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getOrderStatus(tracking_number: string) {
|
||||||
|
try {
|
||||||
|
const key = 'SMq45nJhQuNR3WHsJA6N'; // todo,写进常数
|
||||||
|
const config: AxiosRequestConfig= {
|
||||||
|
method: 'GET',
|
||||||
|
url: `${this.url}/orders/trackinguniuni`,
|
||||||
|
params: {
|
||||||
|
key,
|
||||||
|
tracking_number
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const res = (await axios.request(config)).data;
|
||||||
|
console.log('res', res);
|
||||||
|
return res;
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue