ConfigController.php 4.7 KB
<?php

namespace app\ht\modules\system\controllers;

use Yii;
use app\ht\controllers\BaseController;
use common\models\SystemConfig  as SystemConfigModel;
use common\models\SysUser       as SysUserModel;
use function json_encode;
use function time;

class ConfigController extends BaseController
{
    /**
     * 设置接收通知人员
     */
    public function actionSetConfig()
    {
        $datas = self::getData();

        return $this->render('set_config', [
            'model'             => $datas['model']
        ]);
    }

    /**
     * 执行设置接收通知人员
     */
    public function actionDoSetConfig()
    {
        $post = Yii::$app->request->post();
        $setModel =  SystemConfigModel::findOne(['config_key' => SystemConfigModel::APPEAL_NOTICE_MEMBERS]);
        if (!empty($post['engineers'])) {
            $phones = [];
            foreach ($post['engineers'] as $engineerPhone) {
                $phones[] = ['phone' => $engineerPhone];
            }
            if ($phones) {
                if (empty($setModel)) {
                    $setModel = new SystemConfigModel();
                    $setModel->config_key = SystemConfigModel::APPEAL_NOTICE_MEMBERS;
                }
                $setModel->values = json_encode($phones);
                $setModel->updated_at = time();
                if ($setModel->save()) {
                    Yii::$app->session->setFlash('success', '设置成功');
                } else {
                    Yii::$app->session->setFlash('error', '设置失败');
                }
            }
        }

        $datas = self::getData();

        return $this->render('set_config', [
            'model'             => $datas['model'],
            'engineers'         => $datas['engineers'],
            'selectedEngineers' => $datas['selectedEngineers']
        ]);
    }

    /**
     * 设置接收通知人员
     */
    public function actionSetCustomerService()
    {
        $datas = self::getSysUserData();

        return $this->render('set_customer_service', [
            'model'             => $datas['model'],
            'customers'         => $datas['customers'],
            'selectedCustomers' => $datas['selectedCustomers']
        ]);
    }

    /**
     * 执行设置客服人员
     */
    public function actionDoSetCustomerService()
    {
        $post = Yii::$app->request->post();
        $setModel =  SystemConfigModel::findOne(['config_key' => SystemConfigModel::DISPATCH_CUSTOMER_SERVICE]);
        if (!empty($post['customers'])) {
            $phones = [];
            foreach ($post['customers'] as $customerID) {
                $phones[] = ['sys_user_id' => $customerID];
            }
            if ($phones) {
                if (empty($setModel)) {
                    $setModel = new SystemConfigModel();
                    $setModel->config_key = SystemConfigModel::DISPATCH_CUSTOMER_SERVICE;
                }
                $setModel->values = json_encode($phones);
                $setModel->updated_at = time();
                if ($setModel->save()) {
                    Yii::$app->session->setFlash('success', '设置成功');
                } else {
                    Yii::$app->session->setFlash('error', '设置失败');
                }
            }
        }

        $datas = self::getSysUserData();

        return $this->render('set_customer_service', [
            'model'             => $datas['model'],
            'customers'         => $datas['customers'],
            'selectedCustomers' => $datas['selectedCustomers']
        ]);
    }

    /**
     * 获取数据
     * @return array
     */
    private function getData()
    {
        $model = SystemConfigModel::findOne(['config_key' => SystemConfigModel::APPEAL_NOTICE_MEMBERS]);
        return [
            'model'             => $model
        ];
    }

    /**
     * 获取数据
     * @return array
     */
    private function getSysUserData()
    {
        $model = SystemConfigModel::findOne(['config_key' => SystemConfigModel::DISPATCH_CUSTOMER_SERVICE]);

        $selectedCustomers = isset($model->values) && $model->values ? json_decode($model->values, true) : [];
        $selectSysUsers=[];
        foreach ($selectedCustomers as $e) {
            $selectSysUsers[] = $e['sys_user_id'];
        }
        $selectedSysUsers = $selectSysUsers;
        $customers = SysUserModel::find()
            ->alias("su")
            ->select(["sup.mobile", "sup.realname", "su.id as sys_user_id", "su.username"])
            ->leftJoin("sys_user_profile sup", "su.id = sup.sys_user_id")
            ->asArray()->all();

        return [
            'model'             => $model,
            'customers'         => $customers,
            'selectedCustomers' => $selectedSysUsers
        ];
    }
}