113 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\admin\model\xilufitness\brand;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use think\Model;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Config extends Model
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    // 表名
							 | 
						||
| 
								 | 
							
								    protected $name = 'xilufitness_brand_config';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 自动写入时间戳字段
							 | 
						||
| 
								 | 
							
								    protected $autoWriteTimestamp = 'integer';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 定义时间戳字段名
							 | 
						||
| 
								 | 
							
								    protected $createTime = false;
							 | 
						||
| 
								 | 
							
								    protected $updateTime = false;
							 | 
						||
| 
								 | 
							
								    protected $deleteTime = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 追加属性
							 | 
						||
| 
								 | 
							
								    protected $append = [
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 获取配置栏目
							 | 
						||
| 
								 | 
							
								     * @param int $brand_id 品牌id
							 | 
						||
| 
								 | 
							
								     * @return array $list
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function getNavBar(int $brand_id): array {
							 | 
						||
| 
								 | 
							
								        $navBar = $this->where(['brand_id' => 0, 'name' => 'configgroup'])->value('value');
							 | 
						||
| 
								 | 
							
								        $list = [];
							 | 
						||
| 
								 | 
							
								        if(!empty($navBar)){
							 | 
						||
| 
								 | 
							
								            $navBar = json_decode($navBar,true);
							 | 
						||
| 
								 | 
							
								            if(empty($navBar)){
							 | 
						||
| 
								 | 
							
								                $navBar = ['mini' => 'Mini'];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            foreach ($navBar as $key => $value) {
							 | 
						||
| 
								 | 
							
								                $settingList = $this->getDefaultSettingByData($brand_id,$key);
							 | 
						||
| 
								 | 
							
								                if(empty($settingList)){
							 | 
						||
| 
								 | 
							
								                    $settingList = $this->getDefaultSettingByType($key);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                $list[$key] = [
							 | 
						||
| 
								 | 
							
								                    'name' => $key,
							 | 
						||
| 
								 | 
							
								                    'title' =>  __($value),
							 | 
						||
| 
								 | 
							
								                    'active' => $key == 'mini' ? 'mini' : '',
							 | 
						||
| 
								 | 
							
								                    'list' => $settingList
							 | 
						||
| 
								 | 
							
								                ];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $list;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 默认配置项
							 | 
						||
| 
								 | 
							
								     * @param string $group_type 类型
							 | 
						||
| 
								 | 
							
								     * @return array $list;
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private function getDefaultSettingByType(string $group_type = 'mini'): array {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if($group_type == 'mini') {
							 | 
						||
| 
								 | 
							
								            $list[$group_type] = [
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_appid', 'title' => __('mini_appid') ,'value' => '', 'type' => 'string', 'tip' =>'', 'rule' => 'required', 'placeholder' => __('Please input anything')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_appsecret', 'title' => __('mini_appsecret') ,'value' => '', 'type' => 'string', 'tip' => '', 'rule' => 'required', 'placeholder' => __('Please input anything')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_mch_id', 'title' => __('mini_mch_id') ,'value' => '', 'type' => 'string', 'tip' => '', 'rule' => 'required', 'placeholder' => __('Please input anything')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_mch_key', 'title' => __('mini_mch_key') ,'value' => '', 'type' => 'string', 'tip' => '', 'rule' => 'required', 'placeholder' => __('Please input anything')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_mch_p12', 'title' => __('mini_mch_p12') ,'value' => '', 'type' => 'file', 'tip' => '', 'rule' => '','placeholder' => __('Please upload file')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_mch_pem_key', 'title' => __('mini_mch_pem_key') ,'value' => '', 'type' => 'file', 'tip' => '', 'rule' => '', 'placeholder' => __('Please upload file')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_mch_pem_cert', 'title' => __('mini_mch_pem_cert') ,'value' => '', 'type' => 'file', 'tip' => '', 'rule' => '', 'placeholder' => __('Please upload file')],
							 | 
						||
| 
								 | 
							
								                ['name' => 'mini_ios_switch', 'title' => __('mini_ios_switch') ,'value' => '', 'type' => 'switch', 'tip' => '', 'rule' => ''],
							 | 
						||
| 
								 | 
							
								            ];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $list[$group_type];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 是否已保存配置
							 | 
						||
| 
								 | 
							
								     * @param int $brand_id 品牌id
							 | 
						||
| 
								 | 
							
								     * @param string $group_type 类型
							 | 
						||
| 
								 | 
							
								     * @return mixed $rows;
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private function getDefaultSettingByData(int $brand_id,string $group_type = 'mini'): array {
							 | 
						||
| 
								 | 
							
								        $rows = $this
							 | 
						||
| 
								 | 
							
								            ->where(['brand_id' => $brand_id , 'group' => $group_type])
							 | 
						||
| 
								 | 
							
								            ->field(['name','title','value','type','tip','rule'])
							 | 
						||
| 
								 | 
							
								            ->select();
							 | 
						||
| 
								 | 
							
								        return !empty($rows) ? collection($rows)->toArray() : [];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 生成配置文件
							 | 
						||
| 
								 | 
							
								     * @param array $config 配置信息
							 | 
						||
| 
								 | 
							
								     * @param int $brand_id 品牌商ID
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function createConfigFile(array $config,int $brand_id): bool {
							 | 
						||
| 
								 | 
							
								        //如果没有配置权限无法进行修改
							 | 
						||
| 
								 | 
							
								        if (!\app\admin\library\Auth::instance()->check('xilufitness/brand/index/config')) {
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $configFile = CONF_PATH . 'extra' . DS . 'xilubrand.php';
							 | 
						||
| 
								 | 
							
								        if(file_exists($configFile)){
							 | 
						||
| 
								 | 
							
								            $brandConfig = config('xilubrand');
							 | 
						||
| 
								 | 
							
								            $config = array_merge($brandConfig[$brand_id],$config);
							 | 
						||
| 
								 | 
							
								            $brandConfig[$brand_id] = $config;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            $brandConfig[$brand_id] = $config;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        file_put_contents($configFile,
							 | 
						||
| 
								 | 
							
								        '<?php' . "\n\nreturn " . var_export_short($brandConfig) . ";\n");
							 | 
						||
| 
								 | 
							
								        return  true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |