From d6db0d37895f23c25e05922c5751016109ce1c89 Mon Sep 17 00:00:00 2001
From: zhengyongxing <as123498@qq.com>
Date: Tue, 3 Mar 2020 14:59:49 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=B5=84=E6=BA=90=E6=A0=B9?=
 =?UTF-8?q?=E6=8D=AE=E5=8F=AF=E7=94=A8=E4=BD=99=E9=A2=9D=E8=BF=9B=E8=A1=8C?=
 =?UTF-8?q?=E9=AA=8C=E8=AF=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Application/Admin/Common/extend.php           | 34 +++------
 .../Controller/MemberController.class.php     |  2 -
 .../TestResourceController.class.php          | 74 ++++++++++++++++++-
 .../Controller/TimingController.class.php     | 62 ++++++++++++++++
 Application/Home/Common/function.php          | 21 ++++++
 .../TestResourceController.class.php          | 11 ++-
 6 files changed, 173 insertions(+), 31 deletions(-)

diff --git a/Application/Admin/Common/extend.php b/Application/Admin/Common/extend.php
index f805affa4..59106887a 100644
--- a/Application/Admin/Common/extend.php
+++ b/Application/Admin/Common/extend.php
@@ -2317,37 +2317,23 @@ function getrelationGameName($id) {
 }
 
 /**
- * 操作日志
- *      uid=>用户id,
- *      radio=>游戏比例,
+ * 获取测试资源可用余额
+ *      promote_id=>推广员id,
+ *      game_id=>游戏id,
  */
 
-function getAvailableBalance($uid,$radio=0) {
+function getAvailableBalance($promote_id=0,$game_id=0) {
 
-    if (!$uid) {
+    if (!$promote_id||!$game_id) {
         return 0;
     }
 
-    $promoteId = M('user','tab_')->field('promote_id')->where(['id'=>$uid])->find()['promote_id'];
-
-//    $spendData = M('spend','tab_')
-//        ->field("date_format(FROM_UNIXTIME( pay_time),'%Y-%m-%d') AS time,sum(`pay_amount`)*{$radio} as pay_amount")
-//        ->where(['promote_id'=>$promoteId,'pay_status'=>1,'pay_way'=>['egt',1]])
-//        ->group('time')
-//        ->select();
-
-    $spend = M('spend','tab_')
-        ->field("sum(`pay_amount`)*{$radio} as pay_amount")
-        ->where(['promote_id'=>$promoteId,'pay_status'=>1,'pay_way'=>['egt',1]])
-        ->find()['pay_amount'];
-
-    $applyResource = M('test_resource','tab_')
-        ->field('sum(`apply_resource`) as apply_resource')
-        ->where(['promote_id'=>$promoteId,'apply_status'=>2])
-        ->find()['apply_resource'];
-
+    $availableBalanceData = M('promote_game_available_balance','tab_')
+        ->field('available_balance')
+        ->where(['promote_id'=>$promote_id,'game_id'=>$game_id])
+        ->find();
 
-    return ($spend?$spend:0)-($applyResource?$applyResource:0);
+    return $availableBalanceData['available_balance']?$availableBalanceData['available_balance']:0;
 
 }
 
diff --git a/Application/Admin/Controller/MemberController.class.php b/Application/Admin/Controller/MemberController.class.php
index 2c71e7f53..5bd172959 100644
--- a/Application/Admin/Controller/MemberController.class.php
+++ b/Application/Admin/Controller/MemberController.class.php
@@ -14,8 +14,6 @@ class MemberController extends ThinkController
      *玩家列表信息
      */
     public function user_info($p=0){
-
-        getAvailableBalance(34,0.5);
         //设定默认时间
         // if(!array_key_exists("time_start",$_REQUEST) && I('type') != 2){
         //     $this->redirect(ACTION_NAME, array('time_start' => date('Y-m-d',strtotime('-30 day')),"time_end"=>date('Y-m-d')));
diff --git a/Application/Admin/Controller/TestResourceController.class.php b/Application/Admin/Controller/TestResourceController.class.php
index 8ac8ffc67..ff8a89268 100644
--- a/Application/Admin/Controller/TestResourceController.class.php
+++ b/Application/Admin/Controller/TestResourceController.class.php
@@ -352,7 +352,9 @@ class TestResourceController extends ThinkController
             session('apply_status', 0);
 
             (empty(I('server_id')) || I('server_id')<1) && $this->error('请选择区服!');;
-            M('test_resource', 'tab_')->startTrans();  //事物
+            M()->startTrans();  //事物
+
+            $resource = 0;
             for ($i=0; $i < $count ; $i++) {
                 $i_account=I('user_account')[$i];
                 if (!empty($i_account)) {
@@ -430,7 +432,10 @@ class TestResourceController extends ThinkController
                     $data['create_time']=time();
                     $data['apply_type']=0;
 
+                    $data = $this->checkAutoVerify($data, $resource, $i);
+
                     $model = M('test_resource', 'tab_')->add($data);
+                    $resource += $data['apply_resource'];
                     if ($model) {
                         session('apply_status', 1);
                     }
@@ -457,6 +462,68 @@ class TestResourceController extends ThinkController
         }
     }
 
+    /**
+     *判断申请资源是否自动审核
+     * @param $data  array  新增数据
+     * @param $resource     int 此次已申请资源
+     * @param $thisCount    int 批量申请的第几次
+     */
+    private function checkAutoVerify($data, $resource = 0, $thisCount = 0)
+    {
+        $config = M('resource_verify_config', 'tab_')
+            ->where(['game_id' => $data['game_id'], 'status' => 1])
+            ->find();
+        if ($config) {//已存在该游戏的资源审核配置
+//            var_dump($config);die();
+            $count = M('test_resource', 'tab_')
+                ->where(['user_id' => $data['user_id'], 'game_id' => $data['game_id']])
+                ->count();
+            $count += $thisCount;
+            if ($count < $config['new_apply_count']) {//新用户
+                //申请资源数量在最低额度和最高额度之间,自动审核
+                if ($data['apply_resource'] >= $config['new_low_value'] && $data['apply_resource'] <= $config['new_high_value']) {
+                    $data['verify_remark'] = '自动审核';
+                    $data['verify_resource']= $data['apply_resource'];
+                    $data['verify_time'] = time();
+                    $data['apply_status'] = 2;
+                    $data['is_new'] = 1;
+                }
+            } else {//非新用户
+
+                $availableBalance = getAvailableBalance($data['promote_id'],$data['game_id']);
+//                var_dump($availableBalance);die();
+
+                $promoteAllRecharge = sum_promote_total_money($data['promote_id']);//总充值量
+                $allVerifyValue = $promoteAllRecharge * $config['old_value_ratio'];//可充值总量
+                //已用资源(申请通过的)
+                $used_resource = M('test_resource', 'tab_')
+                    ->where([
+                        'promote_id' => $data['promote_id'],
+                        'game_id' => $data['game_id'],
+                        'apply_status' => 2,
+                        'is_new' => 2,
+                    ])
+                    ->getField('SUM(verify_resource) as used_resource');
+                $used_resource = $used_resource ?: 0;
+                $usable_resource = $allVerifyValue - $used_resource;//小于等于这个值自动审核
+                $usable_resource -= $resource;
+                if ($data['apply_resource'] <= $usable_resource&&$data['apply_resource']<$availableBalance) {
+                    $data['verify_remark'] = '自动审核';
+                    $data['verify_resource']= $data['apply_resource'];
+                    $data['verify_time'] = time();
+                    $data['apply_status'] = 2;
+                    $data['is_new'] = 2;
+
+                    M('promote_game_available_balance','tab_')
+                        ->where(['promote_id'=>$data['promote_id'],'game_id'=>$data['game_id']])
+                        ->setDec('available_balance',$data['apply_resource']);
+                }
+            }
+        }
+
+        return $data;
+    }
+
     public function edit() {
 
         $id = I('id');
@@ -519,7 +586,8 @@ class TestResourceController extends ThinkController
     public function batch_apply(){
         $ids = explode(',', I('id'));
 
-        M('test_resource','tab_')->startTrans();  //事物
+        M()->startTrans();  //事物
+        $resource = 0;
         foreach ($ids as $key => $value) {
 
                 $map['id']=$value;
@@ -575,8 +643,10 @@ class TestResourceController extends ThinkController
 
                 $data['create_time']=time();
                 $data['apply_type']=1;
+            $data = $this->checkAutoVerify($data, $resource, $key);
                 //
                 $model = M('test_resource','tab_')->add($data);
+            $resource += $data['apply_resource'];
                 if($model===false){
                     M('test_resource','tab_')->rollback();//回滚
                    $this->error('申请失败');
diff --git a/Application/Admin/Controller/TimingController.class.php b/Application/Admin/Controller/TimingController.class.php
index 438a28079..213a2e238 100644
--- a/Application/Admin/Controller/TimingController.class.php
+++ b/Application/Admin/Controller/TimingController.class.php
@@ -261,4 +261,66 @@ class TimingController extends AdminController {
         return $mid;
     }
 
+    //格式 starttime 20200229 endtime 20200230
+    public function setAvailableBalance() {
+
+        if (strtotime($_GET['endtime'])<strtotime($_GET['starttime']) && $_GET['endtime']) {
+            echo '错误,结束时间小于开始时间';
+        }
+//        $starttime = 1571587200;
+        $starttime = strtotime(date('Ymd',time()));
+//        var_dump($starttime);die();
+
+        if ($_GET['starttime']) {
+            $starttime = strtotime($_GET['starttime']);
+        }
+
+        $endtime = $starttime + 86399;
+
+        if ($_GET['endtime']) {
+            $endtime = strtotime($_GET['endtime']) + 86399;
+        }
+
+        for ($start = $starttime; $start<$endtime; $start=$start + 86400) {
+
+//            var_dump($starttime);die();
+
+            $data = M('spend','tab_')
+                ->field("sum(`pay_amount`) as pay_amount,promote_id,promote_account,tab_spend.game_id,tab_spend.game_name,CASE WHEN old_value_ratio is NULL THEN 0 ELSE sum(`pay_amount`) * old_value_ratio END as available_balance")
+                ->join('left join tab_resource_verify_config as config on tab_spend.game_id = config.game_id')
+                ->where(['pay_status'=>1,'pay_way'=>['egt',1],'pay_time'=>['between',[$start,$start+86399]]])
+                ->group('promote_id,game_id')
+                ->select();
+//            var_dump($data);die();
+
+            foreach ($data as $key => $value) {
+
+                $insert['promote_id'] = $value['promote_id'];
+                $insert['promote_account'] = $value['promote_account'];
+                $insert['game_id'] =  $value['game_id'];
+                $insert['game_name'] =  $value['game_name'];
+                $insert['available_balance'] =  $value['available_balance'];
+
+                $availableBalanceData = M('promote_game_available_balance','tab_')
+                    ->where(['promote_id'=>$value['promote_id'],'game_id'=>$value['game_id']])
+                    ->find();
+
+                if (round($value['available_balance'],0) > 0 && !$availableBalanceData) {
+                    M('promote_game_available_balance','tab_')->add($insert);
+                } else if (round($value['available_balance'],0) > 0 && $availableBalanceData) {
+                    M('promote_game_available_balance','tab_')
+                        ->where(['promote_id'=>$value['promote_id'],'game_id'=>$value['game_id']])
+                        ->setInc('available_balance',round($value['available_balance'],0));
+                }
+//            dump(round($value['available_balance'],0));
+
+            }
+
+        }
+
+        echo '执行成功';
+
+
+    }
+
 }
diff --git a/Application/Home/Common/function.php b/Application/Home/Common/function.php
index e52beea47..7b8f902f9 100644
--- a/Application/Home/Common/function.php
+++ b/Application/Home/Common/function.php
@@ -1301,3 +1301,24 @@ function recordPromoteLogs($module,$action_type) {
     M('promote_action_logs','tab_')->add($promoteLogsData);
 
 }
+
+/**
+ * 获取测试资源可用余额
+ *      promote_id=>推广员id,
+ *      game_id=>游戏id,
+ */
+
+function getAvailableBalance($promote_id=0,$game_id=0) {
+
+    if (!$promote_id||!$game_id) {
+        return 0;
+    }
+
+    $availableBalanceData = M('promote_game_available_balance','tab_')
+        ->field('available_balance')
+        ->where(['promote_id'=>$promote_id,'game_id'=>$game_id])
+        ->find();
+
+    return $availableBalanceData['available_balance']?$availableBalanceData['available_balance']:0;
+
+}
diff --git a/Application/Home/Controller/TestResourceController.class.php b/Application/Home/Controller/TestResourceController.class.php
index 23888a063..00d56d7b1 100644
--- a/Application/Home/Controller/TestResourceController.class.php
+++ b/Application/Home/Controller/TestResourceController.class.php
@@ -352,7 +352,7 @@ class TestResourceController extends BaseController
             $count=count(I('user_account'));
             session('apply_status', 0);
             (empty(I('server_id')) || I('server_id')<1) && $this->ajaxReturn(['msg'=>$i_account.'请选择区服' ,'status'=>0]);
-            M('test_resource', 'tab_')->startTrans();  //事物
+            M()->startTrans();  //事物
             $resource = 0;
             for ($i=0; $i < $count ; $i++) {
                 $data = array();
@@ -480,7 +480,7 @@ class TestResourceController extends BaseController
                }
             } else {//非新用户
 
-                $availableBalance = getAvailableBalance($data['user_id'],$config['old_value_ratio']);
+                $availableBalance = getAvailableBalance($data['promote_id'],$data['game_id']);
 
               $promoteAllRecharge = sum_promote_total_money($data['promote_id']);//总充值量
               $allVerifyValue = $promoteAllRecharge * $config['old_value_ratio'];//可充值总量
@@ -502,6 +502,11 @@ class TestResourceController extends BaseController
                   $data['verify_time'] = time();
                   $data['apply_status'] = 2;
                   $data['is_new'] = 2;
+
+                  M('promote_game_available_balance','tab_')
+                      ->where(['promote_id'=>$data['promote_id'],'game_id'=>$data['game_id']])
+                      ->setDec('available_balance',$data['apply_resource']);
+
               }
             }
         }
@@ -545,7 +550,7 @@ class TestResourceController extends BaseController
     public function batch_apply(){
         $ids = explode(',', I('apply_id'));
 
-        M('test_resource','tab_')->startTrans();  //事物
+        M()->startTrans();  //事物
         $resource = 0;
         foreach ($ids as $key => $value) {
                 $data = array();