213 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace app\controller\manager;
 | 
						|
 | 
						|
use app\model\CommentRule;
 | 
						|
use Exception;
 | 
						|
use think\exception\ValidateException;
 | 
						|
use think\facade\Config as CConfig;
 | 
						|
use think\response\Json;
 | 
						|
 | 
						|
/**
 | 
						|
 * 额外配置
 | 
						|
 * Class Config
 | 
						|
 * @package app\controller\manager
 | 
						|
 */
 | 
						|
class Config extends Base
 | 
						|
{
 | 
						|
    private string $extraPath = '';
 | 
						|
 | 
						|
    protected function initialize()
 | 
						|
    {
 | 
						|
        parent::initialize();
 | 
						|
 | 
						|
        $this->extraPath = config_path() . 'extra/';
 | 
						|
        if (!is_dir($this->extraPath)) {
 | 
						|
            if (is_writable(config_path())) {
 | 
						|
                mkdir($this->extraPath, 0777, true);
 | 
						|
            } else {
 | 
						|
                halt('请联系系统管理人员配置文件夹读写权限!请添加'.$this->extraPath.'文件夹的读写权限');
 | 
						|
            }
 | 
						|
        } elseif (!is_writable($this->extraPath)) {
 | 
						|
            halt('请联系系统管理人员配置文件夹读写权限!请添加'.$this->extraPath.'文件夹的读写权限');
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function other()
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $data = input("post.");
 | 
						|
            unset($data['_token']);
 | 
						|
            $php  = var_export($data, true);
 | 
						|
            file_put_contents($this->extraPath . 'other.php', '<?php' . PHP_EOL . 'return ' . $php . ';');
 | 
						|
            return $this->json();
 | 
						|
        } else {
 | 
						|
            CConfig::load('extra/other', 'other');
 | 
						|
            $this->data['item'] = config('other');
 | 
						|
            return $this->view();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function wechat()
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
 | 
						|
            $data = input("post.");
 | 
						|
 | 
						|
            unset($data['_token']);
 | 
						|
            $php  = var_export($data, true);
 | 
						|
            file_put_contents($this->extraPath . 'wechat.php', '<?php' . PHP_EOL . 'return ' . $php . ';');
 | 
						|
            return $this->json();
 | 
						|
        } else {
 | 
						|
            CConfig::load('extra/wechat', 'wechat');
 | 
						|
            $this->data['item'] = config('wechat');
 | 
						|
            return $this->view();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function alipay()
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $data = input("post.");
 | 
						|
            unset($data['_token']);
 | 
						|
            $php  = var_export($data, true);
 | 
						|
            file_put_contents($this->extraPath . 'alipay.php', '<?php' . PHP_EOL . 'return ' . $php . ';');
 | 
						|
            return $this->json();
 | 
						|
        } else {
 | 
						|
            CConfig::load('extra/alipay', 'alipay');
 | 
						|
            $this->data['item'] = config('alipay');
 | 
						|
            return $this->view();
 | 
						|
        }
 | 
						|
    }
 | 
						|
    public function commentRule()
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $page = input('param.page/d', 1);
 | 
						|
            $size = input('param.size/d', 10);
 | 
						|
            $items = CommentRule::findList([],[], $page, $size);
 | 
						|
            return $this->json(0, 'ok', $items);
 | 
						|
        }
 | 
						|
        return $this->view();
 | 
						|
    }
 | 
						|
 | 
						|
    public function delCommentRule()
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $ids = input('post.ids/a', []);
 | 
						|
            if (empty($ids)) {
 | 
						|
                $ids[] = input('post.id/d');
 | 
						|
            }
 | 
						|
            CommentRule::deleteByIds($ids);
 | 
						|
            return $this->json();
 | 
						|
        }
 | 
						|
        return $this->json(4001, '非法请求!');
 | 
						|
    }
 | 
						|
    public function addCommentRule()
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $item = input('post.item');
 | 
						|
 | 
						|
            $validate = $this->validateByApi($item, [
 | 
						|
                'rule|规则'     => 'require',
 | 
						|
                'state|状态'      => 'require',
 | 
						|
            ]);
 | 
						|
 | 
						|
            if ($validate !== true) {
 | 
						|
                return $validate;
 | 
						|
            }
 | 
						|
 | 
						|
            try {
 | 
						|
                $item['create_time'] =  date('Y-m-d H:i:s');
 | 
						|
                CommentRule::create($item);
 | 
						|
                return $this->json();
 | 
						|
            } catch (ValidateException $e) {
 | 
						|
                return $this->json(4001, $e->getError());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $this->view();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * 单个字段编辑
 | 
						|
     *
 | 
						|
     * @return Json
 | 
						|
     * @throws Exception
 | 
						|
     */
 | 
						|
    public function modifyCommentRule(): Json
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $item     = input('post.');
 | 
						|
            $validate = $this->validateByApi($item, [
 | 
						|
                'field' => 'require',
 | 
						|
                'value' => 'require',
 | 
						|
            ]);
 | 
						|
 | 
						|
            if ($validate !== true) {
 | 
						|
                return $validate;
 | 
						|
            }
 | 
						|
 | 
						|
            if (!$info = CommentRule::findById($item['id'])) {
 | 
						|
                return $this->json(4001, '记录不存在');
 | 
						|
            }
 | 
						|
 | 
						|
            $update = [$item['field'] => $item['value']];
 | 
						|
 | 
						|
            try {
 | 
						|
                $info->save($update);
 | 
						|
                return $this->json();
 | 
						|
            } catch (ValidateException $e) {
 | 
						|
                return $this->json(4001, $e->getError());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $this->json(4000, '非法请求');
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    public function __call($name, $args)
 | 
						|
    {
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            try {
 | 
						|
                $data = input("post.");
 | 
						|
                $php = var_export($data, true);
 | 
						|
                file_put_contents(config_path().'extra/'.$name.'.php', '<?php'.PHP_EOL.'return '.$php.';');
 | 
						|
                return $this->json();
 | 
						|
            } catch (Exception $e) {
 | 
						|
                return $this->json(4001, $e->getMessage());
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            CConfig::load('extra/'.$name, $name);
 | 
						|
            $this->data['item']   = config($name);
 | 
						|
            $this->data['action'] = $name;
 | 
						|
            return $this->view('manager/config/'.$name);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /* 分配比例*/
 | 
						|
    public function distributionProportion(){
 | 
						|
        if ($this->request->isPost()) {
 | 
						|
            $data = input("post.");
 | 
						|
            unset($data['_token']);
 | 
						|
            $validate = $this->validateByApi($data, [
 | 
						|
                'agency' => 'require|number',
 | 
						|
                'admin' => 'require|number',
 | 
						|
                'consumer' => 'require|number',
 | 
						|
            ]);
 | 
						|
 | 
						|
            if ($validate !== true) {
 | 
						|
                return $validate;
 | 
						|
            }
 | 
						|
            $total = $data['agency'] + $data['admin'] + $data['consumer'];
 | 
						|
            if ($total != 100) {
 | 
						|
                return $this->json(5002,"分配比例总和不等于100");
 | 
						|
            }
 | 
						|
            $php  = var_export($data, true);
 | 
						|
            file_put_contents($this->extraPath . 'distribution_proportion.php', '<?php' . PHP_EOL . 'return ' . $php . ';');
 | 
						|
            return $this->json();
 | 
						|
        } else {
 | 
						|
            CConfig::load('extra/distribution_proportion', 'distributionProportion');
 | 
						|
            $this->data['item'] = config('distributionProportion');
 | 
						|
            return $this->view();
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |