Sfoglia il codice sorgente

wesmiler 抢表商城

APPLE 3 anni fa
parent
commit
584f900377

+ 1 - 0
app/Http/Controllers/Api/v1/MarketController.php

@@ -31,6 +31,7 @@ class MarketController extends webApp
         $parentId = isset($params['parent_id'])? $params['parent_id'] : 0;
         $params['parent_id'] = $parentId? $parentId : $this->userId;
         $pageSize = isset($params['pageSize'])? $params['pageSize'] : 15;
+//        var_dump($params);
         $datas = MemberService::make()->getDataList($params,$pageSize);
         return message(1010, true, $datas);
     }

+ 9 - 4
app/Services/Common/MemberService.php

@@ -182,8 +182,9 @@ class MemberService extends BaseService
             // 团队人数
             $info['team_num'] = MemberService::make()->getInviteNums($info['id']);
 
-            // 本月业绩
-            $info['merits_month'] = TradeService::make()->getTeamTradeTotal($info['id'],[3,4], 1);
+            // 本人业绩
+            $info['merits_count'] = TradeService::make()->getUserTradeTotal($info['id'],[3,4]);
+//            $info['merits_month'] = TradeService::make()->getTeamTradeTotal($info['id'],[3,4], 1);
 
             // 总业绩
             $info['merits_total'] = TradeService::make()->getTeamTradeTotal($info['id'],[3,4]);
@@ -336,6 +337,7 @@ class MemberService extends BaseService
         $where = ['a.mark' => 1];
         $status = isset($params['status'])? $params['status'] : 0;
         $parentId = isset($params['parent_id'])? $params['parent_id'] : 0;
+        $time = isset($params['time'])&&$params['time']? $params['time'] : 0;  // 默认今日
         if($parentId>0){
             $where['a.parent_id'] = $parentId;
         }
@@ -381,8 +383,11 @@ class MemberService extends BaseService
                 if($showType==1){
                     $item['invite_num'] = MemberService::make()->getInviteNums($item['id']);
                 }else if ($showType == 2){
-                    $item['merits_month'] = TradeService::make()->getUserTradeTotal($item['id'],[3,4], 1);
-                    $item['merits_total'] = TradeService::make()->getUserTradeTotal($item['id'],[3,4]);
+                    $item['merits_count'] = TradeService::make()->getUserTradeTotal($item['id'],[3,4]);
+                    $item['merits_total'] = TradeService::make()->getTeamTradeTotal($item['id'],[3,4]);
+                }else if($showType == 3){
+                    $item['bonus_total'] = TradeService::make()->getTradeBonusTotal($item['id'],[3,4], $time);
+                    $item['profit_total'] = TradeService::make()->getTradeProfitTotal($item['id'],[3,4], $time);
                 }
             }
         }

+ 4 - 4
app/Services/Common/OrderService.php

@@ -156,7 +156,7 @@ class OrderService extends BaseService
             ->leftJoin('member as b', 'a.user_id', '=', 'b.id')
             ->leftJoin('score_goods as g', 'g.id', '=', 'a.goods_id')
             ->where(['a.id'=>$id,'a.mark'=>1])
-            ->select(['a.*', 'b.nickname', 'b.mobile as buy_mobile', 'g.goods_name','g.source_price', 'g.code', 'g.thumb'])
+            ->select(['a.*', 'b.nickname', 'b.mobile as buy_mobile', 'g.goods_name','g.source_price', 'g.code','g.score', 'g.thumb'])
             ->first();
         if($info){
             $info['create_time_text'] = $info['create_time'] ? datetime($info['create_time'], 'Y-m-d H:i:s') : '';
@@ -168,9 +168,9 @@ class OrderService extends BaseService
             $info['address'] = $address? $address : [];
 
             // 积分
-            $scoreRate = MemberModel::where(['id'=> $info['user_id']])->value('score_rate');
-            $scoreRate = $scoreRate>0 && $scoreRate<=1? $scoreRate : 1;
-            $info['score'] = round($info['total']/$scoreRate, 0);
+//            $scoreRate = MemberModel::where(['id'=> $info['user_id']])->value('score_rate');
+//            $scoreRate = $scoreRate>0 && $scoreRate<=1? $scoreRate : 1;
+//            $info['score'] = round($info['total']/$scoreRate, 0);
 
             $bankInfo = ConfigService::make()->getConfigByGroupValue('8');
             $info['bank_info'] = $bankInfo? $bankInfo : ['realname'=>'','bank_name'=>'','bank_num'=>''];

+ 2 - 0
app/Services/Common/ScoreGoodsService.php

@@ -124,6 +124,8 @@ class ScoreGoodsService extends BaseService
                 $v['url'] = get_image_path($v['url']);
             }
             $data['albums'] = json_encode($albums, 256);
+        }else{
+            $data['albums'] = '';
         }
 
         return parent::edit($data); // TODO: Change the autogenerated stub

+ 115 - 3
app/Services/Common/TradeService.php

@@ -332,8 +332,14 @@ class TradeService extends BaseService
      */
     public function getUserTradeTotal($userId, $status = 0, $time = 0)
     {
-        $where = ['a.user_id' => $userId, 'a.mark' => 1,'b.status'=>1];
-        return $this->model->from('trade as a')
+        $cacheKey = "caches:trade:userTotal:{$userId}_".(is_array($status)? implode('-', $status):$status)."_{$time}";
+        $data = RedisService::get($cacheKey);
+        if($data){
+            return $data;
+        }
+
+        $where = ['a.user_id' => $userId, 'a.mark' => 1,'b.status'=>1,'b.mark'=>1];
+        $data = $this->model->from('trade as a')
             ->leftJoin('member as b','b.id','=','a.user_id')
             ->where($where)
             ->where(function ($query) use ($status, $time) {
@@ -348,6 +354,9 @@ class TradeService extends BaseService
                 }
             })
             ->sum('a.real_price');
+
+        RedisService::set($cacheKey, $data, rand(3,5));
+        return $data;
     }
 
     /**
@@ -359,8 +368,14 @@ class TradeService extends BaseService
      */
     public function getTeamTradeTotal($userId, $status = 0, $time = 0)
     {
+        $cacheKey = "caches:trade:teamTotal:{$userId}_".(is_array($status)? implode('-', $status):$status)."_{$time}";
+        $data = RedisService::get($cacheKey);
+        if($data){
+            return $data;
+        }
+
         $where = ['b.parent_id' => $userId, 'a.mark' => 1,'b.status'=>1];
-        return $this->model->from('trade as a')
+        $data = $this->model->from('trade as a')
             ->leftJoin('member as b', 'b.id', '=', 'a.user_id')
             ->where($where)
             ->where(function ($query) use ($status, $time) {
@@ -375,6 +390,103 @@ class TradeService extends BaseService
                 }
             })
             ->sum('a.real_price');
+
+        RedisService::set($cacheKey, $data, rand(3,5));
+        return $data;
+    }
+
+    /**
+     * 获取用户佣金统计
+     * @param $userId
+     * @param int $status
+     * @param int $time
+     * @return mixed
+     */
+    public function getTradeBonusTotal($userId, $status = 0, $time = 0)
+    {
+        $cacheKey = "caches:trade:bonus:{$userId}_".(is_array($status)? implode('-', $status):$status)."_".(is_array($time)? implode('-', $time):$time);
+        $data = RedisService::get($cacheKey);
+        if($data){
+            return round($data, 2);
+        }
+
+        $where = ['a.user_id' => $userId, 'a.mark' => 1,'b.status'=>1];
+        $data = $this->model->from('trade as a')
+            ->leftJoin('member as b', 'b.id', '=', 'a.user_id')
+            ->where($where)
+            ->where(function ($query) use ($status, $time) {
+                $query->whereIn('a.status', is_array($status) ? $status : [$status]);
+
+                // 本月
+                if ($time == 1) {
+                    $query->where('a.pay_time', '>=', strtotime(date('Y-m-01')));
+                } // 今日
+                else if ($time == 2) {
+                    $query->where('a.pay_time', '>=', strtotime(date('Y-m-d')));
+                }else if (is_array($time)){
+                    $start = isset($time[0])? $time[0] : '';
+                    $end = isset($time[1])? $time[1] : '';
+                    if($end && $end>$start){
+                        $query->where('a.pay_time', '<=', strtotime($end));
+                        if($start){
+                            $query->where('a.pay_time', '>=', strtotime($start));
+                        }
+                    }else if ($start){
+                        $query->where('a.pay_time', '=', strtotime($start));
+                    }
+
+                }
+            })
+            ->sum('a.bonus');
+        RedisService::set($cacheKey, $data, rand(3,5));
+        return round($data, 2);
+    }
+
+    /**
+     * 获取用户收益统计
+     * @param $userId
+     * @param int $status
+     * @param int $time
+     * @return mixed
+     */
+    public function getTradeProfitTotal($userId, $status = 0, $time = 0)
+    {
+        $cacheKey = "caches:trade:profit:{$userId}_".(is_array($status)? implode('-', $status):$status)."_".(is_array($time)? implode('-', $time):$time);
+        $data = RedisService::get($cacheKey);
+        if($data){
+            return round($data, 2);
+        }
+
+        $where = ['a.user_id' => $userId, 'a.mark' => 1,'b.status'=>1];
+        $data = $this->model->from('trade as a')
+            ->leftJoin('member as b', 'b.id', '=', 'a.user_id')
+            ->where($where)
+            ->where(function ($query) use ($status, $time) {
+                $query->whereIn('a.status', is_array($status) ? $status : [$status]);
+
+                // 本月
+                if ($time == 1) {
+                    $query->where('a.pay_time', '>=', strtotime(date('Y-m-01')));
+                } // 今日
+                else if ($time == 2) {
+                    $query->where('a.pay_time', '>=', strtotime(date('Y-m-d')));
+                }else if (is_array($time)){
+                    $start = isset($time[0])? $time[0] : '';
+                    $end = isset($time[1])? $time[1] : '';
+                    if($end && $end>$start){
+                        $query->where('a.pay_time', '<=', strtotime($end));
+                        if($start){
+                            $query->where('a.pay_time', '>=', strtotime($start));
+                        }
+                    }else if ($start){
+                        $query->where('a.pay_time', '=', strtotime($start));
+                    }
+
+                }
+            })
+            ->sum('a.profit');
+        RedisService::set($cacheKey, $data, rand(3,5));
+        return round($data, 2);
     }
 
     /**