Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
mall
Commits
68160615
Commit
68160615
authored
May 23, 2020
by
macro
Browse files
前台订单接口完善
parent
5f4a3783
Changes
4
Hide whitespace changes
Inline
Side-by-side
mall-portal/src/main/java/com/macro/mall/portal/controller/OmsPortalOrderController.java
View file @
68160615
package
com.macro.mall.portal.controller
;
import
com.macro.mall.common.api.CommonPage
;
import
com.macro.mall.common.api.CommonResult
;
import
com.macro.mall.portal.domain.ConfirmOrderResult
;
import
com.macro.mall.portal.domain.OmsOrderDetail
;
import
com.macro.mall.portal.domain.OrderParam
;
import
com.macro.mall.portal.service.OmsPortalOrderService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -26,8 +30,8 @@ public class OmsPortalOrderController {
@ApiOperation
(
"根据购物车信息生成确认单信息"
)
@RequestMapping
(
value
=
"/generateConfirmOrder"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
CommonResult
<
ConfirmOrderResult
>
generateConfirmOrder
()
{
ConfirmOrderResult
confirmOrderResult
=
portalOrderService
.
generateConfirmOrder
();
public
CommonResult
<
ConfirmOrderResult
>
generateConfirmOrder
(
@RequestBody
List
<
Long
>
cartIds
)
{
ConfirmOrderResult
confirmOrderResult
=
portalOrderService
.
generateConfirmOrder
(
cartIds
);
return
CommonResult
.
success
(
confirmOrderResult
);
}
...
...
@@ -39,11 +43,11 @@ public class OmsPortalOrderController {
return
CommonResult
.
success
(
result
,
"下单成功"
);
}
@ApiOperation
(
"支付成功的回调"
)
@ApiOperation
(
"
用户
支付成功的回调"
)
@RequestMapping
(
value
=
"/paySuccess"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
CommonResult
paySuccess
(
@RequestParam
Long
orderId
)
{
Integer
count
=
portalOrderService
.
paySuccess
(
orderId
);
public
CommonResult
paySuccess
(
@RequestParam
Long
orderId
,
@RequestParam
Integer
payType
)
{
Integer
count
=
portalOrderService
.
paySuccess
(
orderId
,
payType
);
return
CommonResult
.
success
(
count
,
"支付成功"
);
}
...
...
@@ -62,4 +66,48 @@ public class OmsPortalOrderController {
portalOrderService
.
sendDelayMessageCancelOrder
(
orderId
);
return
CommonResult
.
success
(
null
);
}
@ApiOperation
(
"按状态分页获取用户订单列表"
)
@ApiImplicitParam
(
name
=
"status"
,
value
=
"订单状态:-1->全部;0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭"
,
defaultValue
=
"-1"
,
allowableValues
=
"-1,0,1,2,3,4"
,
paramType
=
"query"
,
dataType
=
"int"
)
@RequestMapping
(
value
=
"/list"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
CommonResult
<
CommonPage
<
OmsOrderDetail
>>
list
(
@RequestParam
Integer
status
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Integer
pageNum
,
@RequestParam
(
required
=
false
,
defaultValue
=
"5"
)
Integer
pageSize
)
{
CommonPage
<
OmsOrderDetail
>
orderPage
=
portalOrderService
.
list
(
status
,
pageNum
,
pageSize
);
return
CommonResult
.
success
(
orderPage
);
}
@ApiOperation
(
"根据ID获取订单详情"
)
@RequestMapping
(
value
=
"/detail/{orderId}"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
CommonResult
<
OmsOrderDetail
>
detail
(
@PathVariable
Long
orderId
)
{
OmsOrderDetail
orderDetail
=
portalOrderService
.
detail
(
orderId
);
return
CommonResult
.
success
(
orderDetail
);
}
@ApiOperation
(
"用户取消订单"
)
@RequestMapping
(
value
=
"/cancelUserOrder"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
CommonResult
cancelUserOrder
(
Long
orderId
)
{
portalOrderService
.
cancelOrder
(
orderId
);
return
CommonResult
.
success
(
null
);
}
@ApiOperation
(
"用户确认收货"
)
@RequestMapping
(
value
=
"/confirmReceiveOrder"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
CommonResult
confirmReceiveOrder
(
Long
orderId
)
{
portalOrderService
.
confirmReceiveOrder
(
orderId
);
return
CommonResult
.
success
(
null
);
}
@ApiOperation
(
"用户删除订单"
)
@RequestMapping
(
value
=
"/deleteOrder"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
CommonResult
deleteOrder
(
Long
orderId
)
{
portalOrderService
.
deleteOrder
(
orderId
);
return
CommonResult
.
success
(
null
);
}
}
mall-portal/src/main/java/com/macro/mall/portal/domain/OrderParam.java
View file @
68160615
package
com.macro.mall.portal.domain
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.List
;
/**
* 生成订单时传入的参数
* Created by macro on 2018/8/30.
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
OrderParam
{
//收货地址id
@ApiModelProperty
(
"收货地址ID"
)
private
Long
memberReceiveAddressId
;
//优惠券id
@ApiModelProperty
(
"优惠券ID"
)
private
Long
couponId
;
//
使用的积分数
@ApiModelProperty
(
"
使用的积分数
"
)
private
Integer
useIntegration
;
//
支付方式
@ApiModelProperty
(
"
支付方式
"
)
private
Integer
payType
;
public
Long
getMemberReceiveAddressId
()
{
return
memberReceiveAddressId
;
}
public
void
setMemberReceiveAddressId
(
Long
memberReceiveAddressId
)
{
this
.
memberReceiveAddressId
=
memberReceiveAddressId
;
}
public
Long
getCouponId
()
{
return
couponId
;
}
public
void
setCouponId
(
Long
couponId
)
{
this
.
couponId
=
couponId
;
}
public
Integer
getPayType
()
{
return
payType
;
}
public
void
setPayType
(
Integer
payType
)
{
this
.
payType
=
payType
;
}
public
Integer
getUseIntegration
()
{
return
useIntegration
;
}
public
void
setUseIntegration
(
Integer
useIntegration
)
{
this
.
useIntegration
=
useIntegration
;
}
@ApiModelProperty
(
"被选中的购物车商品ID"
)
private
List
<
Long
>
cartIds
;
}
mall-portal/src/main/java/com/macro/mall/portal/service/OmsPortalOrderService.java
View file @
68160615
package
com.macro.mall.portal.service
;
import
com.macro.mall.common.api.CommonPage
;
import
com.macro.mall.portal.domain.ConfirmOrderResult
;
import
com.macro.mall.portal.domain.OmsOrderDetail
;
import
com.macro.mall.portal.domain.OrderParam
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -13,8 +16,9 @@ import java.util.Map;
public
interface
OmsPortalOrderService
{
/**
* 根据用户购物车信息生成确认单信息
* @param cartIds
*/
ConfirmOrderResult
generateConfirmOrder
();
ConfirmOrderResult
generateConfirmOrder
(
List
<
Long
>
cartIds
);
/**
* 根据提交信息生成订单
...
...
@@ -26,7 +30,7 @@ public interface OmsPortalOrderService {
* 支付成功后的回调
*/
@Transactional
Integer
paySuccess
(
Long
orderId
);
Integer
paySuccess
(
Long
orderId
,
Integer
payType
);
/**
* 自动取消超时订单
...
...
@@ -44,4 +48,24 @@ public interface OmsPortalOrderService {
* 发送延迟消息取消订单
*/
void
sendDelayMessageCancelOrder
(
Long
orderId
);
/**
* 确认收货
*/
void
confirmReceiveOrder
(
Long
orderId
);
/**
* 分页获取用户订单
*/
CommonPage
<
OmsOrderDetail
>
list
(
Integer
status
,
Integer
pageNum
,
Integer
pageSize
);
/**
* 根据订单ID获取订单详情
*/
OmsOrderDetail
detail
(
Long
orderId
);
/**
* 用户根据订单ID删除订单
*/
void
deleteOrder
(
Long
orderId
);
}
mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java
View file @
68160615
package
com.macro.mall.portal.service.impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
com.github.pagehelper.PageHelper
;
import
com.macro.mall.common.api.CommonPage
;
import
com.macro.mall.common.exception.Asserts
;
import
com.macro.mall.mapper.*
;
import
com.macro.mall.model.*
;
...
...
@@ -19,6 +23,7 @@ import java.math.BigDecimal;
import
java.math.RoundingMode
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 前台订单管理Service
...
...
@@ -62,11 +67,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
private
CancelOrderSender
cancelOrderSender
;
@Override
public
ConfirmOrderResult
generateConfirmOrder
()
{
public
ConfirmOrderResult
generateConfirmOrder
(
List
<
Long
>
cartIds
)
{
ConfirmOrderResult
result
=
new
ConfirmOrderResult
();
//获取购物车信息
UmsMember
currentMember
=
memberService
.
getCurrentMember
();
List
<
CartPromotionItem
>
cartPromotionItemList
=
cartItemService
.
listPromotion
(
currentMember
.
getId
());
List
<
CartPromotionItem
>
cartPromotionItemList
=
cartItemService
.
listPromotion
(
currentMember
.
getId
()
,
cartIds
);
result
.
setCartPromotionItemList
(
cartPromotionItemList
);
//获取用户收货地址列表
List
<
UmsMemberReceiveAddress
>
memberReceiveAddressList
=
memberReceiveAddressService
.
list
();
...
...
@@ -90,7 +95,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
List
<
OmsOrderItem
>
orderItemList
=
new
ArrayList
<>();
//获取购物车及优惠信息
UmsMember
currentMember
=
memberService
.
getCurrentMember
();
List
<
CartPromotionItem
>
cartPromotionItemList
=
cartItemService
.
listPromotion
(
currentMember
.
getId
());
List
<
CartPromotionItem
>
cartPromotionItemList
=
cartItemService
.
listPromotion
(
currentMember
.
getId
()
,
orderParam
.
getCartIds
()
);
for
(
CartPromotionItem
cartPromotionItem
:
cartPromotionItemList
)
{
//生成下单商品信息
OmsOrderItem
orderItem
=
new
OmsOrderItem
();
...
...
@@ -131,7 +136,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
handleCouponAmount
(
orderItemList
,
couponHistoryDetail
);
}
//判断是否使用积分
if
(
orderParam
.
getUseIntegration
()
==
null
)
{
if
(
orderParam
.
getUseIntegration
()
==
null
||
orderParam
.
getUseIntegration
().
equals
(
0
)
)
{
//不使用积分
for
(
OmsOrderItem
orderItem
:
orderItemList
)
{
orderItem
.
setIntegrationAmount
(
new
BigDecimal
(
0
));
...
...
@@ -205,6 +210,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
order
.
setGrowth
(
calcGiftGrowth
(
orderItemList
));
//生成订单号
order
.
setOrderSn
(
generateOrderSn
(
order
));
//设置自动收货天数
List
<
OmsOrderSetting
>
orderSettings
=
orderSettingMapper
.
selectByExample
(
new
OmsOrderSettingExample
());
if
(
CollUtil
.
isNotEmpty
(
orderSettings
)){
order
.
setAutoConfirmDay
(
orderSettings
.
get
(
0
).
getConfirmOvertime
());
}
// TODO: 2018/9/3 bill_*,delivery_*
//插入order表和order_item表
orderMapper
.
insert
(
order
);
...
...
@@ -233,12 +243,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
}
@Override
public
Integer
paySuccess
(
Long
orderId
)
{
public
Integer
paySuccess
(
Long
orderId
,
Integer
payType
)
{
//修改订单支付状态
OmsOrder
order
=
new
OmsOrder
();
order
.
setId
(
orderId
);
order
.
setStatus
(
1
);
order
.
setPaymentTime
(
new
Date
());
order
.
setPayType
(
payType
);
orderMapper
.
updateByPrimaryKeySelective
(
order
);
//恢复所有下单商品的锁定库存,扣减真实库存
OmsOrderDetail
orderDetail
=
portalOrderDao
.
getDetail
(
orderId
);
...
...
@@ -277,7 +288,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
@Override
public
void
cancelOrder
(
Long
orderId
)
{
//查询
为
付款的取消订单
//查询
未
付款的取消订单
OmsOrderExample
example
=
new
OmsOrderExample
();
example
.
createCriteria
().
andIdEqualTo
(
orderId
).
andStatusEqualTo
(
0
).
andDeleteStatusEqualTo
(
0
);
List
<
OmsOrder
>
cancelOrderList
=
orderMapper
.
selectByExample
(
example
);
...
...
@@ -315,6 +326,92 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
cancelOrderSender
.
sendMessage
(
orderId
,
delayTimes
);
}
@Override
public
void
confirmReceiveOrder
(
Long
orderId
)
{
UmsMember
member
=
memberService
.
getCurrentMember
();
OmsOrder
order
=
orderMapper
.
selectByPrimaryKey
(
orderId
);
if
(!
member
.
getId
().
equals
(
order
.
getMemberId
())){
Asserts
.
fail
(
"不能确认他人订单!"
);
}
if
(
order
.
getStatus
()!=
2
){
Asserts
.
fail
(
"该订单还未发货!"
);
}
order
.
setStatus
(
3
);
order
.
setConfirmStatus
(
1
);
order
.
setReceiveTime
(
new
Date
());
orderMapper
.
updateByPrimaryKey
(
order
);
}
@Override
public
CommonPage
<
OmsOrderDetail
>
list
(
Integer
status
,
Integer
pageNum
,
Integer
pageSize
)
{
if
(
status
==-
1
){
status
=
null
;
}
UmsMember
member
=
memberService
.
getCurrentMember
();
PageHelper
.
startPage
(
pageNum
,
pageSize
);
OmsOrderExample
orderExample
=
new
OmsOrderExample
();
OmsOrderExample
.
Criteria
criteria
=
orderExample
.
createCriteria
();
criteria
.
andDeleteStatusEqualTo
(
0
)
.
andMemberIdEqualTo
(
member
.
getId
());
if
(
status
!=
null
){
criteria
.
andStatusEqualTo
(
status
);
}
orderExample
.
setOrderByClause
(
"create_time desc"
);
List
<
OmsOrder
>
orderList
=
orderMapper
.
selectByExample
(
orderExample
);
CommonPage
<
OmsOrder
>
orderPage
=
CommonPage
.
restPage
(
orderList
);
//设置分页信息
CommonPage
<
OmsOrderDetail
>
resultPage
=
new
CommonPage
<>();
resultPage
.
setPageNum
(
orderPage
.
getPageNum
());
resultPage
.
setPageSize
(
orderPage
.
getPageSize
());
resultPage
.
setTotal
(
orderPage
.
getTotal
());
resultPage
.
setTotalPage
(
orderPage
.
getTotalPage
());
if
(
CollUtil
.
isEmpty
(
orderList
)){
return
resultPage
;
}
//设置数据信息
List
<
Long
>
orderIds
=
orderList
.
stream
().
map
(
OmsOrder:
:
getId
).
collect
(
Collectors
.
toList
());
OmsOrderItemExample
orderItemExample
=
new
OmsOrderItemExample
();
orderItemExample
.
createCriteria
().
andOrderIdIn
(
orderIds
);
List
<
OmsOrderItem
>
orderItemList
=
orderItemMapper
.
selectByExample
(
orderItemExample
);
List
<
OmsOrderDetail
>
orderDetailList
=
new
ArrayList
<>();
for
(
OmsOrder
omsOrder
:
orderList
)
{
OmsOrderDetail
orderDetail
=
new
OmsOrderDetail
();
BeanUtil
.
copyProperties
(
omsOrder
,
orderDetail
);
List
<
OmsOrderItem
>
relatedItemList
=
orderItemList
.
stream
().
filter
(
item
->
item
.
getOrderId
().
equals
(
orderDetail
.
getId
())).
collect
(
Collectors
.
toList
());
orderDetail
.
setOrderItemList
(
relatedItemList
);
orderDetailList
.
add
(
orderDetail
);
}
resultPage
.
setList
(
orderDetailList
);
return
resultPage
;
}
@Override
public
OmsOrderDetail
detail
(
Long
orderId
)
{
OmsOrder
omsOrder
=
orderMapper
.
selectByPrimaryKey
(
orderId
);
OmsOrderItemExample
example
=
new
OmsOrderItemExample
();
example
.
createCriteria
().
andOrderIdEqualTo
(
orderId
);
List
<
OmsOrderItem
>
orderItemList
=
orderItemMapper
.
selectByExample
(
example
);
OmsOrderDetail
orderDetail
=
new
OmsOrderDetail
();
BeanUtil
.
copyProperties
(
omsOrder
,
orderDetail
);
orderDetail
.
setOrderItemList
(
orderItemList
);
return
orderDetail
;
}
@Override
public
void
deleteOrder
(
Long
orderId
)
{
UmsMember
member
=
memberService
.
getCurrentMember
();
OmsOrder
order
=
orderMapper
.
selectByPrimaryKey
(
orderId
);
if
(!
member
.
getId
().
equals
(
order
.
getMemberId
())){
Asserts
.
fail
(
"不能删除他人订单!"
);
}
if
(
order
.
getStatus
()==
3
||
order
.
getStatus
()==
4
){
order
.
setDeleteStatus
(
1
);
orderMapper
.
updateByPrimaryKey
(
order
);
}
else
{
Asserts
.
fail
(
"只能删除已完成或已关闭的订单!"
);
}
}
/**
* 生成18位订单编号:8位日期+2位平台号码+2位支付方式+6位以上自增id
*/
...
...
@@ -408,10 +505,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
StringBuilder
sb
=
new
StringBuilder
();
for
(
OmsOrderItem
orderItem
:
orderItemList
)
{
sb
.
append
(
orderItem
.
getPromotionName
());
sb
.
append
(
"
,
"
);
sb
.
append
(
"
;
"
);
}
String
result
=
sb
.
toString
();
if
(
result
.
endsWith
(
"
,
"
))
{
if
(
result
.
endsWith
(
"
;
"
))
{
result
=
result
.
substring
(
0
,
result
.
length
()
-
1
);
}
return
result
;
...
...
Write
Preview
Supports
Markdown
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