记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
0965db7b
Commit
0965db7b
authored
Jun 10, 2021
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改 bug
parent
7259be96
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
497 additions
and
365 deletions
+497
-365
MemberUtil.java
...main/java/com/liquidnet/service/adam/util/MemberUtil.java
+1
-1
KylinTicketIgnoreVo.java
...dnet/service/kylin/dto/vo/ignore/KylinTicketIgnoreVo.java
+7
-6
KylinTicketTimesIgnoreVo.java
...service/kylin/dto/vo/ignore/KylinTicketTimesIgnoreVo.java
+3
-2
KylinTicketTimesVo.java
...idnet/service/kylin/dto/vo/middle/KylinTicketTimesVo.java
+3
-2
KylinTicketVo.java
.../liquidnet/service/kylin/dto/vo/middle/KylinTicketVo.java
+8
-7
MessageConfigVo.java
.../service/kylin/dto/vo/middle/message/MessageConfigVo.java
+9
-0
MessageDataVo.java
...et/service/kylin/dto/vo/middle/message/MessageDataVo.java
+9
-0
KylinPerformanceVo.java
...uidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
+5
-4
KylinBannersServiceImpl.java
.../zhengzai/kylin/service/impl/KylinBannersServiceImpl.java
+4
-3
MD5.java
...se/src/main/java/com/liquidnet/commons/lang/util/MD5.java
+337
-327
PerformancePartnerController.java
...ylin/controller/partner/PerformancePartnerController.java
+5
-0
BannersServiceImpl.java
...uidnet/service/kylin/service/impl/BannersServiceImpl.java
+2
-1
KylinOrderTicketsServiceImpl.java
...vice/kylin/service/impl/KylinOrderTicketsServiceImpl.java
+1
-4
KylinPerformancesServiceImpl.java
...vice/kylin/service/impl/KylinPerformancesServiceImpl.java
+5
-5
KylinPerformancesPartnerServiceImpl.java
...ice/impl/partner/KylinPerformancesPartnerServiceImpl.java
+1
-1
KylinTicketsPartnerServiceImpl.java
.../service/impl/partner/KylinTicketsPartnerServiceImpl.java
+3
-2
OtherUtils.java
...in/java/com/liquidnet/service/kylin/utils/OtherUtils.java
+94
-0
No files found.
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/util/MemberUtil.java
View file @
0965db7b
...
...
@@ -40,7 +40,7 @@ public class MemberUtil {
String
microTime
=
String
.
valueOf
(
calendar
.
getTimeInMillis
()
*
1000
).
substring
(
2
,
5
);
String
sign
=
word
.
concat
(
month
).
concat
(
day
).
concat
(
time
).
concat
(
microTime
);
sign
=
String
.
format
(
sign
+
"%02d"
,
rand
.
nextInt
(
99
));
sign
=
MD5
.
getStrMD5
(
sign
);
sign
=
MD5
.
getStrMD5
(
sign
,
null
);
String
s
=
"0123456789ABCDEFGHIJKLMNOPQRSTUV"
;
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/ignore/KylinTicketIgnoreVo.java
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
ignore
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.entity.KylinTicketStatus
;
import
com.liquidnet.service.kylin.entity.KylinTickets
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -81,12 +82,12 @@ public class KylinTicketIgnoreVo {
this
.
describes
=
ticket
.
getDescribes
();
this
.
describeExpress
=
ticket
.
getDescribeExpress
();
this
.
describeElectronic
=
ticket
.
getDescribeElectronic
();
this
.
timeStart
=
ticket
.
getTimeStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeEnd
=
ticket
.
getTimeEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
memberTimeStart
=
ticket
.
getTimeStart
().
plusMinutes
(-
ticket
.
getAdvanceMinuteMember
()).
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeEndExpress
=
ticket
.
getTimeEndExpress
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useStart
=
ticket
.
getUseStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useEnd
=
ticket
.
getUseEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeStart
(
));
this
.
timeEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeEnd
(
));
this
.
memberTimeStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeStart
().
plusMinutes
(-
ticket
.
getAdvanceMinuteMember
()
));
this
.
timeEndExpress
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeEndExpress
(
));
this
.
useStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getUseStart
(
));
this
.
useEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getUseEnd
(
));
this
.
saleRemindMinute
=
ticket
.
getSaleRemindMinute
();
}
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/ignore/KylinTicketTimesIgnoreVo.java
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
ignore
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.entity.KylinTicketTimes
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -31,7 +32,7 @@ public class KylinTicketTimesIgnoreVo {
this
.
ticketTimesId
=
ticketTimes
.
getTicketTimesId
();
this
.
title
=
ticketTimes
.
getTitle
();
this
.
type
=
ticketTimes
.
getType
();
this
.
useStart
=
ticketTimes
.
getUseStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useEnd
=
ticketTimes
.
getUseEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticketTimes
.
getUseStart
(
));
this
.
useEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticketTimes
.
getUseEnd
(
));
}
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/middle/KylinTicketTimesVo.java
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
middle
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.entity.KylinTicketTimes
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -34,7 +35,7 @@ public class KylinTicketTimesVo {
this
.
ticketTimesId
=
ticketTimes
.
getTicketTimesId
();
this
.
title
=
ticketTimes
.
getTitle
();
this
.
type
=
ticketTimes
.
getType
();
this
.
useStart
=
ticketTimes
.
getUseStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useEnd
=
ticketTimes
.
getUseEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticketTimes
.
getUseStart
(
));
this
.
useEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticketTimes
.
getUseEnd
(
));
}
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/middle/KylinTicketVo.java
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
middle
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.entity.KylinTicketStatus
;
import
com.liquidnet.service.kylin.entity.KylinTickets
;
import
io.swagger.annotations.ApiModel
;
...
...
@@ -100,17 +101,17 @@ public class KylinTicketVo {
this
.
describes
=
ticket
.
getDescribes
();
this
.
describeExpress
=
ticket
.
getDescribeExpress
();
this
.
describeElectronic
=
ticket
.
getDescribeElectronic
();
this
.
timeStart
=
ticket
.
getTimeStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeEnd
=
ticket
.
getTimeEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeStart
(
));
this
.
timeEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeEnd
(
));
this
.
advanceMinuteMember
=
ticket
.
getAdvanceMinuteMember
();
this
.
memberTimeStart
=
ticket
.
getTimeStart
().
plusMinutes
(-
ticket
.
getAdvanceMinuteMember
()).
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
memberTimeStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeStart
().
plusMinutes
(-
ticket
.
getAdvanceMinuteMember
()
));
if
(
ticket
.
getTimeEndExpress
()
!=
null
)
{
this
.
timeEndExpress
=
ticket
.
getTimeEndExpress
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeEndExpress
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getTimeEndExpress
(
));
}
else
{
this
.
timeEndExpress
=
null
;
}
this
.
useStart
=
ticket
.
getUseStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useEnd
=
ticket
.
getUseEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
useStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getUseStart
(
));
this
.
useEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticket
.
getUseEnd
(
));
this
.
saleRemindMinute
=
ticket
.
getSaleRemindMinute
();
}
...
...
@@ -131,7 +132,7 @@ public class KylinTicketVo {
this
.
counts
=
ticketStatus
.
getCounts
();
this
.
sysDamai
=
ticketStatus
.
getSyncDamai
();
this
.
isShowCode
=
ticketStatus
.
getIsShowCode
();
this
.
qrCodeShowTime
=
ticketStatus
.
getQrCodeShowTime
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
qrCodeShowTime
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticketStatus
.
getQrCodeShowTime
(
));
}
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/middle/message/MessageConfigVo.java
0 → 100644
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
middle
.
message
;
import
lombok.Data
;
@Data
public
class
MessageConfigVo
{
private
Boolean
status
;
private
String
id
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/middle/message/MessageDataVo.java
0 → 100644
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
middle
.
message
;
import
lombok.Data
;
@Data
public
class
MessageDataVo
{
private
String
name
;
private
String
time
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
mongo
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo
;
import
com.liquidnet.service.kylin.entity.KylinFields
;
import
com.liquidnet.service.kylin.entity.KylinPerformanceRelations
;
...
...
@@ -103,8 +104,8 @@ public class KylinPerformanceVo {
this
.
performancesId
=
performance
.
getPerformancesId
();
this
.
title
=
performance
.
getTitle
();
this
.
imgPoster
=
performance
.
getImgPoster
();
this
.
timeStart
=
performance
.
getTimeStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeEnd
=
performance
.
getTimeEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
this
.
timeStart
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
performance
.
getTimeStart
(
));
this
.
timeEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
performance
.
getTimeEnd
(
));
this
.
type
=
performance
.
getType
();
this
.
details
=
performance
.
getDetails
();
this
.
noticeImage
=
performance
.
getNoticeImage
();
...
...
@@ -115,8 +116,8 @@ public class KylinPerformanceVo {
this
.
isMember
=
isMember
;
this
.
isExclusive
=
isExclusive
;
this
.
price
=
price
+
"起"
;
this
.
stopSellTime
=
stopSellTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
this
.
sellTime
=
sellTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
this
.
stopSellTime
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
stopSellTime
);
this
.
sellTime
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
sellTime
);
this
.
appStatus
=
9
;
this
.
isDiscount
=
isDiscount
;
this
.
isAdvance
=
isAdvance
;
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinBannersServiceImpl.java
View file @
0965db7b
...
...
@@ -8,6 +8,7 @@ import com.github.pagehelper.PageInfo;
import
com.liquidnet.client.admin.common.enums.BannersTargetType
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.BeanUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
...
...
@@ -70,7 +71,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
// 时间
String
bannersId
=
IDGenerator
.
nextSnowId
().
toString
();
LocalDateTime
createdAt
=
LocalDateTime
.
now
();
String
createdAtString
=
createdAt
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
createdAtString
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
createdAt
);
if
(
StringUtils
.
isEmpty
(
bannersParam
.
getOnlineStartTime
()))
{
bannersParam
.
setOnlineStartTime
(
null
);
}
...
...
@@ -143,7 +144,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
// 时间
String
bannersId
=
bannersParam
.
getBannersId
();
LocalDateTime
updatedAt
=
LocalDateTime
.
now
();
String
updatedAtString
=
updatedAt
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
updatedAtString
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
updatedAt
);
KylinBanners
params
=
bannersParam
.
getFields
(
null
,
null
);
params
.
setUpdatedAt
(
updatedAtString
);
...
...
@@ -258,7 +259,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
public
Boolean
delete
(
List
<
String
>
bannersId
)
{
try
{
LocalDateTime
updatedAt
=
LocalDateTime
.
now
();
String
updatedAtString
=
updatedAt
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
updatedAtString
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
updatedAt
);
KylinBanners
kylinBanners
=
new
KylinBanners
();
kylinBanners
.
setUpdatedAt
(
updatedAtString
);
...
...
liquidnet-bus-common/liquidnet-common-base/src/main/java/com/liquidnet/commons/lang/util/MD5.java
View file @
0965db7b
...
...
@@ -4,369 +4,379 @@
*/
package
com
.
liquidnet
.
commons
.
lang
.
util
;
import
java.io.UnsupportedEncodingException
;
/**
*
* @author <a href="mailto:yupengfei@kowlone.com">kowlone</a>
* @version 1.0 2015年10月27日 上午10:09:02
*/
public
class
MD5
{
/** S11-S44为4*4的矩阵,只读,在且能在同一个进程空间内的多个Instance间共享 */
static
final
int
S11
=
7
;
/**
* S11-S44为4*4的矩阵,只读,在且能在同一个进程空间内的多个Instance间共享
*/
static
final
int
S11
=
7
;
static
final
int
S12
=
12
;
static
final
int
S13
=
17
;
static
final
int
S14
=
22
;
static
final
int
S21
=
5
;
static
final
int
S22
=
9
;
static
final
int
S12
=
12
;
static
final
int
S23
=
14
;
static
final
int
S13
=
17
;
static
final
int
S24
=
20
;
static
final
int
S14
=
22
;
static
final
int
S31
=
4
;
static
final
int
S21
=
5
;
static
final
int
S32
=
11
;
static
final
int
S22
=
9
;
static
final
int
S23
=
14
;
static
final
int
S33
=
16
;
static
final
int
S24
=
20
;
static
final
int
S34
=
23
;
static
final
int
S31
=
4
;
static
final
int
S41
=
6
;
static
final
int
S32
=
11
;
static
final
int
S42
=
10
;
static
final
int
S33
=
16
;
static
final
int
S43
=
15
;
static
final
int
S34
=
23
;
static
final
int
S44
=
21
;
static
final
int
S41
=
6
;
static
final
byte
[]
PADDING
=
{-
128
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
static
final
int
S42
=
10
;
/*
* 下面的三个成员是MD5计算过程中用到的3个核心数据,在原始的C实现中 被定义到MD5_CTX结构中
*/
private
long
[]
state
=
new
long
[
4
];
// state (ABCD)
static
final
int
S43
=
15
;
private
long
[]
count
=
new
long
[
2
];
// number of bits, modulo 2^64 (lsb
// first)
static
final
int
S44
=
21
;
private
byte
[]
buffer
=
new
byte
[
64
];
// input buffer
static
final
byte
[]
PADDING
=
{
-
128
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
/*
* 下面的三个成员是MD5计算过程中用到的3个核心数据,在原始的C实现中 被定义到MD5_CTX结构中
*/
private
long
[]
state
=
new
long
[
4
];
// state (ABCD)
private
long
[]
count
=
new
long
[
2
];
// number of bits, modulo 2^64 (lsb
// first)
private
byte
[]
buffer
=
new
byte
[
64
];
// input buffer
/*
* digestHexStr是MD5的唯一一个公共成员,是最新一次计算结果的 16进制ASCII表示.
*/
public
String
digestHexStr
;
/*
* digest,是最新一次计算结果的2进制内部表示,表示128bit的MD5值.
*/
private
byte
[]
digest
=
new
byte
[
16
];
/**
* 类MD5最主要的公共方法,变换完的结果从公共成员digestHexStr取得的.
*
* @param inbuf
* 进行MD5变换的字符串
* @return String 变换完的结果
*/
public
String
getMD5ofStr
(
String
inbuf
)
{
md5Init
();
md5Update
(
inbuf
.
getBytes
(),
inbuf
.
length
());
md5Final
();
digestHexStr
=
""
;
for
(
int
i
=
0
;
i
<
16
;
i
++)
{
digestHexStr
+=
byteHEX
(
digest
[
i
]);
}
return
digestHexStr
;
}
static
class
SingletonHolder
{
static
MD5
instance
=
new
MD5
();
}
/**
* 得到字符串的MD5结果
*
* @param str
* 进行MD5变换的字符串
* @return String 变换完的结果
*/
public
static
String
getStrMD5
(
String
str
)
{
return
SingletonHolder
.
instance
.
getMD5ofStr
(
str
);
}
// 这是MD5这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数
public
MD5
()
{
md5Init
();
return
;
}
/* md5Init是一个初始化函数,初始化核心变量,装入标准的幻数 */
private
void
md5Init
()
{
count
[
0
]
=
0L
;
count
[
1
]
=
0L
;
// /* Load magic initialization constants.
state
[
0
]
=
0x67452301
L
;
state
[
1
]
=
0xefcdab89
L
;
state
[
2
]
=
0x98badcfe
L
;
state
[
3
]
=
0x10325476
L
;
return
;
}
/*
* F, G, H ,I 是4个基本的MD5函数,在原始的MD5的C实现中,由于它们是
* 简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们 实现成了private方法,名字保持了原来C中的。
*/
private
long
F
(
long
x
,
long
y
,
long
z
)
{
return
(
x
&
y
)
|
((~
x
)
&
z
);
}
private
long
G
(
long
x
,
long
y
,
long
z
)
{
return
(
x
&
z
)
|
(
y
&
(~
z
));
}
private
long
H
(
long
x
,
long
y
,
long
z
)
{
return
x
^
y
^
z
;
}
private
long
I
(
long
x
,
long
y
,
long
z
)
{
return
y
^
(
x
|
(~
z
));
}
/*
* FF,GG,HH和II将调用F,G,H,I进行近一步变换 FF, GG, HH, and II transformations for
* rounds 1, 2, 3, and 4. Rotation is separate from addition to prevent
* recomputation.
*/
private
long
FF
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
F
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
private
long
GG
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
G
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
private
long
HH
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
H
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
private
long
II
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
I
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
/*
* md5Update是MD5的主计算过程,inbuf是要变换的字节串,inputlen是长度,这个
* 函数由getMD5ofStr调用,调用之前需要调用md5init,因此把它设计成private的
*/
private
void
md5Update
(
byte
[]
inbuf
,
int
inputLen
)
{
int
i
,
index
,
partLen
;
byte
[]
block
=
new
byte
[
64
];
index
=
(
int
)
(
count
[
0
]
>>>
3
)
&
0x3F
;
// /* Update number of bits */
if
((
count
[
0
]
+=
(
inputLen
<<
3
))
<
(
inputLen
<<
3
))
{
/*
* digestHexStr是MD5的唯一一个公共成员,是最新一次计算结果的 16进制ASCII表示.
*/
public
String
digestHexStr
;
/*
* digest,是最新一次计算结果的2进制内部表示,表示128bit的MD5值.
*/
private
byte
[]
digest
=
new
byte
[
16
];
/**
* 类MD5最主要的公共方法,变换完的结果从公共成员digestHexStr取得的.
*
* @param inbuf 进行MD5变换的字符串
* @return String 变换完的结果
*/
public
String
getMD5ofStr
(
String
inbuf
,
String
charsetStr
)
throws
UnsupportedEncodingException
{
md5Init
();
if
(
null
==
charsetStr
)
{
md5Update
(
inbuf
.
getBytes
(),
inbuf
.
length
());
}
else
{
md5Update
(
inbuf
.
getBytes
(
charsetStr
),
inbuf
.
length
());
}
md5Final
();
digestHexStr
=
""
;
for
(
int
i
=
0
;
i
<
16
;
i
++)
{
digestHexStr
+=
byteHEX
(
digest
[
i
]);
}
return
digestHexStr
;
}
static
class
SingletonHolder
{
static
MD5
instance
=
new
MD5
();
}
/**
* 得到字符串的MD5结果
*
* @param str 进行MD5变换的字符串
* @return String 变换完的结果
*/
public
static
String
getStrMD5
(
String
str
,
String
charsetStr
)
{
try
{
return
SingletonHolder
.
instance
.
getMD5ofStr
(
str
,
charsetStr
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
""
;
}
}
// 这是MD5这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数
public
MD5
()
{
md5Init
();
return
;
}
/* md5Init是一个初始化函数,初始化核心变量,装入标准的幻数 */
private
void
md5Init
()
{
count
[
0
]
=
0L
;
count
[
1
]
=
0L
;
// /* Load magic initialization constants.
state
[
0
]
=
0x67452301
L
;
state
[
1
]
=
0xefcdab89
L
;
state
[
2
]
=
0x98badcfe
L
;
state
[
3
]
=
0x10325476
L
;
return
;
}
/*
* F, G, H ,I 是4个基本的MD5函数,在原始的MD5的C实现中,由于它们是
* 简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们 实现成了private方法,名字保持了原来C中的。
*/
private
long
F
(
long
x
,
long
y
,
long
z
)
{
return
(
x
&
y
)
|
((~
x
)
&
z
);
}
private
long
G
(
long
x
,
long
y
,
long
z
)
{
return
(
x
&
z
)
|
(
y
&
(~
z
));
}
private
long
H
(
long
x
,
long
y
,
long
z
)
{
return
x
^
y
^
z
;
}
private
long
I
(
long
x
,
long
y
,
long
z
)
{
return
y
^
(
x
|
(~
z
));
}
/*
* FF,GG,HH和II将调用F,G,H,I进行近一步变换 FF, GG, HH, and II transformations for
* rounds 1, 2, 3, and 4. Rotation is separate from addition to prevent
* recomputation.
*/
private
long
FF
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
F
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
private
long
GG
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
G
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
private
long
HH
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
H
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
private
long
II
(
long
a
,
long
b
,
long
c
,
long
d
,
long
x
,
long
s
,
long
ac
)
{
a
+=
I
(
b
,
c
,
d
)
+
x
+
ac
;
a
=
((
int
)
a
<<
s
)
|
((
int
)
a
>>>
(
32
-
s
));
a
+=
b
;
return
a
;
}
/*
* md5Update是MD5的主计算过程,inbuf是要变换的字节串,inputlen是长度,这个
* 函数由getMD5ofStr调用,调用之前需要调用md5init,因此把它设计成private的
*/
private
void
md5Update
(
byte
[]
inbuf
,
int
inputLen
)
{
int
i
,
index
,
partLen
;
byte
[]
block
=
new
byte
[
64
];
index
=
(
int
)
(
count
[
0
]
>>>
3
)
&
0x3F
;
// /* Update number of bits */
if
((
count
[
0
]
+=
(
inputLen
<<
3
))
<
(
inputLen
<<
3
))
{
count
[
1
]++;
}
count
[
1
]
+=
(
inputLen
>>>
29
);
partLen
=
64
-
index
;
// Transform as many times as possible.
if
(
inputLen
>=
partLen
)
{
md5Memcpy
(
buffer
,
inbuf
,
index
,
0
,
partLen
);
md5Transform
(
buffer
);
for
(
i
=
partLen
;
i
+
63
<
inputLen
;
i
+=
64
)
{
md5Memcpy
(
block
,
inbuf
,
0
,
i
,
64
);
md5Transform
(
block
);
}
index
=
0
;
}
else
{
count
[
1
]
+=
(
inputLen
>>>
29
);
partLen
=
64
-
index
;
// Transform as many times as possible.
if
(
inputLen
>=
partLen
)
{
md5Memcpy
(
buffer
,
inbuf
,
index
,
0
,
partLen
);
md5Transform
(
buffer
);
for
(
i
=
partLen
;
i
+
63
<
inputLen
;
i
+=
64
)
{
md5Memcpy
(
block
,
inbuf
,
0
,
i
,
64
);
md5Transform
(
block
);
}
index
=
0
;
}
else
{
i
=
0
;
}
// /* Buffer remaining input */
md5Memcpy
(
buffer
,
inbuf
,
index
,
i
,
inputLen
-
i
);
}
// /* Buffer remaining input */
md5Memcpy
(
buffer
,
inbuf
,
index
,
i
,
inputLen
-
i
);
}
/*
* md5Final整理和填写输出结果
*/
private
void
md5Final
()
{
byte
[]
bits
=
new
byte
[
8
];
int
index
,
padLen
;
/*
* md5Final整理和填写输出结果
*/
private
void
md5Final
()
{
byte
[]
bits
=
new
byte
[
8
];
int
index
,
padLen
;
// /* Save number of bits */
Encode
(
bits
,
count
,
8
);
// /* Save number of bits */
Encode
(
bits
,
count
,
8
);
// /* Pad out to 56 mod 64.
index
=
(
int
)
(
count
[
0
]
>>>
3
)
&
0x3f
;
padLen
=
(
index
<
56
)
?
(
56
-
index
)
:
(
120
-
index
);
md5Update
(
PADDING
,
padLen
);
// /* Pad out to 56 mod 64.
index
=
(
int
)
(
count
[
0
]
>>>
3
)
&
0x3f
;
padLen
=
(
index
<
56
)
?
(
56
-
index
)
:
(
120
-
index
);
md5Update
(
PADDING
,
padLen
);
// /* Append length (before padding) */
md5Update
(
bits
,
8
);
// /* Append length (before padding) */
md5Update
(
bits
,
8
);
// /* Store state in digest */
Encode
(
digest
,
state
,
16
);
// /* Store state in digest */
Encode
(
digest
,
state
,
16
);
}
}
/*
* md5Memcpy是一个内部使用的byte数组的块拷贝函数,从input的inpos开始把len长度的
* 字节拷贝到output的outpos位置开始
*/
private
void
md5Memcpy
(
byte
[]
output
,
byte
[]
input
,
int
outpos
,
int
inpos
,
int
len
)
{
int
i
;
/*
* md5Memcpy是一个内部使用的byte数组的块拷贝函数,从input的inpos开始把len长度的
* 字节拷贝到output的outpos位置开始
*/
private
void
md5Memcpy
(
byte
[]
output
,
byte
[]
input
,
int
outpos
,
int
inpos
,
int
len
)
{
int
i
;
for
(
i
=
0
;
i
<
len
;
i
++)
{
for
(
i
=
0
;
i
<
len
;
i
++)
{
output
[
outpos
+
i
]
=
input
[
inpos
+
i
];
}
}
/*
* md5Transform是MD5核心变换程序,有md5Update调用,block是分块的原始字节
*/
private
void
md5Transform
(
byte
block
[])
{
long
a
=
state
[
0
],
b
=
state
[
1
],
c
=
state
[
2
],
d
=
state
[
3
];
long
[]
x
=
new
long
[
16
];
Decode
(
x
,
block
,
64
);
/* Round 1 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
0
],
S11
,
0xd76aa478
L
);
/* 1 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
1
],
S12
,
0xe8c7b756
L
);
/* 2 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
2
],
S13
,
0x242070db
L
);
/* 3 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
3
],
S14
,
0xc1bdceee
L
);
/* 4 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
4
],
S11
,
0xf57c0faf
L
);
/* 5 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
5
],
S12
,
0x4787c62a
L
);
/* 6 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
6
],
S13
,
0xa8304613
L
);
/* 7 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
7
],
S14
,
0xfd469501
L
);
/* 8 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
8
],
S11
,
0x698098d8
L
);
/* 9 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
9
],
S12
,
0x8b44f7af
L
);
/* 10 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
10
],
S13
,
0xffff5bb1
L
);
/* 11 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
11
],
S14
,
0x895cd7be
L
);
/* 12 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
12
],
S11
,
0x6b901122
L
);
/* 13 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
13
],
S12
,
0xfd987193
L
);
/* 14 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
14
],
S13
,
0xa679438e
L
);
/* 15 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
15
],
S14
,
0x49b40821
L
);
/* 16 */
/* Round 2 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
1
],
S21
,
0xf61e2562
L
);
/* 17 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
6
],
S22
,
0xc040b340
L
);
/* 18 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
11
],
S23
,
0x265e5a51
L
);
/* 19 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
0
],
S24
,
0xe9b6c7aa
L
);
/* 20 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
5
],
S21
,
0xd62f105d
L
);
/* 21 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
10
],
S22
,
0x2441453
L
);
/* 22 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
15
],
S23
,
0xd8a1e681
L
);
/* 23 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
4
],
S24
,
0xe7d3fbc8
L
);
/* 24 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
9
],
S21
,
0x21e1cde6
L
);
/* 25 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
14
],
S22
,
0xc33707d6
L
);
/* 26 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
3
],
S23
,
0xf4d50d87
L
);
/* 27 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
8
],
S24
,
0x455a14ed
L
);
/* 28 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
13
],
S21
,
0xa9e3e905
L
);
/* 29 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
2
],
S22
,
0xfcefa3f8
L
);
/* 30 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
7
],
S23
,
0x676f02d9
L
);
/* 31 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
12
],
S24
,
0x8d2a4c8a
L
);
/* 32 */
/* Round 3 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
5
],
S31
,
0xfffa3942
L
);
/* 33 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
8
],
S32
,
0x8771f681
L
);
/* 34 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
11
],
S33
,
0x6d9d6122
L
);
/* 35 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
14
],
S34
,
0xfde5380c
L
);
/* 36 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
1
],
S31
,
0xa4beea44
L
);
/* 37 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
4
],
S32
,
0x4bdecfa9
L
);
/* 38 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
7
],
S33
,
0xf6bb4b60
L
);
/* 39 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
10
],
S34
,
0xbebfbc70
L
);
/* 40 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
13
],
S31
,
0x289b7ec6
L
);
/* 41 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
0
],
S32
,
0xeaa127fa
L
);
/* 42 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
3
],
S33
,
0xd4ef3085
L
);
/* 43 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
6
],
S34
,
0x4881d05
L
);
/* 44 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
9
],
S31
,
0xd9d4d039
L
);
/* 45 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
12
],
S32
,
0xe6db99e5
L
);
/* 46 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
15
],
S33
,
0x1fa27cf8
L
);
/* 47 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
2
],
S34
,
0xc4ac5665
L
);
/* 48 */
/* Round 4 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
0
],
S41
,
0xf4292244
L
);
/* 49 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
7
],
S42
,
0x432aff97
L
);
/* 50 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
14
],
S43
,
0xab9423a7
L
);
/* 51 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
5
],
S44
,
0xfc93a039
L
);
/* 52 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
12
],
S41
,
0x655b59c3
L
);
/* 53 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
3
],
S42
,
0x8f0ccc92
L
);
/* 54 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
10
],
S43
,
0xffeff47d
L
);
/* 55 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
1
],
S44
,
0x85845dd1
L
);
/* 56 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
8
],
S41
,
0x6fa87e4f
L
);
/* 57 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
15
],
S42
,
0xfe2ce6e0
L
);
/* 58 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
6
],
S43
,
0xa3014314
L
);
/* 59 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
13
],
S44
,
0x4e0811a1
L
);
/* 60 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
4
],
S41
,
0xf7537e82
L
);
/* 61 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
11
],
S42
,
0xbd3af235
L
);
/* 62 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
2
],
S43
,
0x2ad7d2bb
L
);
/* 63 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
9
],
S44
,
0xeb86d391
L
);
/* 64 */
state
[
0
]
+=
a
;
state
[
1
]
+=
b
;
state
[
2
]
+=
c
;
state
[
3
]
+=
d
;
}
/*
* Encode把long数组按顺序拆成byte数组,因为java的long类型是64bit的, 只拆低32bit,以适应原始C实现的用途
*/
private
void
Encode
(
byte
[]
output
,
long
[]
input
,
int
len
)
{
int
i
,
j
;
for
(
i
=
0
,
j
=
0
;
j
<
len
;
i
++,
j
+=
4
)
{
output
[
j
]
=
(
byte
)
(
input
[
i
]
&
0xff
L
);
output
[
j
+
1
]
=
(
byte
)
((
input
[
i
]
>>>
8
)
&
0xff
L
);
output
[
j
+
2
]
=
(
byte
)
((
input
[
i
]
>>>
16
)
&
0xff
L
);
output
[
j
+
3
]
=
(
byte
)
((
input
[
i
]
>>>
24
)
&
0xff
L
);
}
}
/*
* Decode把byte数组按顺序合成成long数组,因为java的long类型是64bit的,
* 只合成低32bit,高32bit清零,以适应原始C实现的用途
*/
private
void
Decode
(
long
[]
output
,
byte
[]
input
,
int
len
)
{
int
i
,
j
;
for
(
i
=
0
,
j
=
0
;
j
<
len
;
i
++,
j
+=
4
)
{
}
/*
* md5Transform是MD5核心变换程序,有md5Update调用,block是分块的原始字节
*/
private
void
md5Transform
(
byte
block
[])
{
long
a
=
state
[
0
],
b
=
state
[
1
],
c
=
state
[
2
],
d
=
state
[
3
];
long
[]
x
=
new
long
[
16
];
Decode
(
x
,
block
,
64
);
/* Round 1 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
0
],
S11
,
0xd76aa478
L
);
/* 1 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
1
],
S12
,
0xe8c7b756
L
);
/* 2 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
2
],
S13
,
0x242070db
L
);
/* 3 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
3
],
S14
,
0xc1bdceee
L
);
/* 4 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
4
],
S11
,
0xf57c0faf
L
);
/* 5 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
5
],
S12
,
0x4787c62a
L
);
/* 6 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
6
],
S13
,
0xa8304613
L
);
/* 7 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
7
],
S14
,
0xfd469501
L
);
/* 8 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
8
],
S11
,
0x698098d8
L
);
/* 9 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
9
],
S12
,
0x8b44f7af
L
);
/* 10 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
10
],
S13
,
0xffff5bb1
L
);
/* 11 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
11
],
S14
,
0x895cd7be
L
);
/* 12 */
a
=
FF
(
a
,
b
,
c
,
d
,
x
[
12
],
S11
,
0x6b901122
L
);
/* 13 */
d
=
FF
(
d
,
a
,
b
,
c
,
x
[
13
],
S12
,
0xfd987193
L
);
/* 14 */
c
=
FF
(
c
,
d
,
a
,
b
,
x
[
14
],
S13
,
0xa679438e
L
);
/* 15 */
b
=
FF
(
b
,
c
,
d
,
a
,
x
[
15
],
S14
,
0x49b40821
L
);
/* 16 */
/* Round 2 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
1
],
S21
,
0xf61e2562
L
);
/* 17 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
6
],
S22
,
0xc040b340
L
);
/* 18 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
11
],
S23
,
0x265e5a51
L
);
/* 19 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
0
],
S24
,
0xe9b6c7aa
L
);
/* 20 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
5
],
S21
,
0xd62f105d
L
);
/* 21 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
10
],
S22
,
0x2441453
L
);
/* 22 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
15
],
S23
,
0xd8a1e681
L
);
/* 23 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
4
],
S24
,
0xe7d3fbc8
L
);
/* 24 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
9
],
S21
,
0x21e1cde6
L
);
/* 25 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
14
],
S22
,
0xc33707d6
L
);
/* 26 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
3
],
S23
,
0xf4d50d87
L
);
/* 27 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
8
],
S24
,
0x455a14ed
L
);
/* 28 */
a
=
GG
(
a
,
b
,
c
,
d
,
x
[
13
],
S21
,
0xa9e3e905
L
);
/* 29 */
d
=
GG
(
d
,
a
,
b
,
c
,
x
[
2
],
S22
,
0xfcefa3f8
L
);
/* 30 */
c
=
GG
(
c
,
d
,
a
,
b
,
x
[
7
],
S23
,
0x676f02d9
L
);
/* 31 */
b
=
GG
(
b
,
c
,
d
,
a
,
x
[
12
],
S24
,
0x8d2a4c8a
L
);
/* 32 */
/* Round 3 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
5
],
S31
,
0xfffa3942
L
);
/* 33 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
8
],
S32
,
0x8771f681
L
);
/* 34 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
11
],
S33
,
0x6d9d6122
L
);
/* 35 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
14
],
S34
,
0xfde5380c
L
);
/* 36 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
1
],
S31
,
0xa4beea44
L
);
/* 37 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
4
],
S32
,
0x4bdecfa9
L
);
/* 38 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
7
],
S33
,
0xf6bb4b60
L
);
/* 39 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
10
],
S34
,
0xbebfbc70
L
);
/* 40 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
13
],
S31
,
0x289b7ec6
L
);
/* 41 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
0
],
S32
,
0xeaa127fa
L
);
/* 42 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
3
],
S33
,
0xd4ef3085
L
);
/* 43 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
6
],
S34
,
0x4881d05
L
);
/* 44 */
a
=
HH
(
a
,
b
,
c
,
d
,
x
[
9
],
S31
,
0xd9d4d039
L
);
/* 45 */
d
=
HH
(
d
,
a
,
b
,
c
,
x
[
12
],
S32
,
0xe6db99e5
L
);
/* 46 */
c
=
HH
(
c
,
d
,
a
,
b
,
x
[
15
],
S33
,
0x1fa27cf8
L
);
/* 47 */
b
=
HH
(
b
,
c
,
d
,
a
,
x
[
2
],
S34
,
0xc4ac5665
L
);
/* 48 */
/* Round 4 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
0
],
S41
,
0xf4292244
L
);
/* 49 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
7
],
S42
,
0x432aff97
L
);
/* 50 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
14
],
S43
,
0xab9423a7
L
);
/* 51 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
5
],
S44
,
0xfc93a039
L
);
/* 52 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
12
],
S41
,
0x655b59c3
L
);
/* 53 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
3
],
S42
,
0x8f0ccc92
L
);
/* 54 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
10
],
S43
,
0xffeff47d
L
);
/* 55 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
1
],
S44
,
0x85845dd1
L
);
/* 56 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
8
],
S41
,
0x6fa87e4f
L
);
/* 57 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
15
],
S42
,
0xfe2ce6e0
L
);
/* 58 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
6
],
S43
,
0xa3014314
L
);
/* 59 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
13
],
S44
,
0x4e0811a1
L
);
/* 60 */
a
=
II
(
a
,
b
,
c
,
d
,
x
[
4
],
S41
,
0xf7537e82
L
);
/* 61 */
d
=
II
(
d
,
a
,
b
,
c
,
x
[
11
],
S42
,
0xbd3af235
L
);
/* 62 */
c
=
II
(
c
,
d
,
a
,
b
,
x
[
2
],
S43
,
0x2ad7d2bb
L
);
/* 63 */
b
=
II
(
b
,
c
,
d
,
a
,
x
[
9
],
S44
,
0xeb86d391
L
);
/* 64 */
state
[
0
]
+=
a
;
state
[
1
]
+=
b
;
state
[
2
]
+=
c
;
state
[
3
]
+=
d
;
}
/*
* Encode把long数组按顺序拆成byte数组,因为java的long类型是64bit的, 只拆低32bit,以适应原始C实现的用途
*/
private
void
Encode
(
byte
[]
output
,
long
[]
input
,
int
len
)
{
int
i
,
j
;
for
(
i
=
0
,
j
=
0
;
j
<
len
;
i
++,
j
+=
4
)
{
output
[
j
]
=
(
byte
)
(
input
[
i
]
&
0xff
L
);
output
[
j
+
1
]
=
(
byte
)
((
input
[
i
]
>>>
8
)
&
0xff
L
);
output
[
j
+
2
]
=
(
byte
)
((
input
[
i
]
>>>
16
)
&
0xff
L
);
output
[
j
+
3
]
=
(
byte
)
((
input
[
i
]
>>>
24
)
&
0xff
L
);
}
}
/*
* Decode把byte数组按顺序合成成long数组,因为java的long类型是64bit的,
* 只合成低32bit,高32bit清零,以适应原始C实现的用途
*/
private
void
Decode
(
long
[]
output
,
byte
[]
input
,
int
len
)
{
int
i
,
j
;
for
(
i
=
0
,
j
=
0
;
j
<
len
;
i
++,
j
+=
4
)
{
output
[
i
]
=
b2iu
(
input
[
j
])
|
(
b2iu
(
input
[
j
+
1
])
<<
8
)
|
(
b2iu
(
input
[
j
+
2
])
<<
16
)
|
(
b2iu
(
input
[
j
+
3
])
<<
24
);
|
(
b2iu
(
input
[
j
+
3
])
<<
24
);
}
return
;
}
/**
* b2iu把byte按照不考虑正负号的原则的"升位"程序, 因为java没有unsigned运算
*/
public
static
long
b2iu
(
byte
b
)
{
return
b
<
0
?
b
&
0x7F
+
128
:
b
;
}
/**
* 用来把一个byte类型的数转换成十六进制的ASCII表示, 因为java中的byte的toString无法实现这一点,我们又没有C语言中的
* sprintf(outbuf,"%02X",ib)
*/
public
static
String
byteHEX
(
byte
ib
)
{
// char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
// 'A', 'B', 'C', 'D', 'E', 'F' };
char
[]
Digit
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
char
[]
ob
=
new
char
[
2
];
ob
[
0
]
=
Digit
[(
ib
>>>
4
)
&
0X0F
];
ob
[
1
]
=
Digit
[
ib
&
0X0F
];
String
s
=
new
String
(
ob
);
return
s
;
}
return
;
}
/**
* b2iu把byte按照不考虑正负号的原则的"升位"程序, 因为java没有unsigned运算
*/
public
static
long
b2iu
(
byte
b
)
{
return
b
<
0
?
b
&
0x7F
+
128
:
b
;
}
/**
* 用来把一个byte类型的数转换成十六进制的ASCII表示, 因为java中的byte的toString无法实现这一点,我们又没有C语言中的
* sprintf(outbuf,"%02X",ib)
*/
public
static
String
byteHEX
(
byte
ib
)
{
// char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
// 'A', 'B', 'C', 'D', 'E', 'F' };
char
[]
Digit
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
char
[]
ob
=
new
char
[
2
];
ob
[
0
]
=
Digit
[(
ib
>>>
4
)
&
0X0F
];
ob
[
1
]
=
Digit
[
ib
&
0X0F
];
String
s
=
new
String
(
ob
);
return
s
;
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/partner/PerformancePartnerController.java
View file @
0965db7b
...
...
@@ -4,7 +4,10 @@ import com.github.pagehelper.PageInfo;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dao.PerformancePartnerListDao
;
import
com.liquidnet.service.kylin.dto.param.*
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageConfigVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageDataVo
;
import
com.liquidnet.service.kylin.service.impl.partner.KylinPerformancesPartnerServiceImpl
;
import
com.liquidnet.service.kylin.utils.OtherUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
...
...
@@ -23,6 +26,8 @@ import java.util.Map;
@Validated
public
class
PerformancePartnerController
{
@Autowired
private
OtherUtils
otherUtils
;
@Autowired
private
KylinPerformancesPartnerServiceImpl
performancesPartnerService
;
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/BannersServiceImpl.java
View file @
0965db7b
...
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.service.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.kylin.dto.vo.KylinBannersVo
;
import
com.liquidnet.service.kylin.entity.KylinBanners
;
import
com.liquidnet.service.kylin.mapper.KylinBannersMapper
;
...
...
@@ -39,7 +40,7 @@ public class BannersServiceImpl extends ServiceImpl<KylinBannersMapper, KylinBan
);
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
String
nowTimeStr
=
nowTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTime
);
Criteria
onlineTimeBetween
=
Criteria
.
where
(
"onlineStartTime"
).
lte
(
nowTimeStr
).
and
(
"onlineEndTime"
).
gte
(
nowTimeStr
);
Criteria
onlineTimeGt
=
Criteria
.
where
(
"onlineStartTime"
).
lte
(
nowTimeStr
).
and
(
"onlineEndTime"
).
is
(
""
);
Criteria
onlineTimeLt
=
Criteria
.
where
(
"onlineStartTime"
).
is
(
""
).
and
(
"onlineEndTime"
).
gte
(
nowTimeStr
);
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
View file @
0965db7b
...
...
@@ -38,9 +38,6 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.env.Environment
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
...
@@ -640,7 +637,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
RLock
lock
=
RedisLockUtil
.
lock
(
"order_lock:"
+
syncOrderParam
.
getOrder_code
(),
240
);
String
timePay
=
now
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
timePay
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
now
);
KylinOrderTicketVo
orderTicketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderCode"
).
is
(
syncOrderParam
.
getOrder_code
())),
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
if
(
orderTicketData
==
null
)
{
lock
.
unlock
();
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinPerformancesServiceImpl.java
View file @
0965db7b
...
...
@@ -111,7 +111,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
// 固定查询条件
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
String
nowTimeStr
=
nowTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTime
);
query
.
addCriteria
(
Criteria
.
where
(
"timeEnd"
).
gte
(
nowTimeStr
));
// 查询总数
...
...
@@ -166,7 +166,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
// 固定条件
Query
query
=
new
Query
();
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
String
nowTimeStr
=
nowTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTime
);
query
.
addCriteria
(
Criteria
.
where
(
"timeEnd"
).
gte
(
nowTimeStr
));
// 今天的
...
...
@@ -182,7 +182,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
// 三天的
Query
queryT
=
new
Query
();
LocalDateTime
nowTimeT
=
LocalDateTime
.
now
();
String
nowTimeStrT
=
nowTimeT
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
nowTimeStrT
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTimeT
);
queryT
.
addCriteria
(
Criteria
.
where
(
"timeEnd"
).
gte
(
nowTimeStrT
));
LocalDateTime
threeDaysLater
=
toDayTime
.
plusDays
(
3
);
...
...
@@ -202,7 +202,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
// 固定条件
Query
query
=
new
Query
();
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
String
nowTimeStr
=
nowTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTime
);
query
.
addCriteria
(
Criteria
.
where
(
"timeEnd"
).
gte
(
nowTimeStr
));
query
.
fields
().
exclude
(
"details"
);
...
...
@@ -219,7 +219,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
// 固定条件
Query
query
=
new
Query
();
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
String
nowTimeStr
=
nowTime
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
);
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
nowTime
);
query
.
addCriteria
(
Criteria
.
where
(
"timeEnd"
).
gte
(
nowTimeStr
));
query
.
fields
().
exclude
(
"details"
);
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/partner/KylinPerformancesPartnerServiceImpl.java
View file @
0965db7b
...
...
@@ -229,7 +229,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
if
(
performanceStatus
==
null
||
performanceStatus
.
getStatus
()
==
0
||
performanceStatus
.
getStatus
()
==
4
)
{
result
=
createStep2
(
step2Param
);
log
.
info
(
" PERFORMANCE 演出第二步 创建(拒绝/撤回/第一次)"
);
}
else
if
(
performanceStatus
.
getStatus
()
==
1
||
performanceStatus
.
getStatus
()
==
3
||
performanceStatus
.
getStatus
()
==
6
||
performanceStatus
.
getStatus
()
==
7
)
{
// 修改
}
else
if
(
performanceStatus
.
getStatus
()
==
1
||
performanceStatus
.
getStatus
()
==
3
||
performanceStatus
.
getStatus
()
==
6
||
performanceStatus
.
getStatus
()
==
7
||
performanceStatus
.
getStatus
()
==
8
||
performanceStatus
.
getStatus
()
==
9
)
{
// 修改
result
=
updateStep2
(
step2Param
);
log
.
info
(
" PERFORMANCE 演出第二步 修改"
);
}
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/partner/KylinTicketsPartnerServiceImpl.java
View file @
0965db7b
...
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.service.impl.partner;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.ErrorMapping
;
...
...
@@ -107,8 +108,8 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
KylinTicketPartnerVo
kylinTicketPartnerVo
=
new
KylinTicketPartnerVo
();
BeanUtils
.
copyProperties
(
ticketCreateParam
,
kylinTicketPartnerVo
);
kylinTicketPartnerVo
.
setTicketsId
(
ticketsId
);
kylinTicketPartnerVo
.
setCreatedAt
(
createdAt
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)
));
kylinTicketPartnerVo
.
setTimeStart
(
ticketCreateParam
.
getTimeStart
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
kylinTicketPartnerVo
.
setCreatedAt
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
createdAt
));
kylinTicketPartnerVo
.
setTimeStart
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
ticketCreateParam
.
getTimeStart
(
)));
kylinTicketPartnerVo
.
setTimeEnd
(
ticketCreateParam
.
getTimeEnd
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
KylinTicketTimesPartnerVo
kylinTicketTimesPartnerVo
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"ticketTimesId"
).
is
(
ticketCreateParam
.
getTimesId
())),
KylinTicketTimesPartnerVo
.
class
,
KylinTicketTimesPartnerVo
.
class
.
getSimpleName
());
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/OtherUtils.java
0 → 100644
View file @
0965db7b
package
com
.
liquidnet
.
service
.
kylin
.
utils
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.MD5
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageConfigVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageDataVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.security.MessageDigest
;
import
java.time.LocalDateTime
;
@Service
@Slf4j
public
class
OtherUtils
{
@Value
(
"${liquidnet.url-service.url}"
)
private
String
serviceUrl
;
//发短信
public
boolean
sendMessage
(
String
mobile
,
MessageDataVo
data
,
MessageConfigVo
configVo
,
Integer
sign_id
)
{
try
{
if
(
null
!=
configVo
&&
null
!=
configVo
.
getStatus
()
&&
configVo
.
getStatus
())
{
LinkedMultiValueMap
<
String
,
String
>
httpData
=
new
LinkedMultiValueMap
<>();
httpData
.
add
(
"mobile"
,
mobile
);
httpData
.
add
(
"templateId"
,
configVo
.
getId
());
httpData
.
add
(
"signId"
,
sign_id
.
toString
());
httpData
.
add
(
"data"
,
JsonUtils
.
toJson
(
data
));
String
sign
=
Ksort
(
httpData
);
sign
=
sign
.
concat
(
"&key="
).
concat
(
"R7tXY9smPQPG9Ku5yI0u6sfnlckmk04V"
);
sign
=
sign
.
toUpperCase
();
httpData
.
add
(
"sign"
,
sign
);
String
returnData
=
HttpUtil
.
post
(
serviceUrl
+
"sendSmsMessage"
,
httpData
);
JsonNode
postResultNew
=
JsonUtils
.
fromJson
(
returnData
,
JsonNode
.
class
);
if
(
postResultNew
.
get
(
"message"
).
toString
()
!=
"OK"
)
{
return
false
;
}
else
{
return
true
;
}
}
else
{
return
false
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
public
String
Ksort
(
MultiValueMap
<
String
,
String
>
map
)
{
String
sb
=
""
;
String
[]
key
=
new
String
[
map
.
size
()];
int
index
=
0
;
for
(
String
k
:
map
.
keySet
())
{
key
[
index
]
=
k
;
index
++;
}
for
(
String
s
:
key
)
{
sb
+=
s
+
"="
+
map
.
get
(
s
).
get
(
0
)
+
"&"
;
}
sb
=
sb
.
substring
(
0
,
sb
.
length
()
-
1
);
// 将得到的字符串进行处理得到目标格式的字符串
try
{
sb
=
URLDecoder
.
decode
(
sb
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
// 使用常见的UTF-8编码
sb
=
sb
.
replace
(
"%3D"
,
"="
).
replace
(
"%26"
,
"&"
);
return
sb
;
}
public
static
String
md5s
(
String
txt
)
{
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
md
.
update
(
txt
.
getBytes
(
"GBK"
));
//问题主要出在这里,Java的字符串是unicode编码,不受源码文件的编码影响;而PHP的编码是和源码文件的编码一致,受源码编码影响。
StringBuilder
buf
=
new
StringBuilder
();
for
(
byte
b
:
md
.
digest
())
{
buf
.
append
(
String
.
format
(
"%02x"
,
b
&
0xff
));
}
return
buf
.
toString
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
}
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