Forráskód Böngészése

订单增加取消状态

test 7 hónapja
szülő
commit
c5bdedc10c

+ 1 - 1
src/modules/dj/entity/order.ts

@@ -54,7 +54,7 @@ export class OrderEntity extends BaseEntity {
   notifyUrl: string;
   notifyUrl: string;
 
 
   @Column({
   @Column({
-    comment: '订单状态 0-待支付 1 已支付 2 支付失败 3 退款成功',
+    comment: '订单状态 0-待支付 1 已支付 2 支付失败 3 订单取消',
     type: 'tinyint',
     type: 'tinyint',
     default: 0,
     default: 0,
   })
   })

+ 1 - 0
src/modules/dj/service/channels/hambitBra.ts

@@ -130,6 +130,7 @@ export class HambitBraService extends BaseService {
       date: new Date(),
       date: new Date(),
       orderNo: payload.externalOrderId,
       orderNo: payload.externalOrderId,
       traceNo: payload.orderId,
       traceNo: payload.orderId,
+      status: 1,
     };
     };
   }
   }
 
 

+ 1 - 0
src/modules/dj/service/channels/hambitInr.ts

@@ -128,6 +128,7 @@ export class HambitInrService extends BaseService {
       date: new Date(),
       date: new Date(),
       orderNo: payload.externalOrderId,
       orderNo: payload.externalOrderId,
       traceNo: payload.orderId,
       traceNo: payload.orderId,
+      status: 1,
     };
     };
   }
   }
 
 

+ 24 - 10
src/modules/dj/service/channels/sunpay.ts

@@ -224,12 +224,25 @@ export class SunPayService extends BaseService {
     });
     });
     this.logger.info('查询接口返回', JSON.stringify(res.data));
     this.logger.info('查询接口返回', JSON.stringify(res.data));
     const { is_success, msg } = res.data;
     const { is_success, msg } = res.data;
-    if (is_success && res.data.data.order_status === 'SUCCESS') {
-      return {
-        status: 1,
-        traceNo: res.data.data.order_no,
-        date: new Date()
-      };
+    if (is_success) {
+      if (res.data.data.order_status === 'SUCCESS') {
+        return {
+          status: 1,
+          traceNo: res.data.data.order_no,
+          date: new Date()
+        };
+      } else if (res.data.data.order_status === 'FAIL') {
+        return {
+          status: 3,
+          traceNo: res.data.data.order_no,
+          date: new Date()
+        };
+      } else {
+        return {
+          status: 0,
+          msg,
+        };
+      }
     } else {
     } else {
       return {
       return {
         status: 0,
         status: 0,
@@ -248,13 +261,14 @@ export class SunPayService extends BaseService {
     if (sign !== validSign) {
     if (sign !== validSign) {
       throw new Error('sign error');
       throw new Error('sign error');
     }
     }
-    if (data.status !== 'SUCCESS') {
-      throw new Error('order no success');
+    if (data.status !== 'SUCCESS' && data.status !== 'FAIL') {
+      throw new Error('order no result');
     }
     }
     return {
     return {
       date: new Date(),
       date: new Date(),
       orderNo: data.out_order_no,
       orderNo: data.out_order_no,
       traceNo: data.order_no,
       traceNo: data.order_no,
+      status: data.status === 'SUCCESS' ? 1 : 3
     };
     };
   }
   }
 
 
@@ -312,14 +326,14 @@ export class SunPayService extends BaseService {
       const bean = refund_detail.find(item => {
       const bean = refund_detail.find(item => {
         item.out_refund_no = refund.refundNo
         item.out_refund_no = refund.refundNo
       });
       });
-      if(bean && bean.status === 'SUCCESS') {
+      if (bean && bean.status === 'SUCCESS') {
         return {
         return {
           status: 1,
           status: 1,
           refundTraceNo: bean.refund_no,
           refundTraceNo: bean.refund_no,
           date: new Date(),
           date: new Date(),
           message: ''
           message: ''
         }
         }
-      } else if(bean && bean.status === 'FAIL') {
+      } else if (bean && bean.status === 'FAIL') {
         return {
         return {
           status: 2,
           status: 2,
           refundTraceNo: bean.refund_no,
           refundTraceNo: bean.refund_no,

+ 29 - 2
src/modules/dj/service/order.ts

@@ -59,7 +59,11 @@ export class OrderService extends BaseService {
     const order = await this.orderEntity.findOneBy({ orderNo: data.orderNo });
     const order = await this.orderEntity.findOneBy({ orderNo: data.orderNo });
     order.date = data.date;
     order.date = data.date;
     order.traceNo = data.traceNo;
     order.traceNo = data.traceNo;
-    await this.updateOrderSuccess(order, true);
+    if (+data.status === 1) {
+      await this.updateOrderSuccess(order, true);
+    } else if (+data.status === 3) {
+      await this.updateOrderFail(order, true);
+    }
   }
   }
 
 
   async update(param) {
   async update(param) {
@@ -84,7 +88,7 @@ export class OrderService extends BaseService {
 
 
   async notify(id) {
   async notify(id) {
     const order = await this.orderEntity.findOneBy({ id });
     const order = await this.orderEntity.findOneBy({ id });
-    if (order && +order.status === 1) {
+    if (order && (+order.status === 1 || +order.status === 3)) {
       return await this.notifyService.notify(order, true);
       return await this.notifyService.notify(order, true);
     }
     }
   }
   }
@@ -102,6 +106,11 @@ export class OrderService extends BaseService {
         order.traceNo = traceNo;
         order.traceNo = traceNo;
         order.date = date;
         order.date = date;
         await this.updateOrderSuccess(order);
         await this.updateOrderSuccess(order);
+      } else if (+status === 3) {
+        // 更新订单和更新余额
+        order.traceNo = traceNo;
+        order.date = date;
+        await this.updateOrderFail(order);
       }
       }
       return { status, message };
       return { status, message };
     } else {
     } else {
@@ -135,6 +144,24 @@ export class OrderService extends BaseService {
     return true;
     return true;
   }
   }
 
 
+  async updateOrderFail(data, notify = true) {
+    const order = await this.orderEntity.findOneBy({ id: data.id });
+    if (!order || +order.status === 3) {
+      // 订单早就已取消,无需做任何操作
+      return;
+    }
+    order.status = 3;
+    order.updateTime = new Date();
+    order.date = data.date || new Date();
+    order.traceNo = data.traceNo;
+    await this.orderEntity.update(order.id, order);
+    if (notify) {
+      // 发起通知
+      this.notifyService.notify(order);
+    }
+    return true;
+  }
+
   async create(order: any) {
   async create(order: any) {
     if (order.id) {
     if (order.id) {
       order.updateTime = new Date();
       order.updateTime = new Date();