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
3cff900e
Commit
3cff900e
authored
Sep 07, 2021
by
ping.wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码优化
parent
ea6d959d
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
379 additions
and
262 deletions
+379
-262
order-application-service/src/main/java/cn/freemud/adapter/PointsMallOrderAdapter.java
+293
-0
order-application-service/src/main/java/cn/freemud/enums/integralproduct/ExchangeTypeEnum.java
+38
-0
order-application-service/src/main/java/cn/freemud/service/impl/PointsMallOrderServiceImpl.java
+48
-262
No files found.
order-application-service/src/main/java/cn/freemud/adapter/PointsMallOrderAdapter.java
0 → 100644
View file @
3cff900e
package
cn
.
freemud
.
adapter
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.entities.Active
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
cn.freemud.entities.dto.pay.PayProductDto
;
import
cn.freemud.entities.dto.pay.UnifiedOrderRequestDto
;
import
cn.freemud.entities.dto.product.pointsmall.IntegralProductType
;
import
cn.freemud.entities.dto.product.pointsmall.PointMallListProductInfoRequest
;
import
cn.freemud.entities.dto.product.pointsmall.ProductStockRequest
;
import
cn.freemud.entities.dto.product.pointsmall.UpdatePointsMallStocksRequest
;
import
cn.freemud.entities.dto.user.UseScoreRequest
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderType
;
import
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest
;
import
com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto
;
import
com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
@Component
public
class
PointsMallOrderAdapter
{
public
PointMallListProductInfoRequest
convent2PointMallListProductInfoRequest
(
String
partnerId
,
String
memberId
,
String
skuId
)
{
PointMallListProductInfoRequest
productInfoRequest
=
new
PointMallListProductInfoRequest
();
productInfoRequest
.
setPartnerId
(
partnerId
);
productInfoRequest
.
setMemberId
(
memberId
);
productInfoRequest
.
setProductIdList
(
Arrays
.
asList
(
skuId
));
productInfoRequest
.
setValidateMember
(
true
);
productInfoRequest
.
setValidateStock
(
true
);
productInfoRequest
.
setValidateTime
(
true
);
return
productInfoRequest
;
}
public
CreateOrderRequest
convent2NEWCreateOrderRequest
(
Integer
orderClient
,
AssortmentCustomerInfoVo
userLoginInfoDto
,
String
shopId
,
String
cardCode
,
String
channel
,
Integer
bizType
,
IntegralProductType
productBean
,
String
skuId
,
Active
active
,
WeixinDeliveryAddressDto
weixinDeliveryAddress
)
{
CreateOrderRequest
request
=
new
CreateOrderRequest
();
String
partnerId
=
userLoginInfoDto
.
getPartnerId
();
request
.
setOrderClient
(
orderClient
);
request
.
setPartnerId
(
partnerId
);
request
.
setStoreId
(
shopId
);
request
.
setStoreName
(
"虚拟门店"
);
request
.
setThirdStoreId
(
""
);
//买券虚拟订单 不管APP卖券还是平台,依旧保留传入6
request
.
setBizType
(
bizType
);
//1:线上支付 2:线下支付
request
.
setPayType
(
1
);
request
.
setUserId
(
userLoginInfoDto
.
getMemberId
());
request
.
setUserName
(
userLoginInfoDto
.
getNickName
());
request
.
setOrderState
(
1
);
request
.
setPayState
(
1
);
if
(
StringUtils
.
isNotBlank
(
cardCode
))
{
request
.
setPayChannel
(
"10102"
);
request
.
setPayChannelName
(
"储值卡支付"
);
}
//积分价格
Integer
integralPrice
=
productBean
.
getIntegralPrice
()
==
null
?
0
:
productBean
.
getIntegralPrice
();
//现金价格(分)
Integer
cashPrice
=
productBean
.
getCashPrice
()
==
null
?
0
:
productBean
.
getCashPrice
();
// Integer settlementAmount = integralPrice + cashPrice;
//订单原始金额,单位分
//用户在界面上看到的支付金额
request
.
setSettlementAmount
(
cashPrice
.
longValue
());
//实际支付现金金额,扣除支付自生优惠,单位分`
request
.
setActualPayAmount
(
cashPrice
.
longValue
());
request
.
setOriginalAmount
(
cashPrice
.
longValue
());
request
.
setOrderType
(
OrderType
.
GENERAL_DINE_IN
.
getIndex
());
//商品信息赋值
OrderItemCreateReq
orderItemCreateReq
=
convent2OrderItemCreateReq
(
productBean
,
partnerId
,
skuId
,
active
);
request
.
setOrderItemList
(
Arrays
.
asList
(
orderItemCreateReq
));
//积分优惠
OrderSettlementCreateReq
orderSettlementCreateReq
=
convent2OrderSettlementCreateReq
(
productBean
);
request
.
setOrderSettlementDetailList
(
Arrays
.
asList
(
orderSettlementCreateReq
));
//收货人信息转换
List
<
DeliveryContactInfoCreateReq
>
deliveryContactInfoList
=
new
ArrayList
<>();
DeliveryContactInfoCreateReq
deliveryContactInfoCreateReq
=
new
DeliveryContactInfoCreateReq
();
//地址类型 1:订单地址 2:售后单地址 3:配送员信息
deliveryContactInfoCreateReq
.
setRelateObjectType
(
1
);
//联系方式类型 1:取件 2:收件
deliveryContactInfoCreateReq
.
setInfoType
(
1
);
deliveryContactInfoCreateReq
.
setContactsName
(
userLoginInfoDto
.
getNickName
());
deliveryContactInfoCreateReq
.
setMobile
(
userLoginInfoDto
.
getMobile
());
deliveryContactInfoCreateReq
.
setLatitude
(
null
);
deliveryContactInfoCreateReq
.
setLongitude
(
null
);
deliveryContactInfoCreateReq
.
setAddressDetail
(
null
);
deliveryContactInfoCreateReq
.
setProvince
(
null
);
deliveryContactInfoCreateReq
.
setCity
(
null
);
deliveryContactInfoCreateReq
.
setRegion
(
null
);
if
(
weixinDeliveryAddress
!=
null
)
{
deliveryContactInfoCreateReq
.
setContactsName
(
weixinDeliveryAddress
.
getUserName
());
deliveryContactInfoCreateReq
.
setMobile
(
weixinDeliveryAddress
.
getTelNumber
());
deliveryContactInfoCreateReq
.
setProvince
(
weixinDeliveryAddress
.
getProvinceName
());
deliveryContactInfoCreateReq
.
setCity
(
weixinDeliveryAddress
.
getCityName
());
deliveryContactInfoCreateReq
.
setRegion
(
weixinDeliveryAddress
.
getCountyName
());
deliveryContactInfoCreateReq
.
setAddressDetail
(
weixinDeliveryAddress
.
getDetailInfo
());
}
deliveryContactInfoList
.
add
(
deliveryContactInfoCreateReq
);
request
.
setDeliveryContactInfoList
(
deliveryContactInfoList
);
request
.
setOperator
(
userLoginInfoDto
.
getNickName
());
request
.
setAppId
(
userLoginInfoDto
.
getWxAppId
());
request
.
setPayChannel
(
channel
);
return
request
;
}
private
OrderItemCreateReq
convent2OrderItemCreateReq
(
IntegralProductType
productBean
,
String
partnerId
,
String
skuId
,
Active
active
)
{
boolean
isCoupon
=
productBean
.
getProductType
()
==
1
;
//积分价格
Integer
integralPrice
=
productBean
.
getIntegralPrice
()
==
null
?
0
:
productBean
.
getIntegralPrice
();
//现金价格(分)
Integer
cashPrice
=
productBean
.
getCashPrice
()
==
null
?
0
:
productBean
.
getCashPrice
();
Integer
settlementAmount
=
integralPrice
+
cashPrice
;
OrderItemCreateReq
orderItemCreateReq
=
new
OrderItemCreateReq
();
orderItemCreateReq
.
setPartnerId
(
partnerId
);
orderItemCreateReq
.
setSalePrice
(
cashPrice
.
longValue
());
orderItemCreateReq
.
setProductPrice
(
integralPrice
.
longValue
());
orderItemCreateReq
.
setSettlementPrice
(
settlementAmount
.
longValue
());
orderItemCreateReq
.
setProductId
(
skuId
);
orderItemCreateReq
.
setProductSpec
(
skuId
);
orderItemCreateReq
.
setProductName
(
productBean
.
getProductName
());
orderItemCreateReq
.
setProductSpecName
(
productBean
.
getProductName
());
orderItemCreateReq
.
setProductType
(
productBean
.
getProductType
());
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getPictureList
()))
{
orderItemCreateReq
.
setProductPicUrl
(
productBean
.
getPictureList
().
get
(
0
));
}
orderItemCreateReq
.
setProductSeq
(
1
);
if
(
productBean
.
getEntityProductInfo
()
!=
null
)
{
orderItemCreateReq
.
setProductCode
(
productBean
.
getEntityProductInfo
().
getProductId
());
orderItemCreateReq
.
setThirdProductId
(
productBean
.
getEntityProductInfo
().
getProductId
());
orderItemCreateReq
.
setProductPicUrl
(
productBean
.
getEntityProductInfo
().
getPicture
());
}
if
(
isCoupon
)
{
//添加商品绑定的券
OrderProductAddInfoDto
orderProductAddInfoDto
=
new
OrderProductAddInfoDto
();
List
<
ProductBindingCouponType
>
productBindingCoupons
=
new
ArrayList
<>();
productBindingCoupons
.
add
(
convent2ProductBindingCouponType
(
active
));
orderProductAddInfoDto
.
setProductBindingCoupons
(
productBindingCoupons
);
orderItemCreateReq
.
setExtInfo
(
JSONObject
.
toJSONString
(
orderProductAddInfoDto
));
}
orderItemCreateReq
.
setProductQuantity
(
1
);
return
orderItemCreateReq
;
}
private
OrderSettlementCreateReq
convent2OrderSettlementCreateReq
(
IntegralProductType
productBean
)
{
OrderSettlementCreateReq
orderSettlementCreateReq
=
new
OrderSettlementCreateReq
();
orderSettlementCreateReq
.
setNumber
(
productBean
.
getIntegralPrice
());
orderSettlementCreateReq
.
setProductSeq
(
1
);
orderSettlementCreateReq
.
setExternalObjectId
(
""
);
//商家优惠
orderSettlementCreateReq
.
setShopDiscountAmount
(
0L
);
//结算金额
orderSettlementCreateReq
.
setSettlementAmount
(
productBean
.
getIntegralPrice
().
longValue
());
//是否线上 false:不是 true:是
orderSettlementCreateReq
.
setIsOnline
(
true
);
orderSettlementCreateReq
.
setSettlementType
(
OrderSettlementType
.
POINTS
.
getIndex
());
return
orderSettlementCreateReq
;
}
private
ProductBindingCouponType
convent2ProductBindingCouponType
(
Active
active
)
{
ProductBindingCouponType
productBindingCouponType2
=
new
ProductBindingCouponType
();
productBindingCouponType2
.
setActivityCode
(
active
.
getActiveCode
());
productBindingCouponType2
.
setNum
(
1
);
productBindingCouponType2
.
setActivityName
(
active
.
getActiveName
());
return
productBindingCouponType2
;
}
public
UnifiedOrderRequestDto
convert2UnifiedOrderRequestDto
(
OrderInfoReqs
orderInfo
,
String
openId
,
Integer
cashPrice
,
Long
clientCode
,
String
reverseNotifyiDcUrl
,
String
payTimeOutTime
)
{
String
partnerId
=
orderInfo
.
getPartnerId
();
String
storeId
=
orderInfo
.
getStoreId
();
String
appId
=
orderInfo
.
getAppId
();
//现金支付唤起线上支付
UnifiedOrderRequestDto
requestDto
=
new
UnifiedOrderRequestDto
();
requestDto
.
setTransId
(
orderInfo
.
getOrderCode
());
requestDto
.
setPartnerId
(
partnerId
);
requestDto
.
setStoreId
(
storeId
);
requestDto
.
setAmount
(
cashPrice
.
longValue
());
String
businessDate
=
DateUtil
.
convert2String
(
new
Date
(),
"yyyyMMdd"
);
requestDto
.
setBusinessDate
(
businessDate
);
requestDto
.
setClientCode
(
clientCode
);
requestDto
.
setFoodOrderType
(
getFoodOrderType
(
1
));
requestDto
.
setNotifyUrl
(
reverseNotifyiDcUrl
);
requestDto
.
setOpenId
(
openId
);
requestDto
.
setPayTimeOutTime
(
payTimeOutTime
);
List
<
PayProductDto
>
productBeans
=
new
ArrayList
<>();
String
payProductName
=
""
;
if
(
CollectionUtils
.
isNotEmpty
(
orderInfo
.
getOrderItemList
()))
{
for
(
OrderItemResp
orderProductBean
:
orderInfo
.
getOrderItemList
())
{
PayProductDto
productBean
=
new
PayProductDto
();
productBean
.
setId
(
orderProductBean
.
getProductId
());
productBean
.
setQuantity
(
orderProductBean
.
getProductQuantity
());
// productBean.setSeq(orderProductBean.getProductSeq());
// productBean.setSalesType("NORMAL");
productBean
.
setPrice
(
orderProductBean
.
getProductPrice
().
longValue
());
if
(
StringUtils
.
isNotBlank
(
payProductName
))
{
payProductName
=
orderProductBean
.
getProductName
();
}
else
if
(
payProductName
.
endsWith
(
"..."
))
{
//不处理
}
else
{
payProductName
=
payProductName
+
"..."
;
}
productBean
.
setName
(
orderProductBean
.
getProductName
());
productBeans
.
add
(
productBean
);
}
}
requestDto
.
setBody
(
payProductName
);
return
requestDto
;
}
/**
* 预支付接口获取类型
*
* @return
*/
private
String
getFoodOrderType
(
Integer
orderType
)
{
//1=外卖 4=自提,5=堂食
//qr_order(店内扫码点餐),pre_order(预点到店自提),home_delivery (外送到家)
String
foodOrderType
;
switch
(
orderType
)
{
case
1
:
foodOrderType
=
"home_delivery"
;
break
;
case
4
:
foodOrderType
=
"pre_order"
;
break
;
case
5
:
default
:
foodOrderType
=
"qr_order"
;
break
;
}
return
foodOrderType
;
}
public
UpdatePointsMallStocksRequest
convent2UpdatePointsMallStocksRequest
(
String
partnerId
,
String
memberId
,
String
skuId
,
String
orderCode
)
{
UpdatePointsMallStocksRequest
updatePointsMallStocksRequest
=
new
UpdatePointsMallStocksRequest
();
updatePointsMallStocksRequest
.
setPartnerId
(
partnerId
);
updatePointsMallStocksRequest
.
setMemberId
(
memberId
);
updatePointsMallStocksRequest
.
setChangeType
(
2
);
updatePointsMallStocksRequest
.
setRemark
(
"积分商城兑换"
);
updatePointsMallStocksRequest
.
setTransTime
(
DateUtil
.
convert2String
(
new
Date
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
));
updatePointsMallStocksRequest
.
setTransNo
(
orderCode
);
ProductStockRequest
productStockRequest
=
new
ProductStockRequest
();
productStockRequest
.
setProductId
(
skuId
);
productStockRequest
.
setExchangeNumber
(
1
);
productStockRequest
.
setStockNumber
(
1
);
updatePointsMallStocksRequest
.
setProductStocks
(
Arrays
.
asList
(
productStockRequest
));
return
updatePointsMallStocksRequest
;
}
public
UseScoreRequest
convent2UseScoreRequest
(
String
partnerId
,
String
memberId
,
String
appId
,
String
orderCode
,
Integer
points
)
{
UseScoreRequest
userScoreRequest
=
new
UseScoreRequest
();
userScoreRequest
.
setMemberId
(
memberId
);
userScoreRequest
.
setPartnerId
(
partnerId
);
userScoreRequest
.
setChangeScore
(
points
);
userScoreRequest
.
setOperationType
(
12
);
userScoreRequest
.
setOperationName
(
"积分兑换"
);
userScoreRequest
.
setChangeType
(
2
);
userScoreRequest
.
setOrderId
(
orderCode
);
userScoreRequest
.
setOrgCode
(
""
);
userScoreRequest
.
setOrgType
(
1
);
userScoreRequest
.
setIdempotencyBussinessId
(
LogThreadLocal
.
getTrackingNo
());
userScoreRequest
.
setIdempotencyBussinessType
(
"5"
);
userScoreRequest
.
setAppId
(
appId
);
return
userScoreRequest
;
}
}
order-application-service/src/main/java/cn/freemud/enums/integralproduct/ExchangeTypeEnum.java
0 → 100644
View file @
3cff900e
package
cn
.
freemud
.
enums
.
integralproduct
;
public
enum
ExchangeTypeEnum
{
/**
* 兑换方式(1积分,2现金,3积分+现金)")
*/
TYPE_1
(
1
,
"积分"
),
TYPE_2
(
2
,
"现金"
),
TYPE_3
(
3
,
"3积分+现金"
),
;
private
Integer
code
;
private
String
desc
;
ExchangeTypeEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/PointsMallOrderServiceImpl.java
View file @
3cff900e
package
cn
.
freemud
.
service
.
impl
;
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.adapter.PointsMallOrderAdapter
;
import
cn.freemud.amp.service.SendCouponService
;
import
cn.freemud.amp.service.SendCouponService
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.DateUtil
;
...
@@ -11,7 +12,6 @@ import cn.freemud.entities.dto.BatchQueryActivityInfoResponseDto;
...
@@ -11,7 +12,6 @@ import cn.freemud.entities.dto.BatchQueryActivityInfoResponseDto;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.pay.PayOrderDto
;
import
cn.freemud.entities.dto.pay.PayOrderDto
;
import
cn.freemud.entities.dto.pay.PayProductDto
;
import
cn.freemud.entities.dto.pay.UnifiedOrderRequestDto
;
import
cn.freemud.entities.dto.pay.UnifiedOrderRequestDto
;
import
cn.freemud.entities.dto.product.pointsmall.*
;
import
cn.freemud.entities.dto.product.pointsmall.*
;
import
cn.freemud.entities.dto.user.CustomerPropertyBaseResponse
;
import
cn.freemud.entities.dto.user.CustomerPropertyBaseResponse
;
...
@@ -22,6 +22,7 @@ import cn.freemud.entities.vo.*;
...
@@ -22,6 +22,7 @@ import cn.freemud.entities.vo.*;
import
cn.freemud.enums.ChannelEnum
;
import
cn.freemud.enums.ChannelEnum
;
import
cn.freemud.enums.OrderBeanType
;
import
cn.freemud.enums.OrderBeanType
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.integralproduct.ExchangeTypeEnum
;
import
cn.freemud.enums.integralproduct.IntegralProductStatusEnum
;
import
cn.freemud.enums.integralproduct.IntegralProductStatusEnum
;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.PointsMallOrderService
;
import
cn.freemud.service.PointsMallOrderService
;
...
@@ -43,14 +44,12 @@ import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
...
@@ -43,14 +44,12 @@ import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayChannelType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayChannelType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderAffirmReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderAffirmReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderUserConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderUserConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.PaySuccessReq
;
import
com.freemud.application.sdk.api.ordercenter.request.PaySuccessReq
;
import
com.freemud.application.sdk.api.ordercenter.request.UpdateOrderReq
;
import
com.freemud.application.sdk.api.ordercenter.request.UpdateOrderReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.
*
;
import
com.freemud.application.sdk.api.ordercenter.request.create.
CreateOrderRequest
;
import
com.freemud.application.sdk.api.ordercenter.response.QueryOrderForUserResp
;
import
com.freemud.application.sdk.api.ordercenter.response.QueryOrderForUserResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.DeliveryContactInfoResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.DeliveryContactInfoResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
...
@@ -58,8 +57,6 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemR
...
@@ -58,8 +57,6 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemR
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto
;
import
com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
...
@@ -96,6 +93,9 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -96,6 +93,9 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
@Autowired
@Autowired
private
AssortmentOpenPlatformIappWxappStoreManager
assortmentOpenPlatformIappWxappStoreManager
;
private
AssortmentOpenPlatformIappWxappStoreManager
assortmentOpenPlatformIappWxappStoreManager
;
@Autowired
private
PointsMallOrderAdapter
pointsMallOrderAdapter
;
@Value
(
"${saas.reverseNotifyiDcUrl}"
)
@Value
(
"${saas.reverseNotifyiDcUrl}"
)
private
String
reverseNotifyiDcUrl
;
private
String
reverseNotifyiDcUrl
;
...
@@ -118,16 +118,9 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -118,16 +118,9 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
if
(
CollectionUtils
.
isNotEmpty
(
createOrderVo
.
getProducts
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
createOrderVo
.
getProducts
()))
{
skuId
=
createOrderVo
.
getProducts
().
get
(
0
).
getSkuId
();
skuId
=
createOrderVo
.
getProducts
().
get
(
0
).
getSkuId
();
}
}
String
clientCode
=
""
;
String
storeId
=
getPiontProductPayStoreId
(
appId
,
clientCode
);
//查询商品信息并且校验用户是否能购买 /product/listProductInfo 查询积分商品详情,可根据入参校验商品
//查询商品信息并且校验用户是否能购买 /product/listProductInfo 查询积分商品详情,可根据入参校验商品
PointMallListProductInfoRequest
productInfoRequest
=
new
PointMallListProductInfoRequest
();
PointMallListProductInfoRequest
productInfoRequest
=
pointsMallOrderAdapter
.
convent2PointMallListProductInfoRequest
(
partnerId
,
memberId
,
skuId
);
productInfoRequest
.
setPartnerId
(
partnerId
);
productInfoRequest
.
setMemberId
(
memberId
);
productInfoRequest
.
setProductIdList
(
Arrays
.
asList
(
skuId
));
productInfoRequest
.
setValidateMember
(
true
);
productInfoRequest
.
setValidateStock
(
true
);
productInfoRequest
.
setValidateTime
(
true
);
PointMallListProductInfoResponse
<
List
<
IntegralProductType
>>
productInfosDto
=
pointMallProductClient
.
listProductInfo
(
productInfoRequest
);
PointMallListProductInfoResponse
<
List
<
IntegralProductType
>>
productInfosDto
=
pointMallProductClient
.
listProductInfo
(
productInfoRequest
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
productInfosDto
.
getStatusCode
())
||
CollectionUtils
.
isEmpty
(
productInfosDto
.
getResult
()))
{
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
productInfosDto
.
getStatusCode
())
||
CollectionUtils
.
isEmpty
(
productInfosDto
.
getResult
()))
{
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
"商品异常"
);
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
"商品异常"
);
...
@@ -137,9 +130,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -137,9 +130,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
message
!=
null
?
message
.
getDesc
()
:
"商品异常"
);
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
message
!=
null
?
message
.
getDesc
()
:
"商品异常"
);
}
}
IntegralProductType
integralProductType
=
productInfosDto
.
getResult
().
get
(
0
);
IntegralProductType
integralProductType
=
productInfosDto
.
getResult
().
get
(
0
);
// if (!Objects.equals(1, integralProductType.getExchangeType())) {
// return ResponseUtil.error(ResponseCodeConstant.RESPONSE_ERROR_STR, "积分商城暂不支持现金兑换");
// }
Integer
points
=
integralProductType
.
getIntegralPrice
();
Integer
points
=
integralProductType
.
getIntegralPrice
();
Integer
cashPrice
=
integralProductType
.
getCashPrice
();
Integer
cashPrice
=
integralProductType
.
getCashPrice
();
Integer
exchangeType
=
integralProductType
.
getExchangeType
();
Integer
exchangeType
=
integralProductType
.
getExchangeType
();
...
@@ -148,13 +139,20 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -148,13 +139,20 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
if
(!
isCoupon
&&
(
weixinDeliveryAddress
==
null
||
StringUtils
.
isEmpty
(
weixinDeliveryAddress
.
getProvinceName
())))
{
if
(!
isCoupon
&&
(
weixinDeliveryAddress
==
null
||
StringUtils
.
isEmpty
(
weixinDeliveryAddress
.
getProvinceName
())))
{
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
"收货地址异常"
);
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
"收货地址异常"
);
}
}
String
storeId
=
"99999"
;
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
getPointProductPayStoreInfo
(
appId
);
if
(
wxAppStore
==
null
&&
!
ExchangeTypeEnum
.
TYPE_1
.
getCode
().
equals
(
exchangeType
)){
return
ResponseUtil
.
error
(
ResponseCodeConstant
.
RESPONSE_ERROR_STR
,
"支付门店未配置"
);
}
if
(
wxAppStore
!=
null
){
storeId
=
wxAppStore
.
getStoreId
();
}
Active
active
=
null
;
Active
active
=
null
;
if
(
isCoupon
)
{
if
(
isCoupon
)
{
String
activityCode
=
integralProductType
.
getCouponCode
();
String
activityCode
=
integralProductType
.
getCouponCode
();
//券商品查询券活动信息校验券有效
//券商品查询券活动信息校验券有效
BatchQueryActivityInfoRequestDto
queryActivityInfoRequestDto
=
new
BatchQueryActivityInfoRequestDto
();
BatchQueryActivityInfoRequestDto
queryActivityInfoRequestDto
=
new
BatchQueryActivityInfoRequestDto
();
queryActivityInfoRequestDto
.
setActiveCode
(
Arrays
.
asList
(
activityCode
));
queryActivityInfoRequestDto
.
setActiveCode
(
Arrays
.
asList
(
activityCode
));
// queryActivityInfoRequestDto.setActiveCode(Arrays.asList("V1628760321931083"));
queryActivityInfoRequestDto
.
setPartnerId
(
Integer
.
valueOf
(
partnerId
));
queryActivityInfoRequestDto
.
setPartnerId
(
Integer
.
valueOf
(
partnerId
));
BatchQueryActivityInfoResponseDto
batchQueryActivityInfoResponseDto
=
couponService
.
batchQueryActivityInfo
(
queryActivityInfoRequestDto
);
BatchQueryActivityInfoResponseDto
batchQueryActivityInfoResponseDto
=
couponService
.
batchQueryActivityInfo
(
queryActivityInfoRequestDto
);
if
(!
Objects
.
equals
(
"0"
,
batchQueryActivityInfoResponseDto
.
getStatusCode
()))
{
if
(!
Objects
.
equals
(
"0"
,
batchQueryActivityInfoResponseDto
.
getStatusCode
()))
{
...
@@ -163,7 +161,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -163,7 +161,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
active
=
batchQueryActivityInfoResponseDto
.
getActivities
().
get
(
0
);
active
=
batchQueryActivityInfoResponseDto
.
getActivities
().
get
(
0
);
}
}
if
(
exchangeType
!=
2
)
{
if
(
!
ExchangeTypeEnum
.
TYPE_2
.
getCode
().
equals
(
exchangeType
)
)
{
//查询积分信息
//查询积分信息
StatisticalScoreRequestVo
statisticalScoreRequest
=
new
StatisticalScoreRequestVo
();
StatisticalScoreRequestVo
statisticalScoreRequest
=
new
StatisticalScoreRequestVo
();
statisticalScoreRequest
.
setPartnerId
(
userLoginInfoDto
.
getPartnerId
());
statisticalScoreRequest
.
setPartnerId
(
userLoginInfoDto
.
getPartnerId
());
...
@@ -177,7 +175,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -177,7 +175,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
}
}
}
}
//创建订单
//创建订单
CreateOrderRequest
createOrderRequest
=
convent2NEWCreateOrderRequest
(
OrderClientType
.
I_MEMBER
.
getIndex
(),
userLoginInfoDto
,
CreateOrderRequest
createOrderRequest
=
pointsMallOrderAdapter
.
convent2NEWCreateOrderRequest
(
OrderClientType
.
I_MEMBER
.
getIndex
(),
userLoginInfoDto
,
storeId
,
""
,
""
,
4
,
integralProductType
,
skuId
,
active
,
weixinDeliveryAddress
);
storeId
,
""
,
""
,
4
,
integralProductType
,
skuId
,
active
,
weixinDeliveryAddress
);
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
createOrderResponseDto
=
orderSdkService
.
createOrder
(
createOrderRequest
,
""
);
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
createOrderResponseDto
=
orderSdkService
.
createOrder
(
createOrderRequest
,
""
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
createOrderResponseDto
.
getCode
()))
{
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
createOrderResponseDto
.
getCode
()))
{
...
@@ -189,8 +187,10 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -189,8 +187,10 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
CreateOrderResponseVo
createOrderResponseVo
=
new
CreateOrderResponseVo
();
CreateOrderResponseVo
createOrderResponseVo
=
new
CreateOrderResponseVo
();
//线上现金支付,创建预支付订单,唤起支付
//线上现金支付,创建预支付订单,唤起支付
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
FacePayResponseDto
>
response
=
null
;
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
FacePayResponseDto
>
response
=
null
;
if
(!
Objects
.
equals
(
1
,
exchangeType
)
&&
cashPrice
!=
null
&&
cashPrice
>
0
)
{
if
(!
Objects
.
equals
(
ExchangeTypeEnum
.
TYPE_1
.
getCode
(),
exchangeType
)
&&
cashPrice
!=
null
&&
cashPrice
>
0
)
{
UnifiedOrderRequestDto
requestDto
=
convert2UnifiedOrderRequestDto
(
result
,
openId
,
cashPrice
);
Long
payClientCode
=
Long
.
parseLong
(
wxAppStore
.
getClientCode
());
UnifiedOrderRequestDto
requestDto
=
pointsMallOrderAdapter
.
convert2UnifiedOrderRequestDto
(
result
,
openId
,
cashPrice
,
payClientCode
,
reverseNotifyiDcUrl
,
getPartnerPayOvertime
(
partnerId
));
response
=
paymentNewClient
.
unifiedOrder
(
requestDto
);
response
=
paymentNewClient
.
unifiedOrder
(
requestDto
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
response
.
getCode
()))
{
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
response
.
getCode
()))
{
return
ResponseUtil
.
error
(
createOrderResponseDto
.
getCode
(),
"支付异常"
);
return
ResponseUtil
.
error
(
createOrderResponseDto
.
getCode
(),
"支付异常"
);
...
@@ -213,51 +213,30 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -213,51 +213,30 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
createOrderResponseVo
.
setOrderStr
(
payOrder
.
getAliPayOrder
());
createOrderResponseVo
.
setOrderStr
(
payOrder
.
getAliPayOrder
());
}
}
}
}
//保存支付信息
BaseResponse
baseResponse1
=
updateOrder
(
orderCode
,
points
,
cashPrice
,
partnerId
,
storeId
,
createOrderResponseVo
.
getFmId
(),
channel
);
BaseResponse
baseResponse1
=
updateOrder
(
orderCode
,
points
,
cashPrice
,
partnerId
,
storeId
,
createOrderResponseVo
.
getFmId
(),
channel
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse1
.
getCode
()))
{
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse1
.
getCode
()))
{
return
ResponseUtil
.
error
(
createOrderResponseDto
.
getCode
(),
"更新订单异常"
);
return
ResponseUtil
.
error
(
createOrderResponseDto
.
getCode
(),
"更新订单异常"
);
}
}
//扣减积分商品商品库存
//扣减积分商品商品库存
UpdatePointsMallStocksRequest
updatePointsMallStocksRequest
=
new
UpdatePointsMallStocksRequest
();
UpdatePointsMallStocksRequest
updatePointsMallStocksRequest
=
pointsMallOrderAdapter
.
convent2UpdatePointsMallStocksRequest
(
partnerId
,
memberId
,
skuId
,
orderCode
);
updatePointsMallStocksRequest
.
setPartnerId
(
partnerId
);
updatePointsMallStocksRequest
.
setMemberId
(
memberId
);
updatePointsMallStocksRequest
.
setChangeType
(
2
);
updatePointsMallStocksRequest
.
setRemark
(
"积分商城兑换"
);
updatePointsMallStocksRequest
.
setTransTime
(
DateUtil
.
convert2String
(
new
Date
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
));
updatePointsMallStocksRequest
.
setTransNo
(
orderCode
);
ProductStockRequest
productStockRequest
=
new
ProductStockRequest
();
productStockRequest
.
setProductId
(
skuId
);
productStockRequest
.
setExchangeNumber
(
1
);
productStockRequest
.
setStockNumber
(
1
);
updatePointsMallStocksRequest
.
setProductStocks
(
Arrays
.
asList
(
productStockRequest
));
PointMallListProductInfoResponse
pointMallListProductInfoResponse
=
pointMallProductClient
.
updateStock
(
updatePointsMallStocksRequest
);
PointMallListProductInfoResponse
pointMallListProductInfoResponse
=
pointMallProductClient
.
updateStock
(
updatePointsMallStocksRequest
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
pointMallListProductInfoResponse
.
getStatusCode
()))
{
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
pointMallListProductInfoResponse
.
getStatusCode
()))
{
return
ResponseUtil
.
error
(
pointMallListProductInfoResponse
.
getStatusCode
().
toString
(),
"扣减库存失败"
);
return
ResponseUtil
.
error
(
pointMallListProductInfoResponse
.
getStatusCode
().
toString
(),
"扣减库存失败"
);
}
}
//全积分支付商品,订单完成
if
(
ExchangeTypeEnum
.
TYPE_1
.
getCode
().
equals
(
exchangeType
)){
//扣减积分 (失败:失败冲正活动库存)
//扣减积分 (失败:失败冲正活动库存)
if
(
points
!=
null
&&
points
>
0
)
{
if
(
points
!=
null
&&
points
>
0
)
{
UseScoreRequest
userScoreRequest
=
new
UseScoreRequest
();
UseScoreRequest
userScoreRequest
=
pointsMallOrderAdapter
.
convent2UseScoreRequest
(
partnerId
,
memberId
,
appId
,
orderCode
,
points
);
userScoreRequest
.
setMemberId
(
memberId
);
userScoreRequest
.
setPartnerId
(
partnerId
);
userScoreRequest
.
setChangeScore
(
points
);
userScoreRequest
.
setOperationType
(
12
);
userScoreRequest
.
setOperationName
(
"积分兑换"
);
userScoreRequest
.
setChangeType
(
2
);
userScoreRequest
.
setOrderId
(
orderCode
);
userScoreRequest
.
setOrgCode
(
""
);
userScoreRequest
.
setOrgType
(
1
);
userScoreRequest
.
setIdempotencyBussinessId
(
LogThreadLocal
.
getTrackingNo
());
userScoreRequest
.
setIdempotencyBussinessType
(
"5"
);
userScoreRequest
.
setAppId
(
userLoginInfoDto
.
getAppId
());
CustomerPropertyBaseResponse
baseResponse
=
customerPropertyClient
.
useScore
(
userScoreRequest
);
CustomerPropertyBaseResponse
baseResponse
=
customerPropertyClient
.
useScore
(
userScoreRequest
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse
.
getCode
()))
{
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse
.
getCode
()))
{
createOrderFail
(
true
,
false
,
partnerId
,
memberId
,
orderCode
,
skuId
,
points
,
appId
);
createOrderFail
(
true
,
false
,
partnerId
,
memberId
,
orderCode
,
skuId
,
points
,
appId
);
return
ResponseUtil
.
error
(
baseResponse
.
getCode
(),
"扣减积分失败"
);
return
ResponseUtil
.
error
(
baseResponse
.
getCode
(),
"扣减积分失败"
);
}
}
}
}
if
(
exchangeType
==
1
){
BaseResponse
response1
=
orderPaySuccess
(
createOrderResponseDto
.
getResult
(),
false
);
BaseResponse
response1
=
orderPaySuccess
(
createOrderResponseDto
.
getResult
());
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
response1
.
getCode
())){
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
response1
.
getCode
())){
return
response1
;
return
response1
;
}
}
...
@@ -332,7 +311,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -332,7 +311,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
orderItemList
.
add
(
orderItemResp
);
orderItemList
.
add
(
orderItemResp
);
}
}
orderInfo
.
setOrderItemList
(
orderItemList
);
orderInfo
.
setOrderItemList
(
orderItemList
);
BaseResponse
baseResponse
=
orderPaySuccess
(
orderInfo
);
BaseResponse
baseResponse
=
orderPaySuccess
(
orderInfo
,
true
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse
.
getCode
())){
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse
.
getCode
())){
return
refundFaileMessage
(
baseResponse
.
getMessage
());
return
refundFaileMessage
(
baseResponse
.
getMessage
());
}
}
...
@@ -521,167 +500,15 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -521,167 +500,15 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
}
}
private
ProductBindingCouponType
convent2ProductBindingCouponType
(
Active
active
)
{
ProductBindingCouponType
productBindingCouponType2
=
new
ProductBindingCouponType
();
productBindingCouponType2
.
setActivityCode
(
active
.
getActiveCode
());
productBindingCouponType2
.
setNum
(
1
);
productBindingCouponType2
.
setActivityName
(
active
.
getActiveName
());
return
productBindingCouponType2
;
}
private
OrderItemCreateReq
convent2OrderItemCreateReq
(
IntegralProductType
productBean
,
String
partnerId
,
String
skuId
,
Active
active
)
{
boolean
isCoupon
=
productBean
.
getProductType
()
==
1
;
//积分价格
Integer
integralPrice
=
productBean
.
getIntegralPrice
()
==
null
?
0
:
productBean
.
getIntegralPrice
();
//现金价格(分)
Integer
cashPrice
=
productBean
.
getCashPrice
()
==
null
?
0
:
productBean
.
getCashPrice
();
Integer
settlementAmount
=
integralPrice
+
cashPrice
;
OrderItemCreateReq
orderItemCreateReq
=
new
OrderItemCreateReq
();
orderItemCreateReq
.
setPartnerId
(
partnerId
);
orderItemCreateReq
.
setSalePrice
(
cashPrice
.
longValue
());
orderItemCreateReq
.
setProductPrice
(
integralPrice
.
longValue
());
orderItemCreateReq
.
setSettlementPrice
(
settlementAmount
.
longValue
());
orderItemCreateReq
.
setProductId
(
skuId
);
orderItemCreateReq
.
setProductSpec
(
skuId
);
orderItemCreateReq
.
setProductName
(
productBean
.
getProductName
());
orderItemCreateReq
.
setProductSpecName
(
productBean
.
getProductName
());
orderItemCreateReq
.
setProductType
(
productBean
.
getProductType
());
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getPictureList
()))
{
orderItemCreateReq
.
setProductPicUrl
(
productBean
.
getPictureList
().
get
(
0
));
}
orderItemCreateReq
.
setProductSeq
(
1
);
if
(
productBean
.
getEntityProductInfo
()
!=
null
)
{
orderItemCreateReq
.
setProductCode
(
productBean
.
getEntityProductInfo
().
getProductId
());
orderItemCreateReq
.
setThirdProductId
(
productBean
.
getEntityProductInfo
().
getProductId
());
orderItemCreateReq
.
setProductPicUrl
(
productBean
.
getEntityProductInfo
().
getPicture
());
}
if
(
isCoupon
)
{
//添加商品绑定的券
OrderProductAddInfoDto
orderProductAddInfoDto
=
new
OrderProductAddInfoDto
();
List
<
ProductBindingCouponType
>
productBindingCoupons
=
new
ArrayList
<>();
productBindingCoupons
.
add
(
convent2ProductBindingCouponType
(
active
));
orderProductAddInfoDto
.
setProductBindingCoupons
(
productBindingCoupons
);
orderItemCreateReq
.
setExtInfo
(
JSONObject
.
toJSONString
(
orderProductAddInfoDto
));
}
orderItemCreateReq
.
setProductQuantity
(
1
);
return
orderItemCreateReq
;
}
private
OrderSettlementCreateReq
convent2OrderSettlementCreateReq
(
IntegralProductType
productBean
)
{
OrderSettlementCreateReq
orderSettlementCreateReq
=
new
OrderSettlementCreateReq
();
orderSettlementCreateReq
.
setNumber
(
productBean
.
getIntegralPrice
());
orderSettlementCreateReq
.
setProductSeq
(
1
);
orderSettlementCreateReq
.
setExternalObjectId
(
""
);
//商家优惠
orderSettlementCreateReq
.
setShopDiscountAmount
(
0L
);
//结算金额
orderSettlementCreateReq
.
setSettlementAmount
(
productBean
.
getIntegralPrice
().
longValue
());
//是否线上 false:不是 true:是
orderSettlementCreateReq
.
setIsOnline
(
true
);
orderSettlementCreateReq
.
setSettlementType
(
OrderSettlementType
.
POINTS
.
getIndex
());
return
orderSettlementCreateReq
;
}
private
CreateOrderRequest
convent2NEWCreateOrderRequest
(
Integer
orderClient
,
AssortmentCustomerInfoVo
userLoginInfoDto
,
String
shopId
,
String
cardCode
,
String
channel
,
Integer
bizType
,
IntegralProductType
productBean
,
String
skuId
,
Active
active
,
WeixinDeliveryAddressDto
weixinDeliveryAddress
)
{
CreateOrderRequest
request
=
new
CreateOrderRequest
();
String
partnerId
=
userLoginInfoDto
.
getPartnerId
();
request
.
setOrderClient
(
orderClient
);
request
.
setPartnerId
(
partnerId
);
request
.
setStoreId
(
shopId
);
request
.
setStoreName
(
"虚拟门店"
);
request
.
setThirdStoreId
(
""
);
//买券虚拟订单 不管APP卖券还是平台,依旧保留传入6
request
.
setBizType
(
bizType
);
//1:线上支付 2:线下支付
request
.
setPayType
(
1
);
request
.
setUserId
(
userLoginInfoDto
.
getMemberId
());
request
.
setUserName
(
userLoginInfoDto
.
getNickName
());
request
.
setOrderState
(
1
);
request
.
setPayState
(
1
);
if
(
StringUtils
.
isNotBlank
(
cardCode
))
{
request
.
setPayChannel
(
"10102"
);
request
.
setPayChannelName
(
"储值卡支付"
);
}
//积分价格
Integer
integralPrice
=
productBean
.
getIntegralPrice
()
==
null
?
0
:
productBean
.
getIntegralPrice
();
//现金价格(分)
Integer
cashPrice
=
productBean
.
getCashPrice
()
==
null
?
0
:
productBean
.
getCashPrice
();
// Integer settlementAmount = integralPrice + cashPrice;
//订单原始金额,单位分
//用户在界面上看到的支付金额
request
.
setSettlementAmount
(
cashPrice
.
longValue
());
//实际支付现金金额,扣除支付自生优惠,单位分`
request
.
setActualPayAmount
(
cashPrice
.
longValue
());
request
.
setOriginalAmount
(
cashPrice
.
longValue
());
request
.
setOrderType
(
OrderType
.
GENERAL_DINE_IN
.
getIndex
());
//商品信息赋值
OrderItemCreateReq
orderItemCreateReq
=
convent2OrderItemCreateReq
(
productBean
,
partnerId
,
skuId
,
active
);
request
.
setOrderItemList
(
Arrays
.
asList
(
orderItemCreateReq
));
//积分优惠
OrderSettlementCreateReq
orderSettlementCreateReq
=
convent2OrderSettlementCreateReq
(
productBean
);
request
.
setOrderSettlementDetailList
(
Arrays
.
asList
(
orderSettlementCreateReq
));
//收货人信息转换
List
<
DeliveryContactInfoCreateReq
>
deliveryContactInfoList
=
new
ArrayList
<>();
DeliveryContactInfoCreateReq
deliveryContactInfoCreateReq
=
new
DeliveryContactInfoCreateReq
();
//地址类型 1:订单地址 2:售后单地址 3:配送员信息
deliveryContactInfoCreateReq
.
setRelateObjectType
(
1
);
//联系方式类型 1:取件 2:收件
deliveryContactInfoCreateReq
.
setInfoType
(
1
);
deliveryContactInfoCreateReq
.
setContactsName
(
userLoginInfoDto
.
getNickName
());
deliveryContactInfoCreateReq
.
setMobile
(
userLoginInfoDto
.
getMobile
());
deliveryContactInfoCreateReq
.
setLatitude
(
null
);
deliveryContactInfoCreateReq
.
setLongitude
(
null
);
deliveryContactInfoCreateReq
.
setAddressDetail
(
null
);
deliveryContactInfoCreateReq
.
setProvince
(
null
);
deliveryContactInfoCreateReq
.
setCity
(
null
);
deliveryContactInfoCreateReq
.
setRegion
(
null
);
if
(
weixinDeliveryAddress
!=
null
)
{
deliveryContactInfoCreateReq
.
setContactsName
(
weixinDeliveryAddress
.
getUserName
());
deliveryContactInfoCreateReq
.
setMobile
(
weixinDeliveryAddress
.
getTelNumber
());
deliveryContactInfoCreateReq
.
setProvince
(
weixinDeliveryAddress
.
getProvinceName
());
deliveryContactInfoCreateReq
.
setCity
(
weixinDeliveryAddress
.
getCityName
());
deliveryContactInfoCreateReq
.
setRegion
(
weixinDeliveryAddress
.
getCountyName
());
deliveryContactInfoCreateReq
.
setAddressDetail
(
weixinDeliveryAddress
.
getDetailInfo
());
}
deliveryContactInfoList
.
add
(
deliveryContactInfoCreateReq
);
request
.
setDeliveryContactInfoList
(
deliveryContactInfoList
);
request
.
setOperator
(
userLoginInfoDto
.
getNickName
());
request
.
setAppId
(
userLoginInfoDto
.
getWxAppId
());
request
.
setPayChannel
(
channel
);
return
request
;
}
/**
* 预支付接口获取类型
*
* @return
*/
private
String
getFoodOrderType
(
Integer
orderType
)
{
//1=外卖 4=自提,5=堂食
//qr_order(店内扫码点餐),pre_order(预点到店自提),home_delivery (外送到家)
String
foodOrderType
;
switch
(
orderType
)
{
case
1
:
foodOrderType
=
"home_delivery"
;
break
;
case
4
:
foodOrderType
=
"pre_order"
;
break
;
case
5
:
default
:
foodOrderType
=
"qr_order"
;
break
;
}
return
foodOrderType
;
}
/**
/**
* 获取商户支付超时时间
* 获取商户支付超时时间
...
@@ -708,73 +535,23 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -708,73 +535,23 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
assortmentOpenPlatformIappWxappStoreManager
.
selectWxappStoreByWxAppIdAndStoreId
(
wxAppId
,
storeId
,
payCode
);
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
assortmentOpenPlatformIappWxappStoreManager
.
selectWxappStoreByWxAppIdAndStoreId
(
wxAppId
,
storeId
,
payCode
);
payCode
=
wxAppStore
!=
null
&&
StringUtils
.
isNotBlank
(
wxAppStore
.
getPayCode
())?
wxAppStore
.
getPayCode
():
null
;
//
payCode = wxAppStore != null && StringUtils.isNotBlank(wxAppStore.getPayCode())?wxAppStore.getPayCode():null;
String
clientCode
=
wxAppStore
!=
null
&&
StringUtils
.
isNotBlank
(
wxAppStore
.
getClientCode
())
?
wxAppStore
.
getClientCode
()
:
"0"
;
String
clientCode
=
wxAppStore
!=
null
&&
StringUtils
.
isNotBlank
(
wxAppStore
.
getClientCode
())
?
wxAppStore
.
getClientCode
()
:
"0"
;
return
Long
.
parseLong
(
clientCode
);
return
Long
.
parseLong
(
clientCode
);
}
}
private
String
getPiontProductPayStoreId
(
String
wxAppId
,
String
clientCode
){
private
AssortmentOpenPlatformIappWxappStore
getPointProductPayStoreInfo
(
String
wxAppId
){
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
assortmentOpenPlatformIappWxappStoreManager
.
selectIappWxappStoreByWxAppIdAndAggregationType
(
wxAppId
,
"9"
);
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
assortmentOpenPlatformIappWxappStoreManager
.
selectIappWxappStoreByWxAppIdAndAggregationType
(
wxAppId
,
"9"
);
String
storeId
=
wxAppStore
!=
null
&&
StringUtils
.
isNotBlank
(
wxAppStore
.
getStoreId
())?
wxAppStore
.
getStoreId
():
null
;
return
wxAppStore
;
clientCode
=
wxAppStore
!=
null
&&
StringUtils
.
isNotBlank
(
wxAppStore
.
getClientCode
())
?
wxAppStore
.
getClientCode
()
:
"0"
;
return
storeId
;
}
private
UnifiedOrderRequestDto
convert2UnifiedOrderRequestDto
(
OrderInfoReqs
orderInfo
,
String
openId
,
Integer
cashPrice
){
String
partnerId
=
orderInfo
.
getPartnerId
();
String
storeId
=
orderInfo
.
getStoreId
();
String
appId
=
orderInfo
.
getAppId
();
//现金支付唤起线上支付
UnifiedOrderRequestDto
requestDto
=
new
UnifiedOrderRequestDto
();
requestDto
.
setTransId
(
orderInfo
.
getOrderCode
());
requestDto
.
setPartnerId
(
partnerId
);
requestDto
.
setStoreId
(
storeId
);
requestDto
.
setAmount
(
cashPrice
.
longValue
());
String
businessDate
=
DateUtil
.
convert2String
(
new
Date
(),
"yyyyMMdd"
);
requestDto
.
setBusinessDate
(
businessDate
);
requestDto
.
setClientCode
(
getPayClientCode
(
appId
,
storeId
,
null
,
null
));
requestDto
.
setFoodOrderType
(
getFoodOrderType
(
1
));
requestDto
.
setNotifyUrl
(
reverseNotifyiDcUrl
);
requestDto
.
setOpenId
(
openId
);
requestDto
.
setPayTimeOutTime
(
getPartnerPayOvertime
(
partnerId
));
List
<
PayProductDto
>
productBeans
=
new
ArrayList
<>();
String
payProductName
=
""
;
if
(
CollectionUtils
.
isNotEmpty
(
orderInfo
.
getOrderItemList
()))
{
for
(
OrderItemResp
orderProductBean
:
orderInfo
.
getOrderItemList
()){
PayProductDto
productBean
=
new
PayProductDto
();
productBean
.
setId
(
orderProductBean
.
getProductId
());
productBean
.
setQuantity
(
orderProductBean
.
getProductQuantity
());
// productBean.setSeq(orderProductBean.getProductSeq());
// productBean.setSalesType("NORMAL");
productBean
.
setPrice
(
orderProductBean
.
getProductPrice
().
longValue
());
if
(
StringUtils
.
isNotBlank
(
payProductName
)){
payProductName
=
orderProductBean
.
getProductName
();
}
else
if
(
payProductName
.
endsWith
(
"..."
)){
//不处理
}
else
{
payProductName
=
payProductName
+
"..."
;
}
productBean
.
setName
(
orderProductBean
.
getProductName
());
productBeans
.
add
(
productBean
);
}
}
requestDto
.
setBody
(
payProductName
);
return
requestDto
;
}
}
//共用支付成功方法
//共用支付成功方法
private
BaseResponse
orderPaySuccess
(
OrderInfoReqs
orderInfo
){
private
BaseResponse
orderPaySuccess
(
OrderInfoReqs
orderInfo
,
Boolean
isCash
){
String
nickName
=
orderInfo
.
getUserName
();
String
nickName
=
orderInfo
.
getUserName
();
String
orderCode
=
orderInfo
.
getOrderCode
();
String
orderCode
=
orderInfo
.
getOrderCode
();
String
partnerId
=
orderInfo
.
getPartnerId
();
String
partnerId
=
orderInfo
.
getPartnerId
();
...
@@ -805,6 +582,15 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
...
@@ -805,6 +582,15 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
createOrderFail
(
false
,
true
,
partnerId
,
memberId
,
orderCode
,
skuId
,
points
,
appId
);
createOrderFail
(
false
,
true
,
partnerId
,
memberId
,
orderCode
,
skuId
,
points
,
appId
);
return
ResponseUtil
.
error
(
updateOrderStateResp
.
getCode
(),
"更新订单异常"
);
return
ResponseUtil
.
error
(
updateOrderStateResp
.
getCode
(),
"更新订单异常"
);
}
}
//有现金支付,扣减积分
if
(
isCash
)
{
Integer
points
=
orderInfo
.
getOrderPayItemCreateReqList
().
get
(
0
).
getPayAmount
().
intValue
();
UseScoreRequest
userScoreRequest
=
pointsMallOrderAdapter
.
convent2UseScoreRequest
(
partnerId
,
memberId
,
appId
,
orderCode
,
points
);
CustomerPropertyBaseResponse
baseResponse
=
customerPropertyClient
.
useScore
(
userScoreRequest
);
if
(!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
,
baseResponse
.
getCode
()))
{
return
ResponseUtil
.
error
(
baseResponse
.
getCode
(),
"扣减积分失败"
);
}
}
return
ResponseUtil
.
success
();
return
ResponseUtil
.
success
();
}
}
...
...
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