Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
services
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tencent
services
Commits
32fc2d84
Commit
32fc2d84
authored
Dec 25, 2019
by
王召彬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
配置中心
parent
25ca5a04
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
88 additions
and
113 deletions
+88
-113
src/Common/Config/CfgCenter.php
+88
-113
No files found.
src/Common/Config/CfgCenter.php
View file @
32fc2d84
...
@@ -7,155 +7,146 @@ use Swoft\App;
...
@@ -7,155 +7,146 @@ use Swoft\App;
class
CfgCenter
class
CfgCenter
{
{
const
COS
=
'cos'
;
const
CLS
=
'cls'
;
const
CMQ
=
'cmq'
;
const
ENCRYPT_KEY
=
'encrypt_key'
;
const
BACKEND_WEAPP
=
'backend_weapp'
;
const
FRONTEND_WEAPP
=
'frontend_weapp'
;
const
ALIYUN_SMS
=
'aliyun_sms'
;
const
TENCENT_SMS
=
'tencent_sms'
;
const
MP
=
'mp'
;
const
PAY
=
'pay'
;
const
PAY_YUNMAI
=
'pay_yunmai'
;
const
PAY_YUNMAI_ISP
=
'pay_yunmai_isp'
;
const
PAY_ZHIMEI
=
'pay_zhimei'
;
/**
/**
* 读取指定的配置项 - 返回
对象
格式
* 读取指定的配置项 - 返回
数组
格式
* (所有配置项,需预先添加到数据库中)
* (所有配置项,需预先添加到数据库中)
* 方法一:
* $cfgdata = CfgCenter::getArray(CfgCenter::COS);
* $value = CfgCenter::get('qCloud>Weapp>Region');
* var_dump($cfgdata['Weapp']['Region']); // 输出:ap-shanghai
* var_dump($value); // 输出:ap-shanghai
* 方法二:
* $cfgdata = CfgCenter::get('qCloud');
* var_dump($cfgdata->Weapp->Region); // 输出:ap-shanghai
*
*
* @param string $key
Str
* @param string $key
Name
* @param
string $default 默认返回值
* @param
int $oemId oemId==1表示是活动啦啦
* @return mixed
* @return mixed
*/
*/
public
static
function
get
(
$keyStr
,
$default
=
''
,
$oemId
=
1
)
public
static
function
get
Array
(
$keyName
,
$oemId
=
1
)
{
{
$data
=
self
::
_get
(
$keyStr
,
$oemId
);
return
self
::
_get
(
$keyName
,
$oemId
);
if
(
$data
==
''
)
{
return
$default
;
}
return
$data
;
}
}
/**
/**
* 读取指定的配置项 - 返回数组格式
* 根据storeId获取所属OEM平台的配置
* (所有配置项,需预先添加到数据库中)
* 方法一:
* $value = CfgCenter::get('qCloud>Weapp>Region');
* var_dump($value); // 输出:ap-shanghai
* 方法二:
* $cfgdata = CfgCenter::get('qCloud');
* var_dump($cfgdata['Weapp']['Region']); // 输出:ap-shanghai
*
*
* @param string $keyStr
* @param string $keyName
* @param string $default 默认返回值
* @param string $storeId
* @param int $oemId
* @return mixed
* @return mixed
*/
*/
public
static
function
get
Array
(
$keyStr
,
$default
=
''
,
$oemId
=
1
)
public
static
function
get
ByStoreId
(
$keyName
,
$storeId
)
{
{
$data
=
self
::
_get
(
$keyStr
,
$oemId
);
$dbConn
=
self
::
_dbConnect
(
'seller'
);
if
(
$data
==
''
)
{
$result
=
$dbConn
->
get
(
"seller"
,
[
'oemId'
],
[
'storeId'
=>
$storeId
]);
return
$default
;
return
self
::
_get
(
$keyName
,
(
int
)
$result
[
'oemId'
]);
}
if
(
is_object
(
$data
))
{
return
json_decode
(
json_encode
(
$data
),
true
);
}
return
$data
;
}
}
public
function
getByUnionId
(
$keyStr
,
$unionId
)
/**
* 根据sellerId获取所属OEM平台的配置
*
* @param string $keyName
* @param string $sellerId
* @return mixed
*/
public
static
function
getBySellerId
(
$keyName
,
$sellerId
)
{
{
$dbConn
=
self
::
dbConnect
(
);
$dbConn
=
self
::
_dbConnect
(
'seller'
);
$result
=
$dbConn
->
select
(
"seller"
,
[
'oemId'
],
[
'unionId'
=>
$union
Id
]);
$result
=
$dbConn
->
get
(
"seller"
,
[
'oemId'
],
[
'sellerId'
=>
$seller
Id
]);
return
self
::
_get
(
$key
Str
,
$result
[
'oemId'
]);
return
self
::
_get
(
$key
Name
,
(
int
)
$result
[
'oemId'
]);
}
}
public
function
getByStoreId
(
$keyStr
,
$storeId
)
/**
* 根据unionId获取所属OEM平台的配置
*
* @param string $keyName
* @param string $unionId
* @return mixed
*/
public
static
function
getByUnionId
(
$keyName
,
$unionId
)
{
{
$dbConn
=
self
::
dbConnect
(
);
$dbConn
=
self
::
_dbConnect
(
'seller'
);
$result
=
$dbConn
->
select
(
"seller"
,
[
'oemId'
],
[
'storeId'
=>
$store
Id
]);
$result
=
$dbConn
->
get
(
"seller"
,
[
'oemId'
],
[
'unionId'
=>
$union
Id
]);
return
self
::
_get
(
$key
Str
,
$result
[
'oemId'
]);
return
self
::
_get
(
$key
Name
,
(
int
)
$result
[
'oemId'
]);
}
}
public
function
getBySellerId
(
$keyStr
,
$sellerId
)
/**
* 获取支付平台证书
*
* @param integer $storeId
* @param integer $isEntrusted 是否是用户托管的小程序
* @return void
*/
public
static
function
getCertByStoreId
(
int
$storeId
,
int
$isEntrusted
)
{
{
$dbConn
=
self
::
dbConnect
();
$dbConn
=
self
::
_dbConnect
(
'seller'
);
$result
=
$dbConn
->
select
(
"seller"
,
[
'oemId'
],
[
'sellerId'
=>
$sellerId
]);
$result
=
$dbConn
->
get
(
"seller"
,
[
'oemId'
],
[
'storeId'
=>
$storeId
]);
return
self
::
_get
(
$keyStr
,
$result
[
'oemId'
]);
$oemId
=
(
int
)
$result
[
'oemId'
];
}
}
private
static
function
_get
(
$keyStr
,
$oemId
=
1
)
private
static
function
_get
(
$keyName
,
int
$oemId
=
1
)
{
{
$keyArr
=
self
::
parseKeyStr
(
$keyStr
);
$prefix
=
"CONFIG_CENTER:oemid_
$oemId
:"
;
$rkey
=
implode
(
":"
,
$keyArr
);
$redis
=
App
::
getBean
(
Redis
::
class
);
$redis
=
App
::
getBean
(
Redis
::
class
);
$data
=
$redis
->
get
(
"CONFIG_CENTER:
$oemId
:"
.
$rkey
);
$data
=
$redis
->
get
(
$prefix
.
$keyName
);
if
(
$data
===
null
)
{
if
(
$data
)
{
$res
=
self
::
dbFetch
(
$keyStr
,
$oemId
);
$result
=
json_decode
(
$data
,
true
);
if
(
$res
)
{
return
is_array
(
$result
)
?
$result
:
$data
;
if
(
is_object
(
$res
[
1
]))
{
$val
=
json_encode
(
$res
[
1
]);
}
else
{
$val
=
$res
[
1
];
}
$redis
->
set
(
"CONFIG_CENTER:"
.
$res
[
0
],
$val
,
3600
);
return
$res
[
1
];
}
}
}
$obj
=
json_decode
(
$data
);
// 没有缓存则从数据库读取:
if
(
$obj
&&
is_object
(
$obj
))
{
$valArr
=
self
::
_getConfigFromDb
(
$keyName
,
$oemId
);
return
$obj
;
if
(
$valArr
)
{
//有内容时进行redis缓存
if
(
is_array
(
$valArr
))
{
$redis
->
set
(
$prefix
.
$keyName
,
json_encode
(
$valArr
),
3600
);
}
else
{
$redis
->
set
(
$prefix
.
$keyName
,
$valArr
,
3600
);
}
}
}
return
$
data
;
return
$
valArr
;
}
}
pr
otected
static
function
dbFetch
(
$keyStr
,
$oemId
)
pr
ivate
static
function
_getConfigFromDb
(
$keyName
,
$oemId
)
{
{
$keyArr
=
self
::
parseKeyStr
(
$keyStr
);
$dbConn
=
self
::
_dbConnect
(
'config_center'
);
$name
=
array_shift
(
$keyArr
);
$result
=
$dbConn
->
select
(
"config"
,
[
'name'
,
'value'
],
[
'oemId'
=>
$oemId
,
'name'
=>
$keyName
]);
$dbConn
=
self
::
dbConnect
();
$result
=
$dbConn
->
select
(
"config"
,
[
'name'
,
'value'
],
[
'name'
=>
$name
,
'oemId'
=>
$oemId
]);
if
(
!
isset
(
$result
[
0
][
'value'
]))
{
if
(
!
isset
(
$result
[
0
][
'value'
]))
{
return
;
return
;
}
}
$val
Obj
=
json_decode
(
$result
[
0
][
'value'
]
);
$val
Arr
=
json_decode
(
$result
[
0
][
'value'
],
true
);
if
(
!
is_
object
(
$valObj
))
{
if
(
!
is_
array
(
$valArr
))
{
return
[
$name
,
$result
[
0
][
'value'
]
];
return
$result
[
0
][
'value'
];
}
}
$keys
=
''
;
return
$valArr
;
foreach
(
$keyArr
as
$key
)
{
if
(
!
isset
(
$valObj
->
$key
))
{
return
;
}
$keys
.=
$key
.
':'
;
$valObj
=
$valObj
->
$key
;
}
$rkey
=
$name
.
':'
.
trim
(
$keys
,
':'
);
return
[
trim
(
$rkey
,
':'
),
$valObj
];
}
}
p
ublic
static
function
dbConnect
(
)
p
rivate
static
function
_dbConnect
(
$database
)
{
{
if
(
\env
(
'ENVIRONMENT'
,
''
)
==
''
)
{
if
(
\env
(
'ENVIRONMENT'
,
''
)
==
''
)
{
// 返回线上数据库连接
// 返回线上数据库连接
return
new
\Medoo\Medoo
([
return
new
\Medoo\Medoo
([
'database_type'
=>
'mysql'
,
'database_type'
=>
'mysql'
,
'database_name'
=>
'config_center'
,
'database_name'
=>
$database
,
'server'
=>
'172.21.0.12'
,
'server'
=>
'172.21.0.12'
,
'username'
=>
'configer'
,
'username'
=>
'configer'
,
'password'
=>
'Cfgsu#2390f*_'
,
'password'
=>
'Cfgsu#2390f*_'
,
'charset'
=>
'utf8'
'charset'
=>
'utf8'
]);
]);
}
elseif
(
\env
(
'ENVIRONMENT'
,
''
)
==
'pre'
)
{
// 返回测试数据库连接
return
new
\Medoo\Medoo
([
'database_type'
=>
'mysql'
,
'database_name'
=>
'config_center'
,
'server'
=>
'192.168.3.201'
,
'username'
=>
'hdller'
,
'password'
=>
'Hdlltest999'
,
'charset'
=>
'utf8'
]);
}
else
{
}
else
{
// 返回测试数据库连接
// 返回测试数据库连接
return
new
\Medoo\Medoo
([
return
new
\Medoo\Medoo
([
'database_type'
=>
'mysql'
,
'database_type'
=>
'mysql'
,
'database_name'
=>
'config_center'
,
'database_name'
=>
$database
,
'server'
=>
'192.168.3.202'
,
'server'
=>
'192.168.3.202'
,
'username'
=>
'hdller'
,
'username'
=>
'hdller'
,
'password'
=>
'Hdlltest888'
,
'password'
=>
'Hdlltest888'
,
...
@@ -164,21 +155,5 @@ class CfgCenter
...
@@ -164,21 +155,5 @@ class CfgCenter
}
}
}
}
protected
static
function
parseKeyStr
(
$keyStr
)
{
$keyArr
=
explode
(
">"
,
trim
(
$keyStr
,
'>'
));
foreach
(
$keyArr
as
$k
=>
$v
)
{
$v
=
trim
(
$v
);
if
(
$v
==
""
)
{
unset
(
$keyArr
[
$k
]);
}
else
{
$keyArr
[
$k
]
=
$v
;
}
}
if
(
empty
(
$keyArr
))
{
throw
new
\Exception
(
"[CfgCenter]未指定合法的Key"
);
}
return
$keyArr
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment