Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
matrix
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
mall
arch
matrix
Commits
ea793295
Commit
ea793295
authored
Jul 23, 2019
by
qiuweili123
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add rokcetmq
parent
13845a29
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
416 additions
and
413 deletions
+416
-413
CommonConstant.java
common-core/src/main/java/com/secoo/mall/common/constant/CommonConstant.java
+1
-0
BeanUtil.java
common-util/src/main/java/com/secoo/mall/common/util/bean/BeanUtil.java
+17
-3
BeanChecker.java
common-util/src/main/java/com/secoo/mall/common/util/checker/BeanChecker.java
+1
-1
IOUtil.java
common-util/src/main/java/com/secoo/mall/common/util/file/IOUtil.java
+1
-1
logback-spring-test.xml
common-util/src/main/resources/logback-spring-test.xml
+2
-1
logback-spring.xml
common-util/src/main/resources/logback-spring.xml
+6
-1
ApolloAutoConfiguration.java
config-starter/src/main/java/com/secoo/mall/config/boot/ApolloAutoConfiguration.java
+0
-1
MonitorAutoConfiguration.java
monitor-starter/src/main/java/com/secoo/matrix/monitor/config/MonitorAutoConfiguration.java
+2
-2
MonitorConstant.java
monitor-starter/src/main/java/com/secoo/matrix/monitor/constant/MonitorConstant.java
+1
-5
HttpTraceFilter.java
monitor-starter/src/main/java/com/secoo/matrix/monitor/filter/HttpTraceFilter.java
+1
-1
TraceInterceptor.java
monitor-starter/src/main/java/com/secoo/matrix/monitor/http/TraceInterceptor.java
+6
-7
UUIDUtils.java
monitor-starter/src/main/java/com/secoo/matrix/monitor/utils/UUIDUtils.java
+354
-372
MybatisConfig.java
mybatis-starter/src/main/java/com/secoo/mall/mybatis/config/MybatisConfig.java
+1
-1
FeignConfig.java
openfeign-starter/src/main/java/com/secoo/mall/openfeign/config/FeignConfig.java
+0
-1
pom.xml
pom.xml
+6
-0
pom.xml
rocketmq-starter/pom.xml
+7
-1
ControllerResponseAdvice.java
web-starter/src/main/java/com/secoo/mall/web/advice/ControllerResponseAdvice.java
+3
-4
MultLangConfig.java
web-starter/src/main/java/com/secoo/mall/web/config/MultLangConfig.java
+0
-3
SwaggerConfig.java
web-starter/src/main/java/com/secoo/mall/web/config/SwaggerConfig.java
+2
-3
WebConfig.java
web-starter/src/main/java/com/secoo/mall/web/config/WebConfig.java
+1
-1
DefaultLocaleResolver.java
web-starter/src/main/java/com/secoo/mall/web/resolver/DefaultLocaleResolver.java
+2
-2
WebUtil.java
web-starter/src/main/java/com/secoo/mall/web/util/WebUtil.java
+2
-2
No files found.
common-core/src/main/java/com/secoo/mall/common/constant/CommonConstant.java
View file @
ea793295
...
...
@@ -6,6 +6,7 @@ public interface CommonConstant {
Integer
CODE
=
0
;
String
MSG
=
"success"
;
}
interface
Env
{
String
LOCAL
=
"local"
;
String
DEV
=
"dev"
;
...
...
common-util/src/main/java/com/secoo/mall/common/util/bean/BeanUtil.java
View file @
ea793295
package
com
.
secoo
.
mall
.
common
.
util
.
bean
;
import
com.google.common.collect.Maps
;
import
com.secoo.mall.common.core.errorcode.CommonErrorCode
;
import
com.secoo.mall.common.core.exception.BusinessException
;
import
com.secoo.mall.common.core.exception.SystemInternalException
;
import
com.secoo.mall.common.util.json.FastJsonUtil
;
import
org.apache.commons.beanutils.BeanUtils
;
import
org.apache.commons.beanutils.PropertyUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
java.lang.reflect.Field
;
import
java.util.Map
;
public
class
BeanUtil
extends
BeanUtils
{
private
static
final
String
[]
DEFUALT_IGNORE_KEY
=
{
"class"
,
"empty"
};
public
static
boolean
containsInteger
(
Integer
[]
arr
,
Integer
obj
)
{
return
ArrayUtils
.
contains
(
arr
,
obj
);
}
...
...
@@ -25,14 +30,23 @@ public class BeanUtil extends BeanUtils {
return
field
.
get
(
obj
);
}
public
static
<
T
>
T
transMap2Bean
(
Object
object
,
Class
<
T
>
classOfT
)
{
if
(
object
==
null
||
!(
object
instanceof
Map
))
{
return
null
;
public
static
<
T
>
Map
<
String
,
Object
>
transBean2Map
(
T
object
)
{
if
(
object
==
null
)
{
return
Maps
.
newHashMapWithExpectedSize
(
0
);
}
try
{
return
PropertyUtils
.
describe
(
object
);
}
catch
(
Exception
e
)
{
throw
new
SystemInternalException
();
}
}
public
static
<
T
>
T
transMap2Bean
(
Map
<
String
,
Object
>
object
,
Class
<
T
>
classOfT
)
{
String
tmp
=
FastJsonUtil
.
toString
(
object
);
return
FastJsonUtil
.
toBean
(
tmp
,
classOfT
);
}
public
static
void
copyProps
(
Object
dest
,
Object
orig
)
{
try
{
copyProperties
(
dest
,
orig
);
...
...
common-util/src/main/java/com/secoo/mall/common/util/checker/BeanChecker.java
View file @
ea793295
...
...
@@ -3,8 +3,8 @@ package com.secoo.mall.common.util.checker;
import
com.secoo.mall.common.core.errorcode.ErrorCode
;
import
com.secoo.mall.common.core.exception.ParameterException
;
import
com.secoo.mall.common.util.decimal.DecimalUtil
;
import
com.secoo.mall.common.util.colletion.MapUtil
;
import
com.secoo.mall.common.util.decimal.DecimalUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.util.CollectionUtils
;
...
...
common-util/src/main/java/com/secoo/mall/common/util/file/IOUtil.java
View file @
ea793295
...
...
@@ -2,5 +2,5 @@ package com.secoo.mall.common.util.file;
import
org.apache.commons.io.IOUtils
;
public
class
IOUtil
extends
IOUtils
{
public
class
IOUtil
extends
IOUtils
{
}
common-util/src/main/resources/logback-spring-test.xml
View file @
ea793295
...
...
@@ -10,7 +10,8 @@
<property
name=
"LOG_DIR"
value=
"${logPath}/${logName}/%d{yyyyMMdd}"
/>
<property
name=
"MAX_FILE_SIZE"
value=
"128MB"
/>
<property
name=
"MAX_HISTORY"
value=
"7"
/>
<property
name=
"PATTERN"
value=
"-|%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%X{traceId}|%thread|%logger{36}.%M:%L-%msg%n"
/>
<property
name=
"PATTERN"
value=
"-|%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%X{traceId}|%thread|%logger{36}.%M:%L-%msg%n"
/>
<property
name=
"CHARSET"
value=
"UTF-8"
/>
<jmxConfigurator/>
<!-- 控制台输出 -->
...
...
common-util/src/main/resources/logback-spring.xml
View file @
ea793295
...
...
@@ -17,7 +17,7 @@
<springProperty
scope=
"context"
name=
"logPath"
source=
"logging.path"
defaultValue=
"./logs"
/>
</springProfile>
<property
name=
"PATTERN"
value=
"-|%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%X{traceId}|%thread|%logger{36}
|
%msg%n"
/>
value=
"-|%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%X{traceId}|%thread|%logger{36}
.%M:%L-
%msg%n"
/>
<property
name=
"CHARSET"
value=
"UTF-8"
/>
<jmxConfigurator/>
<!-- 控制台输出 -->
...
...
@@ -31,6 +31,7 @@
<level>
DEBUG
</level>
</filter>
<immediateFlush>
false
</immediateFlush>
</appender>
<appender
name=
"ERROR"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
...
...
@@ -73,11 +74,14 @@
<appender-ref
ref=
"APP"
/>
<queueSize>
1024
</queueSize>
<neverBlock>
true
</neverBlock>
<!--防止问号出现-->
<includeCallerData>
true
</includeCallerData>
</appender>
<appender
name=
"ASYN_ERROR"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<appender-ref
ref=
"ERROR"
/>
<queueSize>
256
</queueSize>
<neverBlock>
true
</neverBlock>
<includeCallerData>
true
</includeCallerData>
</appender>
<!-- <appender name="ASYN_EMAIL" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="EMAIL"/>
...
...
@@ -88,6 +92,7 @@
<appender-ref
ref=
"STDOUT"
/>
<queueSize>
256
</queueSize>
<neverBlock>
true
</neverBlock>
<includeCallerData>
true
</includeCallerData>
</appender>
<logger
name=
"app"
level=
"${logLevel}"
>
...
...
config-starter/src/main/java/com/secoo/mall/config/boot/ApolloAutoConfiguration.java
View file @
ea793295
...
...
@@ -11,5 +11,4 @@ import org.springframework.context.annotation.Configuration;
public
class
ApolloAutoConfiguration
{
}
monitor-starter/src/main/java/com/secoo/matrix/monitor/config/MonitorAutoConfiguration.java
View file @
ea793295
...
...
@@ -4,7 +4,7 @@ package com.secoo.matrix.monitor.config;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
MonitorAutoConfiguration
{
public
class
MonitorAutoConfiguration
{
}
}
monitor-starter/src/main/java/com/secoo/matrix/monitor/constant/MonitorConstant.java
View file @
ea793295
...
...
@@ -35,11 +35,7 @@ public interface MonitorConstant {
String
ROLE
=
"Dubbo-RPC"
;
String
ERROR_MSG
=
"errorMsg"
;
String
ERROR_MSG
=
"errorMsg"
;
}
monitor-starter/src/main/java/com/secoo/matrix/monitor/filter/HttpTraceFilter.java
View file @
ea793295
...
...
@@ -19,7 +19,7 @@ public class HttpTraceFilter implements Filter {
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
try
{
TraceIDUtils
.
continueTraceID
();
filterChain
.
doFilter
(
servletRequest
,
servletResponse
);
filterChain
.
doFilter
(
servletRequest
,
servletResponse
);
}
catch
(
Exception
e
)
{
}
}
...
...
monitor-starter/src/main/java/com/secoo/matrix/monitor/http/TraceInterceptor.java
View file @
ea793295
...
...
@@ -27,7 +27,6 @@ public class TraceInterceptor extends HandlerInterceptorAdapter {
private
ThreadLocal
<
Long
>
stime
=
new
ThreadLocal
<>();
/**
* This implementation always returns {@code true}.
*/
...
...
@@ -42,7 +41,7 @@ public class TraceInterceptor extends HandlerInterceptorAdapter {
// // 并发计数
// getConcurrent(request).incrementAndGet();
}
catch
(
Exception
e
)
{
//容灾
}
catch
(
Exception
e
)
{
//容灾
}
return
true
;
}
...
...
@@ -62,12 +61,12 @@ public class TraceInterceptor extends HandlerInterceptorAdapter {
public
void
afterCompletion
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Exception
ex
)
throws
Exception
{
try
{
MDC
.
clear
();
try
{
MDC
.
clear
();
getConcurrent
(
request
).
decrementAndGet
();
}
catch
(
Exception
e
)
{
}
getConcurrent
(
request
).
decrementAndGet
();
}
catch
(
Exception
e
)
{
}
}
// 获取并发计数器
...
...
monitor-starter/src/main/java/com/secoo/matrix/monitor/utils/UUIDUtils.java
View file @
ea793295
...
...
@@ -6,392 +6,374 @@ import java.security.SecureRandom;
import
java.util.UUID
;
public
final
class
UUIDUtils
implements
java
.
io
.
Serializable
,
Comparable
<
UUIDUtils
>
{
/**
* Explicit serialVersionUID for interoperability.
*/
private
static
final
long
serialVersionUID
=
-
4856846361193249489L
;
/*
* The most significant 64 bits of this UUID.
*
* @serial
*/
private
final
long
mostSigBits
;
/*
* The least significant 64 bits of this UUID.
*
* @serial
*/
private
final
long
leastSigBits
;
/*
* The random number generator used by this class to create random based
* UUIDs. In a holder class to defer initialization until needed.
*/
private
static
class
Holder
{
static
final
SecureRandom
numberGenerator
=
new
SecureRandom
();
}
// Constructors and Factories
/*
* Private constructor which uses a byte array to construct the new UUID.
*/
private
UUIDUtils
(
byte
[]
data
)
{
long
msb
=
0
;
long
lsb
=
0
;
assert
data
.
length
==
16
:
"data must be 16 bytes in length"
;
for
(
int
i
=
0
;
i
<
8
;
i
++)
{
Comparable
<
UUIDUtils
>
{
/**
* Explicit serialVersionUID for interoperability.
*/
private
static
final
long
serialVersionUID
=
-
4856846361193249489L
;
/*
* The most significant 64 bits of this UUID.
*
* @serial
*/
private
final
long
mostSigBits
;
/*
* The least significant 64 bits of this UUID.
*
* @serial
*/
private
final
long
leastSigBits
;
/*
* The random number generator used by this class to create random based
* UUIDs. In a holder class to defer initialization until needed.
*/
private
static
class
Holder
{
static
final
SecureRandom
numberGenerator
=
new
SecureRandom
();
}
// Constructors and Factories
/*
* Private constructor which uses a byte array to construct the new UUID.
*/
private
UUIDUtils
(
byte
[]
data
)
{
long
msb
=
0
;
long
lsb
=
0
;
assert
data
.
length
==
16
:
"data must be 16 bytes in length"
;
for
(
int
i
=
0
;
i
<
8
;
i
++)
{
msb
=
(
msb
<<
8
)
|
(
data
[
i
]
&
0xff
);
}
for
(
int
i
=
8
;
i
<
16
;
i
++)
{
for
(
int
i
=
8
;
i
<
16
;
i
++)
{
lsb
=
(
lsb
<<
8
)
|
(
data
[
i
]
&
0xff
);
}
this
.
mostSigBits
=
msb
;
this
.
leastSigBits
=
lsb
;
}
/**
* Constructs a new {@code UUID} using the specified data.
* {@code mostSigBits} is used for the most significant 64 bits of the
* {@code UUID} and {@code leastSigBits} becomes the least significant 64
* bits of the {@code UUID}.
*
* @param mostSigBits
* The most significant bits of the {@code UUID}
*
* @param leastSigBits
* The least significant bits of the {@code UUID}
*/
public
UUIDUtils
(
long
mostSigBits
,
long
leastSigBits
)
{
this
.
mostSigBits
=
mostSigBits
;
this
.
leastSigBits
=
leastSigBits
;
}
/**
* Static factory to retrieve a type 4 (pseudo randomly generated) UUID.
*
* The {@code UUID} is generated using a cryptographically strong pseudo
* random number generator.
*
* @return A randomly generated {@code UUID}
*/
public
static
UUIDUtils
randomUUID
()
{
SecureRandom
ng
=
Holder
.
numberGenerator
;
byte
[]
randomBytes
=
new
byte
[
16
];
ng
.
nextBytes
(
randomBytes
);
randomBytes
[
6
]
&=
0x0f
;
/* clear version */
randomBytes
[
6
]
|=
0x40
;
/* set to version 4 */
randomBytes
[
8
]
&=
0x3f
;
/* clear variant */
randomBytes
[
8
]
|=
0x80
;
/* set to IETF variant */
return
new
UUIDUtils
(
randomBytes
);
}
/**
* Static factory to retrieve a type 3 (name based) {@code UUID} based on
* the specified byte array.
*
* @param name
* A byte array to be used to construct a {@code UUID}
*
* @return A {@code UUID} generated from the specified array
*/
public
static
UUIDUtils
nameUUIDFromBytes
(
byte
[]
name
)
{
MessageDigest
md
;
try
{
md
=
MessageDigest
.
getInstance
(
"MD5"
);
}
catch
(
NoSuchAlgorithmException
nsae
)
{
throw
new
InternalError
(
"MD5 not supported"
,
nsae
);
}
byte
[]
md5Bytes
=
md
.
digest
(
name
);
md5Bytes
[
6
]
&=
0x0f
;
/* clear version */
md5Bytes
[
6
]
|=
0x30
;
/* set to version 3 */
md5Bytes
[
8
]
&=
0x3f
;
/* clear variant */
md5Bytes
[
8
]
|=
0x80
;
/* set to IETF variant */
return
new
UUIDUtils
(
md5Bytes
);
}
/**
* Creates a {@code UUID} from the string standard representation as
* described in the {@link #toString} method.
*
* @param name
* A string that specifies a {@code UUID}
*
* @return A {@code UUID} with the specified value
*
* @throws IllegalArgumentException
* If name does not conform to the string representation as
* described in {@link #toString}
*
*/
public
static
UUIDUtils
fromString
(
String
name
)
{
String
[]
components
=
name
.
split
(
"-"
);
if
(
components
.
length
!=
5
)
{
this
.
mostSigBits
=
msb
;
this
.
leastSigBits
=
lsb
;
}
/**
* Constructs a new {@code UUID} using the specified data.
* {@code mostSigBits} is used for the most significant 64 bits of the
* {@code UUID} and {@code leastSigBits} becomes the least significant 64
* bits of the {@code UUID}.
*
* @param mostSigBits The most significant bits of the {@code UUID}
* @param leastSigBits The least significant bits of the {@code UUID}
*/
public
UUIDUtils
(
long
mostSigBits
,
long
leastSigBits
)
{
this
.
mostSigBits
=
mostSigBits
;
this
.
leastSigBits
=
leastSigBits
;
}
/**
* Static factory to retrieve a type 4 (pseudo randomly generated) UUID.
* <p>
* The {@code UUID} is generated using a cryptographically strong pseudo
* random number generator.
*
* @return A randomly generated {@code UUID}
*/
public
static
UUIDUtils
randomUUID
()
{
SecureRandom
ng
=
Holder
.
numberGenerator
;
byte
[]
randomBytes
=
new
byte
[
16
];
ng
.
nextBytes
(
randomBytes
);
randomBytes
[
6
]
&=
0x0f
;
/* clear version */
randomBytes
[
6
]
|=
0x40
;
/* set to version 4 */
randomBytes
[
8
]
&=
0x3f
;
/* clear variant */
randomBytes
[
8
]
|=
0x80
;
/* set to IETF variant */
return
new
UUIDUtils
(
randomBytes
);
}
/**
* Static factory to retrieve a type 3 (name based) {@code UUID} based on
* the specified byte array.
*
* @param name A byte array to be used to construct a {@code UUID}
* @return A {@code UUID} generated from the specified array
*/
public
static
UUIDUtils
nameUUIDFromBytes
(
byte
[]
name
)
{
MessageDigest
md
;
try
{
md
=
MessageDigest
.
getInstance
(
"MD5"
);
}
catch
(
NoSuchAlgorithmException
nsae
)
{
throw
new
InternalError
(
"MD5 not supported"
,
nsae
);
}
byte
[]
md5Bytes
=
md
.
digest
(
name
);
md5Bytes
[
6
]
&=
0x0f
;
/* clear version */
md5Bytes
[
6
]
|=
0x30
;
/* set to version 3 */
md5Bytes
[
8
]
&=
0x3f
;
/* clear variant */
md5Bytes
[
8
]
|=
0x80
;
/* set to IETF variant */
return
new
UUIDUtils
(
md5Bytes
);
}
/**
* Creates a {@code UUID} from the string standard representation as
* described in the {@link #toString} method.
*
* @param name A string that specifies a {@code UUID}
* @return A {@code UUID} with the specified value
* @throws IllegalArgumentException If name does not conform to the string representation as
* described in {@link #toString}
*/
public
static
UUIDUtils
fromString
(
String
name
)
{
String
[]
components
=
name
.
split
(
"-"
);
if
(
components
.
length
!=
5
)
{
throw
new
IllegalArgumentException
(
"Invalid UUID string: "
+
name
);
}
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
components
[
i
]
=
"0x"
+
components
[
i
];
}
long
mostSigBits
=
Long
.
decode
(
components
[
0
]).
longValue
();
mostSigBits
<<=
16
;
mostSigBits
|=
Long
.
decode
(
components
[
1
]).
longValue
();
mostSigBits
<<=
16
;
mostSigBits
|=
Long
.
decode
(
components
[
2
]).
longValue
();
long
leastSigBits
=
Long
.
decode
(
components
[
3
]).
longValue
();
leastSigBits
<<=
48
;
leastSigBits
|=
Long
.
decode
(
components
[
4
]).
longValue
();
return
new
UUIDUtils
(
mostSigBits
,
leastSigBits
);
}
// Field Accessor Methods
/**
* Returns the least significant 64 bits of this UUID's 128 bit value.
*
* @return The least significant 64 bits of this UUID's 128 bit value
*/
public
long
getLeastSignificantBits
()
{
return
leastSigBits
;
}
/**
* Returns the most significant 64 bits of this UUID's 128 bit value.
*
* @return The most significant 64 bits of this UUID's 128 bit value
*/
public
long
getMostSignificantBits
()
{
return
mostSigBits
;
}
/**
* The version number associated with this {@code UUID}. The version number
* describes how this {@code UUID} was generated.
*
* The version number has the following meaning:
* <ul>
* <li>1 Time-based UUID
* <li>2 DCE security UUID
* <li>3 Name-based UUID
* <li>4 Randomly generated UUID
* </ul>
*
* @return The version number of this {@code UUID}
*/
public
int
version
()
{
// Version is bits masked by 0x000000000000F000 in MS long
return
(
int
)
((
mostSigBits
>>
12
)
&
0x0f
);
}
/**
* The variant number associated with this {@code UUID}. The variant number
* describes the layout of the {@code UUID}.
*
* The variant number has the following meaning:
* <ul>
* <li>0 Reserved for NCS backward compatibility
* <li>2 <a
* href="http://www.ietf.org/rfc/rfc4122.txt">IETF RFC 4122</a>
* (Leach-Salz), used by this class
* <li>6 Reserved, Microsoft Corporation backward compatibility
* <li>7 Reserved for future definition
* </ul>
*
* @return The variant number of this {@code UUID}
*/
public
int
variant
()
{
// This field is composed of a varying number of bits.
// 0 - - Reserved for NCS backward compatibility
// 1 0 - The IETF aka Leach-Salz variant (used by this class)
// 1 1 0 Reserved, Microsoft backward compatibility
// 1 1 1 Reserved for future definition.
return
(
int
)
((
leastSigBits
>>>
(
64
-
(
leastSigBits
>>>
62
)))
&
(
leastSigBits
>>
63
));
}
/**
* The timestamp value associated with this UUID.
*
* <p>
* The 60 bit timestamp value is constructed from the time_low, time_mid,
* and time_hi fields of this {@code UUID}. The resulting timestamp is
* measured in 100-nanosecond units since midnight, October 15, 1582 UTC.
*
* <p>
* The timestamp value is only meaningful in a time-based UUID, which has
* version type 1. If this {@code UUID} is not a time-based UUID then this
* method throws UnsupportedOperationException.
*
* @throws UnsupportedOperationException
* If this UUID is not a version 1 UUID
* @return The timestamp of this {@code UUID}.
*/
public
long
timestamp
()
{
if
(
version
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"Not a time-based UUID"
);
}
return
(
mostSigBits
&
0x0FFF
L
)
<<
48
|
((
mostSigBits
>>
16
)
&
0x0FFFF
L
)
<<
32
|
mostSigBits
>>>
32
;
}
/**
* The clock sequence value associated with this UUID.
*
* <p>
* The 14 bit clock sequence value is constructed from the clock sequence
* field of this UUID. The clock sequence field is used to guarantee
* temporal uniqueness in a time-based UUID.
*
* <p>
* The {@code clockSequence} value is only meaningful in a time-based UUID,
* which has version type 1. If this UUID is not a time-based UUID then this
* method throws UnsupportedOperationException.
*
* @return The clock sequence of this {@code UUID}
*
* @throws UnsupportedOperationException
* If this UUID is not a version 1 UUID
*/
public
int
clockSequence
()
{
if
(
version
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"Not a time-based UUID"
);
}
return
(
int
)
((
leastSigBits
&
0x3FFF000000000000
L
)
>>>
48
);
}
/**
* The node value associated with this UUID.
*
* <p>
* The 48 bit node value is constructed from the node field of this UUID.
* This field is intended to hold the IEEE 802 address of the machine that
* generated this UUID to guarantee spatial uniqueness.
*
* <p>
* The node value is only meaningful in a time-based UUID, which has version
* type 1. If this UUID is not a time-based UUID then this method throws
* UnsupportedOperationException.
*
* @return The node value of this {@code UUID}
*
* @throws UnsupportedOperationException
* If this UUID is not a version 1 UUID
*/
public
long
node
()
{
if
(
version
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"Not a time-based UUID"
);
}
return
leastSigBits
&
0x0000FFFFFFFFFFFF
L
;
}
// Object Inherited Methods
/**
* Returns a {@code String} object representing this {@code UUID}.
*
* <p>
* The UUID string representation is as described by this BNF: <blockquote>
*
* <pre>
* {@code
* UUID = <time_low> "-" <time_mid> "-"
* <time_high_and_version> "-"
* <variant_and_sequence> "-"
* <node>
* time_low = 4*<hexOctet>
* time_mid = 2*<hexOctet>
* time_high_and_version = 2*<hexOctet>
* variant_and_sequence = 2*<hexOctet>
* node = 6*<hexOctet>
* hexOctet = <hexDigit><hexDigit>
* hexDigit =
* "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
* | "a" | "b" | "c" | "d" | "e" | "f"
* | "A" | "B" | "C" | "D" | "E" | "F"
* }
* </pre>
*
* </blockquote>
*
* @return A string representation of this {@code UUID}
*/
@Override
long
mostSigBits
=
Long
.
decode
(
components
[
0
]).
longValue
();
mostSigBits
<<=
16
;
mostSigBits
|=
Long
.
decode
(
components
[
1
]).
longValue
();
mostSigBits
<<=
16
;
mostSigBits
|=
Long
.
decode
(
components
[
2
]).
longValue
();
long
leastSigBits
=
Long
.
decode
(
components
[
3
]).
longValue
();
leastSigBits
<<=
48
;
leastSigBits
|=
Long
.
decode
(
components
[
4
]).
longValue
();
return
new
UUIDUtils
(
mostSigBits
,
leastSigBits
);
}
// Field Accessor Methods
/**
* Returns the least significant 64 bits of this UUID's 128 bit value.
*
* @return The least significant 64 bits of this UUID's 128 bit value
*/
public
long
getLeastSignificantBits
()
{
return
leastSigBits
;
}
/**
* Returns the most significant 64 bits of this UUID's 128 bit value.
*
* @return The most significant 64 bits of this UUID's 128 bit value
*/
public
long
getMostSignificantBits
()
{
return
mostSigBits
;
}
/**
* The version number associated with this {@code UUID}. The version number
* describes how this {@code UUID} was generated.
* <p>
* The version number has the following meaning:
* <ul>
* <li>1 Time-based UUID
* <li>2 DCE security UUID
* <li>3 Name-based UUID
* <li>4 Randomly generated UUID
* </ul>
*
* @return The version number of this {@code UUID}
*/
public
int
version
()
{
// Version is bits masked by 0x000000000000F000 in MS long
return
(
int
)
((
mostSigBits
>>
12
)
&
0x0f
);
}
/**
* The variant number associated with this {@code UUID}. The variant number
* describes the layout of the {@code UUID}.
* <p>
* The variant number has the following meaning:
* <ul>
* <li>0 Reserved for NCS backward compatibility
* <li>2 <a
* href="http://www.ietf.org/rfc/rfc4122.txt">IETF RFC 4122</a>
* (Leach-Salz), used by this class
* <li>6 Reserved, Microsoft Corporation backward compatibility
* <li>7 Reserved for future definition
* </ul>
*
* @return The variant number of this {@code UUID}
*/
public
int
variant
()
{
// This field is composed of a varying number of bits.
// 0 - - Reserved for NCS backward compatibility
// 1 0 - The IETF aka Leach-Salz variant (used by this class)
// 1 1 0 Reserved, Microsoft backward compatibility
// 1 1 1 Reserved for future definition.
return
(
int
)
((
leastSigBits
>>>
(
64
-
(
leastSigBits
>>>
62
)))
&
(
leastSigBits
>>
63
));
}
/**
* The timestamp value associated with this UUID.
*
* <p>
* The 60 bit timestamp value is constructed from the time_low, time_mid,
* and time_hi fields of this {@code UUID}. The resulting timestamp is
* measured in 100-nanosecond units since midnight, October 15, 1582 UTC.
*
* <p>
* The timestamp value is only meaningful in a time-based UUID, which has
* version type 1. If this {@code UUID} is not a time-based UUID then this
* method throws UnsupportedOperationException.
*
* @return The timestamp of this {@code UUID}.
* @throws UnsupportedOperationException If this UUID is not a version 1 UUID
*/
public
long
timestamp
()
{
if
(
version
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"Not a time-based UUID"
);
}
return
(
mostSigBits
&
0x0FFF
L
)
<<
48
|
((
mostSigBits
>>
16
)
&
0x0FFFF
L
)
<<
32
|
mostSigBits
>>>
32
;
}
/**
* The clock sequence value associated with this UUID.
*
* <p>
* The 14 bit clock sequence value is constructed from the clock sequence
* field of this UUID. The clock sequence field is used to guarantee
* temporal uniqueness in a time-based UUID.
*
* <p>
* The {@code clockSequence} value is only meaningful in a time-based UUID,
* which has version type 1. If this UUID is not a time-based UUID then this
* method throws UnsupportedOperationException.
*
* @return The clock sequence of this {@code UUID}
* @throws UnsupportedOperationException If this UUID is not a version 1 UUID
*/
public
int
clockSequence
()
{
if
(
version
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"Not a time-based UUID"
);
}
return
(
int
)
((
leastSigBits
&
0x3FFF000000000000
L
)
>>>
48
);
}
/**
* The node value associated with this UUID.
*
* <p>
* The 48 bit node value is constructed from the node field of this UUID.
* This field is intended to hold the IEEE 802 address of the machine that
* generated this UUID to guarantee spatial uniqueness.
*
* <p>
* The node value is only meaningful in a time-based UUID, which has version
* type 1. If this UUID is not a time-based UUID then this method throws
* UnsupportedOperationException.
*
* @return The node value of this {@code UUID}
* @throws UnsupportedOperationException If this UUID is not a version 1 UUID
*/
public
long
node
()
{
if
(
version
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"Not a time-based UUID"
);
}
return
leastSigBits
&
0x0000FFFFFFFFFFFF
L
;
}
// Object Inherited Methods
/**
* Returns a {@code String} object representing this {@code UUID}.
*
* <p>
* The UUID string representation is as described by this BNF: <blockquote>
*
* <pre>
* {@code
* UUID = <time_low> "-" <time_mid> "-"
* <time_high_and_version> "-"
* <variant_and_sequence> "-"
* <node>
* time_low = 4*<hexOctet>
* time_mid = 2*<hexOctet>
* time_high_and_version = 2*<hexOctet>
* variant_and_sequence = 2*<hexOctet>
* node = 6*<hexOctet>
* hexOctet = <hexDigit><hexDigit>
* hexDigit =
* "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
* | "a" | "b" | "c" | "d" | "e" | "f"
* | "A" | "B" | "C" | "D" | "E" | "F"
* }
* </pre>
*
* </blockquote>
*
* @return A string representation of this {@code UUID}
*/
@Override
public
String
toString
()
{
return
(
digits
(
mostSigBits
>>
32
,
8
)
+
digits
(
mostSigBits
>>
16
,
4
)
+
digits
(
mostSigBits
,
4
)
+
digits
(
leastSigBits
>>
48
,
4
)
+
digits
(
leastSigBits
,
12
));
}
/** Returns val represented by the specified number of hex digits. */
private
static
String
digits
(
long
val
,
int
digits
)
{
long
hi
=
1L
<<
(
digits
*
4
);
return
Long
.
toHexString
(
hi
|
(
val
&
(
hi
-
1
))).
substring
(
1
);
}
/**
* Returns a hash code for this {@code UUID}.
*
* @return A hash code value for this {@code UUID}
*/
@Override
return
(
digits
(
mostSigBits
>>
32
,
8
)
+
digits
(
mostSigBits
>>
16
,
4
)
+
digits
(
mostSigBits
,
4
)
+
digits
(
leastSigBits
>>
48
,
4
)
+
digits
(
leastSigBits
,
12
));
}
/**
* Returns val represented by the specified number of hex digits.
*/
private
static
String
digits
(
long
val
,
int
digits
)
{
long
hi
=
1L
<<
(
digits
*
4
);
return
Long
.
toHexString
(
hi
|
(
val
&
(
hi
-
1
))).
substring
(
1
);
}
/**
* Returns a hash code for this {@code UUID}.
*
* @return A hash code value for this {@code UUID}
*/
@Override
public
int
hashCode
()
{
long
hilo
=
mostSigBits
^
leastSigBits
;
return
((
int
)
(
hilo
>>
32
))
^
(
int
)
hilo
;
}
/**
* Compares this object to the specified object. The result is {@code true}
* if and only if the argument is not {@code null}, is a {@code UUID}
* object, has the same variant, and contains the same value, bit for bit,
* as this {@code UUID}.
*
* @param obj
* The object to be compared
*
* @return {@code true} if the objects are the same; {@code false} otherwise
*/
@Override
long
hilo
=
mostSigBits
^
leastSigBits
;
return
((
int
)
(
hilo
>>
32
))
^
(
int
)
hilo
;
}
/**
* Compares this object to the specified object. The result is {@code true}
* if and only if the argument is not {@code null}, is a {@code UUID}
* object, has the same variant, and contains the same value, bit for bit,
* as this {@code UUID}.
*
* @param obj The object to be compared
* @return {@code true} if the objects are the same; {@code false} otherwise
*/
@Override
public
boolean
equals
(
Object
obj
)
{
if
((
null
==
obj
)
||
(
obj
.
getClass
()
!=
UUID
.
class
))
{
if
((
null
==
obj
)
||
(
obj
.
getClass
()
!=
UUID
.
class
))
{
return
false
;
}
UUIDUtils
id
=
(
UUIDUtils
)
obj
;
return
(
mostSigBits
==
id
.
mostSigBits
&&
leastSigBits
==
id
.
leastSigBits
);
}
// Comparison Operations
/**
* Compares this UUID with the specified UUID.
*
* <p>
* The first of two UUIDs is greater than the second if the most significant
* field in which the UUIDs differ is greater for the first UUID.
*
* @param val
* {@code UUID} to which this {@code UUID} is to be compared
*
* @return -1, 0 or 1 as this {@code UUID} is less than, equal to, or
* greater than {@code val}
*
*/
@Override
UUIDUtils
id
=
(
UUIDUtils
)
obj
;
return
(
mostSigBits
==
id
.
mostSigBits
&&
leastSigBits
==
id
.
leastSigBits
);
}
// Comparison Operations
/**
* Compares this UUID with the specified UUID.
*
* <p>
* The first of two UUIDs is greater than the second if the most significant
* field in which the UUIDs differ is greater for the first UUID.
*
* @param val {@code UUID} to which this {@code UUID} is to be compared
* @return -1, 0 or 1 as this {@code UUID} is less than, equal to, or
* greater than {@code val}
*/
@Override
public
int
compareTo
(
UUIDUtils
val
)
{
// The ordering is intentionally set up so that the UUIDs
// can simply be numerically compared as two numbers
return
(
this
.
mostSigBits
<
val
.
mostSigBits
?
-
1
:
(
this
.
mostSigBits
>
val
.
mostSigBits
?
1
:
(
this
.
leastSigBits
<
val
.
leastSigBits
?
-
1
:
(
this
.
leastSigBits
>
val
.
leastSigBits
?
1
:
0
))));
}
// The ordering is intentionally set up so that the UUIDs
// can simply be numerically compared as two numbers
return
(
this
.
mostSigBits
<
val
.
mostSigBits
?
-
1
:
(
this
.
mostSigBits
>
val
.
mostSigBits
?
1
:
(
this
.
leastSigBits
<
val
.
leastSigBits
?
-
1
:
(
this
.
leastSigBits
>
val
.
leastSigBits
?
1
:
0
))));
}
}
mybatis-starter/src/main/java/com/secoo/mall/mybatis/config/MybatisConfig.java
View file @
ea793295
...
...
@@ -50,7 +50,7 @@ public class MybatisConfig {
/* 乐观锁插件 */
// configuration.addInterceptor(new OptimisticLockerInterceptor());
//非生产环境加载的插件
if
(!
CommonConstant
.
Env
.
PRO
.
equals
(
profile
)
)
{
if
(!
CommonConstant
.
Env
.
PRO
.
equals
(
profile
))
{
configuration
.
addInterceptor
(
new
PerformanceInterceptor
());
}
...
...
openfeign-starter/src/main/java/com/secoo/mall/openfeign/config/FeignConfig.java
View file @
ea793295
package
com
.
secoo
.
mall
.
openfeign
.
config
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
...
...
pom.xml
View file @
ea793295
...
...
@@ -243,6 +243,12 @@
</exclusion>
</exclusions>
</dependency>
<!--rocketmq-->
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<version>
2.0.3
</version>
</dependency>
<!--swagger-->
<dependency>
<groupId>
io.springfox
</groupId>
...
...
rocketmq-starter/pom.xml
View file @
ea793295
...
...
@@ -10,6 +10,11 @@
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
rocketmq-starter
</artifactId>
<dependencies>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
web-starter/src/main/java/com/secoo/mall/web/advice/ControllerResponseAdvice.java
View file @
ea793295
...
...
@@ -3,12 +3,12 @@ package com.secoo.mall.web.advice;
import
com.secoo.mall.common.core.errorcode.CommonErrorCode
;
import
com.secoo.mall.common.core.exception.BusinessException
;
import
com.secoo.mall.common.core.exception.ParameterException
;
import
com.secoo.mall.common.core.exception.SystemInternalException
;
import
com.secoo.mall.common.util.log.LoggerUtil
;
import
com.secoo.mall.common.util.response.ResponseUtil
;
import
com.secoo.mall.web.annotation.ApiController
;
import
com.secoo.mall.web.annotation.ApiIgnoreJson
;
import
org.springframework.context.MessageSource
;
import
org.springframework.context.i18n.LocaleContext
;
import
org.springframework.context.i18n.LocaleContextHolder
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.core.annotation.AnnotationUtils
;
...
...
@@ -21,7 +21,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice
;
import
javax.annotation.Resource
;
import
java.util.Locale
;
@RestControllerAdvice
(
annotations
=
ApiController
.
class
)
public
class
ControllerResponseAdvice
implements
ResponseBodyAdvice
<
Object
>
{
...
...
@@ -41,7 +40,7 @@ public class ControllerResponseAdvice implements ResponseBodyAdvice<Object> {
return
ResponseUtil
.
getFailResponse
(
e
.
getCode
(),
msg
);
}
@ExceptionHandler
(
Exception
.
class
)
@ExceptionHandler
(
{
SystemInternalException
.
class
,
Exception
.
class
}
)
public
Object
exceptionHandler
(
Exception
e
)
{
LoggerUtil
.
error
(
e
);
return
ResponseUtil
.
getFailResponse
(
CommonErrorCode
.
SYSTEM_INTERNAL_EXCEPTION
.
getCode
(),
CommonErrorCode
.
SYSTEM_INTERNAL_EXCEPTION
.
getMsg
());
...
...
@@ -54,7 +53,7 @@ public class ControllerResponseAdvice implements ResponseBodyAdvice<Object> {
@Override
public
Object
beforeBodyWrite
(
Object
o
,
MethodParameter
methodParameter
,
MediaType
mediaType
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
,
ServerHttpRequest
serverHttpRequest
,
ServerHttpResponse
serverHttpResponse
)
{
return
ResponseUtil
.
getSuccessResponse
(
o
);
return
ResponseUtil
.
getSuccessResponse
(
o
);
}
private
String
getMsg
(
BusinessException
e
)
{
...
...
web-starter/src/main/java/com/secoo/mall/web/config/MultLangConfig.java
View file @
ea793295
package
com
.
secoo
.
mall
.
web
.
config
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.secoo.mall.web.resolver.DefaultLocaleResolver
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -11,7 +9,6 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
org.springframework.web.servlet.i18n.LocaleChangeInterceptor
;
import
java.text.SimpleDateFormat
;
import
java.util.Locale
;
/**
...
...
web-starter/src/main/java/com/secoo/mall/web/config/SwaggerConfig.java
View file @
ea793295
...
...
@@ -4,7 +4,6 @@ import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrap
import
com.secoo.mall.common.core.condition.ProdEnvCondition
;
import
com.secoo.mall.web.annotation.ApiController
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -29,12 +28,12 @@ public class SwaggerConfig {
@Bean
public
Docket
createRestApi
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
groupName
(
"SecooMall"
)
.
select
()
.
apis
(
RequestHandlerSelectors
.
withClassAnnotation
(
ApiController
.
class
))
.
paths
(
PathSelectors
.
any
())
.
paths
(
PathSelectors
.
any
())
.
build
();
}
...
...
web-starter/src/main/java/com/secoo/mall/web/config/WebConfig.java
View file @
ea793295
...
...
@@ -15,7 +15,7 @@ import java.util.List;
@Configuration
public
class
WebConfig
{
@Bean
public
HttpMessageConverters
fastJsonHttpMessageConverters
()
{
FastJsonHttpMessageConverter
fastJsonHttpMessageConverter
=
new
FastJsonHttpMessageConverter
();
...
...
web-starter/src/main/java/com/secoo/mall/web/resolver/DefaultLocaleResolver.java
View file @
ea793295
...
...
@@ -16,8 +16,8 @@ public class DefaultLocaleResolver extends CookieLocaleResolver {
protected
Locale
determineDefaultLocale
(
HttpServletRequest
request
)
{
if
(!
StringUtil
.
isEmpty
(
request
.
getHeader
(
"Accept-Language"
)))
{
Locale
locale
=
Locale
.
forLanguageTag
(
request
.
getHeader
(
"Accept-Language"
));
return
"zh"
.
equalsIgnoreCase
(
locale
.
toLanguageTag
())
?
super
.
determineDefaultLocale
(
request
):
locale
;
Locale
locale
=
Locale
.
forLanguageTag
(
request
.
getHeader
(
"Accept-Language"
));
return
"zh"
.
equalsIgnoreCase
(
locale
.
toLanguageTag
())
?
super
.
determineDefaultLocale
(
request
)
:
locale
;
}
String
lang
=
request
.
getParameter
(
"lang"
);
...
...
web-starter/src/main/java/com/secoo/mall/web/util/WebUtil.java
View file @
ea793295
...
...
@@ -39,8 +39,8 @@ public class WebUtil {
return
(
ServletRequestAttributes
)
attributes
;
}
public
static
<
T
>
void
setAttribute
(
String
name
,
T
obj
)
{
getRequest
().
setAttribute
(
name
,
obj
);
public
static
<
T
>
void
setAttribute
(
String
name
,
T
obj
)
{
getRequest
().
setAttribute
(
name
,
obj
);
}
}
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