记得上下班打卡 | 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
Hide 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
,
@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
);
@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
,
@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
...
...
@@ -11,6 +11,9 @@ import com.liquidnet.service.base.SqlMapping;
import
com.liquidnet.service.base.UserPathDto
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
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.KylinOrderExpressVo
;
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.KylinOrderRefundEntitiesVo
;
...
...
@@ -20,19 +23,18 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.ObjectUtil
;
import
com.liquidnet.service.kylin.utils.OrderUtils
;
import
com.liquidnet.service.kylin.utils.QueueUtils
;
import
com.liquidnet.service.kylin.utils.*
;
import
com.mongodb.BasicDBObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.bson.Document
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
...
...
@@ -64,6 +66,16 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
@Autowired
private
KylinRefundsStatusServiceImpl
refundsStatusService
;
@Value
(
"${liquidnet.express.shunfeng.custid}"
)
private
String
custid
;
@Value
(
"${liquidnet.express.shunfeng.expressType}"
)
private
Integer
expressType
;
@Value
(
"${liquidnet.express.shunfeng.depositumInfo}"
)
private
String
depositumInfo
;
@Autowired
private
ShunfengSignUtils
shunfengSignUtils
;
@Override
public
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
()
{
//TODO 缺快递
...
...
@@ -315,21 +327,22 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
@Override
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
String
orderId
)
{
try
{
// 订单 演出 订单退款数据
KylinOrderTicketPreVo
vo
=
KylinOrderTicketPreVo
.
getNew
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
List
<
KylinOrderRefundsVo
>
kylinOrderRefundsVoBaseList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketVo
.
getOrderTicketsId
());
// 判断是否购买人
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
}
// 入场人 数据脱敏/退款
List
<
KylinOrderTicketEntitiesVo
>
kylinOrderTicketEntitiesVoList
=
orderTicketVo
.
getEntitiesVoList
();
List
<
KylinOrderTicketEntitiesPreRefundVo
>
kylinOrderTicketEntitiesPreRefundVos
=
ObjectUtil
.
getKylinOrderTicketEntitiesPreRefundVoArrayList
();
// 数据脱敏
for
(
KylinOrderTicketEntitiesVo
item
:
kylinOrderTicketEntitiesVoList
)
{
KylinOrderTicketEntitiesPreRefundVo
refundVo
=
KylinOrderTicketEntitiesPreRefundVo
.
getNew
();
if
(
item
.
getEnterIdCode
().
length
()
==
18
)
{
...
...
@@ -343,16 +356,29 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
BeanUtils
.
copyProperties
(
item
,
refundVo
);
kylinOrderTicketEntitiesPreRefundVos
.
add
(
refundVo
);
}
// FieldName
orderTicketVo
.
setFieldName
(
performanceVo
.
getFieldName
());
// 短OrderCode
if
(
orderTicketVo
.
getOrderCode
().
length
()
>
20
)
{
orderTicketVo
.
setOrderCode
(
orderTicketVo
.
getOrderCode
().
substring
(
orderTicketVo
.
getOrderCode
().
length
()
-
10
));
}
// 手续费相关
ArrayList
<
OrderRefundPoundage
>
refundPoundage
=
dataUtils
.
getRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
// 券
ArrayList
<
KylinOrderCoupons
>
orderCoupon
=
dataUtils
.
getOrderCoupon
(
orderId
);
// 快递地址
OrderRefundAddress
refundAddress
=
dataUtils
.
getRefundAddress
(
orderTicketVo
.
getGetTicketType
());
// 整理返回数据
BeanUtils
.
copyProperties
(
orderTicketVo
,
vo
);
vo
.
setIsRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
vo
.
setRefundPoundageList
(
refundPoundage
);
vo
.
setOrderCouponList
(
orderCoupon
);
vo
.
setRefundAddress
(
refundAddress
);
vo
.
setIsTrueName
(
performanceVo
.
getIsTrueName
());
vo
.
setEntitiesPreRefundVos
(
kylinOrderTicketEntitiesPreRefundVos
);
return
ResponseDto
.
success
(
vo
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
log
.
error
(
"toOrderRefundDetailsException"
,
e
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20030"
));
}
}
...
...
@@ -389,7 +415,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
@Override
public
String
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
)
{
public
String
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
,
Integer
sendExpressType
,
String
sendExpressAddress
,
String
appointmentTime
,
String
expressNumber
)
{
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
null
;
try
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
...
...
@@ -452,6 +478,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
String
username
=
StringUtils
.
defaultString
(((
String
)
token
.
get
(
"nickname"
)),
""
);
String
result
=
refundsStatusService
.
userOrderTicketRefunding
(
orderTicketVo
,
refundSinglePrice
.
doubleValue
(),
orderTicketEntitiesId
,
reason
,
picList
,
uid
,
username
,
kylinOrderRefundsVoBaseList
.
size
());
if
(
result
!=
""
)
{
// 退款申请成功 异步去快递下单
expressPlace
(
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
,
orderTicketVo
);
return
result
;
}
else
{
return
"申请失败"
;
...
...
@@ -462,6 +490,127 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
}
@Async
public
void
expressPlace
(
Integer
sendExpressType
,
String
sendExpressAddress
,
String
appointmentTime
,
String
expressNumber
,
KylinOrderTicketVo
orderTicketVo
)
{
if
(
sendExpressType
==
1
)
{
// 上门取件
// 生成预快递单 防止因失败没办法再次发起也不能主动获取数据
KylinOrderExpress
kylinOrderExpressPre
=
new
KylinOrderExpress
();
String
orderExpressId
=
IDGenerator
.
nextSnowId
();
kylinOrderExpressPre
.
setExpressStatus
(
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS1
);
kylinOrderExpressPre
.
setOrderExpressId
(
orderExpressId
);
kylinOrderExpressPre
.
setOrderTicketsId
(
orderTicketVo
.
getOrderTicketsId
());
// 防止重复前面加上 "NEW" 因取消后再发起订单号也不能一致所以直接使用orderExpressId
String
OrderExpressCode
=
"NEW"
+
orderExpressId
;
kylinOrderExpressPre
.
setOrderExpressCode
(
OrderExpressCode
);
kylinOrderExpressPre
.
setExpressType
(
expressType
);
kylinOrderExpressPre
.
setCreatedAt
(
DateUtil
.
getNowTime
());
kylinOrderExpressPre
.
setPerformancesId
(
orderTicketVo
.
getPerformanceId
());
// TODO: 2021/8/26 jxl 队列入库
// kylinOrderExpressMapper.insert(kylinOrderExpressPre);
// 请求下单数据
Map
<
String
,
String
>
hBody
=
new
HashMap
<>();
hBody
.
put
(
"custid"
,
custid
);
// TODO: 2021/8/26 jxl 发货人
hBody
.
put
(
"jContact"
,
"发货人"
);
hBody
.
put
(
"jMobile"
,
"15888889999"
);
hBody
.
put
(
"jAddress"
,
sendExpressAddress
);
hBody
.
put
(
"sendStartTime"
,
appointmentTime
);
// TODO: 2021/8/26 jxl 判断方式
hBody
.
put
(
"payMethod"
,
"2"
);
// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
hBody
.
put
(
"expressType"
,
expressType
.
toString
());
// 顺丰特快
hBody
.
put
(
"depositumInfo"
,
depositumInfo
);
hBody
.
put
(
"orderId"
,
OrderExpressCode
);
hBody
.
put
(
"depositumNo"
,
orderTicketVo
.
getNumber
().
toString
());
OrderRefundAddress
refundAddress
=
dataUtils
.
getRefundAddress
(
orderTicketVo
.
getGetTicketType
());
hBody
.
put
(
"dContact"
,
refundAddress
.
getName
());
hBody
.
put
(
"dTel"
,
refundAddress
.
getPhone
());
hBody
.
put
(
"dAddress"
,
refundAddress
.
getAddress
());
// 生成签名并请求
String
result
=
shunfengSignUtils
.
generateSignatureAndRequestNew
(
hBody
,
"/public/order/v1/placeOrder"
);
HashMap
hashMap
=
new
HashMap
();
try
{
hashMap
=
JsonUtils
.
fromJson
(
result
,
HashMap
.
class
);
}
catch
(
Exception
e
)
{
log
.
info
(
"expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]"
,
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
,
orderTicketVo
);
log
.
error
(
"expressPlaceExceptionError"
,
e
);
}
if
(
null
==
hashMap
.
get
(
"succ"
)
||
hashMap
.
get
(
"succ"
).
equals
(
"fail"
))
{
String
msg
=
""
;
if
(
null
==
hashMap
.
get
(
"succ"
))
{
msg
=
result
;
}
else
{
msg
=
(
String
)
hashMap
.
get
(
"msg"
);
}
log
.
error
(
"expressPlaceResultError"
,
msg
);
}
else
{
HashMap
hashMapResult
=
(
HashMap
)
hashMap
.
get
(
"result"
);
KylinOrderExpress
kylinOrderExpress
=
new
KylinOrderExpress
();
kylinOrderExpress
.
setExpressStatus
(
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
);
kylinOrderExpress
.
setMailno
((
String
)
hashMapResult
.
get
(
"mailno"
));
kylinOrderExpress
.
setFilterResult
(
hashMapResult
.
get
(
"filter_result"
).
toString
());
kylinOrderExpress
.
setRemark
((
String
)
hashMapResult
.
get
(
"remark"
));
kylinOrderExpress
.
setOrigincode
((
String
)
hashMapResult
.
get
(
"origincode"
));
kylinOrderExpress
.
setDestcode
((
String
)
hashMapResult
.
get
(
"destcode"
));
kylinOrderExpress
.
setTwoDimensionCode
((
String
)
hashMapResult
.
get
(
"twoDimensionCode"
));
kylinOrderExpress
.
setReturn_tracking_no
((
String
)
hashMapResult
.
get
(
"return_tracking_no"
));
kylinOrderExpress
.
setSourceTransferCode
((
String
)
hashMapResult
.
get
(
"sourceTransferCode"
));
kylinOrderExpress
.
setSourceCityCode
((
String
)
hashMapResult
.
get
(
"sourceCityCode"
));
kylinOrderExpress
.
setSourceDeptCode
((
String
)
hashMapResult
.
get
(
"sourceDeptCode"
));
kylinOrderExpress
.
setSourceTeamCode
((
String
)
hashMapResult
.
get
(
"sourceTeamCode"
));
kylinOrderExpress
.
setDestCityCode
((
String
)
hashMapResult
.
get
(
"destCityCode"
));
kylinOrderExpress
.
setDestDeptCode
((
String
)
hashMapResult
.
get
(
"destDeptCode"
));
kylinOrderExpress
.
setDestDeptCodeMapping
((
String
)
hashMapResult
.
get
(
"destDeptCodeMapping"
));
kylinOrderExpress
.
setDestTeamCode
((
String
)
hashMapResult
.
get
(
"destTeamCode"
));
kylinOrderExpress
.
setDestTeamCodeMapping
((
String
)
hashMapResult
.
get
(
"destTeamCodeMapping"
));
kylinOrderExpress
.
setDestTransferCode
((
String
)
hashMapResult
.
get
(
"destTransferCode"
));
kylinOrderExpress
.
setDestRouteLabel
((
String
)
hashMapResult
.
get
(
"destRouteLabel"
));
kylinOrderExpress
.
setProName
((
String
)
hashMapResult
.
get
(
"proName"
));
kylinOrderExpress
.
setCargoTypeCode
((
String
)
hashMapResult
.
get
(
"cargoTypeCode"
));
kylinOrderExpress
.
setLimitTypeCode
((
String
)
hashMapResult
.
get
(
"limitTypeCode"
));
kylinOrderExpress
.
setExpressTypeCode
((
String
)
hashMapResult
.
get
(
"expressTypeCode"
));
kylinOrderExpress
.
setCodingMapping
((
String
)
hashMapResult
.
get
(
"codingMapping"
));
kylinOrderExpress
.
setCodingMappingOut
((
String
)
hashMapResult
.
get
(
"codingMappingOut"
));
kylinOrderExpress
.
setXbFlag
((
String
)
hashMapResult
.
get
(
"xbFlag"
));
kylinOrderExpress
.
setPrintFlag
((
String
)
hashMapResult
.
get
(
"printFlag"
));
kylinOrderExpress
.
setProCode
((
String
)
hashMapResult
.
get
(
"proCode"
));
kylinOrderExpress
.
setPrintIcon
((
String
)
hashMapResult
.
get
(
"printIcon"
));
kylinOrderExpress
.
setAbFlag
((
String
)
hashMapResult
.
get
(
"abFlag"
));
kylinOrderExpress
.
setDestPortCode
((
String
)
hashMapResult
.
get
(
"destPortCode"
));
kylinOrderExpress
.
setDestPortCode
((
String
)
hashMapResult
.
get
(
"destPortCode"
));
kylinOrderExpress
.
setDestCountry
((
String
)
hashMapResult
.
get
(
"destCountry"
));
kylinOrderExpress
.
setDestPostCode
((
String
)
hashMapResult
.
get
(
"destPostCode"
));
kylinOrderExpress
.
setGoodsValueTotal
((
String
)
hashMapResult
.
get
(
"goodsValueTotal"
));
kylinOrderExpress
.
setCurrencySymbol
((
String
)
hashMapResult
.
get
(
"currencySymbol"
));
kylinOrderExpress
.
setGoodsNumber
((
String
)
hashMapResult
.
get
(
"goodsNumber"
));
kylinOrderExpress
.
setTwoDimensionCode2
((
String
)
hashMapResult
.
get
(
"twoDimensionCode2"
));
kylinOrderExpress
.
setNewIcon
((
String
)
hashMapResult
.
get
(
"newIcon"
));
kylinOrderExpress
.
setNewAbflag
((
String
)
hashMapResult
.
get
(
"newAbflag"
));
kylinOrderExpress
.
setUpdatedAt
(
DateUtil
.
getNowTime
());
// TODO: 2021/8/26 jxl 队列入库
/*kylinOrderExpressMapper.update(
kylinOrderExpress
, new UpdateWrapper<KylinOrderExpress>().in("order_express_id", orderExpressId)
);*/
KylinOrderExpressVo
kylinOrderExpressVo
=
new
KylinOrderExpressVo
();
BeanUtils
.
copyProperties
(
kylinOrderExpressPre
,
kylinOrderExpressVo
);
kylinOrderExpressVo
.
setMailno
(
kylinOrderExpress
.
getMailno
());
kylinOrderExpressVo
.
setExpressStatus
(
kylinOrderExpress
.
getExpressStatus
());
dataUtils
.
setOrderExpressInfo
(
orderTicketVo
.
getOrderTicketsId
(),
kylinOrderExpressVo
);
}
}
else
if
(
sendExpressType
==
2
)
{
// 自主发货
}
}
@Override
public
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
)
{
...
...
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