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; | ||
|  |     } | ||
|  | } |