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
e8e6498f
Commit
e8e6498f
authored
Oct 29, 2020
by
chongfu.liang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
# Conflicts: # order-management/pom.xml
parents
696d12c9
afd4a4d4
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
770 additions
and
324 deletions
+770
-324
assortment-ordercenter-sdk/pom.xml
+2
-2
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+2
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/RefundStatus.java
+56
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/ResponseResult.java
+1
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/OrderRefundRequest.java
+19
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/QueryStoreRefundCountRequest.java
+42
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryPartnerRefundCountResponse.java
+61
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/OrderCenterSdkService.java
+12
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
+204
-10
order-application-service/src/main/java/cn/freemud/adapter/DeliveryAdapter.java
+17
-4
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+58
-10
order-application-service/src/main/java/cn/freemud/entities/dto/QueryOrdersResponseDto.java
+7
-0
order-application-service/src/main/java/cn/freemud/entities/vo/ProductVo.java
+2
-0
order-application-service/src/main/java/cn/freemud/entities/vo/QueryOrderResponseVo.java
+16
-0
order-application-service/src/main/java/cn/freemud/service/impl/MCCafeOrderServiceImpl.java
+34
-23
order-application-service/src/main/java/cn/freemud/service/mccafe/CouponClientService.java
+0
-21
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
+0
-211
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
+10
-3
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+28
-0
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
+102
-0
order-management/src/main/java/cn/freemud/management/service/impl/McCafeMangerServiceImpl.java
+6
-26
ordercenter-sdk/pom.xml
+1
-1
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/AfterSalesOrderResp.java
+5
-0
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+2
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
+50
-9
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CalculationServiceImpl.java
+16
-2
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/SetMealCalculation.java
+17
-2
No files found.
assortment-ordercenter-sdk/pom.xml
View file @
e8e6498f
...
...
@@ -10,7 +10,7 @@
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
assortment-ordercenter-sdk
</artifactId>
<version>
2.0.1
8
-SNAPSHOT
</version>
<version>
2.0.1
9
-SNAPSHOT
</version>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
@@ -38,7 +38,7 @@
<dependency>
<groupId>
cn.freemud
</groupId>
<artifactId>
ordercenter-sdk
</artifactId>
<version>
1.
4.38
-SNAPSHOT
</version>
<version>
1.
5.0
-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
e8e6498f
...
...
@@ -1924,6 +1924,8 @@ public class OrderSdkAdapter {
newOrderAccountType
=
OldOrderAccountType
.
TOTAL_DISCOUNT
.
getCode
();
case
220
:
newOrderAccountType
=
OldOrderAccountType
.
MEMBER_PRICE_DISCOUNT
.
getCode
();
case
99
:
newOrderAccountType
=
OldOrderAccountType
.
FREIGHT_COUPON
.
getCode
();
default
:
break
;
}
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/RefundStatus.java
0 → 100644
View file @
e8e6498f
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderType
* @Package cn.freemud.enums
* @Description: 订单状态
* @author: liming.guo
* @date: 2018/5/21 14:43
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
;
public
enum
RefundStatus
{
APPLY_REFUND
(
1
,
"申请退款"
),
AGREE_REFUND
(
2
,
"同意退款"
),
ALREADY_REFUND
(
3
,
"已退货"
),
COMPLETE_REFUND
(
4
,
"退款完成"
),
REFUSE_REFUND
(
5
,
"拒绝退款"
);
private
Integer
code
;
private
String
desc
;
RefundStatus
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
static
RefundStatus
getByCode
(
Integer
code
)
{
for
(
RefundStatus
status
:
values
())
{
if
(
status
.
getCode
().
equals
(
code
))
{
return
status
;
}
}
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
;
}
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/ResponseResult.java
View file @
e8e6498f
...
...
@@ -95,6 +95,7 @@ public enum ResponseResult {
ORDER_CREATE_FORMID_ISNULL
(
"45018"
,
"0元购formId不能为空"
),
ORDER_GET_PAY_EB_CODE_ERROR
(
"45019"
,
"没有配置支付payEbCode"
),
ORDER_WXAPP_NOT_ENABLE_COLLECT_GOODS
(
"45020"
,
"小程序未开通到店自取"
),
ORDER_PARTNER_REFUND_COUNT_ERR
(
"45021"
,
"商户退款数量查询失败"
),
/**
* 优惠券活动
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/OrderRefundRequest.java
View file @
e8e6498f
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
order
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
lombok.Data
;
...
...
@@ -24,6 +25,12 @@ public class OrderRefundRequest extends BaseConfig {
*/
private
Integer
orderStatus
;
// 申请金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额"
private
Long
reqAmount
=
null
;
// 实际金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额"
private
Long
actualAmount
=
null
;
/**
* 退款备注
*/
...
...
@@ -33,4 +40,16 @@ public class OrderRefundRequest extends BaseConfig {
//操作人
private
String
operator
;
/**
* 若为null,默认只做【创建】,售后单状态为【待处理】
若为2,默认做【创建】+【审核通过】,售后单状态为【退货中】
若为5,默认做【创建】+【同意并退货完成】,售后单状态【已退货】
若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
*
*/
private
Integer
createEvent
;
private
AfterSalesType
afterSalesType
;
private
Integer
orderClient
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/QueryStoreRefundCountRequest.java
0 → 100644
View file @
e8e6498f
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
order
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
lombok.Data
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryPartnerRefundCountRequest
* @Package com.freemud.sdk.api.assortment.order.request.order
* @Description:
* @author: pengfei.liu
* @date: 2020/10/26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public
class
QueryStoreRefundCountRequest
extends
BaseConfig
{
/**
* 商户编号
*/
private
String
partnerId
;
/**
* 开始时间戳(单位:秒)
*/
private
Long
startTimestamp
;
/**
* 结束时间戳(单位:秒)
*/
private
Long
endTimestamp
;
/**
* 门店id
*/
List
<
String
>
storeIds
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryPartnerRefundCountResponse.java
0 → 100644
View file @
e8e6498f
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
response
.
order
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryPartnerRefundCountResponse
* @Package com.freemud.sdk.api.assortment.order.response.order
* @Description:
* @author: pegnfei.liu
* @date: 2020/10/27
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public
class
QueryPartnerRefundCountResponse
{
private
String
errcode
;
private
String
errmsg
;
private
PartnerRefundCount
data
;
@NoArgsConstructor
@Data
public
static
class
PartnerRefundCount
{
/**
* 商户编号
*/
private
String
partnerId
;
/**
* 门店退款数量
*/
List
<
StoreRefundCount
>
storeRefundCount
;
}
@NoArgsConstructor
@Data
public
static
class
StoreRefundCount
{
/**
* 门店编号
*/
private
String
storeId
;
/**
* 退款订单数量
*/
private
Long
count
;
}
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/OrderCenterSdkService.java
View file @
e8e6498f
...
...
@@ -108,6 +108,11 @@ public interface OrderCenterSdkService {
BaseOrderResponse
orderReject
(
CancelOrderRequest
cancelOrderRequest
);
/**
* 订单POS拒单 POS
*/
BaseOrderResponse
mcCafeOrderReject
(
CancelOrderRequest
cancelOrderRequest
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
);
/**
* 订单配送中 POS
*/
BaseOrderResponse
orderSend
(
BaseQueryOrderRequest
baseQueryOrderRequest
);
...
...
@@ -339,4 +344,11 @@ public interface OrderCenterSdkService {
*/
BaseOrderResponse
updatePickUpGoodNo
(
OrderModifyRelatingCodeReq
orderModifyRelatingCodeReq
,
String
trackingNo
);
/**
* 查询商户每个门店未退款的订单数量<br/>
* @param request
* @return
*/
QueryPartnerRefundCountResponse
queryRefundCount
(
QueryStoreRefundCountRequest
request
);
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
View file @
e8e6498f
...
...
@@ -5,7 +5,6 @@ import cn.freemud.amqp.MQAction;
import
cn.freemud.amqp.MQMessage
;
import
cn.freemud.amqp.MQService
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.JsonUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
...
...
@@ -30,11 +29,13 @@ import com.freemud.application.sdk.api.membercenter.response.GetMemberExtendInfo
import
com.freemud.application.sdk.api.membercenter.service.MemberCenterService
;
import
com.freemud.application.sdk.api.membercenter.service.MemberPropertyService
;
import
com.freemud.application.sdk.api.membercenter.service.MemberScoreService
;
import
com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant
;
import
com.freemud.application.sdk.api.ordercenter.enums.*
;
import
com.freemud.application.sdk.api.ordercenter.request.*
;
import
com.freemud.application.sdk.api.ordercenter.request.create.*
;
import
com.freemud.application.sdk.api.ordercenter.response.*
;
import
com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService
;
...
...
@@ -59,7 +60,6 @@ import com.freemud.application.sdk.api.structure.MessageCenterType;
import
com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto
;
import
com.freemud.application.sdk.api.structure.service.MessageCenterClient
;
import
com.freemud.sdk.api.assortment.order.adapter.*
;
import
com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant
;
import
com.freemud.sdk.api.assortment.order.entities.OrderEditInfo
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest
;
...
...
@@ -71,16 +71,18 @@ import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo
;
import
com.google.gson.Gson
;
import
com.mysql.jdbc.log.LogUtils
;
import
lombok.extern.log4j.Log4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.stereotype.Service
;
import
java.sql.Timestamp
;
import
java.time.Instant
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
static
com
.
freemud
.
application
.
sdk
.
api
.
membercenter
.
constant
.
InterfaceAddressConstant
.
MEMBER_EXTEND_INFO
;
...
...
@@ -500,22 +502,32 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
public
BaseOrderResponse
orderRefund
(
OrderRefundRequest
orderRefundRequest
)
{
CreateAfterSalesOrder
request
=
new
CreateAfterSalesOrder
();
request
.
setPartnerId
(
orderRefundRequest
.
getPartnerId
());
request
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
());
//实际金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额
request
.
setActualAmount
(
null
);
if
(
null
!=
orderRefundRequest
.
getOrderClient
())
{
request
.
setOrderClient
(
orderRefundRequest
.
getOrderClient
());
}
else
{
request
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
());
}
if
(
orderRefundRequest
.
getActualAmount
()
!=
null
)
request
.
setActualAmount
(
orderRefundRequest
.
getActualAmount
());
//申请金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额
request
.
setReqAmount
(
null
);
request
.
setReqAmount
(
orderRefundRequest
.
getReqAmount
()
);
//是否有退货货物
request
.
setHasCargo
(
false
);
//传入的售后单类型为:2:售中用户取消 8:售后申请
request
.
setAfterSalesType
(
AfterSalesType
.
USER_CANCEL
.
getIndex
());
if
(
OldOrderStatus
.
COMPLETE
.
getCode
().
equals
(
orderRefundRequest
.
getOrderStatus
()))
{
if
(
null
!=
orderRefundRequest
.
getAfterSalesType
())
{
request
.
setAfterSalesType
(
orderRefundRequest
.
getAfterSalesType
().
getIndex
());
}
else
if
(
OldOrderStatus
.
COMPLETE
.
getCode
().
equals
(
orderRefundRequest
.
getOrderStatus
()))
{
request
.
setAfterSalesType
(
AfterSalesType
.
USER_SALE_RETURN
.
getIndex
());
}
else
{
request
.
setAfterSalesType
(
AfterSalesType
.
USER_CANCEL
.
getIndex
());
}
request
.
setOrderCode
(
orderRefundRequest
.
getOrderId
());
request
.
setReqRemark
(
orderRefundRequest
.
getRemark
());
request
.
setAfterSalesReason
(
orderRefundRequest
.
getReason
());
request
.
setOperator
(
orderRefundRequest
.
getOperator
());
if
(
null
!=
orderRefundRequest
.
getCreateEvent
())
{
request
.
setCreateEvent
(
orderRefundRequest
.
getCreateEvent
());
}
// 查询门店服务配置,退单模式为2为自动退款,判断自动退款时间,设置为0则不传入timeout,
StoreResponse
.
Configuration
configuration
=
getStoreAutoConfiguration
(
orderRefundRequest
.
getPartnerId
(),
orderRefundRequest
.
getStoreId
(),
orderRefundRequest
.
getTrackingNo
());
if
(
configuration
!=
null
&&
ObjectUtils
.
equals
(
"2"
,
configuration
.
getAutoChargebackOrderType
())
...
...
@@ -771,6 +783,64 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
}
@Override
public
BaseOrderResponse
mcCafeOrderReject
(
CancelOrderRequest
cancelOrderRequest
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
if
(
CollectionUtils
.
isEmpty
(
orderBean
.
getRefundList
()))
{
OrderCancelReq
request
=
new
OrderCancelReq
();
//商户号必传
request
.
setPartnerId
(
cancelOrderRequest
.
getPartnerId
());
request
.
setOrderCode
(
cancelOrderRequest
.
getOrderId
());
//售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单
// 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消,
request
.
setAfterSalesType
(
cancelOrderRequest
.
getAfterSalesType
().
getIndex
()
==
null
?
1
:
cancelOrderRequest
.
getAfterSalesType
().
getIndex
());
request
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
());
request
.
setCancelReason
(
cancelOrderRequest
.
getReason
());
//若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
request
.
setCreateEvent
(
4
);
request
.
setOperator
(
cancelOrderRequest
.
getOperator
());
request
.
setAfterSerialNo
(
cancelOrderRequest
.
getRefundSerialNo
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
response
=
orderSdkService
.
cancelOrder
(
request
,
cancelOrderRequest
.
getTrackingNo
());
return
orderSdkAdapter
.
convent2BaseOrderResponse
(
response
);
}
else
{
for
(
int
i
=
0
;
i
<
orderBean
.
getRefundList
().
size
();
i
++)
{
if
(
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
orderBean
.
getRefundList
().
get
(
i
).
getStatus
()))
{
AfterSalesOperateReq
request
=
new
AfterSalesOperateReq
();
request
.
setOrderCode
(
cancelOrderRequest
.
getOrderId
());
request
.
setPartnerId
(
cancelOrderRequest
.
getPartnerId
());
request
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
());
request
.
setAfterSalesCode
(
orderBean
.
getRefundList
().
get
(
i
).
getRid
());
request
.
setAfterSerialNo
(
cancelOrderRequest
.
getRefundSerialNo
());
request
.
setAdultRemark
(
cancelOrderRequest
.
getReason
());
request
.
setOperator
(
cancelOrderRequest
.
getOperator
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
response
=
orderSdkService
.
adultApproveWithRefundComplete
(
request
,
cancelOrderRequest
.
getTrackingNo
());
return
orderSdkAdapter
.
convent2BaseOrderResponse
(
response
);
}
if
(
RefundStatus
.
COMPLETE_REFUND
.
getCode
().
equals
(
orderBean
.
getRefundList
().
get
(
i
).
getStatus
()))
{
BaseOrderResponse
response
=
new
BaseOrderResponse
();
response
.
setErrcode
(
100
);
response
.
setErrmsg
(
"success"
);
return
response
;
}
}
OrderRefundRequest
orderRefundRequest
=
new
OrderRefundRequest
();
orderRefundRequest
.
setPartnerId
(
cancelOrderRequest
.
getPartnerId
());
orderRefundRequest
.
setStoreId
(
cancelOrderRequest
.
getStoreId
());
orderRefundRequest
.
setOrderId
(
cancelOrderRequest
.
getOrderId
());
orderRefundRequest
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
());
orderRefundRequest
.
setAfterSalesType
(
cancelOrderRequest
.
getAfterSalesType
().
getIndex
()
==
null
?
AfterSalesType
.
PARTNER_REJECT
:
cancelOrderRequest
.
getAfterSalesType
());
orderRefundRequest
.
setReason
(
cancelOrderRequest
.
getReason
());
orderRefundRequest
.
setRemark
(
cancelOrderRequest
.
getReqRemark
());
orderRefundRequest
.
setOperator
(
cancelOrderRequest
.
getOperator
());
orderRefundRequest
.
setOrderStatus
(
orderBean
.
getStatus
());
orderRefundRequest
.
setCreateEvent
(
4
);
BaseOrderResponse
baseOrderResponse
=
orderRefund
(
orderRefundRequest
);
return
baseOrderResponse
;
}
}
@Override
public
BaseOrderResponse
orderSend
(
BaseQueryOrderRequest
baseQueryOrderRequest
)
{
POSOrderOperationBaseReq
request
=
new
POSOrderOperationBaseReq
();
request
.
setOrderCode
(
baseQueryOrderRequest
.
getOrderId
());
...
...
@@ -1643,6 +1713,130 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return
orderSdkAdapter
.
convent2UpdatePickUpGoodNo
(
orderSdkService
.
updatePickUpGoodNo
(
orderModifyRelatingCodeReq
,
trackingNo
));
}
@Override
public
QueryPartnerRefundCountResponse
queryRefundCount
(
QueryStoreRefundCountRequest
request
)
{
QueryPartnerRefundCountResponse
queryPartnerRefundCountResponse
=
new
QueryPartnerRefundCountResponse
();
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
// 分页查询es的服务-待处理的退款单
QueryAfterSalesOrderConditionsReq
orderQueryRequestDto
=
new
QueryAfterSalesOrderConditionsReq
();
orderQueryRequestDto
.
setPartnerId
(
request
.
getPartnerId
());
orderQueryRequestDto
.
setStoreIds
(
request
.
getStoreIds
());
// 订单的创建时间使用传过来的时间前推2天
orderQueryRequestDto
.
setStartTimestamp
(
request
.
getStartTimestamp
()
-
172800
);
orderQueryRequestDto
.
setEndTimestamp
(
request
.
getEndTimestamp
());
orderQueryRequestDto
.
setStartAfterCreateTimestamp
(
request
.
getStartTimestamp
());
orderQueryRequestDto
.
setEndAfterCreateTimestamp
(
request
.
getEndTimestamp
());
List
<
Byte
>
afterSalesStatusList
=
new
ArrayList
<>();
afterSalesStatusList
.
add
(
new
Byte
(
"1"
));
orderQueryRequestDto
.
setAfterSalesStatusList
(
afterSalesStatusList
);
orderQueryRequestDto
.
setPageNum
(
null
);
// pageNum 不传表示滚动查询
orderQueryRequestDto
.
setPageSize
(
500
);
AfterSalesListResp
pageResponse
=
null
;
try
{
pageResponse
=
orderDownLoadSdkService
.
queryAfterSalesOrderConditions
(
orderQueryRequestDto
,
trackingNo
);
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"查询ES服务商户门店退款订单数量ERR"
,
InterfaceAddressConstant
.
QUERY_AFT_SALE_ORDER_LIST
,
request
,
e
);
queryPartnerRefundCountResponse
.
setErrcode
(
pageResponse
.
getCode
());
queryPartnerRefundCountResponse
.
setErrmsg
(
pageResponse
.
getMessage
());
return
queryPartnerRefundCountResponse
;
}
if
(
null
==
pageResponse
||
!
Objects
.
equals
(
RESPONSE_SUCCESS_STR
,
pageResponse
.
getCode
()))
{
ApiLog
.
info
(
"查询ES服务商户门店退款订单数量ERR"
,
pageResponse
.
getCode
(),
pageResponse
.
getMessage
());
queryPartnerRefundCountResponse
.
setErrcode
(
pageResponse
.
getCode
());
queryPartnerRefundCountResponse
.
setErrmsg
(
pageResponse
.
getMessage
());
return
queryPartnerRefundCountResponse
;
}
List
<
Map
<
String
,
Long
>>
storeCountList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isEmpty
(
pageResponse
.
getResult
())){
ApiLog
.
info
(
"未查询到ES服务商户门店退款订单数量"
,
""
,
""
);
queryPartnerRefundCountResponse
.
setErrcode
(
pageResponse
.
getCode
());
queryPartnerRefundCountResponse
.
setErrmsg
(
pageResponse
.
getMessage
());
return
buildQueryPartnerRefundCountResponse
(
request
,
storeCountList
);
}
// 统计门店退款单数量
statisticsCount
(
pageResponse
.
getResult
(),
storeCountList
);
QueryOrderByScrollRequest
scrollRequest
=
new
QueryOrderByScrollRequest
();
scrollRequest
.
setScrollId
(
pageResponse
.
getScrollId
());
scrollRequest
.
setVer
(
1
);
try
{
while
(
true
)
{
BaseDownLoadResponse
<
List
<
AfterSalesOrderResp
>>
scrollResponse
=
orderDownLoadSdkService
.
queryAfterSalesOrderByScrollId
(
scrollRequest
,
LogThreadLocal
.
getTrackingNo
());
if
(!
Objects
.
equals
(
RESPONSE_SUCCESS_STR
,
scrollResponse
.
getCode
()))
{
break
;
}
if
(
CollectionUtils
.
isEmpty
(
scrollResponse
.
getResult
()))
{
break
;
}
statisticsCount
(
pageResponse
.
getResult
(),
storeCountList
);
scrollRequest
.
setScrollId
(
scrollResponse
.
getScrollId
());
}
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"查询ES服务商户门店退款订单数量ERR"
,
InterfaceAddressConstant
.
QUERY_AFT_SALE_ORDER_LIST
,
request
,
e
);
queryPartnerRefundCountResponse
=
new
QueryPartnerRefundCountResponse
();
queryPartnerRefundCountResponse
.
setErrcode
(
pageResponse
.
getCode
());
queryPartnerRefundCountResponse
.
setErrmsg
(
pageResponse
.
getMessage
());
return
queryPartnerRefundCountResponse
;
}
return
buildQueryPartnerRefundCountResponse
(
request
,
storeCountList
);
}
/**
* 统计每个门店的退款订单数量
* @param afterSalesOrderResp
* @param storeCountList
*/
private
void
statisticsCount
(
List
<
AfterSalesOrderResp
>
afterSalesOrderResp
,
List
<
Map
<
String
,
Long
>>
storeCountList
){
Map
<
String
,
Long
>
coutnMap
=
afterSalesOrderResp
.
stream
().
collect
(
Collectors
.
groupingBy
(
AfterSalesOrderResp:
:
getStoreId
,
Collectors
.
counting
()));
storeCountList
.
add
(
coutnMap
);
}
/**
* 求和每个门店的退款订单数量
* @param storeId
* @param storeCountList
*/
private
Long
sumCount
(
String
storeId
,
List
<
Map
<
String
,
Long
>>
storeCountList
){
Long
sumCount
=
0L
;
for
(
Map
<
String
,
Long
>
map
:
storeCountList
){
Long
count
=
map
.
get
(
storeId
);
if
(
null
!=
count
){
sumCount
+=
count
;
}
}
return
sumCount
;
}
/**
* 构建查询商户退款数量返回值
* @param request
* @param storeCountList
*/
private
QueryPartnerRefundCountResponse
buildQueryPartnerRefundCountResponse
(
QueryStoreRefundCountRequest
request
,
List
<
Map
<
String
,
Long
>>
storeCountList
){
QueryPartnerRefundCountResponse
queryPartnerRefundCountResponse
=
new
QueryPartnerRefundCountResponse
();
QueryPartnerRefundCountResponse
.
PartnerRefundCount
data
=
new
QueryPartnerRefundCountResponse
.
PartnerRefundCount
();
data
.
setPartnerId
(
request
.
getPartnerId
());
List
<
QueryPartnerRefundCountResponse
.
StoreRefundCount
>
storeRefundCount
=
new
ArrayList
<>();
for
(
String
storeId
:
request
.
getStoreIds
()){
QueryPartnerRefundCountResponse
.
StoreRefundCount
store
=
new
QueryPartnerRefundCountResponse
.
StoreRefundCount
();
store
.
setStoreId
(
storeId
);
store
.
setCount
(
sumCount
(
storeId
,
storeCountList
));
storeRefundCount
.
add
(
store
);
}
data
.
setStoreRefundCount
(
storeRefundCount
);
queryPartnerRefundCountResponse
.
setData
(
data
);
queryPartnerRefundCountResponse
.
setErrcode
(
RESPONSE_SUCCESS_STR
);
queryPartnerRefundCountResponse
.
setErrmsg
(
""
);
return
queryPartnerRefundCountResponse
;
}
private
void
setTimeout
(
BaseQueryOrderRequest
baseQueryOrderRequest
,
POSOrderOperationBaseReq
request
){
String
partnerId
=
baseQueryOrderRequest
.
getPartnerId
();
String
storeCode
=
baseQueryOrderRequest
.
getShopId
();
...
...
order-application-service/src/main/java/cn/freemud/adapter/DeliveryAdapter.java
View file @
e8e6498f
...
...
@@ -18,6 +18,7 @@ import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import
com.freemud.sdk.api.assortment.order.request.order.CreateOrderProductRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderSpecialExtraAttrRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Component
;
...
...
@@ -191,14 +192,20 @@ public class DeliveryAdapter {
String
attr
=
""
;
for
(
OrderSpecialExtraAttrRequest
special
:
extInfo
.
getSpecialAttrs
())
{
if
(
special
.
getAttributeName
().
indexOf
(
"冰"
)
>=
0
)
{
attr
+=
special
.
getAttributeName
()+
","
;
attr
=
special
.
getAttributeName
();
break
;
}
}
if
(
attr
.
length
()
>
0
)
{
attr
=
attr
.
substring
(
0
,
attr
.
length
()-
1
);
productName
+=
"("
+
attr
+
")"
;
}
}
if
(
CollectionUtils
.
isNotEmpty
(
productList
.
getMaterialProduct
()))
{
for
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
ProductBean
material
:
productList
.
getMaterialProduct
())
{
productName
+=
"/"
+
material
.
getSpecificationName
();
}
}
deliveryProductInfo
.
setProductName
(
productName
);
deliveryProductInfo
.
setProductNumber
(
productList
.
getNumber
());
deliveryProductInfo
.
setProductPrice
(
productList
.
getSalePrice
().
intValue
());
...
...
@@ -221,14 +228,20 @@ public class DeliveryAdapter {
String
attr
=
""
;
for
(
OrderSpecialExtraAttrRequest
special
:
extInfoCombo
.
getSpecialAttrs
())
{
if
(
special
.
getAttributeName
().
indexOf
(
"冰"
)
>=
0
)
{
attr
+=
special
.
getAttributeName
()+
","
;
attr
=
special
.
getAttributeName
();
break
;
}
}
if
(
attr
.
length
()
>
0
)
{
attr
=
attr
.
substring
(
0
,
attr
.
length
()-
1
);
productNameCombo
+=
"("
+
attr
+
")"
;
}
}
if
(
CollectionUtils
.
isNotEmpty
(
comboProduct
.
getMaterialProduct
()))
{
for
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
ProductBean
material
:
comboProduct
.
getMaterialProduct
())
{
productNameCombo
+=
"/"
+
material
.
getSpecificationName
();
}
}
deliveryComboProductInfo
.
setProductName
(
productNameCombo
);
deliveryComboProductInfo
.
setProductNumber
(
comboProduct
.
getNumber
()/
productList
.
getNumber
());
deliveryComboProductInfo
.
setProductPrice
(
comboProduct
.
getSalePrice
().
intValue
());
...
...
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
e8e6498f
...
...
@@ -34,6 +34,7 @@ import cn.freemud.enums.OrderSourceType;
import
cn.freemud.enums.OrderType
;
import
cn.freemud.enums.PayStatus
;
import
cn.freemud.enums.QueryOrderStatus
;
import
cn.freemud.enums.RefundStatus
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
...
...
@@ -113,6 +114,8 @@ public class OrderAdapter {
@Value
(
"${mccafe.partner.id}"
)
private
String
mcCafePartnerId
;
@Value
(
"${mcCafe.refund.interval}"
)
private
String
mccafeRefundInterval
;
@Value
(
"${saas.reverseNotifyiDcUrl}"
)
private
String
reverseNotifyiDcUrl
;
...
...
@@ -1209,7 +1212,36 @@ public class OrderAdapter {
responseVo
.
setModifiedTime
(
DateUtil
.
convert2String
(
new
Date
(
ordersBean
.
getGmtModified
()),
"yyyy-MM-dd HH:mm:ss"
));
}
if
(
ordersBean
.
getHasRefund
()
!=
null
&&
ordersBean
.
getHasRefund
()
&&
CollectionUtils
.
isNotEmpty
(
ordersBean
.
getRefundList
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
ordersBean
.
getRefundList
()))
{
if
(
mcCafePartnerId
.
equals
(
ordersBean
.
getCompanyId
()))
{
responseVo
.
setRefundIntervalTime
(
Long
.
valueOf
(
mccafeRefundInterval
));
QueryOrdersResponse
.
DataBean
.
OrderBean
.
RefundBean
latestRefundBean
=
ordersBean
.
getRefundList
().
get
(
0
);
for
(
int
i
=
0
;
i
<
ordersBean
.
getRefundList
().
size
();
i
++)
{
QueryOrdersResponse
.
DataBean
.
OrderBean
.
RefundBean
refundBean
=
ordersBean
.
getRefundList
().
get
(
i
);
if
(
RefundStatus
.
COMPLETE_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
())
||
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
responseVo
.
setRid
(
refundBean
.
getRid
());
responseVo
.
setRefundStatus
(
refundBean
.
getStatus
());
responseVo
.
setRefundStatusDesc
(
Optional
.
ofNullable
(
RefundStatus
.
getByCode
(
refundBean
.
getStatus
()))
.
map
(
RefundStatus:
:
getDesc
).
orElse
(
""
));
responseVo
.
setRefundReason
(
refundBean
.
getReason
());
String
refundCreateTime
=
DateUtil
.
convert2String
(
new
Date
(
Long
.
parseLong
(
refundBean
.
getCreateTime
())),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
responseVo
.
setRefundCreateTime
(
refundCreateTime
);
break
;
}
else
{
if
(
new
Date
(
Long
.
valueOf
(
refundBean
.
getCreateTime
())).
after
(
new
Date
(
Long
.
valueOf
(
latestRefundBean
.
getCreateTime
()))))
{
latestRefundBean
=
refundBean
;
}
}
}
if
(
StringUtils
.
isBlank
(
responseVo
.
getRid
()))
{
if
(
new
Date
().
getTime
()
-
Long
.
parseLong
(
latestRefundBean
.
getCreateTime
())
>
Long
.
valueOf
(
mccafeRefundInterval
))
{
responseVo
.
setAfterRefundInterval
(
true
);
}
}
}
else
{
QueryOrdersResponse
.
DataBean
.
OrderBean
.
RefundBean
refundBean
=
ordersBean
.
getRefundList
().
get
(
0
);
responseVo
.
setRid
(
refundBean
.
getRid
());
responseVo
.
setRefundStatus
(
refundBean
.
getStatus
());
...
...
@@ -1219,6 +1251,14 @@ public class OrderAdapter {
String
refundCreateTime
=
DateUtil
.
convert2String
(
new
Date
(
Long
.
parseLong
(
refundBean
.
getCreateTime
())),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
responseVo
.
setRefundCreateTime
(
refundCreateTime
);
}
}
else
{
responseVo
.
setAfterRefundInterval
(
true
);
}
//如果是已取消、拒单、已完成的订单,则设置不能申请取消订单
if
(
OrderStatus
.
REFUSE
.
getCode
().
equals
(
ordersBean
.
getStatus
())
||
OrderStatus
.
CALCEL
.
getCode
().
equals
(
ordersBean
.
getStatus
())
||
OrderStatus
.
COMPLETE
.
getCode
().
equals
(
ordersBean
.
getStatus
()))
{
responseVo
.
setAfterRefundInterval
(
false
);
}
//商品信息转换
convent2ProductVos
(
ordersBean
.
getProductList
(),
responseVo
);
...
...
@@ -1238,6 +1278,7 @@ public class OrderAdapter {
Long
promotionAmount
=
0L
;
Long
deliveryAmount
=
0L
;
Long
packageAmount
=
0L
;
Long
originalDeliveryAmount
=
0L
;
//限时特价优惠金额
Long
discountLimitAmount
=
0L
;
Long
couponAmount
=
0L
;
...
...
@@ -1264,6 +1305,7 @@ public class OrderAdapter {
if
(
OrderAccountType
.
DELIVERY_AMOUNT
.
getCode
().
equals
(
accountBean
.
getType
()))
{
//deliveryAmount = accountBean.getPrice();
deliveryAmount
=
null
!=
accountBean
.
getActualCostAmount
()
?
accountBean
.
getActualCostAmount
()
:
accountBean
.
getPrice
();
originalDeliveryAmount
=
accountBean
.
getPrice
();
}
if
(
OrderAccountType
.
PACK_AMOUNT
.
getCode
().
equals
(
accountBean
.
getType
()))
{
packageAmount
=
accountBean
.
getPrice
();
...
...
@@ -1286,9 +1328,13 @@ public class OrderAdapter {
customerScorePrompt
=
decimalFormat
.
format
(
customerScoreAmount
/
100.0
);
// customerScorePrompt = "积分抵扣-¥" + customerScoreAmountStr;
}
if
(
Integer
.
valueOf
(
99
).
equals
(
accountBean
.
getType
()))
{
responseVo
.
setFreightCouponName
(
accountBean
.
getName
());
}
}
}
responseVo
.
setDeliveryAmount
(
deliveryAmount
);
responseVo
.
setOriginalDeliveryAmount
(
originalDeliveryAmount
);
responseVo
.
setPackageAmount
(
packageAmount
);
responseVo
.
setDiscountLimitAmount
(
discountLimitAmount
);
responseVo
.
setFullDiscountAmount
(
fullDiscountAmount
);
...
...
@@ -2013,7 +2059,8 @@ public class OrderAdapter {
discountTotalAmount
=
discountTotalAmount
+
productDiscount
.
getDiscountAmount
()*
productDiscount
.
getDiscountQty
();
if
(
OrderAccountType
.
PRODUCT_COUPON
.
getCode
().
equals
(
productDiscount
.
getDiscountType
()))
{
hasProductCoupon
=
true
;
if
(
"啡常月享卡"
.
equals
(
productDiscount
.
getDiscountDesc
()))
{
Integer
extendType
=
StringUtils
.
isBlank
(
productDiscount
.
getAddInfo
())?
null
:
JSON
.
parseObject
(
productDiscount
.
getAddInfo
()).
getInteger
(
"extendType"
);
if
(
null
!=
extendType
&&
(
4
==
extendType
||
5
==
extendType
))
{
productVo
.
setCouponName
(
productDiscount
.
getDiscountDesc
());
}
else
{
productVo
.
setName
(
productDiscount
.
getDiscountDesc
());
...
...
@@ -2263,16 +2310,17 @@ public class OrderAdapter {
}
});
createOrderProductDemoDto
.
setComboProduct
(
comboProducts
);
}
else
if
(
CollectionUtils
.
isNotEmpty
(
cartGoodsDetailDto
.
getMaterialList
()))
{
//加料商品
createOrderProductDemoDto
.
setProductType
(
ProductType
.
MATERIALPRODUCT_UPPRICE
.
getCode
());
List
<
CreateOrderProductRequest
>
materialProducts
=
new
ArrayList
<>();
cartGoodsDetailDto
.
getMaterialList
().
forEach
(
product
->
{
materialProducts
.
add
(
convent2MCCafeOrderProductDemo
(
product
,
ProductType
.
LITTLE_MATERIAL_PRODUCT
.
getCode
()));
});
createOrderProductDemoDto
.
setMaterialProduct
(
materialProducts
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
cartGoodsDetailDto
.
getMaterialList
()))
{
//加料商品
createOrderProductDemoDto
.
setProductType
(
ProductType
.
MATERIALPRODUCT_UPPRICE
.
getCode
());
List
<
CreateOrderProductRequest
>
materialProducts
=
new
ArrayList
<>();
cartGoodsDetailDto
.
getMaterialList
().
forEach
(
product
->
{
materialProducts
.
add
(
convent2MCCafeOrderProductDemo
(
product
,
ProductType
.
LITTLE_MATERIAL_PRODUCT
.
getCode
()));
});
createOrderProductDemoDto
.
setMaterialProduct
(
materialProducts
);
}
return
createOrderProductDemoDto
;
}
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/QueryOrdersResponseDto.java
View file @
e8e6498f
...
...
@@ -449,6 +449,13 @@ public class QueryOrdersResponseDto {
*/
private
Integer
status
;
private
String
remark
;
//商家退单审核 备注
private
String
decisionReason
;
//创建时间
private
String
createTime
;
}
@NoArgsConstructor
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/ProductVo.java
View file @
e8e6498f
...
...
@@ -42,6 +42,8 @@ public class ProductVo {
* 商品spu名称
*/
private
String
spuName
;
private
String
couponName
;
/**
* 商品的规格信息加属性信息
*/
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/QueryOrderResponseVo.java
View file @
e8e6498f
...
...
@@ -99,6 +99,14 @@ public class QueryOrderResponseVo {
*/
private
Long
deliveryAmount
;
/**
* 配送费原价
*/
private
Long
originalDeliveryAmount
;
/**
* 运费券名称
*/
private
String
freightCouponName
;
/**
* 限时折扣优惠金额
*/
private
Long
discountLimitAmount
;
...
...
@@ -261,6 +269,14 @@ public class QueryOrderResponseVo {
* 订单是否可申请退款 可申请退款条件 :1 .支付未接单 2. 已接单,制作完成,配送中 ,用户可申请退款
*/
private
Boolean
enableRefund
;
/**
* 订单是否可再次申请退款 必须经过规定的间隔时间才可以再次申请
*/
private
Boolean
afterRefundInterval
=
false
;
/**
* 订单是否可再次申请退款 必须经过规定的间隔时间才可以再次申请
*/
private
Long
refundIntervalTime
=
0
l
;
private
List
<
ProductVo
>
products
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/MCCafeOrderServiceImpl.java
View file @
e8e6498f
...
...
@@ -131,6 +131,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Value
(
"${mcCafe.reverseNotifyiDcUrl}"
)
private
String
reverseNotifyiDcUrl
;
@Value
(
"${mcCafe.refund.interval}"
)
private
String
mccafeRefundInterval
;
@Value
(
"${program.backorders_change_order_status_consumer_queue}"
)
private
String
backOrdersChangeOrderStatusConsumerQueue
;
@Value
(
"${program.backorders_notify_activity_exchange}"
)
...
...
@@ -1069,13 +1071,22 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
if
(
enableRefundCodes
.
contains
(
orderBean
.
getStatus
())
&&
PayStatus
.
HAVE_PAID
.
getCode
().
equals
(
orderBean
.
getPayStatus
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getRefundList
()))
{
OrderBean
.
RefundBean
refundBean
=
orderBean
.
getRefundList
().
get
(
0
);
if
(
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"商家正在处理中,请稍后……"
);
}
if
(
RefundStatus
.
REFUSE_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"您的申请已被商家拒绝,请联系门店沟通。"
);
for
(
int
i
=
0
;
i
<
orderBean
.
getRefundList
().
size
();
i
++)
{
OrderBean
.
RefundBean
refundBean
=
orderBean
.
getRefundList
().
get
(
i
);
if
(
RefundStatus
.
COMPLETE_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单已退款完成,无法再次退款"
);
}
if
(
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"商家正在处理中,请稍后……"
);
}
if
(
new
Date
().
getTime
()
-
Long
.
valueOf
(
refundBean
.
getCreateTime
())
<
Long
.
valueOf
(
mccafeRefundInterval
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"退款请求太频繁,请稍后再试"
);
}
}
// if (RefundStatus.REFUSE_REFUND.getCode().equals(refundBean.getStatus())) {
// return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "您的申请已被商家拒绝,请联系门店沟通。");
// }
}
// List<AssortmentOpenPlatformPartnerWxappConfig> partnerWxappConfigs = cacheOpenPlatformPartnerWxappConfigManager.cacheSelectDefaultPage(userInfo.getWxAppId(), "2");
...
...
@@ -1114,23 +1125,23 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
());
}
else
if
(
OldOrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getOrderType
())
&&
CancelDeliveryResponseDto
.
hasCollectMsg
.
equals
(
deliveryBaseResponse
.
getErrmsg
()))
{
CancelOrderRequest
cancelOrderRequest
=
new
CancelOrder
Request
();
cancelOrder
Request
.
setPartnerId
(
orderBean
.
getCompanyId
());
cancelOrder
Request
.
setStoreId
(
orderBean
.
getShopId
());
cancelOrder
Request
.
setOrderId
(
orderBean
.
getOid
());
cancelOrderRequest
.
setOrderClient
(
orderAdapter
.
getNewOrderClient
(
orderBean
.
getSource
()
));
//传入的售后单类型为:2:售中用户取消 8:售后申请
cancelOrderRequest
.
setAfterSalesType
(
AfterSalesType
.
USER_CANCEL
);
cancelOrderRequest
.
setReason
(
orderRefundVo
.
getReason
());
cancelOrderRequest
.
setReqRemark
(
orderRefundVo
.
getRemarks
());
cancelOrderRequest
.
setOperator
(
orderBean
.
getUserName
());
cancelOrderRequest
.
setTrackingNo
(
LogTreadLocal
.
getTrackingNo
());
cancelOrderRequest
.
setRefundDeliveryAmount
(
isRefundDeliveryFee
);
BaseOrderResponse
baseResponseDto
=
orderCenterSdkService
.
orderCancel
(
cancelOrderRequest
);
if
(
!
RESPONSE_SUCCESS_CODE
.
equals
(
baseResponseDto
.
getErrcode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
baseResponseDto
.
getErrmsg
()
);
OrderRefundRequest
orderRefundRequest
=
new
OrderRefund
Request
();
orderRefund
Request
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderRefund
Request
.
setStoreId
(
orderBean
.
getShopId
());
orderRefund
Request
.
setOrderId
(
orderBean
.
getOid
());
orderRefundRequest
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
(
));
orderRefundRequest
.
setAfterSalesType
(
AfterSalesType
.
USER_CANCEL
);
orderRefundRequest
.
setReason
(
orderRefundVo
.
getReason
()
);
orderRefundRequest
.
setRemark
(
orderRefundVo
.
getRemarks
());
orderRefundRequest
.
setOperator
(
orderBean
.
getUserName
());
orderRefundRequest
.
setOrderStatus
(
orderBean
.
getStatus
());
orderRefundRequest
.
setActualAmount
(
orderBean
.
getAmount
());
orderRefundRequest
.
setReqAmount
(
orderBean
.
getAmount
()
);
BaseOrderResponse
baseOrderResponse
=
orderCenterSdkService
.
orderRefund
(
orderRefundRequest
);
if
(
baseOrderResponse
==
null
||
baseOrderResponse
.
getData
()
==
null
||
!
ObjectUtils
.
equals
(
ResponseConstant
.
SUCCESS_RESPONSE_CODE
,
baseOrderResponse
.
getErrcode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"创建售后单失败"
);
}
// if (orderBean.getAmount() > 0) {
// sendPosMessage(partnerId, orderBean.getShopId());
...
...
order-application-service/src/main/java/cn/freemud/service/mccafe/CouponClientService.java
View file @
e8e6498f
...
...
@@ -15,34 +15,13 @@ import java.util.List;
public
interface
CouponClientService
{
CouponRedeemResponse
redeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponRedeemResponse
redeem
(
MCCafeCouponRequest
mcCafeCouponRequest
);
CouponRedeemResponse
redeemBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
List
<
CouponRedeemResponse
>
redeemBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
);
CouponRedeemResponse
cancelRedeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponQueryResponse
query
(
MCCafeCouponRequest
mcCafeCouponRequest
);
McdNetBatchQueryResponse
batchQuery
(
MCCafeCouponRequest
mcCafeCouponRequest
);
CouponBaseResponse
lock
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
CouponBaseResponse
lockBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
List
<
CouponBaseResponse
>
lockBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
);
CouponBaseResponse
unlock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
/**
* 移除卡包
* @param orderBean
* @return
*/
BaseResponse
callbackNotify
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
;
}
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
View file @
e8e6498f
...
...
@@ -61,106 +61,11 @@ public class CouponClientServiceImpl implements CouponClientService {
private
EmailAlertService
emailAlertService
;
@Override
public
CouponRedeemResponse
redeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
Optional
<
CreateOrderAccountRequest
>
accountRequest
=
accounts
.
stream
().
filter
(
account
->
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
)).
findFirst
();
if
(!
accountRequest
.
isPresent
()
||
accountRequest
.
get
().
getPrice
()
==
0
)
{
return
null
;
}
CreateOrderAccountRequest
accountBean
=
accountRequest
.
get
();
List
<
MCCafeProductRedeemVo
>
products
=
new
ArrayList
<>();
//商品券核销核销参数
if
(
QueryOrderAccountType
.
PRODUCT_COUPON
.
equals
(
accountBean
.
getAccountType
()))
{
for
(
int
i
=
0
;
i
<
orderBean
.
getProductList
().
size
();
i
++)
{
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
productBean
=
orderBean
.
getProductList
().
get
(
i
);
String
pid
=
StringUtils
.
isNotBlank
(
productBean
.
getSpecification
())
?
productBean
.
getSpecification
()
:
productBean
.
getProductId
();
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
orderBean
.
getProductList
().
get
(
i
).
getDiscountList
()))
{
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
.
ProductDiscount
>
discounts
=
orderBean
.
getProductList
().
get
(
i
).
getDiscountList
().
stream
().
filter
(
productDiscount
->
productDiscount
.
getDiscountId
().
equals
(
accountBean
.
getAccountId
())).
collect
(
Collectors
.
toList
());
for
(
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
.
ProductDiscount
productDiscount
:
discounts
)
{
if
(
productDiscount
.
getDiscountType
()
==
null
||
productDiscount
.
getDiscountType
()
==
0
)
{
continue
;
}
MCCafeProductRedeemVo
mcCafeProductRedeemVo
=
new
MCCafeProductRedeemVo
();
mcCafeProductRedeemVo
.
setPid
(
pid
);
mcCafeProductRedeemVo
.
setKeyProductCode
(
productBean
.
getCustomerCode
());
mcCafeProductRedeemVo
.
setCustomer_code
(
productBean
.
getCustomerCode
());
mcCafeProductRedeemVo
.
setConsume_num
(
productDiscount
.
getDiscountQty
());
mcCafeProductRedeemVo
.
setSeq
(
i
+
1
);
products
.
add
(
mcCafeProductRedeemVo
);
}
}
}
}
MCCafeCouponRequest
mcCafeCouponRequest
=
new
MCCafeCouponRequest
();
mcCafeCouponRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeCouponRequest
.
setReqtype
(
CouponReqTypeEnum
.
REDEEM
.
getCode
());
mcCafeCouponRequest
.
setPartnerId
(
Integer
.
parseInt
(
orderBean
.
getCompanyId
()));
mcCafeCouponRequest
.
setStore_id
(
orderBean
.
getShopId
());
mcCafeCouponRequest
.
setStation_id
(
"-1"
);
mcCafeCouponRequest
.
setOperator_id
(
"-1"
);
// 订单号
mcCafeCouponRequest
.
setTrans_id
(
orderBean
.
getOid
());
mcCafeCouponRequest
.
setChannel
(
OrderClientType
.
ALIPAY
.
getIndex
().
toString
().
equals
(
orderBean
.
getOrderClient
())?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
List
<
MCCafeTransactionVo
>
transactions
=
new
ArrayList
<>();
MCCafeTransactionVo
mcCafeTransactionVo
=
new
MCCafeTransactionVo
();
mcCafeTransactionVo
.
setCode
(
accountBean
.
getAccountId
());
mcCafeTransactionVo
.
setTotalAmount
(-
accountBean
.
getPrice
());
if
(
CollectionUtils
.
isNotEmpty
(
products
))
{
mcCafeTransactionVo
.
setProducts
(
products
);
}
transactions
.
add
(
mcCafeTransactionVo
);
mcCafeCouponRequest
.
setTransactions
(
transactions
);
mcCafeCouponRequest
.
setSign
(
"skip"
);
mcCafeCouponRequest
.
setAppFlag
(
"kgd.N"
);
mcCafeCouponRequest
.
setBusiness_date
(
cn
.
freemud
.
base
.
util
.
DateUtil
.
convert2Str
(
new
Date
(),
cn
.
freemud
.
base
.
util
.
DateUtil
.
FORMAT_yyyyMMdd
));
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCouponRequest
);
}
@Override
public
CouponRedeemResponse
redeem
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCouponRequest
);
}
@Override
public
CouponRedeemResponse
redeemBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
List
<
CreateOrderAccountRequest
>
accountList
=
accounts
.
stream
().
filter
(
account
->
(
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
))
&&
account
.
getPrice
()
!=
0
l
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
accountList
))
{
return
null
;
}
List
<
MCCafeCouponRequest
>
list
=
accountList
.
stream
().
map
(
accountBean
->
couponAdapter
.
convert2MCCafeCouponRequest
(
orderBean
,
accountBean
)).
collect
(
Collectors
.
toList
());
CouponRedeemResponse
couponRedeemResponse
=
new
CouponRedeemResponse
();
redeem:
for
(
MCCafeCouponRequest
request
:
list
)
{
retry:
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
couponRedeemResponse
=
redeem
(
request
);
if
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
couponRedeemResponse
.
getStatusCode
()))
{
continue
redeem
;
}
}
}
return
couponRedeemResponse
;
}
@Override
public
List
<
CouponRedeemResponse
>
redeemBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
null
;
...
...
@@ -222,92 +127,17 @@ public class CouponClientServiceImpl implements CouponClientService {
return
couponRedeemResponseList
;
}
@Override
public
CouponRedeemResponse
cancelRedeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
MCCafeCouponRequest
mcCafeCouponRequest
=
new
MCCafeCouponRequest
();
return
couponOfflineMCCafeClient
.
cancelRedeem
(
mcCafeCouponRequest
);
}
@Override
public
CouponQueryResponse
query
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
return
couponOfflineMCCafeClient
.
query
(
mcCafeCouponRequest
);
}
@Override
public
McdNetBatchQueryResponse
batchQuery
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
return
couponOfflineMCCafeClient
.
batchQuery
(
mcCafeCouponRequest
);
}
@Override
public
CouponBaseResponse
lock
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
Optional
<
CreateOrderAccountRequest
>
accountRequest
=
accounts
.
stream
().
filter
(
account
->
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
)).
findFirst
();
if
(!
accountRequest
.
isPresent
()
||
accountRequest
.
get
().
getPrice
()
==
0
)
{
return
null
;
}
CreateOrderAccountRequest
accountBean
=
accountRequest
.
get
();
MCCafeCouponLockRequest
couponCodeVerificationDto
=
new
MCCafeCouponLockRequest
();
couponCodeVerificationDto
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
couponCodeVerificationDto
.
setReqType
(
CouponReqTypeEnum
.
LOCK
.
getCode
());
couponCodeVerificationDto
.
setPartnerId
(
orderBean
.
getCompanyId
());
couponCodeVerificationDto
.
setStoreId
(
orderBean
.
getShopId
());
// 订单号
couponCodeVerificationDto
.
setTransId
(
orderBean
.
getOid
());
couponCodeVerificationDto
.
setCoupon
(
accountBean
.
getAccountId
());
couponCodeVerificationDto
.
setOfferId
(
accountBean
.
getAccountId
());
couponCodeVerificationDto
.
setNumber
(
"1"
);
couponCodeVerificationDto
.
setChannel
(
OrderClientType
.
ALIPAY
.
getIndex
().
toString
().
equals
(
orderBean
.
getOrderClient
())
?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
couponCodeVerificationDto
.
setOperatorId
(
"-1"
);
couponCodeVerificationDto
.
setStationId
(
"-1"
);
couponCodeVerificationDto
.
setSign
(
"skip"
);
return
couponOfflineMCCafeClient
.
lock
(
couponCodeVerificationDto
);
}
@Override
public
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
return
couponOfflineMCCafeClient
.
lock
(
mcCafeCouponLockRequest
);
}
@Override
public
CouponBaseResponse
lockBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
List
<
CreateOrderAccountRequest
>
accountList
=
accounts
.
stream
().
filter
(
account
->
(
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
))
&&
account
.
getPrice
()
!=
0
l
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
accountList
))
{
return
null
;
}
List
<
MCCafeCouponLockRequest
>
list
=
accountList
.
stream
().
map
(
accountBean
->
couponAdapter
.
convert2MCCafeCouponLockRequest
(
orderBean
,
accountBean
)).
collect
(
Collectors
.
toList
());
CouponBaseResponse
baseResponse
=
new
CouponBaseResponse
();
lock:
for
(
MCCafeCouponLockRequest
request
:
list
)
{
retry:
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
baseResponse
=
lock
(
request
);
if
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
baseResponse
.
getStatusCode
()))
{
continue
lock
;
}
}
}
return
baseResponse
;
}
@Override
public
List
<
CouponBaseResponse
>
lockBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
null
;
...
...
@@ -348,45 +178,4 @@ public class CouponClientServiceImpl implements CouponClientService {
return
baseResponseList
;
}
@Override
public
CouponBaseResponse
unlock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
return
couponOfflineMCCafeClient
.
unlock
(
mcCafeCouponLockRequest
);
}
@Override
public
BaseResponse
callbackNotify
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
if
(
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
ResponseUtil
.
success
();
}
List
<
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
AccountBean
>
accountBeanList
=
orderBean
.
getAccountList
().
stream
().
filter
(
account
->
account
.
getType
().
equals
(
OldOrderAccountType
.
COUPON
.
getCode
())
||
account
.
getType
().
equals
(
OldOrderAccountType
.
PRODUCT_COUPON
.
getCode
())
||
account
.
getType
().
equals
(
OldOrderAccountType
.
DISCOUNT_COUPON
.
getCode
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
accountBeanList
))
{
return
ResponseUtil
.
success
();
}
String
orderCode
=
orderBean
.
getOid
();
String
partnerId
=
orderBean
.
getCompanyId
();
List
<
String
>
failedList
=
new
ArrayList
<>();
for
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
AccountBean
accountBean
:
accountBeanList
)
{
String
couponCode
=
accountBean
.
getAccountId
();
try
{
//移除卡包失败,邮件报警
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
baseResponse
=
offlineCouponSdkService
.
callbackNotify
(
couponCode
,
orderCode
,
partnerId
,
""
);
if
(!
Objects
.
equals
(
baseResponse
.
getCode
(),
cn
.
freemud
.
enums
.
ResponseResult
.
SUCCESS
.
getCode
()))
{
emailAlertService
.
sendEmailAlert
(
"券码移除卡包失败"
,
String
.
format
(
"request:%s \r\nresponse:%s"
,
"券码号:"
+
couponCode
+
"订单号:"
+
orderCode
,
JSONObject
.
toJSONString
(
baseResponse
)));
failedList
.
add
(
couponCode
);
}
}
catch
(
Exception
ex
)
{
emailAlertService
.
sendEmailAlert
(
"券码移除卡包异常"
,
String
.
format
(
"request:%s \r\nexception:%s"
,
"券码号:"
+
couponCode
+
"订单号:"
+
orderCode
,
Throwables
.
getStackTraceAsString
(
ex
)));
ErrorLog
.
printErrorLog
(
"verification_error"
,
"/callbackNotify"
,
orderCode
,
ex
);
failedList
.
add
(
couponCode
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
failedList
))
{
return
ResponseUtil
.
error
(
cn
.
freemud
.
enums
.
ResponseResult
.
COUPON_CALLBACK_FAIL
.
getCode
(),
"优惠券移除卡包失败:"
+
failedList
.
toString
());
}
return
ResponseUtil
.
success
();
}
}
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
View file @
e8e6498f
...
...
@@ -8,6 +8,7 @@ import cn.freemud.management.entities.dto.response.pay.RefundConfig;
import
cn.freemud.management.enums.OrderRefundEnum
;
import
cn.freemud.management.enums.OrderSource
;
import
cn.freemud.management.enums.OrderStatus
;
import
cn.freemud.management.enums.RefundStatus
;
import
cn.freemud.management.enums.ResponseResult
;
import
cn.freemud.management.util.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -17,6 +18,8 @@ import com.freemud.application.sdk.api.ordercenter.enums.OperateClient;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.message.enums.OrderType
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType
;
import
com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -256,9 +259,13 @@ public class OrderVerifyHandle {
if
(
ObjectUtils
.
equals
(
OrderStatus
.
CANCEL
.
getCode
(),
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_HAS_CANCELED
);
}
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getRefundList
())
&&
orderBean
.
getRefundList
().
get
(
orderBean
.
getRefundList
().
size
()
-
1
).
getStatus
()
!=
1
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_REFUND_NOT_APPLY
);
for
(
QueryOrdersResponse
.
DataBean
.
OrderBean
.
RefundBean
refundBean
:
orderBean
.
getRefundList
())
{
if
(
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
return
ResponseUtil
.
success
();
}
if
(
RefundStatus
.
COMPLETE_REFUND
.
getCode
().
equals
(
refundBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
AGREE_REFUND_ORDER_FAIL
.
getCode
(),
"订单已经退款完成,不能重复申请"
);
}
}
return
ResponseUtil
.
success
();
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
e8e6498f
...
...
@@ -75,6 +75,34 @@ public class PaymentHandle {
refundStatus
=
ObjectUtils
.
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
(),
orderRefundResponse
.
getData
().
getRefundStatus
())?
PayRefundStatus
.
SUCCESS
:
PayRefundStatus
.
RUNNING
;
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
/**
* 麦咖啡退款
* @param request
* @param orderBean
* @return
*/
public
PayRefundResponse
mcCafeRefund
(
OrderManagerRequest
request
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
){
PayRefundStatus
refundStatus
=
PayRefundStatus
.
SUCCESS
;
OrderRefundRequest
orderRefundRequest
=
paymentSdkAdapter
.
getOrderRefundRequest
(
orderBean
,
new
BigDecimal
(
orderBean
.
getAmount
()));
if
(
ObjectUtils
.
equals
(
orderBean
.
getAmount
(),
0L
))
{
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
;
try
{
orderRefundResponse
=
standardPaymentService
.
orderRefund
(
orderRefundRequest
,
""
);
}
catch
(
Exception
ex
){
ErrorLog
.
errorConvertJson
(
this
.
getClass
(),
"refundError"
,
ex
);
throw
new
OrderServiceException
(
ResponseResult
.
REFUND_EXCEPTION
);
}
if
(
orderRefundResponse
==
null
){
throw
new
OrderServiceException
(
ResponseResult
.
REFUND_EXCEPTION
);
}
if
(
ObjectUtils
.
notEqual
(
orderRefundResponse
.
getCode
(),
SUCCESS
)){
throw
new
OrderServiceException
(
ResponseResult
.
REFUND_FAIL
,
orderRefundResponse
.
getMessage
());
}
refundStatus
=
ObjectUtils
.
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
(),
orderRefundResponse
.
getData
().
getRefundStatus
())?
PayRefundStatus
.
SUCCESS
:
PayRefundStatus
.
RUNNING
;
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
/**
* 获取退款金额
...
...
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
View file @
e8e6498f
...
...
@@ -7,11 +7,17 @@ import cn.freemud.management.enums.ResponseResult;
import
cn.freemud.management.intercept.OrderServiceException
;
import
cn.freemud.management.util.ResponseUtil
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesCreateEvent
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.AfterSalesOperateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
com.freemud.sdk.api.assortment.order.enums.RefundStatus
;
import
com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderRefundRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
...
...
@@ -147,6 +153,23 @@ public class SaasOrderHandle {
}
/**
* 麦咖啡拒单
*
* @param request
* @param orderBean
* @return
*/
public
BaseResponse
mcCafeOrderReject
(
OrderManagerRequest
request
,
PayRefundResponse
refundResponse
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
//作废订单
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
getCancelOrderRequest
(
request
.
getOperator
(),
request
.
getReason
(),
refundResponse
.
getPayRefundStatus
(),
refundResponse
.
getRefundId
(),
orderBean
);
BaseOrderResponse
baseOrderResponse
=
orderCenterSdkService
.
mcCafeOrderReject
(
cancelOrderRequest
,
orderBean
);
if
(
baseOrderResponse
==
null
||
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
baseOrderResponse
.
getErrcode
().
toString
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
AFFIRM_ORDER_FAIL
);
}
return
ResponseUtil
.
success
();
}
/**
* 同意退款
*
* @param request
...
...
@@ -169,6 +192,58 @@ public class SaasOrderHandle {
}
/**
* 麦咖啡同意退款
*
* @param request
* @param refundResponse
* @param orderBean
* @return
*/
public
BaseResponse
mcCafeRefundAgree
(
OrderManagerRequest
request
,
PayRefundResponse
refundResponse
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
BaseQueryOrderRequest
refundAgreeRequest
=
orderSdkAdapter
.
getRefundAgreeRequest
(
refundResponse
.
getRefundId
(),
request
.
getReason
(),
request
.
getOperator
(),
orderBean
);
BaseOrderResponse
baseOrderResponse
=
null
;
for
(
int
i
=
0
;
i
<
orderBean
.
getRefundList
().
size
();
i
++)
{
if
(
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
orderBean
.
getRefundList
().
get
(
i
).
getStatus
()))
{
refundAgreeRequest
.
setAfterSalesCode
(
orderBean
.
getRefundList
().
get
(
i
).
getRid
());
if
(
PayRefundStatus
.
SUCCESS
.
equals
(
refundResponse
.
getPayRefundStatus
()))
{
baseOrderResponse
=
orderCenterSdkService
.
refundComplete
(
refundAgreeRequest
);
}
else
{
baseOrderResponse
=
orderCenterSdkService
.
refundReturn
(
refundAgreeRequest
);
}
break
;
}
else
if
(
RefundStatus
.
COMPLETE_REFUND
.
getCode
().
equals
(
orderBean
.
getRefundList
().
get
(
i
).
getStatus
()))
{
baseOrderResponse
=
new
BaseOrderResponse
();
baseOrderResponse
.
setErrcode
(
Integer
.
valueOf
(
ResponseResult
.
AGREE_REFUND_ORDER_FAIL
.
getCode
()));
baseOrderResponse
.
setErrmsg
(
"订单已经退款完成,不能重复申请"
);
break
;
}
}
if
(
null
==
baseOrderResponse
)
{
OrderRefundRequest
orderRefundRequest
=
new
OrderRefundRequest
();
orderRefundRequest
.
setPartnerId
(
refundAgreeRequest
.
getPartnerId
());
orderRefundRequest
.
setStoreId
(
refundAgreeRequest
.
getShopId
());
orderRefundRequest
.
setOrderId
(
refundAgreeRequest
.
getOrderId
());
orderRefundRequest
.
setOrderClient
(
OrderClientType
.
SAAS
.
getIndex
());
orderRefundRequest
.
setAfterSalesType
(
AfterSalesType
.
PARTNER_CANCEL
);
orderRefundRequest
.
setReason
(
refundAgreeRequest
.
getReason
());
orderRefundRequest
.
setOperator
(
refundAgreeRequest
.
getOperator
());
orderRefundRequest
.
setOrderStatus
(
orderBean
.
getStatus
());
if
(
PayRefundStatus
.
SUCCESS
.
equals
(
refundResponse
.
getPayRefundStatus
()))
{
orderRefundRequest
.
setCreateEvent
(
4
);
}
else
{
orderRefundRequest
.
setCreateEvent
(
5
);
}
baseOrderResponse
=
orderCenterSdkService
.
orderRefund
(
orderRefundRequest
);
}
if
(
baseOrderResponse
==
null
||
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
baseOrderResponse
.
getErrcode
().
toString
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
AGREE_REFUND_ORDER_FAIL
);
}
return
ResponseUtil
.
success
();
}
/**
* 拒绝退款
* @param request
* @param orderBean
...
...
@@ -184,6 +259,33 @@ public class SaasOrderHandle {
}
/**
* 麦咖啡拒绝退款
* @param request
* @param orderBean
* @return
*/
public
BaseResponse
mcCafeRefundReject
(
OrderManagerRequest
request
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
CancelOrderRequest
rejectRefundRequest
=
orderSdkAdapter
.
getRejectRefundRequest
(
request
.
getOperator
(),
request
.
getReason
(),
orderBean
);
BaseOrderResponse
baseOrderResponse
=
null
;
for
(
int
i
=
0
;
i
<
orderBean
.
getRefundList
().
size
();
i
++)
{
if
(
RefundStatus
.
APPLY_REFUND
.
getCode
().
equals
(
orderBean
.
getRefundList
().
get
(
i
).
getStatus
()))
{
rejectRefundRequest
.
setAfterSalesCode
(
orderBean
.
getRefundList
().
get
(
i
).
getRid
());
baseOrderResponse
=
orderCenterSdkService
.
orderRefundReject
(
rejectRefundRequest
);
}
if
(
RefundStatus
.
COMPLETE_REFUND
.
getCode
().
equals
(
orderBean
.
getRefundList
().
get
(
i
).
getStatus
()))
{
baseOrderResponse
=
new
BaseOrderResponse
();
baseOrderResponse
.
setErrcode
(
100
);
baseOrderResponse
.
setErrmsg
(
"success"
);
}
}
if
(
baseOrderResponse
==
null
||
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
baseOrderResponse
.
getErrcode
().
toString
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
REJECT_REFUND_ORDER_FAIL
);
}
return
ResponseUtil
.
success
();
}
/**
* 取消订单
*/
public
BaseResponse
orderCancel
(
OrderManagerRequest
request
,
PayRefundResponse
refundResponse
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
...
...
order-management/src/main/java/cn/freemud/management/service/impl/McCafeMangerServiceImpl.java
View file @
e8e6498f
...
...
@@ -123,29 +123,9 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
}
else
{
//支付退款
PayRefundResponse
refundResponse
=
paymentHandle
.
refund
(
orderManagerRequest
,
orderBean
);
//随单购月卡进行卡作废
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getOrderCostDetailList
())){
OrderCostResp
orderCostResp
=
orderBean
.
getOrderCostDetailList
().
stream
().
filter
(
t
->
10
==
t
.
getCostType
()).
findFirst
().
orElse
(
null
);
if
(
orderCostResp
!=
null
){
String
note
=
orderCostResp
.
getNote
();
if
(
StringUtils
.
isNotEmpty
(
note
))
{
// 调用会员作废券接口
ForbiddenCardCodeRequest
cardCodeRequest
=
new
ForbiddenCardCodeRequest
();
cardCodeRequest
.
setMemberId
(
orderBean
.
getUserId
());
cardCodeRequest
.
setPartnerId
(
macCafePartnerId
);
List
<
ForbiddenCardCodeRequest
.
CardInfo
>
list
=
new
ArrayList
<>();
ForbiddenCardCodeRequest
.
CardInfo
cardInfo
=
new
ForbiddenCardCodeRequest
.
CardInfo
();
cardInfo
.
setCard_code
(
note
);
cardInfo
.
setCard_id
(
macCafeCardId
);
list
.
add
(
cardInfo
);
cardCodeRequest
.
setCardInfo
(
list
);
customerMcCafeClient
.
forbiddenCardCodeForQujia
(
cardCodeRequest
);
}
}
}
PayRefundResponse
refundResponse
=
paymentHandle
.
mcCafeRefund
(
orderManagerRequest
,
orderBean
);
//订单拒单
saasOrderHandle
.
o
rderReject
(
orderManagerRequest
,
refundResponse
,
orderBean
);
saasOrderHandle
.
mcCafeO
rderReject
(
orderManagerRequest
,
refundResponse
,
orderBean
);
//冲正库存
stockHandle
.
revert
(
orderManagerRequest
,
orderBean
);
// 券码解冻
...
...
@@ -208,9 +188,9 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override
public
BaseResponse
<
OrderManagerResponse
>
orderAgreeRefund
(
OrderManagerRequest
request
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
//支付退款
PayRefundResponse
refund
=
paymentHandle
.
r
efund
(
request
,
orderBean
);
PayRefundResponse
refund
=
paymentHandle
.
mcCafeR
efund
(
request
,
orderBean
);
//订单拒单
saasOrderHandle
.
r
efundAgree
(
request
,
refund
,
orderBean
);
saasOrderHandle
.
mcCafeR
efundAgree
(
request
,
refund
,
orderBean
);
//冲正库存
stockHandle
.
revert
(
request
,
orderBean
);
return
ResponseUtil
.
success
();
...
...
@@ -226,7 +206,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override
public
BaseResponse
<
OrderManagerResponse
>
orderRejectRefund
(
OrderManagerRequest
request
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
//拒绝退款
saasOrderHandle
.
r
efundReject
(
request
,
orderBean
);
saasOrderHandle
.
mcCafeR
efundReject
(
request
,
orderBean
);
return
ResponseUtil
.
success
();
}
...
...
@@ -237,7 +217,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override
public
BaseResponse
<
OrderManagerResponse
>
orderCancel
(
OrderManagerRequest
request
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
//支付退款
PayRefundResponse
refund
=
paymentHandle
.
r
efund
(
request
,
orderBean
);
PayRefundResponse
refund
=
paymentHandle
.
mcCafeR
efund
(
request
,
orderBean
);
//订单拒单
saasOrderHandle
.
orderCancel
(
request
,
refund
,
orderBean
);
//冲正库存
...
...
ordercenter-sdk/pom.xml
View file @
e8e6498f
...
...
@@ -8,7 +8,7 @@
<version>
1.0.0
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<version>
1.
4.38
-SNAPSHOT
</version>
<version>
1.
5.0
-SNAPSHOT
</version>
<artifactId>
ordercenter-sdk
</artifactId>
<dependencies>
...
...
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/AfterSalesOrderResp.java
View file @
e8e6498f
...
...
@@ -78,4 +78,9 @@ public class AfterSalesOrderResp {
private
Integer
weight
;
//售后单阶段类型 1:售前 2:售中 3:售后
private
Byte
afterSalesStageType
;
/**
* 门店ID
*/
private
String
storeId
;
}
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
e8e6498f
...
...
@@ -133,6 +133,8 @@ public class ShoppingCartConvertAdapter {
goods
.
setSpuName
(
materialGoods
.
getSpuName
());
goods
.
setOriginalPrice
(
materialGoods
.
getOriginalPrice
());
goods
.
setSalePrice
(
materialGoods
.
getFinalPrice
());
goods
.
setCustomerCode
(
materialGoods
.
getCustomerCode
());
goods
.
setProductCode
(
materialGoods
.
getCustomerCode
());
goods
.
setQty
(
cartGoods
.
getQty
());
goods
.
setTotalDiscountAmount
(
0
);
materialList
.
add
(
goods
);
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
View file @
e8e6498f
...
...
@@ -840,14 +840,6 @@ public class ShoppingCartMCoffeeServiceImpl {
}
else
{
cartGoods
.
setGoodsType
(
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
constant
.
GoodsTypeEnum
.
COMMON_GOODS
.
getGoodsType
());
}
if
(
ObjectUtils
.
equals
(
ProductTypeEnum
.
SETMEAL_PRODUCT
.
getCode
(),
orderItem
.
getProductType
())
||
ObjectUtils
.
equals
(
ProductTypeEnum
.
SETMEAL_UPPRICE_PRODUCT
.
getCode
(),
orderItem
.
getProductType
()))
{
// 获取套餐子商品列表
cartGoods
.
setProductComboList
(
new
ArrayList
<>());
cartGoods
.
setProductGroupList
(
new
ArrayList
<>());
String
partnerProductId
=
orderItem
.
getProductId
()
+
"_"
+
orderItem
.
getProductSeq
();
List
<
OrderItemResp
>
comboProducts
=
orderItemList
.
stream
().
filter
(
item
->
ObjectUtils
.
equals
(
partnerProductId
,
item
.
getParentProductId
())).
collect
(
Collectors
.
toList
());
comboProducts
.
forEach
(
combo
->
getComboxGoods
(
cartGoods
,
combo
));
}
if
((
"早餐啡常搭"
.
equals
(
orderItem
.
getProductName
())
&&
"早餐啡常搭"
.
equals
(
orderItem
.
getProductSpecName
()))
||
(
"啡常搭"
.
equals
(
orderItem
.
getProductName
())
&&
"啡常搭"
.
equals
(
orderItem
.
getProductSpecName
())))
{
cartGoods
.
setName
(
orderItem
.
getProductName
());
...
...
@@ -858,6 +850,24 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods
.
setSkuName
(
orderItem
.
getProductSpecName
());
cartGoods
.
setSpuName
(
orderItem
.
getProductName
());
}
if
(
ObjectUtils
.
equals
(
ProductTypeEnum
.
SETMEAL_PRODUCT
.
getCode
(),
orderItem
.
getProductType
())
||
ObjectUtils
.
equals
(
ProductTypeEnum
.
SETMEAL_UPPRICE_PRODUCT
.
getCode
(),
orderItem
.
getProductType
()))
{
// 获取套餐子商品列表
cartGoods
.
setProductComboList
(
new
ArrayList
<>());
cartGoods
.
setProductGroupList
(
new
ArrayList
<>());
String
partnerProductId
=
orderItem
.
getProductId
()
+
"_"
+
orderItem
.
getProductSeq
();
List
<
OrderItemResp
>
comboProducts
=
orderItemList
.
stream
().
filter
(
item
->
ObjectUtils
.
equals
(
partnerProductId
,
item
.
getParentProductId
())).
collect
(
Collectors
.
toList
());
comboProducts
.
forEach
(
combo
->
{
getComboxGoods
(
cartGoods
,
combo
,
orderItemList
);
});
}
if
(
ObjectUtils
.
equals
(
88
,
orderItem
.
getProductType
()))
{
// 获取套餐子商品列表
cartGoods
.
setProductMaterialList
(
new
ArrayList
<>());
String
partnerProductId
=
orderItem
.
getProductId
()
+
"_"
+
orderItem
.
getProductSeq
();
List
<
OrderItemResp
>
materialProducts
=
orderItemList
.
stream
().
filter
(
item
->
ObjectUtils
.
equals
(
partnerProductId
,
item
.
getParentProductId
())).
collect
(
Collectors
.
toList
());
materialProducts
.
forEach
(
material
->
getMaterialGoods
(
cartGoods
,
material
));
}
cartGoodsList
.
add
(
cartGoods
);
}
...
...
@@ -865,7 +875,7 @@ public class ShoppingCartMCoffeeServiceImpl {
}
private
CartGoods
.
ComboxGoods
getComboxGoods
(
CartGoods
cartGoods
,
OrderItemResp
orderItemResp
)
{
private
CartGoods
.
ComboxGoods
getComboxGoods
(
CartGoods
cartGoods
,
OrderItemResp
orderItemResp
,
List
<
OrderItemResp
>
orderItemList
)
{
CartGoods
.
ComboxGoods
comboxGoods
=
new
CartGoods
.
ComboxGoods
();
comboxGoods
.
setSkuId
(
orderItemResp
.
getProductSpec
());
comboxGoods
.
setGoodsId
(
orderItemResp
.
getProductId
());
...
...
@@ -896,10 +906,40 @@ public class ShoppingCartMCoffeeServiceImpl {
if
(
map
.
containsKey
(
"isFixedProduct"
)
&&
!(
boolean
)
map
.
get
(
"isFixedProduct"
))
{
cartGoods
.
getProductGroupList
().
add
(
comboxGoods
);
}
if
(
ObjectUtils
.
equals
(
88
,
orderItemResp
.
getProductType
()))
{
comboxGoods
.
setProductMaterialList
(
new
ArrayList
<>());
String
partnerProductId
=
orderItemResp
.
getProductId
()
+
"_"
+
orderItemResp
.
getProductSeq
();
List
<
OrderItemResp
>
materialProducts
=
orderItemList
.
stream
().
filter
(
item
->
ObjectUtils
.
equals
(
partnerProductId
,
item
.
getParentProductId
())).
collect
(
Collectors
.
toList
());
materialProducts
.
forEach
(
material
->
getMaterialGoods
(
comboxGoods
,
material
));
}
return
comboxGoods
;
}
private
CartGoods
.
MaterialGoods
getMaterialGoods
(
CartGoods
cartGoods
,
OrderItemResp
orderItemResp
)
{
CartGoods
.
MaterialGoods
materialGoods
=
new
CartGoods
.
MaterialGoods
();
materialGoods
.
setSpuId
(
orderItemResp
.
getProductId
());
materialGoods
.
setCustomerCode
(
orderItemResp
.
getThirdProductId
());
materialGoods
.
setFinalPrice
(
orderItemResp
.
getSalePrice
().
longValue
());
materialGoods
.
setOriginalPrice
(
orderItemResp
.
getProductPrice
().
longValue
());
materialGoods
.
setSpuName
(
orderItemResp
.
getProductName
());
cartGoods
.
getProductMaterialList
().
add
(
materialGoods
);
return
materialGoods
;
}
private
CartGoods
.
MaterialGoods
getMaterialGoods
(
CartGoods
.
ComboxGoods
comboGoods
,
OrderItemResp
orderItemResp
)
{
CartGoods
.
MaterialGoods
materialGoods
=
new
CartGoods
.
MaterialGoods
();
materialGoods
.
setSpuId
(
orderItemResp
.
getProductId
());
materialGoods
.
setCustomerCode
(
orderItemResp
.
getThirdProductId
());
materialGoods
.
setFinalPrice
(
orderItemResp
.
getSalePrice
().
longValue
());
materialGoods
.
setOriginalPrice
(
orderItemResp
.
getProductPrice
().
longValue
());
materialGoods
.
setSpuName
(
orderItemResp
.
getProductName
());
comboGoods
.
getProductMaterialList
().
add
(
materialGoods
);
return
materialGoods
;
}
private
void
packgeAdditional
(
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
)
{
ArrayList
<
ShoppingCartInfoRequestVo
.
SendGoods
>
senGoods
=
new
ArrayList
<>();
...
...
@@ -1242,6 +1282,7 @@ public class ShoppingCartMCoffeeServiceImpl {
CartGoods
.
MaterialGoods
materialGoods
=
new
CartGoods
.
MaterialGoods
();
materialGoods
.
setSpuId
(
materialRequestVo
.
getSpuId
());
materialGoods
.
setGroupId
(
materialRequestVo
.
getGroupId
());
materialGoods
.
setCustomerCode
(
materialRequestVo
.
getCustomerCode
());
materialGoodsList
.
add
(
materialGoods
);
}
cartGoods
.
setProductMaterialList
(
materialGoodsList
);
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CalculationServiceImpl.java
View file @
e8e6498f
...
...
@@ -473,8 +473,9 @@ public class CalculationServiceImpl {
totalOriginalAmount
+=
originalAmount
;
totalAmount
+=
amount
;
totalPackgeAmount
+=
packAmount
;
cartGoods
.
setOriginalAmount
(
originalAmount
);
cartGoods
.
setAmount
(
amount
);
long
materialPrice
=
getMaterialPrice
(
cartGoods
);
cartGoods
.
setOriginalAmount
(
originalAmount
+
materialPrice
);
cartGoods
.
setAmount
(
amount
+
materialPrice
);
cartGoods
.
setPackPrice
(
packAmount
);
}
shoppingCartGoodsResponseVo
.
setOriginalTotalAmount
(
calculationDiscount
==
null
?
totalOriginalAmount
:
calculationDiscount
.
getOriginalTotalAmount
());
...
...
@@ -489,4 +490,17 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo
.
setDiscountDeliveryAmount
(
calculationDiscount
==
null
?
0L
:
calculationDiscount
.
getDistributionFee
());
}
private
Long
getMaterialPrice
(
CartGoods
cartGoods
){
Long
materialPrice
=
0L
;
//单品、多规格加料
if
(
CollectionUtils
.
isNotEmpty
(
cartGoods
.
getProductMaterialList
())){
for
(
CartGoods
.
MaterialGoods
materialGoods
:
cartGoods
.
getProductMaterialList
()){
materialPrice
+=
materialGoods
.
getFinalPrice
()
*
cartGoods
.
getQty
();
}
}
return
materialPrice
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/SetMealCalculation.java
View file @
e8e6498f
...
...
@@ -69,9 +69,24 @@ public class SetMealCalculation {
long
productComboAmount
=
cartGoods
.
getProductComboList
().
stream
().
mapToLong
(
t
->
t
.
getFinalPrice
()
*
t
.
getQty
()).
sum
();
long
productComboTotalAmount
=
productComboAmount
*
cartGoods
.
getQty
();
cartGoods
.
setOriginalAmount
(
productGroupTotalAmount
+
productComboTotalAmount
);
long
materialPrice
=
0
l
;
//套餐固定商品加料
if
(
CollectionUtils
.
isNotEmpty
(
cartGoods
.
getProductComboList
())){
for
(
CartGoods
.
ComboxGoods
comboxGoods
:
cartGoods
.
getProductComboList
()){
Long
comboxmaterialPrice
=
0L
;
if
(
CollectionUtils
.
isNotEmpty
(
comboxGoods
.
getProductMaterialList
())){
for
(
CartGoods
.
MaterialGoods
materialGoods
:
comboxGoods
.
getProductMaterialList
()){
comboxmaterialPrice
+=
materialGoods
.
getFinalPrice
()
*
cartGoods
.
getQty
();
}
}
comboxGoods
.
setAmount
(
comboxGoods
.
getAmount
()+
comboxmaterialPrice
);
materialPrice
=
materialPrice
+
comboxmaterialPrice
;
}
}
cartGoods
.
setOriginalAmount
(
productGroupTotalAmount
+
productComboTotalAmount
+
materialPrice
);
cartGoods
.
setOriginalPrice
(
productComboTotalAmount
);
cartGoods
.
setAmount
(
productGroupTotalAmount
+
productComboTotalAmount
);
cartGoods
.
setAmount
(
productGroupTotalAmount
+
productComboTotalAmount
+
materialPrice
);
cartGoods
.
setFinalPrice
(
productComboTotalAmount
);
// 套餐(固定商品)现价
...
...
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