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
f3525021
Commit
f3525021
authored
Dec 08, 2021
by
徐康
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/xukang_20211201_虚拟订单退款' into qa
parents
eada99cc
0f44790c
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
573 additions
and
9 deletions
+573
-9
order-application-service/src/main/java/cn/freemud/OrderApplication.java
+2
-4
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+10
-0
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/vo/OrderRefundRetryVo.java
+37
-0
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/manager/RefundOverOrderManager.java
+28
-0
order-application-service/src/main/java/cn/freemud/manager/db2/dao/RefundOverOrderDao.java
+17
-0
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
+7
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+81
-0
order-application-service/src/main/java/cn/freemud/service/thirdparty/OrderServiceClient.java
+19
-0
order-application-service/src/main/java/cn/freemud/xxljob/CouponOrderRefundRetryHandler.java
+76
-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/WxappMessageTemplateDao.xml
+2
-2
order-application-service/src/main/resources/mapper/db2/RefundOverOrder.xml
+30
-0
order-application-service/src/test/java/cn/freemud/service/impl/MallOrderServiceImplTest.java
+15
-0
No files found.
order-application-service/src/main/java/cn/freemud/OrderApplication.java
View file @
f3525021
...
...
@@ -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
;
...
...
@@ -35,20 +36,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
(
exclude
=
RedisAutoConfiguration
.
class
)
@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/controller/OrderController.java
View file @
f3525021
...
...
@@ -509,5 +509,15 @@ public class OrderController {
return
orderservice
.
couponOrderRefund
(
orderRefundVo
);
}
/**
* 卖券订单申请退款
*/
@ApiAnnotation
(
logMessage
=
"couponOrderRefundRetry"
)
@PostMapping
(
"/couponOrderRefundRetry"
)
public
BaseResponse
couponOrderRefundRetry
(
@Validated
@LogParams
@RequestBody
OrderRefundRetryVo
orderRefundRetryVo
)
{
return
orderservice
.
couponOrderRefundRetry
(
orderRefundRetryVo
);
}
}
order-application-service/src/main/java/cn/freemud/core/db/DataSourcesConfig.java
View file @
f3525021
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 @
f3525021
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 @
f3525021
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 @
f3525021
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 @
f3525021
package
cn
.
freemud
.
entities
.
dto
;
import
cn.freemud.entities.vo.QueryInvoiceItemRep
;
import
lombok.Data
;
@Data
public
class
QueryRefundFailuresListDto
{
private
Integer
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/vo/OrderRefundRetryVo.java
0 → 100644
View file @
f3525021
/**
* 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
Integer
id
;
}
order-application-service/src/main/java/cn/freemud/entities/vo/QueryRefundFailuresListReq.java
0 → 100644
View file @
f3525021
/**
* 2021年9月15日-开票历史列表接口+详情接口+发票所含订单接口-黄兆良
* 查询开票历史列表
*/
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
QueryRefundFailuresListReq
{
private
Integer
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 @
f3525021
/**
* 2021年9月15日-开票历史列表接口+详情接口+发票所含订单接口-黄兆良
* 查询开票历史列表
*/
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
@Data
public
class
RefundFailuresSuccessfulReq
{
private
Integer
id
;
private
String
partnerId
;
private
String
orderCode
;
private
String
operator
;
}
order-application-service/src/main/java/cn/freemud/manager/RefundOverOrderManager.java
0 → 100644
View file @
f3525021
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
);
}
}
order-application-service/src/main/java/cn/freemud/manager/db2/dao/RefundOverOrderDao.java
0 → 100644
View file @
f3525021
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
);
}
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
f3525021
...
...
@@ -211,4 +211,11 @@ public interface Orderservice extends OrderFactoryService{
* @return
*/
BaseResponse
couponOrderRefund
(
OrderRefundVo
orderRefundVo
);
/**
* 卖券订单 申请退款 重试
* @param orderRefundRetryVo
* @return
*/
BaseResponse
couponOrderRefundRetry
(
OrderRefundRetryVo
orderRefundRetryVo
);
}
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
f3525021
...
...
@@ -98,6 +98,7 @@ import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderC
import
com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderCountResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.*
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
...
...
@@ -121,6 +122,7 @@ import com.freemud.sdk.api.assortment.order.enums.QueryDeliveryType;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.util.LockUtils
;
import
com.freemud.sdk.api.assortment.order.vo.ProductGroupVo
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
...
...
@@ -3484,6 +3486,85 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public
BaseResponse
couponOrderRefundRetry
(
OrderRefundRetryVo
orderRefundRetryVo
)
{
QueryRefundFailuresListReq
queryRefundFailuresListReq
=
new
QueryRefundFailuresListReq
();
queryRefundFailuresListReq
.
setId
(
orderRefundRetryVo
.
getId
());
BaseResponse
<
List
<
QueryRefundFailuresListDto
>>
queryRefundFailuresListDtoBaseResponse
=
orderServiceClient
.
refundFailuresList
(
queryRefundFailuresListReq
);
if
(!
ResponseConstant
.
SUCCESS_RESPONSE_CODE_STR
.
equals
(
queryRefundFailuresListDtoBaseResponse
.
getCode
())
||
CollectionUtils
.
isEmpty
(
queryRefundFailuresListDtoBaseResponse
.
getResult
())
||
queryRefundFailuresListDtoBaseResponse
.
getResult
().
size
()
!=
1
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"该记录不存在或查询异常"
);
}
QueryRefundFailuresListDto
queryRefundFailuresListDto
=
queryRefundFailuresListDtoBaseResponse
.
getResult
().
get
(
0
);
// 查询订单
BaseResponse
<
OrderBeanV1
>
orderResponse
=
this
.
checkOrderAndGetOrderBean
(
queryRefundFailuresListDto
.
getOrderCode
());
if
(!
Objects
.
equals
(
orderResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单数据查询失败:"
+
orderResponse
.
getMessage
());
}
OrderBeanV1
orderBean
=
orderResponse
.
getResult
();
AfterSalesOrderResp
afterSalesOrderResp
=
orderBean
.
getAfterSalesOrderResp
();
if
(
afterSalesOrderResp
==
null
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"不存在售后单信息"
);
}
String
lockKey
=
"refund_retry_key:"
+
queryRefundFailuresListDto
.
getOrderCode
();
try
{
Long
expire
=
60
l
;
if
(!
LockUtils
.
lock
(
redisCache
.
getRedisTemplate
(),
lockKey
,
expire
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"处理中,请稍等。"
);
}
if
(
Integer
.
valueOf
(
1
).
equals
(
queryRefundFailuresListDto
.
getLastFailureType
()))
{
Long
refundId
=
System
.
currentTimeMillis
();
//调用支付退款
com
.
freemud
.
sdk
.
api
.
assortment
.
payment
.
request
.
OrderRefundRequest
orderPayRefundRequest
=
orderAdapter
.
getOrderPayRefundRequest
(
orderBean
,
refundId
,
queryRefundFailuresListDto
.
getOrderCode
());
//抖音支付退款必传
orderPayRefundRequest
.
setRefundDesc
(
"重试退款"
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
response
=
payServiceImpl
.
orderRefund
(
orderPayRefundRequest
);
if
(
response
==
null
||
response
.
getData
()
==
null
||
!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
response
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"调用支付退款接口失败:"
+
JSON
.
toJSONString
(
response
));
}
if
(!
ResponseConstant
.
SUCCESS_RESPONSE_CODE
.
equals
(
response
.
getData
().
getStatusCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"支付退款失败:"
+
JSON
.
toJSONString
(
response
));
}
RefundFailuresSuccessfulReq
refundFailuresSuccessfulReq
=
new
RefundFailuresSuccessfulReq
();
refundFailuresSuccessfulReq
.
setId
(
orderRefundRetryVo
.
getId
());
refundFailuresSuccessfulReq
.
setOrderCode
(
orderBean
.
getOid
());
refundFailuresSuccessfulReq
.
setPartnerId
(
orderBean
.
getCompanyId
());
BaseResponse
baseResponse
=
orderServiceClient
.
refundFailuresSuccessful
(
refundFailuresSuccessfulReq
);
if
(!
ResponseConstant
.
SUCCESS_RESPONSE_CODE_STR
.
equals
(
baseResponse
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"处理完成但更新记录失败"
);
}
AfterSalesOperateReq
request
=
new
AfterSalesOperateReq
();
request
.
setOrderCode
(
orderBean
.
getOid
());
request
.
setPartnerId
(
orderBean
.
getCompanyId
());
request
.
setOrderClient
(
Integer
.
parseInt
(
orderBean
.
getOrderClient
()));
request
.
setAfterSalesCode
(
afterSalesOrderResp
.
getAfterSalesCode
());
request
.
setAfterSerialNo
(
String
.
valueOf
(
orderPayRefundRequest
.
getRefundId
()));
request
.
setAdultRemark
(
"重试退款"
);
request
.
setOperator
(
"技术支持"
);
OrderBaseResp
orderBaseResp
=
orderSdkService
.
adultApproveWithRefundComplete
(
request
,
LogThreadLocal
.
getTrackingNo
());
if
(
orderBaseResp
==
null
||
!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
orderBaseResp
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"基础服务订单退款完成失败"
);
}
}
}
catch
(
Exception
e
)
{
throw
e
;
}
finally
{
LockUtils
.
unlock
(
redisCache
.
getRedisTemplate
(),
lockKey
);
}
return
ResponseUtil
.
success
();
}
/**
* 订单退款操作
* 1.调用支付 进行退款
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/OrderServiceClient.java
View file @
f3525021
...
...
@@ -3,17 +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
{
...
...
@@ -46,4 +51,18 @@ public interface OrderServiceClient {
@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/java/cn/freemud/xxljob/CouponOrderRefundRetryHandler.java
0 → 100644
View file @
f3525021
package
cn
.
freemud
.
xxljob
;
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.SendOrderCountsMsg
;
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
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.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.stream.Collectors
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/26 下午8:27
* @description :
*/
@Component
public
class
CouponOrderRefundRetryHandler
extends
IJobHandler
{
@Autowired
private
Orderservice
orderservice
;
@Autowired
private
RefundOverOrderManager
refundOverOrderManager
;
@Override
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
;
if
(
nowDate
.
after
(
today1
)
&&
nowDate
.
before
(
today6
))
{
num
=
500
;
}
List
<
RefundOverOrder
>
refundOverOrderList
=
refundOverOrderManager
.
selectBatch
(
num
);
if
(
CollectionUtils
.
isEmpty
(
refundOverOrderList
))
{
ApiLog
.
infoMessage
(
"未查询到需要退款的买券订单"
);
return
ReturnT
.
SUCCESS
;
}
return
ReturnT
.
SUCCESS
;
}
}
order-application-service/src/main/resources/mapper/PartnerDao.xml
View file @
f3525021
...
...
@@ -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 @
f3525021
...
...
@@ -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/WxappMessageTemplateDao.xml
View file @
f3525021
...
...
@@ -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 @
f3525021
<?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=
"DATETIME"
/>
<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=
"DATETIME"
/>
<result
column=
"refund_update_time"
property=
"refundUpdateTime"
jdbcType=
"DATETIME"
/>
</resultMap>
<select
id=
"selectBatch"
resultType=
"cn.freemud.entities.db.db2.RefundOverOrder"
>
SELECT
*
FROM refund_over_order
WHERE refund_status = 1
order by refund_id
limit #{num}
</select>
</mapper>
\ No newline at end of file
order-application-service/src/test/java/cn/freemud/service/impl/MallOrderServiceImplTest.java
View file @
f3525021
...
...
@@ -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() {
...
...
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