SystemSettingController.php 9.95 KB
<?php

namespace app\ht\modules\setting\controllers;

use Yii;
use yii\base\Exception;
use yii\data\Pagination;
use app\ht\controllers\BaseController;
use common\helpers\MinaHelper;
use common\helpers\MinaDDBHelper;
use common\helpers\UserMPHelper;
use common\helpers\WxHelper;
use common\models\RegionFeeSetting  as RegionFeeSettingModel;
use common\models\SysSetting        as SysSettingModel;
use common\models\WxMchSetting      as WxMchSettingModel;
use stdClass;
use function trim;

/**
 * 系统设置
 * Class SystemSettingController
 * @package app\ht\modules\setting\controllers
 */
class SystemSettingController extends BaseController
{
    public function actionDefault()
    {
        $settings = SysSettingModel::findOne(1);

        return $this->render('default', [
            'settings' => $settings
        ]);
    }

    /**
     * AJAX
     * 功能保存
     */
    public function actionSave()
    {
        $result = new stdClass();
        $result->success = false;
        $result->code = null;
        $result->datas = [];

        if (false == $this->request->isPost) {
            return $this->renderJson($result);
        }

        $post = $this->request->post();

        $settings = SysSettingModel::findOne(1);
        $settings->is_withdraw_auto_review              = isset($post['is_withdraw_auto_review']) ? 1 : 0;
        $settings->qrcode_domain                        = trim($post['qrcode_domain']);
        $settings->jiwo_qrcode_domain                   = trim($post['jiwo_qrcode_domain']);
        $settings->commission_ratio                     = (float)$post['commission_ratio'];
        $settings->parts_commission_ratio               = (float)$post['parts_commission_ratio'];
        $settings->order_polling_interval               = (int)$post['order_polling_interval'];
        $settings->user_order_limit_per_day             = (int)$post['user_order_limit_per_day'];
        $settings->user_cancel_order_limit_per_day      = (int)$post['user_cancel_order_limit_per_day'];
        $settings->gurantee_time                        = (int)$post['gurantee_time'];
        $settings->appeal_door_hours                    = (int)$post['appeal_door_hours'];
        $settings->appeal_deal_hours                    = (int)$post['appeal_deal_hours'];
        $settings->standard_door_hours                  = (int)$post['standard_door_hours'];
        $settings->disclaim_cancel_time                 = (int)$post['disclaim_cancel_time'];
        $settings->is_pay_test_mode                     = isset($post['is_pay_test_mode']) ? 1 : 0;
        $settings->service_phone                        = trim($post['service_phone']);
        $settings->is_more_device_enable                = isset($post['is_more_device_enable']) ? 1 : 0;
        $settings->is_notice_enable                     = isset($post['is_notice_enable']) ? 1 : 0;
        $settings->can_close_notice                     = isset($post['can_close_notice']) ? 1 : 0;
        $settings->is_user_select_limit_device_enable   = isset($post['is_user_select_limit_device_enable']) ? 1 : 0;
        $settings->realname_auth_album_enable           = isset($post['realname_auth_album_enable']) ? 1 : 0;
        $settings->refund_door_fee                      = isset($post['refund_door_fee']) ? 1 : 0;
        $settings->is_save_dispatch_order_record        = isset($post['is_save_dispatch_order_record']) ? 1 : 0;

        if ($settings->save()) {
            $result->success = true;
            SysSettingModel::removeCache();
        }

        return $this->renderJson($result);
    }

    /** 设置用的
     * @return string
     */
    public function actionRegionFee()
    {
        $request = Yii::$app->request;

        $regionFeeSettingModel = RegionFeeSettingModel::find();
        $regionFeeSettingModel->select(['region_fee_setting.*']);
        $regionFeeSettingModel->asArray();

        $totalCount = $regionFeeSettingModel->count();
        $get = array();

        /**
         * 分页处理
         */
        $pageSize = $request->get("pageSize") ? (int) $request->get("pageSize") : 20;
        $pages = new Pagination(['totalCount' => $totalCount, 'pageSize' => $pageSize]);

        $rList = $regionFeeSettingModel
                    ->offset($pages->offset)
                    ->orderBy("created_at desc")
                    ->limit($pages->limit)
                    ->all();
        /**
         * 渲染模板
         */
        return $this->render('regionFee', [
            'rList' => $rList,
            'pages' => $pages,
            'get'   => $get,
        ]);
    }

    /** 添加设置
     * @return string
     */
    public function actionAddRegionFee()
    {
        $req = Yii::$app->request;
        $region = $req->post('region');
        $door_fee = $req->post('door_fee');
        $man_hour_fee = $req->post('man_hour_fee');
        $pick_order_radius = $req->post('pick_order_radius');
        $dispatch_order_radius = $req->post('dispatch_order_radius');

        $e = new stdClass();
        $e->success = false;
        $regionFeeModel = RegionFeeSettingModel::findOne(['city' => $region]);
        if ($regionFeeModel) {
            $e->success = false;
            $e->error = '已经有该城市的设置了,无须重复设置';
            return $this->renderJson($e);
        }

        $regionFeeModel = new RegionFeeSettingModel();
        $regionFeeModel->city = $region;
        $regionFeeModel->door_fee = $door_fee;
        $regionFeeModel->man_hour_fee = $man_hour_fee;
        $regionFeeModel->pick_order_radius = $pick_order_radius;
        $regionFeeModel->dispatch_order_radius = $dispatch_order_radius;
        $regionFeeModel->save();
        $e->success = true;

        return $this->renderJson($e);
    }

    /**
     * @return string
     */
    public function actionUpdateRegionFee()
    {
        $req = Yii::$app->request;
        $id = $req->post('id');
        $region = $req->post('region');
        $door_fee = $req->post('door_fee');
        $man_hour_fee = $req->post('man_hour_fee');
        $pick_order_radius = $req->post('pick_order_radius');
        $dispatch_order_radius = $req->post('dispatch_order_radius');

        $e = new stdClass();
        $e->success = false;
        $regionFeeModel = RegionFeeSettingModel::findOne($id);
        if (!$regionFeeModel) {
            $e->success = false;
            $e->error = '未找到该设置';
            return $this->renderJson($e);
        }

        if ($regionFeeModel->city != $region) {
            $cityNameSettingModel = RegionFeeSettingModel::findOne(['city' => $region]);
            if ($cityNameSettingModel) {
                $e->success = false;
                $e->error = '已经存在该城市,请改为其他城市名';
                return $this->renderJson($e);
            }
        }

        $regionFeeModel->city = $region;
        $regionFeeModel->door_fee = $door_fee;
        $regionFeeModel->man_hour_fee = $man_hour_fee;
        $regionFeeModel->pick_order_radius = $pick_order_radius;
        $regionFeeModel->dispatch_order_radius = $dispatch_order_radius;
        $regionFeeModel->save();
        $e->success = true;

        return $this->renderJson($e);
    }

    /**
     * @return string
     */
    public function actionDelRegionFee()
    {
        $req = Yii::$app->request;
        $id = $req->post('id');

        $e = new stdClass();
        $e->success = false;
        $regionFeeModel = RegionFeeSettingModel::findOne($id);
        if (!$regionFeeModel) {
            $e->success = false;
            $e->error = '未找到该设置';
            return $this->renderJson($e);
        }

        RegionFeeSettingModel::deleteAll(['id'=>$id]);
        $e->success = true;

        return $this->renderJson($e);
    }

    /**
     * 商户号预警设置
     * @return string
     */
    public function actionMchSetting()
    {
        $setting = WxMchSettingModel::findOne(1);

        $data = new stdClass();

        $data->mina_warning_balance = $setting->mina_warning_balance;
        $data->mina_ddb_warning_balance = $setting->mina_ddb_warning_balance;
        $data->wx_warning_balance = $setting->wx_warning_balance;
        $data->usermp_warning_balance = $setting->usermp_warning_balance;

        $data->mina_balance = $setting->mina_balance;
        $data->mina_ddb_balance = $setting->mina_ddb_balance;
        $data->wx_balance = $setting->wx_balance;
        $data->usermp_balance = $setting->usermp_balance;

        $data->mina_mch_id = MinaHelper::getMchId();
        $data->mina_ddb_mch_id = MinaDDBHelper::getMchId();
        $data->wx_mch_id = WxHelper::getMchId();
        $data->usermp_mch_id = UserMPHelper::getMchId();

        return $this->render('mch-setting', ['data' => $data]);
    }

    /**
     * 保存商户号余额预警设置
     */
    public function actionSaveMchSetting()
    {
        $req = Yii::$app->request;
        $e = new stdClass();
        $e->success = false;

        try {
            $mina_warning_balance = $req->post('mina_warning_balance');
            $mina_ddb_warning_balance = $req->post('mina_ddb_warning_balance');
            $wx_warning_balance = $req->post('wx_warning_balance');
            $usermp_warning_balance = $req->post('usermp_warning_balance');

            $data = WxMchSettingModel::findOne(1);
            if (empty($data)) {
                $data = new WxMchSettingModel();
            }
            $data->mina_warning_balance = $mina_warning_balance;
            $data->mina_ddb_warning_balance = $mina_ddb_warning_balance;
            $data->wx_warning_balance = $wx_warning_balance;
            $data->usermp_warning_balance = $usermp_warning_balance;
            $result = $data->save();
            if ($result) {
                $e->success = true;
                $e->error = '设置成功';
                return $this->renderJson($e);
            } else {
                $e->error = '保存失败';
                return $this->renderJson($e);
            }
        } catch (Exception $e) {
            $e->error = '保存异常';
            return $this->renderJson($e);
        }
    }
}