记得上下班打卡 | 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
1565a4b8
Commit
1565a4b8
authored
Sep 15, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同步微信用户换位置,退款前详情增加数据,申请退款接口快递
parent
a3e15c9d
Changes
14
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
647 additions
and
27 deletions
+647
-27
OrderRefundPoundage.java
...idnet/service/kylin/dto/vo/admin/OrderRefundPoundage.java
+5
-0
KylinOrderTicketPreVo.java
...t/service/kylin/dto/vo/returns/KylinOrderTicketPreVo.java
+50
-10
IKylinOrderTicketsService.java
...dnet/service/kylin/service/IKylinOrderTicketsService.java
+1
-1
application-dev.yml
liquidnet-bus-config/liquidnet-config/application-dev.yml
+14
-0
application-test.yml
liquidnet-bus-config/liquidnet-config/application-test.yml
+14
-0
ServiceKylinApplication.java
...n/java/com/liquidnet/service/ServiceKylinApplication.java
+1
-0
KylinOrderTicketsController.java
...service/kylin/controller/KylinOrderTicketsController.java
+29
-6
KylinOrderTicketsServiceImpl.java
...vice/kylin/service/impl/KylinOrderTicketsServiceImpl.java
+157
-8
DataUtils.java
...ain/java/com/liquidnet/service/kylin/utils/DataUtils.java
+51
-0
HttpsUtils.java
...in/java/com/liquidnet/service/kylin/utils/HttpsUtils.java
+141
-0
ObjectUtil.java
...in/java/com/liquidnet/service/kylin/utils/ObjectUtil.java
+12
-0
ShunfengSignUtils.java
.../com/liquidnet/service/kylin/utils/ShunfengSignUtils.java
+170
-0
SweetWechatLoginController.java
.../service/sweet/controller/SweetWechatLoginController.java
+1
-1
SweetWechatSyncDataController.java
...t/controller/syncRedis/SweetWechatSyncDataController.java
+1
-1
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/admin/OrderRefundPoundage.java
View file @
1565a4b8
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
admin
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
...
...
@@ -9,9 +10,13 @@ import lombok.Data;
*/
@Data
public
class
OrderRefundPoundage
implements
Cloneable
{
@ApiModelProperty
(
value
=
"天数"
)
private
int
day
;
@ApiModelProperty
(
value
=
"距离演出开始日期>15天"
)
private
String
content
;
@ApiModelProperty
(
value
=
"费率 如果手续费是0.1 这里存的是0.9"
)
private
float
present
;
@ApiModelProperty
(
value
=
""
)
private
int
isCanRefund
;
private
static
final
OrderRefundPoundage
obj
=
new
OrderRefundPoundage
();
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/KylinOrderTicketPreVo.java
View file @
1565a4b8
...
...
@@ -4,6 +4,9 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import
com.liquidnet.service.kylin.entity.KylinOrderTicketRelations
;
import
com.liquidnet.service.kylin.entity.KylinOrderTicketStatus
;
import
com.liquidnet.service.kylin.entity.KylinOrderTickets
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage
;
import
com.liquidnet.service.kylin.entity.KylinOrderCoupons
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -13,13 +16,14 @@ import java.io.Serializable;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.ArrayList
;
@ApiModel
(
value
=
"KylinOrderTicketVo"
,
description
=
"订单数据"
)
@Data
public
class
KylinOrderTicketPreVo
implements
Serializable
,
Cloneable
{
public
class
KylinOrderTicketPreVo
implements
Serializable
,
Cloneable
{
private
Integer
mid
;
private
static
final
long
serialVersionUID
=
5325511589667456213L
;
@ApiModelProperty
(
position
=
10
,
value
=
"ID"
)
@ApiModelProperty
(
position
=
10
,
value
=
"
订单
ID"
)
private
String
orderTicketsId
;
@ApiModelProperty
(
position
=
11
,
value
=
"用户ID[64]"
)
private
String
userId
;
...
...
@@ -27,32 +31,68 @@ public class KylinOrderTicketPreVo implements Serializable,Cloneable{
private
String
userName
;
@ApiModelProperty
(
position
=
13
,
value
=
"用户手机号"
)
private
String
userMobile
;
@ApiModelProperty
(
position
=
14
,
value
=
"演出名称"
)
private
String
performanceTitle
;
private
String
ticketTitle
;
private
String
timeStart
;
private
String
useStart
;
private
String
performanceImg
;
@ApiModelProperty
(
value
=
"购票数量"
)
private
Integer
number
;
@ApiModelProperty
(
value
=
"应付价格"
)
private
BigDecimal
priceTotal
;
private
BigDecimal
priceVoucher
;
@ApiModelProperty
(
value
=
"优惠价格"
)
private
BigDecimal
priceActual
;
@ApiModelProperty
(
value
=
"快递价格"
)
private
BigDecimal
priceExpress
;
@ApiModelProperty
(
value
=
"退款价格"
)
private
BigDecimal
priceRefund
;
@ApiModelProperty
(
value
=
"退款张数"
)
private
Integer
refundNumber
;
@ApiModelProperty
(
value
=
"是否使用优惠卷 exchange/no"
)
private
String
couponType
;
@ApiModelProperty
(
value
=
"取票方式 电子票electronic快递票express"
)
private
String
getTicketType
;
@ApiModelProperty
(
value
=
"快递类型 1寄付 2到付"
)
private
Integer
expressType
;
@ApiModelProperty
(
value
=
"订单状态 0待付款 1已付款 2已关闭 3正在退款 4已退款 5待关闭 6部分退款"
)
private
Integer
status
;
private
String
performanceId
;
@ApiModelProperty
(
value
=
"场次ID"
)
private
String
timeId
;
@ApiModelProperty
(
value
=
"票种ID"
)
private
String
ticketId
;
@ApiModelProperty
(
value
=
"场地名称"
)
private
String
fieldName
;
@ApiModelProperty
(
value
=
"是否实名"
)
private
Integer
isTrueName
;
@ApiModelProperty
(
value
=
"入场人退款情况"
)
private
List
<
KylinOrderTicketEntitiesPreRefundVo
>
entitiesPreRefundVos
;
@ApiModelProperty
(
value
=
"收货人"
)
private
String
expressContacts
;
@ApiModelProperty
(
value
=
"收货地址"
)
private
String
expressAddress
;
@ApiModelProperty
(
value
=
"收货人联系方式"
)
private
String
expressPhone
;
@ApiModelProperty
(
value
=
"演出ID"
)
private
String
performanceId
;
@ApiModelProperty
(
position
=
14
,
value
=
"演出名称"
)
private
String
performanceTitle
;
@ApiModelProperty
(
value
=
"票种名称"
)
private
String
ticketTitle
;
@ApiModelProperty
(
value
=
"演出开始时间"
)
private
String
timeStart
;
@ApiModelProperty
(
value
=
"演出结束时间"
)
private
String
useStart
;
@ApiModelProperty
(
value
=
"演出图片"
)
private
String
performanceImg
;
@ApiModelProperty
(
value
=
"是否开启退款手续费 0关闭 1开启"
)
private
Integer
isRefundPoundage
;
@ApiModelProperty
(
value
=
"手续费规则列表"
)
private
ArrayList
<
OrderRefundPoundage
>
refundPoundageList
;
@ApiModelProperty
(
value
=
"订单使用优惠券列表"
)
private
ArrayList
<
KylinOrderCoupons
>
orderCouponList
;
@ApiModelProperty
(
value
=
"退款快递统一寄回地址"
)
private
OrderRefundAddress
refundAddress
;
private
static
final
KylinOrderTicketPreVo
obj
=
new
KylinOrderTicketPreVo
();
public
static
KylinOrderTicketPreVo
getNew
()
{
try
{
return
(
KylinOrderTicketPreVo
)
obj
.
clone
();
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinOrderTicketsService.java
View file @
1565a4b8
...
...
@@ -46,7 +46,7 @@ public interface IKylinOrderTicketsService {
* @param picList 证据截图
* @return 是否成功
*/
String
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
);
String
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
,
Integer
sendExpressType
,
String
sendExpressAddress
,
String
appointmentTime
,
String
expressNumber
);
//退款撤回
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
);
...
...
liquidnet-bus-config/liquidnet-config/application-dev.yml
View file @
1565a4b8
...
...
@@ -141,6 +141,20 @@ liquidnet:
app-name
:
demo
client-id
:
YXA6x4Xs7cYDQcOv6BPuM3hUDA
client-secret
:
YXA6olr2qaW65xlkFixS81kiWnplrW4
express
:
shunfeng
:
url
:
${liquidnet.client.admin.shunfeng.url}
sk
:
${liquidnet.client.admin.shunfeng.sk}
appid
:
${liquidnet.client.admin.shunfeng.appid}
custid
:
${liquidnet.client.admin.shunfeng.custid}
jCompany
:
北京正在映画互联网有限公司
jContact
:
摩登天空票务部
jTel
:
4001680650
jProvince
:
北京
jCity
:
北京市
jAddress
:
朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType
:
1
# 默认顺丰特快
depositumInfo
:
演出纸质票
#application-dev-end
liquidnet-bus-config/liquidnet-config/application-test.yml
View file @
1565a4b8
...
...
@@ -143,6 +143,20 @@ liquidnet:
app-name
:
demo
client-id
:
YXA6x4Xs7cYDQcOv6BPuM3hUDA
client-secret
:
YXA6olr2qaW65xlkFixS81kiWnplrW4
express
:
shunfeng
:
url
:
${liquidnet.client.admin.shunfeng.url}
sk
:
${liquidnet.client.admin.shunfeng.sk}
appid
:
${liquidnet.client.admin.shunfeng.appid}
custid
:
${liquidnet.client.admin.shunfeng.custid}
jCompany
:
北京正在映画互联网有限公司
jContact
:
摩登天空票务部
jTel
:
4001680650
jProvince
:
北京
jCity
:
北京市
jAddress
:
朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType
:
1
# 默认顺丰特快
depositumInfo
:
演出纸质票
#application-test-end
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/ServiceKylinApplication.java
View file @
1565a4b8
...
...
@@ -10,6 +10,7 @@ import org.springframework.core.env.Environment;
import
java.net.InetAddress
;
import
java.util.Arrays
;
@EnableAsync
@Slf4j
@SpringBootApplication
(
scanBasePackages
=
{
"com.liquidnet"
})
public
class
ServiceKylinApplication
implements
CommandLineRunner
{
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinOrderTicketsController.java
View file @
1565a4b8
...
...
@@ -89,18 +89,41 @@ public class KylinOrderTicketsController {
@GetMapping
(
"toOrderRefundDetails"
)
@ApiOperation
(
"想要退款订单详情"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
@RequestParam
(
value
=
"orderId"
,
required
=
false
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
)
{
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
@RequestParam
(
value
=
"orderId"
,
required
=
false
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
)
{
return
orderTicketsService
.
toOrderRefundDetails
(
orderId
);
}
@PostMapping
(
"sendOrderRefunds"
)
@ApiOperation
(
"发起退款申请"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
HashMap
<
String
,
String
>>
sendOrderRefund
(
@RequestParam
(
value
=
"orderId"
,
required
=
true
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
,
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"orderId"
,
value
=
"订单ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"orderTicketEntitiesId"
,
value
=
"订单入场人ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"reason"
,
value
=
"退款申请备注"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"picList"
,
value
=
"图片"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"Integer"
,
name
=
"sendExpressType"
,
value
=
"快递方式 1上门取件 2自主发货"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"sendExpressAddress"
,
value
=
"取件地址"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"appointmentTime"
,
value
=
"预约取件时间"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressNumber"
,
value
=
"自主发货的顺丰订单号"
)
})
public
ResponseDto
<
HashMap
<
String
,
String
>>
sendOrderRefund
(
@RequestParam
(
value
=
"orderId"
,
required
=
true
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
,
@RequestParam
(
value
=
"orderTicketEntitiesId"
,
required
=
true
)
@NotNull
(
message
=
"票单ID不能为空"
)
String
orderTicketEntitiesId
,
@RequestParam
(
value
=
"reason"
,
required
=
true
)
@NotNull
(
message
=
"退款原因不能为空"
)
String
reason
,
@RequestParam
(
value
=
"picList"
,
required
=
false
)
String
picList
)
{
String
orderRefundId
=
orderTicketsService
.
sendOrderRefund
(
orderId
,
orderTicketEntitiesId
,
reason
,
picList
);
@RequestParam
(
value
=
"picList"
,
required
=
false
)
String
picList
,
@RequestParam
(
value
=
"sendExpressType"
,
required
=
false
)
Integer
sendExpressType
,
@RequestParam
(
value
=
"sendExpressAddress"
,
required
=
false
)
String
sendExpressAddress
,
@RequestParam
(
value
=
"appointmentTime"
,
required
=
false
)
String
appointmentTime
,
@RequestParam
(
value
=
"expressNumber"
,
required
=
false
)
String
expressNumber
)
{
// 退款
String
orderRefundId
=
orderTicketsService
.
sendOrderRefund
(
orderId
,
orderTicketEntitiesId
,
reason
,
picList
,
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
);
if
(
orderRefundId
.
length
()
>
10
)
{
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
"orderRefundsId"
,
orderRefundId
);
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
View file @
1565a4b8
This diff is collapsed.
Click to expand it.
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
View file @
1565a4b8
...
...
@@ -5,6 +5,8 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage
;
import
com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo
;
import
com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.*
;
...
...
@@ -707,4 +709,53 @@ public class DataUtils {
return
kylinPerformanceVoList
;
}
// 获取手续费
public
ArrayList
<
OrderRefundPoundage
>
getRefundPoundage
(
Integer
isRefundPoundage
)
{
ArrayList
<
OrderRefundPoundage
>
orderRefundPoundageArrayList
=
ObjectUtil
.
getOrderRefundPoundageArrayList
();
if
(
isRefundPoundage
>
0
)
{
// 开启了演出退票有手续费
Object
obj
=
redisUtil
.
get
(
KylinRedisConst
.
ORDER_REFUND_POUNDAGE
);
if
(
obj
==
null
)
{
return
orderRefundPoundageArrayList
;
}
else
{
return
(
ArrayList
<
OrderRefundPoundage
>)
obj
;
}
}
else
{
// 退票不需要手续费
return
orderRefundPoundageArrayList
;
}
}
// 获取订单券的实用情况
public
ArrayList
<
KylinOrderCoupons
>
getOrderCoupon
(
String
orderId
){
String
redisKey
=
KylinRedisConst
.
ORDER_COUPON
.
concat
(
orderId
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
return
ObjectUtil
.
getKylinOrderCouponsArrayList
();
}
else
{
return
(
ArrayList
<
KylinOrderCoupons
>)
obj
;
}
}
// 快递地址
public
OrderRefundAddress
getRefundAddress
(
String
getTicketType
)
{
if
(
getTicketType
.
equals
(
"express"
))
{
// 快递票
return
null
;
}
else
{
// 电子票
Object
obj
=
redisUtil
.
get
(
KylinRedisConst
.
ORDER_REFUND_ADDRESS
);
if
(
obj
==
null
)
{
return
null
;
}
else
{
return
(
OrderRefundAddress
)
obj
;
}
}
}
/**
* 演出订单快递信息
* @param orderId
* @param kylinOrderExpressVo
*/
public
void
setOrderExpressInfo
(
String
orderId
,
KylinOrderExpressVo
kylinOrderExpressVo
)
{
String
redisKey
=
KylinRedisConst
.
ORDER_EXPRESS_INFO
.
concat
(
orderId
);
redisUtil
.
set
(
redisKey
,
kylinOrderExpressVo
);
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/HttpsUtils.java
0 → 100644
View file @
1565a4b8
package
com
.
liquidnet
.
service
.
kylin
.
utils
;
import
org.apache.http.*
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.config.Registry
;
import
org.apache.http.config.RegistryBuilder
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.NoopHostnameVerifier
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.conn.ssl.TrustStrategy
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.ssl.SSLContextBuilder
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.io.IOException
;
import
java.security.cert.CertificateException
;
import
java.security.cert.X509Certificate
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
public
class
HttpsUtils
{
private
static
final
String
HTTP
=
"http"
;
private
static
final
String
HTTPS
=
"https"
;
private
static
SSLConnectionSocketFactory
sslsf
=
null
;
private
static
PoolingHttpClientConnectionManager
cm
=
null
;
private
static
SSLContextBuilder
builder
=
null
;
static
{
try
{
builder
=
new
SSLContextBuilder
();
// 全部信任 不做身份鉴定
builder
.
loadTrustMaterial
(
null
,
new
TrustStrategy
()
{
@Override
public
boolean
isTrusted
(
X509Certificate
[]
x509Certificates
,
String
s
)
throws
CertificateException
{
return
true
;
}
});
sslsf
=
new
SSLConnectionSocketFactory
(
builder
.
build
(),
new
String
[]{
"SSLv2Hello"
,
"SSLv3"
,
"TLSv1"
,
"TLSv1.2"
},
null
,
NoopHostnameVerifier
.
INSTANCE
);
Registry
<
ConnectionSocketFactory
>
registry
=
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
HTTP
,
new
PlainConnectionSocketFactory
())
.
register
(
HTTPS
,
sslsf
)
.
build
();
cm
=
new
PoolingHttpClientConnectionManager
(
registry
);
cm
.
setMaxTotal
(
200
);
//max connection
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* httpClient post请求
*
* @param url 请求url
* @param header 头部信息
* @param param 请求参数 form提交适用
* @param entity 请求实体 json/xml提交适用
* @return 可能为空 需要处理
* @throws Exception
*/
public
static
String
post
(
String
url
,
Map
<
String
,
String
>
header
,
Map
<
String
,
String
>
param
,
HttpEntity
entity
)
throws
Exception
{
String
result
=
""
;
CloseableHttpClient
httpClient
=
null
;
try
{
httpClient
=
getHttpClient
();
HttpPost
httpPost
=
new
HttpPost
(
url
);
// 设置头信息
if
(
CollectionUtils
.
isEmpty
(
header
))
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
header
.
entrySet
())
{
httpPost
.
addHeader
(
entry
.
getKey
(),
entry
.
getValue
());
}
}
// 设置请求参数
if
(
CollectionUtils
.
isEmpty
(
param
))
{
List
<
NameValuePair
>
formparams
=
new
ArrayList
<
NameValuePair
>();
for
(
Map
.
Entry
<
String
,
String
>
entry
:
param
.
entrySet
())
{
//给参数赋值
formparams
.
add
(
new
BasicNameValuePair
(
entry
.
getKey
(),
entry
.
getValue
()));
}
UrlEncodedFormEntity
urlEncodedFormEntity
=
new
UrlEncodedFormEntity
(
formparams
,
Consts
.
UTF_8
);
httpPost
.
setEntity
(
urlEncodedFormEntity
);
}
// 设置实体 优先级高
if
(
entity
!=
null
)
{
httpPost
.
setEntity
(
entity
);
}
HttpResponse
httpResponse
=
httpClient
.
execute
(
httpPost
);
int
statusCode
=
httpResponse
.
getStatusLine
().
getStatusCode
();
if
(
statusCode
==
HttpStatus
.
SC_OK
)
{
HttpEntity
resEntity
=
httpResponse
.
getEntity
();
result
=
EntityUtils
.
toString
(
resEntity
);
}
else
{
readHttpResponse
(
httpResponse
);
}
}
catch
(
Exception
e
)
{
throw
e
;
}
finally
{
if
(
httpClient
!=
null
)
{
httpClient
.
close
();
}
}
return
result
;
}
public
static
CloseableHttpClient
getHttpClient
()
throws
Exception
{
CloseableHttpClient
httpClient
=
HttpClients
.
custom
()
.
setSSLSocketFactory
(
sslsf
)
.
setConnectionManager
(
cm
)
.
setConnectionManagerShared
(
true
)
.
build
();
return
httpClient
;
}
public
static
String
readHttpResponse
(
HttpResponse
httpResponse
)
throws
ParseException
,
IOException
{
StringBuilder
builder
=
new
StringBuilder
();
// 获取响应消息实体
HttpEntity
entity
=
httpResponse
.
getEntity
();
// 响应状态
builder
.
append
(
"status:"
+
httpResponse
.
getStatusLine
());
builder
.
append
(
"headers:"
);
HeaderIterator
iterator
=
httpResponse
.
headerIterator
();
while
(
iterator
.
hasNext
())
{
builder
.
append
(
"\t"
+
iterator
.
next
());
}
// 判断响应实体是否为空
if
(
entity
!=
null
)
{
String
responseString
=
EntityUtils
.
toString
(
entity
);
builder
.
append
(
"response length:"
+
responseString
.
length
());
builder
.
append
(
"response content:"
+
responseString
.
replace
(
"\r\n"
,
""
));
}
return
builder
.
toString
();
}
}
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/ObjectUtil.java
View file @
1565a4b8
...
...
@@ -2,11 +2,13 @@ package com.liquidnet.service.kylin.utils;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.base.PagedResult
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.entity.KylinBanners
;
import
com.liquidnet.service.kylin.entity.KylinOrderCoupons
;
import
com.mongodb.client.model.WriteModel
;
import
org.bson.Document
;
...
...
@@ -26,6 +28,8 @@ public class ObjectUtil {
private
static
final
ArrayList
<
KylinBanners
>
kylinBannerListArrayList
=
new
ArrayList
<>();
private
static
final
PagedResult
<
KylinStationPerformanceVo
>
kylinStationPerformanceVoPagedResult
=
new
PagedResult
<>();
private
static
final
ArrayList
<
AdamEntersVo
>
arrayListObject
=
new
ArrayList
<>();
private
static
final
ArrayList
<
OrderRefundPoundage
>
orderRefundPoundageArrayList
=
new
ArrayList
<>();
private
static
final
ArrayList
<
KylinOrderCoupons
>
kylinOrderCouponsArrayList
=
new
ArrayList
<>();
public
static
ArrayList
<
KylinStationPerformanceVo
>
getKylinStationPerformanceVoArrayList
()
{
...
...
@@ -79,4 +83,12 @@ public class ObjectUtil {
public
static
ArrayList
<
AdamEntersVo
>
cloneArrayListObject
()
{
return
(
ArrayList
<
AdamEntersVo
>)
arrayListObject
.
clone
();
}
public
static
ArrayList
<
OrderRefundPoundage
>
getOrderRefundPoundageArrayList
()
{
return
(
ArrayList
<
OrderRefundPoundage
>)
orderRefundPoundageArrayList
.
clone
();
}
public
static
ArrayList
<
KylinOrderCoupons
>
getKylinOrderCouponsArrayList
()
{
return
(
ArrayList
<
KylinOrderCoupons
>)
kylinOrderCouponsArrayList
.
clone
();
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/ShunfengSignUtils.java
0 → 100644
View file @
1565a4b8
package
com
.
liquidnet
.
service
.
kylin
.
utils
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.UserPathDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* <p>
* 顺丰 ShunfengSignUtils ß
* </p>
*
* @author jiangxiulong
* @since 2021-06-24 8:00 下午
*/
@Component
@Slf4j
public
class
ShunfengSignUtils
{
/**
* appId
*/
@Value
(
"${liquidnet.express.shunfeng.appid}"
)
private
String
APP_ID
;
/**
* sk
*/
@Value
(
"${liquidnet.express.shunfeng.sk}"
)
private
String
SK
;
/**
* url
*/
@Value
(
"${liquidnet.express.shunfeng.url}"
)
private
String
URL
;
/**
* 签名有效期(可根据实际业务设定)单位:毫秒
*/
private
final
static
Long
CHECK_TIME
=
600000L
;
/**
* 生成签名并请求
* @param hbody 请求body
* @return
*/
public
String
generateSignatureAndRequestNew
(
Map
<
String
,
String
>
hbody
,
String
url
)
{
long
currentTimeMillis
=
System
.
currentTimeMillis
();
// 时间戳
String
timestamp
=
currentTimeMillis
+
""
;
hbody
.
put
(
"companyId"
,
APP_ID
);
String
body
=
JsonUtils
.
toJson
(
hbody
);
// 生成签名
String
sign
=
genSign
(
timestamp
,
body
);
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"sendAppId"
,
APP_ID
);
headers
.
put
(
"timestamp"
,
timestamp
);
headers
.
put
(
"sign"
,
sign
);
headers
.
put
(
"Content-Type"
,
"application/json;charset=utf-8"
);
headers
.
put
(
"Accept"
,
"application/json"
);
Map
<
String
,
String
>
querys
=
new
HashMap
<>();
try
{
HttpEntity
httpEntity
=
new
StringEntity
(
body
,
"utf-8"
);
String
post
=
HttpsUtils
.
post
(
URL
+
url
,
headers
,
querys
,
httpEntity
);
return
post
;
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"发送请求失败"
);
e
.
printStackTrace
();
return
e
.
getMessage
();
}
}
/**
* 生成签名并请求 线上Received fatal alert:handshake_failure 废弃
* @param hbody 请求body
* @return
*/
public
String
generateSignatureAndRequest
(
HashMap
<
String
,
Object
>
hbody
,
String
url
)
{
long
currentTimeMillis
=
System
.
currentTimeMillis
();
// 时间戳
String
timestamp
=
currentTimeMillis
+
""
;
hbody
.
put
(
"companyId"
,
APP_ID
);
String
body
=
JsonUtils
.
toJson
(
hbody
);
// 生成签名
String
sign
=
genSign
(
timestamp
,
body
);
CloseableHttpClient
client
=
HttpClients
.
createSystem
();
/*SSLContext sslContext = SSLContexts.createSystemDefault();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslContext,
NoopHostnameVerifier.INSTANCE);*/
// 请求下单地址
HttpPost
httpPost
=
new
HttpPost
(
URL
+
url
);
// sendAppId(sendAppId需赋值appId)
httpPost
.
addHeader
(
"sendAppId"
,
APP_ID
);
// 时间戳需和获取验签时一致!!!
httpPost
.
addHeader
(
"timestamp"
,
timestamp
);
// 签名
httpPost
.
addHeader
(
"sign"
,
sign
);
httpPost
.
addHeader
(
"Content-Type"
,
"application/json;charset=utf-8"
);
httpPost
.
addHeader
(
"Accept"
,
"application/json"
);
// 请求body体需和获取验签时一致且编码UTF8!!!
httpPost
.
setEntity
(
new
StringEntity
(
body
,
"utf-8"
));
CloseableHttpResponse
response
=
null
;
log
.
info
(
UserPathDto
.
setData
(
"header"
,
""
,
httpPost
.
getAllHeaders
()));
log
.
info
(
UserPathDto
.
setData
(
"body"
,
""
,
body
));
try
{
response
=
client
.
execute
(
httpPost
);
if
(
response
.
getStatusLine
().
getStatusCode
()
==
200
)
{
System
.
out
.
println
(
"发送请求成功"
);
HttpEntity
entity
=
response
.
getEntity
();
// 发送响应且编码UTF8!!!
return
EntityUtils
.
toString
(
entity
,
"utf-8"
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"发送请求失败"
);
e
.
printStackTrace
();
return
e
.
getMessage
();
}
finally
{
if
(
client
!=
null
)
{
try
{
client
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
if
(
response
!=
null
)
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
return
null
;
}
/**
* 生成签名
* @param timestamp 时间戳
* @param body 请求body
* @return
*/
private
String
genSign
(
String
timestamp
,
String
body
)
{
if
(
StringUtils
.
isEmpty
(
body
))
{
body
=
""
;
}
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
body
);
sb
.
append
(
"&sk="
).
append
(
SK
);
sb
.
append
(
"×tamp="
).
append
(
timestamp
);
byte
[]
bytes
=
DigestUtils
.
sha512
(
sb
.
toString
());
return
Base64
.
encodeBase64URLSafeString
(
bytes
);
}
}
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatLoginController.java
View file @
1565a4b8
...
...
@@ -53,7 +53,7 @@ public class SweetWechatLoginController {
@GetMapping
(
value
=
{
"mpOpenId"
})
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"code"
,
value
=
"微信code"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"1
草莓 2五百里 3mdsk 4正在
"
,
required
=
true
)
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"1
正在 2摩登
"
,
required
=
true
)
})
public
ResponseDto
<
String
>
wxOauth2AccessToken
(
@RequestParam
String
code
,
@RequestParam
Integer
type
)
{
return
sweetLoginService
.
wxOauth2AccessToken
(
code
,
type
);
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatSyncDataController.java
→
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/
syncRedis/
SweetWechatSyncDataController.java
View file @
1565a4b8
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
package
com
.
liquidnet
.
service
.
sweet
.
controller
.
syncRedis
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatMpService
;
...
...
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