Ver Fonte

feat: EK-856: 管理员增加“Country”属性.

kevinElken há 10 meses atrás
pai
commit
cc71050008

+ 25 - 2
backendApi/modules/v1/controllers/AdminController.php

@@ -8,6 +8,7 @@
 namespace backendApi\modules\v1\controllers;
 
 use backendApi\modules\v1\models\Admin;
+use backendApi\modules\v1\models\AdminCountry;
 use backendApi\modules\v1\models\AdminForm;
 use backendApi\modules\v1\models\AdminRoleForm;
 use common\helpers\Cache;
@@ -15,6 +16,7 @@ use common\helpers\Date;
 use common\helpers\Form;
 use common\helpers\Log;
 use common\helpers\Tool;
+use common\models\Countries;
 use Yii;
 use backendApi\modules\v1\models\AdminRole;
 use backendApi\modules\v1\models\User;
@@ -23,6 +25,8 @@ use yii\helpers\Json;
 class AdminController extends BaseController
 {
     public $modelClass = User::class;
+    public $countiesModelClass = Countries::class;
+
     public function behaviors() {
         $behaviors = parent::behaviors();
         //$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
@@ -61,9 +65,15 @@ class AdminController extends BaseController
                 ['LEFT JOIN', AdminRole::tableName().' AS AR', 'A.ROLE_ID=AR.ID'],
                 ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'ADMC.ID=A.CREATE_ADMIN'],
                 ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'ADMU.ID=A.UPDATE_ADMIN'],
+
             ],
             'orderBy' => 'A.CREATED_AT ASC',
         ]);
+
+        foreach ($data['list'] as &$admin) {
+            $admin['countryId'] = AdminCountry::find()->select('COUNTRY_ID')->where(['ADMIN_ID' => $admin['ID']])->column();
+        }
+
         return static::notice($data);
     }
 
@@ -99,10 +109,23 @@ class AdminController extends BaseController
                 // Log::adminHandle('编辑管理员:'.$result->ADMIN_NAME);
             });
         }
-        $oneData = Admin::findOneAsArray(['ID'=>$id]);
+
+        $oneData = Admin::findOneAsArray(['ID' => $id]);
+        $adminCountry = AdminCountry::find()->select('COUNTRY_ID')->where(['ADMIN_ID' => $id])->column();
         // 获取全部管理员角色
         $adminRoles = Cache::getAdminRole();
-        return static::notice(['oneData'=>['adminName'=>$oneData['ADMIN_NAME'],'realName'=>$oneData['REAL_NAME'],'remark'=>$oneData['REMARK'],'isEnable'=>$oneData['IS_ENABLE']?true:false,'isModifyPassword'=>$oneData['IS_MODIFY_PASSWORD']?true:false,'bindIp'=>$oneData['BIND_IP'],'roleId'=>$oneData['ROLE_ID']], 'adminRoles'=>$adminRoles]);
+        return static::notice([
+            'oneData' => [
+                'adminName' => $oneData['ADMIN_NAME'],
+                'realName' => $oneData['REAL_NAME'],
+                'remark' => $oneData['REMARK'],
+                'isEnable' => (bool)$oneData['IS_ENABLE'],
+                'isModifyPassword' => (bool)$oneData['IS_MODIFY_PASSWORD'],
+                'bindIp' => $oneData['BIND_IP'],
+                'roleId' => $oneData['ROLE_ID']],
+                'adminRoles' => $adminRoles,
+                'countryId' => $adminCountry,
+            ]);
     }
 
     /**

+ 47 - 0
backendApi/modules/v1/models/AdminCountry.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace backendApi\modules\v1\models;
+
+use common\components\ActiveRecord;
+
+/**
+ * This is the model class for table "{{%ADMIN_COUNTRY}}".
+ *
+ * @property string $ID
+ * @property string $ADMIN_ID 管理ID
+ * @property string $COUNTRY_ID 国家ID
+ */
+class AdminCountry extends ActiveRecord
+{
+    /**
+     * @inheritdoc
+     */
+    public static function tableName()
+    {
+        return '{{%ADMIN_COUNTRY}}';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['ADMIN_ID', 'COUNTRY_ID',], 'required'],
+            [['ID', 'COUNTRY_ID'], 'string', 'max' => 32],
+            [['ID'], 'unique'],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'ID' => 'ID',
+            'ADMIN_ID' => '管理ID',
+            'COUNTRY_ID' => '国家ID',
+        ];
+    }
+}

+ 22 - 3
backendApi/modules/v1/models/AdminForm.php

@@ -23,6 +23,7 @@ class AdminForm extends Model
     public $surePassword;
     public $roleId;
     public $lang;
+    public $countryId;
 
     public function init() {
         parent::init();
@@ -38,7 +39,7 @@ class AdminForm extends Model
     {
         return [
             [['id', 'adminName', 'realName', 'oldPassword', 'password', 'surePassword', 'roleId', 'remark', 'isEnable', 'isModifyPassword', 'bindIp'], 'trim'],
-            [['id', 'adminName', 'realName', 'roleId'], 'required'],
+            [['id', 'adminName', 'realName', 'roleId', 'countryId'], 'required'],
             [['password', 'surePassword'], 'required', 'on'=>['add', 'changePassword', 'noLoginModifyPassword']],
             [['adminName', 'oldPassword'], 'required', 'on'=>['noLoginModifyPassword']],
             [['adminName'], 'unique', 'targetClass'=>Admin::class, 'targetAttribute'=>'ADMIN_NAME', 'on'=>['add']],
@@ -54,8 +55,8 @@ class AdminForm extends Model
     {
         $parentScenarios =  parent::scenarios();
         $customScenarios = [
-            'add' => ['adminName', 'realName', 'password', 'surePassword', 'roleId', 'remark', 'isEnable', 'isModifyPassword', 'bindIp'],
-            'edit' => ['id', 'password', 'surePassword', 'roleId', 'realName', 'remark', 'isEnable', 'isModifyPassword', 'bindIp'],
+            'add' => ['adminName', 'realName', 'password', 'surePassword', 'roleId', 'remark', 'isEnable', 'isModifyPassword', 'bindIp', 'countryId'],
+            'edit' => ['id', 'password', 'surePassword', 'roleId', 'realName', 'remark', 'isEnable', 'isModifyPassword', 'bindIp', 'countryId'],
             'changePassword' => ['password', 'surePassword'],
             'noLoginModifyPassword' => ['adminName', 'oldPassword', 'password', 'surePassword'],
             'changeLanguage' => ['adminName', 'lang'],
@@ -77,6 +78,7 @@ class AdminForm extends Model
             'password' => '密码',
             'surePassword' => '确认密码',
             'roleId' => '角色',
+            'countryId' => '国家',
         ];
     }
 
@@ -173,6 +175,14 @@ class AdminForm extends Model
                 'userName' => $model->ADMIN_NAME,
                 'remark' => $this->remark,
             ]);
+
+            // 国家
+            foreach ($this->countryId as $country) {
+                $adminCountry = new AdminCountry();
+                $adminCountry->ADMIN_ID = $model->ID;
+                $adminCountry->COUNTRY_ID = $country;
+                $adminCountry->save();
+            }
         } elseif($this->scenario == 'edit') {
             $this->adminOperateLogger->afterUpdate($model);
             $this->adminOperateLogger->clean()->save([
@@ -180,6 +190,15 @@ class AdminForm extends Model
                 'userName' => $model->ADMIN_NAME,
                 'remark' => $this->remark,
             ]);
+
+            (new AdminCountry())->deleteAll(['ADMIN_ID' => $model->ID]);
+            // 国家
+            foreach ($this->countryId as $country) {
+                $adminCountry = new AdminCountry();
+                $adminCountry->ADMIN_ID = $model->ID;
+                $adminCountry->COUNTRY_ID = $country;
+                $adminCountry->save();
+            }
         } elseif($this->scenario == 'noLoginModifyPassword') {
             $this->adminOperateLogger->clean()->save([
                 'optType' => '不登录重置密码',