Просмотр исходного кода

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

kevinElken 9 месяцев назад
Родитель
Сommit
8b5a186894

+ 33 - 9
backendApi/modules/v1/controllers/BonusController.php

@@ -8,6 +8,8 @@
 
 namespace backendApi\modules\v1\controllers;
 
+use backendApi\modules\v1\models\AdminCountry;
+use backendApi\modules\v1\models\AdminRole;
 use backendApi\modules\v1\models\exportForms\BonusExportForm;
 use backendApi\modules\v1\models\lists\bonus\BalanceList;
 use backendApi\modules\v1\models\lists\bonus\FlowBalanceList;
@@ -311,6 +313,9 @@ class BonusController extends BaseController {
         ]);
         $condition = $filter['condition'];
         $params = $filter['params'];
+
+
+
         $listObj = new FlowBalanceList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
         return static::notice($data);
@@ -2066,11 +2071,22 @@ class BonusController extends BaseController {
         $filter = $this->filterCondition([
             'USER_NAME' => 'UI.USER_NAME',
             'REAL_NAME' => 'UI.REAL_NAME',
-            'userIds' => 'UB.USER_ID',
             'IS_DEC' => 'UI.IS_DEC',
         ]);
         $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 CU.COUNTRY_ID IN (" . implode(',', $quotedAdminCountry) . ")";
+        }
+
         $listObj = new BalanceList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
         return static::notice($data);
@@ -2086,17 +2102,25 @@ class BonusController extends BaseController {
         $filter = $this->filterCondition([
             'USER_NAME' => 'UI.USER_NAME',
             'REAL_NAME' => 'UI.REAL_NAME',
-            'userIds' => 'UB.USER_ID',
-            'BONUS' => 'BONUS',
             'IS_DEC' => 'UI.IS_DEC',
-            'PERIOD_AT' => 'UI.PERIOD_AT',
-            'MOBILE' => 'UI.MOBILE',
-            'TEL' => 'UI.TEL',
-//            'CF' => 'CF',
-//            'LX' => 'LX',
         ]);
+
+        $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 CU.COUNTRY_ID IN (" . implode(',', $quotedAdminCountry) . ")";
+        }
+
         $form = new BonusExportForm();
-        $result = $form->run($filter, '会员奖金余额');
+        $result = $form->run(['condition'=>$condition, 'params'=>$params], '会员奖金余额');
         if (!$result) {
             return static::notice(Form::formatErrorsForApi($form->getErrors()), 400);
         }

+ 8 - 3
backendApi/modules/v1/models/lists/bonus/BalanceList.php

@@ -6,6 +6,7 @@ use common\helpers\user\Info;
 use common\libs\dataList\column\Price;
 use common\libs\dataList\column\YesNo;
 use common\libs\dataList\DataListInterface;
+use common\models\Countries;
 use common\models\User;
 use common\models\UserBind;
 use common\models\UserBonus;
@@ -34,13 +35,14 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
     {
         $this->condition .= ' AND UI.STATUS=1 AND I.LAST_LOGIN_AT>=1620748800';
         $this->listData = UserBonus::lists($this->condition, $this->params, [
-            'select' => 'UB.*,UI.*,UW.CASH, UP.AMOUNTS AS PRP',
+            'select' => 'UB.*,UI.*,UW.CASH, UP.AMOUNTS AS PRP, C.NAME AS COUNTRY',
             'from' => UserBonus::tableName() . ' AS UB',
             'join' => [
-                ['LEFT JOIN', User::tableName() . ' AS UI', 'UI.ID=UB.USER_ID'],
+                ['INNER JOIN', User::tableName() . ' AS UI', 'UI.ID=UB.USER_ID'],
                 ['LEFT JOIN', UserWallet::tableName() . ' AS UW', 'UW.USER_ID=UB.USER_ID'],
                 ['LEFT JOIN', UserInfo::tableName() . ' AS I', 'I.USER_ID=UB.USER_ID'],
-                ['LEFT JOIN', "(SELECT USER_ID,SUM(AMOUNTS) AS AMOUNTS FROM AR_USER_PERFORMANCE WHERE STATUS_ID<30 GROUP BY USER_ID) UP", 'UW.USER_ID=UP.USER_ID']
+                ['LEFT JOIN', "(SELECT USER_ID,SUM(AMOUNTS) AS AMOUNTS FROM AR_USER_PERFORMANCE WHERE STATUS_ID<30 GROUP BY USER_ID) UP", 'UW.USER_ID=UP.USER_ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'CU.COUNTRY_ID=C.ID'],
             ],
             'orderBy' => 'UB.CREATED_AT ASC, UB.ID ASC',
             'page' => $this->page,
@@ -74,6 +76,9 @@ class BalanceList extends \common\libs\dataList\DataList implements DataListInte
                         'tag'=>['type'=>'success', 'size' => 'small', 'class'=>'no-border']
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'IS_DEC' => [
                     'header' => \Yii::t('ctx', 'whetherStockist'), // 是否报单中心
                     'value' => function($row) {