Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
3bdb9f2c
Commit
3bdb9f2c
authored
Dec 01, 2021
by
徐康
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
虚拟商品退款
parent
13a08f40
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
152 additions
and
2 deletions
+152
-2
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+9
-0
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundVo.java
+4
-2
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+1
-0
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
+5
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+133
-0
No files found.
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
3bdb9f2c
...
@@ -254,6 +254,15 @@ public class OrderController {
...
@@ -254,6 +254,15 @@ public class OrderController {
}
}
/**
/**
* 用户申请退款
*/
@ApiAnnotation
(
logMessage
=
"virtualGoodsRefund"
)
@PostMapping
(
"/virtualGoodsRefund"
)
public
BaseResponse
virtualGoodsRefund
(
@Validated
@LogParams
@RequestBody
OrderRefundVo
orderRefundVo
)
{
return
orderservice
.
virtualGoodsRefund
(
orderRefundVo
);
}
/**
* 获取订单排队号
* 获取订单排队号
*/
*/
@ApiAnnotation
(
logMessage
=
"queueIndex"
)
@ApiAnnotation
(
logMessage
=
"queueIndex"
)
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundVo.java
View file @
3bdb9f2c
...
@@ -18,6 +18,8 @@ import io.swagger.annotations.ApiModelProperty;
...
@@ -18,6 +18,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.constraints.NotBlank
;
/**
/**
* 用户退款申请
* 用户退款申请
*
*
...
@@ -28,10 +30,10 @@ import org.hibernate.validator.constraints.NotEmpty;
...
@@ -28,10 +30,10 @@ import org.hibernate.validator.constraints.NotEmpty;
@Data
@Data
public
class
OrderRefundVo
{
public
class
OrderRefundVo
{
@Not
Empty
(
message
=
"sessionId 不能为空"
)
@Not
Blank
(
message
=
"sessionId 不能为空"
)
private
String
sessionId
;
private
String
sessionId
;
@Not
Empty
(
message
=
"订单编号不能为空"
)
@Not
Blank
(
message
=
"订单编号不能为空"
)
private
String
oid
;
private
String
oid
;
private
String
reason
;
private
String
reason
;
...
...
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
3bdb9f2c
...
@@ -192,6 +192,7 @@ public enum ResponseResult {
...
@@ -192,6 +192,7 @@ public enum ResponseResult {
ORDER_INVOICE_IS_OPENED
(
"45083"
,
"存在选中的订单已开过发票,请重新选择订单"
,
""
),
ORDER_INVOICE_IS_OPENED
(
"45083"
,
"存在选中的订单已开过发票,请重新选择订单"
,
""
),
ORDER_CODES_REPEAT
(
"45084"
,
"同一次开票,选中的订单不能重复,请重新选择订单"
,
""
),
ORDER_CODES_REPEAT
(
"45084"
,
"同一次开票,选中的订单不能重复,请重新选择订单"
,
""
),
ORDER_INVOICE_CONFIG_IS_NULL
(
"45085"
,
"发票配置信息为空,不可开票"
,
""
),
ORDER_INVOICE_CONFIG_IS_NULL
(
"45085"
,
"发票配置信息为空,不可开票"
,
""
),
ORDER_BIZ_TYPE_ERROR
(
"45086"
,
"订单业务类型异常"
,
""
),
/**
/**
* 售后单
* 售后单
...
...
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
3bdb9f2c
...
@@ -85,6 +85,11 @@ public interface Orderservice extends OrderFactoryService{
...
@@ -85,6 +85,11 @@ public interface Orderservice extends OrderFactoryService{
BaseResponse
orderRefund
(
OrderRefundVo
orderRefundVo
);
BaseResponse
orderRefund
(
OrderRefundVo
orderRefundVo
);
/**
/**
* 订单申请退款
*/
BaseResponse
virtualGoodsRefund
(
OrderRefundVo
orderRefundVo
);
/**
* 获取订单排队号
* 获取订单排队号
*/
*/
BaseResponse
queryOrderQueueIndex
(
QueryOrderQueueIndexVo
queryOrderQueueIndexVo
);
BaseResponse
queryOrderQueueIndex
(
QueryOrderQueueIndexVo
queryOrderQueueIndexVo
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
3bdb9f2c
...
@@ -2087,6 +2087,139 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -2087,6 +2087,139 @@ public class OrderServiceImpl implements Orderservice {
return
ResponseUtil
.
success
();
return
ResponseUtil
.
success
();
}
}
@Override
public
BaseResponse
virtualGoodsRefund
(
OrderRefundVo
orderRefundVo
)
{
if
(
StringUtils
.
isEmpty
(
orderRefundVo
.
getReason
()))
{
orderRefundVo
.
setReason
(
"退款"
);
}
// 查询用户信息
AssortmentCustomerInfoVo
userInfo
=
customerInfoManager
.
getCustomerInfoByObject
(
orderRefundVo
.
getSessionId
());
if
(
userInfo
==
null
||
StringUtils
.
isEmpty
(
userInfo
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
}
String
memberId
=
userInfo
.
getMemberId
();
String
partnerId
=
userInfo
.
getPartnerId
();
String
wxAppId
=
userInfo
.
getWxAppId
();
if
(
StringUtils
.
isBlank
(
orderRefundVo
.
getOid
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
.
getCode
(),
"oid不能为空"
);
}
BaseQueryOrderRequest
baseQueryOrderRequest
=
new
BaseQueryOrderRequest
();
baseQueryOrderRequest
.
setOrderId
(
orderRefundVo
.
getOid
());
baseQueryOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
QueryOrderByIdResponse
queryOrderByIdResponse
=
orderCenterSdkService
.
queryOrderById
(
baseQueryOrderRequest
);
String
string
=
JSONObject
.
toJSONString
(
queryOrderByIdResponse
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
string
);
QueryOrderByIdResponseDto
orderByIdResponseDto
=
jsonObject
.
toJavaObject
(
QueryOrderByIdResponseDto
.
class
);
if
(!
RESPONSE_SUCCESS_CODE
.
equals
(
orderByIdResponseDto
.
getErrcode
())
||
orderByIdResponseDto
.
getData
()
==
null
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_QUERYORDER_ERROR
.
getCode
(),
"订单信息不存在"
);
}
OrderBeanV1
orderBean
=
orderByIdResponseDto
.
getData
();
if
(!
memberId
.
equals
(
orderBean
.
getUserId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_QUERYORDER_ERROR
.
getCode
(),
"不能操作非本人的订单"
);
}
if
(!
BizTypeEnum
.
SALE_COUPON
.
getBizType
().
equals
(
orderBean
.
getBizType
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_BIZ_TYPE_ERROR
.
getCode
(),
"订单不是是卖券订单"
);
}
if
(
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderByIdResponseDto
.
getData
().
getPayStatus
())
||
OrderStatus
.
WAIT_PAY
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单未支付,无法退款"
);
}
if
(
OrderStatus
.
CALCEL
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单已取消,无法退款"
);
}
if
(!
OrderStatus
.
COMPLETE
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单未完成,无法退款"
);
}
//TODO 查询配置能否退款
//TODO 作废券
//TODO 作废券失败处理
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
response
=
null
;
Long
refundId
=
System
.
currentTimeMillis
();
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
if
(
orderBean
.
getAmount
()
!=
0
)
{
if
(
null
!=
orderBean
.
getOrderPayItem
()
&&
orderBean
.
getOrderPayItem
().
size
()
>
0
)
{
//TODO 这里是混合支付退款,不需要的话应该去掉
//调用支付退款
MultiOrderRefundRequest
multiOrderRefundRequest
=
orderAdapter
.
getMultiOrderPayRefundRequest
(
orderBean
,
refundId
);
MultiOrderRefundResponse
multiOrderRefundResponse
=
payServiceImpl
.
paymentApplicationRefund
(
multiOrderRefundRequest
,
orderBean
.
getCompanyId
());
if
(
multiOrderRefundResponse
==
null
||
multiOrderRefundResponse
.
getData
()
==
null
||
!
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
ORDER_PAY_RESPONSE_SUCCESS
.
equals
(
multiOrderRefundResponse
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
MULTIORDER__ERRORREFUND
.
getCode
(),
"multiOrderRefund_failed"
);
}
List
<
MultiOrderRefundResponse
.
RefundPlatformResponse
>
refundPlatformResponseList
=
multiOrderRefundResponse
.
getData
().
refundPlatformResponseList
;
if
(
null
!=
refundPlatformResponseList
&&
refundPlatformResponseList
.
size
()
>
0
)
{
redisCache
.
save
(
RedisUtil
.
getPaymentTransIdSequenceKey
(
refundPlatformResponseList
.
get
(
0
).
getTransId
()),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
}
//TODO 退款失败则记录到世昌的表里
//获取支付返回退款状态
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
}
else
{
//调用支付退款
com
.
freemud
.
sdk
.
api
.
assortment
.
payment
.
request
.
OrderRefundRequest
orderPayRefundRequest
=
orderAdapter
.
getOrderPayRefundRequest
(
orderBean
,
refundId
,
orderRefundVo
.
getOid
());
//抖音支付退款必传
orderPayRefundRequest
.
setRefundDesc
(
orderRefundVo
.
getReason
()
==
null
?
"用户退款"
:
orderRefundVo
.
getReason
());
response
=
payServiceImpl
.
orderRefund
(
orderPayRefundRequest
);
if
(
response
==
null
||
response
.
getData
()
==
null
||
!
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
response
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"orderRefund_failed"
);
}
//TODO 退款失败则记录到世昌的表里
//获取支付返回退款状态
state
=
response
.
getData
().
getRefundStatus
()
==
null
?
PayRefundStatus
.
SUCCESS
.
getCode
()
:
response
.
getData
().
getRefundStatus
();
}
}
CancelOrderRequest
cancelOrderRequest
=
orderAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
partnerId
,
AfterSalesType
.
USER_CANCEL
,
orderRefundVo
.
getReason
(),
LogThreadLocal
.
getTrackingNo
(),
refundId
.
toString
());
cancelOrderRequest
.
setOperator
(
orderBean
.
getUserName
());
cancelOrderRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
if
(
Objects
.
equals
(
PayRefundStatus
.
RUNNING
.
getCode
(),
state
))
{
// 退款中
cancelOrderRequest
.
setCreateEvent
(
AfterSalesOrderCreateEventEnum
.
RETURN_COMPLETE
.
getCreateEvent
());
}
else
if
(
Objects
.
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
(),
state
))
{
//退款成功
cancelOrderRequest
.
setCreateEvent
(
AfterSalesOrderCreateEventEnum
.
REFUND_COMPLETE
.
getCreateEvent
());
}
cancelOrderRequest
.
setReqRemark
(
orderRefundVo
.
getRemarks
());
cancelOrderRequest
.
setRefundDeliveryAmount
(
false
);
// 商城订单 增加拓展信息
CancelOrderRequest
.
AfterSalesOrderExtInfoReq
salesOrderExtInfoReq
=
new
CancelOrderRequest
.
AfterSalesOrderExtInfoReq
();
salesOrderExtInfoReq
.
setRefundMode
(
orderRefundVo
.
getRefundMode
());
cancelOrderRequest
.
setExtInfoReq
(
salesOrderExtInfoReq
);
BaseOrderResponse
baseOrderResponse
=
orderCenterSdkService
.
orderCancel
(
cancelOrderRequest
);
if
(
baseOrderResponse
==
null
||
!
ObjectUtils
.
equals
(
ResponseConstant
.
SUCCESS_RESPONSE_CODE
,
baseOrderResponse
.
getErrcode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"orderRefund_failed"
);
}
// 删除订单 通知活动添加商品库存
orderQueueService
.
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
(),
orderBean
.
getPayStatus
());
return
ResponseUtil
.
success
();
}
/**
/**
* 商家未接单,取消订单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
* 商家未接单,取消订单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
...
...
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