From 32b3d894b7cfaefb321d78a87f9756d9dc9b7558 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 04 九月 2024 11:18:55 +0800
Subject: [PATCH] add:会员保存成长值空值处理
---
src/main/java/com/mzl/flower/web/member/MemberController.java | 5 --
src/main/java/com/mzl/flower/mapper/member/MemberMapper.java | 3 +
src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java | 70 +++++++++++++++++++++++++++--------
src/main/java/com/mzl/flower/service/menber/MemberService.java | 2
src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java | 3 -
5 files changed, 60 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java b/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
index c1c6724..a4512be 100644
--- a/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
@@ -20,8 +20,7 @@
private int startPoint;
@ApiModelProperty("成长点-区间-结束")
- @NotNull
- private int endPoint;
+ private Integer endPoint;
@ApiModelProperty("会员折扣类型(百分比、固定金额)")
@NotNull
diff --git a/src/main/java/com/mzl/flower/mapper/member/MemberMapper.java b/src/main/java/com/mzl/flower/mapper/member/MemberMapper.java
index 7ba6090..9d705c4 100644
--- a/src/main/java/com/mzl/flower/mapper/member/MemberMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/member/MemberMapper.java
@@ -23,6 +23,9 @@
@Repository
public interface MemberMapper extends BaseMapper<Member> {
+ @Select("select * from t_member where end_point = #{endPoint} and deleted = '0' limit 1")
+ Member getEndPointByIntegerMaxValue(@Param("endPoint") Integer endPoint);
+
@Select("select * from t_member where name = #{name} and deleted = '0' limit 1")
Member getMemberByName(@Param("name") String name);
diff --git a/src/main/java/com/mzl/flower/service/menber/MemberService.java b/src/main/java/com/mzl/flower/service/menber/MemberService.java
index f32b26a..0d92a2d 100644
--- a/src/main/java/com/mzl/flower/service/menber/MemberService.java
+++ b/src/main/java/com/mzl/flower/service/menber/MemberService.java
@@ -11,7 +11,7 @@
public interface MemberService extends IService<Member> {
- void saveMember(Member member);
+ void saveMember(MemberDTO memberDTO);
void updateMember(MemberDTO memberDTO);
void deleteMember(String id);
diff --git a/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java b/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
index 1cb015c..16fcf32 100644
--- a/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
@@ -39,45 +39,58 @@
private final CustomerMapper customerMapper;
@Override
- public void saveMember(Member member) {
- if (StringUtils.isEmpty(member.getName())) {
+ public void saveMember(MemberDTO memberDTO) {
+ //是否已经存在endpoint已经有最大值了,有的话需要删除或者修改
+ if (memberDTO.getEndPoint() == null) {
+ Member pointByIntegerMaxValue = memberMapper.getEndPointByIntegerMaxValue(Integer.MAX_VALUE);
+ if (!ObjectUtils.isEmpty(pointByIntegerMaxValue)) {
+ throw new ValidationException("系统中已经有一条最大值或者空值记录,请删除或者修改再保存");
+ } else {
+ memberDTO.setEndPoint(Integer.MAX_VALUE);
+ }
+ }
+ if (StringUtils.isEmpty(memberDTO.getName())) {
throw new ValidationException("会员等级名称不能为空");
}
- if (StringUtils.isEmpty(member.getDiscountType())) {
+ if (StringUtils.isEmpty(memberDTO.getDiscountType())) {
throw new ValidationException("会员折扣类型不能为空");
}
- if (Constants.DISCOUNT_TYPE.amount.name().equals(member.getDiscountType()) && StringUtils.isEmpty(member.getDiscountAmount())) {
+ if (Constants.DISCOUNT_TYPE.amount.name().equals(memberDTO.getDiscountType()) && StringUtils.isEmpty(memberDTO.getDiscountAmount())) {
throw new ValidationException("会员折扣固定金额不能为空");
}
- if (Constants.DISCOUNT_TYPE.ratio.name().equals(member.getDiscountType()) && StringUtils.isEmpty(member.getDiscountRatio())) {
+ if (Constants.DISCOUNT_TYPE.ratio.name().equals(memberDTO.getDiscountType()) && StringUtils.isEmpty(memberDTO.getDiscountRatio())) {
throw new ValidationException("会员折扣百分比不能为空");
}
- if (member.getStartPoint() > member.getEndPoint()) {
- throw new ValidationException("成长点开始不能大于结束");
+
+ if (memberDTO.getStartPoint() > memberDTO.getEndPoint()) {
+ throw new ValidationException("成长点开始不能大于结束点");
}
- if (!StringUtils.isEmpty(member.getDiscountRatio())) {
- int discountRatio1 = member.getDiscountRatio().compareTo(BigDecimal.ZERO);
+ if (!StringUtils.isEmpty(memberDTO.getDiscountRatio())) {
+ int discountRatio1 = memberDTO.getDiscountRatio().compareTo(BigDecimal.ZERO);
if (discountRatio1 == -1) {
throw new ValidationException("会员折扣百分比不能小于0");
}
- int discountRatio2 = member.getDiscountRatio().compareTo(new BigDecimal(100));
+ int discountRatio2 = memberDTO.getDiscountRatio().compareTo(new BigDecimal(100));
if (discountRatio2 == 1) {
throw new ValidationException("会员折扣百分比不能大于100");
}
}
- if (!StringUtils.isEmpty(member.getDiscountAmount())) {
- int discountAmount = member.getDiscountAmount().compareTo(BigDecimal.ZERO);
+ if (!StringUtils.isEmpty(memberDTO.getDiscountAmount())) {
+ int discountAmount = memberDTO.getDiscountAmount().compareTo(BigDecimal.ZERO);
if (discountAmount == -1) {
throw new ValidationException("会员折扣固定金额不能小于0");
}
}
//保存时判断是否有重复的名称
- Member memberByName = memberMapper.getMemberByName(member.getName());
+ Member memberByName = memberMapper.getMemberByName(memberDTO.getName());
if (!ObjectUtils.isEmpty(memberByName)) {
throw new ValidationException("会员等级名称重复");
}
+ Member member = new Member();
+ BeanUtils.copyProperties(memberDTO, member);
+ member.create(SecurityUtils.getUserId());
memberMapper.insert(member);
//更新会员等级
customerMapper.updateMemberLevelByPoint(member.getId(), member.getStartPoint(), member.getEndPoint());
@@ -98,9 +111,6 @@
}
if (Constants.DISCOUNT_TYPE.ratio.name().equals(memberDTO.getDiscountType()) && StringUtils.isEmpty(memberDTO.getDiscountRatio())) {
throw new ValidationException("会员折扣百分比不能为空");
- }
- if (memberDTO.getStartPoint() > memberDTO.getEndPoint()) {
- throw new ValidationException("成长点开始不能大于结束");
}
if (!StringUtils.isEmpty(memberDTO.getDiscountRatio())) {
int discountRatio1 = memberDTO.getDiscountRatio().compareTo(BigDecimal.ZERO);
@@ -125,6 +135,34 @@
throw new ValidationException("已存在会员等级名称,无法修改");
}
}
+ //是否已经存在endpoint已经有最大值了,有的话需要删除或者修改
+// if (memberDTO.getEndPoint() == null && memberInfo.getEndPoint() != Integer.MAX_VALUE) {
+// Member pointByIntegerMaxValue = memberMapper.getEndPointByIntegerMaxValue(Integer.MAX_VALUE);
+// if (!ObjectUtils.isEmpty(pointByIntegerMaxValue)) {
+// throw new ValidationException("系统中已经有一条最大值或者空值记录,请删除或者修改再保存");
+// } else {
+// memberDTO.setEndPoint(Integer.MAX_VALUE);
+// }
+// } else if (memberDTO.getEndPoint() == null && memberInfo.getEndPoint() == Integer.MAX_VALUE) {
+// memberDTO.setEndPoint(Integer.MAX_VALUE);
+// }
+
+ if (memberDTO.getEndPoint() == null) {
+ if (memberInfo.getEndPoint() != Integer.MAX_VALUE) {
+ Member pointByIntegerMaxValue = memberMapper.getEndPointByIntegerMaxValue(Integer.MAX_VALUE);
+ if (!ObjectUtils.isEmpty(pointByIntegerMaxValue)) {
+ throw new ValidationException("系统中已经有一条最大值或者空值记录,请删除或者修改再保存");
+ } else {
+ memberDTO.setEndPoint(Integer.MAX_VALUE);
+ }
+ } else {
+ memberDTO.setEndPoint(Integer.MAX_VALUE);
+ }
+ }
+
+ if (memberDTO.getStartPoint() > memberDTO.getEndPoint()) {
+ throw new ValidationException("成长点开始不能大于结束");
+ }
//更新会员等级
if (memberInfo.getStartPoint() != memberDTO.getStartPoint() || memberInfo.getEndPoint() != memberDTO.getEndPoint()) {
customerMapper.updateMemberLevelByPoint(memberInfo.getId(), memberInfo.getStartPoint(), memberInfo.getEndPoint());
diff --git a/src/main/java/com/mzl/flower/web/member/MemberController.java b/src/main/java/com/mzl/flower/web/member/MemberController.java
index be871ab..db43198 100644
--- a/src/main/java/com/mzl/flower/web/member/MemberController.java
+++ b/src/main/java/com/mzl/flower/web/member/MemberController.java
@@ -54,10 +54,7 @@
@PostMapping(value = "/member/new")
@ApiOperation(value = "保存会员", httpMethod = "POST")
public ResponseEntity insert(@RequestBody MemberDTO memberDTO) {
- Member member = new Member();
- BeanUtils.copyProperties(memberDTO, member);
- member.create(SecurityUtils.getUserId());
- memberService.saveMember(member);
+ memberService.saveMember(memberDTO);
return returnData(R.SUCCESS.getCode(), null);
}
--
Gitblit v1.9.3