Parcourir la source

解决商户分润数据不展示问题

sunxiaobiao il y a 1 an
Parent
commit
1fb1c19d3f
1 fichiers modifiés avec 31 ajouts et 4 suppressions
  1. 31 4
      app/common/repositories/finance/FinanceRepository.php

+ 31 - 4
app/common/repositories/finance/FinanceRepository.php

@@ -1940,10 +1940,14 @@ class FinanceRepository extends BaseRepository
1940
         $query = Db::name('user_sign_fenrun')
1940
         $query = Db::name('user_sign_fenrun')
1941
         ->alias('uss')
1941
         ->alias('uss')
1942
         ->leftJoin('user u', 'u.uid=uss.uid')
1942
         ->leftJoin('user u', 'u.uid=uss.uid')
1943
-        ->leftJoin('store_order o', 'o.order_id=uss.order_id')
1944
-        ->leftJoin('merchant m', 'm.mer_id=o.mer_id')
1943
+        ->leftJoin('store_order o', 'o.order_id = uss.order_id AND uss.order_type = 0')
1944
+        // 条件关联 order_merchant 表 (只在 uss.order_type = 10 时尝试关联 om)
1945
+        ->leftJoin('rrx_order_merchant om', 'om.id = uss.order_id AND uss.order_type = 10') // 注意这里的表名和字段
1946
+        ->leftJoin('merchant m', 'm.mer_id=u.mer_id')
1945
         ->when(isset($mer_id) && $mer_id != '' && $mer_id != 0, function ($query) use ($mer_id) {
1947
         ->when(isset($mer_id) && $mer_id != '' && $mer_id != 0, function ($query) use ($mer_id) {
1946
-            $query->where('o.mer_id', $mer_id);
1948
+            $query->where(function ($query) use($mer_id) {
1949
+                $query->where('o.mer_id', $mer_id)->whereOr('om.mer_id', $mer_id);
1950
+            });
1947
         })
1951
         })
1948
         ->when(isset($params['uid']) && $params['uid'] != '', function ($query) use ($params) {
1952
         ->when(isset($params['uid']) && $params['uid'] != '', function ($query) use ($params) {
1949
             $query->where('uss.uid', $params['uid']);
1953
             $query->where('uss.uid', $params['uid']);
@@ -1998,7 +2002,30 @@ class FinanceRepository extends BaseRepository
1998
         }
2002
         }
1999
 
2003
 
2000
         $date['list'] = $this->date_where($query, $where['date'], 'uss.addtime', '-', 2)
2004
         $date['list'] = $this->date_where($query, $where['date'], 'uss.addtime', '-', 2)
2001
-            ->field('uss.id,uss.addtime,u.nickname,u.phone,uss.number,o.order_sn,o.total_price,uss.status,uss.mark,u.score,m.mer_name')
2005
+            // ->field('uss.id,uss.addtime,u.nickname,u.phone,uss.number,o.order_sn,o.total_price,uss.status,uss.mark,u.score,m.mer_name')
2006
+            ->field([
2007
+                'uss.id',
2008
+                'uss.addtime',
2009
+                'u.nickname',
2010
+                'u.phone',
2011
+                'uss.number',
2012
+                'uss.status',
2013
+                'uss.mark',
2014
+                'u.score',
2015
+                'm.mer_name', // 商户名称 (依赖 o 表是否存在)
2016
+                'uss.order_type', // 也可以选择 uss.order_type 方便判断
2017
+                // 使用 CASE 表达式选择订单号
2018
+                // 当 uss.order_type = 0, 选取 o.order_sn
2019
+                // 当 uss.order_type = 10, 选取 om.out_trade_no
2020
+                // 否则为 NULL,并别名为 order_number
2021
+                Db::raw('CASE WHEN uss.order_type = 0 THEN o.order_sn WHEN uss.order_type = 10 THEN om.out_trade_no ELSE NULL END AS order_sn'),
2022
+
2023
+                // 使用 CASE 表达式选择订单金额
2024
+                // 当 uss.order_type = 0, 选取 o.total_price
2025
+                // 当 uss.order_type = 10, 选取 om.money
2026
+                // 否则为 NULL,并别名为 order_amount
2027
+                Db::raw('CASE WHEN uss.order_type = 0 THEN o.total_price WHEN uss.order_type = 10 THEN om.money ELSE NULL END AS total_price'),
2028
+            ])
2002
             ->page($page, $limit)
2029
             ->page($page, $limit)
2003
             ->order('uss.id', 'desc')
2030
             ->order('uss.id', 'desc')
2004
             ->select()
2031
             ->select()