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
04305ea3
Commit
04305ea3
authored
Apr 16, 2021
by
hanghang.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拼团
parent
70473d7c
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
936 additions
and
121 deletions
+936
-121
order-application-service/src/main/java/cn/freemud/adapter/SpellGroupOrderAdapter.java
+228
-0
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+0
-7
order-application-service/src/main/java/cn/freemud/controller/SpellGroupOrderController.java
+39
-0
order-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
+7
-2
order-application-service/src/main/java/cn/freemud/entities/dto/CreateSpellGroupOrderDto.java
+31
-4
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/CalculationDiscountRequestDto.java
+5
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateSpellGroupOrderReq.java
+37
-29
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+2
-3
order-application-service/src/main/java/cn/freemud/manager/SpellGroupOrderDataManager.java
+121
-0
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
+0
-6
order-application-service/src/main/java/cn/freemud/service/SpellGroupOrderService.java
+22
-0
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
+0
-24
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+27
-45
order-application-service/src/main/java/cn/freemud/service/impl/SpellGroupOrderServiceImpl.java
+325
-0
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionDiscountClient.java
+14
-1
order-application-service/src/test/java/cn.freemud/controller/SpellGroupOrderControllerTest.java
+76
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExtendedReq.java
+2
-0
No files found.
order-application-service/src/main/java/cn/freemud/adapter/SpellGroupOrderAdapter.java
0 → 100644
View file @
04305ea3
package
cn
.
freemud
.
adapter
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.CreateSpellGroupOrderDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.product.ProductInfo
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayChannelType
;
import
com.freemud.application.sdk.api.ordercenter.request.create.*
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.util.DateUtil
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author wanghanghang
* @title: SpellGroupOrderAdapter
* @projectName order-group
* @description: 创建拼团订单转换类
* @date 2021/4/15上午11:54
*/
@Component
public
class
SpellGroupOrderAdapter
{
/**
* 转换创建订单request
*
* @param createSpellGroupOrderDto
* @return
*/
public
CreateOrderRequest
convertToCreateOrderRequest
(
CreateSpellGroupOrderDto
createSpellGroupOrderDto
,
AssortmentCustomerInfoVo
userLoginInfoDto
)
{
CreateOrderRequest
createOrderRequest
=
new
CreateOrderRequest
();
//初始化订单基础信息
createOrderRequest
.
setPartnerId
(
createSpellGroupOrderDto
.
getPartnerId
());
createOrderRequest
.
setStoreId
(
createSpellGroupOrderDto
.
getStoreId
());
createOrderRequest
.
setThirdStoreId
(
createSpellGroupOrderDto
.
getStoreId
());
StoreResponse
.
BizVO
storeInfo
=
createSpellGroupOrderDto
.
getStoreResponse
().
getBizVO
();
createOrderRequest
.
setStoreName
(
storeInfo
.
getStoreName
());
createOrderRequest
.
setStoreNameEn
(
storeInfo
.
getStoreNameEn
());
createOrderRequest
.
setUserId
(
createSpellGroupOrderDto
.
getUserId
());
createOrderRequest
.
setUserName
(
createSpellGroupOrderDto
.
getNickName
());
createOrderRequest
.
setOrderType
(
createSpellGroupOrderDto
.
getOrderType
());
createOrderRequest
.
setPayType
(
1
);
PayChannelType
payChannelType
=
PayChannelType
.
getByIndex
(
createSpellGroupOrderDto
.
getPayChannelType
());
if
(
payChannelType
!=
null
)
{
createOrderRequest
.
setPayChannel
(
payChannelType
.
getEbcode
());
createOrderRequest
.
setPayChannelName
(
payChannelType
.
getName
());
createOrderRequest
.
setPayChannelType
(
payChannelType
.
getIndex
());
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscount
=
createSpellGroupOrderDto
.
getActivityCalculationDiscountResponseDto
().
getResult
();
createOrderRequest
.
setActualPayAmount
(
calculationDiscount
.
getTotalAmount
().
longValue
());
//加配送费
createOrderRequest
.
setSettlementAmount
(
calculationDiscount
.
getTotalAmount
().
longValue
());
createOrderRequest
.
setOriginalAmount
(
calculationDiscount
.
getOriginalTotalAmount
().
longValue
());
createOrderRequest
.
setOrderClient
(
OrderClientType
.
SAASMALL
.
getIndex
());
createOrderRequest
.
setMarketingType
(
createSpellGroupOrderDto
.
getMarketingType
());
createOrderRequest
.
setExpressType
(
null
);
createOrderRequest
.
setExpressChannelName
(
""
);
createOrderRequest
.
setExpressChannelCode
(
""
);
createOrderRequest
.
setExpressNo
(
""
);
createOrderRequest
.
setCanRefund
(
true
);
createOrderRequest
.
setBizType
(
1
);
createOrderRequest
.
setSuspendState
((
byte
)
0
);
createOrderRequest
.
setSuspendDesc
(
""
);
createOrderRequest
.
setOperator
(
userLoginInfoDto
.
getNickName
());
createOrderRequest
.
setAppId
(
userLoginInfoDto
.
getAppId
());
createOrderRequest
.
setPayChannelType
(
createSpellGroupOrderDto
.
getPayChannelType
());
createOrderRequest
.
getOrderExtended
().
setSpellGroupCode
(
createSpellGroupOrderDto
.
getSpellGroupCode
());
/**
* 处理商品优惠信息 OrderItemCreateReq
* 现阶段拼单商品只有一个,直接取0.后面拓展需要写循环。基本不会动
*/
ProductInfo
productInfo
=
createSpellGroupOrderDto
.
getProducts
().
get
(
0
);
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
goods
=
calculationDiscount
.
getGoods
().
get
(
0
);
this
.
convertToOrderItemReq
(
productInfo
,
goods
,
createOrderRequest
,
createSpellGroupOrderDto
,
userLoginInfoDto
);
/**
* 处理配送费
*/
OrderCostCreateReq
orderCostCreateReq
=
new
OrderCostCreateReq
();
orderCostCreateReq
.
setCostName
(
"快递费用"
);
//新订单服务 1=包装费,2=运费,3=餐盒单价,4=餐盒数量
orderCostCreateReq
.
setCostType
(
2
);
orderCostCreateReq
.
setActualCostAmount
((
long
)
6
);
orderCostCreateReq
.
setCostAmount
((
long
)
6
);
orderCostCreateReq
.
setProductSeq
(
1
);
//1=订单,2=订单商品,3=售后单
orderCostCreateReq
.
setBillType
(
1
);
orderCostCreateReq
.
setProductId
(
productInfo
.
getPid
());
orderCostCreateReq
.
setNote
(
"快递费用备注"
);
createOrderRequest
.
getOrderCostDetailList
().
add
(
orderCostCreateReq
);
/**
* 处理结算信息
*/
OrderSettlementCreateReq
orderSettlementCreateReq
=
new
OrderSettlementCreateReq
();
orderSettlementCreateReq
.
setProductId
(
goods
.
getGoodsId
());
orderSettlementCreateReq
.
setSettlementType
(
9
);
orderSettlementCreateReq
.
setSettlementAmount
(
goods
.
getRealAmount
());
orderSettlementCreateReq
.
setNumber
(
1
);
orderSettlementCreateReq
.
setShopAmount
(
goods
.
getRealAmount
());
orderSettlementCreateReq
.
setIsOnline
(
true
);
createOrderRequest
.
getOrderSettlementDetailList
().
add
(
orderSettlementCreateReq
);
/**
* 处理快递信息
*/
createOrderRequest
.
setDeliveryContactInfoList
(
createSpellGroupOrderDto
.
getDeliveryContactInfoCreateReqList
());
return
createOrderRequest
;
}
/**
* 转换促销算价request
*
* @param createSpellGroupOrderDto
* @param userLoginInfoDto
* @return
*/
public
CalculationDiscountRequestDto
convertToCalculationDiscountRequestDto
(
CreateSpellGroupOrderDto
createSpellGroupOrderDto
,
AssortmentCustomerInfoVo
userLoginInfoDto
)
{
CalculationDiscountRequestDto
calculationDiscountRequestDto
=
new
CalculationDiscountRequestDto
();
calculationDiscountRequestDto
.
setStoreId
(
createSpellGroupOrderDto
.
getStoreId
());
calculationDiscountRequestDto
.
setPartnerCode
(
createSpellGroupOrderDto
.
getPartnerId
());
calculationDiscountRequestDto
.
setUserId
(
userLoginInfoDto
.
getMemberId
());
List
<
CalculationDiscountGoodsDto
>
discountGoodsDtoList
=
new
ArrayList
<>();
createSpellGroupOrderDto
.
getProducts
().
forEach
(
productInfo
->
{
CalculationDiscountGoodsDto
discountGoodsDto
=
new
CalculationDiscountGoodsDto
();
discountGoodsDto
.
setGoodsId
(
productInfo
.
getPid
());
//拼团订单,数量默认1
discountGoodsDto
.
setGoodsQuantity
(
1
);
discountGoodsDto
.
setOriginalPrice
(
productInfo
.
getOriginalPrice
().
intValue
());
discountGoodsDtoList
.
add
(
discountGoodsDto
);
});
calculationDiscountRequestDto
.
setGoods
(
discountGoodsDtoList
);
calculationDiscountRequestDto
.
setGroupActivityCode
(
createSpellGroupOrderDto
.
getSpellGroupCode
());
// calculationDiscountRequestDto.setVer();
return
calculationDiscountRequestDto
;
}
public
CreatePrepayRequestDto
convertToCreatePrepayRequest
(
AssortmentCustomerInfoVo
userLoginInfoDto
,
QueryOrdersResponse
.
DataBean
.
OrderBean
data
,
String
trackingNo
)
{
CreatePrepayRequestDto
requestDto
=
new
CreatePrepayRequestDto
();
requestDto
.
setPartnerId
(
data
.
getParentCode
());
requestDto
.
setWxAppId
(
userLoginInfoDto
.
getWxAppId
());
requestDto
.
setOpenId
(
userLoginInfoDto
.
getOpenId
());
requestDto
.
setTotalAmount
(
data
.
getActualPayAmount
().
longValue
());
requestDto
.
setCardAmount
(
0
);
requestDto
.
setOrderExtInfoDTO
(
null
);
requestDto
.
setTransId
(
data
.
getOid
());
requestDto
.
setOrderClient
(
OrderClientType
.
getOrderClientType
(
Integer
.
valueOf
(
data
.
getOrderClient
())));
requestDto
.
setProductOrderBean
(
data
);
requestDto
.
setFatherOrderBean
(
data
);
requestDto
.
setStoreId
(
data
.
getShopId
());
requestDto
.
setChannel
(
""
);
return
requestDto
;
}
public
void
convertToOrderItemReq
(
ProductInfo
productInfo
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
goods
,
CreateOrderRequest
createOrderRequest
,
CreateSpellGroupOrderDto
createSpellGroupOrderDto
,
AssortmentCustomerInfoVo
userLoginInfoDto
)
{
OrderItemCreateReq
orderItemCreateReq
=
new
OrderItemCreateReq
();
orderItemCreateReq
.
setPartnerId
(
createSpellGroupOrderDto
.
getPartnerId
());
orderItemCreateReq
.
setProductId
(
productInfo
.
getPid
());
orderItemCreateReq
.
setThirdProductId
(
productInfo
.
getPid
());
orderItemCreateReq
.
setProductCode
(
productInfo
.
getProductCode
());
orderItemCreateReq
.
setProductName
(
productInfo
.
getName
());
orderItemCreateReq
.
setProductSeq
(
productInfo
.
getSequence
());
orderItemCreateReq
.
setProductQuantity
(
1
);
orderItemCreateReq
.
setProductUnit
(
productInfo
.
getUnit
());
orderItemCreateReq
.
setProductPrice
(
goods
.
getOriginalPrice
());
orderItemCreateReq
.
setSettlementPrice
(
goods
.
getRealAmount
());
orderItemCreateReq
.
setSalePrice
(
productInfo
.
getFinalPrice
());
orderItemCreateReq
.
setProductSharePrice
(
goods
.
getDiscountAmount
());
orderItemCreateReq
.
setProductPicUrl
(
productInfo
.
getPicture
());
orderItemCreateReq
.
setMarketingType
(
createSpellGroupOrderDto
.
getMarketingType
().
byteValue
());
orderItemCreateReq
.
setMarketingCode
(
createSpellGroupOrderDto
.
getActivityCode
());
orderItemCreateReq
.
setCategoryId
(
productInfo
.
getCategory
());
orderItemCreateReq
.
setCategoryName
(
productInfo
.
getCategoryName
());
orderItemCreateReq
.
setProductType
(
productInfo
.
getType
());
orderItemCreateReq
.
setUserId
(
userLoginInfoDto
.
getMemberId
());
orderItemCreateReq
.
setOpenId
(
userLoginInfoDto
.
getOpenId
());
orderItemCreateReq
.
setNickName
(
userLoginInfoDto
.
getNickName
());
orderItemCreateReq
.
setPhotoUrl
(
userLoginInfoDto
.
getPhotoUrl
());
createOrderRequest
.
getOrderItemList
().
add
(
orderItemCreateReq
);
}
public
ActivityUpdateStockRequest
convert2ActivityUpdateStockRequest
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
CreateSpellGroupOrderDto
createSpellGroupOrderDto
)
{
if
(
orderBean
==
null
||
createSpellGroupOrderDto
.
getActivityCalculationDiscountResponseDto
().
getResult
()
==
null
)
{
return
null
;
}
ActivityUpdateStockRequest
activityUpdateStockRequest
=
new
ActivityUpdateStockRequest
();
activityUpdateStockRequest
.
setOrderId
(
orderBean
.
getOid
());
activityUpdateStockRequest
.
setPartnerCode
(
orderBean
.
getCompanyId
());
activityUpdateStockRequest
.
setStoreId
(
orderBean
.
getShopId
());
activityUpdateStockRequest
.
setVer
(
createSpellGroupOrderDto
.
getActivityCalculationDiscountResponseDto
().
getVer
().
toString
());
activityUpdateStockRequest
.
setUserId
(
orderBean
.
getUserId
());
activityUpdateStockRequest
.
setOrderCreateTime
(
DateUtil
.
getCurrentDate
(
DateUtil
.
FORMAT_yyyyMMdd_date
));
List
<
String
>
activityList
=
new
ArrayList
<>();
activityList
.
add
(
createSpellGroupOrderDto
.
getActivityCode
());
activityUpdateStockRequest
.
setActivityList
(
activityList
);
activityUpdateStockRequest
.
setStock
(
createSpellGroupOrderDto
.
getActivityCalculationDiscountResponseDto
().
getResult
().
getStocks
());
return
activityUpdateStockRequest
;
}
/*------------------下方转换返回信息------------------------*/
/**
* 转换拼团订单收货地址reps
*/
public
void
convertToReceiveAddress
(
QueryReceiveAddressResponse
receiveAddressResult
,
CreateSpellGroupOrderDto
createSpellGroupOrderDto
)
{
DeliveryContactInfoCreateReq
deliveryContactInfoCreateReq
=
new
DeliveryContactInfoCreateReq
();
deliveryContactInfoCreateReq
.
setRelateObjectType
(
1
);
deliveryContactInfoCreateReq
.
setAddressDetail
(
receiveAddressResult
.
getReceiveAddress
());
deliveryContactInfoCreateReq
.
setInfoType
(
1
);
deliveryContactInfoCreateReq
.
setLatitude
(
new
BigDecimal
(
receiveAddressResult
.
getLatitude
()));
deliveryContactInfoCreateReq
.
setLongitude
(
new
BigDecimal
(
receiveAddressResult
.
getLongitude
()));
deliveryContactInfoCreateReq
.
setMobile
(
StringUtils
.
isEmpty
(
receiveAddressResult
.
getMobile
())
?
receiveAddressResult
.
getReceiveMobile
()
:
receiveAddressResult
.
getMobile
());
deliveryContactInfoCreateReq
.
setContactsName
(
receiveAddressResult
.
getReceiveName
());
createSpellGroupOrderDto
.
getDeliveryContactInfoCreateReqList
().
add
(
deliveryContactInfoCreateReq
);
}
}
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
04305ea3
...
@@ -74,13 +74,6 @@ public class OrderController {
...
@@ -74,13 +74,6 @@ public class OrderController {
return
orderAdapterService
.
createOrderNew
(
createOrderVo
);
return
orderAdapterService
.
createOrderNew
(
createOrderVo
);
}
}
@ApiOperation
(
value
=
"创建拼团订单"
,
notes
=
"创建拼团订单"
,
produces
=
"application/json"
)
@ApiAnnotation
(
logMessage
=
"createSpellGroupOrder"
)
@PostMapping
(
"/createSpellGroupOrder"
)
public
BaseResponse
createSpellGroupOrder
(
@Validated
@LogParams
@RequestBody
CreateSpellGroupOrderReq
request
)
{
return
orderAdapterService
.
createSpellGroupOrder
(
request
);
}
/**
/**
* 麦咖啡创建订单
* 麦咖啡创建订单
*/
*/
...
...
order-application-service/src/main/java/cn/freemud/controller/SpellGroupOrderController.java
0 → 100644
View file @
04305ea3
package
cn
.
freemud
.
controller
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateSpellGroupOrderReq
;
import
cn.freemud.service.Orderservice
;
import
cn.freemud.service.SpellGroupOrderService
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author wanghanghang
* @title: SpellGroupOrderController
* @projectName order-group
* @description: 拼团订单Controller
* @date 2021/4/16上午9:50
*/
@RequestMapping
(
"/order"
)
@RestController
public
class
SpellGroupOrderController
{
@Autowired
private
SpellGroupOrderService
spellGroupOrderService
;
@ApiOperation
(
value
=
"创建拼团订单"
,
notes
=
"创建拼团订单"
,
produces
=
"application/json"
)
@ApiAnnotation
(
logMessage
=
"createSpellGroupOrder"
)
@PostMapping
(
"/createSpellGroupOrder"
)
public
BaseResponse
createSpellGroupOrder
(
@Validated
@LogParams
@RequestBody
CreateSpellGroupOrderReq
request
)
{
return
spellGroupOrderService
.
createSpellGroupOrder
(
request
);
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
View file @
04305ea3
package
cn
.
freemud
.
entities
.
dto
;
package
cn
.
freemud
.
entities
.
dto
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.List
;
...
@@ -60,8 +62,6 @@ public class ActivityCalculationDiscountResponseDto {
...
@@ -60,8 +62,6 @@ public class ActivityCalculationDiscountResponseDto {
* 使用到的优惠券及优惠金额
* 使用到的优惠券及优惠金额
*/
*/
private
List
<
CouponResults
>
couponDiscounts
;
private
List
<
CouponResults
>
couponDiscounts
;
/**
/**
* 多种优惠方案计算出的优惠集合,并按优惠力度倒序排列
* 多种优惠方案计算出的优惠集合,并按优惠力度倒序排列
*/
*/
...
@@ -73,6 +73,11 @@ public class ActivityCalculationDiscountResponseDto {
...
@@ -73,6 +73,11 @@ public class ActivityCalculationDiscountResponseDto {
*/
*/
List
<
ActivityPrompt
>
activityPrompts
;
List
<
ActivityPrompt
>
activityPrompts
;
/**
* 活动集合
*/
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stocks
;
@Data
@Data
public
static
class
ActivityPrompt
{
public
static
class
ActivityPrompt
{
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/CreateSpellGroupOrderDto.java
View file @
04305ea3
package
cn
.
freemud
.
entities
.
dto
;
package
cn
.
freemud
.
entities
.
dto
;
import
cn.freemud.entities.dto.product.ProductInfo
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountResultDto
;
import
cn.freemud.entities.vo.CreateSpellGroupOrderReq
;
import
cn.freemud.entities.vo.CreateSpellGroupOrderReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.List
;
...
@@ -19,13 +24,35 @@ public class CreateSpellGroupOrderDto extends CreateSpellGroupOrderReq {
...
@@ -19,13 +24,35 @@ public class CreateSpellGroupOrderDto extends CreateSpellGroupOrderReq {
/**
/**
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/
*/
public
UserDeliveryInfoDto
userDeliveryInfoDto
;
//
public UserDeliveryInfoDto userDeliveryInfoDto;
private
String
userName
;
/**
*当前用户id
private
String
mobile
;
*/
private
String
userId
;
/**
*当前用户昵称
*/
private
String
nickName
;
/**
*存储送货地址信息
*/
List
<
DeliveryContactInfoCreateReq
>
deliveryContactInfoCreateReqList
;
List
<
DeliveryContactInfoCreateReq
>
deliveryContactInfoCreateReqList
;
/**
* 存储商品信息
*/
private
List
<
ProductInfo
>
products
;
/**
* 存储促销返回商品算价信息
*/
private
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
;
/**
* 门店信息
*/
private
StoreResponse
storeResponse
;
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/CalculationDiscountRequestDto.java
View file @
04305ea3
...
@@ -87,4 +87,9 @@ public class CalculationDiscountRequestDto {
...
@@ -87,4 +87,9 @@ public class CalculationDiscountRequestDto {
* saas-自提 saasdelivery-外卖 saasmall-微商城 ....
* saas-自提 saasdelivery-外卖 saasmall-微商城 ....
*/
*/
private
String
productChannel
;
private
String
productChannel
;
/**
* 拼团活动是,必传活动号
*/
private
String
groupActivityCode
;
}
}
order-application-service/src/main/java/cn/freemud/entities/vo/CreateSpellGroupOrderReq.java
View file @
04305ea3
package
cn
.
freemud
.
entities
.
vo
;
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* @author
freemud
* @author
wanghanghang
* @title: CreateSpellGroupOrderReq
* @title: CreateSpellGroupOrderReq
* @projectName order-group
* @projectName order-group
* @description:
TODO
* @description:
创建拼团订单request
* @date 2021/4/14上午9:52
* @date 2021/4/14上午9:52
*/
*/
@Data
@Data
...
@@ -24,62 +21,73 @@ public class CreateSpellGroupOrderReq {
...
@@ -24,62 +21,73 @@ public class CreateSpellGroupOrderReq {
/**
/**
* 参与拼团编号->团编号
* 参与拼团编号->团编号
*/
*/
private
String
S
pellGroupCode
;
private
String
s
pellGroupCode
;
//
@NotEmpty(message = "门店ID 不能为空")
@NotEmpty
(
message
=
"门店ID 不能为空"
)
private
String
storeId
;
private
String
storeId
;
private
String
thirdShopId
;
@NotEmpty
(
message
=
"商户号 不能为空"
)
private
String
partnerId
;
private
String
partnerId
;
@Builder
.
Default
@Builder
.
Default
private
String
menuType
=
"saas"
;
private
String
menuType
=
"saasmall"
;
/**
/**
* 渠道类型 OrderChannelType
* 渠道类型 OrderChannelType
*/
*/
private
String
channelType
;
private
String
channelType
=
"saasmall"
;
/*下单渠道必填,根据此字段的值判断是自营或第三方,来走不同的状态机 详细见 orderClientType枚举*/
private
Integer
orderClient
;
/**
* 下单支付渠道类型
*/
@NotNull
(
message
=
"下单支付渠道类型不能为空"
)
private
Byte
payChannelType
;
/**
/**
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
*/
*/
//@NotNull(message = "下单类型不能为空")
@Builder
.
Default
private
Integer
orderType
;
private
Integer
orderType
=
3
;
/**
/**
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/
*/
@NotNull
@Builder
.
Default
private
Byte
marketingType
;
private
Integer
marketingType
=
2
;
/**
/**
* 收货地址ID
* 收货地址ID
*/
*/
@NotEmpty
(
message
=
"收货地址ID不能为空"
)
private
String
receiveId
;
private
String
receiveId
;
/**
/**
*
收货地址
*
拼团活动号
*/
*/
private
String
receiveAddress
;
@NotEmpty
(
message
=
"拼团活动号不能为空"
)
private
String
activityCode
;
/**
/**
*
收货用户名
*
拼团商品集合,本次只会传入一条
*/
*/
private
String
receiveUsername
;
@NotNull
(
message
=
"拼团商品信息不能为空"
)
private
List
<
SpellGroupProduct
>
spellGroupProductList
;
/**
/**
*
收货电话
*
订单备注,预留字段
*/
*/
@Pattern
(
regexp
=
"^1[3|4|5|6|7|8|9][0-9]{9}$"
,
message
=
"手机号码格式不正确"
)
private
String
orderRemark
;
private
String
receiveMobile
;
//拼团商品集合,本次只会传入一条
private
List
<
SpellGroupProduct
>
spellGroupProductList
;
/**
* 拼团商品
*/
@Data
@Data
public
static
class
SpellGroupProduct
{
public
static
class
SpellGroupProduct
{
private
String
productId
;
private
String
productId
;
private
Integer
productQuantity
;
}
}
}
}
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
04305ea3
...
@@ -240,12 +240,11 @@ public enum ResponseResult {
...
@@ -240,12 +240,11 @@ public enum ResponseResult {
* 拼团订单状态码 80001 - 80101
* 拼团订单状态码 80001 - 80101
*/
*/
SPELL_GROUP_THE_CLUB_IS_FULL
(
"80001"
,
"拼团已满员"
),
SPELL_GROUP_THE_CLUB_IS_FULL
(
"80001"
,
"拼团已满员"
),
SPELL_GROUP_CREAT_ORDER_ERROR
(
"80002"
,
"创建拼团订单失败"
),
SPELL_GROUP_ACTIVITE_AMOUNT_ERROR
(
"80003"
,
"返回的价格是商品原价,则表示库存不足或者活动关闭"
),
;
;
private
String
code
;
private
String
code
;
private
String
message
;
private
String
message
;
...
...
order-application-service/src/main/java/cn/freemud/manager/SpellGroupOrderDataManager.java
0 → 100644
View file @
04305ea3
package
cn
.
freemud
.
manager
;
import
cn.freemud.adapter.SpellGroupOrderAdapter
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.CreateSpellGroupOrderDto
;
import
cn.freemud.entities.dto.GetProductInfoDto
;
import
cn.freemud.entities.dto.ProductInfosDto
;
import
cn.freemud.entities.dto.product.ProductInfo
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest
;
import
com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse
;
import
com.freemud.application.sdk.api.membercenter.service.MemberCenterService
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author wanghanghang
* @title: SpellGroupOrderDataManager
* @projectName order-group
* @description: TODO
* @date 2021/4/15下午3:45
*/
@Component
public
class
SpellGroupOrderDataManager
{
@Autowired
private
StoreItemClient
storeItemClient
;
@Autowired
private
PromotionDiscountClient
promotionDiscountClient
;
//会员SDK
@Autowired
private
MemberCenterService
memberCenterService
;
//门店SDK
@Autowired
private
StoreCenterService
storeCenterService
;
/**
* 查询门店信息
*/
public
StoreResponse
getStoreInfo
(
String
partnerId
,
String
shopId
,
String
trackingNo
)
{
// 获取门店信息
StoreInfoRequest
storeInfoRequest
=
new
StoreInfoRequest
(
partnerId
,
shopId
,
null
);
return
storeCenterService
.
getStoreInfo
(
storeInfoRequest
,
trackingNo
);
}
/**
* 查询地址信息
*
* @param receiveId
* @param partnerId
* @param trackingNo
* @return
*/
public
QueryReceiveAddressResponse
queryOrderReceiveAddress
(
String
receiveId
,
String
partnerId
,
String
trackingNo
)
{
//校验收货地址是否可配送
QueryReceiveAddressRequest
request
=
new
QueryReceiveAddressRequest
(
receiveId
,
partnerId
);
BaseResponse
<
QueryReceiveAddressResponse
>
queryReceiveAddressResponse
=
memberCenterService
.
queryReceiveAddressById
(
request
,
trackingNo
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
queryReceiveAddressResponse
.
getCode
())
||
queryReceiveAddressResponse
.
getData
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
SPELL_GROUP_THE_CLUB_IS_FULL
);
}
QueryReceiveAddressResponse
receiveAddressResult
=
queryReceiveAddressResponse
.
getData
();
return
receiveAddressResult
;
}
/**
* 查询商品信息
*
* @param createSpellGroupOrderDto
* @return
*/
public
List
<
ProductInfo
>
queryProductInfos
(
CreateSpellGroupOrderDto
createSpellGroupOrderDto
)
{
GetProductInfoDto
getProductInfoReq
=
new
GetProductInfoDto
();
List
<
String
>
proIds
=
new
ArrayList
<>();
createSpellGroupOrderDto
.
getSpellGroupProductList
().
forEach
(
proInfo
->
{
proIds
.
add
(
proInfo
.
getProductId
());
});
getProductInfoReq
.
setProductIds
(
proIds
);
getProductInfoReq
.
setPartnerId
(
createSpellGroupOrderDto
.
getPartnerId
());
getProductInfoReq
.
setShopId
(
createSpellGroupOrderDto
.
getStoreId
());
getProductInfoReq
.
setProductInfoType
(
1
);
ProductInfosDto
productInfosReps
=
storeItemClient
.
listProductInfos
(
getProductInfoReq
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
productInfosReps
.
getCode
())
||
productInfosReps
.
getData
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
SPELL_GROUP_THE_CLUB_IS_FULL
);
}
return
productInfosReps
.
getData
().
getProducts
();
}
/**
* 查询算价信息
*
* @param calculationDiscountRequestDto
* @return
*/
public
ActivityCalculationDiscountResponseDto
queryCalculationDiscount
(
CalculationDiscountRequestDto
calculationDiscountRequestDto
)
{
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
=
promotionDiscountClient
.
calculationDiscountSharing
(
calculationDiscountRequestDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
())
||
activityCalculationDiscountResponseDto
.
getResult
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
SPELL_GROUP_THE_CLUB_IS_FULL
);
}
return
activityCalculationDiscountResponseDto
;
}
}
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
04305ea3
...
@@ -154,11 +154,5 @@ public interface Orderservice {
...
@@ -154,11 +154,5 @@ public interface Orderservice {
*/
*/
BaseResponse
queryTodayOrders
(
QueryOrderByConditionsRequestVo
queryOrderByConditionsRequestVo
);
BaseResponse
queryTodayOrders
(
QueryOrderByConditionsRequestVo
queryOrderByConditionsRequestVo
);
/**
* 创建拼团订单
* @param createSpellGroupOrderReq
* @return
*/
public
BaseResponse
createSpellGroupOrder
(
CreateSpellGroupOrderReq
createSpellGroupOrderReq
);
}
}
order-application-service/src/main/java/cn/freemud/service/SpellGroupOrderService.java
0 → 100644
View file @
04305ea3
package
cn
.
freemud
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateSpellGroupOrderReq
;
/**
* @author wanghanghang
* @title: SpellGroupOrderService
* @projectName order-group
* @description: TODO
* @date 2021/4/15下午9:01
*/
public
interface
SpellGroupOrderService
{
/**
* 创建拼团订单
* @param createSpellGroupOrderReq
* @return
*/
public
BaseResponse
createSpellGroupOrder
(
CreateSpellGroupOrderReq
createSpellGroupOrderReq
);
}
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
View file @
04305ea3
...
@@ -917,31 +917,7 @@ public class CheckOrder {
...
@@ -917,31 +917,7 @@ public class CheckOrder {
createOrderVo
.
setUserDeliveryInfoDto
(
userDeliveryInfoDto
);
createOrderVo
.
setUserDeliveryInfoDto
(
userDeliveryInfoDto
);
}
}
/**
* 校验拼团订单收货地址
*/
public
void
checkSpellGroupOrderReceiveAddress
(
String
receiveId
,
String
partnerId
,
String
trackingNo
,
CreateSpellGroupOrderDto
createSpellGroupOrderDto
)
{
//校验收货地址是否可配送
QueryReceiveAddressRequest
request
=
new
QueryReceiveAddressRequest
(
receiveId
,
partnerId
);
BaseResponse
<
QueryReceiveAddressResponse
>
queryReceiveAddressResponse
=
memberCenterService
.
queryReceiveAddressById
(
request
,
trackingNo
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
queryReceiveAddressResponse
.
getCode
())
||
queryReceiveAddressResponse
.
getData
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
USER_GETRECEIVEADDRESS_ERROR
);
}
QueryReceiveAddressResponse
receiveAddressResult
=
queryReceiveAddressResponse
.
getData
();
DeliveryContactInfoCreateReq
deliveryContactInfoCreateReq
=
new
DeliveryContactInfoCreateReq
();
deliveryContactInfoCreateReq
.
setRelateObjectType
(
1
);
deliveryContactInfoCreateReq
.
setAddressDetail
(
receiveAddressResult
.
getReceiveAddress
());
deliveryContactInfoCreateReq
.
setInfoType
(
1
);
deliveryContactInfoCreateReq
.
setLatitude
(
new
BigDecimal
(
receiveAddressResult
.
getLatitude
()));
deliveryContactInfoCreateReq
.
setLongitude
(
new
BigDecimal
(
receiveAddressResult
.
getLongitude
()));
deliveryContactInfoCreateReq
.
setMobile
(
StringUtils
.
isEmpty
(
receiveAddressResult
.
getMobile
())
?
receiveAddressResult
.
getReceiveMobile
()
:
receiveAddressResult
.
getMobile
());
deliveryContactInfoCreateReq
.
setContactsName
(
receiveAddressResult
.
getReceiveName
());
createSpellGroupOrderDto
.
setUserName
(
receiveAddressResult
.
getReceiveName
());
createSpellGroupOrderDto
.
setMobile
(
StringUtils
.
isEmpty
(
receiveAddressResult
.
getMobile
())
?
receiveAddressResult
.
getReceiveMobile
()
:
receiveAddressResult
.
getMobile
());
createSpellGroupOrderDto
.
getDeliveryContactInfoCreateReqList
().
add
(
deliveryContactInfoCreateReq
);
}
public
void
checkCardCode
(
String
partnerId
,
String
memberId
,
String
cardCode
)
{
public
void
checkCardCode
(
String
partnerId
,
String
memberId
,
String
cardCode
)
{
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
04305ea3
...
@@ -44,17 +44,24 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
...
@@ -44,17 +44,24 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.product.AttributeValue
;
import
cn.freemud.entities.dto.product.*
;
import
cn.freemud.entities.dto.product.GroupDetail
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.product.ProductAttributeGroup
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.product.ProductGroup
;
import
cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto
;
import
cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.dto.shoppingCart.CollageOrderDto
;
import
cn.freemud.entities.dto.shoppingCart.CollageOrderDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.AfterSalesOrderCreateEventEnum
;
import
cn.freemud.enums.OrderChannelType
;
import
cn.freemud.enums.PayRefundStatus
;
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.interceptor.ServiceException
;
import
cn.freemud.management.thirdparty.MulitiPaymentClient
;
import
cn.freemud.management.thirdparty.MulitiPaymentClient
;
import
cn.freemud.manager.SpellGroupOrderDataManager
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.*
;
import
cn.freemud.service.*
;
import
cn.freemud.service.coupon.CouponRelationFactory
;
import
cn.freemud.service.coupon.CouponRelationFactory
;
...
@@ -66,8 +73,16 @@ import cn.freemud.utils.*;
...
@@ -66,8 +73,16 @@ import cn.freemud.utils.*;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.couponcenter.offline.request.CouponLockRequest
;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponLockResponse
;
import
com.freemud.application.sdk.api.log.ThirdPartyLog
;
import
com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest
;
import
com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest
;
import
com.freemud.application.sdk.api.membercenter.request.UserScoreRequest
;
import
com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse
;
import
com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
jdk.nashorn.internal.runtime.ECMAException
;
import
jdk.nashorn.internal.runtime.ECMAException
;
import
com.alibaba.fastjson.TypeReference
;
import
com.alibaba.fastjson.TypeReference
;
import
com.freemud.api.assortment.datamanager.entity.db.*
;
import
com.freemud.api.assortment.datamanager.entity.db.*
;
...
@@ -132,10 +147,6 @@ import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRe
...
@@ -132,10 +147,6 @@ import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRe
import
com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService
;
import
com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime
;
import
com.freemud.sdk.api.assortment.order.enums.NewOrderType
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.enums.QueryDeliveryType
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
...
@@ -179,6 +190,8 @@ import java.util.function.Function;
...
@@ -179,6 +190,8 @@ import java.util.function.Function;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
cn
.
freemud
.
constant
.
OrderRefundConstant
.
ALLOW_REFUND
;
import
static
cn
.
freemud
.
constant
.
OrderRefundConstant
.
ALLOW_REFUND
;
import
static
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS
;
import
static
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
;
@Service
@Service
@Slf4j
@Slf4j
...
@@ -386,47 +399,16 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -386,47 +399,16 @@ public class OrderServiceImpl implements Orderservice {
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
}
}
@Override
public
BaseResponse
createSpellGroupOrder
(
CreateSpellGroupOrderReq
createSpellGroupOrderReq
)
{
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
//校验用户信息
String
sessionId
=
createSpellGroupOrderReq
.
getSessionId
();
AssortmentCustomerInfoVo
userLoginInfoDto
=
customerInfoManager
.
getCustomerInfoByObject
(
sessionId
);
if
(
userLoginInfoDto
==
null
||
StringUtils
.
isEmpty
(
userLoginInfoDto
.
getMemberId
()))
{
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
//团id不为空,调用促销查询团是否关闭,关闭之后给提示不可下单
if
(
1
==
1
){
return
ResponseUtil
.
error
(
ResponseResult
.
SPELL_GROUP_THE_CLUB_IS_FULL
);
}
//团开启 则继续执行
CreateSpellGroupOrderDto
createSpellGroupOrderDto
=
new
CreateSpellGroupOrderDto
();
BeanUtils
.
copyProperties
(
createSpellGroupOrderReq
,
createSpellGroupOrderDto
);
//查询配送地址等信息
checkOrder
.
checkSpellGroupOrderReceiveAddress
(
createSpellGroupOrderReq
.
getReceiveId
(),
createSpellGroupOrderReq
.
getPartnerId
(),
trackingNo
,
createSpellGroupOrderDto
);
//查询商品信息
public
CreateOrderResponse
getCreateOrderResponse
(
String
code
,
String
message
,
QueryOrdersResponse
.
DataBean
.
OrderBean
data
)
{
CreateOrderResponse
baseOrderResponse
=
new
CreateOrderResponse
();
baseOrderResponse
.
setErrcode
(
Integer
.
valueOf
(
code
));
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
baseOrderResponse
.
setErrmsg
(
message
);
Integer
pushOrderTime
=
checkOrder
.
checkOrderByOrderType
(
createOrderVo
,
userLoginInfoDto
,
storeResponseDto
,
shoppingCartGoodsDto
,
trackingNo
);
baseOrderResponse
.
setData
(
data
);
OrderExtInfoDto
extInfo
=
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
,
shoppingCartGoodsDto
);
return
baseOrderResponse
;
//1.9.2套餐需求同步优化创建订单代码
BaseResponse
createOrderOperateDtoResponse
=
this
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
return
createOrderOperateDtoResponse
;
}
}
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderVo
,
createOrderOperateDto
,
extInfo
);
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
}
/**
/**
* 扫脸支付下单
* 扫脸支付下单
*/
*/
...
...
order-application-service/src/main/java/cn/freemud/service/impl/SpellGroupOrderServiceImpl.java
0 → 100644
View file @
04305ea3
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.adapter.SpellGroupOrderAdapter
;
import
cn.freemud.amqp.Header
;
import
cn.freemud.amqp.MQAction
;
import
cn.freemud.amqp.MQMessage
;
import
cn.freemud.amqp.MQService
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.CreateSpellGroupOrderDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.product.ProductInfo
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto
;
import
cn.freemud.entities.vo.CreateSpellGroupOrderReq
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.manager.SpellGroupOrderDataManager
;
import
cn.freemud.service.SpellGroupOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.log.ThirdPartyLog
;
import
com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.order.adapter.ActivitySdkAdapter
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.service.order.OrderCenterSdkServiceImpl
;
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.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Random
;
import
static
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS
;
import
static
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
;
/**
* @author wanghanghang
* @title: SpellGroupOrderServiceImpl
* @projectName order-group
* @description: 拼团业务层Service
* @date 2021/4/16上午9:47
*/
@Service
public
class
SpellGroupOrderServiceImpl
implements
SpellGroupOrderService
{
@Autowired
private
SpellGroupOrderAdapter
spellGroupOrderAdapter
;
@Autowired
private
OrderSdkAdapter
orderSdkAdapter
;
@Autowired
private
SpellGroupOrderDataManager
spellGroupOrderDataManager
;
@Autowired
private
AssortmentCustomerInfoManager
customerInfoManager
;
@Autowired
private
OrderSdkService
orderSdkService
;
@Autowired
private
OrderServiceImpl
orderService
;
@Autowired
private
PromotionSdkService
promotionSdkService
;
@Autowired
private
StoreCenterService
storeCenterService
;
@Autowired
private
ActivitySdkAdapter
activitySdkAdapter
;
@Autowired
private
MQService
mqService
;
@Value
(
"${program.backorders_change_order_status_consumer_queue}"
)
private
String
backOrdersChangeOrderStatusConsumerQueue
;
@Value
(
"${program.backorders_notify_activity_exchange}"
)
private
String
backOrdersNotifyActivityExchange
;
@Override
public
BaseResponse
createSpellGroupOrder
(
CreateSpellGroupOrderReq
createSpellGroupOrderReq
)
{
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
/*校验用户信息*/
String
sessionId
=
createSpellGroupOrderReq
.
getSessionId
();
AssortmentCustomerInfoVo
userLoginInfoDto
=
customerInfoManager
.
getCustomerInfoByObject
(
sessionId
);
if
(
userLoginInfoDto
==
null
||
StringUtils
.
isEmpty
(
userLoginInfoDto
.
getMemberId
()))
{
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
/*查询会员接口,获取城市等信息*/
//todo
/*获取门店信息,拼单虚拟门店,无需校验*/
StoreResponse
storeResponse
=
spellGroupOrderDataManager
.
getStoreInfo
(
createSpellGroupOrderReq
.
getPartnerId
(),
createSpellGroupOrderReq
.
getStoreId
(),
trackingNo
);
if
(
storeResponse
==
null
||
storeResponse
.
getBizVO
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
STORE_NOT_FOUND
);
}
/*初始化service业务DTO类,后续数据转换依据createSpellGroupOrderDto*/
CreateSpellGroupOrderDto
createSpellGroupOrderDto
=
new
CreateSpellGroupOrderDto
();
BeanUtils
.
copyProperties
(
createSpellGroupOrderReq
,
createSpellGroupOrderDto
);
//门店信息->转换至DTO
createSpellGroupOrderDto
.
setStoreResponse
(
storeResponse
);
/*团id不为空,调用促销查询团是否关闭,关闭之后给提示不可下单*/
String
getSpellGroupCode
=
createSpellGroupOrderReq
.
getSpellGroupCode
();
if
(
1
==
1
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
SPELL_GROUP_THE_CLUB_IS_FULL
);
}
/*---------团开启 则继续执行-------*/
/*查询配送地址等信息->转换至DTO*/
QueryReceiveAddressResponse
queryReceiveAddressResponse
=
spellGroupOrderDataManager
.
queryOrderReceiveAddress
(
createSpellGroupOrderReq
.
getReceiveId
(),
createSpellGroupOrderReq
.
getPartnerId
(),
trackingNo
);
spellGroupOrderAdapter
.
convertToReceiveAddress
(
queryReceiveAddressResponse
,
createSpellGroupOrderDto
);
/*查询商品信息*/
List
<
ProductInfo
>
productInfosDto
=
spellGroupOrderDataManager
.
queryProductInfos
(
createSpellGroupOrderDto
);
createSpellGroupOrderDto
.
setProducts
(
productInfosDto
);
/*商品信息查询促销,获取商品价格等信息 转换结算信息*/
CalculationDiscountRequestDto
calculationDiscountRequestDto
=
spellGroupOrderAdapter
.
convertToCalculationDiscountRequestDto
(
createSpellGroupOrderDto
,
userLoginInfoDto
);
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
=
spellGroupOrderDataManager
.
queryCalculationDiscount
(
calculationDiscountRequestDto
);
//促销和产品给出规则,如果促销返回的价格是商品原价,则表示库存不足或者活动关闭 == 拼团的商品价格,肯定比商品原价低
if
(
activityCalculationDiscountResponseDto
.
getResult
().
getTotalAmount
().
equals
(
productInfosDto
.
get
(
0
).
getOriginalPrice
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
SPELL_GROUP_THE_CLUB_IS_FULL
);
}
createSpellGroupOrderDto
.
setActivityCalculationDiscountResponseDto
(
activityCalculationDiscountResponseDto
);
//转换类存入费用信息->配送费
//转换费用信息
//DTO转换为订单Request信息
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
create
.
CreateOrderRequest
createOrderRequest
=
spellGroupOrderAdapter
.
convertToCreateOrderRequest
(
createSpellGroupOrderDto
,
userLoginInfoDto
);
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
response
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
CreateOrderResponse
createOrderResponse
=
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
response
);
if
(
createOrderResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderResponse
.
getErrcode
())
||
createOrderResponse
.
getData
()
==
null
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
SPELL_GROUP_CREAT_ORDER_ERROR
);
}
//调用活动库存
BaseOrderResponse
baseOrderResponse
=
updateActivityStock
(
createOrderResponse
.
getData
(),
createSpellGroupOrderDto
);
if
(!
RESPONSE_SUCCESS
.
equals
(
baseOrderResponse
.
getErrcode
()))
{
return
ResponseUtil
.
error
(
baseOrderResponse
.
getErrcode
().
toString
(),
baseOrderResponse
.
getErrmsg
(),
null
);
}
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
spellGroupOrderAdapter
.
convertToCreatePrepayRequest
(
userLoginInfoDto
,
createOrderResponse
.
getData
(),
trackingNo
);
return
orderService
.
createPrepayOrder
(
createPrepayRequestDto
);
}
/**
* 扣减动库存
* @param orderBean
* @param createSpellGroupOrderDto
* @return
*/
private
BaseOrderResponse
updateActivityStock
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
CreateSpellGroupOrderDto
createSpellGroupOrderDto
)
{
ActivityUpdateStockRequest
activityUpdateStockRequest
=
spellGroupOrderAdapter
.
convert2ActivityUpdateStockRequest
(
orderBean
,
createSpellGroupOrderDto
);
if
(
activityUpdateStockRequest
!=
null
&&
(
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getStock
())
||
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getActivityList
())))
{
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
activityUpdateStockRequest
,
""
);
ThirdPartyLog
.
infoConvertJson
(
System
.
currentTimeMillis
(),
System
.
currentTimeMillis
(),
"subtractStock"
,
JSONObject
.
toJSONString
(
activityUpdateStockRequest
),
JSONObject
.
toJSONString
(
activityResponse
));
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getCode
()))
{
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"活动库存不足"
,
""
,
null
);
orderCancel
(
cancelOrderRequest
);
//失败异步冲正库存,取消订单
backOrdersNotifyActivity
(
orderBean
,
backOrdersChangeOrderStatusConsumerQueue
,
backOrdersNotifyActivityExchange
);
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
activityResponse
.
getCode
(),
"活动库存不足"
);
}
}
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
RESPONSE_SUCCESS_STR
,
""
);
}
public
BaseOrderResponse
orderCancel
(
CancelOrderRequest
cancelOrderRequest
)
{
OrderCancelReq
request
=
new
OrderCancelReq
();
//商户号必传
request
.
setPartnerId
(
cancelOrderRequest
.
getPartnerId
());
request
.
setOrderCode
(
cancelOrderRequest
.
getOrderId
());
request
.
setReqRemark
(
cancelOrderRequest
.
getReqRemark
());
//售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单
// 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消,
request
.
setAfterSalesType
(
cancelOrderRequest
.
getAfterSalesType
().
getIndex
()
==
null
?
1
:
cancelOrderRequest
.
getAfterSalesType
().
getIndex
());
request
.
setOrderClient
(
cancelOrderRequest
.
getOrderClient
());
request
.
setCancelReason
(
cancelOrderRequest
.
getReason
());
request
.
setAfterSalesReason
(
cancelOrderRequest
.
getReason
());
//若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
request
.
setCreateEvent
(
cancelOrderRequest
.
getCreateEvent
());
request
.
setAfterSerialNo
(
cancelOrderRequest
.
getRefundSerialNo
());
request
.
setOperator
(
cancelOrderRequest
.
getOperator
());
//为空发起售后单
if
(
cancelOrderRequest
.
getCreateEvent
()
==
null
)
{
// 查询门店服务配置,退单模式为2为自动退款,判断自动退款时间,设置为0则不传入timeout,
StoreResponse
.
Configuration
configuration
=
getStoreAutoConfiguration
(
cancelOrderRequest
.
getPartnerId
(),
cancelOrderRequest
.
getStoreId
(),
cancelOrderRequest
.
getTrackingNo
());
if
(
configuration
!=
null
&&
ObjectUtils
.
equals
(
"2"
,
configuration
.
getAutoChargebackOrderType
())
&&
!
ObjectUtils
.
equals
(
"0"
,
configuration
.
getAutoChargebackOrderTime
()))
{
request
.
setTimeOut
(
AutoOrderConfigTime
.
getTime
(
configuration
.
getAutoChargebackOrderTime
()));
}
OrderTaskReq
orderTask
=
setAfterSalesOrderTimeOutTask
(
configuration
);
request
.
setOrderTask
(
orderTask
);
}
request
.
setRefundDeliveryAmount
(
cancelOrderRequest
.
isRefundDeliveryAmount
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
response
=
orderSdkService
.
cancelOrder
(
request
,
cancelOrderRequest
.
getTrackingNo
());
return
orderSdkAdapter
.
convent2BaseOrderResponse
(
response
);
}
/**
* 获取门店自动配置信息
*
* @param partnerId
* @param storeCode
* @param trackingNo
* @return
*/
private
StoreResponse
.
Configuration
getStoreAutoConfiguration
(
String
partnerId
,
String
storeCode
,
String
trackingNo
)
{
if
(
StringUtils
.
isEmpty
(
storeCode
))
{
return
null
;
}
StoreInfoRequest
storeInfoRequest
=
new
StoreInfoRequest
();
storeInfoRequest
.
setPartnerId
(
partnerId
);
storeInfoRequest
.
setStoreCode
(
storeCode
);
StoreResponse
storeResponse
=
storeCenterService
.
getStoreInfo
(
storeInfoRequest
,
trackingNo
);
if
(
storeResponse
==
null
||
storeResponse
.
getBizVO
()
==
null
||
storeResponse
.
getBizVO
().
getStoreConfig
()
==
null
)
{
return
null
;
}
return
storeResponse
.
getBizVO
().
getStoreConfig
();
}
/**
* 设置申请退款时间
* 如果时间的类型是2表示采用原来的48小时逻辑
* 如果时间的类型是1表示在指定的时间之后进行退款
* 为了防止同一时刻的退款量太大,需要将退款的订单分散到指定的时间后半小时内
*/
private
OrderTaskReq
setAfterSalesOrderTimeOutTask
(
StoreResponse
.
Configuration
configuration
)
{
if
(
configuration
==
null
)
{
return
null
;
}
if
((
configuration
.
getTimeTypeOfRefund
()
!=
null
&&
2
==
configuration
.
getTimeTypeOfRefund
().
intValue
())
||
configuration
.
getTimeTypeOfRefund
()
==
null
)
{
// 48小时之后
OrderTaskReq
orderTask
=
new
OrderTaskReq
();
orderTask
.
setTaskType
(
4
);
orderTask
.
setTimeout
(
1
);
//1000*60*60*24*2 毫秒(48小时)
long
timeout
=
172800000
;
long
timeMillis
=
System
.
currentTimeMillis
();
Date
processingDate
=
new
Date
(
timeMillis
+
timeout
-
60000
);
Date
taskTime
=
new
Date
(
timeMillis
+
timeout
);
orderTask
.
setTaskTime
(
DateUtil
.
convert2String
(
taskTime
,
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
));
//处理时间,当前时间加48小时减1分钟
orderTask
.
setProcessingTime
(
DateUtil
.
convert2String
(
processingDate
,
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
));
return
orderTask
;
}
else
if
(
configuration
.
getTimeTypeOfRefund
()
!=
null
&&
1
==
configuration
.
getTimeTypeOfRefund
().
intValue
())
{
// 指定时间
OrderTaskReq
orderTask
=
new
OrderTaskReq
();
orderTask
.
setTaskType
(
4
);
orderTask
.
setTimeout
(
1
);
// 获取门店配置的当天指定的退款时间
String
timeOfRefund
=
configuration
.
getTimeOfRefund
();
// 获取半小时的随机数
Random
r
=
new
Random
();
int
minute
=
r
.
ints
(
1
,
31
).
findFirst
().
getAsInt
()
*
60000
;
String
today
=
DateUtil
.
getCurrentDate
(
DateUtil
.
FORMAT_YMD
);
Date
configTime
=
DateUtil
.
convert2Date
(
today
+
" "
+
timeOfRefund
,
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
// 判断当前时间是否已经超过门店设置的截至时间
if
(
new
Date
().
after
(
configTime
))
{
today
=
DateUtil
.
convert2String
(
DateUtil
.
addDays
(
new
Date
(),
1
),
DateUtil
.
FORMAT_YMD
);
configTime
=
DateUtil
.
convert2Date
(
today
+
" "
+
timeOfRefund
,
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
}
Date
processingDate
=
new
Date
(
configTime
.
getTime
()
+
minute
);
String
processingStr
=
DateUtil
.
convert2String
(
processingDate
,
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
orderTask
.
setTaskTime
(
processingStr
);
orderTask
.
setProcessingTime
(
processingStr
);
return
orderTask
;
}
return
null
;
}
private
void
backOrdersNotifyActivity
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
String
backOrdersChangeOrderStatusConsumerQueue
,
String
backOrdersNotifyActivityExchange
)
{
if
(
null
==
orderBean
||
backOrdersChangeOrderStatusConsumerQueue
==
null
||
backOrdersNotifyActivityExchange
==
null
)
{
return
;
}
String
oid
=
orderBean
.
getOid
();
Integer
status
=
orderBean
.
getStatus
();
if
(
StringUtils
.
isEmpty
(
oid
))
{
return
;
}
ApiLog
.
info
(
"backOrdersStatusChange"
,
oid
,
String
.
valueOf
(
status
));
OrderStatusChangeRequestDto
requestDto
=
new
OrderStatusChangeRequestDto
();
requestDto
.
setOid
(
oid
);
requestDto
.
setOrderStatus
(
status
);
try
{
Header
header
=
new
Header
(
MQAction
.
INSERT
.
getAction
(),
"backOrdersStatusChange"
,
oid
,
backOrdersChangeOrderStatusConsumerQueue
);
MQMessage
<
OrderStatusChangeRequestDto
>
message
=
new
MQMessage
<>(
header
,
requestDto
);
mqService
.
convertAndSend
(
backOrdersNotifyActivityExchange
,
backOrdersChangeOrderStatusConsumerQueue
,
message
);
}
catch
(
Exception
e
)
{
//TODO 邮件告警
ThirdPartyLog
.
infoConvertJson
(
System
.
currentTimeMillis
(),
System
.
currentTimeMillis
(),
"backOrdersStatusChangeNotify_error"
,
backOrdersNotifyActivityExchange
,
backOrdersChangeOrderStatusConsumerQueue
);
}
}
}
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionDiscountClient.java
View file @
04305ea3
...
@@ -12,6 +12,10 @@
...
@@ -12,6 +12,10 @@
*/
*/
package
cn
.
freemud
.
service
.
thirdparty
;
package
cn
.
freemud
.
service
.
thirdparty
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeKeyConstant
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.ActivityQueryRequestDto
;
import
cn.freemud.entities.dto.ActivityQueryRequestDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryResponseDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryResponseDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
...
@@ -23,8 +27,17 @@ import org.springframework.web.bind.annotation.*;
...
@@ -23,8 +27,17 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
public
interface
PromotionDiscountClient
{
public
interface
PromotionDiscountClient
{
/**无人使用,注释掉。**/
// @PostMapping("/calculation/discount/sharing")
// CalculationDiscountResponseDto discountSharing(@RequestBody CalculationDiscountRequestDto calculationDiscountRequestDto);
/**
* 新版优惠均摊计算
* @param calculationDiscountRequestDto
* @return
*/
@PostMapping
(
"/calculation/discount/sharing"
)
@PostMapping
(
"/calculation/discount/sharing"
)
CalculationDiscountResponseDto
discountSharing
(
@RequestBody
CalculationDiscountRequestDto
calculationDiscountRequestDto
);
ActivityCalculationDiscountResponseDto
calculationDiscountSharing
(
CalculationDiscountRequestDto
calculationDiscountRequestDto
);
/**
/**
* 统一活动查询接口
* 统一活动查询接口
...
...
order-application-service/src/test/java/cn.freemud/controller/SpellGroupOrderControllerTest.java
0 → 100644
View file @
04305ea3
package
cn
.
freemud
.
controller
;
import
cn.freemud.OrderApplication
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreateSpellGroupOrderReq
;
import
com.alibaba.fastjson.JSONObject
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.web.servlet.MockMvc
;
import
org.springframework.test.web.servlet.setup.MockMvcBuilders
;
import
org.springframework.web.context.WebApplicationContext
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
post
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultHandlers
.
print
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
jsonPath
;
/**
* @author freemud
* @title: SpellGroupOrderControllerTest
* @projectName order-group
* @description: TODO
* @date 2021/4/16下午3:58
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
OrderApplication
.
class
)
public
class
SpellGroupOrderControllerTest
{
@Autowired
private
WebApplicationContext
wac
;
private
MockMvc
mockMvc
;
@Before
public
void
setUp
()
{
mockMvc
=
MockMvcBuilders
.
webAppContextSetup
(
wac
).
build
();
}
/**
* 创建订单
*/
@Test
public
void
createOrder
()
{
CreateSpellGroupOrderReq
createSpellGroupOrderReq
=
new
CreateSpellGroupOrderReq
();
// createSpellGroupOrderReq.setSessionId();
// createSpellGroupOrderReq.setSpellGroupCode();
// createSpellGroupOrderReq.setStoreId("3536");
// createSpellGroupOrderReq.setPartnerId("1864");
// createSpellGroupOrderReq.setMenuType();
// createSpellGroupOrderReq.setChannelType();
// createSpellGroupOrderReq.setOrderClient();
// createSpellGroupOrderReq.setPayChannelType();
// createSpellGroupOrderReq.setOrderType();
// createSpellGroupOrderReq.setMarketingType();
// createSpellGroupOrderReq.setReceiveId();
// createSpellGroupOrderReq.setActivityCode();
// createSpellGroupOrderReq.setSpellGroupProductList();
// createSpellGroupOrderReq.setOrderRemark();
String
str
=
JSONObject
.
toJSONString
(
createSpellGroupOrderReq
);
try
{
mockMvc
.
perform
(
post
(
"/order/createSpellGroupOrder"
).
content
(
str
).
contentType
(
MediaType
.
APPLICATION_JSON_UTF8
).
accept
(
MediaType
.
APPLICATION_JSON_UTF8
)).
andDo
(
print
()).
andExpect
(
jsonPath
(
"$.code"
).
value
(
"100"
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExtendedReq.java
View file @
04305ea3
...
@@ -25,4 +25,6 @@ public class OrderExtendedReq {
...
@@ -25,4 +25,6 @@ public class OrderExtendedReq {
//订单门店英文名称
//订单门店英文名称
private
String
storeNameEn
;
private
String
storeNameEn
;
private
String
spellGroupCode
;
}
}
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