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
4cf11ffb
Commit
4cf11ffb
authored
Aug 12, 2021
by
查志伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
退款配置的redis缓存结构改造
parent
efe67275
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
135 additions
and
48 deletions
+135
-48
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+25
-20
order-application-service/src/main/java/cn/freemud/constant/KgdRedisKeyConstant.java
+31
-0
order-application-service/src/main/java/cn/freemud/enums/OrderRefundEnum.java
+5
-4
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+10
-5
order-management/src/main/java/cn/freemud/management/constant/KgdRedisKeyConstant.java
+31
-0
order-management/src/main/java/cn/freemud/management/enums/OrderRefundEnum.java
+4
-3
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
+29
-16
No files found.
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
4cf11ffb
...
@@ -14,6 +14,7 @@ package cn.freemud.adapter;
...
@@ -14,6 +14,7 @@ package cn.freemud.adapter;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.constant.CustomerScoreConstant
;
import
cn.freemud.constant.CustomerScoreConstant
;
import
cn.freemud.constant.KgdRedisKeyConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.*
;
...
@@ -96,6 +97,7 @@ import java.math.BigDecimal;
...
@@ -96,6 +97,7 @@ import java.math.BigDecimal;
import
java.security.NoSuchAlgorithmException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.spec.InvalidKeySpecException
;
import
java.security.spec.InvalidKeySpecException
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormat
;
import
java.text.MessageFormat
;
import
java.time.Instant
;
import
java.time.Instant
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.function.Function
;
...
@@ -2078,12 +2080,16 @@ public class OrderAdapter {
...
@@ -2078,12 +2080,16 @@ public class OrderAdapter {
// 除 未支付 拒单 和 取消外,其他可退款
// 除 未支付 拒单 和 取消外,其他可退款
return
Stream
.
of
(
OrderStatus
.
WAIT_PAY
,
OrderStatus
.
REFUSE
,
OrderStatus
.
CALCEL
).
noneMatch
(
s
->
Objects
.
equals
(
status
,
s
));
return
Stream
.
of
(
OrderStatus
.
WAIT_PAY
,
OrderStatus
.
REFUSE
,
OrderStatus
.
CALCEL
).
noneMatch
(
s
->
Objects
.
equals
(
status
,
s
));
}
}
boolean
canRefund
=
false
;
List
<
AssortmentOpenPlatformPartnerWxappConfig
>
wxappConfigs
=
cacheWxappConfigManager
.
cacheSelectDefaultPage
(
wxAppId
,
"2"
);
Map
<
String
,
AssortmentOpenPlatformPartnerWxappConfig
>
configMap
=
wxappConfigs
.
stream
().
collect
(
Collectors
.
toMap
(
AssortmentOpenPlatformPartnerWxappConfig:
:
getAppKey
,
Function
.
identity
()));
AssortmentOpenPlatformPartnerWxappConfig
orderRefund
;
// 查询小程序配置的退款设置
boolean
canRefund
=
false
;
String
hkey
=
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
())
?
KgdRedisKeyConstant
.
REFUND_CFG_TAKE_OUT
:
KgdRedisKeyConstant
.
REFUND_CFG_EAT_IN
;
String
configStr
=
redisCache
.
hashGet
(
hkey
,
MessageFormat
.
format
(
KgdRedisKeyConstant
.
ORDER_REFUND_CONFIG
,
orderBean
.
getCompanyId
(),
wxAppId
));
if
(
StringUtils
.
isEmpty
(
configStr
))
{
return
true
;
}
JSONObject
config
=
JSON
.
parseObject
(
configStr
);
String
orderRefund
;
//订单状态
//订单状态
switch
(
status
)
{
switch
(
status
)
{
...
@@ -2091,33 +2097,33 @@ public class OrderAdapter {
...
@@ -2091,33 +2097,33 @@ public class OrderAdapter {
case
TAKE_ORDER:
case
TAKE_ORDER:
//区分外卖单和到店订单,判断是否可以退款
//区分外卖单和到店订单,判断是否可以退款
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_TAKE_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_TAKE_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
TAKEORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
TAKEORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
==
null
||
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
))
{
if
(
orderRefund
==
null
||
ALLOW_REFUND
.
equals
(
orderRefund
))
{
canRefund
=
true
;
canRefund
=
true
;
}
}
break
;
break
;
//已接单
//已接单
case
RECEIPT:
case
RECEIPT:
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_RECEIPT_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_RECEIPT_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
RECEIPTORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
RECEIPTORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
==
null
||
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
))
{
if
(
orderRefund
==
null
||
ALLOW_REFUND
.
equals
(
orderRefund
))
{
canRefund
=
true
;
canRefund
=
true
;
}
}
break
;
break
;
//制作完成
//制作完成
case
COMPLETE_MAKE:
case
COMPLETE_MAKE:
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
COMPLETEMAKEORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
COMPLETEMAKEORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
))
{
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
))
{
canRefund
=
true
;
canRefund
=
true
;
}
}
break
;
break
;
...
@@ -2127,19 +2133,18 @@ public class OrderAdapter {
...
@@ -2127,19 +2133,18 @@ public class OrderAdapter {
long
gmtModified
=
orderBean
.
getGmtModified
();
long
gmtModified
=
orderBean
.
getGmtModified
();
long
value
=
0L
;
long
value
=
0L
;
AssortmentOpenPlatformPartnerWxappConfig
refundDateConfig
=
configMap
.
get
(
OrderRefundEnum
.
REFUND_DATA_RANGE
.
getKeyValue
());
String
refundDateConfig
=
config
.
getString
(
OrderRefundEnum
.
REFUND_DATA_RANGE
.
getKeyValue
());
if
(
null
!=
refundDateConfig
)
{
if
(
null
!=
refundDateConfig
)
{
String
appValue
=
refundDateConfig
.
getAppValue
();
value
=
Long
.
parseLong
(
StringUtils
.
isEmpty
(
refundDateConfig
)
?
"0"
:
refundDateConfig
);
value
=
Long
.
parseLong
(
StringUtils
.
isEmpty
(
appValue
)
?
"0"
:
appValue
);
}
}
long
allowRefundTime
=
gmtModified
+
value
*
24
*
60
*
60
*
1000
;
long
allowRefundTime
=
gmtModified
+
value
*
24
*
60
*
60
*
1000
;
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
ORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
)
&&
(
allowRefundTime
-
currentTime
)
>=
0
)
{
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
)
&&
(
allowRefundTime
-
currentTime
)
>=
0
)
{
canRefund
=
true
;
canRefund
=
true
;
}
}
break
;
break
;
...
...
order-application-service/src/main/java/cn/freemud/constant/KgdRedisKeyConstant.java
0 → 100644
View file @
4cf11ffb
package
cn
.
freemud
.
constant
;
/**
* @author Clover.z
* @Date 2021/8/11
* @Desc
*/
public
class
KgdRedisKeyConstant
{
/**
* 订单是否支持退款配置 缓存key
* 0:商户号
* 1:小程序appId
*
* value: hash结构
* hkey : eatInType 堂食 和takeOutType 外卖
* 具体配置为json字符串
*/
public
static
final
String
ORDER_REFUND_CONFIG
=
"kgd:order_refund_config_{0}_{1}"
;
/**
* 订单类型为堂食 redis配置的hkey
*/
public
static
final
String
REFUND_CFG_EAT_IN
=
"eatInType"
;
/**
* 订单类型为外卖 redis配置的hkey
*/
public
static
final
String
REFUND_CFG_TAKE_OUT
=
"takeOutType"
;
}
order-application-service/src/main/java/cn/freemud/enums/OrderRefundEnum.java
View file @
4cf11ffb
...
@@ -15,17 +15,18 @@ package cn.freemud.enums;
...
@@ -15,17 +15,18 @@ package cn.freemud.enums;
public
enum
OrderRefundEnum
{
public
enum
OrderRefundEnum
{
ORDER_REFUND
(
"orderRefund"
,
"已完成订单是否允许退款"
),
ORDER_REFUND
(
"orderRefund"
,
"已完成订单是否允许退款"
),
REFUND_DATA_RANGE
(
"refundDateRange"
,
"退款允许日期"
),
TAKEORDER_REFUND
(
"takeOrderRefund"
,
"未接单是否支持退款"
),
TAKEORDER_REFUND
(
"takeOrderRefund"
,
"未接单是否支持退款"
),
RECEIPTORDER_REFUND
(
"receiptOrderRefund"
,
"已接单是否支持退款"
),
RECEIPTORDER_REFUND
(
"receiptOrderRefund"
,
"已接单是否支持退款"
),
COMPLETEMAKEORDER_REFUND
(
"completeMakeOrderRefund"
,
"制作完成是否支持退款"
),
COMPLETEMAKEORDER_REFUND
(
"completeMakeOrderRefund"
,
"制作完成是否支持退款"
),
REFUND_DELIVERY_FEE_ENABLE
(
"refundShippingFee"
,
"商家同意退款时是否退配送费"
),
DELIVERY_TAKE_ORDER_REFUND
(
"deliveryTakeOrderRefund"
,
"外卖单未接单是否支持退款"
),
DELIVERY_TAKE_ORDER_REFUND
(
"deliveryTakeOrderRefund"
,
"外卖单未接单是否支持退款"
),
DELIVERY_RECEIPT_ORDER_REFUND
(
"deliveryReceiptOrderRefund"
,
"外卖单已接单是否支持退款"
),
DELIVERY_RECEIPT_ORDER_REFUND
(
"deliveryReceiptOrderRefund"
,
"外卖单已接单是否支持退款"
),
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
(
"deliveryCompleteMakeOrderRefund"
,
"外卖单制作完成是否支持退款"
),
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
(
"deliveryCompleteMakeOrderRefund"
,
"外卖单制作完成是否支持退款"
),
DELIVERY_ORDER_REFUND
(
"deliveryOrderRefund"
,
"外卖单订单完成是否支持退款"
);
DELIVERY_ORDER_REFUND
(
"deliveryOrderRefund"
,
"外卖单订单完成是否支持退款"
),
REFUND_DATA_RANGE
(
"refundDateRange"
,
"退款允许日期"
),
REFUND_DELIVERY_FEE_ENABLE
(
"refundShippingFee"
,
"商家同意退款时是否退配送费"
),
REFUND_REVERSE_COUPON
(
"refundReverseCoupon"
,
"退款退优惠券"
);
;
private
String
keyValue
;
private
String
keyValue
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
4cf11ffb
...
@@ -19,6 +19,7 @@ import cn.freemud.amqp.MQMessage;
...
@@ -19,6 +19,7 @@ import cn.freemud.amqp.MQMessage;
import
cn.freemud.amqp.MQService
;
import
cn.freemud.amqp.MQService
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.constant.KgdRedisKeyConstant
;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
...
@@ -144,6 +145,7 @@ import org.springframework.stereotype.Service;
...
@@ -144,6 +145,7 @@ import org.springframework.stereotype.Service;
import
tk.mybatis.mapper.util.StringUtil
;
import
tk.mybatis.mapper.util.StringUtil
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.MessageFormat
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
...
@@ -1772,6 +1774,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1772,6 +1774,7 @@ public class OrderServiceImpl implements Orderservice {
}
}
String
memberId
=
userInfo
.
getMemberId
();
String
memberId
=
userInfo
.
getMemberId
();
String
partnerId
=
userInfo
.
getPartnerId
();
String
partnerId
=
userInfo
.
getPartnerId
();
String
wxAppId
=
userInfo
.
getWxAppId
();
if
(
StringUtils
.
isBlank
(
orderRefundVo
.
getOid
()))
{
if
(
StringUtils
.
isBlank
(
orderRefundVo
.
getOid
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
.
getCode
(),
"oid不能为空"
);
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
.
getCode
(),
"oid不能为空"
);
...
@@ -1892,9 +1895,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1892,9 +1895,7 @@ public class OrderServiceImpl implements Orderservice {
}
}
//}
//}
List
<
AssortmentOpenPlatformPartnerWxappConfig
>
partnerWxappConfigs
=
cacheOpenPlatformPartnerWxappConfigManager
.
cacheSelectDefaultPage
(
userInfo
.
getWxAppId
(),
"2"
);
Map
<
String
,
AssortmentOpenPlatformPartnerWxappConfig
>
configMap
=
partnerWxappConfigs
.
stream
().
collect
(
Collectors
.
toMap
(
AssortmentOpenPlatformPartnerWxappConfig:
:
getAppKey
,
Function
.
identity
()));
boolean
isRefundDeliveryFee
=
true
;
boolean
isRefundDeliveryFee
=
true
;
//商城查询配送费
//商城查询配送费
...
@@ -1921,15 +1922,19 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1921,15 +1922,19 @@ public class OrderServiceImpl implements Orderservice {
}
}
}
}
}
else
{
}
else
{
AssortmentOpenPlatformPartnerWxappConfig
refundDeliveryFeeConfig
=
configMap
.
get
(
OrderRefundEnum
.
REFUND_DELIVERY_FEE_ENABLE
.
getKeyValue
());
// 查询小程序是否配置了退运费
// AppLogUtil.infoLog("orderRefund of oid:{}, {}, {}", orderBean.getOid(), orderBean.getStatus(), (null != refundDeliveryFeeConfig ? ToStringBuilder.reflectionToString(refundDeliveryFeeConfig) : null));
String
configStr
=
redisCache
.
hashGet
(
KgdRedisKeyConstant
.
REFUND_CFG_TAKE_OUT
,
MessageFormat
.
format
(
KgdRedisKeyConstant
.
ORDER_REFUND_CONFIG
,
orderBean
.
getCompanyId
(),
wxAppId
));
if
(
StringUtils
.
isNotEmpty
(
configStr
))
{
JSONObject
config
=
JSON
.
parseObject
(
configStr
);
String
refundDeliveryFeeConfig
=
config
.
getString
(
OrderRefundEnum
.
REFUND_DELIVERY_FEE_ENABLE
.
getKeyValue
());
// 0、null表示 关闭 ; 1 表示开启
// 0、null表示 关闭 ; 1 表示开启
if
(
null
!=
refundDeliveryFeeConfig
if
(
null
!=
refundDeliveryFeeConfig
&&
Arrays
.
asList
(
OrderStatus
.
DISTRIBUTION
.
getCode
(),
OrderStatus
.
COMPLETE
.
getCode
()).
contains
(
orderBean
.
getStatus
())
&&
Arrays
.
asList
(
OrderStatus
.
DISTRIBUTION
.
getCode
(),
OrderStatus
.
COMPLETE
.
getCode
()).
contains
(
orderBean
.
getStatus
())
&&
!
ALLOW_REFUND
.
equals
(
refundDeliveryFeeConfig
.
getAppValue
()
))
{
&&
!
ALLOW_REFUND
.
equals
(
refundDeliveryFeeConfig
))
{
isRefundDeliveryFee
=
false
;
isRefundDeliveryFee
=
false
;
}
}
}
}
}
// 未接单
// 未接单
if
(
OrderStatus
.
TAKE_ORDER
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
if
(
OrderStatus
.
TAKE_ORDER
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
...
...
order-management/src/main/java/cn/freemud/management/constant/KgdRedisKeyConstant.java
0 → 100644
View file @
4cf11ffb
package
cn
.
freemud
.
management
.
constant
;
/**
* @author Clover.z
* @Date 2021/8/11
* @Desc
*/
public
class
KgdRedisKeyConstant
{
/**
* 订单是否支持退款配置 缓存key
* 0:商户号
* 1:小程序appId
*
* value: hash结构
* hkey : eatInType 堂食 和takeOutType 外卖
* 具体配置为json字符串
*/
public
static
final
String
ORDER_REFUND_CONFIG
=
"kgd:order_refund_config_{0}_{1}"
;
/**
* 订单类型为堂食 redis配置的hkey
*/
public
static
final
String
REFUND_CFG_EAT_IN
=
"eatInType"
;
/**
* 订单类型为外卖 redis配置的hkey
*/
public
static
final
String
REFUND_CFG_TAKE_OUT
=
"takeOutType"
;
}
order-management/src/main/java/cn/freemud/management/enums/OrderRefundEnum.java
View file @
4cf11ffb
...
@@ -15,16 +15,17 @@ package cn.freemud.management.enums;
...
@@ -15,16 +15,17 @@ package cn.freemud.management.enums;
public
enum
OrderRefundEnum
{
public
enum
OrderRefundEnum
{
ORDER_REFUND
(
"orderRefund"
,
"已完成订单是否允许退款"
),
ORDER_REFUND
(
"orderRefund"
,
"已完成订单是否允许退款"
),
REFUND_DATA_RANGE
(
"refundDateRange"
,
"退款允许日期"
),
TAKEORDER_REFUND
(
"takeOrderRefund"
,
"未接单是否支持退款"
),
TAKEORDER_REFUND
(
"takeOrderRefund"
,
"未接单是否支持退款"
),
RECEIPTORDER_REFUND
(
"receiptOrderRefund"
,
"已接单是否支持退款"
),
RECEIPTORDER_REFUND
(
"receiptOrderRefund"
,
"已接单是否支持退款"
),
COMPLETEMAKEORDER_REFUND
(
"completeMakeOrderRefund"
,
"制作完成是否支持退款"
),
COMPLETEMAKEORDER_REFUND
(
"completeMakeOrderRefund"
,
"制作完成是否支持退款"
),
REFUND_DELIVERY_FEE_ENABLE
(
"refundShippingFee"
,
"商家同意退款时是否退配送费"
),
DELIVERY_TAKE_ORDER_REFUND
(
"deliveryTakeOrderRefund"
,
"外卖单未接单是否支持退款"
),
DELIVERY_TAKE_ORDER_REFUND
(
"deliveryTakeOrderRefund"
,
"外卖单未接单是否支持退款"
),
DELIVERY_RECEIPT_ORDER_REFUND
(
"deliveryReceiptOrderRefund"
,
"外卖单已接单是否支持退款"
),
DELIVERY_RECEIPT_ORDER_REFUND
(
"deliveryReceiptOrderRefund"
,
"外卖单已接单是否支持退款"
),
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
(
"deliveryCompleteMakeOrderRefund"
,
"外卖单制作完成是否支持退款"
),
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
(
"deliveryCompleteMakeOrderRefund"
,
"外卖单制作完成是否支持退款"
),
DELIVERY_ORDER_REFUND
(
"deliveryOrderRefund"
,
"外卖单订单完成是否支持退款"
);
DELIVERY_ORDER_REFUND
(
"deliveryOrderRefund"
,
"外卖单订单完成是否支持退款"
),
REFUND_DATA_RANGE
(
"refundDateRange"
,
"退款允许日期"
),
REFUND_DELIVERY_FEE_ENABLE
(
"refundShippingFee"
,
"商家同意退款时是否退配送费"
),
REFUND_REVERSE_COUPON
(
"refundReverseCoupon"
,
"退款退优惠券"
);
private
String
keyValue
;
private
String
keyValue
;
...
...
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
View file @
4cf11ffb
...
@@ -2,11 +2,14 @@ package cn.freemud.management.service.handle;
...
@@ -2,11 +2,14 @@ package cn.freemud.management.service.handle;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
//import cn.freemud.base.log.LogTreadLocal;
//import cn.freemud.base.log.LogTreadLocal;
import
cn.freemud.management.constant.KgdRedisKeyConstant
;
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.entities.dto.response.pay.RefundConfig
;
import
cn.freemud.management.entities.dto.response.pay.RefundConfig
;
import
cn.freemud.management.enums.*
;
import
cn.freemud.management.enums.*
;
import
cn.freemud.management.util.ResponseUtil
;
import
cn.freemud.management.util.ResponseUtil
;
import
cn.freemud.redis.RedisCache
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig
;
import
com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager
;
import
com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager
;
...
@@ -26,11 +29,13 @@ import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
...
@@ -26,11 +29,13 @@ 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
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.MessageFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -69,6 +74,8 @@ public class OrderVerifyHandle {
...
@@ -69,6 +74,8 @@ public class OrderVerifyHandle {
private
OrderCenterSdkService
orderCenterSdkService
;
private
OrderCenterSdkService
orderCenterSdkService
;
@Autowired
@Autowired
private
DeliveryHandle
deliveryHandle
;
private
DeliveryHandle
deliveryHandle
;
@Autowired
private
RedisCache
redisCache
;
@Value
(
"${delivery.support.ordersource}"
)
@Value
(
"${delivery.support.ordersource}"
)
private
String
supportOrderSource
;
private
String
supportOrderSource
;
...
@@ -549,13 +556,19 @@ public class OrderVerifyHandle {
...
@@ -549,13 +556,19 @@ public class OrderVerifyHandle {
// 除 未支付 拒单 和 取消外,其他可退款
// 除 未支付 拒单 和 取消外,其他可退款
return
Stream
.
of
(
OrderStatus
.
WAIT_PAY
,
OrderStatus
.
REFUSE
,
OrderStatus
.
CANCEL
).
noneMatch
(
s
->
Objects
.
equals
(
data
.
getStatus
(),
s
.
getCode
()));
return
Stream
.
of
(
OrderStatus
.
WAIT_PAY
,
OrderStatus
.
REFUSE
,
OrderStatus
.
CANCEL
).
noneMatch
(
s
->
Objects
.
equals
(
data
.
getStatus
(),
s
.
getCode
()));
}
}
boolean
canRefund
=
false
;
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
OrderExtInfoDto
extInfo
=
null
;
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
OrderExtInfoDto
extInfo
=
null
;
JSONObject
jsonObject1
=
JSONObject
.
parseObject
(
data
.
getExtInfo
());
JSONObject
jsonObject1
=
JSONObject
.
parseObject
(
data
.
getExtInfo
());
extInfo
=
jsonObject1
.
toJavaObject
(
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
OrderExtInfoDto
.
class
);
extInfo
=
jsonObject1
.
toJavaObject
(
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
OrderExtInfoDto
.
class
);
List
<
AssortmentOpenPlatformPartnerWxappConfig
>
partnerWxappConfigs
=
cacheOpenPlatformPartnerWxappConfigManager
.
cacheSelectDefaultPage
(
extInfo
.
getAppid
(),
"2"
);
Map
<
String
,
AssortmentOpenPlatformPartnerWxappConfig
>
configMap
=
partnerWxappConfigs
.
stream
().
collect
(
Collectors
.
toMap
(
AssortmentOpenPlatformPartnerWxappConfig:
:
getAppKey
,
Function
.
identity
()));
// 查询小程序配置的退款设置
AssortmentOpenPlatformPartnerWxappConfig
orderRefund
;
String
hkey
=
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
())
?
KgdRedisKeyConstant
.
REFUND_CFG_TAKE_OUT
:
KgdRedisKeyConstant
.
REFUND_CFG_EAT_IN
;
String
configStr
=
redisCache
.
hashGet
(
hkey
,
MessageFormat
.
format
(
KgdRedisKeyConstant
.
ORDER_REFUND_CONFIG
,
data
.
getCompanyId
(),
extInfo
.
getAppid
()));
if
(
StringUtils
.
isEmpty
(
configStr
))
{
return
true
;
}
JSONObject
config
=
JSON
.
parseObject
(
configStr
);
String
orderRefund
;
//订单状态
//订单状态
switch
(
data
.
getStatus
())
{
switch
(
data
.
getStatus
())
{
...
@@ -563,44 +576,44 @@ public class OrderVerifyHandle {
...
@@ -563,44 +576,44 @@ public class OrderVerifyHandle {
case
1
:
case
1
:
//区分外卖单和到店订单,判断是否可以退款
//区分外卖单和到店订单,判断是否可以退款
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_TAKE_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_TAKE_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
TAKEORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
TAKEORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
==
null
||
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
)))
{
if
(
orderRefund
==
null
||
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
)))
{
isFinishRefund
=
true
;
isFinishRefund
=
true
;
}
}
break
;
break
;
//已接单
//已接单
case
3
:
case
3
:
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_RECEIPT_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_RECEIPT_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
RECEIPTORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
RECEIPTORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
==
null
||
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
)))
{
if
(
orderRefund
==
null
||
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
)))
{
isFinishRefund
=
true
;
isFinishRefund
=
true
;
}
}
break
;
break
;
//制作完成
//制作完成
case
31
:
case
31
:
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_COMPLETE_MAKE_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
COMPLETEMAKEORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
COMPLETEMAKEORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
))
{
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
))
{
isFinishRefund
=
true
;
isFinishRefund
=
true
;
}
}
break
;
break
;
// 订单完成
// 订单完成
case
5
:
case
5
:
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
if
(
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
data
.
getOrderType
()))
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
DELIVERY_ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
DELIVERY_ORDER_REFUND
.
getKeyValue
());
}
else
{
}
else
{
orderRefund
=
config
Map
.
get
(
OrderRefundEnum
.
ORDER_REFUND
.
getKeyValue
());
orderRefund
=
config
.
getString
(
OrderRefundEnum
.
ORDER_REFUND
.
getKeyValue
());
}
}
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
.
getAppValue
()
))
{
if
(
orderRefund
!=
null
&&
ALLOW_REFUND
.
equals
(
orderRefund
))
{
isFinishRefund
=
true
;
isFinishRefund
=
true
;
}
}
break
;
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