Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
60b0043a
提交
60b0043a
authored
8月 22, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优惠劵模板相关逻辑的迁移
上级
6fd899bc
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
26 行增加
和
178 行删除
+26
-178
CouponTemplateController.java
...controller/promotion/coupon/CouponTemplateController.java
+5
-5
CouponTemplateCardCreateReqVO.java
...ion/coupon/vo/template/CouponTemplateCardCreateReqVO.java
+3
-0
CouponTemplateConvert.java
...ntweb/convert/promotion/coupon/CouponTemplateConvert.java
+4
-0
CouponTemplateManager.java
...ntweb/manager/promotion/coupon/CouponTemplateManager.java
+6
-3
CouponTemplateTypeEnum.java
...ion/api/enums/coupon/template/CouponTemplateTypeEnum.java
+3
-0
CouponCardTemplateCreateReqDTO.java
...c/coupon/dto/template/CouponCardTemplateCreateReqDTO.java
+1
-1
CouponCardTemplateUpdateReqDTO.java
...c/coupon/dto/template/CouponCardTemplateUpdateReqDTO.java
+1
-1
CouponTemplateService.java
...romotionservice/service/coupon/CouponTemplateService.java
+3
-3
CouponServiceImpl.java
...iocoder/mall/promotion/biz/service/CouponServiceImpl.java
+0
-165
没有找到文件。
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/promotion/coupon/CouponTemplateController.java
浏览文件 @
60b0043a
...
...
@@ -42,7 +42,7 @@ public class CouponTemplateController {
}
@PostMapping
(
"/update-status"
)
@ApiOperation
(
"更新优惠劵(码)模板"
)
@ApiOperation
(
"更新优惠劵(码)模板
的状态
"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"优惠劵(码)模板编号"
,
required
=
true
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"状态。1 - 开启;2 - 禁用"
,
required
=
true
,
example
=
"1"
),
...
...
@@ -59,15 +59,15 @@ public class CouponTemplateController {
@PostMapping
(
"/create-card"
)
@ApiOperation
(
"创建优惠劵模板"
)
@RequiresPermissions
(
"promotion:coupon-template:create-card"
)
public
CommonResult
<
Integer
>
createCoupon
TemplateCard
(
@Valid
CouponTemplateCardCreateReqVO
createVO
)
{
return
success
(
couponTemplateManager
.
createCoupon
TemplateCard
(
createVO
));
public
CommonResult
<
Integer
>
createCoupon
CardTemplate
(
@Valid
CouponTemplateCardCreateReqVO
createVO
)
{
return
success
(
couponTemplateManager
.
createCoupon
CardTemplate
(
createVO
));
}
@PostMapping
(
"/update-card"
)
@ApiOperation
(
"更新优惠劵模板"
)
@RequiresPermissions
(
"promotion:coupon-template:update-card"
)
public
CommonResult
<
Boolean
>
updateCoupon
TemplateCard
(
@Valid
CouponTemplateCardUpdateReqVO
updateVO
)
{
couponTemplateManager
.
updateCoupon
TemplateCard
(
updateVO
);
public
CommonResult
<
Boolean
>
updateCoupon
CardTemplate
(
@Valid
CouponTemplateCardUpdateReqVO
updateVO
)
{
couponTemplateManager
.
updateCoupon
CardTemplate
(
updateVO
);
return
success
(
true
);
}
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/promotion/coupon/vo/template/CouponTemplateCardCreateReqVO.java
浏览文件 @
60b0043a
...
...
@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
org.hibernate.validator.constraints.Length
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Min
;
...
...
@@ -52,8 +53,10 @@ public class CouponTemplateCardCreateReqVO {
@InEnum
(
value
=
CouponTemplateDateTypeEnum
.
class
,
message
=
"生效日期类型必须在 {value}"
)
private
Integer
dateType
;
@ApiModelProperty
(
value
=
"固定日期-生效开始时间"
,
notes
=
"当 dateType 为固定日期时,非空"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
validStartTime
;
@ApiModelProperty
(
value
=
"固定日期-生效结束时间"
,
notes
=
"当 dateType 为固定日期时,非空"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
validEndTime
;
@ApiModelProperty
(
value
=
"领取日期-开始天数"
,
example
=
"0"
,
notes
=
"例如,0-当天;1-次天"
)
@Min
(
value
=
0L
,
message
=
"领取日期开始时间最小为 {value}"
)
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/promotion/coupon/CouponTemplateConvert.java
浏览文件 @
60b0043a
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
promotion
.
coupon
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.promotion.coupon.vo.template.CouponTemplateCardCreateReqVO
;
import
cn.iocoder.mall.managementweb.controller.promotion.coupon.vo.template.CouponTemplateCardUpdateReqVO
;
import
cn.iocoder.mall.managementweb.controller.promotion.coupon.vo.template.CouponTemplatePageReqVO
;
import
cn.iocoder.mall.managementweb.controller.promotion.coupon.vo.template.CouponTemplateRespVO
;
import
cn.iocoder.mall.promotion.api.rpc.coupon.dto.template.CouponCardTemplateCreateReqDTO
;
import
cn.iocoder.mall.promotion.api.rpc.coupon.dto.template.CouponCardTemplateUpdateReqDTO
;
import
cn.iocoder.mall.promotion.api.rpc.coupon.dto.template.CouponTemplatePageReqDTO
;
import
cn.iocoder.mall.promotion.api.rpc.coupon.dto.template.CouponTemplateRespDTO
;
...
...
@@ -21,4 +23,6 @@ public interface CouponTemplateConvert {
PageResult
<
CouponTemplateRespVO
>
convertPage
(
PageResult
<
CouponTemplateRespDTO
>
page
);
CouponCardTemplateCreateReqDTO
convert
(
CouponTemplateCardCreateReqVO
bean
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/promotion/coupon/CouponTemplateManager.java
浏览文件 @
60b0043a
...
...
@@ -38,11 +38,14 @@ public class CouponTemplateManager {
// ========== 优惠劵模板 ==========
public
Integer
createCouponTemplateCard
(
CouponTemplateCardCreateReqVO
createVO
)
{
return
null
;
public
Integer
createCouponCardTemplate
(
CouponTemplateCardCreateReqVO
createVO
)
{
CommonResult
<
Integer
>
createCouponCardTemplateResult
=
couponTemplateRpc
.
createCouponCardTemplate
(
CouponTemplateConvert
.
INSTANCE
.
convert
(
createVO
));
createCouponCardTemplateResult
.
checkError
();
return
createCouponCardTemplateResult
.
getData
();
}
public
void
updateCoupon
TemplateCard
(
CouponTemplateCardUpdateReqVO
updateVO
)
{
public
void
updateCoupon
CardTemplate
(
CouponTemplateCardUpdateReqVO
updateVO
)
{
CommonResult
<
Boolean
>
updateCouponCardTemplateResult
=
couponTemplateRpc
.
updateCouponCardTemplate
(
CouponTemplateConvert
.
INSTANCE
.
convert
(
updateVO
));
updateCouponCardTemplateResult
.
checkError
();
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/enums/coupon/template/CouponTemplateTypeEnum.java
浏览文件 @
60b0043a
...
...
@@ -2,6 +2,9 @@ package cn.iocoder.mall.promotion.api.enums.coupon.template;
import
java.util.Arrays
;
/**
* 优惠劵(码)模板的类型的枚举
*/
public
enum
CouponTemplateTypeEnum
{
CARD
(
1
,
"优惠劵"
),
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/coupon/dto/template/CouponCardTemplateCreateReqDTO.java
浏览文件 @
60b0043a
...
...
@@ -100,7 +100,7 @@ public class CouponCardTemplateCreateReqDTO implements Serializable {
* 例如,0-当天;1-次天
*/
@Min
(
value
=
0L
,
message
=
"领取日期开始时间最小为 {value}"
)
private
Integer
fixed
Begin
Term
;
private
Integer
fixed
Start
Term
;
/**
* 领取日期-结束天数
*/
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/coupon/dto/template/CouponCardTemplateUpdateReqDTO.java
浏览文件 @
60b0043a
...
...
@@ -99,7 +99,7 @@ public class CouponCardTemplateUpdateReqDTO implements Serializable {
// * 例如,0-当天;1-次天
// */
// @Min(value = 0L, message = "领取日期开始时间最小为 {value}")
// private Integer fixed
Begin
Term;
// private Integer fixed
Start
Term;
// /**
// * 领取日期-结束天数
// */
...
...
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/service/coupon/CouponTemplateService.java
浏览文件 @
60b0043a
...
...
@@ -73,7 +73,7 @@ public class CouponTemplateService {
couponTemplateMapper
.
updateById
(
updateTemplateDO
);
}
private
Boolean
checkCouponTemplateDateType
(
Integer
dateType
,
Date
validStartTime
,
Date
validEndTime
,
Integer
fixed
Begin
Term
,
Integer
fixedEndTerm
)
{
private
Boolean
checkCouponTemplateDateType
(
Integer
dateType
,
Date
validStartTime
,
Date
validEndTime
,
Integer
fixed
Start
Term
,
Integer
fixedEndTerm
)
{
// TODO 芋艿:后续这种类型的校验,看看怎么优化到对象里
if
(
CouponTemplateDateTypeEnum
.
FIXED_DATE
.
getValue
().
equals
(
dateType
))
{
// 固定日期
if
(
validStartTime
==
null
)
{
...
...
@@ -86,7 +86,7 @@ public class CouponTemplateService {
throw
ServiceExceptionUtil
.
exception
(
BAD_REQUEST
,
"生效开始时间不能大于生效结束时间"
);
}
}
else
if
(
CouponTemplateDateTypeEnum
.
FIXED_TERM
.
getValue
().
equals
(
dateType
))
{
// 领取日期
if
(
fixed
Begin
Term
==
null
)
{
if
(
fixed
Start
Term
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
BAD_REQUEST
,
"领取日期开始时间不能为空"
);
}
if
(
fixedEndTerm
==
null
)
{
...
...
@@ -129,7 +129,7 @@ public class CouponTemplateService {
// 校验生效日期相关
checkCouponTemplateDateType
(
createReqDTO
.
getDateType
(),
createReqDTO
.
getValidStartTime
(),
createReqDTO
.
getValidEndTime
(),
createReqDTO
.
getFixed
Begin
Term
(),
createReqDTO
.
getFixedEndTerm
());
createReqDTO
.
getFixed
Start
Term
(),
createReqDTO
.
getFixedEndTerm
());
// 校验优惠类型
checkCouponTemplatePreferentialType
(
createReqDTO
.
getPreferentialType
(),
createReqDTO
.
getPercentOff
(),
createReqDTO
.
getPriceOff
(),
createReqDTO
.
getPriceAvailable
());
...
...
promotion/promotion-service-impl/src/main/java/cn/iocoder/mall/promotion/biz/service/CouponServiceImpl.java
deleted
100644 → 0
浏览文件 @
6fd899bc
package
cn
.
iocoder
.
mall
.
promotion
.
biz
.
service
;
import
cn.iocoder.common.framework.enums.SysErrorCodeEnum
;
import
cn.iocoder.common.framework.util.DateUtil
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.StringUtil
;
import
cn.iocoder.mall.promotion.api.CouponService
;
import
cn.iocoder.mall.promotion.api.bo.*
;
import
cn.iocoder.mall.promotion.api.enums.*
;
import
cn.iocoder.mall.promotion.api.dto.*
;
import
cn.iocoder.mall.promotion.biz.convert.CouponCardConvert
;
import
cn.iocoder.mall.promotion.biz.convert.CouponTemplateConvert
;
import
cn.iocoder.mall.promotion.biz.dao.CouponCardMapper
;
import
cn.iocoder.mall.promotion.biz.dao.CouponTemplateMapper
;
import
cn.iocoder.mall.promotion.biz.dataobject.CouponCardDO
;
import
cn.iocoder.mall.promotion.biz.dataobject.CouponTemplateDO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
// 实际上不用添加。添加的原因是,必须 Spring 报错提示
@org
.
apache
.
dubbo
.
config
.
annotation
.
Service
(
validation
=
"true"
,
version
=
"${dubbo.provider.CouponService.version}"
)
public
class
CouponServiceImpl
implements
CouponService
{
@Autowired
private
CouponTemplateMapper
couponTemplateMapper
;
// ========== 优惠劵(码)模板 ==========
@Override
public
CouponTemplateBO
getCouponTemplate
(
Integer
couponTemplateId
)
{
CouponTemplateDO
template
=
couponTemplateMapper
.
selectById
(
couponTemplateId
);
return
CouponTemplateConvert
.
INSTANCE
.
convert
(
template
);
}
@Override
public
CouponTemplatePageBO
getCouponTemplatePage
(
CouponTemplatePageDTO
couponTemplatePageDTO
)
{
CouponTemplatePageBO
couponTemplatePageBO
=
new
CouponTemplatePageBO
();
// 查询分页数据
int
offset
=
(
couponTemplatePageDTO
.
getPageNo
()
-
1
)
*
couponTemplatePageDTO
.
getPageSize
();
couponTemplatePageBO
.
setList
(
CouponTemplateConvert
.
INSTANCE
.
convertToBO
(
couponTemplateMapper
.
selectListByPage
(
couponTemplatePageDTO
.
getType
(),
couponTemplatePageDTO
.
getTitle
(),
couponTemplatePageDTO
.
getStatus
(),
couponTemplatePageDTO
.
getPreferentialType
(),
offset
,
couponTemplatePageDTO
.
getPageSize
())));
// 查询分页总数
couponTemplatePageBO
.
setTotal
(
couponTemplateMapper
.
selectCountByPage
(
couponTemplatePageDTO
.
getType
(),
couponTemplatePageDTO
.
getTitle
(),
couponTemplatePageDTO
.
getStatus
(),
couponTemplatePageDTO
.
getPreferentialType
()));
return
couponTemplatePageBO
;
}
@Override
public
CouponTemplateBO
addCouponCodeTemplate
(
CouponCodeTemplateAddDTO
couponCodeTemplateAddDTO
)
{
return
null
;
}
@Override
public
CouponTemplateBO
addCouponCardTemplate
(
CouponCardTemplateAddDTO
couponCardTemplateAddDTO
)
{
// 校验生效日期相关
checkCouponTemplateDateType
(
couponCardTemplateAddDTO
.
getDateType
(),
couponCardTemplateAddDTO
.
getValidStartTime
(),
couponCardTemplateAddDTO
.
getValidEndTime
(),
couponCardTemplateAddDTO
.
getFixedBeginTerm
(),
couponCardTemplateAddDTO
.
getFixedEndTerm
());
// 校验优惠类型
Boolean
checkCouponTemplateDateTypeResult
=
checkCouponTemplatePreferentialType
(
couponCardTemplateAddDTO
.
getPreferentialType
(),
couponCardTemplateAddDTO
.
getPercentOff
(),
couponCardTemplateAddDTO
.
getPriceOff
(),
couponCardTemplateAddDTO
.
getPriceAvailable
());
// 保存优惠劵模板到数据库
CouponTemplateDO
template
=
CouponTemplateConvert
.
INSTANCE
.
convert
(
couponCardTemplateAddDTO
)
.
setType
(
CouponTemplateTypeEnum
.
CARD
.
getValue
())
.
setStatus
(
CouponTemplateStatusEnum
.
ENABLE
.
getValue
())
.
setStatFetchNum
(
0
);
template
.
setCreateTime
(
new
Date
());
couponTemplateMapper
.
insert
(
template
);
// 返回成功
return
CouponTemplateConvert
.
INSTANCE
.
convert
(
template
);
}
@Override
public
Boolean
updateCouponCodeTemplate
(
CouponCodeTemplateUpdateDTO
couponCodeTemplateUpdateDTO
)
{
return
null
;
}
@Override
public
Boolean
updateCouponCardTemplate
(
CouponCardTemplateUpdateDTO
couponCardTemplateUpdateDTO
)
{
// 校验 CouponCardTemplate 存在
CouponTemplateDO
template
=
couponTemplateMapper
.
selectById
(
couponCardTemplateUpdateDTO
.
getId
());
if
(
template
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
PromotionErrorCodeEnum
.
COUPON_TEMPLATE_NOT_EXISTS
.
getCode
());
}
// 校验 CouponCardTemplate 是 CARD
if
(!
CouponTemplateTypeEnum
.
CARD
.
getValue
().
equals
(
template
.
getType
()))
{
throw
ServiceExceptionUtil
.
exception
(
PromotionErrorCodeEnum
.
COUPON_TEMPLATE_NOT_CARD
.
getCode
());
}
// 校验发放数量不能减少
if
(
couponCardTemplateUpdateDTO
.
getTotal
()
<
template
.
getTotal
())
{
throw
ServiceExceptionUtil
.
exception
(
PromotionErrorCodeEnum
.
COUPON_TEMPLATE_TOTAL_CAN_NOT_REDUCE
.
getCode
());
}
// 更新优惠劵模板到数据库
CouponTemplateDO
updateTemplateDO
=
CouponTemplateConvert
.
INSTANCE
.
convert
(
couponCardTemplateUpdateDTO
);
couponTemplateMapper
.
update
(
updateTemplateDO
);
// 返回成功
return
true
;
}
@Override
public
Boolean
updateCouponTemplateStatus
(
Integer
adminId
,
Integer
couponTemplateId
,
Integer
status
)
{
// 校验 CouponCardTemplate 存在
CouponTemplateDO
template
=
couponTemplateMapper
.
selectById
(
couponTemplateId
);
if
(
template
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
PromotionErrorCodeEnum
.
COUPON_TEMPLATE_NOT_EXISTS
.
getCode
());
}
// 更新到数据库
CouponTemplateDO
updateTemplateDO
=
new
CouponTemplateDO
().
setId
(
couponTemplateId
).
setStatus
(
status
);
couponTemplateMapper
.
update
(
updateTemplateDO
);
// 返回成功
return
true
;
}
private
Boolean
checkCouponTemplateDateType
(
Integer
dateType
,
Date
validStartTime
,
Date
validEndTime
,
Integer
fixedBeginTerm
,
Integer
fixedEndTerm
)
{
if
(
CouponTemplateDateTypeEnum
.
FIXED_DATE
.
getValue
().
equals
(
dateType
))
{
// 固定日期
if
(
validStartTime
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"生效开始时间不能为空"
);
}
if
(
validEndTime
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"生效结束时间不能为空"
);
}
if
(
validStartTime
.
after
(
validEndTime
))
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"生效开始时间不能大于生效结束时间"
);
}
}
else
if
(
CouponTemplateDateTypeEnum
.
FIXED_TERM
.
getValue
().
equals
(
dateType
))
{
// 领取日期
if
(
fixedBeginTerm
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"领取日期开始时间不能为空"
);
}
if
(
fixedEndTerm
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"领取日期结束时间不能为空"
);
}
}
else
{
throw
new
IllegalArgumentException
(
"未知的生效日期类型:"
+
dateType
);
}
return
true
;
}
private
Boolean
checkCouponTemplatePreferentialType
(
Integer
preferentialType
,
Integer
percentOff
,
Integer
priceOff
,
Integer
priceAvailable
)
{
if
(
PreferentialTypeEnum
.
PRICE
.
getValue
().
equals
(
preferentialType
))
{
if
(
priceOff
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"优惠金额不能为空"
);
}
if
(
priceOff
>=
priceAvailable
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"优惠金额不能d大于等于使用金额门槛"
);
}
}
else
if
(
PreferentialTypeEnum
.
DISCOUNT
.
getValue
().
equals
(
preferentialType
))
{
if
(
percentOff
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"折扣百分比不能为空"
);
}
}
else
{
throw
new
IllegalArgumentException
(
"未知的优惠类型:"
+
preferentialType
);
}
return
true
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论