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
jinli gu
Litemall
Commits
7e217d85
Commit
7e217d85
authored
Jun 05, 2018
by
Junling Bu
Browse files
refactor[litemall-admin, litemall-admin-api]: 订单页面重新设计。
1. 管理员订单页面可以发货; 2. 管理员订单页面可以退款。
parent
1d08bb4d
Changes
4
Hide whitespace changes
Inline
Side-by-side
litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminOrderController.java
View file @
7e217d85
...
...
@@ -21,6 +21,7 @@ import org.springframework.transaction.TransactionStatus;
import
org.springframework.transaction.support.DefaultTransactionDefinition
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -60,73 +61,6 @@ public class AdminOrderController {
return
ResponseUtil
.
ok
(
data
);
}
/*
* 目前的逻辑不支持管理员创建
*/
@PostMapping
(
"/create"
)
public
Object
create
(
@LoginAdmin
Integer
adminId
,
@RequestBody
LitemallOrder
order
){
if
(
adminId
==
null
){
return
ResponseUtil
.
unlogin
();
}
return
ResponseUtil
.
unsupport
();
}
@GetMapping
(
"/read"
)
public
Object
read
(
@LoginAdmin
Integer
adminId
,
Integer
id
){
if
(
adminId
==
null
){
return
ResponseUtil
.
unlogin
();
}
LitemallOrder
order
=
orderService
.
findById
(
id
);
return
ResponseUtil
.
ok
(
order
);
}
/*
* 目前仅仅支持管理员设置发货相关的信息
*/
@PostMapping
(
"/update"
)
public
Object
update
(
@LoginAdmin
Integer
adminId
,
@RequestBody
LitemallOrder
order
){
if
(
adminId
==
null
){
return
ResponseUtil
.
unlogin
();
}
Integer
orderId
=
order
.
getId
();
if
(
orderId
==
null
){
return
ResponseUtil
.
badArgument
();
}
LitemallOrder
litemallOrder
=
orderService
.
findById
(
orderId
);
if
(
litemallOrder
==
null
){
return
ResponseUtil
.
badArgumentValue
();
}
if
(
OrderUtil
.
isPayStatus
(
litemallOrder
)
||
OrderUtil
.
isShipStatus
(
litemallOrder
)){
LitemallOrder
newOrder
=
new
LitemallOrder
();
newOrder
.
setId
(
orderId
);
newOrder
.
setShipChannel
(
order
.
getShipChannel
());
newOrder
.
setShipSn
(
order
.
getOrderSn
());
newOrder
.
setShipStartTime
(
order
.
getShipStartTime
());
newOrder
.
setShipEndTime
(
order
.
getShipEndTime
());
newOrder
.
setOrderStatus
(
OrderUtil
.
STATUS_SHIP
);
orderService
.
update
(
newOrder
);
}
else
{
return
ResponseUtil
.
badArgumentValue
();
}
litemallOrder
=
orderService
.
findById
(
orderId
);
return
ResponseUtil
.
ok
(
litemallOrder
);
}
@PostMapping
(
"/delete"
)
public
Object
delete
(
@LoginAdmin
Integer
adminId
,
@RequestBody
LitemallOrder
order
){
if
(
adminId
==
null
){
return
ResponseUtil
.
unlogin
();
}
return
ResponseUtil
.
unsupport
();
}
/**
* 订单退款确认
* 1. 检测当前订单是否能够退款确认
...
...
@@ -139,12 +73,13 @@ public class AdminOrderController {
* 成功则 { errno: 0, errmsg: '成功' }
* 失败则 { errno: XXX, errmsg: XXX }
*/
@PostMapping
(
"refund
Confirm
"
)
public
Object
refund
Confirm
(
@LoginAdmin
Integer
adminId
,
@RequestBody
String
body
)
{
@PostMapping
(
"refund"
)
public
Object
refund
(
@LoginAdmin
Integer
adminId
,
@RequestBody
String
body
)
{
if
(
adminId
==
null
)
{
return
ResponseUtil
.
unlogin
();
}
Integer
orderId
=
JacksonUtil
.
parseInteger
(
body
,
"orderId"
);
Integer
refundMoney
=
JacksonUtil
.
parseInteger
(
body
,
"refundMoney"
);
if
(
orderId
==
null
)
{
return
ResponseUtil
.
badArgument
();
}
...
...
@@ -153,13 +88,14 @@ public class AdminOrderController {
if
(
order
==
null
)
{
return
ResponseUtil
.
badArgument
();
}
if
(!
order
.
getUserId
().
equals
(
adminId
))
{
if
(
order
.
getActualPrice
().
compareTo
(
new
BigDecimal
(
refundMoney
))
!=
0
){
return
ResponseUtil
.
badArgumentValue
();
}
OrderHandleOption
handleOption
=
OrderUtil
.
build
(
order
);
if
(!
handleOption
.
isRefund
(
))
{
return
ResponseUtil
.
fail
(
403
,
"订单不能
取消
"
);
// 如果订单不是退款状态,则不能退款
if
(!
order
.
getOrderStatus
().
equals
(
OrderUtil
.
STATUS_REFUND
))
{
return
ResponseUtil
.
fail
(
403
,
"订单不能
确认收货
"
);
}
// 开启事务管理
...
...
@@ -217,9 +153,6 @@ public class AdminOrderController {
if
(
order
==
null
)
{
return
ResponseUtil
.
badArgument
();
}
if
(!
order
.
getUserId
().
equals
(
adminId
))
{
return
ResponseUtil
.
badArgumentValue
();
}
// 如果订单不是已付款状态,则不能发货
if
(!
order
.
getOrderStatus
().
equals
(
OrderUtil
.
STATUS_PAY
))
{
...
...
litemall-admin/src/api/order.js
View file @
7e217d85
...
...
@@ -8,33 +8,17 @@ export function listOrder(query) {
})
}
export
function
create
Order
(
data
)
{
export
function
ship
Order
(
data
)
{
return
request
({
url
:
'
/order/
create
'
,
url
:
'
/order/
ship
'
,
method
:
'
post
'
,
data
})
}
export
function
re
a
dOrder
(
data
)
{
export
function
re
fun
dOrder
(
data
)
{
return
request
({
url
:
'
/order/read
'
,
method
:
'
get
'
,
data
})
}
export
function
updateOrder
(
data
)
{
return
request
({
url
:
'
/order/update
'
,
method
:
'
post
'
,
data
})
}
export
function
deleteOrder
(
data
)
{
return
request
({
url
:
'
/order/delete
'
,
url
:
'
/order/refund
'
,
method
:
'
post
'
,
data
})
...
...
litemall-admin/src/utils/request.js
View file @
7e217d85
...
...
@@ -49,6 +49,8 @@ service.interceptors.response.use(
type
:
'
error
'
})
return
Promise
.
reject
(
'
error
'
)
}
else
if
(
res
.
errno
!==
0
)
{
return
Promise
.
reject
(
'
error
'
)
}
else
{
return
response
}
...
...
litemall-admin/src/views/mall/order.vue
View file @
7e217d85
...
...
@@ -25,17 +25,14 @@
<el-table-column
align=
"center"
min-width=
"100px"
label=
"用户ID"
prop=
"userId"
>
</el-table-column>
<el-table-column
align=
"center"
min-width=
"
1
00px"
label=
"订单编号"
prop=
"orderSn"
>
<el-table-column
align=
"center"
min-width=
"
2
00px"
label=
"订单编号"
prop=
"orderSn"
>
</el-table-column>
<el-table-column
align=
"center"
min-width=
"100px"
label=
"订单状态"
prop=
"orderStatus"
>
</el-table-column>
<el-table-column
align=
"center"
min-width=
"100px"
label=
"是否删除"
prop=
"isDelete"
>
<
template
slot-scope=
"scope"
>
<el-tag
:type=
"
scope.row.
isDelete ? 'success' : 'error' "
>
{{
scope
.
row
.
isDelete
?
'
未删除
'
:
'
已删除
'
}}
</el-tag>
<el-tag
>
{{
scope
.
row
.
orderStatus
|
orderStatusFilter
}}
</el-tag>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
min-width=
"100px"
label=
"订单费用"
prop=
"orderPrice"
>
</el-table-column>
...
...
@@ -43,10 +40,10 @@
<el-table-column
align=
"center"
min-width=
"100px"
label=
"实际费用"
prop=
"actualPrice"
>
</el-table-column>
<el-table-column
align=
"center"
label=
"操作"
width=
"2
5
0"
class-name=
"small-padding fixed-width"
>
<el-table-column
align=
"center"
label=
"操作"
width=
"2
0
0"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleS
end
(scope.row)"
>
发货
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleRe
cv
(scope.row)"
>
收货
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleS
hip
(scope.row)"
v-if=
"scope.row.orderStatus==201"
>
发货
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleRe
fund
(scope.row)"
v-if=
"scope.row.orderStatus==202"
>
退款
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -59,46 +56,31 @@
</div>
<!-- 发货对话框 -->
<el-dialog
title=
"发货"
:visible.sync=
"s
end
Dialog
Form
Visible"
>
<el-form
ref=
"
data
Form"
:model=
"
data
Form"
status-icon
label-position=
"left"
label-width=
"100px"
style=
'width: 400px; margin-left:50px;'
>
<el-dialog
title=
"发货"
:visible.sync=
"s
hip
DialogVisible"
>
<el-form
ref=
"
ship
Form"
:model=
"
ship
Form"
status-icon
label-position=
"left"
label-width=
"100px"
style=
'width: 400px; margin-left:50px;'
>
<el-form-item
label=
"快递公司"
prop=
"shipChannel"
>
<el-input
v-model=
"
data
Form.shipChannel"
></el-input>
<el-input
v-model=
"
ship
Form.shipChannel"
></el-input>
</el-form-item>
<el-form-item
label=
"快递编号"
prop=
"shipSn"
>
<el-input
v-model=
"dataForm.shipSn"
></el-input>
</el-form-item>
<el-form-item
label=
"快递发货时间"
prop=
"shipStartTime"
>
<el-date-picker
v-model=
"dataForm.shipStartTime"
type=
"datetime"
placeholder=
"选择日期时间"
>
</el-date-picker>
<el-input
v-model=
"shipForm.shipSn"
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"s
end
Dialog
Form
Visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"
sendData
"
>
确定
</el-button>
<el-button
@
click=
"s
hip
DialogVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"
confirmShip
"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 收货对话框 -->
<el-dialog
title=
"收货"
:visible.sync=
"recvDialogFormVisible"
>
<el-form
ref=
"dataForm"
:model=
"dataForm"
status-icon
label-position=
"left"
label-width=
"100px"
style=
'width: 400px; margin-left:50px;'
>
<el-form-item
label=
"快递公司"
prop=
"shipChannel"
>
<el-input
disabled
v-model=
"dataForm.shipChannel"
></el-input>
</el-form-item>
<el-form-item
label=
"快递编号"
prop=
"shipSn"
>
<el-input
disabled
v-model=
"dataForm.shipSn"
></el-input>
</el-form-item>
<el-form-item
label=
"快递发货时间"
prop=
"shipStartTime"
>
<el-date-picker
disabled
v-model=
"dataForm.shipStartTime"
type=
"datetime"
placeholder=
"选择日期时间"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"快递收货时间"
prop=
"shipEndTime"
>
<el-date-picker
v-model=
"dataForm.shipEndTime"
type=
"datetime"
placeholder=
"选择日期时间"
>
</el-date-picker>
<!-- 退款对话框 -->
<el-dialog
title=
"退款"
:visible.sync=
"refundDialogVisible"
>
<el-form
ref=
"refundForm"
:model=
"refundForm"
status-icon
label-position=
"left"
label-width=
"100px"
style=
'width: 400px; margin-left:50px;'
>
<el-form-item
label=
"退款金额"
prop=
"refundMoney"
>
<el-input
v-model=
"refundForm.refundMoney"
:disabled=
"true"
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"re
cv
Dialog
Form
Visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"
recvData
"
>
确定
</el-button>
<el-button
@
click=
"re
fund
DialogVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"
confirmRefund
"
>
确定
</el-button>
</div>
</el-dialog>
...
...
@@ -120,7 +102,7 @@
</
style
>
<
script
>
import
{
listOrder
,
update
Order
}
from
'
@/api/order
'
import
{
listOrder
,
shipOrder
,
refund
Order
}
from
'
@/api/order
'
import
waves
from
'
@/directive/waves
'
// 水波纹指令
export
default
{
...
...
@@ -140,18 +122,36 @@ export default {
name
:
undefined
,
sort
:
'
+id
'
},
data
Form
:
{
i
d
:
undefined
,
ship
Form
:
{
orderI
d
:
undefined
,
shipChannel
:
undefined
,
shipSn
:
undefined
,
shipStartTime
:
undefined
,
shipEndTime
:
undefined
shipSn
:
undefined
},
shipDialogVisible
:
false
,
refundForm
:
{
orderId
:
undefined
,
refundMoney
:
undefined
},
sendDialogFormVisible
:
false
,
recvDialogFormVisible
:
false
,
refundDialogVisible
:
false
,
downloadLoading
:
false
}
},
filters
:
{
orderStatusFilter
(
status
)
{
const
statusMap
=
{
'
101
'
:
'
未付款
'
,
'
102
'
:
'
已取消
'
,
'
103
'
:
'
已取消
'
,
'
201
'
:
'
已付款
'
,
'
202
'
:
'
申请退款
'
,
'
203
'
:
'
已退款
'
,
'
301
'
:
'
已发货
'
,
'
401
'
:
'
确认收货
'
,
'
402
'
:
'
确认收货
'
}
return
statusMap
[
status
]
}
},
created
()
{
this
.
getList
()
},
...
...
@@ -180,69 +180,53 @@ export default {
this
.
listQuery
.
page
=
val
this
.
getList
()
},
resetForm
(
row
)
{
this
.
dataForm
.
id
=
row
.
id
this
.
dataForm
.
shipChannel
=
row
.
shipChannel
this
.
dataForm
.
shipSn
=
row
.
shipSn
this
.
dataForm
.
shipStartTime
=
row
.
shipStartTime
this
.
dataForm
.
shipEndTime
=
row
.
shipEndTime
},
handleSend
(
row
)
{
this
.
resetForm
(
row
)
this
.
sendDialogFormVisible
=
true
handleShip
(
row
)
{
this
.
shipForm
.
orderId
=
row
.
id
this
.
shipForm
.
shipChannel
=
row
.
shipChannel
this
.
shipForm
.
shipSn
=
row
.
shipSn
this
.
shipDialogVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
'
data
Form
'
].
clearValidate
()
this
.
$refs
[
'
ship
Form
'
].
clearValidate
()
})
},
sendData
()
{
this
.
$refs
[
'
data
Form
'
].
validate
((
valid
)
=>
{
confirmShip
()
{
this
.
$refs
[
'
ship
Form
'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
updateOrder
(
this
.
dataForm
).
then
(
response
=>
{
const
updatedOrder
=
response
.
data
.
data
for
(
const
v
of
this
.
list
)
{
if
(
v
.
id
===
updatedOrder
.
id
)
{
const
index
=
this
.
list
.
indexOf
(
v
)
this
.
list
.
splice
(
index
,
1
,
updatedOrder
)
break
}
}
this
.
sendDialogFormVisible
=
false
shipOrder
(
this
.
shipForm
).
then
(
response
=>
{
this
.
shipDialogVisible
=
false
this
.
$notify
({
title
:
'
成功
'
,
message
:
'
更新
成功
'
,
message
:
'
确认发货
成功
'
,
type
:
'
success
'
,
duration
:
2000
})
this
.
getList
()
})
}
})
},
handleRecv
(
row
)
{
this
.
resetForm
(
row
)
this
.
recvDialogFormVisible
=
true
handleRefund
(
row
)
{
this
.
refundForm
.
orderId
=
row
.
id
this
.
refundForm
.
refundMoney
=
row
.
actualPrice
this
.
refundDialogVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
'
data
Form
'
].
clearValidate
()
this
.
$refs
[
'
refund
Form
'
].
clearValidate
()
})
},
recvData
()
{
this
.
$refs
[
'
data
Form
'
].
validate
((
valid
)
=>
{
confirmRefund
()
{
this
.
$refs
[
'
refund
Form
'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
updateOrder
(
this
.
dataForm
).
then
(
response
=>
{
const
updatedOrder
=
response
.
data
.
data
for
(
const
v
of
this
.
list
)
{
if
(
v
.
id
===
updatedOrder
.
id
)
{
const
index
=
this
.
list
.
indexOf
(
v
)
this
.
list
.
splice
(
index
,
1
,
updatedOrder
)
break
}
}
this
.
recvDialogFormVisible
=
false
refundOrder
(
this
.
refundForm
).
then
(
response
=>
{
this
.
refundDialogVisible
=
false
this
.
$notify
({
title
:
'
成功
'
,
message
:
'
更新
成功
'
,
message
:
'
确认退款
成功
'
,
type
:
'
success
'
,
duration
:
2000
})
this
.
getList
()
})
}
})
...
...
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