Преглед изворни кода

feat: EK-879: 【AE】管理员增加“Country”属性,根据所选国家限制登录后所显示的奖金、余额等数据(二期).

kevinElken пре 9 месеци
родитељ
комит
6b270bf3c3

+ 4 - 4
backendApi/config/params.php

@@ -83,10 +83,10 @@ return [
         'demo/ipayments',
         'article/detail',
         'admin/change-language',
-        'currency/currencies-conversions',
-        'currency/set-currencies-conversions',
-        'transportation/transportation',
-        'transportation/set-transportation',
+//        'currency/currencies-conversions',
+//        'currency/set-currencies-conversions',
+//        'transportation/transportation',
+//        'transportation/set-transportation',
         'bonus/auto-calc',
         'bonus/calc-period',
         'bonus/close-period',

+ 26 - 2
backendApi/modules/v1/controllers/CurrencyController.php

@@ -2,10 +2,14 @@
 
 namespace backendApi\modules\v1\controllers;
 
+use backendApi\modules\v1\models\AdminCountry;
+use backendApi\modules\v1\models\AdminRole;
+use common\helpers\Cache;
 use common\helpers\Form;
 use common\models\Currency;
 use common\models\CurrencyConversions;
 use common\models\forms\CurrenciesConversionsForm;
+use Yii;
 use yii\db\Exception;
 use yii\web\HttpException;
 
@@ -23,10 +27,30 @@ class CurrencyController extends BaseController
 
     public function actionCurrenciesConversions()
     {
-        // 货币列表
+        // 国家
+        $countries = Cache::getCountries();
+        // 货币
         $currencies = $this->modelClass::getFromCache();
-        // 货币汇率配置
+        // 汇率配置
         $currencyConversion = $this->currencyConversionsModelClass::getFromCache();
+
+        $isSuper = AdminRole::isSuperAdmin(\Yii::$app->getUser()->getUserInfo()['roleId']);
+        if (!$isSuper) {
+            $adminId = Yii::$app->getUser()->getUserInfo()['id'];
+            $adminCountry = AdminCountry::getCountry($adminId);
+
+            $countries = array_filter($countries, fn($country) => in_array($country['ID'], $adminCountry));
+            $countries = array_values($countries);
+            $countriesId = array_column($countries, 'ID');
+
+            $currencies = array_filter($currencies, fn($currency) => in_array($currency['ID'], $countriesId));
+            $currencies = array_values($currencies);
+            $currenciesId = array_column($currencies, 'ID');
+
+            $currencyConversion = array_filter($currencyConversion, fn($conversion) => in_array($conversion['TO_CURRENCY_ID'], $currenciesId));
+            $currencyConversion = array_values($currencyConversion);
+        }
+
         $currencyConversion = array_column($currencyConversion, NULL, 'TO_CURRENCY_ID');
 
         foreach ($currencies as &$currency) {

+ 58 - 2
backendApi/modules/v1/controllers/FinanceController.php

@@ -9,6 +9,8 @@
 namespace backendApi\modules\v1\controllers;
 
 use backendApi\modules\v1\models\Admin;
+use backendApi\modules\v1\models\AdminCountry;
+use backendApi\modules\v1\models\AdminRole;
 use backendApi\modules\v1\models\exportForms\FinanceExportForm;
 use backendApi\modules\v1\models\lists\finance\BalanceAuditList;
 use backendApi\modules\v1\models\lists\finance\HistoryBonusList;
@@ -93,6 +95,18 @@ class FinanceController extends BaseController {
         ]);
         $condition = $filter['condition'];
         $params = $filter['params'];
+
+        $isSuper = AdminRole::isSuperAdmin(\Yii::$app->getUser()->getUserInfo()['roleId']);
+        if (!$isSuper) {
+            $adminId = Yii::$app->getUser()->getUserInfo()['id'];
+            $adminCountry = AdminCountry::getCountry($adminId);
+            $quotedAdminCountry = array_map(function($item) {
+                return "'" . addslashes($item) . "'";
+            }, $adminCountry);
+
+            $condition .= " AND U.COUNTRY_ID IN (" . implode(',', $quotedAdminCountry) . ")";
+        }
+
         $listObj = new BalanceAuditList();
         $data = $listObj->getList(['condition' => $condition, 'params' => $params]);
         return static::notice($data);
@@ -123,8 +137,23 @@ class FinanceController extends BaseController {
             'CREATE_ADMIN_NAME' => 'ADMC.ADMIN_NAME',
             'AUDIT_ADMIN_NAME' => 'ADMU.ADMIN_NAME',
         ]);
+
+        $condition = $filter['condition'];
+        $params = $filter['params'];
+
+        $isSuper = AdminRole::isSuperAdmin(\Yii::$app->getUser()->getUserInfo()['roleId']);
+        if (!$isSuper) {
+            $adminId = Yii::$app->getUser()->getUserInfo()['id'];
+            $adminCountry = AdminCountry::getCountry($adminId);
+            $quotedAdminCountry = array_map(function($item) {
+                return "'" . addslashes($item) . "'";
+            }, $adminCountry);
+
+            $condition .= " AND U.COUNTRY_ID IN (" . implode(',', $quotedAdminCountry) . ")";
+        }
+
         $form = new FinanceExportForm();
-        $result = $form->run($filter, Yii::t('ctx', 'memberEcoinAdjustmentListFileName')); // 会员余额调整列表
+        $result = $form->run(['condition' => $condition, 'params' => $params], Yii::t('ctx', 'memberEcoinAdjustmentListFileName')); // 会员余额调整列表
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }
@@ -273,6 +302,18 @@ class FinanceController extends BaseController {
         ]);
         $condition = $filter['condition'];
         $params = $filter['params'];
+
+        $isSuper = AdminRole::isSuperAdmin(\Yii::$app->getUser()->getUserInfo()['roleId']);
+        if (!$isSuper) {
+            $adminId = Yii::$app->getUser()->getUserInfo()['id'];
+            $adminCountry = AdminCountry::getCountry($adminId);
+            $quotedAdminCountry = array_map(function($item) {
+                return "'" . addslashes($item) . "'";
+            }, $adminCountry);
+
+            $condition .= " AND U.COUNTRY_ID IN (" . implode(',', $quotedAdminCountry) . ")";
+        }
+
         $listObj = new TransferList();
         $data = $listObj->getList(['condition' => $condition, 'params' => $params]);
         return static::notice($data);
@@ -305,8 +346,23 @@ class FinanceController extends BaseController {
             'PERIOD_NUM' => 'PERIOD_NUM',
             'REMARK' => 'REMARK',
         ]);
+
+        $condition = $filter['condition'];
+        $params = $filter['params'];
+
+        $isSuper = AdminRole::isSuperAdmin(\Yii::$app->getUser()->getUserInfo()['roleId']);
+        if (!$isSuper) {
+            $adminId = Yii::$app->getUser()->getUserInfo()['id'];
+            $adminCountry = AdminCountry::getCountry($adminId);
+            $quotedAdminCountry = array_map(function($item) {
+                return "'" . addslashes($item) . "'";
+            }, $adminCountry);
+
+            $condition .= " AND U.COUNTRY_ID IN (" . implode(',', $quotedAdminCountry) . ")";
+        }
+
         $form = new FinanceExportForm();
-        $result = $form->run($filter, Yii::t('ctx', 'financeControllerTransferListExport')); // 转账列表
+        $result = $form->run(['condition' => $condition, 'params' => $params], Yii::t('ctx', 'financeControllerTransferListExport')); // 转账列表
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }

+ 7 - 2
backendApi/modules/v1/models/lists/finance/BalanceAuditList.php

@@ -9,6 +9,7 @@ use common\libs\dataList\column\DateTime;
 use common\libs\dataList\column\YesNo;
 use common\libs\dataList\DataListInterface;
 use common\models\BalanceAudit;
+use common\models\Countries;
 use common\models\DealType;
 use common\models\User;
 use Yii;
@@ -28,13 +29,14 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
      */
     public function dataHandle() {
         $this->listData = BalanceAudit::lists($this->condition, $this->params, [
-            'select' => 'BA.*,U.USER_NAME,U.REAL_NAME,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME AUDIT_ADMIN_NAME',
+            'select' => 'BA.*,U.USER_NAME,U.REAL_NAME,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME AUDIT_ADMIN_NAME, C.NAME AS COUNTRY',
             'orderBy' => 'BA.CREATED_AT DESC, BA.ID DESC',
             'from' => BalanceAudit::tableName() . ' AS BA',
             'join' => [
-                ['LEFT JOIN', User::tableName() . ' AS U', 'BA.USER_ID=U.ID'],
+                ['INNER JOIN', User::tableName() . ' AS U', 'BA.USER_ID=U.ID'],
                 ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'BA.UPDATE_ADMIN_ID=ADMC.ID'],
                 ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'BA.AUDIT_ADMIN_ID=ADMU.ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'U.COUNTRY_ID=C.ID'],
             ],
             'page' => $this->page,
             'pageSize' => $this->pageSize,
@@ -71,6 +73,9 @@ class BalanceAuditList extends \common\libs\dataList\DataList implements DataLis
                         'width' => '120',
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'LAST_DEC_LV_NAME' => [
                     'header' => Yii::t('ctx', 'modelListFinanceBalanceAuditListMemberLevel'), // 会员级别
                     'headerOther' => [

+ 12 - 2
backendApi/modules/v1/models/lists/finance/TransferList.php

@@ -12,6 +12,7 @@ use common\libs\dataList\column\DateTime;
 use common\libs\dataList\column\YesNo;
 use common\libs\dataList\DataListInterface;
 use common\models\BalanceAudit;
+use common\models\Countries;
 use common\models\DealType;
 use common\models\forms\ReconsumeForm;
 use common\models\PerfAudit;
@@ -19,6 +20,7 @@ use common\models\ReconsumeAudit;
 use common\models\ReconsumePool;
 use common\models\DecRole;
 use common\models\Transfer;
+use common\models\User;
 use common\models\UserInfo;
 use common\models\UserSystem;
 use common\models\YearHighestEmpLv;
@@ -39,8 +41,13 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
      */
     public function dataHandle() {
         $this->listData = Transfer::lists($this->condition, $this->params, [
-            'orderBy' => 'CREATED_AT DESC, ID DESC',
-            'from' => Transfer::tableName(),
+            'select' => 'BA.*, C.NAME AS COUNTRY',
+            'orderBy' => 'BA.CREATED_AT DESC, BA.ID DESC',
+            'from' => Transfer::tableName() . ' AS BA',
+            'join' => [
+                ['INNER JOIN', User::tableName() . ' AS U', 'BA.OUT_UID=U.ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'U.COUNTRY_ID=C.ID'],
+            ],
             'page' => $this->page,
             'pageSize' => $this->pageSize,
         ]);
@@ -79,6 +86,9 @@ class TransferList extends \common\libs\dataList\DataList implements DataListInt
                         'width' => '120',
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'LAST_OUT_DEC_LV_NAME' => [
                     'header' => Yii::t('ctx', 'modelListFinanceTranserListLastOutDecLvName'), // 转出主体会员级别
                     'headerOther' => [