diff --git a/Application/Admin/Common/function.php b/Application/Admin/Common/function.php
index d34964caf..59f7e8482 100644
--- a/Application/Admin/Common/function.php
+++ b/Application/Admin/Common/function.php
@@ -724,7 +724,7 @@ function getAllGameList($groupByRelation = false)
{
$field = 'id, game_name, relation_game_id, relation_game_name';
if ($groupByRelation) {
- $games = M('game', 'tab_')->field($field)->group('relation_game_id')->select();
+ $games = M('game', 'tab_')->field($field)->where('id = relation_game_id')->group('relation_game_id')->select();
} else {
$games = M('game', 'tab_')->field($field)->select();
}
diff --git a/Application/Admin/Controller/PromoteGameRatioController.class.php b/Application/Admin/Controller/PromoteGameRatioController.class.php
index 0d08c400c..ca672fba3 100644
--- a/Application/Admin/Controller/PromoteGameRatioController.class.php
+++ b/Application/Admin/Controller/PromoteGameRatioController.class.php
@@ -64,7 +64,7 @@ class PromoteGameRatioController extends ThinkController
$promoteIds = array_column($promoteGameRatios, 'promote_id');
$gameIds = array_column($promoteGameRatios, 'game_id');
$promoteFiled = 'id, account, mobile_phone, create_time, status, ver_status';
- $gameFiled = 'id, game_name, ratio';
+ $gameFiled = 'id, relation_game_name, ratio';
$promotes = M('promote', 'tab_')->where(array('id' => ['in', $promoteIds]))->getField($promoteFiled, true);
$games = M('game', 'tab_')->where(array('id' => ['in', $gameIds]))->getField($gameFiled, true);
@@ -103,7 +103,7 @@ class PromoteGameRatioController extends ThinkController
$thisPromoteVerStatus = getPromoteVerStatus($promotes[$thisPromoteId]['ver_status'], 2);
}
if ($issetGame) {
- $thisGameName = $games[$thisGameId]['game_name'];
+ $thisGameName = $games[$thisGameId]['relation_game_name'];
$thisGameRatio = $games[$thisGameId]['ratio'];
$thisGameRatio = ($thisGameRatio ?? '0.00') . '%';
}
@@ -326,7 +326,7 @@ class PromoteGameRatioController extends ThinkController
$this->assign('lastRatio', $lastRatio);
}
- $this->assign('gameList', getAllGameList());
+ $this->assign('gameList', getAllGameList(true));
$this->assign('promoteList', getPromoteByLevel(1));
$this->meta_title = $metaTitle;
$this->display();
@@ -389,8 +389,11 @@ class PromoteGameRatioController extends ThinkController
$promoteIds = M('promote', 'tab_')->where($promoteMap)->getField('id', true);
$promoteIds[] = $promoteId;
+ $gameIds = D('game')->where(array('relation_game_id' => $promoteGameRatio['game_id']))->getField('id', true);
+ $gameIds = $gameIds ?? [-1];
+
$spendMap['promote_id'] = ['in', $promoteIds];
- $spendMap['game_id'] = $promoteGameRatio['game_id'];
+ $spendMap['game_id'] = ['in', $gameIds];
if ($promoteGameRatio['end_time'] > 0) {
$spendMap['pay_time'] = ['between', [$promoteGameRatio['begin_time'], $promoteGameRatio['end_time'] + 3600 * 24 - 1]];
} else {
diff --git a/Application/Admin/Model/WithdrawModel.class.php b/Application/Admin/Model/WithdrawModel.class.php
index ea73951c1..e01e83bc1 100644
--- a/Application/Admin/Model/WithdrawModel.class.php
+++ b/Application/Admin/Model/WithdrawModel.class.php
@@ -268,37 +268,42 @@ class WithdrawModel extends Model{
$balance = 0;
$notInGameIds = [-1];
foreach ($promoteGameRatios as $promoteGameRatio) {
- $spendWhere['game_id'] = $promoteGameRatio['game_id'];
if (!empty($promoteGameRatio['turnover_ratio']) && $promoteGameRatio['begin_time'] <= $settlementBeginTime && (empty($promoteGameRatio['end_time']) || $promoteGameRatio['end_time'] >= $settlementEndTime)) {
- $notInGameIds[] = $promoteGameRatio['game_id'];
- $ratio = $promoteGameRatio['ratio'];
- $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
- $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
- $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
- ->where($spendWhere)
- ->find()['sum_amount'];
- $sumAmount = $sumAmount ?? 0;
- foreach ($turnoverRatios as $turnoverRatio) {
- if ($sumAmount >= $turnoverRatio['turnover']) {
- $ratio = $turnoverRatio['ratio'];
- break;
+ $gameIds = D('game')->where(array('relation_game_id' => $promoteGameRatio['game_id']))->getField('id', true);
+ if (!empty($gameIds)) {
+ foreach ($gameIds as $gameId) {
+ $spendWhere['game_id'] = $gameId;
+ $notInGameIds[] = $gameId;
+ $ratio = $promoteGameRatio['ratio'];
+ $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
+ $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
+ $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
+ ->where($spendWhere)
+ ->find()['sum_amount'];
+ $sumAmount = $sumAmount ?? 0;
+ foreach ($turnoverRatios as $turnoverRatio) {
+ if ($sumAmount >= $turnoverRatio['turnover']) {
+ $ratio = $turnoverRatio['ratio'];
+ break;
+ }
+ }
+
+ $thisBalance = $spendModel->field("sum(pay_amount * {$ratio}) as balance")
+ ->where($spendWhere)
+ ->find()['balance'];
+ $thisBalance = $thisBalance ?? 0;
+ $balance = bcadd($balance, $thisBalance, 2);
+
+ $gameRatios[$gameId] = [];
+ $gameRatios[$gameId][] = [
+ 'selle_ratio' => $ratio,
+ 'default_ratio' => $promoteGameRatio['ratio'],
+ 'sum_amount' => $sumAmount,
+ 'begin_time' => $beginTime,
+ 'end_time' => $endTime,
+ ];
}
}
-
- $thisBalance = $spendModel->field("sum(pay_amount * {$ratio}) as balance")
- ->where($spendWhere)
- ->find()['balance'];
- $thisBalance = $thisBalance ?? 0;
- $balance = bcadd($balance, $thisBalance, 2);
-
- $gameRatios[$promoteGameRatio['game_id']] = [];
- $gameRatios[$promoteGameRatio['game_id']][] = [
- 'selle_ratio' => $ratio,
- 'default_ratio' => $promoteGameRatio['ratio'],
- 'sum_amount' => $sumAmount,
- 'begin_time' => $beginTime,
- 'end_time' => $endTime,
- ];
}
}
@@ -391,33 +396,38 @@ class WithdrawModel extends Model{
$gameRatios = [];
foreach ($promoteGameRatios as $promoteGameRatio) {
if (!empty($promoteGameRatio['turnover_ratio']) && $promoteGameRatio['begin_time'] <= $settlementBeginTime && (empty($promoteGameRatio['end_time']) || $promoteGameRatio['end_time'] >= $settlementEndTime)) {
- $spendMap['game_id'] = $promoteGameRatio['game_id'];
- $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
- $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
- $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
- ->where($spendMap)
- ->find()['sum_amount'];
- $sumAmount = $sumAmount ?? 0;
- $ratio = 0;
- foreach ($turnoverRatios as $turnoverRatio) {
- if ($sumAmount >= $turnoverRatio['turnover']) {
- $ratio = $turnoverRatio['ratio'];
- break;
- }
- }
+ $gameIds = D('game')->where(array('relation_game_id' => $promoteGameRatio['game_id']))->getField('id', true);
+ if (!empty($gameIds)) {
+ foreach ($gameIds as $gameId) {
+ $spendWhere['game_id'] = $gameId;
+ $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
+ $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
+ $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
+ ->where($spendMap)
+ ->find()['sum_amount'];
+ $sumAmount = $sumAmount ?? 0;
+ $ratio = 0;
+ foreach ($turnoverRatios as $turnoverRatio) {
+ if ($sumAmount >= $turnoverRatio['turnover']) {
+ $ratio = $turnoverRatio['ratio'];
+ break;
+ }
+ }
- if ($ratio > 0) {
- $ratio = bcsub($ratio, $promoteGameRatio['ratio'], 2);
- $thisBalance = bcdiv(bcmul($sumAmount, $ratio, 2), 100, 2);
- $balance = bcadd($balance, $thisBalance, 2);
-
- $gameRatios[$promoteGameRatio['game_id']][] = [
- 'selle_ratio' => $ratio,
- 'default_ratio' => $promoteGameRatio['ratio'],
- 'sum_amount' => $sumAmount,
- 'begin_time' => date('Y-m-d', $settlementBeginTime),
- 'end_time' => date('Y-m-d', $settlementEndTime),
- ];
+ if ($ratio > 0) {
+ $ratio = bcsub($ratio, $promoteGameRatio['ratio'], 2);
+ $thisBalance = bcdiv(bcmul($sumAmount, $ratio, 2), 100, 2);
+ $balance = bcadd($balance, $thisBalance, 2);
+
+ $gameRatios[$gameId][] = [
+ 'selle_ratio' => $ratio,
+ 'default_ratio' => $promoteGameRatio['ratio'],
+ 'sum_amount' => $sumAmount,
+ 'begin_time' => date('Y-m-d', $settlementBeginTime),
+ 'end_time' => date('Y-m-d', $settlementEndTime),
+ ];
+ }
+ }
}
}
}
@@ -477,25 +487,30 @@ class WithdrawModel extends Model{
$balance = 0;
foreach ($promoteGameRatios as $promoteGameRatio) {
if (!empty($promoteGameRatio['turnover_ratio']) && $promoteGameRatio['begin_time'] <= $settlementBeginTime && (empty($promoteGameRatio['end_time']) || $promoteGameRatio['end_time'] >= $settlementEndTime)) {
- $spendMap['game_id'] = $promoteGameRatio['game_id'];
- $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
- $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
- $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
- ->where($spendMap)
- ->find()['sum_amount'];
- $sumAmount = $sumAmount ?? 0;
- $ratio = 0;
- foreach ($turnoverRatios as $turnoverRatio) {
- if ($sumAmount >= $turnoverRatio['turnover']) {
- $ratio = $turnoverRatio['ratio'];
- break;
- }
- }
+ $gameIds = D('game')->where(array('relation_game_id' => $promoteGameRatio['game_id']))->getField('id', true);
+ if (!empty($gameIds)) {
+ foreach ($gameIds as $gameId) {
+ $spendMap['game_id'] = $gameId;
+ $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
+ $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
+ $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
+ ->where($spendMap)
+ ->find()['sum_amount'];
+ $sumAmount = $sumAmount ?? 0;
+ $ratio = 0;
+ foreach ($turnoverRatios as $turnoverRatio) {
+ if ($sumAmount >= $turnoverRatio['turnover']) {
+ $ratio = $turnoverRatio['ratio'];
+ break;
+ }
+ }
- if ($ratio > 0) {
- $ratio = bcsub($ratio, $promoteGameRatio['ratio'], 2);
- $thisBalance = bcdiv(bcmul($sumAmount, $ratio, 2), 100, 2);
- $balance = bcadd($balance, $thisBalance, 2);
+ if ($ratio > 0) {
+ $ratio = bcsub($ratio, $promoteGameRatio['ratio'], 2);
+ $thisBalance = bcdiv(bcmul($sumAmount, $ratio, 2), 100, 2);
+ $balance = bcadd($balance, $thisBalance, 2);
+ }
+ }
}
}
}
@@ -532,28 +547,33 @@ class WithdrawModel extends Model{
$balance = 0;
$notInGameIds = [-1];
foreach ($promoteGameRatios as $promoteGameRatio) {
- $spendWhere['game_id'] = $promoteGameRatio['game_id'];
if (!empty($promoteGameRatio['turnover_ratio']) && $promoteGameRatio['begin_time'] <= $settlementBeginTime && (empty($promoteGameRatio['end_time']) || $promoteGameRatio['end_time'] >= $settlementEndTime)) {
- $notInGameIds[] = $promoteGameRatio['game_id'];
- $ratio = $promoteGameRatio['ratio'];
- $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
- $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
- $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
- ->where($spendWhere)
- ->find()['sum_amount'];
- $sumAmount = $sumAmount ?? 0;
- foreach ($turnoverRatios as $turnoverRatio) {
- if ($sumAmount >= $turnoverRatio['turnover']) {
- $ratio = $turnoverRatio['ratio'];
- break;
+ $gameIds = D('game')->where(array('relation_game_id' => $promoteGameRatio['game_id']))->getField('id', true);
+ if (!empty($gameIds)) {
+ foreach ($gameIds as $gameId) {
+ $spendWhere['game_id'] = $gameId;
+ $notInGameIds[] = $gameId;
+ $ratio = $promoteGameRatio['ratio'];
+ $promoteGameRatio['turnover_ratio'] = json_decode($promoteGameRatio['turnover_ratio'], true);
+ $turnoverRatios = array_reverse($promoteGameRatio['turnover_ratio']);
+ $sumAmount = $spendModel->field("sum(pay_amount) as sum_amount")
+ ->where($spendWhere)
+ ->find()['sum_amount'];
+ $sumAmount = $sumAmount ?? 0;
+ foreach ($turnoverRatios as $turnoverRatio) {
+ if ($sumAmount >= $turnoverRatio['turnover']) {
+ $ratio = $turnoverRatio['ratio'];
+ break;
+ }
+ }
+
+ $thisBalance = $spendModel->field("sum(pay_amount * {$ratio}) as balance")
+ ->where($spendWhere)
+ ->find()['balance'];
+ $thisBalance = $thisBalance ?? 0;
+ $balance = bcadd($balance, $thisBalance, 2);
}
}
-
- $thisBalance = $spendModel->field("sum(pay_amount * {$ratio}) as balance")
- ->where($spendWhere)
- ->find()['balance'];
- $thisBalance = $thisBalance ?? 0;
- $balance = bcadd($balance, $thisBalance, 2);
}
}
diff --git a/Application/Admin/View/PromoteGameRatio/applyRatio.html b/Application/Admin/View/PromoteGameRatio/applyRatio.html
index 7d14a96be..a75a45d7a 100644
--- a/Application/Admin/View/PromoteGameRatio/applyRatio.html
+++ b/Application/Admin/View/PromoteGameRatio/applyRatio.html
@@ -105,11 +105,11 @@
-
+
-
+
diff --git a/Application/Common/Common/extend.php b/Application/Common/Common/extend.php
index e774ef468..fd93d3863 100644
--- a/Application/Common/Common/extend.php
+++ b/Application/Common/Common/extend.php
@@ -1106,6 +1106,10 @@ function getGameSelleRatioByPromote($promoteId = null, $gameId = null)
$promoteId = intval($promoteId);
$gameId = intval($gameId);
$promote = M('promote', 'tab_')->find($promoteId);
+ $gameId = M('game', 'tab_')->where(array('id' => $gameId))->getField('relation_game_id');
+ if (empty($gameId)) {
+ return false;
+ }
if (empty($promote)) {
return false;