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
c8ca553e
Commit
c8ca553e
authored
Dec 16, 2021
by
徐康
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/xukang_20211201_虚拟订单退款'
parents
0c84b2f7
95450764
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
1084 additions
and
43 deletions
+1084
-43
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/OrderRefundConfigEntity.java
+6
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/PayRefundStatus.java
+5
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/OrderCenterSdkService.java
+8
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
+12
-0
order-application-service/src/main/java/cn/freemud/OrderApplication.java
+2
-4
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+43
-6
order-application-service/src/main/java/cn/freemud/constant/ResponseCodeConstant.java
+2
-0
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+38
-13
order-application-service/src/main/java/cn/freemud/core/db/DataSourcesConfig.java
+36
-0
order-application-service/src/main/java/cn/freemud/core/db/Db2DataSourcesConfig.java
+66
-0
order-application-service/src/main/java/cn/freemud/core/db/Db2DataSourcesProperties.java
+22
-0
order-application-service/src/main/java/cn/freemud/entities/db/db2/RefundOverOrder.java
+50
-0
order-application-service/src/main/java/cn/freemud/entities/dto/QueryRefundFailuresListDto.java
+23
-0
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/CheckAndCancelRequest.java
+27
-0
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/CheckAndCancelResponseDTO.java
+29
-0
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/CouponCancelMsg.java
+26
-0
order-application-service/src/main/java/cn/freemud/entities/dto/order/RefundFailureRequestDTO.java
+59
-0
order-application-service/src/main/java/cn/freemud/entities/dto/user/UserBaseResponsDTO.java
+18
-0
order-application-service/src/main/java/cn/freemud/entities/dto/user/UserCouponCheckRequest.java
+25
-0
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundRetryVo.java
+37
-0
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundVo.java
+4
-2
order-application-service/src/main/java/cn/freemud/entities/vo/QueryRefundFailuresListReq.java
+28
-0
order-application-service/src/main/java/cn/freemud/entities/vo/RefundFailuresSuccessfulReq.java
+21
-0
order-application-service/src/main/java/cn/freemud/enums/CouponOrderRefundFailTypeEnum.java
+43
-0
order-application-service/src/main/java/cn/freemud/enums/CouponOrderRefundStatusEnum.java
+43
-0
order-application-service/src/main/java/cn/freemud/enums/OrderStatus.java
+13
-0
order-application-service/src/main/java/cn/freemud/enums/OrderType.java
+20
-8
order-application-service/src/main/java/cn/freemud/enums/PayRefundStatus.java
+5
-1
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+4
-0
order-application-service/src/main/java/cn/freemud/handler/CouponOrderAutoRefundHandler.java
+139
-0
order-application-service/src/main/java/cn/freemud/manager/RefundOverOrderManager.java
+36
-0
order-application-service/src/main/java/cn/freemud/manager/db2/dao/RefundOverOrderDao.java
+19
-0
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
+15
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+0
-0
order-application-service/src/main/java/cn/freemud/service/thirdparty/CouponOnlineClient.java
+11
-0
order-application-service/src/main/java/cn/freemud/service/thirdparty/CustomerExtendClient.java
+13
-0
order-application-service/src/main/java/cn/freemud/service/thirdparty/OrderServiceClient.java
+27
-0
order-application-service/src/main/resources/mapper/PartnerDao.xml
+1
-1
order-application-service/src/main/resources/mapper/PartnerWxappDao.xml
+2
-2
order-application-service/src/main/resources/mapper/PushMccafeOrderDao.xml
+1
-1
order-application-service/src/main/resources/mapper/WxappMessageTemplateDao.xml
+2
-2
order-application-service/src/main/resources/mapper/db2/RefundOverOrder.xml
+50
-0
order-application-service/src/test/java/cn/freemud/service/impl/MallOrderServiceImplTest.java
+15
-0
order-management/src/main/java/cn/freemud/management/enums/SettlementTypeEnum.java
+1
-0
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
+1
-1
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+32
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+4
-0
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/OrderRefundConfigEntity.java
View file @
c8ca553e
...
...
@@ -91,4 +91,10 @@ public class OrderRefundConfigEntity {
* 1-允许
*/
private
String
cashierOrderRefund
;
/**
* 卖券订单是否可以申请退款
* null <=0 都不可以申请退款
*/
private
Integer
couponOrderRefundDayLimit
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/PayRefundStatus.java
View file @
c8ca553e
...
...
@@ -15,7 +15,11 @@ package com.freemud.sdk.api.assortment.order.enums;
public
enum
PayRefundStatus
{
SUCCESS
(
1
,
"退款成功"
),
FAIL
(
2
,
"退款失败"
),
RUNNING
(
4
,
"退款中"
);
RUNNING
(
4
,
"退款中"
),
/**
* 额外状态码 用于判断逻辑,
*/
NOT_SUFFICIENT_FUNDS
(
8200201
,
"余额不足"
);
private
Integer
code
;
private
String
desc
;
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/OrderCenterSdkService.java
View file @
c8ca553e
...
...
@@ -5,7 +5,7 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCo
import
com.freemud.application.sdk.api.ordercenter.request.QueryAfterSalesOrderConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.QueryLineUpOrderReq
;
import
com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp
;
//import com.freemud.application.sdk.api.ordercenter.response.OrderStateInfoResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
...
...
@@ -420,4 +420,11 @@ public interface OrderCenterSdkService {
* 小助手日结统计订单信息查询(分页,从库查询)
*/
QueryOrdersResponse
getOrderListByDb
(
QueryOrdersByConditionsRequest
queryOrdersByConditionsRequest
);
/**
* 查询订单信息 基于基础服务
* @param baseQueryOrderRequest
* @return
*/
QueryByCodeResponse
queryOrderByIdV2
(
BaseQueryOrderRequest
baseQueryOrderRequest
);
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
View file @
c8ca553e
...
...
@@ -2358,4 +2358,16 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return
orderSdkAdapter
.
convent2OrdersResponseByES
(
baseDownLoadResponse
);
}
/**
* 查询订单信息 基于基础服务
* @param request
* @return
*/
@Override
public
QueryByCodeResponse
queryOrderByIdV2
(
BaseQueryOrderRequest
request
)
{
QueryByCodeResponse
orderInfo
=
orderSdkService
.
getOrderInfo
(
request
.
getOrderClient
(),
request
.
getOrderId
(),
request
.
getThirdOrderCode
(),
request
.
getWithOperationHistory
(),
request
.
getTrackingNo
());
return
orderInfo
;
}
}
order-application-service/src/main/java/cn/freemud/OrderApplication.java
View file @
c8ca553e
...
...
@@ -13,6 +13,7 @@
package
cn
.
freemud
;
import
cn.freemud.core.db.DataSourcesConfig
;
import
cn.freemud.core.db.Db2DataSourcesConfig
;
import
com.alibaba.fastjson.parser.ParserConfig
;
import
com.freemud.application.sdk.api.couponcenter.config.CouponRestTemplateConfig
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
...
...
@@ -34,20 +35,17 @@ import org.springframework.scheduling.annotation.EnableAsync;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
import
tk.mybatis.spring.annotation.MapperScan
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ThreadPoolExecutor
;
@ServletComponentScan
@ImportAutoConfiguration
(
classes
=
{
DataSourcesConfig
.
class
})
@ImportAutoConfiguration
(
classes
=
{
DataSourcesConfig
.
class
,
Db2DataSourcesConfig
.
class
})
@EnableSwagger2
@EnableCircuitBreaker
@SpringBootApplication
@EnableDiscoveryClient
@EnableAspectJAutoProxy
@ComponentScan
(
value
=
{
"cn.freemud"
,
"com.freemud"
},
excludeFilters
=
{
@ComponentScan
.
Filter
(
type
=
FilterType
.
ASSIGNABLE_TYPE
,
classes
={
CouponRestTemplateConfig
.
RestTemplateConfig
.
class
})})
@MapperScan
({
"cn.freemud.*.dao"
,
"com.freemud.sdk.api.assortment.orderdistributor.mapper"
,
"com.freemud.api.assortment.datamanager.manager"
,
"com.freemud.api.assortment.datamanager.queue.dao"
,
"com.freemud.api.assortment.datamanager.rbac.dao"
,
"com.freemud.api.assortment.datamanager.queue.entity"
})
@EnableFeignClients
({
"cn.freemud.service.thirdparty"
,
"com.freemud.sdk.api.assortment.message"
,
"cn.freemud.service.mccafe.thirdparty"
,
...
...
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
c8ca553e
...
...
@@ -895,6 +895,7 @@ public class OrderAdapter {
responseVo
.
setMcCafeOrderTag
(
maCafePickTag
);
}
responseVo
.
setTableNumber
(
ordersBean
.
getBarCounter
());
// fisherman 支付状态描述
responseVo
.
setPayStatus
(
ordersBean
.
getPayStatus
());
responseVo
.
setPayStatusDesc
(
Optional
.
ofNullable
(
PayStatus
.
getByCode
(
ordersBean
.
getPayStatus
()))
.
map
(
PayStatus:
:
getDesc
).
orElse
(
""
));
...
...
@@ -1143,10 +1144,6 @@ public class OrderAdapter {
responseVo
.
setEnableRefund
(
true
);
}
responseVo
.
setBizType
(
ordersBean
.
getBizType
());
//6:卖券虚拟商品 暂不能申请退款
if
(
ordersBean
.
getBizType
()
==
6
)
{
responseVo
.
setButtonRefund
(
false
);
}
List
<
Integer
>
enableRefundCodes
=
Lists
.
newArrayList
(
Arrays
.
asList
(
OrderStatus
.
RECEIPT
.
getCode
(),
OrderStatus
.
COMPLETE_MAKE
.
getCode
()));
if
(
enableRefundCodes
.
contains
(
ordersBean
.
getStatus
())
&&
PayStatus
.
HAVE_PAID
.
getCode
().
equals
(
ordersBean
.
getPayStatus
()))
{
...
...
@@ -1366,7 +1363,6 @@ public class OrderAdapter {
public
OrderViewStatusDto
getOrderViewStatusDesc
(
OrderBeanV1
orderBean
,
String
wxAppId
)
{
OrderViewStatusDto
orderViewStatusDto
=
new
OrderViewStatusDto
();
AppLogUtil
.
infoLog
(
"getOrderStatusDesc start "
,
JSON
.
toJSONString
(
orderBean
),
""
);
RefundBeanV1
refundBean
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getRefundList
()))
{
refundBean
=
orderBean
.
getRefundList
().
get
(
0
);
...
...
@@ -1748,6 +1744,7 @@ public class OrderAdapter {
/**
* 是否支持退款
* fisherman 虚拟券是否可退款 在这里进行操作判断 【ID1039143】 1.已完成状态,2.配置的属性值>0&&时间范围内
*
* @param orderBean 订单详情
* @param wxAppId wxappId
...
...
@@ -1768,7 +1765,13 @@ public class OrderAdapter {
return
this
.
checkAdvanceOrder
(
orderBean
.
getGmtExpect
());
}
// 加价购选择虚拟商品券包,订单完成前可申请退款,完成之后不能申请退款
// fisherman 虚拟券商品是否可退款配置校验
if
(
orderBean
.
getBizType
().
compareTo
(
BizTypeEnum
.
SALE_COUPON
.
getBizType
())
==
0
)
{
return
this
.
checkRefundButtionBizTypeIs6
(
orderBean
.
getCompanyId
(),
orderBean
.
getBizType
(),
orderBean
.
getStatus
(),
wxAppId
,
new
Date
(
orderBean
.
getGmtCreate
()),
orderBean
.
getOrderType
());
}
// 加价购选择虚拟商品券包,订单完成前可申请退款,完成之后不能申请退款 --> 这里的 bizType应该是 = 1的
if
(
OrderStatus
.
COMPLETE
.
equals
(
status
)
&&
CollectionUtils
.
isNotEmpty
(
orderBean
.
getProductList
()))
{
for
(
ProductBeanV1
productBeanV1
:
orderBean
.
getProductList
()){
if
(
StringUtils
.
isNotEmpty
(
productBeanV1
.
getExtInfo
())){
...
...
@@ -1852,6 +1855,40 @@ public class OrderAdapter {
}
/**
* 校验是否配置了 虚拟券 bizTYpe=6 可以退款
*
* @param partnerId
* @param bizType
* @param orderState
* @param wxAppId
* @param createTime
* @return
*/
public
boolean
checkRefundButtionBizTypeIs6
(
String
partnerId
,
Integer
bizType
,
Integer
orderState
,
String
wxAppId
,
Date
createTime
,
Integer
orderType
)
{
if
(
bizType
.
compareTo
(
BizTypeEnum
.
SALE_COUPON
.
getBizType
())
!=
0
||
orderState
.
compareTo
(
OrderStatusV1
.
COMPLETE
.
getV1Code
())
!=
0
)
{
return
false
;
}
String
redisKey
=
MessageFormat
.
format
(
OrderRedisKeyConstant
.
ORDER_REFUND_CONFIG
,
partnerId
,
wxAppId
);
String
hashKey
=
OrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderType
)
?
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
TAKE_OUT
:
OrderRedisKeyConstant
.
HashKeyForOrderRefundConfig
.
EAT_IN
;;
String
configStr
=
redisCache
.
hashGet
(
redisKey
,
hashKey
);
if
(
StringUtils
.
isNotEmpty
(
configStr
))
{
OrderRefundConfigEntity
config
=
JSON
.
parseObject
(
configStr
,
OrderRefundConfigEntity
.
class
);
Integer
couponOrderRefundDayLimit
=
config
.
getCouponOrderRefundDayLimit
();
// 必须配置了, 而且创建时间 不大于 这个时间
if
(
couponOrderRefundDayLimit
!=
null
&&
couponOrderRefundDayLimit
.
compareTo
(
0
)
>
0
)
{
Date
date
=
DateUtil
.
addDays
(
createTime
,
couponOrderRefundDayLimit
);
// 当前时间在 配置时间前面 才可以申请退款
if
(
new
Date
().
before
(
date
))
{
return
true
;
}
}
}
return
false
;
}
/**
* 预约时间
* @param gmtExpect
* @return true 可退 false不可操作
...
...
order-application-service/src/main/java/cn/freemud/constant/ResponseCodeConstant.java
View file @
c8ca553e
...
...
@@ -7,6 +7,8 @@ public class ResponseCodeConstant {
public
final
static
Integer
RESPONSE_SUCCESS
=
100
;
public
final
static
Integer
RESPONSE_SUCCESS_200
=
200
;
public
final
static
String
RESPONSE_SUCCESS_STR
=
"100"
;
public
final
static
String
RESPONSE_ERROR_STR
=
"101"
;
...
...
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
c8ca553e
...
...
@@ -20,14 +20,8 @@ import cn.freemud.entities.dto.order.OrderInvoiceConfigVo;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.entities.vo.encircle.EncircleReserveBaseVo
;
import
cn.freemud.entities.vo.order.CreateCashierOrderVo
;
import
cn.freemud.entities.vo.order.CreateOrderInvoiceRequest
;
import
cn.freemud.entities.vo.order.GetInvoiceConfigRequest
;
import
cn.freemud.entities.vo.order.OrderAppealVo
;
import
cn.freemud.entities.vo.order.PaymentConfigVo
;
import
cn.freemud.entities.vo.order.*
;
import
cn.freemud.handler.OrderReportJobHandler
;
import
cn.freemud.handler.WeChatLiveMsgHandle
;
import
cn.freemud.monitorcenter.tools.HealthUtil
;
import
cn.freemud.service.EncircleOrderService
;
import
cn.freemud.service.Orderservice
;
import
cn.freemud.service.PointsMallOrderService
;
...
...
@@ -35,15 +29,10 @@ import cn.freemud.service.impl.MallOrderServiceImpl;
import
cn.freemud.service.impl.OrderAdapterServiceImpl
;
import
cn.freemud.utils.AppLogUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
cn.freemud.handler.CouponOrderAutoRefundHandler
;
import
cn.freemud.xxljob.OrderCountJobHandler
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
com.freemud.thirdparty.wechat.WeChatClient
;
import
com.freemud.thirdparty.wechat.constant.WeChatConstant
;
import
com.freemud.thirdparty.wechat.entities.WeChatBaseResponse
;
import
com.freemud.thirdparty.wechat.entities.vo.NullFieldVo
;
import
com.freemud.thirdparty.wechat.entities.vo.request.OrderDeliverySendRequestVO
;
import
com.freemud.thirdparty.wechat.entities.vo.request.OrderSycnPayRequestVO
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -72,6 +61,8 @@ public class OrderController {
@Autowired
private
OrderCountJobHandler
orderCountJobHandler
;
@Autowired
private
CouponOrderAutoRefundHandler
couponOrderAutoRefundHandler
;
@Autowired
private
PointsMallOrderService
pointsMallOrderService
;
/**
...
...
@@ -253,6 +244,7 @@ public class OrderController {
return
orderservice
.
orderRefund
(
orderRefundVo
);
}
/**
* 获取订单排队号
*/
...
...
@@ -511,5 +503,38 @@ public class OrderController {
return
orderAdapterService
.
getPaymentConfig
(
createOrderVo
);
}
/**
* 卖券订单申请退款
*/
@ApiAnnotation
(
logMessage
=
"couponOrderRefund"
)
@PostMapping
(
"/couponOrderRefund"
)
public
BaseResponse
couponOrderRefund
(
@Validated
@LogParams
@RequestBody
OrderRefundVo
orderRefundVo
)
{
return
orderservice
.
couponOrderRefund
(
orderRefundVo
,
0
);
}
/**
* 卖券订单申请退款
*/
@ApiAnnotation
(
logMessage
=
"couponOrderRefundRetry"
)
@PostMapping
(
"/couponOrderRefundRetry"
)
public
BaseResponse
couponOrderRefundRetry
(
@Validated
@LogParams
@RequestBody
OrderRefundRetryVo
orderRefundRetryVo
)
{
return
orderservice
.
couponOrderRefundRetry
(
orderRefundRetryVo
);
}
/**
* 卖券订单券过期自动退款
* @param
* @return
*/
@ApiAnnotation
(
logMessage
=
"couponOrderAutoRefund"
)
@GetMapping
(
"/couponOrderAutoRefund"
)
public
BaseResponse
couponOrderAutoRefund
()
throws
Exception
{
AppLogUtil
.
infoLog
(
"卖券订单券过期自动退款 "
,
null
,
null
);
couponOrderAutoRefundHandler
.
execute
(
null
);
return
ResponseUtil
.
success
();
}
}
order-application-service/src/main/java/cn/freemud/core/db/DataSourcesConfig.java
View file @
c8ca553e
package
cn
.
freemud
.
core
.
db
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.mybatis.spring.SqlSessionFactoryBean
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
tk.mybatis.spring.annotation.MapperScan
;
import
javax.sql.DataSource
;
...
...
@@ -21,6 +29,9 @@ import javax.sql.DataSource;
*/
@AutoConfigureBefore
(
DataSourceAutoConfiguration
.
class
)
@EnableConfigurationProperties
({
DataSourcesProperties
.
class
})
@MapperScan
(
basePackages
=
{
"cn.freemud.manager.dao"
,
"com.freemud.sdk.api.assortment.orderdistributor.mapper"
,
"com.freemud.api.assortment.datamanager.manager"
,
"com.freemud.api.assortment.datamanager.queue.dao"
,
"com.freemud.api.assortment.datamanager.rbac.dao"
,
"com.freemud.api.assortment.datamanager.queue.entity"
}
,
sqlSessionFactoryRef
=
"sqlSessionFactory"
)
public
class
DataSourcesConfig
{
/**
...
...
@@ -29,8 +40,33 @@ public class DataSourcesConfig {
* @return
*/
@Bean
(
"dataSource"
)
@Primary
public
DataSource
dataSource
(
DataSourcesProperties
dataSourcesProperties
)
{
return
DataSourceBuildUtil
.
init
(
dataSourcesProperties
);
}
// 创建session工厂
@Bean
(
"sqlSessionFactory"
)
@Primary
public
SqlSessionFactory
sqlSessionFactory
(
@Qualifier
(
"dataSource"
)
DataSource
dataSource
)
throws
Exception
{
SqlSessionFactoryBean
sessionFactoryBean
=
new
SqlSessionFactoryBean
();
sessionFactoryBean
.
setDataSource
(
dataSource
);
sessionFactoryBean
.
setMapperLocations
(
new
PathMatchingResourcePatternResolver
().
getResources
(
"classpath*:mapper/*.xml"
));
return
sessionFactoryBean
.
getObject
();
}
// 创建事务管理(按需添加)
@Bean
(
"dataSourceTransactionManager"
)
@Primary
public
DataSourceTransactionManager
dataSourceTransactionManager
(
@Qualifier
(
"dataSource"
)
DataSource
dataSource
)
{
return
new
DataSourceTransactionManager
(
dataSource
);
}
// 会话管理
@Bean
(
"sqlSessionTemplate"
)
@Primary
public
SqlSessionTemplate
sqlSessionTemplate
(
@Qualifier
(
"sqlSessionFactory"
)
SqlSessionFactory
sqlSessionFactory
)
{
return
new
SqlSessionTemplate
(
sqlSessionFactory
);
}
}
order-application-service/src/main/java/cn/freemud/core/db/Db2DataSourcesConfig.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
core
.
db
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.mybatis.spring.SqlSessionFactoryBean
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
tk.mybatis.spring.annotation.MapperScan
;
import
javax.sql.DataSource
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CouponDataSourcesConfig
* @Package com.freemud.data.source.config
* @Description:
* @author: chaopeng.lv
* @date: 2018/5/16 17:08
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@AutoConfigureBefore
(
DataSourceAutoConfiguration
.
class
)
@EnableConfigurationProperties
({
Db2DataSourcesProperties
.
class
})
@MapperScan
(
basePackages
=
{
"cn.freemud.manager.db2.dao"
}
,
sqlSessionFactoryRef
=
"db2SqlSessionFactory"
)
public
class
Db2DataSourcesConfig
{
/**
* 配置数据源
*
* @return
*/
@Bean
(
"db2DataSource"
)
public
DataSource
dataSource
(
Db2DataSourcesProperties
db2DataSourcesProperties
)
{
return
DataSourceBuildUtil
.
init
(
db2DataSourcesProperties
);
}
// 创建session工厂
@Bean
(
"db2SqlSessionFactory"
)
public
SqlSessionFactory
db2SqlSessionFactory
(
@Qualifier
(
"db2DataSource"
)
DataSource
dataSource
)
throws
Exception
{
SqlSessionFactoryBean
sessionFactoryBean
=
new
SqlSessionFactoryBean
();
sessionFactoryBean
.
setDataSource
(
dataSource
);
sessionFactoryBean
.
setMapperLocations
(
new
PathMatchingResourcePatternResolver
().
getResources
(
"classpath*:mapper/db2/*.xml"
));
return
sessionFactoryBean
.
getObject
();
}
// 创建事务管理(按需添加)
@Bean
(
"db2DataSourceTransactionManager"
)
public
DataSourceTransactionManager
db2DataSourceTransactionManager
(
@Qualifier
(
"db2DataSource"
)
DataSource
dataSource
)
{
return
new
DataSourceTransactionManager
(
dataSource
);
}
// 会话管理
@Bean
(
"db2SqlSessionTemplate"
)
public
SqlSessionTemplate
db2SqlSessionTemplate
(
@Qualifier
(
"db2SqlSessionFactory"
)
SqlSessionFactory
sqlSessionFactory
)
{
return
new
SqlSessionTemplate
(
sqlSessionFactory
);
}
}
order-application-service/src/main/java/cn/freemud/core/db/Db2DataSourcesProperties.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
core
.
db
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Primary
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: DataSourcesProperties
* @Package com.freemud.data.source.config
* @Description:
* @author: chaopeng.lv
* @date: 2018/5/16 15:14
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@ConfigurationProperties
(
prefix
=
"db2"
)
public
class
Db2DataSourcesProperties
extends
DruidProperties
{
}
order-application-service/src/main/java/cn/freemud/entities/db/db2/RefundOverOrder.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
db
.
db2
;
import
cn.freemud.comm.entity.BaseEntity
;
import
lombok.Data
;
import
org.apache.commons.lang.builder.ToStringBuilder
;
import
org.apache.commons.lang.builder.ToStringStyle
;
import
javax.persistence.*
;
import
java.util.Date
;
/**
* 商户
*
* @author liming.guo
* @date 2018/05/10
*/
@Data
@Table
(
name
=
"refund_over_order"
)
public
class
RefundOverOrder
extends
BaseEntity
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"refund_id"
)
private
Long
refundId
;
@Column
(
name
=
"refund_order_code"
)
private
String
refundOrderCode
;
@Column
(
name
=
"refund_coupon_code"
)
private
String
refundCouponCode
;
@Column
(
name
=
"refund_time"
)
private
Date
refundTime
;
@Column
(
name
=
"refund_status"
)
private
Integer
refundStatus
;
@Column
(
name
=
"refund_fail"
)
private
Integer
refundFail
;
@Column
(
name
=
"refund_desc"
)
private
String
refundDesc
;
@Column
(
name
=
"refund_create_time"
)
private
Date
refundCreateTime
;
@Column
(
name
=
"refund_update_time"
)
private
Date
refundUpdateTime
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/QueryRefundFailuresListDto.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
;
import
cn.freemud.entities.vo.QueryInvoiceItemRep
;
import
lombok.Data
;
@Data
public
class
QueryRefundFailuresListDto
{
private
Long
id
;
private
String
partnerId
;
private
String
orderCode
;
private
Integer
lastFailureType
;
private
String
lastReason
;
private
Integer
compensationNum
;
private
String
updateTime
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/CheckAndCancelRequest.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
.
coupon
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/3 下午4:14
* @description :
*/
@Data
public
class
CheckAndCancelRequest
{
@ApiModelProperty
(
value
=
"商户号"
,
required
=
true
)
private
Integer
partnerId
;
@ApiModelProperty
(
value
=
"会员id"
,
required
=
true
)
private
String
memberId
;
@ApiModelProperty
(
value
=
"券号列表"
,
required
=
true
)
private
List
<
String
>
couponCodeList
;
@ApiModelProperty
(
value
=
"作废原因"
,
required
=
true
)
private
String
cancelReason
=
"用户申请退款,订单作废券请求"
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/CheckAndCancelResponseDTO.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
.
coupon
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/3 下午4:15
* @description :
*/
@Data
public
class
CheckAndCancelResponseDTO
{
public
static
int
SUCCESS
=
1
;
public
static
int
PROTION_FAIL
=
2
;
public
static
int
FAIL
=
3
;
@ApiModelProperty
(
value
=
"作废结果,1:已全部作废,2:部分作废失败,3:不可作废"
,
required
=
true
)
private
Integer
resultCode
;
@ApiModelProperty
(
value
=
"作废结果说明,如resultCode为3时,代表不可作废的原因(如:xx券已核销)"
,
required
=
true
)
private
String
memo
;
@ApiModelProperty
(
value
=
"每个券对应的处理结果"
,
required
=
true
)
private
List
<
CouponCancelMsg
>
resultList
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/CouponCancelMsg.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
.
coupon
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/3 下午4:17
* @description :
*/
@Data
public
class
CouponCancelMsg
{
@ApiModelProperty
(
value
=
"券号"
,
required
=
true
)
private
String
code
;
@ApiModelProperty
(
value
=
"券名称"
,
required
=
true
)
private
String
name
;
@ApiModelProperty
(
value
=
"作废结果,0:未处理,1:作废成功,2:已核销不能作废,3:已锁定不能作废,4:作废失败,5:券不存在"
,
required
=
true
)
private
Integer
result
;
@ApiModelProperty
(
value
=
"作废结果result对应的说明文字"
,
required
=
true
)
private
String
memo
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/order/RefundFailureRequestDTO.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
.
order
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/3 上午10:36
* @description :
*/
@Data
@Builder
@AllArgsConstructor
public
class
RefundFailureRequestDTO
{
/**
* 0:其他
*/
public
static
int
FAILURETYPE_OTHER
=
0
;
/**
* 1:账户无余额
*/
public
static
int
FAILURETYPE_NOT_SUFFICIENT_FUNDS
=
1
;
/**
* 2:系统异常
*/
public
static
int
FAILURETYPE_SYSTEM_ERROR
=
2
;
/**
*
*/
private
String
orderCode
;
/**
* 失败类型 0:其他 1:账户无余额2:系统异常
*/
private
int
failureType
;
/**
* 失败原因
*/
private
String
reason
;
/**
*
*/
private
String
partnerId
;
/**
*
*/
private
String
operator
;
private
int
ver
=
0
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/user/UserBaseResponsDTO.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
.
user
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/6 上午11:36
* @description :
*/
@Data
public
class
UserBaseResponsDTO
<
T
>
{
private
String
code
;
private
String
message
;
private
T
data
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/user/UserCouponCheckRequest.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
entities
.
dto
.
user
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/6 上午11:35
* @description :
*/
@Data
public
class
UserCouponCheckRequest
{
@ApiModelProperty
(
value
=
"商户号"
,
required
=
true
)
private
String
partnerId
;
@ApiModelProperty
(
value
=
"会员id"
,
required
=
true
)
private
String
memberId
;
@ApiModelProperty
(
value
=
"券号列表"
,
required
=
true
)
private
List
<
String
>
couponCodes
;
}
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundRetryVo.java
0 → 100644
View file @
c8ca553e
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GetProductVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: liming.guo
* @date: 2018/5/16 17:35
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
vo
;
import
com.freemud.application.sdk.api.ordercenter.enums.RefundModeEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* 用户退款申请
*
* @author haibo.jiang 2019/11/20
* @author shichang.wang 2021/4/15
*/
@ApiModel
(
"退款重试"
)
@Data
public
class
OrderRefundRetryVo
{
@NotNull
(
message
=
"重试记录id不能为空"
)
private
Long
id
;
}
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundVo.java
View file @
c8ca553e
...
...
@@ -18,6 +18,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.constraints.NotBlank
;
/**
* 用户退款申请
*
...
...
@@ -28,10 +30,10 @@ import org.hibernate.validator.constraints.NotEmpty;
@Data
public
class
OrderRefundVo
{
@Not
Empty
(
message
=
"sessionId 不能为空"
)
@Not
Blank
(
message
=
"sessionId 不能为空"
)
private
String
sessionId
;
@Not
Empty
(
message
=
"订单编号不能为空"
)
@Not
Blank
(
message
=
"订单编号不能为空"
)
private
String
oid
;
private
String
reason
;
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/QueryRefundFailuresListReq.java
0 → 100644
View file @
c8ca553e
/**
* 2021年9月15日-开票历史列表接口+详情接口+发票所含订单接口-黄兆良
* 查询开票历史列表
*/
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
QueryRefundFailuresListReq
{
private
Long
id
;
private
String
orderCode
;
private
Integer
afterId
;
private
Integer
failureType
;
private
Integer
size
;
//开始时间戳(单位:秒)
private
Integer
startTimestamp
;
}
order-application-service/src/main/java/cn/freemud/entities/vo/RefundFailuresSuccessfulReq.java
0 → 100644
View file @
c8ca553e
/**
* 2021年9月15日-开票历史列表接口+详情接口+发票所含订单接口-黄兆良
* 查询开票历史列表
*/
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
@Data
public
class
RefundFailuresSuccessfulReq
{
private
Long
id
;
private
String
partnerId
;
private
String
orderCode
;
private
String
operator
;
}
order-application-service/src/main/java/cn/freemud/enums/CouponOrderRefundFailTypeEnum.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
enums
;
public
enum
CouponOrderRefundFailTypeEnum
{
SUCCESS
(
0
,
"成功"
),
ORDER_VERIFY_FAIL
(
1
,
"订单校验失败"
),
COUPON_PROCESS_FAIL
(
2
,
"优惠券处理失败"
),
OTHER
(
7
,
"其他"
),
;
private
Integer
code
;
private
String
desc
;
CouponOrderRefundFailTypeEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
static
CouponOrderRefundFailTypeEnum
getByCode
(
Integer
code
)
{
for
(
CouponOrderRefundFailTypeEnum
type
:
values
())
{
if
(
type
.
getCode
().
equals
(
code
))
{
return
type
;
}
}
return
null
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
order-application-service/src/main/java/cn/freemud/enums/CouponOrderRefundStatusEnum.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
enums
;
public
enum
CouponOrderRefundStatusEnum
{
WAIT
(
1
,
"待退款"
),
REFUNDED
(
2
,
"已退款"
),
REFUND_FAILED
(
3
,
"退款失败"
),
NOT_NEED_REFUND
(
4
,
"无需退款"
),
;
private
Integer
code
;
private
String
desc
;
CouponOrderRefundStatusEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
static
CouponOrderRefundStatusEnum
getByCode
(
Integer
code
)
{
for
(
CouponOrderRefundStatusEnum
type
:
values
())
{
if
(
type
.
getCode
().
equals
(
code
))
{
return
type
;
}
}
return
null
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
order-application-service/src/main/java/cn/freemud/enums/OrderStatus.java
View file @
c8ca553e
...
...
@@ -12,6 +12,19 @@
*/
package
cn
.
freemud
.
enums
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1
;
/**
* @warning !!!
* 这里的订单状态依据的是 老订单的转换操作, 基础服务给出的订单状态如下:
* 1待支付
* 2下单
* 3已接单
* 4制作完成 5配送中 4/5的状态根据订单类型(自提/外卖)二选一不会同时出现
* 6已完成
* 7已关闭(退款完成)
* @see OrderStatusV1
*/
public
enum
OrderStatus
{
TAKE_ORDER
(
1
,
"下单"
,
"place an order"
),
...
...
order-application-service/src/main/java/cn/freemud/enums/OrderType.java
View file @
c8ca553e
...
...
@@ -12,19 +12,31 @@
*/
package
cn
.
freemud
.
enums
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.google.common.collect.Lists
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 基础服务订单类型如下:
* 1=常规堂食,
* 2=预约堂食,
* 3=常规外送,
* 4=预约外送,
* 5=常规自取,
* 6=预约自取
*
* @see OrderSdkAdapter#getOldOrderType(java.lang.Integer)
* 该类为老订单类型:
*/
public
enum
OrderType
{
TAKE_OUT
(
1
,
"外卖"
,
"takeOut"
),
PRE_ORDER
(
2
,
"预订单"
,
"preOrder"
),
MALL
(
3
,
"商城"
,
"mall"
),
COLLECT_GOODS
(
4
,
"打包带走"
,
"collectGoods"
),
EAT_IN
(
5
,
"店内就餐"
,
"eatIn"
)
;
TAKE_OUT
(
1
,
"外卖"
,
"takeOut"
),
PRE_ORDER
(
2
,
"预订单"
,
"preOrder"
),
MALL
(
3
,
"商城"
,
"mall"
),
COLLECT_GOODS
(
4
,
"打包带走"
,
"collectGoods"
),
EAT_IN
(
5
,
"店内就餐"
,
"eatIn"
);
private
Integer
code
;
private
String
desc
;
...
...
@@ -33,7 +45,7 @@ public enum OrderType {
*/
private
String
tackDesc
;
OrderType
(
Integer
code
,
String
desc
,
String
tackDesc
)
{
OrderType
(
Integer
code
,
String
desc
,
String
tackDesc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
this
.
tackDesc
=
tackDesc
;
...
...
@@ -66,7 +78,7 @@ public enum OrderType {
return
returnList
;
}
for
(
OrderType
orderType
:
values
())
{
for
(
Integer
code:
list
)
{
for
(
Integer
code
:
list
)
{
if
(
orderType
.
getCode
().
equals
(
code
))
{
returnList
.
add
(
code
);
}
...
...
order-application-service/src/main/java/cn/freemud/enums/PayRefundStatus.java
View file @
c8ca553e
...
...
@@ -15,7 +15,11 @@ package cn.freemud.enums;
public
enum
PayRefundStatus
{
SUCCESS
(
1
,
"退款成功"
),
FAIL
(
2
,
"退款失败"
),
RUNNING
(
4
,
"退款中"
);
RUNNING
(
4
,
"退款中"
),
/**
* 额外状态码 用于判断逻辑,
*/
NOT_SUFFICIENT_FUNDS
(
8200201
,
"余额不足"
);
private
Integer
code
;
private
String
desc
;
...
...
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
c8ca553e
...
...
@@ -192,6 +192,9 @@ public enum ResponseResult {
ORDER_INVOICE_IS_OPENED
(
"45083"
,
"存在选中的订单已开过发票,请重新选择订单"
,
""
),
ORDER_CODES_REPEAT
(
"45084"
,
"同一次开票,选中的订单不能重复,请重新选择订单"
,
""
),
ORDER_INVOICE_CONFIG_IS_NULL
(
"45085"
,
"发票配置信息为空,不可开票"
,
""
),
ORDER_BIZ_TYPE_ERROR
(
"45086"
,
"订单业务类型异常"
,
""
),
COUPON_ORDER_VERIFY_FAIL
(
"45087"
,
"买券订单校验异常"
,
""
),
COUPON_ORDER_COMMON_VERIFY_FAIL
(
"45088"
,
"卖券订单基础校验失败"
,
""
),
/**
* 售后单
...
...
@@ -225,6 +228,7 @@ public enum ResponseResult {
PAY_ERROR
(
"46016"
,
"支付类型错误"
,
""
),
COUPON_DATETIME_INVAILD
(
"46017"
,
"优惠券在当前时间不可用"
,
""
),
COUPON_ORDER_ORIGINAL_AMOUNT_NOT_ENOUGH
(
"46018"
,
"优惠券不满足可用金额门槛"
,
""
),
COUPON_CANCEL_FAIL
(
"46019"
,
"您购买的优惠券已锁定,请先进行解锁操作再退款"
,
""
),
SHOPPING_CART_USER_HAVE_NO_COUPON
(
"46019"
,
"使用的商品券已失效,请重新下单"
,
""
),
/**
...
...
order-application-service/src/main/java/cn/freemud/handler/CouponOrderAutoRefundHandler.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
handler
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.entities.db.db2.RefundOverOrder
;
import
cn.freemud.entities.dto.delivery.GetFilterPartnerResponse
;
import
cn.freemud.entities.dto.delivery.PartnerFilterResponse
;
import
cn.freemud.entities.dto.openplatform.OrderGetPartnerRequest
;
import
cn.freemud.entities.vo.OrderCountRequestVo
;
import
cn.freemud.entities.vo.OrderRefundVo
;
import
cn.freemud.entities.vo.SendOrderCountsMsg
;
import
cn.freemud.enums.CouponOrderRefundFailTypeEnum
;
import
cn.freemud.enums.CouponOrderRefundStatusEnum
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.manager.RefundOverOrderManager
;
import
cn.freemud.manager.db2.dao.RefundOverOrderDao
;
import
cn.freemud.service.Orderservice
;
import
cn.freemud.service.thirdparty.EcologyAdminApplicationClient
;
import
cn.freemud.utils.AppLogUtil
;
import
cn.freemud.utils.ExceptionUtils
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderCountResp
;
import
com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.stream.Collectors
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/26 下午8:27
* @description :
*/
@Component
public
class
CouponOrderAutoRefundHandler
{
@Autowired
private
Orderservice
orderservice
;
@Autowired
private
RefundOverOrderManager
refundOverOrderManager
;
private
ExecutorService
executor
=
Executors
.
newFixedThreadPool
(
5
);
public
ReturnT
<
String
>
execute
(
String
param
)
throws
Exception
{
long
now
=
System
.
currentTimeMillis
();
Date
nowDate
=
new
Date
(
now
);
String
nowDay
=
DateUtil
.
convert2String
(
nowDate
,
"yyyy-MM-dd"
);
Date
todayStart
=
DateUtil
.
convert2Date
(
nowDay
+
" 00:00:00"
,
"yyyy-MM-dd HH:mm:ss"
);
Date
today1
=
DateUtil
.
addHours
(
todayStart
,
1
);
Date
today6
=
DateUtil
.
addHours
(
todayStart
,
6
);
Date
today23
=
DateUtil
.
addHours
(
todayStart
,
23
);
if
(
nowDate
.
after
(
today23
)
||
nowDate
.
before
(
today1
))
{
ApiLog
.
infoMessage
(
"23点到1点不执行: "
+
now
);
return
ReturnT
.
SUCCESS
;
}
int
num
=
200
;
boolean
isBeforeDawn
=
nowDate
.
after
(
today1
)
&&
nowDate
.
before
(
today6
);
if
(
isBeforeDawn
)
{
num
=
500
;
}
List
<
RefundOverOrder
>
refundOverOrderList
=
refundOverOrderManager
.
selectBatch
(
num
);
if
(
CollectionUtils
.
isEmpty
(
refundOverOrderList
))
{
ApiLog
.
infoMessage
(
"未查询到需要退款的买券订单"
);
return
ReturnT
.
SUCCESS
;
}
executor
.
execute
(()
->
{
ApiLog
.
infoMessage
(
"开始自动给买券订单过期券退款 : "
+
JSON
.
toJSONString
(
refundOverOrderList
));
for
(
RefundOverOrder
refundOverOrder
:
refundOverOrderList
)
{
RefundOverOrder
refundOverOrderUpdate
=
new
RefundOverOrder
();
refundOverOrderUpdate
.
setRefundId
(
refundOverOrder
.
getRefundId
());
try
{
OrderRefundVo
orderRefundVo
=
new
OrderRefundVo
();
orderRefundVo
.
setOid
(
refundOverOrder
.
getRefundOrderCode
());
orderRefundVo
.
setReason
(
"券过期自动退款"
);
orderRefundVo
.
setRemarks
(
"券过期自动退款"
);
BaseResponse
baseResponse
=
orderservice
.
couponOrderRefund
(
orderRefundVo
,
1
);
if
(
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
baseResponse
.
getCode
()))
{
refundOverOrderUpdate
.
setRefundStatus
(
CouponOrderRefundStatusEnum
.
REFUNDED
.
getCode
());
refundOverOrderUpdate
.
setRefundFail
(
CouponOrderRefundFailTypeEnum
.
SUCCESS
.
getCode
());
refundOverOrderUpdate
.
setRefundDesc
(
"成功"
);
}
else
if
(
ResponseResult
.
COUPON_CANCEL_FAIL
.
getCode
().
equals
(
baseResponse
.
getCode
()))
{
refundOverOrderUpdate
.
setRefundStatus
(
CouponOrderRefundStatusEnum
.
NOT_NEED_REFUND
.
getCode
());
refundOverOrderUpdate
.
setRefundFail
(
CouponOrderRefundFailTypeEnum
.
COUPON_PROCESS_FAIL
.
getCode
());
refundOverOrderUpdate
.
setRefundDesc
(
JSON
.
toJSONString
(
baseResponse
));
}
else
if
(
ResponseResult
.
COUPON_ORDER_VERIFY_FAIL
.
getCode
().
equals
(
baseResponse
.
getCode
()))
{
refundOverOrderUpdate
.
setRefundStatus
(
CouponOrderRefundStatusEnum
.
REFUND_FAILED
.
getCode
());
refundOverOrderUpdate
.
setRefundFail
(
CouponOrderRefundFailTypeEnum
.
ORDER_VERIFY_FAIL
.
getCode
());
refundOverOrderUpdate
.
setRefundDesc
(
JSON
.
toJSONString
(
baseResponse
));
}
else
if
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
().
equals
(
baseResponse
.
getCode
()))
{
refundOverOrderUpdate
.
setRefundStatus
(
CouponOrderRefundStatusEnum
.
REFUND_FAILED
.
getCode
());
refundOverOrderUpdate
.
setRefundFail
(
CouponOrderRefundFailTypeEnum
.
ORDER_VERIFY_FAIL
.
getCode
());
refundOverOrderUpdate
.
setRefundDesc
(
JSON
.
toJSONString
(
baseResponse
));
}
else
{
refundOverOrderUpdate
.
setRefundStatus
(
CouponOrderRefundStatusEnum
.
REFUND_FAILED
.
getCode
());
refundOverOrderUpdate
.
setRefundFail
(
CouponOrderRefundFailTypeEnum
.
OTHER
.
getCode
());
refundOverOrderUpdate
.
setRefundDesc
(
JSON
.
toJSONString
(
baseResponse
));
}
refundOverOrderManager
.
update
(
refundOverOrderUpdate
);
if
(
isBeforeDawn
)
{
Thread
.
sleep
(
1000
);
}
}
catch
(
Exception
e
)
{
refundOverOrderUpdate
.
setRefundStatus
(
CouponOrderRefundStatusEnum
.
REFUND_FAILED
.
getCode
());
refundOverOrderUpdate
.
setRefundFail
(
CouponOrderRefundFailTypeEnum
.
OTHER
.
getCode
());
refundOverOrderUpdate
.
setRefundDesc
(
cutStr500
(
ExceptionUtils
.
getExceptionInfo
(
e
)));
refundOverOrderManager
.
update
(
refundOverOrderUpdate
);
}
}
});
return
ReturnT
.
SUCCESS
;
}
private
String
cutStr500
(
String
s
)
{
if
(
StringUtils
.
isNotBlank
(
s
)
&&
s
.
length
()
>
500
)
{
return
s
.
substring
(
0
,
500
);
}
return
s
;
}
}
order-application-service/src/main/java/cn/freemud/manager/RefundOverOrderManager.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
manager
;
import
cn.freemud.entities.db.Partner
;
import
cn.freemud.entities.db.db2.RefundOverOrder
;
import
cn.freemud.manager.dao.PartnerDao
;
import
cn.freemud.manager.db2.dao.RefundOverOrderDao
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* 商户小程序manager
*
* @author liming.guo
* @date 2018/05/10
*/
@Component
public
class
RefundOverOrderManager
{
@Autowired
private
RefundOverOrderDao
refundOverOrderDao
;
public
List
<
RefundOverOrder
>
selectBatch
(
Integer
num
)
{
return
refundOverOrderDao
.
selectBatch
(
num
);
}
public
void
insert
(
RefundOverOrder
refundOverOrder
)
{
refundOverOrderDao
.
insert
(
refundOverOrder
);
}
public
void
update
(
RefundOverOrder
refundOverOrder
)
{
refundOverOrderDao
.
update
(
refundOverOrder
);
}
}
order-application-service/src/main/java/cn/freemud/manager/db2/dao/RefundOverOrderDao.java
0 → 100644
View file @
c8ca553e
package
cn
.
freemud
.
manager
.
db2
.
dao
;
import
cn.freemud.comm.druid.MyMapper
;
import
cn.freemud.entities.db.OpenPlatformIappWxappConfigDelivery
;
import
cn.freemud.entities.db.Partner
;
import
cn.freemud.entities.db.db2.RefundOverOrder
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
RefundOverOrderDao
extends
MyMapper
<
RefundOverOrder
>
{
List
<
RefundOverOrder
>
selectBatch
(
@Param
(
"num"
)
Integer
num
);
Integer
update
(
@Param
(
"refundOverOrder"
)
RefundOverOrder
refundOverOrder
);
}
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
c8ca553e
...
...
@@ -84,6 +84,7 @@ public interface Orderservice extends OrderFactoryService{
*/
BaseResponse
orderRefund
(
OrderRefundVo
orderRefundVo
);
/**
* 获取订单排队号
*/
...
...
@@ -204,4 +205,18 @@ public interface Orderservice extends OrderFactoryService{
BaseResponse
<
OrderInvoiceConfigVo
>
queryInvoiceConfig
(
GetInvoiceConfigRequest
request
);
/**
* 卖券订单 申请退款
* @param orderRefundVo
* @param flag 0 用户调用 1系统调用
* @return
*/
BaseResponse
couponOrderRefund
(
OrderRefundVo
orderRefundVo
,
int
flag
);
/**
* 卖券订单 申请退款 重试
* @param orderRefundRetryVo
* @return
*/
BaseResponse
couponOrderRefundRetry
(
OrderRefundRetryVo
orderRefundRetryVo
);
}
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
c8ca553e
This diff is collapsed.
Click to expand it.
order-application-service/src/main/java/cn/freemud/service/thirdparty/CouponOnlineClient.java
View file @
c8ca553e
...
...
@@ -50,4 +50,15 @@ public interface CouponOnlineClient {
statusCodeFieldName
=
ResponseCodeKeyConstant
.
STATUS_CODE
)
@PostMapping
(
value
=
"/fastBatchQueryTemplateInfo"
)
CouponResponseDTO
<
List
<
FastTemplateInfoResponseVO
>>
fastBatchQueryTemplateInfo
(
@RequestBody
FastBatchQueryTemplateInfoRequest
request
);
/**
* 调用券码,作废券
* @param request
* @return
*/
@LogIgnoreFeign
(
logMessage
=
"checkandcancel"
,
messageFieldName
=
ResponseCodeKeyConstant
.
MSG
,
statusCodeFieldName
=
ResponseCodeKeyConstant
.
STATUS_CODE
)
@PostMapping
(
value
=
"/coupon/standard/checkandcancel"
,
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
CouponResponseDTO
<
CheckAndCancelResponseDTO
>
checkandcancel
(
@RequestBody
CheckAndCancelRequest
request
);
}
order-application-service/src/main/java/cn/freemud/service/thirdparty/CustomerExtendClient.java
View file @
c8ca553e
...
...
@@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
java.util.List
;
@FeignClient
(
name
=
"customer-extend-service"
,
url
=
"${saas.customerextendclient.feign.url}"
)
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
public
interface
CustomerExtendClient
{
...
...
@@ -39,4 +41,15 @@ public interface CustomerExtendClient {
@LogIgnoreFeign
(
logMessage
=
"b2bReceiveCard"
)
@PostMapping
(
value
=
"/customerextendservice/qujia/b2breceiveCard"
)
B2bReceiveCardResponseDto
b2bReceiveCard
(
@RequestBody
B2bReceiveCardRequestDto
request
);
/**
* 校验request里面的券 是否正常
* @param request
* @return 如果和request 返回券一致 表示正常
* 这个接口 无力吐槽
*/
@LogIgnoreFeign
(
logMessage
=
"getMemberCouponCodes"
)
@PostMapping
(
value
=
"/customerextendservice/coupon/getMemberCouponCodes"
)
UserBaseResponsDTO
<
List
<
String
>>
getMemberCouponCodes
(
@RequestBody
UserCouponCheckRequest
request
);
}
order-application-service/src/main/java/cn/freemud/service/thirdparty/OrderServiceClient.java
View file @
c8ca553e
...
...
@@ -3,16 +3,22 @@ package cn.freemud.service.thirdparty;
import
cn.freemud.annotations.LogIgnoreFeign
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.QueryInvoiceRepDto
;
import
cn.freemud.entities.dto.QueryRefundFailuresListDto
;
import
cn.freemud.entities.dto.order.QueryInvoiceByCodesResponse
;
import
cn.freemud.entities.dto.order.RefundFailureRequestDTO
;
import
cn.freemud.entities.dto.pay.OrderInvoiceRequest
;
import
cn.freemud.entities.dto.pay.QueryInvoiceByCodesRequest
;
import
cn.freemud.entities.vo.QueryInvoiceReq
;
import
cn.freemud.entities.vo.QueryRefundFailuresListReq
;
import
cn.freemud.entities.vo.RefundFailuresSuccessfulReq
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.http.MediaType
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
java.util.List
;
@FeignClient
(
name
=
"order-service"
,
url
=
"${order.service.url:}"
)
@RequestMapping
(
consumes
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
,
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
public
interface
OrderServiceClient
{
...
...
@@ -38,4 +44,25 @@ public interface OrderServiceClient {
@PostMapping
(
value
=
"/order/v2/invoice/list/forUser"
)
QueryInvoiceRepDto
queryInvoiceList
(
@RequestBody
QueryInvoiceReq
queryInvoiceReq
);
/**
* 虚拟券退款操作失败记录,用于后期补偿
*/
@LogIgnoreFeign
(
logMessage
=
"refundFailures"
)
@PostMapping
(
"/order/v2/refundFailures"
)
BaseResponse
refundFailures
(
@RequestBody
RefundFailureRequestDTO
requestDTO
);
/**
* 退款失败信息列表查询
*/
@LogIgnoreFeign
(
logMessage
=
"refundFailuresList"
)
@PostMapping
(
value
=
"/order/v2/refundFailures/list"
)
BaseResponse
<
List
<
QueryRefundFailuresListDto
>>
refundFailuresList
(
@RequestBody
QueryRefundFailuresListReq
queryRefundFailuresListReq
);
/**
* 退款失败信息列表查询
*/
@LogIgnoreFeign
(
logMessage
=
"refundFailuresSuccessful"
)
@PostMapping
(
value
=
"/order/v2/refundFailures/successful"
)
BaseResponse
refundFailuresSuccessful
(
@RequestBody
RefundFailuresSuccessfulReq
refundFailuresSuccessfulReq
);
}
order-application-service/src/main/resources/mapper/PartnerDao.xml
View file @
c8ca553e
...
...
@@ -12,7 +12,7 @@
gmt_modified as gmtModified
</sql>
<select
id=
"selectByPartnerId"
resultType=
"Partner"
>
<select
id=
"selectByPartnerId"
resultType=
"
cn.freemud.entities.db.
Partner"
>
SELECT
<include
refid=
"all_column"
/>
FROM partner WHERE partner_id=#{partnerId}
...
...
order-application-service/src/main/resources/mapper/PartnerWxappDao.xml
View file @
c8ca553e
...
...
@@ -18,13 +18,13 @@
gmt_modified as gmtModified
</sql>
<select
id=
"selectByPartnerIdAndAppid"
resultType=
"PartnerWxapp"
>
<select
id=
"selectByPartnerIdAndAppid"
resultType=
"
cn.freemud.entities.db.
PartnerWxapp"
>
SELECT
<include
refid=
"all_column"
/>
FROM partner_wxapp WHERE appid=#{appid} and partner_id= #{partnerId}
</select>
<select
id=
"selectByPartnerIdAndWxAppid"
resultType=
"PartnerWxapp"
>
<select
id=
"selectByPartnerIdAndWxAppid"
resultType=
"
cn.freemud.entities.db.
PartnerWxapp"
>
SELECT
<include
refid=
"all_column"
/>
FROM partner_wxapp WHERE wx_appid=#{wxAppid} and partner_id= #{partnerId}
...
...
order-application-service/src/main/resources/mapper/PushMccafeOrderDao.xml
View file @
c8ca553e
...
...
@@ -4,7 +4,7 @@
<sql
id=
"all_column"
>
id,
order_code as orderCode
order_code as orderCode
,
partner_id as partnerId,
store_id as storeId,
status as status,
...
...
order-application-service/src/main/resources/mapper/WxappMessageTemplateDao.xml
View file @
c8ca553e
...
...
@@ -17,7 +17,7 @@
</sql>
<select
id=
"selectByAppid"
resultType=
"WxappMessageTemplate"
>
<select
id=
"selectByAppid"
resultType=
"
cn.freemud.entities.db.
WxappMessageTemplate"
>
SELECT
<include
refid=
"all_column"
/>
FROM
...
...
@@ -27,7 +27,7 @@
AND status = 1
</select>
<select
id=
"selectParentIdAndAppid"
resultType=
"WxappMessageTemplate"
>
<select
id=
"selectParentIdAndAppid"
resultType=
"
cn.freemud.entities.db.
WxappMessageTemplate"
>
SELECT
<include
refid=
"all_column"
/>
FROM
...
...
order-application-service/src/main/resources/mapper/db2/RefundOverOrder.xml
0 → 100644
View file @
c8ca553e
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"cn.freemud.manager.db2.dao.RefundOverOrderDao"
>
<resultMap
id=
"BaseResultMap"
type=
"cn.freemud.entities.db.db2.RefundOverOrder"
>
<!--
WARNING - @mbg.generated
-->
<id
column=
"refund_id"
property=
"refundId"
jdbcType=
"INTEGER"
/>
<result
column=
"refund_order_code"
property=
"refundOrderCode"
jdbcType=
"VARCHAR"
/>
<result
column=
"refund_coupon_code"
property=
"refundCouponCode"
jdbcType=
"VARCHAR"
/>
<result
column=
"refund_time"
property=
"refundTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"refund_status"
property=
"refundStatus"
jdbcType=
"INTEGER"
/>
<result
column=
"refund_fail"
property=
"refundFail"
jdbcType=
"INTEGER"
/>
<result
column=
"refund_desc"
property=
"refundDesc"
jdbcType=
"VARCHAR"
/>
<result
column=
"refund_create_time"
property=
"refundCreateTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"refund_update_time"
property=
"refundUpdateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"all_column"
>
refund_id as refundId,
refund_order_code as refundOrderCode,
refund_coupon_code as refundCouponCode,
refund_time as refundTime,
refund_status as refundStatus,
refund_fail as refundFail,
refund_desc as refundDesc,
refund_create_time as refundCreateTime,
refund_update_time as refundUpdateTime
</sql>
<select
id=
"selectBatch"
resultType=
"cn.freemud.entities.db.db2.RefundOverOrder"
>
SELECT
<include
refid=
"all_column"
/>
FROM refund_over_order
WHERE refund_status = 1
order by refund_id
limit #{num}
</select>
<update
id=
"update"
parameterType=
"cn.freemud.entities.db.db2.RefundOverOrder"
>
update refund_over_order
set refund_status = #{refundOverOrder.refundStatus},
refund_fail = #{refundOverOrder.refundFail},
refund_desc = #{refundOverOrder.refundDesc}
where refund_id = #{refundOverOrder.refundId}
</update>
</mapper>
\ No newline at end of file
order-application-service/src/test/java/cn/freemud/service/impl/MallOrderServiceImplTest.java
View file @
c8ca553e
...
...
@@ -23,16 +23,20 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import
com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.ibatis.session.SqlSession
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.hibernate.validator.HibernateValidator
;
import
org.hibernate.validator.HibernateValidatorConfiguration
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.SpringBootVersion
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.SpringVersion
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
springfox.documentation.spring.web.json.Json
;
...
...
@@ -40,6 +44,7 @@ import springfox.documentation.spring.web.json.Json;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.ValidatorFactory
;
import
java.sql.SQLException
;
import
java.util.Set
;
@RunWith
(
SpringRunner
.
class
)
...
...
@@ -72,6 +77,9 @@ public class MallOrderServiceImplTest {
// public void after() throws Exception {
// }
@Autowired
private
ApplicationContext
applicationContext
;
@Test
public
void
f1
()
{
mcCafeOrderService
.
createOrder
(
JSON
.
parseObject
(
"{\"buyType\":0,\"cardKeyCode\":\"509835\",\"channelType\":\"saas\",\"couponCode\":\"\",\"menuType\":\"saas\",\"needInvoice\":1,\"orderRemark\":\"\",\"orderType\":1,\"partnerId\":\"1628\",\"payChannelType\":1,\"receiveId\":\"\",\"sessionId\":\"18459edce0b4c5a5794e855b988d45e0b54ba705\",\"shopId\":\"1950512\",\"takeMealFlag\":\"0\"}"
,
CreateOrderVo
.
class
),
...
...
@@ -90,6 +98,13 @@ public class MallOrderServiceImplTest {
Set
<
ConstraintViolation
<
CreateOrderVo
>>
set
=
validatorFactory
.
getValidator
().
validate
(
new
CreateOrderVo
());
}
@Test
public
void
f3
()
throws
SQLException
{
SqlSessionFactory
sqlSessionFactory
=
(
SqlSessionFactory
)
applicationContext
.
getBean
(
"sqlSessionFactory"
);
SqlSessionFactory
db2SqlSessionFactory
=
(
SqlSessionFactory
)
applicationContext
.
getBean
(
"db2SqlSessionFactory"
);
return
;
}
//
// @Test
// public void testPaySuccess() {
...
...
order-management/src/main/java/cn/freemud/management/enums/SettlementTypeEnum.java
View file @
c8ca553e
...
...
@@ -7,6 +7,7 @@ public enum SettlementTypeEnum {
CASH_COUPON
(
10
,
"代金券"
),
DISCOUNT_COUPON
(
208
,
"折扣券"
),
PRODUCT_COUPON
(
118
,
"商品券"
),
SEND_COUPON
(
216
,
"购买券包发的优惠券"
),
;
private
int
settlementType
;
...
...
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
View file @
c8ca553e
...
...
@@ -629,7 +629,7 @@ public class OrderVerifyHandle {
/**
* 获取已完成订单退款金额
*/
p
rivate
BigDecimal
getRefundAmount
(
OrderBeanV1
data
,
boolean
isRefundDeliveryFee
)
{
p
ublic
BigDecimal
getRefundAmount
(
OrderBeanV1
data
,
boolean
isRefundDeliveryFee
)
{
//是否配置已完成订单可退款
BigDecimal
refundAmount
=
new
BigDecimal
(
data
.
getAmount
());
if
(
isRefundDeliveryFee
||
isPayBySVC
(
data
)){
...
...
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
c8ca553e
...
...
@@ -118,6 +118,38 @@ public class PaymentHandle {
}
/**
* 卖券调用退款
* @param reason
* @param orderBean
* @return -2正常 -1 不需要退款 0其他异常 1账户余额不足 2 系统异常
*/
public
PayRefundResponse
refund
(
String
reason
,
OrderBeanV1
orderBean
)
{
PayRefundStatus
refundStatus
=
PayRefundStatus
.
SUCCESS
;
PayRefundRequestDto
orderRefundRequest
=
paymentSdkAdapter
.
getOrderRefundRequest
(
orderBean
,
getRefundAmount
(
orderBean
));
//抖音支付必传
orderRefundRequest
.
setRefundDesc
(
reason
);
if
(
ObjectUtils
.
equals
(
orderBean
.
getAmount
(),
0L
))
{
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
;
orderRefundResponse
=
this
.
orderPayRefund
(
orderRefundRequest
);
if
(
orderRefundResponse
==
null
)
{
// 退款失败
refundStatus
=
PayRefundStatus
.
FAIL
;
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
if
(
ObjectUtils
.
notEqual
(
orderRefundResponse
.
getCode
(),
SUCCESS
))
{
//商户余额不足的情况下,返回异常特殊处理.
refundStatus
=
PayRefundStatus
.
FAIL
;
if
(
ResponseResult
.
NOT_SUFFICIENT_FUNDS
.
getCode
().
equals
(
orderRefundResponse
.
getCode
()))
{
refundStatus
=
PayRefundStatus
.
NOT_SUFFICIENT_FUNDS
;
}
}
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
/**
* 退款
*
* @param orderBean
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
c8ca553e
...
...
@@ -1677,6 +1677,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartClearRequestVo
.
setUserId
(
userId
);
shoppingCartClearRequestVo
.
setShopId
(
storeId
);
shoppingCartClearRequestVo
.
setOperationType
(
OperationTypeEnum
.
PAY_SUCCESS
.
getOperationType
());
// 因为数量限制的问题,不清空购物车缓存
if
(
activityCalculationDiscountResponseDto
!=
null
&&
StringUtils
.
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
"80000"
))
{
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_LIMIT_ADD
);
}
clear
(
shoppingCartClearRequestVo
);
if
(
activityCalculationDiscountResponseDto
!=
null
&&
StringUtils
.
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
"103"
))
{
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP
);
...
...
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