Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
86b5cbc0
Commit
86b5cbc0
authored
May 16, 2017
by
Java-刘 彧阳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
记录白条商户注册的渠道号,并在用户登录时和原来的登录信息一起存入redis,基本保持原有数据结构不变
parent
0c126d5d
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
237 additions
and
7 deletions
+237
-7
AppController.java
...antgroup/xyqb/controller/external/user/AppController.java
+32
-5
UserBtRegister.java
src/main/java/cn/quantgroup/xyqb/entity/UserBtRegister.java
+62
-0
LoginProperties.java
src/main/java/cn/quantgroup/xyqb/model/LoginProperties.java
+1
-0
IUserBtRegisterRepository.java
...quantgroup/xyqb/repository/IUserBtRegisterRepository.java
+11
-0
UserBtRegisterFill.java
...group/xyqb/service/session/aspect/UserBtRegisterFill.java
+13
-0
UserBtRegisterFillAspect.java
...xyqb/service/session/aspect/UserBtRegisterFillAspect.java
+58
-0
SessionServiceImpl.java
...ntgroup/xyqb/service/session/impl/SessionServiceImpl.java
+2
-0
IUserBtRegisterService.java
.../quantgroup/xyqb/service/user/IUserBtRegisterService.java
+13
-0
UserBtRegisterServiceImpl.java
...oup/xyqb/service/user/impl/UserBtRegisterServiceImpl.java
+42
-0
xyqb.properties
src/main/resources/config/dev/xyqb.properties
+3
-2
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/user/AppController.java
View file @
86b5cbc0
...
@@ -4,16 +4,20 @@ import cn.quantgroup.xyqb.Constants;
...
@@ -4,16 +4,20 @@ import cn.quantgroup.xyqb.Constants;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserBtRegister
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.exception.NullUserException
;
import
cn.quantgroup.xyqb.model.*
;
import
cn.quantgroup.xyqb.model.*
;
import
cn.quantgroup.xyqb.model.session.LoginInfo
;
import
cn.quantgroup.xyqb.model.session.LoginInfo
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.repository.IUserBtRegisterRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.service.auth.IIdCardService
;
import
cn.quantgroup.xyqb.service.auth.IIdCardService
;
import
cn.quantgroup.xyqb.service.merchant.IMerchantService
;
import
cn.quantgroup.xyqb.service.merchant.IMerchantService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.sms.ISmsService
;
import
cn.quantgroup.xyqb.service.sms.ISmsService
;
import
cn.quantgroup.xyqb.service.user.ILkbUserService
;
import
cn.quantgroup.xyqb.service.user.ILkbUserService
;
import
cn.quantgroup.xyqb.service.user.IUserBtRegisterService
;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.util.IPUtil
;
import
cn.quantgroup.xyqb.util.IPUtil
;
...
@@ -59,7 +63,8 @@ public class AppController implements IBaseController {
...
@@ -59,7 +63,8 @@ public class AppController implements IBaseController {
private
IIdCardService
idCardService
;
private
IIdCardService
idCardService
;
@Autowired
@Autowired
private
IMerchantService
merchantService
;
private
IMerchantService
merchantService
;
@Autowired
private
IUserBtRegisterService
userBtRegisterService
;
/**
/**
* 第三方用户登录
* 第三方用户登录
*/
*/
...
@@ -68,7 +73,7 @@ public class AppController implements IBaseController {
...
@@ -68,7 +73,7 @@ public class AppController implements IBaseController {
String
phoneNo
,
String
phoneNo
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
registerFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
registerFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
idNo
,
String
name
,
String
key
,
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
appChannel
,
HttpServletRequest
request
String
idNo
,
String
name
,
String
key
,
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
appChannel
,
@RequestParam
(
required
=
false
)
Long
btRegisterChannelId
,
HttpServletRequest
request
)
{
)
{
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
...
@@ -78,7 +83,7 @@ public class AppController implements IBaseController {
...
@@ -78,7 +83,7 @@ public class AppController implements IBaseController {
LOGGER
.
info
(
"第三方用户登录, loginFrom:{}, requestIp:{}"
,
registerFrom
,
requestIp
);
LOGGER
.
info
(
"第三方用户登录, loginFrom:{}, requestIp:{}"
,
registerFrom
,
requestIp
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
if
(
user
==
null
)
{
if
(
user
==
null
)
{
user
=
register
(
registerFrom
,
phoneNo
,
idNo
,
name
,
channelId
);
user
=
register
(
registerFrom
,
phoneNo
,
idNo
,
name
,
channelId
,
btRegisterChannelId
);
}
}
if
(
user
==
null
)
{
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
...
@@ -103,6 +108,8 @@ public class AppController implements IBaseController {
...
@@ -103,6 +108,8 @@ public class AppController implements IBaseController {
return
new
JsonResult
(
bean
);
return
new
JsonResult
(
bean
);
}
}
/**
/**
* 第三方用户登录并返回用户信息
* 第三方用户登录并返回用户信息
*/
*/
...
@@ -111,7 +118,7 @@ public class AppController implements IBaseController {
...
@@ -111,7 +118,7 @@ public class AppController implements IBaseController {
String
phoneNo
,
String
phoneNo
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
registerFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
registerFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
idNo
,
String
name
,
String
key
,
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
appChannel
,
HttpServletRequest
request
String
idNo
,
String
name
,
String
key
,
@RequestParam
(
required
=
false
,
defaultValue
=
""
)
String
appChannel
,
@RequestParam
(
required
=
false
)
Long
btRegisterChannelId
,
HttpServletRequest
request
)
{
)
{
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
...
@@ -121,7 +128,7 @@ public class AppController implements IBaseController {
...
@@ -121,7 +128,7 @@ public class AppController implements IBaseController {
LOGGER
.
info
(
"第三方用户登录, loginFrom:{}, requestIp:{}"
,
registerFrom
,
requestIp
);
LOGGER
.
info
(
"第三方用户登录, loginFrom:{}, requestIp:{}"
,
registerFrom
,
requestIp
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
if
(
user
==
null
)
{
if
(
user
==
null
)
{
user
=
register
(
registerFrom
,
phoneNo
,
idNo
,
name
,
channelId
);
user
=
register
(
registerFrom
,
phoneNo
,
idNo
,
name
,
channelId
,
btRegisterChannelId
);
}
}
if
(
user
==
null
)
{
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
...
@@ -153,6 +160,26 @@ public class AppController implements IBaseController {
...
@@ -153,6 +160,26 @@ public class AppController implements IBaseController {
return
JsonResult
.
buildSuccessResult
(
""
,
loginInfo
);
return
JsonResult
.
buildSuccessResult
(
""
,
loginInfo
);
}
}
/**
* 注册新用户,带白条渠道号
* @param registerFrom
* @param phoneNo
* @param idNo
* @param name
* @param channelId
* @param btRegisterChannelId
* @return
*/
private
User
register
(
Long
registerFrom
,
String
phoneNo
,
String
idNo
,
String
name
,
Long
channelId
,
Long
btRegisterChannelId
)
{
User
user
=
register
(
registerFrom
,
phoneNo
,
idNo
,
name
,
channelId
);
if
(
null
!=
user
&&
null
!=
btRegisterChannelId
&&
channelId
==
222L
)
{
UserBtRegister
userBtRegister
=
new
UserBtRegister
();
userBtRegister
.
setUserId
(
user
.
getId
());
userBtRegister
.
setRegisterBtMerchantId
(
btRegisterChannelId
);
userBtRegisterService
.
save
(
userBtRegister
);
}
return
user
;
}
/**
/**
* 注册新用户
* 注册新用户
...
...
src/main/java/cn/quantgroup/xyqb/entity/UserBtRegister.java
0 → 100644
View file @
86b5cbc0
package
cn
.
quantgroup
.
xyqb
.
entity
;
import
cn.quantgroup.xyqb.config.http.Timestamp2LongConverter
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
/**
* Created by Administrator on 2017/5/16.
*/
@Getter
@Setter
@ToString
@Entity
@Table
(
name
=
"user_bt_register"
)
public
class
UserBtRegister
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1L
;
@Id
@Column
(
name
=
"id"
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
name
=
"user_id"
)
private
Long
userId
;
@Column
(
name
=
"register_bt_merchant_id"
)
private
Long
registerBtMerchantId
;
@Column
(
name
=
"is_active"
)
private
Boolean
isActive
;
//创建时间
@Column
(
name
=
"created_at"
)
private
Timestamp
createdAt
;
//上一次修改时间
@Column
(
name
=
"updated_at"
)
@JSONField
(
serializeUsing
=
Timestamp2LongConverter
.
class
)
private
Timestamp
updatedAt
;
@PrePersist
public
void
prePersist
(){
Timestamp
now
=
new
Timestamp
(
System
.
currentTimeMillis
());
this
.
createdAt
=
now
;
this
.
updatedAt
=
now
;
}
@PreUpdate
public
void
preUpdate
(){
Timestamp
now
=
new
Timestamp
(
System
.
currentTimeMillis
());
this
.
createdAt
=
now
;
this
.
updatedAt
=
now
;
}
}
src/main/java/cn/quantgroup/xyqb/model/LoginProperties.java
View file @
86b5cbc0
...
@@ -11,4 +11,5 @@ public class LoginProperties {
...
@@ -11,4 +11,5 @@ public class LoginProperties {
private
Long
createdFrom
=
1L
;
private
Long
createdFrom
=
1L
;
private
String
appChannel
=
""
;
private
String
appChannel
=
""
;
private
String
merchantName
;
private
String
merchantName
;
private
Long
btMerchantId
=
1L
;
}
}
src/main/java/cn/quantgroup/xyqb/repository/IUserBtRegisterRepository.java
0 → 100644
View file @
86b5cbc0
package
cn
.
quantgroup
.
xyqb
.
repository
;
import
cn.quantgroup.xyqb.entity.UserBtRegister
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* Created by Administrator on 2017/5/16.
*/
public
interface
IUserBtRegisterRepository
extends
JpaRepository
<
UserBtRegister
,
Long
>,
JpaSpecificationExecutor
<
UserBtRegister
>
{
}
src/main/java/cn/quantgroup/xyqb/service/session/aspect/UserBtRegisterFill.java
0 → 100644
View file @
86b5cbc0
package
cn
.
quantgroup
.
xyqb
.
service
.
session
.
aspect
;
import
java.lang.annotation.*
;
/**
* 用户的白条注册信息填充标记
* Created by ocean on 2017/5/16.
*/
@Documented
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
UserBtRegisterFill
{
}
src/main/java/cn/quantgroup/xyqb/service/session/aspect/UserBtRegisterFillAspect.java
0 → 100644
View file @
86b5cbc0
package
cn
.
quantgroup
.
xyqb
.
service
.
session
.
aspect
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserBtRegister
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
import
cn.quantgroup.xyqb.service.user.IUserBtRegisterService
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
/**
* Created by Administrator on 2017/5/16.
*/
@Aspect
@Component
@Order
(
value
=
Ordered
.
HIGHEST_PRECEDENCE
+
200
)
public
class
UserBtRegisterFillAspect
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
UserBtRegisterFillAspect
.
class
);
@Autowired
private
IUserBtRegisterService
userBtRegisterService
;
@Pointcut
(
"@annotation(cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill)"
)
//生成还款计划的时候,去生成趸交服务费
public
void
userBtRegisterFillCut
()
{
}
@Around
(
"userBtRegisterFillCut()"
)
public
Object
handleSingleServiceFeeRule
(
ProceedingJoinPoint
pjp
)
throws
Throwable
{
Object
[]
args
=
pjp
.
getArgs
();
try
{
args
=
fillUserBtRegister
(
args
);
}
catch
(
Exception
e
){
LOGGER
.
error
(
"补充用户白条登录渠道信息失败"
,
e
);
}
return
pjp
.
proceed
(
args
);
}
private
Object
[]
fillUserBtRegister
(
Object
[]
args
)
{
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++){
Object
obj
=
args
[
i
];
if
(
obj
instanceof
SessionValue
){
SessionValue
value
=(
SessionValue
)
obj
;
UserBtRegister
userBtRegister
=
userBtRegisterService
.
findByUserId
(
value
.
getUser
().
getId
());
if
(
null
!=
userBtRegister
&&
null
!=
value
.
getLoginProperties
()){
value
.
getLoginProperties
().
setBtMerchantId
(
userBtRegister
.
getRegisterBtMerchantId
());
}
}
}
return
args
;
}
}
src/main/java/cn/quantgroup/xyqb/service/session/impl/SessionServiceImpl.java
View file @
86b5cbc0
...
@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.model.LoginProperties;
...
@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.model.LoginProperties;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
import
cn.quantgroup.xyqb.model.session.SessionValue
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.base.Joiner
;
import
com.google.common.base.Joiner
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -121,6 +122,7 @@ public class SessionServiceImpl implements ISessionService {
...
@@ -121,6 +122,7 @@ public class SessionServiceImpl implements ISessionService {
}
}
@Override
@Override
@UserBtRegisterFill
public
void
persistSession
(
String
token
,
SessionValue
sessionValue
)
{
public
void
persistSession
(
String
token
,
SessionValue
sessionValue
)
{
Timestamp
current
=
new
Timestamp
(
System
.
currentTimeMillis
());
Timestamp
current
=
new
Timestamp
(
System
.
currentTimeMillis
());
sessionValue
.
setLastAccessTime
(
current
);
sessionValue
.
setLastAccessTime
(
current
);
...
...
src/main/java/cn/quantgroup/xyqb/service/user/IUserBtRegisterService.java
0 → 100644
View file @
86b5cbc0
package
cn
.
quantgroup
.
xyqb
.
service
.
user
;
import
cn.quantgroup.xyqb.entity.UserBtRegister
;
/**
* Created by Administrator on 2017/5/16.
*/
public
interface
IUserBtRegisterService
{
UserBtRegister
findByUserId
(
Long
userId
);
UserBtRegister
save
(
UserBtRegister
userBtRegister
);
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserBtRegisterServiceImpl.java
0 → 100644
View file @
86b5cbc0
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
import
cn.quantgroup.xyqb.entity.UserBtRegister
;
import
cn.quantgroup.xyqb.repository.IUserBtRegisterRepository
;
import
cn.quantgroup.xyqb.service.user.IUserBtRegisterService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
javax.persistence.criteria.Predicate
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Created by Administrator on 2017/5/16.
*/
@Service
public
class
UserBtRegisterServiceImpl
implements
IUserBtRegisterService
{
@Autowired
private
IUserBtRegisterRepository
userBtRegisterRepository
;
@Override
@Cacheable
(
value
=
"btRegisterCache"
,
key
=
"'userId' + #userId"
,
unless
=
"#result == null"
,
cacheManager
=
"cacheManager"
)
public
UserBtRegister
findByUserId
(
Long
userId
)
{
if
(
null
!=
userId
)
{
return
userBtRegisterRepository
.
findOne
((
root
,
query
,
cb
)
->
{
List
<
Predicate
>
list
=
new
ArrayList
<>();
list
.
add
(
cb
.
equal
(
root
.
get
(
"isActive"
).
as
(
Boolean
.
class
),
Boolean
.
TRUE
));
list
.
add
(
cb
.
equal
(
root
.
get
(
"userId"
).
as
(
Long
.
class
),
userId
));
Predicate
[]
p
=
new
Predicate
[
list
.
size
()];
query
.
where
(
cb
.
and
(
list
.
toArray
(
p
)));
return
query
.
getRestriction
();
});
}
return
null
;
}
@Override
public
UserBtRegister
save
(
UserBtRegister
userBtRegister
)
{
return
userBtRegisterRepository
.
saveAndFlush
(
userBtRegister
);
}
}
src/main/resources/config/dev/xyqb.properties
View file @
86b5cbc0
configserver.disable
=
1
configserver.disable
=
1
configserver.system
=
xyqb-user
configserver.system
=
xyqb-user
xyqb.data.mysql.jdbc-url
=
jdbc:mysql://192.168.4.163:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
xyqb.data.mysql.jdbc-url
=
jdbc:mysql://192.168.4.22:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
#xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.163:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
xyqb.data.mysql.password
=
qatest
xyqb.data.mysql.password
=
qatest
...
@@ -15,7 +16,7 @@ xyqb.filter.allowedHeaders=Origin, No-Cache, x-auth-token, X-Requested-With, If-
...
@@ -15,7 +16,7 @@ xyqb.filter.allowedHeaders=Origin, No-Cache, x-auth-token, X-Requested-With, If-
xyqb.data.redis.defaultExpiration
=
3600
xyqb.data.redis.defaultExpiration
=
3600
# redis
# redis
xyqb.redis.master.host
=
192.168.4.
163
xyqb.redis.master.host
=
192.168.4.
22
xyqb.redis.master.port
=
6379
xyqb.redis.master.port
=
6379
xyqb.redis.master.name
=
xyqb.redis.master.name
=
xyqb.redis.sentinel1.host
=
xyqb.redis.sentinel1.host
=
...
...
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