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
1618edf5
Commit
1618edf5
authored
Jul 17, 2021
by
ping.wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
购买虚拟商品特价
parent
dc803552
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
103 additions
and
0 deletions
+103
-0
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/CalculationDiscountRequestDto.java
+3
-0
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
+93
-0
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionActivityClient.java
+7
-0
No files found.
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/CalculationDiscountRequestDto.java
View file @
1618edf5
...
@@ -92,4 +92,7 @@ public class CalculationDiscountRequestDto {
...
@@ -92,4 +92,7 @@ public class CalculationDiscountRequestDto {
* 拼团活动是,必传活动号
* 拼团活动是,必传活动号
*/
*/
private
List
<
String
>
groupActivityCode
;
private
List
<
String
>
groupActivityCode
;
//指定参与的活动类型
private
List
<
Integer
>
activityTypes
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
View file @
1618edf5
...
@@ -10,7 +10,10 @@ import cn.freemud.entities.Active;
...
@@ -10,7 +10,10 @@ import cn.freemud.entities.Active;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.product.GetValidateProductInfoDto
;
import
cn.freemud.entities.dto.product.GetValidateProductInfoDto
;
import
cn.freemud.entities.dto.product.ProductInfo
;
import
cn.freemud.entities.dto.product.ValidateProductInfosDto
;
import
cn.freemud.entities.dto.product.ValidateProductInfosDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
cn.freemud.entities.vo.GetMemberCouponRequestVo
;
import
cn.freemud.entities.vo.GetMemberCouponRequestVo
;
import
cn.freemud.entities.vo.NgsSellCouponCreateOrderVo
;
import
cn.freemud.entities.vo.NgsSellCouponCreateOrderVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
...
@@ -24,6 +27,8 @@ import cn.freemud.manager.BuyProductOnceManager;
...
@@ -24,6 +27,8 @@ import cn.freemud.manager.BuyProductOnceManager;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.business.OrderBusinessService
;
import
cn.freemud.service.business.OrderBusinessService
;
import
cn.freemud.service.thirdparty.PromotionActivityClient
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
cn.freemud.utils.AppLogUtil
;
import
cn.freemud.utils.AppLogUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
cn.freemud.utils.ResponseUtil
;
...
@@ -54,6 +59,7 @@ import com.freemud.application.sdk.api.productcenter.request.product.GetProductI
...
@@ -54,6 +59,7 @@ import com.freemud.application.sdk.api.productcenter.request.product.GetProductI
import
com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryInfoResponse
;
import
com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryInfoResponse
;
import
com.freemud.application.sdk.api.productcenter.response.product.GetProductInfosResponse
;
import
com.freemud.application.sdk.api.productcenter.response.product.GetProductInfosResponse
;
import
com.freemud.application.sdk.api.productcenter.service.MenuService
;
import
com.freemud.application.sdk.api.productcenter.service.MenuService
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.application.sdk.api.stockapi.service.StockSdkService
;
import
com.freemud.application.sdk.api.stockapi.service.StockSdkService
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
...
@@ -151,6 +157,12 @@ public class SellCouponOrderServiceImpl {
...
@@ -151,6 +157,12 @@ public class SellCouponOrderServiceImpl {
@Autowired
@Autowired
private
BuyProductOnceManager
buyProductOnceManager
;
private
BuyProductOnceManager
buyProductOnceManager
;
@Autowired
private
PromotionDiscountClient
promotionDiscountClient
;
@Autowired
private
PromotionActivityClient
promotionActivityClient
;
/**
/**
* 卖券订单创建
* 卖券订单创建
*/
*/
...
@@ -201,7 +213,11 @@ public class SellCouponOrderServiceImpl {
...
@@ -201,7 +213,11 @@ public class SellCouponOrderServiceImpl {
if
(
createOrderRequestResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderRequestResponse
.
getCode
())
||
createOrderRequestResponse
.
getResult
()
==
null
)
{
if
(
createOrderRequestResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderRequestResponse
.
getCode
())
||
createOrderRequestResponse
.
getResult
()
==
null
)
{
return
createOrderRequestResponse
;
return
createOrderRequestResponse
;
}
}
CreateOrderRequest
createOrderRequest
=
(
CreateOrderRequest
)
createOrderRequestResponse
.
getResult
();
CreateOrderRequest
createOrderRequest
=
(
CreateOrderRequest
)
createOrderRequestResponse
.
getResult
();
//标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stockBeanDtos
=
calculationDiscount
(
partnerId
,
storeId
,
userLoginInfoDto
.
getMemberId
(),
productInfosDto
.
getData
().
getProducts
().
get
(
0
),
createOrderRequest
);
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
orderInfoReqsBaseResponse
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
orderInfoReqsBaseResponse
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
CreateOrderResponse
createOrderResponse
=
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
orderInfoReqsBaseResponse
);
CreateOrderResponse
createOrderResponse
=
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
orderInfoReqsBaseResponse
);
if
(
createOrderResponse
==
null
||
createOrderResponse
.
getErrcode
()
!=
100
)
{
if
(
createOrderResponse
==
null
||
createOrderResponse
.
getErrcode
()
!=
100
)
{
...
@@ -228,6 +244,22 @@ public class SellCouponOrderServiceImpl {
...
@@ -228,6 +244,22 @@ public class SellCouponOrderServiceImpl {
return
ResponseUtil
.
error
(
baseResponse
.
getCode
(),
"商品库存不足"
);
return
ResponseUtil
.
error
(
baseResponse
.
getCode
(),
"商品库存不足"
);
}
}
}
}
if
(
CollectionUtils
.
isNotEmpty
(
stockBeanDtos
)){
// 扣减活动库存
ActivityUpdateStockRequest
activityUpdateStockRequest
=
orderSdkAdapter
.
convert2ActivityUpdateStockRequest
(
orderBean
,
stockBeanDtos
);
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if
(
activityUpdateStockRequest
!=
null
&&
(
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getStock
())
||
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getActivityList
())))
{
BaseResponse
activityResponse
=
promotionActivityClient
.
subtractStock
(
activityUpdateStockRequest
);
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getCode
()))
{
// 失败取消订单
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"活动库存不足"
,
""
,
null
);
BaseOrderResponse
orderResponse
=
orderCenterSdkService
.
orderCancel
(
cancelOrderRequest
);
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CREATE_ERROR
.
getCode
(),
"活动库存不足"
);
}
}
}
}
}
//创建支付
//创建支付
...
@@ -827,4 +859,65 @@ public class SellCouponOrderServiceImpl {
...
@@ -827,4 +859,65 @@ public class SellCouponOrderServiceImpl {
return
money
;
return
money
;
}
}
/**
* 查询促销优惠,赋值订单金额,商品优惠后金额,优惠记录
*/
private
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
calculationDiscount
(
String
partnerId
,
String
storeId
,
String
userId
,
ProductInfo
products
,
CreateOrderRequest
createOrderRequest
){
CalculationDiscountRequestDto
calculationDiscountRequestDto
=
new
CalculationDiscountRequestDto
();
calculationDiscountRequestDto
.
setStoreId
(
storeId
);
calculationDiscountRequestDto
.
setPartnerCode
(
partnerId
);
calculationDiscountRequestDto
.
setUserId
(
userId
);
List
<
CalculationDiscountGoodsDto
>
discountGoodsDtoList
=
new
ArrayList
<>();
CalculationDiscountGoodsDto
discountGoodsDto
=
new
CalculationDiscountGoodsDto
();
discountGoodsDto
.
setGoodsId
(
products
.
getPid
());
discountGoodsDto
.
setGoodsQuantity
(
1
);
discountGoodsDto
.
setOriginalPrice
(
products
.
getFinalPrice
().
intValue
());
discountGoodsDtoList
.
add
(
discountGoodsDto
);
calculationDiscountRequestDto
.
setGoods
(
discountGoodsDtoList
);
//买券包调促销指定只计算限时特价 [2,21]
calculationDiscountRequestDto
.
setActivityTypes
(
Arrays
.
asList
(
2
,
21
));
calculationDiscountRequestDto
.
setVer
(
1
);
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
=
promotionDiscountClient
.
calculationDiscountSharing
(
calculationDiscountRequestDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
())
||
activityCalculationDiscountResponseDto
.
getResult
()
==
null
)
{
return
null
;
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
result
=
activityCalculationDiscountResponseDto
.
getResult
();
if
(
CollectionUtils
.
isEmpty
(
result
.
getDiscounts
())){
return
null
;
}
if
(
CollectionUtils
.
isNotEmpty
(
result
.
getGoods
())){
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
good
:
result
.
getGoods
()){
if
(
good
.
getGoodsId
().
equals
(
products
.
getPid
())){
if
(
CollectionUtils
.
isEmpty
(
good
.
getDiscounts
())){
return
null
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
.
GoodsDiscount
>
discounts
=
good
.
getDiscounts
();
OrderSettlementCreateReq
orderSettlementCreateReq
=
new
OrderSettlementCreateReq
();
Long
discount
=
discounts
.
get
(
0
).
getDiscount
();
orderSettlementCreateReq
.
setProductId
(
products
.
getPid
());
orderSettlementCreateReq
.
setSettlementType
(
discounts
.
get
(
0
).
getType
());
orderSettlementCreateReq
.
setSettlementAmount
(
products
.
getFinalPrice
()-
discount
);
orderSettlementCreateReq
.
setShopDiscountAmount
(
discount
);
orderSettlementCreateReq
.
setNumber
(
1
);
orderSettlementCreateReq
.
setShopAmount
(
products
.
getFinalPrice
()-
discount
);
orderSettlementCreateReq
.
setExternalObjectId
(
discounts
.
get
(
0
).
getActivityCode
());
orderSettlementCreateReq
.
setIsOnline
(
true
);
orderSettlementCreateReq
.
setExternalObjectName
(
discounts
.
get
(
0
).
getActivityName
());
orderSettlementCreateReq
.
setNote
(
result
.
getDiscounts
().
get
(
0
).
getActivityName
());
List
<
OrderSettlementCreateReq
>
orderSettlementCreateReqList
=
new
ArrayList
<>();
orderSettlementCreateReqList
.
add
(
orderSettlementCreateReq
);
createOrderRequest
.
setOrderSettlementDetailList
(
orderSettlementCreateReqList
);
createOrderRequest
.
setSettlementAmount
(
result
.
getTotalAmount
());
createOrderRequest
.
setActualPayAmount
(
result
.
getTotalAmount
());
createOrderRequest
.
getOrderItemList
().
get
(
0
).
setSettlementPrice
(
products
.
getFinalPrice
()-
discount
);
createOrderRequest
.
getOrderItemList
().
get
(
0
).
setProductSharePrice
(
discount
);
}
}
return
result
.
getStocks
();
}
return
null
;
}
}
}
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionActivityClient.java
View file @
1618edf5
...
@@ -14,6 +14,7 @@ package cn.freemud.service.thirdparty;
...
@@ -14,6 +14,7 @@ package cn.freemud.service.thirdparty;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.*
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -101,4 +102,10 @@ public interface PromotionActivityClient {
...
@@ -101,4 +102,10 @@ public interface PromotionActivityClient {
@PostMapping
(
"/activities/share/queryValidShareActivity"
)
@PostMapping
(
"/activities/share/queryValidShareActivity"
)
BaseResponse
queryValidShareActivity
(
@RequestBody
QueryValidShareActivityReq
activityReq
);
BaseResponse
queryValidShareActivity
(
@RequestBody
QueryValidShareActivityReq
activityReq
);
/**
* 扣减活动库存
*/
@PostMapping
(
"/activity/stock/subtractStock"
)
BaseResponse
subtractStock
(
@RequestBody
ActivityUpdateStockRequest
activityReq
);
}
}
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