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
1bb497d9
Commit
1bb497d9
authored
Dec 28, 2023
by
box
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同意退款申请时,如果是买券订单,作废券
拒绝退款申请时,如果是买券订单,解冻券
parent
c2fc4bc7
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
292 additions
and
0 deletions
+292
-0
order-management/src/main/java/cn/freemud/management/entities/dto/response/coupon/CouponBaseResponse.java
+22
-0
order-management/src/main/java/cn/freemud/management/service/adapter/OrderBeanFactory.java
+5
-0
order-management/src/main/java/cn/freemud/management/service/impl/SaleCouponOrderMangerServiceImpl.java
+156
-0
order-management/src/main/java/cn/freemud/management/thirdparty/CouponOnlineClient.java
+31
-0
order-management/src/main/java/cn/freemud/management/thirdparty/request/coupon/BatchCouponDiscardReq.java
+44
-0
order-management/src/main/java/cn/freemud/management/thirdparty/request/coupon/CouponUnFreezeReq.java
+34
-0
No files found.
order-management/src/main/java/cn/freemud/management/entities/dto/response/coupon/CouponBaseResponse.java
0 → 100644
View file @
1bb497d9
package
cn
.
freemud
.
management
.
entities
.
dto
.
response
.
coupon
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/9 下午2:45
* @description :
*/
@Data
public
class
CouponBaseResponse
<
T
>
{
private
Integer
statusCode
;
/**
* 返回信息
*/
private
String
msg
;
private
T
result
;
}
order-management/src/main/java/cn/freemud/management/service/adapter/OrderBeanFactory.java
View file @
1bb497d9
...
@@ -56,6 +56,11 @@ public class OrderBeanFactory {
...
@@ -56,6 +56,11 @@ public class OrderBeanFactory {
return
applicationContext
.
getBean
(
NewMallOrderMangerServiceImpl
.
class
);
return
applicationContext
.
getBean
(
NewMallOrderMangerServiceImpl
.
class
);
}
}
// 卖券订单,根据业务类型
if
(
Objects
.
equals
(
BizTypeEnum
.
SALE_COUPON
.
getBizType
(),
orderBean
.
getBizType
())){
return
applicationContext
.
getBean
(
SaleCouponOrderMangerServiceImpl
.
class
);
}
return
applicationContext
.
getBean
(
SaasOrderMangerServiceImpl
.
class
);
return
applicationContext
.
getBean
(
SaasOrderMangerServiceImpl
.
class
);
}
}
}
}
order-management/src/main/java/cn/freemud/management/service/impl/SaleCouponOrderMangerServiceImpl.java
0 → 100644
View file @
1bb497d9
package
cn
.
freemud
.
management
.
service
.
impl
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.management.adapter.OrderCancelReqAdapter
;
import
cn.freemud.management.constant.ResponseCodeConstant
;
import
cn.freemud.management.entities.dto.request.console.*
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo
;
import
cn.freemud.management.entities.dto.response.coupon.CouponBaseResponse
;
import
cn.freemud.management.entities.dto.response.order.OrderManagerResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.enums.OperateType
;
import
cn.freemud.management.enums.*
;
import
cn.freemud.management.handler.AssisantApplicationHandler
;
import
cn.freemud.management.service.OrderBaseService
;
import
cn.freemud.management.service.OrderManagerService
;
import
cn.freemud.management.service.handle.*
;
import
cn.freemud.management.thirdparty.ConsoleApiClient
;
import
cn.freemud.management.thirdparty.CouponOnlineClient
;
import
cn.freemud.management.thirdparty.OrderCallbackClient
;
import
cn.freemud.management.thirdparty.request.coupon.BatchCouponDiscardReq
;
import
cn.freemud.management.thirdparty.request.coupon.CouponUnFreezeReq
;
import
cn.freemud.management.util.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
com.freemud.application.sdk.api.ordercenter.enums.*
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderSourceV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1
;
import
com.freemud.application.sdk.api.ordercenter.request.AfterSalesRefundFailReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.service.EmailAlertService
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
static
cn
.
freemud
.
management
.
enums
.
OperateType
.
ORDER_AGREE_REFUND
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: rrr
* @Package cn.freemud.management.service.impl
* @Description: saas订单履单操作
* @author: shuhu.hou
* @date: 2020/3/26 16:01
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public
class
SaleCouponOrderMangerServiceImpl
extends
SaasOrderMangerServiceImpl
{
@Autowired
private
CouponOnlineClient
couponOnlineClient
;
@Value
(
"${coupon.partner.id:1983}"
)
private
String
couponPartnerId
;
/**
* 同意退款
*
* @param request
* @param orderBean
* @return
*/
@Override
public
BaseResponse
<
OrderManagerResponse
>
orderAgreeRefund
(
OrderManagerRequest
request
,
OrderBeanV1
orderBean
)
{
// 退款前先作废券
if
(
BizTypeEnum
.
SALE_COUPON
.
getBizType
().
equals
(
orderBean
.
getBizType
()))
{
List
<
String
>
couponCodes
=
Optional
.
ofNullable
(
orderBean
.
getOrderSettlementDetailList
()).
orElse
(
new
ArrayList
<>()).
stream
()
// 216 = 买券订单的券信息
.
filter
(
dto
->
Objects
.
equals
(
216
,
dto
.
getSettlementType
())
&&
StringUtils
.
isNotBlank
(
dto
.
getExternalObjectId
()))
.
map
(
OrderSettlementResp:
:
getExternalObjectId
)
.
collect
(
Collectors
.
toList
());
BatchCouponDiscardReq
discardReq
=
new
BatchCouponDiscardReq
();
discardReq
.
setCoupons
(
couponCodes
.
stream
().
map
(
code
->
{
return
new
BatchCouponDiscardReq
.
CouponInfo
(){{
setCode
(
code
);
setMemberId
(
orderBean
.
getUserId
());
}};
}).
collect
(
Collectors
.
toList
()));
discardReq
.
setPartnerId
(
request
.
getPartnerId
());
discardReq
.
setProviderId
(
couponPartnerId
);
discardReq
.
setCancelReason
(
"券包订单退款"
);
CouponBaseResponse
<
Object
>
discardResp
=
couponOnlineClient
.
batchDiscard
(
discardReq
);
if
(!
Objects
.
equals
(
discardResp
.
getStatusCode
(),
100
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
SYSTEM_ERROR
.
getCode
(),
"作废优惠券失败"
);
}
}
// 执行退款
return
super
.
orderAgreeRefund
(
request
,
orderBean
);
}
/**
* 拒绝退款
*
* @param request
* @param orderBean
* @return
*/
@Override
public
BaseResponse
<
OrderManagerResponse
>
orderRejectRefund
(
OrderManagerRequest
request
,
OrderBeanV1
orderBean
)
{
BaseResponse
<
OrderManagerResponse
>
response
=
super
.
orderRejectRefund
(
request
,
orderBean
);
// 拒绝后解冻券
try
{
if
(
BizTypeEnum
.
SALE_COUPON
.
getBizType
().
equals
(
orderBean
.
getBizType
()))
{
List
<
String
>
couponCodes
=
Optional
.
ofNullable
(
orderBean
.
getOrderSettlementDetailList
()).
orElse
(
new
ArrayList
<>()).
stream
()
// 216 = 买券订单的券信息
.
filter
(
dto
->
Objects
.
equals
(
216
,
dto
.
getSettlementType
())
&&
StringUtils
.
isNotBlank
(
dto
.
getExternalObjectId
()))
.
map
(
OrderSettlementResp:
:
getExternalObjectId
)
.
collect
(
Collectors
.
toList
());
if
(!
couponCodes
.
isEmpty
())
{
CouponUnFreezeReq
unFreezeReq
=
new
CouponUnFreezeReq
();
unFreezeReq
.
setCoupons
(
couponCodes
.
stream
().
map
(
code
->
{
return
new
CouponUnFreezeReq
.
CouponInfo
(){{
setCode
(
code
);
setMemberId
(
orderBean
.
getUserId
());
}};
}).
collect
(
Collectors
.
toList
()));
unFreezeReq
.
setPartnerId
(
request
.
getPartnerId
());
CouponBaseResponse
<
Object
>
unfreezeResp
=
couponOnlineClient
.
unfreeze
(
unFreezeReq
);
if
(!
Objects
.
equals
(
unfreezeResp
.
getStatusCode
(),
100
))
{
ApiLog
.
warnMessage
(
"refundReject 解冻券失败:{}"
,
JSONObject
.
toJSONString
(
unfreezeResp
));
}
}
}
}
catch
(
Exception
e
)
{
ApiLog
.
warnMessage
(
"refundReject 解冻券异常.error orderCode={}, ex:{}"
,
request
.
getOrderId
(),
e
.
getMessage
());
}
return
response
;
}
}
order-management/src/main/java/cn/freemud/management/thirdparty/CouponOnlineClient.java
0 → 100644
View file @
1bb497d9
package
cn
.
freemud
.
management
.
thirdparty
;
import
cn.freemud.management.entities.dto.response.coupon.CouponBaseResponse
;
import
cn.freemud.management.thirdparty.request.coupon.BatchCouponDiscardReq
;
import
cn.freemud.management.thirdparty.request.coupon.CouponUnFreezeReq
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
//@IgnoreFeignLogAnnotation
@FeignClient
(
contextId
=
"coupon-online-service-management"
,
name
=
"OPEN-STORE-ONLINE-COUPON-SERVICE"
,
url
=
"${saas.coupononlineclient.feign.url:}"
)
public
interface
CouponOnlineClient
{
/**
* 批量作废券(包括会员卡包中的券)
* <pre></pre>
* @param req
* @return
*/
@PostMapping
(
"coupon/standard/discard"
)
CouponBaseResponse
<
Object
>
batchDiscard
(
BatchCouponDiscardReq
req
);
/**
* 解冻券,请求券号列表中,所有券号尾号必须一样
* <pre></pre>
* @param req
* @return
*/
@PostMapping
(
"coupon/standard/ops/unfreeze"
)
CouponBaseResponse
<
Object
>
unfreeze
(
CouponUnFreezeReq
req
);
}
order-management/src/main/java/cn/freemud/management/thirdparty/request/coupon/BatchCouponDiscardReq.java
0 → 100644
View file @
1bb497d9
package
cn
.
freemud
.
management
.
thirdparty
.
request
.
coupon
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
import
java.util.List
;
/**
* 作废券请求参数
*
* @author tony
*/
@Data
public
class
BatchCouponDiscardReq
{
@Size
(
min
=
1
,
message
=
"作废的券信息不能为空"
)
private
List
<
CouponInfo
>
coupons
;
@NotBlank
(
message
=
"商户编号不能为空"
)
private
String
partnerId
;
@NotBlank
(
message
=
"渠道编号不能为空"
)
private
String
providerId
;
@NotBlank
(
message
=
"作废原因不能为空"
)
private
String
cancelReason
;
@Valid
@Data
public
static
class
CouponInfo
{
@NotBlank
(
message
=
"会员ID不能为空"
)
private
String
memberId
;
@NotBlank
(
message
=
"券号不能为空"
)
private
String
code
;
}
@ApiModelProperty
(
"接口版本,=1:不校验券是否属于传入的会员id。>1:校验"
)
private
int
ver
=
1
;
}
order-management/src/main/java/cn/freemud/management/thirdparty/request/coupon/CouponUnFreezeReq.java
0 → 100644
View file @
1bb497d9
package
cn
.
freemud
.
management
.
thirdparty
.
request
.
coupon
;
import
lombok.Data
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
import
java.util.List
;
/**
* 冻结券请求参数
*
* @author tony
*/
@Data
public
class
CouponUnFreezeReq
{
@Size
(
min
=
1
,
max
=
20
,
message
=
"操作的券信息不能为空且最多支持20张"
)
private
List
<
CouponInfo
>
coupons
;
@NotBlank
(
message
=
"商户编号不能为空"
)
private
String
partnerId
;
@Valid
@Data
public
static
class
CouponInfo
{
private
String
memberId
;
@NotBlank
(
message
=
"券号不能为空"
)
private
String
code
;
}
}
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