123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- <?php
- namespace app\common\model\base\config;
- use app\common\model\Common;
- use think\model\concern\SoftDelete;
- class Systemconfig extends Common
- {
- use SoftDelete;
- protected $name = "system_configs";
- protected $pk = "config_id";
- protected $createTime = 'create_at';
- protected $updateTime = 'update_at';
- protected $deleteTime = 'delete_at';
- protected $schema = [
- 'config_id' => 'int',
- 'name' => 'varchar',
- 'key' => 'varchar',
- 'value' => 'varchar',
- 'status' => 'tinyint',
- 'group_code' => 'varchar',
- 'is_developer' => 'tinyint',
- 'type' => 'varchar',
- 'content' => 'json',
- 'tip' => 'varchar',
- 'weigh' => 'int',
- 'rule' => 'json',
- 'group_name' => 'varchar',
- 'extra_rule' => 'json',
- 'width' => 'varchar',
- 'height' => 'varchar',
- 'create_at' => 'datetime',
- 'update_at' => 'datetime',
- 'delete_at' => 'datetime',
- ];
- protected $json = ['content','extra_rule'];
- protected $jsonAssoc = true;
-
- protected $append = [
- 'status_txt',
- 'type_txt',
- 'content_txt',
- 'extra_rule_txt',
- ];
-
- static public function getTypeList()
- {
- $typeList = [
- 'string' => '单行文本',
- 'text' => '多行文本',
- 'editor' => '编辑器',
- 'number' => '数字',
- 'date' => '日期',
- 'time' => '时间',
- 'datetime' => '日期时间',
- 'datetimerange' => '日期时间区间',
- 'select' => '列表',
- 'selects' => '列表(多选)',
- 'image' => '单图',
- 'images' => '多图',
- 'file' => '单文件',
- 'files' => '多文件',
- 'switch' => '开关',
- 'checkbox' => '复选',
- 'radio' => '单选',
- 'color' => '颜色',
- 'json' => 'JSON数组',
- 'slider' => '滑块',
- ];
- return $typeList;
- }
-
- static public function getStatusList()
- {
- return [1=>"可用",2=>"不可用"];
- }
- public function getStatusTxtAttr($value,$row)
- {
- $statusList = $this->getStatusList();
- return $statusList[$value ?? $row['status']] ?? '';
- }
- public function getTypeTxtAttr($value,$row)
- {
- $typeList = self::getTypeList();
- $value = $value ?? $row['type'] ?? '';
- return $typeList[$value] ?? '';
- }
-
- public function setValueAttr($value,$data)
- {
- if(!empty($value)){
- switch($data['type']){
- case 'selects':
- case 'checkbox':
- $value = implode(',',$value);break;
- case 'file':
- case 'image':
- $value = str_replace(WEBURL,'',$value);break;
- case 'files':
- case 'images':
- $value = str_replace(WEBURL,'',implode(',',$value));break;
- case 'datetimerange':
- $tmp = ['start'=>$value[0],'end'=>$value[1]];
- $value = json_encode($tmp);
- break;
- case 'json':
- $value = json_encode($value);break;
- case 'slider':
- $value = $data['extra_rule']['range']!='false'?json_encode($value):$value;
- break;
- default:break;
- }
- return $value;
- }
- return '';
- }
-
- public function getValueAttr($value,$data)
- {
- if($data['type']){
- switch($data['type']){
- case 'selects':
- case 'checkbox':
- $value = array_filter(explode(',',$value));break;
- case 'file':
- case 'image':
- $value = ImageToServer($value,WEBURL,1);break;
- case 'files':
- case 'images':
- $value = ImageToServer($value,WEBURL,2);break;
- case 'datetimerange':
- $value = json_decode($value,true);
- $value = $value?[$value['start'],$value['end']]:[];
- break;
- case 'json':
- if(!empty($value)){
- $value = json_decode($value,true);
- }else{
- $value = [];
- if(!empty($data['content'])){
- $tmp = [];
- foreach($data['content'] as $content){
- $tmp[$content['key']] = '';
- }
- $value[] = $tmp;
- }
- }
- break;
- case 'slider':
- foreach($data['extra_rule'] as $item){
- if($item['key']=='range'){
- if($item['value']!='false'){
- $value = !empty($value)?json_decode($value):[0,0];
- }else{
- $value = !empty($value)?intval($value):0;
- }
- break;
- }
- }
- break;
- }
- }
- return $value;
- }
-
- public function getContentTxtAttr($value,$data)
- {
- if(!empty($data['content'])){
- $contentAry = [];
- foreach($data['content'] as $content){
- $contentAry[] = $content['key'].'|'.$content['value'];
- }
- return implode("\n",$contentAry);
- }
- return $value;
- }
-
- public function setContentAttr($value,$data)
- {
- if(!empty($data['content_txt'])){
- $contentAry = explode("\n",$data['content_txt']);
- $contentAry = array_filter($contentAry);
- $newContent = [];
- foreach($contentAry as $item){
- $itemAry = explode('|',$item);
- $key = $itemAry[0];
- $value = $itemAry[1];
- $newContent[] = ['key'=>$key,'value'=>$value];
- }
- return json_encode($newContent);
- }
- return $value;
- }
-
- public function setWeighAttr($value,$data)
- {
- if(empty($value)){
- $maxWeigh = self::where('group_code',$data['group_code'])->max('weigh');
- return $maxWeigh + 1;
- }else{
- return $value;
- }
- }
-
- public function getExtraRuleAttr($value,$data)
- {
- $value = $value??$data['extra_rule']??[];
- $res = [];
- foreach($value as $item){
- $res[$item['key']] = $item['value'];
- }
- return $res;
- }
-
- public function getExtraRuleTxtAttr($value,$data)
- {
- if(!empty($data['extra_rule'])){
- $contentAry = [];
- foreach($data['extra_rule'] as $content){
- $contentAry[] = $content['key'].'|'.$content['value'];
- }
- return implode("\n",$contentAry);
- }
- return $value;
- }
-
- public function setExtraRuleAttr($value,$data)
- {
- if(!empty($data['extra_rule_txt'])){
- $contentAry = explode("\n",$data['extra_rule_txt']);
- $contentAry = array_filter($contentAry);
- $newContent = [];
- foreach($contentAry as $item){
- $itemAry = explode('|',$item);
- $key = $itemAry[0];
- $value = $itemAry[1];
- $newContent[] = ['key'=>$key,'value'=>$value];
- }
- return json_encode($newContent);
- }
- return $value;
- }
-
- public function setRuleAttr($value,$data)
- {
- $value = $value??$data['rule']??'';
- return empty($value)||$value=='null'?'':$value;
- }
-
- public function setGroupNameAttr($value,$data)
- {
- if(!empty($data['group_code'])){
- return ConfigClass::where('code',$data['group_code'])->value('name');
- }else{
- return $value;
- }
- }
- }
|