소스 검색

Merge branch 'wzq_user-detail' into test

zqwang 1 년 전
부모
커밋
2b8d74d977
4개의 변경된 파일216개의 추가작업 그리고 0개의 파일을 삭제
  1. 23 0
      app/Libs/Helpers.php
  2. 59 0
      modules/Channel/Http/Controllers/OrdersController.php
  3. 133 0
      modules/Channel/Services/Order/OrderService.php
  4. 1 0
      modules/Channel/routes/route.php

+ 23 - 0
app/Libs/Helpers.php

@@ -361,3 +361,26 @@ if(!function_exists('getMiniProgramTableName')){
         ][$from],$name);
     }
 }
+
+if (!function_exists('getProp')){
+    /**
+     * 获取对象或数组的属性值
+     * @param        $param
+     * @param        $key
+     * @param string $default
+     * @return mixed|string
+     */
+    function getProp($param, $key, $default = '')
+    {
+        $result = $default;
+        if (is_object($param) && isset($param->$key)) {
+            $result = $param->$key;
+        }
+
+        if (is_array($param) && isset($param[$key])) {
+            $result = $param[$key];
+        }
+
+        return $result;
+    }
+}

+ 59 - 0
modules/Channel/Http/Controllers/OrdersController.php

@@ -0,0 +1,59 @@
+<?php
+/**
+ *
+ * @file:OrdersController.php
+ * @Date: 2023/5/23
+ * @Time: 10:15
+ */
+
+
+namespace Modules\Channel\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Illuminate\Http\Request;
+use Modules\Channel\Services\Order\OrderService;
+use Modules\User\Http\Controllers\UserTrait;
+
+class OrdersController extends CatchController
+{
+    use UserTrait;
+
+    /**
+     *  订单列表
+     * name: orderList
+     * @param Request $request
+     * date 2023/05/23 10:22
+     */
+    public function orderList(Request $request)
+    {
+        $param = $request->all();
+        $userContext = $this->getUserContext(null);
+
+        // 公司账户处理
+        if ($userContext['loginUserRoles']->contains('company')) {
+            $param['puser_id'] =$userContext['operateUser']->id;
+        }
+
+        // 投手处理
+        if ($userContext['loginUserRoles']->contains('optimizer')) {
+            $param['user_id'] =$userContext['operateUser']->id;
+        }
+
+        $list = OrderService::getOrderList($param);
+        if (!$list->isEmpty()){
+            foreach ($list as $val){
+                if ($userContext['loginUserRoles']->contains('company')) {
+                    $val->total_count = $val->caompany_count;
+                }
+                if (getProp($param,'user_id')){
+                    $val->total_count = $val->promotion_count;
+                }
+                unset($val->caompany_count,$val->promotion_count,$val->id,$val->puser_id,$val->pay_product_id,$val->create_ip,$val->transaction_id);
+                unset($val->third_orderid,$val->pay_merchant_sourcem,$val->video_id,$val->video_series_sequence,$val->updated_at);
+            }
+        }
+        return $list;
+    }
+
+}
+

+ 133 - 0
modules/Channel/Services/Order/OrderService.php

@@ -0,0 +1,133 @@
+<?php
+/**
+ *
+ * @file:OrderService.php
+ * @Date: 2023/5/23
+ * @Time: 13:40
+ */
+
+
+namespace Modules\Channel\Services\Order;
+
+use Illuminate\Support\Facades\DB;
+use Modules\Channel\Models\Order;
+use Modules\Manage\Models\Miniprogram;
+use Modules\User\Models\User;
+
+class OrderService
+{
+
+    /**
+     *  订单列表查询
+     * name: getOrderList
+     * @param array $param
+     * date 2023/05/23 13:45
+     */
+    public static function getOrderList(array $param, $isAll = false)
+    {
+        $sql = self::getOrderQuerySql($param);
+
+        if ($isAll) {
+            $list = $sql->get();
+        } else {
+            $list = $sql->simplePaginate(getProp($param, 'limit', 15));
+        }
+
+
+        if (!$list->isEmpty()) {
+            foreach ($list as $val) {
+                $val->username = $val->user_id  >  0 ? User::where('id', $val->user_id)->value('username') : "";
+                $val->company_name = "-";
+                $val->play_name = '-';
+                $company = Miniprogram::where('id', $val->miniprogram_id)->first();
+                if ($company) {
+                    $val->company_name = $company->company();
+                    $val->play_name = $company->play_name;
+                }
+                $val->promotion_title = $val->promotion_id > 0 ? DB::table('promotions')->where('id', $val->promotion_id)->value('name') : "";
+                $val->total_count = Order::where('uid',$val->uid)->where('id',"<=",$val->id)->count();
+                if ($val->user_id >  0){
+                    $val->caompany_count = Order::where('uid',$val->uid)->where('puser_id','>',0)->where('puser_id',$val->puser_id)->where('id',"<=",$val->id)->count();
+                    $val->promotion_count = Order::where('uid',$val->uid)->where('puser_id','>',0)->where('puser_id',$val->puser_id)->where('user_id',">",0)->where('user_id',$val->user_id)->where('id',"<=",$val->id)->count();
+                }else{
+                    $val->caompany_count =  Order::where('uid',$val->uid)->where('puser_id','>',0)->count();
+                    $val->promotion_count = Order::where('uid',$val->uid)->where('user_id','>',0)->count();
+                }
+                $val->tip_text = self::getOrderType()[$val->order_type] ?? "-";
+                $val->status_txt =  self::getOrderPayType()[$val->status] ??  "-";
+                $val->pay_name = '微信支付';
+            }
+        }
+
+        return $list;
+    }
+
+    public static function  getOrderType(){
+        return [
+            "COIN" =>  "普通充值",
+            'MONTH'=>'包月',
+            'QUARTER'=>'包季',
+            'YEAR'=>'包年',
+            "FIRST_COIN"  => "首冲"
+        ];
+    }
+    public static function  getOrderPayType(){
+        return [
+            "PAID" =>  "已支付",
+            'REFUND'=>'已退款',
+            'UNPAID'=>'未支付',
+        ];
+    }
+
+    private static function getOrderQuerySql(array $param)
+    {
+        $sql = Order::query();
+        // 优化师查询
+        if (!empty(getProp($param, 'user_id'))) {
+            $sql->where('user_id', $param['user_id']);
+        }
+        // 公司查询
+        if (!empty(getProp($param, 'puser_id'))) {
+            $sql->where('puser_id', $param['puser_id']);
+        }
+        // 小程序
+        if (!empty(getProp($param, 'miniprogram_id'))) {
+            $sql->where('miniprogram_id', $param['miniprogram_id']);
+        }
+
+        // 推广id
+        if (!empty(getProp($param, 'promotion_id'))) {
+            $sql->where('promotion_id', $param['promotion_id']);
+        }
+        // 订单状态查询
+        if (!empty(getProp($param, 'status'))) {
+            $sql->where('status', $param['status']);
+        }
+
+        // 充值项类型
+        if (!empty(getProp($param, 'order_type'))) {
+            $sql->where('order_type', $param['order_type']);
+        }
+        // 用户
+        if (!empty(getProp($param, 'uid'))) {
+            $sql->where('uid', $param['uid']);
+        }
+        // 订单号查询
+        if (!empty(getProp($param, 'trade_no'))) {
+            $sql->where('trade_no', "like", "%" . $param['trade_no'] . "%");
+            // $sql->where('trade_no',  $param['trade_no']);
+        }
+        if (!empty(getProp($param, 'trade_no'))) {
+            // $sql->where('trade_no', "like", "%" . $param['trade_no'] . "%");
+            $sql->where('trade_no', $param['trade_no']);
+        }
+
+        if (!empty(getProp($param, 'pay_end_at_start'))) {
+            $sql->where('pay_end_at', $param['pay_end_at_start']);
+        }
+        if (!empty(getProp($param, 'pay_end_at_end'))) {
+            $sql->where('pay_end_at', "<=", $param['pay_end_at_end']);
+        }
+        return $sql;
+    }
+}

+ 1 - 0
modules/Channel/routes/route.php

@@ -38,5 +38,6 @@ Route::prefix('channel')->group(function () {
         Route::get('consume_record',[\Modules\Channel\Http\Controllers\WechatMinprogramUserController::class,'consumeRecord']);
     });
 
+    Route::any("order_list",[\Modules\Channel\Http\Controllers\OrdersController::class,'orderList']);
 });