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
79a27917
Commit
79a27917
authored
Jan 30, 2019
by
Junling Bu
Browse files
chore[litemall-wx-api]: 微调
parent
fbc7dc6a
Changes
1
Hide whitespace changes
Inline
Side-by-side
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java
View file @
79a27917
...
...
@@ -24,22 +24,14 @@ import org.linlinjava.litemall.db.service.*;
import
org.linlinjava.litemall.db.util.CouponUserConstant
;
import
org.linlinjava.litemall.db.util.OrderHandleOption
;
import
org.linlinjava.litemall.db.util.OrderUtil
;
import
org.linlinjava.litemall.wx.annotation.LoginUser
;
import
org.linlinjava.litemall.wx.util.IpUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.TransactionDefinition
;
import
org.springframework.transaction.TransactionStatus
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.DefaultTransactionDefinition
;
import
org.springframework.util.Assert
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.constraints.NotNull
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
...
...
@@ -320,9 +312,9 @@ public class WxOrderService {
// 使用优惠券减免的金额
BigDecimal
couponPrice
=
new
BigDecimal
(
0.00
);
// 如果couponId=0则没有优惠券,couponId=-1则不使用优惠券
if
(
couponId
!=
0
&&
couponId
!=
-
1
){
if
(
couponId
!=
0
&&
couponId
!=
-
1
)
{
LitemallCoupon
coupon
=
couponVerifyService
.
checkCoupon
(
userId
,
couponId
,
checkedGoodsPrice
);
if
(
coupon
==
null
){
if
(
coupon
==
null
)
{
return
ResponseUtil
.
badArgumentValue
();
}
couponPrice
=
coupon
.
getDiscount
();
...
...
@@ -345,101 +337,101 @@ public class WxOrderService {
Integer
orderId
=
null
;
LitemallOrder
order
=
null
;
// 订单
order
=
new
LitemallOrder
();
order
.
setUserId
(
userId
);
order
.
setOrderSn
(
orderService
.
generateOrderSn
(
userId
));
order
.
setOrderStatus
(
OrderUtil
.
STATUS_CREATE
);
order
.
setConsignee
(
checkedAddress
.
getName
());
order
.
setMobile
(
checkedAddress
.
getMobile
());
order
.
setMessage
(
message
);
String
detailedAddress
=
detailedAddress
(
checkedAddress
);
order
.
setAddress
(
detailedAddress
);
order
.
setGoodsPrice
(
checkedGoodsPrice
);
order
.
setFreightPrice
(
freightPrice
);
order
.
setCouponPrice
(
couponPrice
);
order
.
setIntegralPrice
(
integralPrice
);
order
.
setOrderPrice
(
orderTotalPrice
);
order
.
setActualPrice
(
actualPrice
);
// 有团购活动
if
(
grouponRules
!=
null
)
{
order
.
setGrouponPrice
(
grouponPrice
);
// 团购价格
}
else
{
order
.
setGrouponPrice
(
new
BigDecimal
(
0.00
));
// 团购价格
}
// 订单
order
=
new
LitemallOrder
();
order
.
setUserId
(
userId
);
order
.
setOrderSn
(
orderService
.
generateOrderSn
(
userId
));
order
.
setOrderStatus
(
OrderUtil
.
STATUS_CREATE
);
order
.
setConsignee
(
checkedAddress
.
getName
());
order
.
setMobile
(
checkedAddress
.
getMobile
());
order
.
setMessage
(
message
);
String
detailedAddress
=
detailedAddress
(
checkedAddress
);
order
.
setAddress
(
detailedAddress
);
order
.
setGoodsPrice
(
checkedGoodsPrice
);
order
.
setFreightPrice
(
freightPrice
);
order
.
setCouponPrice
(
couponPrice
);
order
.
setIntegralPrice
(
integralPrice
);
order
.
setOrderPrice
(
orderTotalPrice
);
order
.
setActualPrice
(
actualPrice
);
// 有团购活动
if
(
grouponRules
!=
null
)
{
order
.
setGrouponPrice
(
grouponPrice
);
// 团购价格
}
else
{
order
.
setGrouponPrice
(
new
BigDecimal
(
0.00
));
// 团购价格
}
// 添加订单表项
orderService
.
add
(
order
);
orderId
=
order
.
getId
();
// 添加订单商品表项
for
(
LitemallCart
cartGoods
:
checkedGoodsList
)
{
// 订单商品
LitemallOrderGoods
orderGoods
=
new
LitemallOrderGoods
();
orderGoods
.
setOrderId
(
order
.
getId
());
orderGoods
.
setGoodsId
(
cartGoods
.
getGoodsId
());
orderGoods
.
setGoodsSn
(
cartGoods
.
getGoodsSn
());
orderGoods
.
setProductId
(
cartGoods
.
getProductId
());
orderGoods
.
setGoodsName
(
cartGoods
.
getGoodsName
());
orderGoods
.
setPicUrl
(
cartGoods
.
getPicUrl
());
orderGoods
.
setPrice
(
cartGoods
.
getPrice
());
orderGoods
.
setNumber
(
cartGoods
.
getNumber
());
orderGoods
.
setSpecifications
(
cartGoods
.
getSpecifications
());
orderGoods
.
setAddTime
(
LocalDateTime
.
now
());
orderGoodsService
.
add
(
orderGoods
);
}
// 添加订单表项
orderService
.
add
(
order
);
orderId
=
order
.
getId
();
// 删除购物车里面的商品信息
cartService
.
clearGoods
(
userId
);
// 商品货品数量减少
for
(
LitemallCart
checkGoods
:
checkedGoodsList
)
{
Integer
productId
=
checkGoods
.
getProductId
();
LitemallGoodsProduct
product
=
productService
.
findById
(
productId
);
Integer
remainNumber
=
product
.
getNumber
()
-
checkGoods
.
getNumber
();
if
(
remainNumber
<
0
)
{
throw
new
RuntimeException
(
"下单的商品货品数量大于库存量"
);
}
if
(
productService
.
reduceStock
(
productId
,
checkGoods
.
getNumber
())
==
0
)
{
throw
new
RuntimeException
(
"商品货品库存减少失败"
);
}
}
// 添加订单商品表项
for
(
LitemallCart
cartGoods
:
checkedGoodsList
)
{
// 订单商品
LitemallOrderGoods
orderGoods
=
new
LitemallOrderGoods
();
orderGoods
.
setOrderId
(
order
.
getId
());
orderGoods
.
setGoodsId
(
cartGoods
.
getGoodsId
());
orderGoods
.
setGoodsSn
(
cartGoods
.
getGoodsSn
());
orderGoods
.
setProductId
(
cartGoods
.
getProductId
());
orderGoods
.
setGoodsName
(
cartGoods
.
getGoodsName
());
orderGoods
.
setPicUrl
(
cartGoods
.
getPicUrl
());
orderGoods
.
setPrice
(
cartGoods
.
getPrice
());
orderGoods
.
setNumber
(
cartGoods
.
getNumber
());
orderGoods
.
setSpecifications
(
cartGoods
.
getSpecifications
());
orderGoods
.
setAddTime
(
LocalDateTime
.
now
());
// 如果使用了优惠券,设置优惠券使用状态
if
(
couponId
!=
0
&&
couponId
!=
-
1
){
LitemallCouponUser
couponUser
=
couponUserService
.
queryOne
(
userId
,
couponId
);
couponUser
.
setStatus
(
CouponUserConstant
.
STATUS_USED
);
couponUser
.
setUsedTime
(
LocalDateTime
.
now
());
couponUser
.
setOrderId
(
orderId
);
couponUserService
.
update
(
couponUser
);
orderGoodsService
.
add
(
orderGoods
);
}
// 删除购物车里面的商品信息
cartService
.
clearGoods
(
userId
);
// 商品货品数量减少
for
(
LitemallCart
checkGoods
:
checkedGoodsList
)
{
Integer
productId
=
checkGoods
.
getProductId
();
LitemallGoodsProduct
product
=
productService
.
findById
(
productId
);
Integer
remainNumber
=
product
.
getNumber
()
-
checkGoods
.
getNumber
();
if
(
remainNumber
<
0
)
{
throw
new
RuntimeException
(
"下单的商品货品数量大于库存量"
);
}
if
(
productService
.
reduceStock
(
productId
,
checkGoods
.
getNumber
())
==
0
)
{
throw
new
RuntimeException
(
"商品货品库存减少失败"
);
}
}
// 如果使用了优惠券,设置优惠券使用状态
if
(
couponId
!=
0
&&
couponId
!=
-
1
)
{
LitemallCouponUser
couponUser
=
couponUserService
.
queryOne
(
userId
,
couponId
);
couponUser
.
setStatus
(
CouponUserConstant
.
STATUS_USED
);
couponUser
.
setUsedTime
(
LocalDateTime
.
now
());
couponUser
.
setOrderId
(
orderId
);
couponUserService
.
update
(
couponUser
);
}
//如果是团购项目,添加团购信息
if
(
grouponRulesId
!=
null
&&
grouponRulesId
>
0
)
{
LitemallGroupon
groupon
=
new
LitemallGroupon
();
groupon
.
setOrderId
(
orderId
);
groupon
.
setPayed
(
false
);
groupon
.
setUserId
(
userId
);
groupon
.
setRulesId
(
grouponRulesId
);
//参与者
if
(
grouponLinkId
!=
null
&&
grouponLinkId
>
0
)
{
//参与的团购记录
LitemallGroupon
baseGroupon
=
grouponService
.
queryById
(
grouponLinkId
);
groupon
.
setCreatorUserId
(
baseGroupon
.
getCreatorUserId
());
groupon
.
setGrouponId
(
grouponLinkId
);
groupon
.
setShareUrl
(
baseGroupon
.
getShareUrl
());
}
else
{
groupon
.
setCreatorUserId
(
userId
);
groupon
.
setGrouponId
(
0
);
}
grouponService
.
createGroupon
(
groupon
);
//如果是团购项目,添加团购信息
if
(
grouponRulesId
!=
null
&&
grouponRulesId
>
0
)
{
LitemallGroupon
groupon
=
new
LitemallGroupon
();
groupon
.
setOrderId
(
orderId
);
groupon
.
setPayed
(
false
);
groupon
.
setUserId
(
userId
);
groupon
.
setRulesId
(
grouponRulesId
);
//参与者
if
(
grouponLinkId
!=
null
&&
grouponLinkId
>
0
)
{
//参与的团购记录
LitemallGroupon
baseGroupon
=
grouponService
.
queryById
(
grouponLinkId
);
groupon
.
setCreatorUserId
(
baseGroupon
.
getCreatorUserId
());
groupon
.
setGrouponId
(
grouponLinkId
);
groupon
.
setShareUrl
(
baseGroupon
.
getShareUrl
());
}
else
{
groupon
.
setCreatorUserId
(
userId
);
groupon
.
setGrouponId
(
0
);
}
grouponService
.
createGroupon
(
groupon
);
}
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
data
.
put
(
"orderId"
,
orderId
);
return
ResponseUtil
.
ok
(
data
);
...
...
@@ -484,22 +476,22 @@ public class WxOrderService {
return
ResponseUtil
.
fail
(
ORDER_INVALID_OPERATION
,
"订单不能取消"
);
}
// 设置订单已取消状态
order
.
setOrderStatus
(
OrderUtil
.
STATUS_CANCEL
);
order
.
setEndTime
(
LocalDateTime
.
now
());
if
(
orderService
.
updateWithOptimisticLocker
(
order
)
==
0
)
{
throw
new
RuntimeException
(
"更新数据已失效"
);
}
// 设置订单已取消状态
order
.
setOrderStatus
(
OrderUtil
.
STATUS_CANCEL
);
order
.
setEndTime
(
LocalDateTime
.
now
());
if
(
orderService
.
updateWithOptimisticLocker
(
order
)
==
0
)
{
throw
new
RuntimeException
(
"更新数据已失效"
);
}
// 商品货品数量增加
List
<
LitemallOrderGoods
>
orderGoodsList
=
orderGoodsService
.
queryByOid
(
orderId
);
for
(
LitemallOrderGoods
orderGoods
:
orderGoodsList
)
{
Integer
productId
=
orderGoods
.
getProductId
();
Short
number
=
orderGoods
.
getNumber
();
if
(
productService
.
addStock
(
productId
,
number
)
==
0
)
{
throw
new
RuntimeException
(
"商品货品库存增加失败"
);
}
// 商品货品数量增加
List
<
LitemallOrderGoods
>
orderGoodsList
=
orderGoodsService
.
queryByOid
(
orderId
);
for
(
LitemallOrderGoods
orderGoods
:
orderGoodsList
)
{
Integer
productId
=
orderGoods
.
getProductId
();
Short
number
=
orderGoods
.
getNumber
();
if
(
productService
.
addStock
(
productId
,
number
)
==
0
)
{
throw
new
RuntimeException
(
"商品货品库存增加失败"
);
}
}
return
ResponseUtil
.
ok
();
}
...
...
@@ -588,7 +580,7 @@ public class WxOrderService {
* 2. 设置订单付款成功状态相关信息;
* 3. 响应微信商户平台.
*
* @param request 请求内容
* @param request
请求内容
* @param response 响应内容
* @return 操作结果
*/
...
...
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