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
0ab2b0a3
Commit
0ab2b0a3
authored
Jan 12, 2021
by
徐康
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
1a4bf2c3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
732 additions
and
4 deletions
+732
-4
order-application-service/src/main/java/cn/freemud/adapter/CreateOrderAdapter.java
+41
-0
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+11
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderBaseVo.java
+379
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderSaasVo.java
+19
-0
order-application-service/src/main/java/cn/freemud/enums/CreateOrderSceneEnum.java
+32
-0
order-application-service/src/main/java/cn/freemud/manager/MemberPropertyManager.java
+35
-0
order-application-service/src/main/java/cn/freemud/manager/ShoppingCartInfoManager.java
+6
-0
order-application-service/src/main/java/cn/freemud/manager/StoreInfoManager.java
+23
-0
order-application-service/src/main/java/cn/freemud/service/OrderAdapterService.java
+9
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
+63
-4
order-application-service/src/main/java/cn/freemud/service/universal/UniversalOrderService.java
+0
-0
order-application-service/src/main/java/cn/freemud/service/universal/factory/CreateOrderServiceFactory.java
+43
-0
order-application-service/src/main/java/cn/freemud/service/universal/impl/SaasOrderService.java
+71
-0
No files found.
order-application-service/src/main/java/cn/freemud/adapter/CreateOrderAdapter.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
adapter
;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.vo.CreateOrderBaseVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
lombok.Data
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.Map
;
@Component
public
class
CreateOrderAdapter
{
public
CreatePrepayRequestDto
convertToCreatePrepayRequestDto
(
AssortmentCustomerInfoVo
userLoginInfoDto
,
CreateOrderBaseVo
createOrderBaseVo
,
CreateOrderOperateDto
createOrderOperateDto
,
OrderExtInfoDto
orderExtInfoDTO
){
CreatePrepayRequestDto
requestDto
=
new
CreatePrepayRequestDto
();
requestDto
.
setPartnerId
(
createOrderBaseVo
.
getPartnerId
());
requestDto
.
setWxAppId
(
userLoginInfoDto
.
getWxAppId
());
requestDto
.
setOpenId
(
userLoginInfoDto
.
getOpenId
());
requestDto
.
setFaceCode
(
createOrderBaseVo
.
getCardCode
());
requestDto
.
setCardCode
(
createOrderBaseVo
.
getCardCode
());
requestDto
.
setPayCode
(
null
);
requestDto
.
setFatherOrderBean
(
createOrderOperateDto
.
getFatherOrderBean
());
requestDto
.
setProductOrderBean
(
createOrderOperateDto
.
getProductOrderBean
());
requestDto
.
setTotalAmount
(
createOrderOperateDto
.
getTotalAmount
());
requestDto
.
setCardAmount
(
createOrderOperateDto
.
getCardAmount
());
requestDto
.
setOrderExtInfoDTO
(
orderExtInfoDTO
);
requestDto
.
setTransId
(
createOrderOperateDto
.
getFatherOrderBean
().
getOid
());
requestDto
.
setOrderClient
(
null
);
requestDto
.
setUnionPayCard
(
createOrderBaseVo
.
getUnionPayCard
());
requestDto
.
setStoreId
(
createOrderBaseVo
.
getShopId
());
requestDto
.
setChannel
(
createOrderBaseVo
.
getChannel
());
return
requestDto
;
}
}
\ No newline at end of file
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
0ab2b0a3
...
...
@@ -31,6 +31,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Map
;
@Slf4j
@RequestMapping
(
"/order"
)
@RestController
...
...
@@ -74,6 +76,15 @@ public class OrderController {
}
/**
* 通用创建订单
*/
@ApiAnnotation
(
logMessage
=
"createOrderUniversal"
)
@PostMapping
(
"/createOrderUniversal"
)
public
BaseResponse
createOrderUniversal
(
@Validated
@LogParams
@RequestBody
Map
<
String
,
Object
>
param
)
{
return
orderAdapterService
.
createOrderUniversal
(
param
);
}
/**
* 麦咖啡创建订单
*/
@ApiAnnotation
(
logMessage
=
"createMCCafeOrder"
)
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderBaseVo.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.UserDeliveryInfoDto
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
@Data
public
class
CreateOrderBaseVo
{
@NotEmpty
(
message
=
"sessionId 不能为空"
)
private
String
sessionId
;
//@NotEmpty(message = "门店ID 不能为空") //本次需要根据业务做校验
private
String
shopId
;
private
String
thirdShopId
;
/**
* 就餐人数
*/
private
Integer
peopleNumber
;
/**
* 操作标识
*/
private
Integer
operation
;
/**
* 购物车版本号
*/
private
Integer
carVer
;
/**
* 下单版本号
*/
private
Integer
orderUpdateVer
;
private
String
partnerId
;
private
String
storeName
;
//入参不需要传
private
String
storeAddress
;
private
String
userId
;
private
String
userName
;
private
String
mobile
;
/**
* 渠道 1 saas 2 img 爱马哥 默认saas 3. iwc i围餐
*/
private
String
channel
;
/**
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
*/
//@NotNull(message = "下单类型不能为空")
private
Integer
orderType
;
/**
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/
private
Byte
marketingType
;
/**
* 到店类型 orderType 传1的时候 如果reachStoreTyp为空转成订单类型4 如果不为空存储4(打包带走)和5(店内就餐)
*/
private
Integer
reachStoreType
;
/**
* 桌号
*/
private
String
tableNumber
;
/**
* 取餐时间
*/
private
String
takeMealTime
;
/**
* 预约时间 格式yyyy-MM-dd HH:mm:ss
* 麦咖啡返回的是yyyy-MM-dd HH:mm
*/
private
String
expectTime
;
/**
* 取餐标识 0=我已到店、尽快送出 1预约单
*/
private
String
takeMealFlag
;
/**
* 是否外带 ,打包 1 是 0 否
*/
private
Integer
takeOut
;
/**
* 订单备注
*/
private
String
orderRemark
;
/**
* 收货地址ID
*/
private
String
receiveId
;
/**
* 收货办公楼
*/
private
String
officeName
;
/**
* 收货地址
*/
private
String
receiveAddress
;
/**
* 收货用户名
*/
private
String
receiveUsername
;
/**
* 收货电话
*/
@Pattern
(
regexp
=
"^1[3|4|5|6|7|8|9][0-9]{9}$"
,
message
=
"手机号码格式不正确"
)
private
String
receiveMobile
;
/**
* 收货人性别 sexType 1 男 2 女 0 未知
*/
private
Integer
sex
;
/**
* 用户定义纬度
*/
private
String
latitude
;
/**
* 用户定义经度
*/
private
String
longitude
;
/**
* 券码
*/
private
String
couponCode
;
/**
* 券码列表
*/
private
List
<
CreateOrderVo
.
couponCode
>
couponCodes
;
/**
* 版本号
*/
private
String
version
;
/**
* form_id 用于金额是0的情况 现在只支持商品券,前端参数
*/
private
String
formId
;
/**
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/
public
UserDeliveryInfoDto
userDeliveryInfoDto
;
/**
* 下单支付渠道类型
*/
private
Byte
payChannelType
;
@Valid
private
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
;
/**
* 买一赠一选择的商品
*/
private
List
<
CreateOrderVo
.
ChooseGood
>
chooseGoods
;
/**
* 是否使用用户积分
* 1=不显示积分
* 2=显示积分但不扣减
* 3=显示积分且扣减
*/
private
Integer
useCustomerScore
;
/**
* 会员卡信息
*/
private
BuyMemberCard
buyMemberCard
;
/**
* svc 卡支付使用
*/
private
String
cardCode
;
/**
* 扫脸支付使用
*/
private
String
faceCode
;
@ApiModelProperty
(
hidden
=
true
)
private
String
sessionKey
;
// 存储sessionKey,异常补退使用
@ApiModelProperty
(
hidden
=
true
)
private
String
scene
;
// 打开小程序的场景值
@Builder
.
Default
private
String
menuType
=
"saas"
;
/**
* 渠道类型 OrderChannelType
*/
private
String
channelType
;
/**
* 是否使用电子风味卡,如果不为空则为使用
*/
@Valid
@ApiModelProperty
(
value
=
"电子风味卡"
)
private
CreateOrderVo
.
UnionPayCard
unionPayCard
;
/**
* 电子风味卡
*/
@Data
@ApiModel
(
value
=
"电子风味卡"
,
description
=
"如果传了电子风味卡字段,此类中属性必传"
)
public
static
class
UnionPayCard
{
@NotNull
(
message
=
"电子风味卡手机号必传"
)
@ApiModelProperty
(
value
=
"电子风味卡卡号(手机号)"
,
required
=
true
)
private
String
code
;
@NotNull
(
message
=
"电子风味卡密码必传"
)
@ApiModelProperty
(
value
=
"电子风味卡密码"
,
required
=
true
)
private
String
password
;
}
/**
* 微信配送地址信息
*/
private
WeixinDeliveryAddressDto
weixinDeliveryAddress
;
@Data
public
static
class
PremiumExchangeActivity
{
@NotNull
(
message
=
"activityCode 不能为空"
)
private
String
activityCode
;
@NotNull
(
message
=
"activityName 不能为空"
)
private
String
activityName
;
/**
* 加价购sku商品信息
*/
@Valid
private
List
<
CreateOrderVo
.
PremiumExchangeActivity
.
Product
>
products
;
@Data
public
static
class
Product
{
/**
* spuId 商品原始id
*/
@NotNull
(
message
=
"spuId不能为空"
)
private
String
spuId
;
/**
* skuId 如果是多规格 skuId 不能为空
*/
@NotNull
(
message
=
"skuId不能为空"
)
private
String
skuId
;
/**
* 商品名称
*/
@NotNull
(
message
=
"商品名称不能为空"
)
private
String
skuName
;
@NotNull
(
message
=
"商品数量不能为空"
)
private
Integer
qty
;
/**
* 图片
*/
private
String
picture
;
/**
* 原价 入参不需要传,做对象组装使用
*/
private
Long
originalPrice
;
/**
* 现价 入参不需要传,做对象组装使用
*/
private
Long
nowPrice
;
@Valid
private
List
<
CreateOrderVo
.
PremiumExchangeActivity
.
Product
.
Attribute
>
attributes
;
@Data
public
static
class
Attribute
{
/**
* 属性ID
*/
private
String
attributeId
;
/**
* 属性名称
*/
private
String
attributeValue
;
}
}
}
@Data
public
final
static
class
BuyMemberCard
{
/**
* 付费会员卡ID
*/
private
String
paidId
;
/**
* 规则ID
*/
private
String
ruleId
;
}
@Data
public
static
class
ChooseGood
{
/**
* 活动类型
*/
private
Integer
activeType
;
/**
* 活动号
*/
private
String
activeCode
;
/**
* 赠送商品id
*/
private
String
goodsId
;
/**
* 赠送商品名称
*/
private
String
goodsName
;
/**
* 赠送商品数量
*/
private
Integer
qty
;
/**
* 可兑换商品券编号
*/
private
String
couponCode
;
/**
* 商品券兑换数量
*/
private
Integer
couponQty
;
/**
* 是否已选择寄杯
*/
private
Boolean
sendCoupon
;
}
@Data
public
final
static
class
couponCode
{
/**
* 优惠券
*/
private
String
couponCode
;
/**
* 活动号
*/
private
String
activityCode
;
/**
* 顺序
*/
private
Integer
index
;
}
}
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderSaasVo.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.UserDeliveryInfoDto
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
@Data
public
class
CreateOrderSaasVo
extends
CreateOrderBaseVo
{
}
order-application-service/src/main/java/cn/freemud/enums/CreateOrderSceneEnum.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
enums
;
public
enum
CreateOrderSceneEnum
{
SAAS
(
1
,
"saas"
),
;
private
Integer
code
;
private
String
desc
;
CreateOrderSceneEnum
(
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/manager/MemberPropertyManager.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
manager
;
import
cn.freemud.entities.vo.CreateOrderBaseVo
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest
;
import
com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberIdResponse
;
import
com.freemud.application.sdk.api.membercenter.service.MemberPropertyService
;
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.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
public
class
MemberPropertyManager
{
@Autowired
private
MemberPropertyService
memberPropertyService
;
public
List
<
GetSvcInfoByMemberIdResponse
>
getSvcInfoByMemberId
(
StatisticalPropertyRequest
request
,
String
trackingNo
)
{
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
List
<
GetSvcInfoByMemberIdResponse
>>
responseDTO
=
memberPropertyService
.
getSvcInfoByMemberId
(
request
,
LogThreadLocal
.
getTrackingNo
());
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
responseDTO
.
getCode
())
||
responseDTO
.
getData
()
==
null
||
responseDTO
.
getData
().
size
()
==
0
)
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
}
return
responseDTO
.
getData
();
}
}
order-application-service/src/main/java/cn/freemud/manager/ShoppingCartInfoManager.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
manager
;
public
class
ShoppingCartInfoManager
{
}
order-application-service/src/main/java/cn/freemud/manager/StoreInfoManager.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
manager
;
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.Service
;
@Service
public
class
StoreInfoManager
{
@Autowired
StoreCenterService
storeCenterService
;
/**
* 查询门店信息
*/
public
StoreResponse
getStoreInfo
(
String
partnerId
,
String
shopId
,
String
trackingNo
)
{
// 获取门店信息
StoreInfoRequest
storeInfoRequest
=
new
StoreInfoRequest
(
partnerId
,
shopId
,
null
);
return
storeCenterService
.
getStoreInfo
(
storeInfoRequest
,
trackingNo
);
}
}
order-application-service/src/main/java/cn/freemud/service/OrderAdapterService.java
View file @
0ab2b0a3
...
...
@@ -6,6 +6,8 @@ import cn.freemud.entities.vo.CreateOrderVo;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
java.util.Map
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
...
...
@@ -27,6 +29,13 @@ public interface OrderAdapterService {
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
);
/**
* 创建订单
* @param param
* @return
*/
BaseResponse
createOrderUniversal
(
Map
<
String
,
Object
>
param
);
/**
* 麦咖啡创建订单
* @param createOrderVo
* @return
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
0ab2b0a3
...
...
@@ -6,17 +6,17 @@ import cn.freemud.base.log.LogTreadLocal;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.AppCreateOrderVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.*
;
import
cn.freemud.service.universal.UniversalOrderService
;
import
cn.freemud.service.universal.factory.CreateOrderServiceFactory
;
import
cn.freemud.utils.RedisUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.enums.IappIdType
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
...
...
@@ -24,15 +24,23 @@ import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import
com.freemud.sdk.api.assortment.order.util.LockUtils
;
import
com.google.gson.Gson
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.hibernate.validator.HibernateValidator
;
import
org.hibernate.validator.HibernateValidatorConfiguration
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.ValidatorFactory
;
import
java.util.Arrays
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Set
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
@@ -73,6 +81,10 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private
OrderServiceImpl
orderService
;
@Autowired
private
MCCafeOrderService
mcCafeOrderService
;
private
UniversalOrderService
universalOrderService
;
@Autowired
private
CreateOrderServiceFactory
createOrderServiceFactory
;
@Autowired
private
AssortmentCustomerInfoManager
assortmentCustomerInfoManager
;
@Autowired
...
...
@@ -89,6 +101,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private
SellCouponOrderServiceImpl
sellCouponOrderService
;
@Value
(
"${saas.autoRefund.client}"
)
private
String
autoRefundClient
;
@Override
public
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
)
{
AssortmentCustomerInfoVo
assortmentCustomerInfoVo
=
assortmentCustomerInfoManager
.
getCustomerInfoByObject
(
createOrderVo
.
getSessionId
());
...
...
@@ -159,6 +173,51 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
//LockUtils.unlock(redisCache.getRedisTemplate(),createOrderKey);
}
}
@Override
public
BaseResponse
createOrderUniversal
(
Map
<
String
,
Object
>
param
)
{
String
sessionId
=
(
String
)
param
.
get
(
"sessionId"
);
if
(
StringUtils
.
isBlank
(
sessionId
))
{
throw
new
ServiceException
(
ResponseResult
.
SESSION_INVAILD
);
}
AssortmentCustomerInfoVo
assortmentCustomerInfoVo
=
assortmentCustomerInfoManager
.
getCustomerInfoByObject
(
sessionId
);
if
(
assortmentCustomerInfoVo
==
null
||
StringUtils
.
isEmpty
(
assortmentCustomerInfoVo
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
}
CreateOrderSceneEnum
createOrderScene
=
createOrderServiceFactory
.
getCreateOrderScene
(
param
,
assortmentCustomerInfoVo
);
CreateOrderBaseVo
createOrderBaseVo
=
createOrderServiceFactory
.
getCreateOrderVo
(
param
,
createOrderScene
);
// 添加分布式锁,如果没有取得锁直接返回失败;整个方法执行完毕后会删掉该锁
// 锁定秒数从apollo获取,如果apollo没有设置,默认5秒
String
createOrderKey
=
CREATE_ORDER_KEY
+
assortmentCustomerInfoVo
.
getMemberId
();
try
{
Long
expire
=
Long
.
valueOf
(
createOrderKeyExpire
);
if
(!
LockUtils
.
lock
(
redisCache
.
getRedisTemplate
(),
createOrderKey
,
expire
)){
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_NOT_CREATE_ERROR
);
}
return
createOrderServiceFactory
.
getCreateOrderService
(
createOrderScene
).
createOrder
(
createOrderBaseVo
,
assortmentCustomerInfoVo
);
}
catch
(
Exception
e
)
{
throw
e
;
}
finally
{
//LockUtils.unlock(redisCache.getRedisTemplate(),createOrderKey);
}
}
private
BaseResponse
validateParam
(
CreateOrderBaseVo
createOrderBaseVo
)
{
HibernateValidatorConfiguration
configuration
=
Validation
.
byProvider
(
HibernateValidator
.
class
)
.
configure
()
.
failFast
(
false
);
ValidatorFactory
validatorFactory
=
configuration
.
buildValidatorFactory
();
Set
<
ConstraintViolation
<
CreateOrderBaseVo
>>
set
=
validatorFactory
.
getValidator
().
validate
(
createOrderBaseVo
);
if
(
CollectionUtils
.
isNotEmpty
(
set
))
{
Iterator
<
ConstraintViolation
<
CreateOrderBaseVo
>>
iterator
=
set
.
iterator
();
if
(
iterator
.
hasNext
())
{
ConstraintViolation
<
CreateOrderBaseVo
>
constraintViolation
=
iterator
.
next
();
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
.
getCode
(),
constraintViolation
.
getMessage
());
}
}
return
ResponseUtil
.
success
();
}
@Override
...
...
order-application-service/src/main/java/cn/freemud/service/universal/UniversalOrderService.java
0 → 100644
View file @
0ab2b0a3
This diff is collapsed.
Click to expand it.
order-application-service/src/main/java/cn/freemud/service/universal/factory/CreateOrderServiceFactory.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
service
.
universal
.
factory
;
import
cn.freemud.entities.vo.CreateOrderBaseVo
;
import
cn.freemud.entities.vo.CreateOrderSaasVo
;
import
cn.freemud.enums.CreateOrderSceneEnum
;
import
cn.freemud.service.universal.UniversalOrderService
;
import
cn.freemud.service.universal.impl.SaasOrderService
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
@Service
public
class
CreateOrderServiceFactory
{
@Autowired
private
ApplicationContext
applicationContext
;
public
CreateOrderSceneEnum
getCreateOrderScene
(
Map
<
String
,
Object
>
param
,
AssortmentCustomerInfoVo
assortmentCustomerInfoVo
)
{
return
CreateOrderSceneEnum
.
SAAS
;
}
public
CreateOrderBaseVo
getCreateOrderVo
(
Map
<
String
,
Object
>
param
,
CreateOrderSceneEnum
createOrderSceneEnum
)
{
switch
(
createOrderSceneEnum
)
{
case
SAAS:
return
JSON
.
parseObject
(
JSON
.
toJSONString
(
param
),
CreateOrderSaasVo
.
class
);
default
:
return
JSON
.
parseObject
(
JSON
.
toJSONString
(
param
),
CreateOrderSaasVo
.
class
);
}
}
public
UniversalOrderService
getCreateOrderService
(
CreateOrderSceneEnum
createOrderSceneEnum
)
{
switch
(
createOrderSceneEnum
)
{
case
SAAS:
return
applicationContext
.
getBean
(
"SaasOrderService"
,
SaasOrderService
.
class
);
default
:
return
applicationContext
.
getBean
(
"SaasOrderService"
,
SaasOrderService
.
class
);
}
}
}
order-application-service/src/main/java/cn/freemud/service/universal/impl/SaasOrderService.java
0 → 100644
View file @
0ab2b0a3
package
cn
.
freemud
.
service
.
universal
.
impl
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.CreateOrderBaseVo
;
import
cn.freemud.entities.vo.CreateOrderSaasVo
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.universal.UniversalOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.hibernate.validator.HibernateValidator
;
import
org.hibernate.validator.HibernateValidatorConfiguration
;
import
org.springframework.stereotype.Service
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.ValidatorFactory
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Set
;
@Service
public
class
SaasOrderService
extends
UniversalOrderService
{
@Override
public
void
handleCustomParam
(
CreatePrepayRequestDto
requestDto
,
Map
<
String
,
Object
>
customParam
)
{
}
@Override
public
void
validParam
(
CreateOrderBaseVo
createOrderBaseVo
)
{
CreateOrderSaasVo
createOrderSaasVo
=
(
CreateOrderSaasVo
)
createOrderBaseVo
;
HibernateValidatorConfiguration
configuration
=
Validation
.
byProvider
(
HibernateValidator
.
class
)
.
configure
()
.
failFast
(
false
);
ValidatorFactory
validatorFactory
=
configuration
.
buildValidatorFactory
();
Set
<
ConstraintViolation
<
CreateOrderBaseVo
>>
set
=
validatorFactory
.
getValidator
().
validate
(
createOrderSaasVo
);
if
(
CollectionUtils
.
isNotEmpty
(
set
))
{
Iterator
<
ConstraintViolation
<
CreateOrderBaseVo
>>
iterator
=
set
.
iterator
();
if
(
iterator
.
hasNext
())
{
ConstraintViolation
<
CreateOrderBaseVo
>
constraintViolation
=
iterator
.
next
();
throw
new
ServiceException
(
ResponseResult
.
PARAMETER_MISSING
,
constraintViolation
.
getMessage
());
}
}
}
@Override
public
BaseResponse
createSharedOrder
(
CreateOrderBaseVo
createOrderBaseVo
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
AssortmentCustomerInfoVo
userLoginInfoDto
,
Map
<
String
,
Object
>
customParam
)
{
return
null
;
}
@Override
public
Map
<
String
,
Object
>
getCustomParam
(
CreateOrderBaseVo
createOrderBaseVo
,
AssortmentCustomerInfoVo
userLoginInfoDto
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
)
{
return
null
;
}
@Override
public
void
customCheck
(
Map
<
String
,
Object
>
customParam
)
{
}
@Override
public
ShoppingCartGoodsDto
checkShoppingCartGoods
(
CreateOrderBaseVo
createOrderBaseVo
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
)
{
return
null
;
}
}
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