Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
bc2bf520
提交
bc2bf520
authored
4月 19, 2019
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
前端+后端:完整接入订单确认的优惠劵计算
上级
cb07eb3f
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
42 行增加
和
16 行删除
+42
-16
order.js
mobile-web/src/api/order.js
+4
-4
order.vue
mobile-web/src/page/shipping/order.vue
+22
-1
UsersCartController.java
...der/application/controller/users/UsersCartController.java
+1
-1
UsersOrderController.java
...er/application/controller/users/UsersOrderController.java
+1
-1
UsersOrderConfirmCreateVO.java
.../mall/order/application/vo/UsersOrderConfirmCreateVO.java
+4
-0
CartServiceImpl.java
...va/cn/iocoder/mall/order/biz/service/CartServiceImpl.java
+3
-2
CouponCardDetailBO.java
.../cn/iocoder/mall/promotion/api/bo/CouponCardDetailBO.java
+2
-1
CouponServiceImpl.java
...iocoder/mall/promotion/biz/service/CouponServiceImpl.java
+5
-6
没有找到文件。
mobile-web/src/api/order.js
浏览文件 @
bc2bf520
...
...
@@ -35,13 +35,14 @@ export function confirmReceiving(orderId) {
});
}
export
function
getOrderConfirmCreateOrder
(
skuId
,
quantity
)
{
export
function
getOrderConfirmCreateOrder
(
skuId
,
quantity
,
couponCardId
)
{
return
request
({
url
:
'/order-api/users/order/confirm_create_order'
,
method
:
'get'
,
params
:
{
skuId
,
quantity
,
couponCardId
,
}
});
}
...
...
@@ -109,13 +110,12 @@ export function updateCartSelected(skuIds, selected) {
});
}
export
function
getCartConfirmCreateOrder
(
skuId
,
quantity
)
{
export
function
getCartConfirmCreateOrder
(
couponCardId
)
{
return
request
({
url
:
'/order-api/users/cart/confirm_create_order'
,
method
:
'get'
,
params
:
{
skuId
,
quantity
,
couponCardId
}
});
}
...
...
mobile-web/src/page/shipping/order.vue
浏览文件 @
bc2bf520
...
...
@@ -125,6 +125,21 @@
},
methods
:
{
onCouponChange
(
index
)
{
// debugger;
let
couponCardId
=
this
.
coupons
[
index
].
id
;
if
(
this
.
from
===
'direct_order'
)
{
getOrderConfirmCreateOrder
(
this
.
skuId
,
this
.
quantity
,
couponCardId
).
then
(
data
=>
{
// this.itemGroups = data.itemGroups;
this
.
fee
=
data
.
fee
;
this
.
coupons
[
index
].
value
=
data
.
couponCardDiscountTotal
;
// 修改优惠劵减免的金额
})
}
else
if
(
this
.
from
===
'cart'
)
{
getCartConfirmCreateOrder
(
couponCardId
).
then
(
data
=>
{
// this.itemGroups = data.itemGroups;
this
.
fee
=
data
.
fee
;
this
.
coupons
[
index
].
value
=
data
.
couponCardDiscountTotal
;
// 修改优惠劵减免的金额
})
}
this
.
chosenCoupon
=
index
;
this
.
showCouponPopup
=
false
;
},
...
...
@@ -205,7 +220,7 @@
endAt
:
card
.
validEndTime
/
1000
,
// description: '述信息,优惠券可用时展示',
reason
:
card
.
unavailableReason
,
value
:
0
,
// TODO ,需要服务端算
value
:
0
,
valueDesc
:
card
.
preferentialType
===
1
?
card
.
priceOff
/
100
:
card
.
percentOff
/
10.0
,
unitDesc
:
card
.
preferentialType
===
1
?
'元'
:
'折'
})
...
...
@@ -228,6 +243,12 @@
this
.
itemGroups
=
data
.
itemGroups
;
this
.
fee
=
data
.
fee
;
// 获得优惠劵列表
this
.
coupons
=
this
.
convertCouponList
(
data
.
couponCards
.
filter
(
function
(
element
)
{
return
element
.
available
;
}));
this
.
disabledCoupons
=
this
.
convertCouponList
(
data
.
couponCards
.
filter
(
function
(
element
)
{
return
!
element
.
available
;
}));
})
}
else
if
(
this
.
from
===
'cart'
)
{
getCartConfirmCreateOrder
().
then
(
data
=>
{
...
...
order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/users/UsersCartController.java
浏览文件 @
bc2bf520
...
...
@@ -105,7 +105,7 @@ public class UsersCartController {
}
@GetMapping
(
"/confirm_create_order"
)
public
CommonResult
<
UsersOrderConfirmCreateVO
>
getConfirmCreateOrder
(
@RequestParam
(
"couponCardId"
)
Integer
couponCardId
)
{
public
CommonResult
<
UsersOrderConfirmCreateVO
>
getConfirmCreateOrder
(
@RequestParam
(
value
=
"couponCardId"
,
required
=
false
)
Integer
couponCardId
)
{
Integer
userId
=
UserSecurityContextHolder
.
getContext
().
getUserId
();
// 获得购物车中选中的
List
<
CartItemBO
>
cartItems
=
cartService
.
list
(
userId
,
true
).
getData
();
...
...
order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/users/UsersOrderController.java
浏览文件 @
bc2bf520
...
...
@@ -94,7 +94,7 @@ public class UsersOrderController {
@ApiOperation
(
"确认创建订单"
)
public
CommonResult
<
UsersOrderConfirmCreateVO
>
getConfirmCreateOrder
(
@RequestParam
(
"skuId"
)
Integer
skuId
,
@RequestParam
(
"quantity"
)
Integer
quantity
,
@RequestParam
(
"couponCardId"
)
Integer
couponCardId
)
{
@RequestParam
(
value
=
"couponCardId"
,
required
=
false
)
Integer
couponCardId
)
{
// 创建 CalcOrderPriceDTO 对象,并执行价格计算
CalcOrderPriceDTO
calcOrderPriceDTO
=
new
CalcOrderPriceDTO
()
.
setUserId
(
UserSecurityContextHolder
.
getContext
().
getUserId
())
...
...
order/order-application/src/main/java/cn/iocoder/mall/order/application/vo/UsersOrderConfirmCreateVO.java
浏览文件 @
bc2bf520
...
...
@@ -24,6 +24,10 @@ public class UsersOrderConfirmCreateVO {
* 优惠劵列表 TODO 芋艿,后续改改
*/
private
List
<
CouponCardAvailableBO
>
couponCards
;
/**
* 优惠劵优惠金额
*/
private
Integer
couponCardDiscountTotal
;
/**
* 商品分组
*
...
...
order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/CartServiceImpl.java
浏览文件 @
bc2bf520
...
...
@@ -379,7 +379,8 @@ public class CartServiceImpl implements CartService {
Assert
.
isTrue
(
presentTotal
>
0
,
"计算后,价格为负数:"
+
presentTotal
);
}
else
if
(
PreferentialTypeEnum
.
DISCOUNT
.
getValue
().
equals
(
couponCard
.
getPreferentialType
()))
{
// 打折
presentTotal
=
originalTotal
*
couponCard
.
getPercentOff
()
/
100
;
if
(
originalTotal
-
presentTotal
>
couponCard
.
getDiscountPriceLimit
())
{
if
(
couponCard
.
getDiscountPriceLimit
()
!=
null
// 空,代表不限制优惠上限
&&
originalTotal
-
presentTotal
>
couponCard
.
getDiscountPriceLimit
())
{
presentTotal
=
originalTotal
-
couponCard
.
getDiscountPriceLimit
();
}
}
else
{
...
...
@@ -432,7 +433,7 @@ public class CartServiceImpl implements CartService {
Assert
.
isTrue
(
PromotionActivityTypeEnum
.
FULL_PRIVILEGE
.
getValue
().
equals
(
activity
.
getActivityType
()),
"传入的必须的满减送活动必须是满减送"
);
// 获得优惠信息
List
<
CalcOrderPriceBO
.
Item
>
items
=
itemGroup
.
getItems
().
stream
().
filter
(
item
->
!
item
.
getSelected
()
)
List
<
CalcOrderPriceBO
.
Item
>
items
=
itemGroup
.
getItems
().
stream
().
filter
(
CalcOrderPriceBO
.
Item
::
getSelected
)
.
collect
(
Collectors
.
toList
());
Integer
itemCnt
=
items
.
stream
().
mapToInt
(
CalcOrderPriceBO
.
Item
::
getBuyQuantity
).
sum
();
Integer
originalTotal
=
items
.
stream
().
mapToInt
(
CalcOrderPriceBO
.
Item
::
getPresentTotal
).
sum
();
...
...
promotion/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/bo/CouponCardDetailBO.java
浏览文件 @
bc2bf520
...
...
@@ -3,6 +3,7 @@ package cn.iocoder.mall.promotion.api.bo;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -13,7 +14,7 @@ import java.util.List;
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CouponCardDetailBO
{
public
class
CouponCardDetailBO
implements
Serializable
{
// ========== 基本信息 BEGIN ==========
/**
...
...
promotion/promotion-service-impl/src/main/java/cn/iocoder/mall/promotion/biz/service/CouponServiceImpl.java
浏览文件 @
bc2bf520
...
...
@@ -20,10 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
// 实际上不用添加。添加的原因是,必须 Spring 报错提示
...
...
@@ -279,8 +276,10 @@ public class CouponServiceImpl implements CouponService {
public
CommonResult
<
List
<
CouponCardAvailableBO
>>
getCouponCardList
(
Integer
userId
,
List
<
CouponCardSpuDTO
>
spus
)
{
// 查询用户未使用的优惠劵列表
List
<
CouponCardDO
>
cards
=
couponCardMapper
.
selectListByUserIdAndStatus
(
userId
,
CouponCardStatusEnum
.
UNUSED
.
getValue
());
// TODO: 2019-04-19 芋艿 如果没有优惠券,处理
if
(
cards
.
isEmpty
())
{
return
CommonResult
.
success
(
Collections
.
emptyList
());
}
// 查询优惠劵模板集合
Map
<
Integer
,
CouponTemplateDO
>
templates
=
couponTemplateMapper
.
selectListByIds
(
cards
.
stream
().
map
(
CouponCardDO:
:
getTemplateId
).
collect
(
Collectors
.
toSet
()))
.
stream
().
collect
(
Collectors
.
toMap
(
CouponTemplateDO:
:
getId
,
template
->
template
));
// 逐个判断是否可用
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论