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
ad0666ab
Commit
ad0666ab
authored
Dec 02, 2021
by
周晓航
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交 申请退款开发代码
Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent
ac378d25
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
137 additions
and
26 deletions
+137
-26
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+15
-0
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+1
-0
order-application-service/src/main/java/cn/freemud/enums/BaseOrderStatus.java
+36
-16
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
+2
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+83
-10
No files found.
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
ad0666ab
...
...
@@ -2145,6 +2145,21 @@ public class OrderAdapter {
return
orderPayRefundRequest
;
}
public
com
.
freemud
.
sdk
.
api
.
assortment
.
payment
.
request
.
OrderRefundRequest
getOrderPayRefundRequest
(
OrderInfoReqs
orderBean
,
Long
refundId
,
String
fatherOrderId
)
{
com
.
freemud
.
sdk
.
api
.
assortment
.
payment
.
request
.
OrderRefundRequest
orderPayRefundRequest
=
new
com
.
freemud
.
sdk
.
api
.
assortment
.
payment
.
request
.
OrderRefundRequest
();
orderPayRefundRequest
.
setOrgTransId
(
fatherOrderId
);
orderPayRefundRequest
.
setPartnerId
(
orderBean
.
getPartnerId
());
orderPayRefundRequest
.
setStoreId
(
orderBean
.
getStoreId
());
orderPayRefundRequest
.
setOrgPayFmId
(
orderBean
.
getPayRequestNo
());
orderPayRefundRequest
.
setRefundAmount
(
orderBean
.
getActualPayAmount
().
longValue
());
orderPayRefundRequest
.
setRefundId
(
refundId
);
OrderExtInfoDto
orderExtInfoDTO
=
gson
.
fromJson
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
orderPayRefundRequest
.
setOpenid
(
orderExtInfoDTO
!=
null
?
orderExtInfoDTO
.
getOpenid
()
:
""
);
orderPayRefundRequest
.
setAppId
(
orderExtInfoDTO
!=
null
?
orderExtInfoDTO
.
getAppid
()
:
""
);
orderPayRefundRequest
.
setNotifyUrl
(
refundNotifyCallback
);
return
orderPayRefundRequest
;
}
public
MultiOrderRefundRequest
getMultiOrderPayRefundRequest
(
OrderBeanV1
orderBean
,
Long
refundId
)
{
MultiOrderRefundRequest
multiQueryRequest
=
new
MultiOrderRefundRequest
();
multiQueryRequest
.
setStationId
(
"1"
);
...
...
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
ad0666ab
...
...
@@ -246,6 +246,7 @@ public class OrderController {
*/
@ApiAnnotation
(
logMessage
=
"virtualGoodsRefund"
)
@PostMapping
(
"/virtualGoodsRefund"
)
@Deprecated
public
BaseResponse
virtualGoodsRefund
(
@Validated
@LogParams
@RequestBody
OrderRefundVo
orderRefundVo
)
{
return
orderservice
.
virtualGoodsRefund
(
orderRefundVo
);
}
...
...
order-application-service/src/main/java/cn/freemud/enums/BaseOrderStatus.java
View file @
ad0666ab
package
cn
.
freemud
.
enums
;
import
java.util.Objects
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
...
...
@@ -18,29 +20,39 @@ package cn.freemud.enums;
* @see OrderStatus
*/
public
enum
BaseOrderStatus
{
WAIT_PAY
(
1
,
"待支付"
,
"To be paid"
),
TAKE_ORDER
(
2
,
"下单"
,
"place an order"
),
RECEIPT
(
3
,
"接单"
,
"Receiving orders"
),
COMPLETE_MAKE
(
4
,
"制作完成"
,
"Complete Make"
),
DISTRIBUTION
(
5
,
"配送中"
,
"In delivery"
),
COMPLETE
(
6
,
"已完成"
,
"Complete"
),
CALCEL
(
7
,
"已关闭(退款完成)"
,
"Cancel"
);
WAIT_PAY
(
1
,
"待支付"
,
"To be paid"
,
2
),
TAKE_ORDER
(
2
,
"下单"
,
"place an order"
,
1
),
RECEIPT
(
3
,
"接单"
,
"Receiving orders"
,
3
),
COMPLETE_MAKE
(
4
,
"制作完成"
,
"Complete Make"
,
31
),
DISTRIBUTION
(
5
,
"配送中"
,
"In delivery"
,
4
),
COMPLETE
(
6
,
"已完成"
,
"Complete"
,
5
),
CALCEL
(
7
,
"已关闭(退款完成)"
,
"Cancel"
,
6
);
private
Integer
code
;
// 订单数据库记录的状态
private
Integer
baseStatus
;
private
String
desc
;
private
String
descEn
;
// 老业务订单的状态
private
Integer
oldStatus
;
BaseOrderStatus
(
Integer
code
,
String
desc
,
String
descEn
)
{
this
.
code
=
code
;
BaseOrderStatus
(
Integer
code
,
String
desc
,
String
descEn
,
Integer
oldStatus
)
{
this
.
baseStatus
=
code
;
this
.
desc
=
desc
;
this
.
descEn
=
descEn
;
this
.
oldStatus
=
oldStatus
;
}
public
static
Integer
getOldStatus
(
Integer
baseStatus
)
{
BaseOrderStatus
byCode
=
getByCode
(
baseStatus
);
Objects
.
requireNonNull
(
byCode
,
"新老订单类型转化错误,入参:"
+
baseStatus
);
return
byCode
.
getOldStatus
();
}
public
static
Integer
[]
getAllCodes
()
{
Integer
[]
codeArray
=
new
Integer
[
values
().
length
];
int
i
=
0
;
for
(
BaseOrderStatus
orderStatus
:
values
())
{
codeArray
[
i
]
=
orderStatus
.
get
Code
();
codeArray
[
i
]
=
orderStatus
.
get
BaseStatus
();
i
++;
}
return
codeArray
;
...
...
@@ -51,7 +63,7 @@ public enum BaseOrderStatus {
return
null
;
}
for
(
BaseOrderStatus
orderStatus
:
values
())
{
if
(
orderStatus
.
get
Code
().
equals
(
code
))
{
if
(
orderStatus
.
get
BaseStatus
().
equals
(
code
))
{
return
orderStatus
;
}
}
...
...
@@ -66,12 +78,12 @@ public enum BaseOrderStatus {
this
.
descEn
=
descEn
;
}
public
Integer
get
Code
()
{
return
code
;
public
Integer
get
BaseStatus
()
{
return
baseStatus
;
}
public
void
set
Code
(
Integer
code
)
{
this
.
code
=
code
;
public
void
set
BaseStatus
(
Integer
baseStatus
)
{
this
.
baseStatus
=
baseStatus
;
}
public
String
getDesc
()
{
...
...
@@ -81,4 +93,12 @@ public enum BaseOrderStatus {
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
Integer
getOldStatus
()
{
return
oldStatus
;
}
public
void
setOldStatus
(
Integer
oldStatus
)
{
this
.
oldStatus
=
oldStatus
;
}
}
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
ad0666ab
...
...
@@ -86,7 +86,9 @@ public interface Orderservice extends OrderFactoryService{
/**
* 订单申请退款
* @see Orderservice#couponOrderRefund(cn.freemud.entities.vo.OrderRefundVo)
*/
@Deprecated
BaseResponse
virtualGoodsRefund
(
OrderRefundVo
orderRefundVo
);
/**
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
ad0666ab
...
...
@@ -314,7 +314,7 @@ public class OrderServiceImpl implements Orderservice {
public
BaseResponse
createOrder
(
CreateOrderBONew
createOrderBO
)
{
//创建订单前参数校验与数据获取
BaseResponse
checkResponse
=
checkOrder
.
checkCreateOrderInfo
(
createOrderBO
);
if
(
checkResponse
!=
null
&&
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
checkResponse
.
getCode
())
)
{
if
(
checkResponse
!=
null
&&
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
checkResponse
.
getCode
()))
{
return
checkResponse
;
}
//创建订单调用集成,不区分订单类型
...
...
@@ -393,7 +393,8 @@ public class OrderServiceImpl implements Orderservice {
orderCenterSdkService
.
orderEdit
(
editReq
);
}
}
}
catch
(
Exception
ignored
)
{}
//这个异常catch住,不影响业务流程
}
catch
(
Exception
ignored
)
{
}
//这个异常catch住,不影响业务流程
String
takeCode
;
String
daySeq
;
...
...
@@ -1804,7 +1805,7 @@ public class OrderServiceImpl implements Orderservice {
// TODO: 2019/9/10 删除订单通知
orderQueueService
.
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
());
weChatLiveMsgHandle
.
reportOrderStatus
(
orderBean
,
3
);
weChatLiveMsgHandle
.
reportOrderStatus
(
orderBean
,
3
);
return
ResponseUtil
.
success
();
}
...
...
@@ -2088,7 +2089,11 @@ public class OrderServiceImpl implements Orderservice {
return
ResponseUtil
.
success
();
}
/**
* @see cn.freemud.service.Orderservice#couponOrderRefund(cn.freemud.entities.vo.OrderRefundVo)
*/
@Override
@Deprecated
public
BaseResponse
virtualGoodsRefund
(
OrderRefundVo
orderRefundVo
)
{
if
(
StringUtils
.
isEmpty
(
orderRefundVo
.
getReason
()))
{
...
...
@@ -2123,7 +2128,7 @@ public class OrderServiceImpl implements Orderservice {
if
(!
memberId
.
equals
(
orderBean
.
getUserId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_QUERYORDER_ERROR
.
getCode
(),
"不能操作非本人的订单"
);
}
if
(!
BizTypeEnum
.
SALE_COUPON
.
getBizType
().
equals
(
orderBean
.
getBizType
()))
{
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
())
...
...
@@ -2141,11 +2146,9 @@ public class OrderServiceImpl implements Orderservice {
//TODO 查询配置能否退款
//TODO 作废券
//TODO 作废券失败处理
...
...
@@ -2650,7 +2653,7 @@ public class OrderServiceImpl implements Orderservice {
baseCreateOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
CreateOrderRequest
createOrderRequest
=
new
CreateOrderRequest
();
createOrderRequest
.
setBaseCreateOrderRequest
(
baseCreateOrderRequest
);
createOrderRequest
.
setOpenId
(
userLoginInfoDto
.
getOpenId
());
createOrderRequest
.
setOpenId
(
userLoginInfoDto
.
getOpenId
());
createOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
CreateOrderResponse
createOrderFlowResponse
=
orderBusinessService
.
createOrderFlow
(
createOrderRequest
);
...
...
@@ -3437,7 +3440,7 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public
BaseResponse
<
OrderInvoiceConfigVo
>
queryInvoiceConfig
(
GetInvoiceConfigRequest
request
){
public
BaseResponse
<
OrderInvoiceConfigVo
>
queryInvoiceConfig
(
GetInvoiceConfigRequest
request
)
{
AssortmentCustomerInfoVo
userLoginInfoDto
=
customerInfoManager
.
getCustomerInfoByObject
(
request
.
getSessionId
());
if
(
userLoginInfoDto
==
null
||
StringUtils
.
isEmpty
(
userLoginInfoDto
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
...
...
@@ -3486,13 +3489,78 @@ public class OrderServiceImpl implements Orderservice {
// fisherman 未完成调用券码 核销券
// fisherman 核销券失败的逻辑处理
// 走正常退款订单逻辑
checkResult
=
this
.
doCouponOrderRefund
(
orderBean
,
orderRefundVo
);
if
(!
Objects
.
equals
(
checkResult
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
()))
{
return
checkResult
;
}
return
ResponseUtil
.
success
();
}
/**
* 订单退款操作
* 1.调用支付 进行退款
* 2.调用基础服务, 进行订单状态变更
*
* @param orderBean
* @return
*/
private
BaseResponse
doCouponOrderRefund
(
OrderInfoReqs
orderBean
,
OrderRefundVo
orderRefundVo
)
{
// 支付金额 大于0 调用支付 进行退款
Long
refundId
=
System
.
currentTimeMillis
();
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
if
(
orderBean
.
getActualPayAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
//调用支付退款
com
.
freemud
.
sdk
.
api
.
assortment
.
payment
.
request
.
OrderRefundRequest
orderPayRefundRequest
=
orderAdapter
.
getOrderPayRefundRequest
(
orderBean
,
refundId
,
orderRefundVo
.
getOid
());
//抖音支付退款必传
orderPayRefundRequest
.
setRefundDesc
(
orderRefundVo
.
getReason
()
==
null
?
"用户退款"
:
orderRefundVo
.
getReason
());
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
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
.
getOrderCode
(),
orderBean
.
getPartnerId
(),
AfterSalesType
.
USER_CANCEL
,
orderRefundVo
.
getReason
(),
LogThreadLocal
.
getTrackingNo
(),
refundId
.
toString
());
cancelOrderRequest
.
setOperator
(
orderBean
.
getUserName
());
cancelOrderRequest
.
setPartnerId
(
orderBean
.
getPartnerId
());
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"
);
}
// 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode
orderQueueService
.
backOrdersStatusChange
(
orderBean
.
getOrderCode
(),
BaseOrderStatus
.
getOldStatus
(
orderBean
.
getOrderState
()),
orderBean
.
getPayState
());
return
ResponseUtil
.
success
();
}
/**
* 校验订单是否可退款等
*
* @param userLoginInfoDto
* @param orderBean
* @return
...
...
@@ -3507,7 +3575,7 @@ public class OrderServiceImpl implements Orderservice {
return
ResponseUtil
.
error
(
ResponseResult
.
OPERATE_NOT_SUPPORT
.
getCode
(),
"只可操作卖券订单"
);
}
// 校验订单状态 卖券订单只有在6已完成状态下 才能退款
if
(
orderBean
.
getOrderState
().
compareTo
(
BaseOrderStatus
.
COMPLETE
.
get
Code
())
!=
0
)
{
if
(
orderBean
.
getOrderState
().
compareTo
(
BaseOrderStatus
.
COMPLETE
.
get
BaseStatus
())
!=
0
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
OPERATE_NOT_SUPPORT
.
getCode
(),
"只可操作完成的订单"
);
}
// 校验一遍是否有售后单
...
...
@@ -3515,11 +3583,15 @@ public class OrderServiceImpl implements Orderservice {
return
ResponseUtil
.
error
(
ResponseResult
.
OPERATE_NOT_SUPPORT
.
getCode
(),
"已存在退款申请,请耐心等待处理"
);
}
// fisherman 需要核实一下 是否申请退款,订单主状态还不会变
// fisherman 查询配置是否能退款 未完成
return
ResponseUtil
.
success
();
}
/**
* 调用基础服务 获取订单信息
*
* @param oid
* @return
*/
...
...
@@ -3542,10 +3614,11 @@ public class OrderServiceImpl implements Orderservice {
/**
* 查询用户 是否登录
*
* @param sessionId
* @return
*/
private
BaseResponse
<
AssortmentCustomerInfoVo
>
checkUserLoginInfoDto
(
String
sessionId
){
private
BaseResponse
<
AssortmentCustomerInfoVo
>
checkUserLoginInfoDto
(
String
sessionId
)
{
AssortmentCustomerInfoVo
userLoginInfoDto
=
customerInfoManager
.
getCustomerInfoByObject
(
sessionId
);
if
(
userLoginInfoDto
==
null
||
StringUtils
.
isEmpty
(
userLoginInfoDto
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
...
...
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