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
47df9630
Commit
47df9630
authored
Dec 16, 2022
by
查志伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
C端退款增加配置校验
parent
f1fef8a7
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
23 deletions
+46
-23
order-application-service/src/main/java/cn/freemud/service/RefundService.java
+5
-0
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
+41
-23
No files found.
order-application-service/src/main/java/cn/freemud/service/RefundService.java
View file @
47df9630
...
@@ -17,6 +17,7 @@ import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
...
@@ -17,6 +17,7 @@ import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.enums.AfterSalesRefunStateEnum
;
import
cn.freemud.management.enums.AfterSalesRefunStateEnum
;
import
cn.freemud.management.service.adapter.OrderManagerAdapter
;
import
cn.freemud.management.service.adapter.OrderManagerAdapter
;
import
cn.freemud.management.service.handle.OrderVerifyHandle
;
import
cn.freemud.management.service.handle.PaymentHandle
;
import
cn.freemud.management.service.handle.PaymentHandle
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.impl.OrderQueueService
;
import
cn.freemud.service.impl.OrderQueueService
;
...
@@ -75,6 +76,7 @@ public class RefundService {
...
@@ -75,6 +76,7 @@ public class RefundService {
private
final
AssortmentCloudPrinterManager
cloudPrinterManager
;
private
final
AssortmentCloudPrinterManager
cloudPrinterManager
;
private
final
FMAssistantCloudPrintClient
fmAssistantCloudPrintClient
;
private
final
FMAssistantCloudPrintClient
fmAssistantCloudPrintClient
;
private
final
OrderManagerAdapter
orderManagerAdapter
;
private
final
OrderManagerAdapter
orderManagerAdapter
;
private
final
OrderVerifyHandle
orderVerifyHandle
;
private
OrderInfoReqs
preValidRefund
(
String
partnerId
,
String
orderCode
,
Byte
refundMode
)
{
private
OrderInfoReqs
preValidRefund
(
String
partnerId
,
String
orderCode
,
Byte
refundMode
)
{
// 查询订单信息
// 查询订单信息
...
@@ -118,6 +120,9 @@ public class RefundService {
...
@@ -118,6 +120,9 @@ public class RefundService {
.
findAny
();
.
findAny
();
if
(
exists
.
isPresent
())
throw
new
ServiceException
(
"商家正在处理中,请稍后……"
);
if
(
exists
.
isPresent
())
throw
new
ServiceException
(
"商家正在处理中,请稍后……"
);
}
}
// 校验是否允许发起退款
if
(!
orderVerifyHandle
.
getRefundConfig
(
order
))
throw
new
ServiceException
(
"该门店不支持线上退款,请联系门店进行线下处理"
);
//退款是否退配送费
//退款是否退配送费
boolean
refundDeliveryFee
=
isRefundDeliveryFee
(
order
);
boolean
refundDeliveryFee
=
isRefundDeliveryFee
(
order
);
...
...
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
View file @
47df9630
...
@@ -3,14 +3,14 @@ package cn.freemud.management.service.handle;
...
@@ -3,14 +3,14 @@ package cn.freemud.management.service.handle;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.response.order.OrderManagerResponse
;
import
cn.freemud.management.entities.dto.response.order.OrderManagerResponse
;
import
cn.freemud.management.enums.
*
;
import
cn.freemud.management.enums.
DeliveryStatus
;
import
cn.freemud.management.enums.OperateType
;
import
cn.freemud.management.enums.OperateType
;
import
cn.freemud.management.enums.RefundStatus
;
import
cn.freemud.management.enums.ResponseResult
;
import
cn.freemud.management.util.ResponseUtil
;
import
cn.freemud.management.util.ResponseUtil
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager
;
import
com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.AccountBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.RefundBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.RefundBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.*
;
import
com.freemud.application.sdk.api.ordercenter.enums.*
;
...
@@ -18,11 +18,12 @@ import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderSourceV1;
...
@@ -18,11 +18,12 @@ import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderSourceV1;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.sdk.api.assortment.message.enums.OrderType
;
import
com.freemud.sdk.api.assortment.message.enums.OrderType
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant
;
import
com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant
;
import
com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity
;
import
com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
...
@@ -582,30 +583,47 @@ public class OrderVerifyHandle {
...
@@ -582,30 +583,47 @@ public class OrderVerifyHandle {
}
}
/**
/**
*
已完成
订单退款配置查询
* 订单退款配置查询
*
*
* @param data
* @return true=可同意退款
* @return true=可同意退款
*/
*/
private
boolean
getRefundConfig
(
OrderBeanV1
data
)
{
public
boolean
getRefundConfig
(
OrderBeanV1
order
)
{
return
getRefundConfig
(
order
.
getCompanyId
(),
order
.
getOrderType
(),
order
.
getBizType
(),
(
int
)
order
.
getMarketingType
(),
order
.
getStatusV2
(),
order
.
getExtInfo
());
}
/**
* 订单退款配置查询
*
* @return true=可同意退款
*/
public
boolean
getRefundConfig
(
OrderInfoReqs
order
)
{
return
getRefundConfig
(
order
.
getPartnerId
(),
order
.
getOrderType
(),
order
.
getBizType
(),
order
.
getMarketingType
(),
order
.
getOrderState
(),
order
.
getExtInfo
());
}
/**
* 订单退款配置查询
*
* @return true=可同意退款
*/
private
boolean
getRefundConfig
(
String
partnerId
,
Integer
orderType
,
Integer
bizType
,
Integer
marketType
,
Integer
orderState
,
String
extStr
)
{
boolean
isFinishRefund
=
false
;
boolean
isFinishRefund
=
false
;
// [华莱士20210410] 微商城订单判断
// [华莱士20210410] 微商城订单判断
if
(
Objects
.
equals
(
BizTypeEnum
.
MALL
.
getBizType
(),
data
.
getBizType
()
)){
if
(
Objects
.
equals
(
BizTypeEnum
.
MALL
.
getBizType
(),
bizType
)){
// 除 未支付 拒单 和 取消外,其他可退款
// 除 未支付 拒单 和 取消外,其他可退款
return
Stream
.
of
(
OrderStatusV1
.
WAIT_PAY
,
OrderStatusV1
.
CANCEL
).
noneMatch
(
s
->
Objects
.
equals
(
data
.
getStatusV2
()
,
s
.
getV2Code
()));
return
Stream
.
of
(
OrderStatusV1
.
WAIT_PAY
,
OrderStatusV1
.
CANCEL
).
noneMatch
(
s
->
Objects
.
equals
(
orderState
,
s
.
getV2Code
()));
}
}
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
OrderExtInfoDto
extInfo
=
null
;
OrderExtInfoDto
extInfo
=
JSON
.
parseObject
(
extStr
,
OrderExtInfoDto
.
class
);
JSONObject
jsonObject1
=
JSONObject
.
parseObject
(
data
.
getExtInfo
());
extInfo
=
jsonObject1
.
toJavaObject
(
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
OrderExtInfoDto
.
class
);
// 查询小程序配置的退款设置
// 查询小程序配置的退款设置
String
redisKey
=
MessageFormat
.
format
(
OrderRedisKeyConstant
.
ORDER_REFUND_CONFIG
,
data
.
getCompanyId
()
,
extInfo
.
getAppid
());
String
redisKey
=
MessageFormat
.
format
(
OrderRedisKeyConstant
.
ORDER_REFUND_CONFIG
,
partnerId
,
extInfo
.
getAppid
());
String
hashKey
;
String
hashKey
;
if
(
MarketTypeEnum
.
CASHIER
.
getIndex
().
byteValue
()
==
data
.
getMarketingType
(
)){
if
(
MarketTypeEnum
.
CASHIER
.
getIndex
().
equals
(
marketType
)){
//收银单,使用收银单的退款配置
//收银单,使用收银单的退款配置
hashKey
=
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
CASHIER
;
hashKey
=
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
CASHIER
;
}
else
{
}
else
{
hashKey
=
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()
)
hashKey
=
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderType
)
?
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
TAKE_OUT
?
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
TAKE_OUT
:
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
EAT_IN
;
:
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
EAT_IN
;
}
}
...
@@ -615,33 +633,33 @@ public class OrderVerifyHandle {
...
@@ -615,33 +633,33 @@ public class OrderVerifyHandle {
}
}
OrderRefundConfigEntity
config
=
JSON
.
parseObject
(
configStr
,
OrderRefundConfigEntity
.
class
);
OrderRefundConfigEntity
config
=
JSON
.
parseObject
(
configStr
,
OrderRefundConfigEntity
.
class
);
String
orderRefund
=
null
;
String
orderRefund
=
null
;
if
(
MarketTypeEnum
.
CASHIER
.
getIndex
().
byteValue
()
==
data
.
getMarketingType
()
){
if
(
MarketTypeEnum
.
CASHIER
.
getIndex
().
byteValue
()
==
marketType
){
//收银单,使用收银单的退款配置 收银单只有完成的订单,直接判断是否可以退款就行
//收银单,使用收银单的退款配置 收银单只有完成的订单,直接判断是否可以退款就行
orderRefund
=
config
.
getCashierOrderRefund
();
orderRefund
=
config
.
getCashierOrderRefund
();
}
else
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()
))
{
}
else
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderType
))
{
//外卖单,使用外卖单的退款配置
//外卖单,使用外卖单的退款配置
switch
(
data
.
getStatus
()
)
{
switch
(
orderState
)
{
// 未接单
// 未接单
case
1
:
orderRefund
=
config
.
getDeliveryTakeOrderRefund
();
break
;
case
1
:
orderRefund
=
config
.
getDeliveryTakeOrderRefund
();
break
;
//已接单
//已接单
case
3
:
orderRefund
=
config
.
getDeliveryReceiptOrderRefund
();
break
;
case
3
:
orderRefund
=
config
.
getDeliveryReceiptOrderRefund
();
break
;
//制作完成
//制作完成
case
31
:
orderRefund
=
config
.
getDeliveryCompleteMakeOrderRefund
();
break
;
case
4
:
orderRefund
=
config
.
getDeliveryCompleteMakeOrderRefund
();
break
;
// 订单完成
// 订单完成
case
5
:
orderRefund
=
config
.
getDeliveryOrderRefund
();
break
;
case
6
:
orderRefund
=
config
.
getDeliveryOrderRefund
();
break
;
default
:
break
;
default
:
break
;
}
}
}
else
{
}
else
{
//其他,使用堂食的退款配置(必须先判断收银单,因为收银单的类型也是堂食,只是orderClient不一样
//其他,使用堂食的退款配置(必须先判断收银单,因为收银单的类型也是堂食,只是orderClient不一样
switch
(
data
.
getStatus
()
)
{
switch
(
orderState
)
{
// 未接单
// 未接单
case
1
:
orderRefund
=
config
.
getTakeOrderRefund
();
break
;
case
1
:
orderRefund
=
config
.
getTakeOrderRefund
();
break
;
//已接单
//已接单
case
3
:
orderRefund
=
config
.
getReceiptOrderRefund
();
break
;
case
3
:
orderRefund
=
config
.
getReceiptOrderRefund
();
break
;
//制作完成
//制作完成
case
31
:
orderRefund
=
config
.
getCompleteMakeOrderRefund
();
break
;
case
4
:
orderRefund
=
config
.
getCompleteMakeOrderRefund
();
break
;
// 订单完成
// 订单完成
case
5
:
orderRefund
=
config
.
getOrderRefund
();
break
;
case
6
:
orderRefund
=
config
.
getOrderRefund
();
break
;
default
:
break
;
default
:
break
;
}
}
}
}
...
...
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