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
6421e937
Commit
6421e937
authored
Nov 27, 2020
by
缪晖
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拼单订单修改内容提交
parent
62aa3a19
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
233 additions
and
57 deletions
+233
-57
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/RedisKeyConstant.java
+3
-3
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CollagePartnerMember.java
+27
-0
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
+69
-38
order-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
+10
-0
order-application-service/src/main/java/cn/freemud/entities/dto/wechat/GroupBuyDto.java
+18
-0
order-application-service/src/main/java/cn/freemud/entities/dto/wechat/GroupBuyResp.java
+18
-0
order-application-service/src/main/java/cn/freemud/entities/vo/WechatGroupBuyVo.java
+21
-0
order-application-service/src/main/java/cn/freemud/service/CollageOrderService.java
+9
-1
order-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
+18
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartInfoRequestVo.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/CollageOrderService.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
+16
-7
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartCollageServiceImpl.java
+21
-5
No files found.
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/RedisKeyConstant.java
View file @
6421e937
...
...
@@ -111,10 +111,10 @@ public class RedisKeyConstant {
public
final
static
String
COLLAGE_MEMBER_STATE_KEY
=
"kgd:collage:member:state:{0}:{1}:{2}"
;
/**
* kgd:collage:store:member:{partnerId}
:{storeId}
*
门店
下拼单人员缓存key
* kgd:collage:store:member:{partnerId}
*
商户
下拼单人员缓存key
*/
public
final
static
String
COLLAGE_
STORE_MEMBER_KEY
=
"kgd:collage:store:member:{0}:{1
}"
;
public
final
static
String
COLLAGE_
PARTNER_MEMBER_KEY
=
"kgd:collage:partner:member:{0
}"
;
/**
* kgd:collage:cart:lock:{partnerId}:{storeId}:{邀请用户ID}
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CollagePartnerMember.java
0 → 100644
View file @
6421e937
package
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
domain
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-11-27 11:53
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
CollagePartnerMember
implements
Serializable
{
private
String
partnerId
;
private
String
storeId
;
private
String
createCollageUserId
;
private
Long
expire
;
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
View file @
6421e937
...
...
@@ -10,6 +10,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.RedisKeyConstant;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrderDto
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollagePartnerMember
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.CollageOrderBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.DateTimeUtils
;
...
...
@@ -47,6 +48,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
/**
* 查询拼单订单
* 根据createCollageUserId查询,先根据key查询,若不存在去商户旗下拼单列表查询,若存在则返回
* @param collageOrderDto
* @return
*/
...
...
@@ -54,15 +56,30 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
public
BaseResponse
<
CollageOrder
>
queryCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
try
{
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String
redis
Key
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
String
collageBaseHash
Key
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
// 查询Redis缓存中拼单订单基础信息
CollageOrder
collageOrder
=
this
.
getCollageBaseHash
(
redisKey
);
CollageOrder
collageOrder
=
this
.
getCollageBaseHash
(
collageBaseHashKey
);
// 若按发起人维度查询不到,则按参与人维度查询
if
(
ObjectUtils
.
isEmpty
(
collageOrder
))
{
String
collagePartnerMemberHashKey
=
this
.
genCollagePartnerMemberHashKey
(
collageOrderDto
.
getPartnerId
());
CollagePartnerMember
collagePartnerMember
=
this
.
getCollagePartnerMember
(
collagePartnerMemberHashKey
,
collageOrderDto
.
getCreateCollageUserId
());
// 若商户拼单参与人列表信息不存在或已过期
if
(
collagePartnerMember
==
null
||
collagePartnerMember
.
getExpire
()
<
System
.
currentTimeMillis
())
{
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_NOT_EXIST
);
}
else
{
// 从商户拼单参与人列表中获取信息再次查询拼单信息
collageBaseHashKey
=
this
.
genCollageBaseHashKey
(
collagePartnerMember
.
getPartnerId
(),
collagePartnerMember
.
getStoreId
(),
collagePartnerMember
.
getCreateCollageUserId
());
collageOrder
=
this
.
getCollageBaseHash
(
collageBaseHashKey
);
// 若拼单订单信息
不存在,则返回错误提示【拼单订单信息不存在】,由前端根据场景处理(静默、提示拼单已取消)
// 若拼单订单信息依然
不存在,则返回错误提示【拼单订单信息不存在】,由前端根据场景处理(静默、提示拼单已取消)
if
(
ObjectUtils
.
isEmpty
(
collageOrder
))
{
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_NOT_EXIST
);
}
}
}
// 若拼单订单信息存在,则构造订单拼单对象并返回成功提示
return
CartResponseUtil
.
success
(
collageOrder
);
...
...
@@ -80,7 +97,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override
public
BaseResponse
<
CollageOrder
>
createCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
try
{
if
(!
this
.
isInCollage
Store
MemberList
(
collageOrderDto
))
{
if
(!
this
.
isInCollage
Partner
MemberList
(
collageOrderDto
))
{
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String
collageBaseHashKey
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
...
...
@@ -102,8 +119,9 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
String
collageMemberStateHashKey
=
this
.
genCollageMemberStateHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
this
.
initCollageMemberState
(
collageMemberStateHashKey
,
collageOrderDto
);
// 将拼单发起人加入门店拼单客户列表
String
collageStoreMemberKey
=
this
.
genCollageMemerHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
());
this
.
putCollageStoreMember
(
collageStoreMemberKey
,
collageOrderDto
.
getCreateCollageUserId
(),
this
.
getCollageBashHashExpireSeconds
(
collageBaseHashKey
));
String
collagePartnerMemberKey
=
this
.
genCollagePartnerMemberHashKey
(
collageOrderDto
.
getPartnerId
());
CollagePartnerMember
collagePartnerMember
=
new
CollagePartnerMember
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
(),
collageOrder
.
getExpireTime
());
this
.
putCollagePartnerMember
(
collagePartnerMemberKey
,
collageOrderDto
.
getCurrentUserId
(),
collagePartnerMember
);
return
CartResponseUtil
.
success
(
collageOrder
);
}
}
...
...
@@ -226,6 +244,10 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override
public
BaseResponse
setCollageMember
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemberHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
// 拼单人数不能超过100,非业务限制
if
(
redisTemplate
.
boundHashOps
(
key
).
values
()
!=
null
&&
redisTemplate
.
boundHashOps
(
key
).
values
().
size
()
>
100
)
{
return
CartResponseUtil
.
error
(
"拼单人数超过上限(100),加入失败"
);
}
redisTemplate
.
boundHashOps
(
key
).
put
(
collageOrderDto
.
getCurrentUserId
(),
new
ArrayList
<>());
return
CartResponseUtil
.
success
();
}
...
...
@@ -233,15 +255,23 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override
public
BaseResponse
setCollageMemberAddTime
(
CollageOrderDto
collageOrderDto
){
try
{
String
collage
StoreMemberKey
=
this
.
genCollageMemerHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStore
Id
());
String
collage
PartnerMemberKey
=
this
.
genCollagePartnerMemberHashKey
(
collageOrderDto
.
getPartner
Id
());
String
collageBaseHashKey
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
this
.
putCollageStoreMember
(
collageStoreMemberKey
,
collageOrderDto
.
getCurrentUserId
(),
this
.
getCollageBashHashExpireSeconds
(
collageBaseHashKey
));
CollageOrder
collageBaseHash
=
this
.
getCollageBaseHash
(
collageBaseHashKey
);
CollagePartnerMember
collagePartnerMember
=
new
CollagePartnerMember
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
(),
collageBaseHash
.
getExpireTime
());
this
.
putCollagePartnerMember
(
collagePartnerMemberKey
,
collageOrderDto
.
getCurrentUserId
(),
collagePartnerMember
);
}
catch
(
Exception
e
)
{
CartResponseUtil
.
error
(
""
);
ErrorLog
.
printErrorLog
(
"设置用户在该商户下拼单参与列表记录异常"
,
"CollageOrderBaseServiceImpl/setCollageMemberAddTime"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
CartResponseUtil
.
error
(
"设置用户在该商户下拼单参与列表记录失败"
);
}
return
CartResponseUtil
.
success
();
}
/**
* 判断用户是否参加了某一个拼单
* @param collageOrderDto
* @return
*/
@Override
public
BaseResponse
judgeMemberAddOneCollage
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemberHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
...
...
@@ -300,11 +330,12 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
/**
* 构建门店下拼单人员hashKey
* 20201127 产品确认同一商户下所有门店只允许同时存在一个拼单
* Hash<userId, {partnerId, storeId, createCollageUserId, expireTime}>
* @param partnerId
* @param storeId
*/
private
String
genCollage
MemerHashKey
(
String
partnerId
,
String
store
Id
)
{
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_
STORE_MEMBER_KEY
,
partnerId
,
store
Id
);
private
String
genCollage
PartnerMemberHashKey
(
String
partner
Id
)
{
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_
PARTNER_MEMBER_KEY
,
partner
Id
);
}
/**
...
...
@@ -341,9 +372,9 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
*/
private
void
deleteCollageBaseHash
(
CollageOrder
collageOrder
)
throws
Exception
{
// 删除商品门店拼单客户列表中该拼单订单下参与人
String
collage
StoreMemberKey
=
this
.
genCollageMemerHashKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStore
Id
());
String
collage
PartnerMemberKey
=
this
.
genCollagePartnerMemberHashKey
(
collageOrder
.
getPartner
Id
());
Set
<
String
>
collageMember
=
this
.
collageCartBaseService
.
getCollageMember
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
());
this
.
deleteCollage
StoreMember
(
collageStore
MemberKey
,
collageMember
.
toArray
());
this
.
deleteCollage
PartnerMember
(
collagePartner
MemberKey
,
collageMember
.
toArray
());
// 删除拼单订单相关缓存
Set
<
String
>
redisKeySet
=
new
HashSet
<>();
...
...
@@ -377,39 +408,42 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
/**
* 商户门店拼单参与用户名单设置
* @param collage
Store
MemberKey
* @param collage
Partner
MemberKey
* @param userId
*/
private
void
putCollage
StoreMember
(
String
collageStoreMemberKey
,
String
userId
,
Long
expireTime
)
throws
Exception
{
redisTemplate
.
boundHashOps
(
collage
StoreMemberKey
).
put
(
userId
,
Optional
.
ofNullable
(
DateTimeUtils
.
currentTimeMillis
(
expireTime
)).
orElseGet
(()
->
DateTimeUtils
.
currentTimeMillis
(
60
*
60L
))
);
private
void
putCollage
PartnerMember
(
String
collagePartnerMemberKey
,
String
userId
,
CollagePartnerMember
collagePartnerMember
)
throws
Exception
{
redisTemplate
.
boundHashOps
(
collage
PartnerMemberKey
).
put
(
userId
,
collagePartnerMember
);
}
/**
* 商户
门店
拼单参与用户名单删除拼单参与人
* @param collage
Store
MemberKey
* 商户拼单参与用户名单删除拼单参与人
* @param collage
Partner
MemberKey
* @param userIds
*/
private
void
deleteCollage
StoreMember
(
String
collageStore
MemberKey
,
Object
[]
userIds
)
throws
Exception
{
if
(
userIds
.
length
==
0
)
return
;
redisTemplate
.
boundHashOps
(
collage
Store
MemberKey
).
delete
(
userIds
);
private
void
deleteCollage
PartnerMember
(
String
collagePartner
MemberKey
,
Object
[]
userIds
)
throws
Exception
{
if
(
userIds
==
null
||
userIds
.
length
==
0
)
return
;
redisTemplate
.
boundHashOps
(
collage
Partner
MemberKey
).
delete
(
userIds
);
}
/**
* 获取当前商户门店下全部拼单参与用户列表
* @param collage
Store
MemberKey
* @param collage
Partner
MemberKey
* @return
*/
private
Map
<
String
,
Long
>
getCollageStoreMember
(
String
collageStore
MemberKey
)
throws
Exception
{
return
Optional
.
ofNullable
(
redisTemplate
.
boundHashOps
(
collage
Store
MemberKey
).
entries
()).
orElseGet
(()
->
new
HashMap
());
private
Map
<
String
,
CollagePartnerMember
>
getCollagePartnerMemberAll
(
String
collagePartner
MemberKey
)
throws
Exception
{
return
Optional
.
ofNullable
(
redisTemplate
.
boundHashOps
(
collage
Partner
MemberKey
).
entries
()).
orElseGet
(()
->
new
HashMap
());
}
/**
* 判断userId是否在当前门店拼单用户列表中
* @param collageStoreMemberKey
* 获取商户下拼单参与人信息
* @param collagePartnerMemberKey
* @param userId
* @return
* @throws Exception
*/
private
Long
getCollageStoreMemberExpireTime
(
String
collageStoreMemberKey
,
String
userId
)
throws
Exception
{
return
Optional
.
ofNullable
((
Long
)
redisTemplate
.
boundHashOps
(
collageStoreMemberKey
).
get
(
userId
)).
orElseGet
(()
->
0L
);
private
CollagePartnerMember
getCollagePartnerMember
(
String
collagePartnerMemberKey
,
String
userId
)
{
Object
obj
=
redisTemplate
.
boundHashOps
(
collagePartnerMemberKey
).
get
(
userId
);
return
null
!=
obj
?
(
CollagePartnerMember
)
obj
:
null
;
}
/**
...
...
@@ -417,18 +451,15 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
* @param collageOrderDto
* @return
*/
public
boolean
isInCollage
Store
MemberList
(
CollageOrderDto
collageOrderDto
)
{
try
{
String
collageStoreMemberKey
=
this
.
genCollageMemerHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
());
// 获取当前用户拼单状态过期时间
Long
collageStoreMemberExpireTime
=
this
.
getCollageStoreMemberExpireTime
(
collageStoreMemberKey
,
collageOrderDto
.
getCurrentUserId
());
public
boolean
isInCollage
Partner
MemberList
(
CollageOrderDto
collageOrderDto
)
{
String
collagePartnerMemberKey
=
this
.
genCollagePartnerMemberHashKey
(
collageOrderDto
.
getPartnerId
());
// 获取当前用户在商户下的拼单信息
CollagePartnerMember
collagePartnerMember
=
this
.
getCollagePartnerMember
(
collagePartnerMemberKey
,
collageOrderDto
.
getCurrentUserId
());
// 当前登录用户ID存在且未超过过期时间
if
(
DateTimeUtils
.
currentTimeMillis
()
<
collageStoreMemberExpireTime
)
{
if
(
collagePartnerMember
!=
null
&&
DateTimeUtils
.
currentTimeMillis
()
<
collagePartnerMember
.
getExpire
()
)
{
return
true
;
}
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"查询当前用户是否存在进行中的拼单异常"
,
"CollageOrderBaseServiceImpl/isInCollageOrderCustomerList"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
}
return
false
;
}
...
...
order-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
View file @
6421e937
...
...
@@ -2,7 +2,9 @@ package cn.freemud.controller;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.WechatGroupBuyVo
;
import
cn.freemud.service.impl.CollageOrderServiceImpl
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
io.swagger.annotations.ApiImplicitParam
;
...
...
@@ -45,4 +47,12 @@ public class CollageOrderController {
return
collageOrderService
.
create
(
requestVo
);
}
@ApiOperation
(
value
=
"创建拼单群收款"
,
notes
=
"创建拼单群收款"
)
@ApiImplicitParam
(
value
=
"请求"
,
required
=
true
,
dataType
=
"CreateOrderVo"
,
name
=
"CreateOrderVo"
)
@ApiAnnotation
(
logMessage
=
"createGroupBuy"
)
@PostMapping
(
value
=
"/collage/groupBuy"
)
public
BaseResponse
createGroupBuy
(
@Validated
@LogParams
@RequestBody
WechatGroupBuyVo
requestVo
)
{
return
collageOrderService
.
createGroupBuy
(
requestVo
);
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/wechat/GroupBuyDto.java
0 → 100644
View file @
6421e937
package
cn
.
freemud
.
entities
.
dto
.
wechat
;
import
lombok.Data
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-11-27 17:48
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public
class
GroupBuyDto
{
}
order-application-service/src/main/java/cn/freemud/entities/dto/wechat/GroupBuyResp.java
0 → 100644
View file @
6421e937
package
cn
.
freemud
.
entities
.
dto
.
wechat
;
import
lombok.Data
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-11-27 17:50
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public
class
GroupBuyResp
{
private
String
groupBuyOrderId
;
}
order-application-service/src/main/java/cn/freemud/entities/vo/WechatGroupBuyVo.java
0 → 100644
View file @
6421e937
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
@Data
public
class
WechatGroupBuyVo
{
@NotEmpty
(
message
=
"sessionId 不能为空"
)
private
String
sessionId
;
@NotEmpty
(
message
=
"商户号 不能为空"
)
private
String
partnerId
;
@NotEmpty
(
message
=
"门店号 不能为空"
)
private
String
shopId
;
@NotEmpty
(
message
=
"订单编号 不能为空"
)
private
String
orderCode
;
}
order-application-service/src/main/java/cn/freemud/service/CollageOrderService.java
View file @
6421e937
...
...
@@ -2,6 +2,7 @@ package cn.freemud.service;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.WechatGroupBuyVo
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
@@ -15,7 +16,14 @@ import cn.freemud.entities.vo.CreateOrderVo;
*/
public
interface
CollageOrderService
{
/**
* 创建订单
* 创建
拼单
订单
*/
BaseResponse
create
(
CreateOrderVo
createOrderVo
);
/**
* 创建群收款
* @param requestVo
* @return
*/
BaseResponse
createGroupBuy
(
WechatGroupBuyVo
requestVo
);
}
order-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
View file @
6421e937
...
...
@@ -14,9 +14,12 @@ package cn.freemud.service.impl;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.wechat.GroupBuyResp
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.WechatGroupBuyVo
;
import
cn.freemud.enums.OrderMarketType
;
import
cn.freemud.service.CollageOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -27,10 +30,25 @@ public class CollageOrderServiceImpl implements CollageOrderService {
@Autowired
private
OrderServiceImpl
orderService
;
/**
* 创建拼单订单
*/
@Override
public
BaseResponse
create
(
CreateOrderVo
createOrderVo
)
{
// 标记订单类型-4 拼单
createOrderVo
.
setMarketingType
(
OrderMarketType
.
COLLAGE
.
getIndex
());
return
this
.
orderService
.
createOrderNew
(
createOrderVo
);
}
/**
* 创建群收款
* @param requestVo
* @return
*/
@Override
public
BaseResponse
createGroupBuy
(
WechatGroupBuyVo
requestVo
)
{
GroupBuyResp
groupBuyResp
=
new
GroupBuyResp
();
groupBuyResp
.
setGroupBuyOrderId
(
"AARwDhsBAAABAAAAAAA8qP8oA4wVBRDgTYemXSAAAAC+NhafsoPlHq4RjEYubHs/qZzK7T9Q 02qG5CNcaTRRAyNIF/DIBcbFQuBKJTnEezsaW1SDpyM9G6MNK9T2wzeWQlajckiSTDZDWjAn9O1 WASuHkIZdf9SRQrIAwZdwjsBf7MPxtQP/4ExaW0B9g9IG"
);
return
ResponseUtil
.
success
(
groupBuyResp
);
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartInfoRequestVo.java
View file @
6421e937
...
...
@@ -43,7 +43,7 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
/**
* 拼单场景使用
* 0个人购物车
1整个
购物车
* 0个人购物车
;1全员购物车;2整合
购物车
*/
private
Integer
type
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
6421e937
...
...
@@ -146,7 +146,7 @@ public enum ResponseResult {
COLLAGE_ALREADY_EXIST
(
"49005"
,
"当前用户存在进行中的拼单订单"
),
COLLAGE_NOT_OWNER
(
"49006"
,
"当前用户不是拼单发起人,无法操作"
),
COLLAGE_GOOD_NOT_ONESELF
(
"49007"
,
"只能操作自己的商品"
),
COLLAGE_MEMBER_ALREADY_ADD
(
"49008"
,
"用户
已经加入其他的拼单
"
),
COLLAGE_MEMBER_ALREADY_ADD
(
"49008"
,
"用户
存在进行中的拼单,无法再次加入
"
),
COLLAGE_CREATE_NOT_OUT_OF
(
"49009"
,
"拼单发起人不能退出拼单,请取消"
),
COLLAGE_MEMBER_NOT_ADD
(
"49010"
,
"用户未参加拼单,请确认"
),
COLLAGE_MEMBER_NOT_CREATE
(
"49011"
,
"只有拼单发起者才能移除拼单人员,请确认"
),
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/CollageOrderService.java
View file @
6421e937
...
...
@@ -77,7 +77,7 @@ public interface CollageOrderService {
* @param request
* @return
*/
BaseResponse
addCollageOrder
(
CollageOrderRequestVo
request
);
BaseResponse
addCollageOrder
(
CollageOrderRequestVo
request
)
throws
Exception
;
/**
* 退出拼单订单
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
View file @
6421e937
...
...
@@ -2,7 +2,6 @@ package cn.freemud.service.impl;
import
cn.freemud.adapter.CollageOrderAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CartGoods
;
import
cn.freemud.entities.vo.CollageOrderRequestVo
;
import
cn.freemud.entities.vo.CollageOrderResponseVo
;
import
cn.freemud.entities.vo.CustomerInfoVo
;
...
...
@@ -10,8 +9,6 @@ import cn.freemud.enums.ResponseResult;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.CollageOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CollageMemberStateType
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder
;
...
...
@@ -58,8 +55,10 @@ public class CollageOrderServiceImpl implements CollageOrderService {
public
BaseResponse
queryCollageOrder
(
CollageOrderRequestVo
request
)
{
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 查询时需传入拼单创建人的userId,若上送字段为空时,默认查询当前登录人自己的拼单信息
String
currentUserId
=
this
.
getUserIdBySessionId
(
request
.
getSessionId
());
if
(
StringUtils
.
isEmpty
(
request
.
getCreateCollageUserId
()))
{
collageOrderDto
.
setCreateCollageUserId
(
this
.
getUserIdBySessionId
(
request
.
getSessionId
()));
collageOrderDto
.
setCreateCollageUserId
(
currentUserId
);
collageOrderDto
.
setCurrentUserId
(
currentUserId
);
}
BaseResponse
<
CollageOrder
>
queryCollageOrderResponse
=
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderDto
);
CollageOrder
collageOrder
=
queryCollageOrderResponse
.
getResult
();
...
...
@@ -67,6 +66,11 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// SDK查询订单返回非成功code或返回结果订单信息为空时,返回前端异常信息
Optional
.
ofNullable
(
queryCollageOrderResponse
).
filter
(
resp
->
(
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
resp
.
getCode
())
&&
!
ObjectUtils
.
isEmpty
(
collageOrder
))).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
));
// 现在改为同时可查询自己发起以及参与的拼单所以查询到拼单信息后,后续查询需要使用拼单hash的三要素信息继续查询
collageOrderDto
.
setPartnerId
(
collageOrder
.
getPartnerId
());
collageOrderDto
.
setStoreId
(
collageOrder
.
getStoreId
());
collageOrderDto
.
setCreateCollageUserId
(
collageOrder
.
getCreateCollageUserId
());
CollageOrderResponseVo
collageOrderResponseVo
=
new
CollageOrderResponseVo
();
// 订单基础信息
collageOrderResponseVo
.
setOrder
(
collageOrder
);
...
...
@@ -74,11 +78,16 @@ public class CollageOrderServiceImpl implements CollageOrderService {
collageOrderResponseVo
.
setLocked
(
this
.
collageOrderBaseService
.
isLockedCollageOrder
(
collageOrderDto
).
getResult
());
// 订单参与人列表信息 参与人昵称头像等信息放入加购人状态锁redis对象中 userId : MemberState
List
<
CollageMemberState
>
collageMemberStateList
=
this
.
collageOrderBaseService
.
getCollageMemberState
(
collageOrderDto
).
getResult
();
if
(
null
!=
collageMemberStateList
&&
collageMemberStateList
.
size
()
>
0
&&
collageMemberStateList
.
stream
().
filter
(
member
->
member
.
getUserId
().
equals
(
currentUserId
)).
count
()
>
0
)
{
collageOrderResponseVo
.
setCollageMemberStateList
(
collageMemberStateList
);
// 未加购完毕人数统计
collageOrderResponseVo
.
setShoppingMemberNum
(
collageMemberStateList
.
stream
().
filter
(
member
->
member
.
getState
()
==
CollageMemberStateType
.
SHOPPING
.
getValue
()).
collect
(
Collectors
.
toList
()).
size
());
return
ResponseUtil
.
success
(
collageOrderResponseVo
);
}
else
{
return
ResponseUtil
.
error
(
ResponseResult
.
COLLAGE_MEMBER_NOT_ADD
);
}
}
/**
...
...
@@ -253,8 +262,8 @@ public class CollageOrderServiceImpl implements CollageOrderService {
Optional
.
ofNullable
(
collageOrder
).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
));
// 判断当前登陆用户是否参加过当前店铺其他的拼团
// 因为一个用户在一个
店铺下只能参加一个拼单,所以通过判断用户在店铺
下的拼单结束时间确认
Boolean
flag
=
collageOrderBaseService
.
isInCollage
Store
MemberList
(
collageOrderDto
);
// 因为一个用户在一个
商户下只能参加一个拼单,所以通过判断用户在商户
下的拼单结束时间确认
Boolean
flag
=
collageOrderBaseService
.
isInCollage
Partner
MemberList
(
collageOrderDto
);
if
(
flag
){
throw
new
ServiceException
(
ResponseResult
.
COLLAGE_MEMBER_ALREADY_ADD
);
}
...
...
@@ -266,7 +275,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
String
collageMemberStateHashKey
=
collageOrderBaseService
.
genCollageMemberStateHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
collageOrderBaseService
.
addCollageMemberState
(
collageMemberStateHashKey
,
collageOrderDto
);
// 设置用户在该
店铺的拼单结束时间
// 设置用户在该
商户下拼单参与列表记录
collageOrderBaseService
.
setCollageMemberAddTime
(
collageOrderDto
);
return
ResponseUtil
.
success
();
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartCollageServiceImpl.java
View file @
6421e937
...
...
@@ -47,7 +47,6 @@ import org.springframework.stereotype.Service;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.stream.Collector
;
import
java.util.stream.Collectors
;
import
static
java
.
util
.
stream
.
Collectors
.
toList
;
...
...
@@ -483,11 +482,28 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
ShoppingCartCollageResponseVo
shoppingCartCollageResponseVo
;
if
(
shoppingCartInfoRequestVo
.
getType
()
!=
null
&&
shoppingCartInfoRequestVo
.
getType
().
intValue
()
==
1
){
// 根据人员分类购物车
// 根据人员分类购物车
全员购物车
shoppingCartCollageResponseVo
=
splitByUser
(
shoppingCartGoodsResponseVo
,
crateUserId
,
partnerId
,
storeId
,
null
);
}
else
{
// 根据人员分类购物车
}
else
if
(
shoppingCartInfoRequestVo
.
getType
()
!=
null
&&
shoppingCartInfoRequestVo
.
getType
().
intValue
()
==
0
)
{
// 根据人员分类购物车
个人购物车
shoppingCartCollageResponseVo
=
splitByUser
(
shoppingCartGoodsResponseVo
,
crateUserId
,
partnerId
,
storeId
,
currentUserId
);
}
else
{
// 整合购物车
shoppingCartCollageResponseVo
=
new
ShoppingCartCollageResponseVo
();
BeanUtils
.
copyProperties
(
shoppingCartGoodsResponseVo
,
shoppingCartCollageResponseVo
);
List
<
CartGoods
>
cartGoods
=
shoppingCartGoodsResponseVo
.
getProducts
();
List
<
ShoppingCartCollageGoodsResponseVo
>
userProducts
=
new
ArrayList
<>();
ShoppingCartCollageGoodsResponseVo
shoppingCartCollageGoodsResponseVo
=
new
ShoppingCartCollageGoodsResponseVo
();
shoppingCartCollageGoodsResponseVo
.
setProducts
(
cartGoods
);
shoppingCartCollageGoodsResponseVo
.
setUid
(
currentUserId
);
shoppingCartCollageGoodsResponseVo
.
setUserName
(
currentUserInfoVo
.
getNickName
());
shoppingCartCollageGoodsResponseVo
.
setPhotoUrl
(
currentUserInfoVo
.
getPhotoUrl
());
shoppingCartCollageGoodsResponseVo
.
setPackPrice
(
shoppingCartGoodsResponseVo
.
getNewPackAmount
());
shoppingCartCollageGoodsResponseVo
.
setProductsCount
(
shoppingCartGoodsResponseVo
.
getProductsCount
());
shoppingCartCollageGoodsResponseVo
.
setTotalAmount
(
shoppingCartGoodsResponseVo
.
getTotalAmount
());
shoppingCartCollageGoodsResponseVo
.
setOriginalTotalAmount
(
shoppingCartGoodsResponseVo
.
getOriginalTotalAmount
());
userProducts
.
add
(
shoppingCartCollageGoodsResponseVo
);
shoppingCartCollageResponseVo
.
setUserProducts
(
userProducts
);
}
return
ResponseUtil
.
success
(
shoppingCartCollageResponseVo
);
...
...
@@ -1061,7 +1077,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
.
partnerId
(
partnerId
)
.
storeId
(
storeId
)
.
build
();
Boolean
flag
=
collageOrderBaseService
.
isInCollage
Store
MemberList
(
collageOrderDto
);
Boolean
flag
=
collageOrderBaseService
.
isInCollage
Partner
MemberList
(
collageOrderDto
);
if
(
flag
){
throw
new
ServiceException
(
ResponseResult
.
COLLAGE_ALREADY_CHOOSE
);
}
...
...
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