lrf 2 år sedan
förälder
incheckning
6a94e551d7
2 ändrade filer med 30 tillägg och 3 borttagningar
  1. 2 2
      app/service/trade/orderDetail.js
  2. 28 1
      app/service/util/order.js

+ 2 - 2
app/service/trade/orderDetail.js

@@ -38,7 +38,7 @@ class OrderDetailService extends CrudService {
     const { customer, address, goods: shopGoods, no, status, buy_time, pay, total_detail: otd } = order;
     if (status === '0') throw new BusinessError(ErrorCode.DATA_INVALID, '订单未支付');
     const orderDetailData = { customer, address, order: order_id, buy_time, pay_time: _.get(pay, 'pay_time'), status };
-    const shopTotals = this.ctx.service.util.order.shopMoneyDetail(order);
+    const shopMoneyDetail = this.ctx.service.util.order.shopMoneyDetail(order);
     // 分订单计数器
     let noTimes = 1;
     for (const s of shopGoods) {
@@ -46,7 +46,7 @@ class OrderDetailService extends CrudService {
       const remarks = _.get(s, 'remarks');
       const goodsList = _.get(s, 'goods', []);
       const detailNo = `${no}-${noTimes}`;
-      const total_detail = _.get(shopTotals, shop, 0);
+      const total_detail = shopMoneyDetail;
       // 优惠部分分割
       if (_.get(otd, 'discount_detail')) {
         // 如果有优惠部分,那就得找,优惠里面有没有对应的商品规格

+ 28 - 1
app/service/util/order.js

@@ -70,7 +70,7 @@ class OrderService extends CrudService {
    *  店铺id:金额
    * }
    */
-  shopMoneyDetail(order) {
+  shopMoneyTotal(order) {
     let priceKey;
     if (_.get(order, 'type', '0') === '1') priceKey = 'ggrp';
     else priceKey = 'grp';
@@ -83,6 +83,33 @@ class OrderService extends CrudService {
     }
     return result;
   }
+  /**
+   * 计算店铺的金额明细
+   * @param {Object} order 支付订单信息
+   * @return {Object} 返回:{
+   *  店铺id:{
+   *    goods_total:商品总价,
+   *    freight_total:商品总价
+   *  }
+   * }
+   */
+  shopMoneyDetail(order) {
+    if (!order) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到订单信息');
+    let priceKey;
+    if (_.get(order, 'type', '0') === '1') priceKey = 'ggrp';
+    else priceKey = 'grp';
+    const result = {};
+    const moneyDetail = this.moneyDetail(order);
+    for (const s in moneyDetail) {
+      const obj = {};
+      const d = _.get(moneyDetail, s, {});
+      obj.goods_total = Object.values(d).reduce((p, n) => this.ctx.plus(p, _.get(n, priceKey, 0)), 0);
+      obj.freight_total = Object.values(d).reduce((p, n) => this.ctx.plus(p, _.get(n, 'ft', 0)), 0);
+      result[s] = obj;
+    }
+
+    return result;
+  }
   /**
    * 按店铺-商品 计算该订单的价格明细
    * @param {Object} data 支付订单数据