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

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

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

+ 84 - 0
backendApi/modules/v1/controllers/BonusController.php

@@ -199,6 +199,18 @@ class BonusController 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 FlowBonusList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
         return static::notice($data);
@@ -2352,6 +2364,18 @@ class BonusController 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 PerfOrderList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
 
@@ -2394,6 +2418,18 @@ class BonusController 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) . ")";
+        }
+
         $form = new BonusExportForm();
         $result = $form->run(['condition'=>$condition, 'params'=>$params], '业绩单');
         if (!$result) {
@@ -2462,6 +2498,18 @@ class BonusController 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 PerfMonthList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
 
@@ -2484,6 +2532,18 @@ class BonusController 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) . ")";
+        }
+
         $form = new BonusExportForm();
         $result = $form->run(['condition'=>$condition, 'params'=>$params], '月业绩');
         if (!$result) {
@@ -2686,6 +2746,18 @@ class BonusController 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 UserPerfList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
 
@@ -2704,6 +2776,18 @@ class BonusController 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) . ")";
+        }
+
         $form = new BonusExportForm();
         $result = $form->run(['condition'=>$condition, 'params'=>$params], '用户业绩');
         if (!$result) {

+ 8 - 4
backendApi/modules/v1/models/lists/bonus/FlowBonusList.php

@@ -8,9 +8,11 @@ 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\DealType;
 use common\models\FlowBonus;
 use common\libs\dataList\column\DateTime;
+use common\models\User;
 use Yii;
 
 class FlowBonusList extends \common\libs\dataList\DataList implements DataListInterface {
@@ -28,18 +30,17 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
      */
     public function dataHandle() {
         $this->listData = FlowBonus::lists($this->condition, $this->params, [
-            'select' => 'FB.*,U.USER_NAME,U.REAL_NAME,U.IS_DEC',
+            'select' => 'FB.*,U.USER_NAME,U.REAL_NAME,U.IS_DEC, C.NAME AS COUNTRY',
             'orderBy' => 'FB.CREATED_AT DESC,FB.SORT DESC,FB.AUTO_SORT DESC,FB.ID DESC',
             'from' => FlowBonus::tableName() . ' AS FB',
             'join' => [
-                ['LEFT JOIN', \common\models\User::tableName() . ' AS U', 'FB.USER_ID=U.ID'],
+                ['INNER JOIN', User::tableName() . ' AS U', 'FB.USER_ID=U.ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'U.COUNTRY_ID=C.ID'],
             ],
             'page' => $this->page,
             'pageSize' => $this->pageSize,
         ]);
         foreach ($this->listData['list'] as $key => $value) {
-            //$userInfo = Info::baseInfoZh($value['USER_ID']);
-            //$this->listData['list'][$key] = array_merge($userInfo, $value);
             $this->listData['list'][$key]['DEAL_TYPE_NAME'] = DealType::getAllTypesForShow()[$value['DEAL_TYPE_ID']]['TYPE_NAME'] ?? '';
             $this->listData['list'][$key]['LAST_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$value['LAST_DEC_LV']]['LEVEL_NAME'] ?? '';
             $this->listData['list'][$key]['LAST_EMP_LV_NAME'] = Cache::getEmpLevelConfig()[$value['LAST_EMP_LV']]['LEVEL_NAME'] ?? '';
@@ -101,6 +102,9 @@ class FlowBonusList extends \common\libs\dataList\DataList implements DataListIn
                         'tag' => ['type' => 'success', 'size' => 'small', 'class' => 'no-border']
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'LAST_DEC_LV_NAME' => [
                     'header' => Yii::t('ctx', 'memberLevel'), // 会员级别
                     'headerOther' => [

+ 7 - 2
backendApi/modules/v1/models/lists/bonus/PerfMonthList.php

@@ -4,6 +4,7 @@ namespace backendApi\modules\v1\models\lists\bonus;
 use common\helpers\Cache;
 use common\helpers\user\Info;
 use common\models\CalcBonusBSDefault;
+use common\models\Countries;
 use common\models\PerfMonth;
 use common\models\User as modelUser;
 use common\libs\dataList\column\Price;
@@ -29,12 +30,13 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
     public function dataHandle()
     {
         $data = PerfMonth::lists($this->condition, $this->params, [
-            'select'=>'PM.*, U.USER_NAME, U.REAL_NAME,RU.USER_NAME REC_USER_NAME,RU.REAL_NAME REC_REAL_NAME',
+            'select'=>'PM.*, U.USER_NAME, U.REAL_NAME,RU.USER_NAME REC_USER_NAME,RU.REAL_NAME REC_REAL_NAME, C.NAME AS COUNTRY',
             'from' => PerfMonth::tableName().' AS PM',
             'join' => [
-                ['LEFT JOIN', modelUser::tableName() . ' AS U', 'PM.USER_ID=U.ID'],
+                ['INNER JOIN', modelUser::tableName() . ' AS U', 'PM.USER_ID=U.ID'],
                 ['LEFT JOIN', UserInfo::tableName() . ' AS UI', 'PM.USER_ID=UI.USER_ID'],
                 ['LEFT JOIN', modelUser::tableName() . ' AS RU', 'UI.REC_UID=RU.ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'U.COUNTRY_ID=C.ID'],
             ],
             'orderBy' => 'PM.CREATED_AT DESC, PM.ID DESC',
             'page' => $this->page,
@@ -74,6 +76,9 @@ class PerfMonthList extends \common\libs\dataList\DataList implements DataListIn
                         'width' => '150',
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'REC_USER_NAME' => [
                     'header' => Yii::t('ctx', 'recommenderNo'), // 推荐人编号
                     'headerOther' => [

+ 10 - 5
backendApi/modules/v1/models/lists/bonus/PerfOrderList.php

@@ -3,6 +3,7 @@ namespace backendApi\modules\v1\models\lists\bonus;
 
 use backendApi\modules\v1\models\Admin;
 use backendApi\modules\v1\models\User;
+use common\models\Countries;
 use common\models\User as modelUser;
 use common\helpers\Cache;
 use common\helpers\user\Info;
@@ -36,10 +37,11 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
     public function dataHandle()
     {
         $data = PerfOrder::lists($this->condition, $this->params, [
-            'select'=>'PO.*, U.USER_NAME, U.REAL_NAME',
+            'select'=>'PO.*, U.USER_NAME, U.REAL_NAME, C.NAME AS COUNTRY',
             'from' => PerfOrder::tableName().' AS PO',
             'join' => [
-                ['LEFT JOIN', modelUser::tableName() . ' AS U', 'PO.USER_ID=U.ID'],
+                ['INNER JOIN', modelUser::tableName() . ' AS U', 'PO.USER_ID=U.ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'U.COUNTRY_ID=C.ID'],
             ],
             'orderBy' => 'PO.CREATED_AT DESC, PO.ID DESC',
             'page' => $this->page,
@@ -63,7 +65,7 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                 'PERIOD_NUM' => [
                     'header' => Yii::t('ctx', 'payCycle'), // 结算期数
                     'headerOther' => [
-                        'width' => '140',
+                        'width' => '120',
                     ],
                 ],
                 'SN' => [
@@ -72,13 +74,13 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                         return "\t".$row['SN'];
                     },
                     'headerOther' => [
-                        'width' => '250',
+                        'width' => '220',
                     ],
                 ],
                 'DEC_TYPE' => [
                     'header' =>  Yii::t('ctx', 'saleType'), // 业绩单类型
                     'headerOther' => [
-                        'width' => '130',
+                        'width' => '150',
                     ],
                     'value' => function($row){
                         $decTypes = [
@@ -109,6 +111,9 @@ class PerfOrderList extends \common\libs\dataList\DataList implements DataListIn
                         'width' => '150',
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'LAST_REC_USER_NAME' => [
                     'header' => Yii::t('ctx', 'sponsorNoAtSettlement'), // 结算时开拓者编号
                     'headerOther' => [

+ 7 - 2
backendApi/modules/v1/models/lists/bonus/UserPerfList.php

@@ -3,6 +3,7 @@ namespace backendApi\modules\v1\models\lists\bonus;
 
 use common\helpers\Cache;
 use common\helpers\user\Info;
+use common\models\Countries;
 use common\models\PerfMonth;
 use common\models\User as modelUser;
 use common\libs\dataList\column\Price;
@@ -29,10 +30,11 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
     public function dataHandle()
     {
         $data = UserPerf::lists($this->condition, $this->params, [
-            'select'=>'UP.*, U.USER_NAME, U.REAL_NAME',
+            'select'=>'UP.*, U.USER_NAME, U.REAL_NAME, C.NAME AS COUNTRY',
             'from' => UserPerf::tableName().' AS UP',
             'join' => [
-                ['LEFT JOIN', modelUser::tableName() . ' AS U', 'UP.USER_ID=U.ID'],
+                ['INNER JOIN', modelUser::tableName() . ' AS U', 'UP.USER_ID=U.ID'],
+                ['INNER JOIN', Countries::tableName() . ' AS C', 'U.COUNTRY_ID=C.ID'],
             ],
             'orderBy' => 'UP.ID DESC',
             'page' => $this->page,
@@ -60,6 +62,9 @@ class UserPerfList extends \common\libs\dataList\DataList implements DataListInt
                         'width' => '200',
                     ],
                 ],
+                'COUNTRY' => [
+                    'header' => Yii::t('ctx', 'country'),
+                ],
                 'PV_PCS' => [
                     'header' => Yii::t('ctx', 'personalPerformance'), // 个人业绩
                     'headerOther' => [