From cce6b8f23f0d686636768aa848d251afc540bdaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E5=85=88=E7=91=9E?= <1490493387@qq.com> Date: Mon, 11 Jul 2022 07:58:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E9=9D=A2=E5=80=BC=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=92=8C=E5=AF=B9=E5=BA=94=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/CouponFaceValueTypeEnum.java | 27 +++++++++++++++++++ .../mall/sms/common/utils/CouponUtils.java | 26 +++++++++++------- .../sms/converter/SmsCouponConverter.java | 9 ++++++- .../mall/sms/pojo/entity/SmsCoupon.java | 16 +++++++---- .../youlai/mall/sms/pojo/form/CouponForm.java | 14 +++++++--- 5 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/enums/CouponFaceValueTypeEnum.java diff --git a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/enums/CouponFaceValueTypeEnum.java b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/enums/CouponFaceValueTypeEnum.java new file mode 100644 index 00000000..442a459b --- /dev/null +++ b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/enums/CouponFaceValueTypeEnum.java @@ -0,0 +1,27 @@ +package com.youlai.mall.sms.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import com.youlai.common.base.IBaseEnum; +import lombok.Getter; + +@Getter +public enum CouponFaceValueTypeEnum implements IBaseEnum { + + CASH(1, "现金"), + DISCOUNT(2, "折扣"), + ; + + @Getter + @EnumValue // Mybatis-Plus 提供注解表示插入数据库时插入该值 + private Integer value; + + @Getter + @JsonValue // 表示对枚举序列化时返回此字段 + private String label; + + CouponFaceValueTypeEnum(Integer value, String label) { + this.value = value; + this.label = label; + } +} diff --git a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/utils/CouponUtils.java b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/utils/CouponUtils.java index 9c137619..245c7319 100644 --- a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/utils/CouponUtils.java +++ b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/common/utils/CouponUtils.java @@ -3,6 +3,7 @@ package com.youlai.mall.sms.common.utils; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import com.youlai.common.base.IBaseEnum; +import com.youlai.mall.sms.common.enums.CouponFaceValueTypeEnum; import com.youlai.mall.sms.common.enums.CouponTypeEnum; import com.youlai.mall.sms.common.enums.ValidityPeriodTypeEnum; @@ -15,23 +16,27 @@ public class CouponUtils { /** * 计算优惠券面值 * - * @param type + * @param faceValueType 面值类型 * @param faceValue * @param discount * @return */ - public static String getFaceValue(Integer type, Long faceValue, BigDecimal discount) { + public static String getFaceValue(Integer faceValueType, Long faceValue, BigDecimal discount) { String faceValueLabel = null; - CouponTypeEnum couponTypeEnum = IBaseEnum.getEnumByValue(type, CouponTypeEnum.class); - switch (couponTypeEnum) { - case ZK: - faceValueLabel = NumberUtil.mul(discount, 10) + "折"; + if (faceValueType == null) { + return null; + } + + CouponFaceValueTypeEnum couponFaceValueTypeEnum = IBaseEnum.getEnumByValue(faceValueType, CouponFaceValueTypeEnum.class); + switch (couponFaceValueTypeEnum) { + case CASH: + faceValueLabel = NumberUtil.toStr(NumberUtil.div(faceValue, new Float(100), 2)) + "元"; break; - case MJ: - case ZJ: - faceValueLabel = NumberUtil.div(faceValue, new Float(10000), 2) + "元"; + case DISCOUNT: + faceValueLabel = NumberUtil.mul(discount, 10) + "折"; break; + } return faceValueLabel; } @@ -48,6 +53,9 @@ public class CouponUtils { */ public static String getValidityPeriod(Integer validityPeriodType, Integer validityDays, Date validityBeginTime, Date validityEndTime) { String validityPeriodLabel = null; + if (validityPeriodType == null) { + return null; + } ValidityPeriodTypeEnum validityPeriodTypeEnum = IBaseEnum.getEnumByValue(validityPeriodType, ValidityPeriodTypeEnum.class); switch (validityPeriodTypeEnum) { case DATE_RANGE: diff --git a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/converter/SmsCouponConverter.java b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/converter/SmsCouponConverter.java index 544e9659..7ae86ad0 100644 --- a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/converter/SmsCouponConverter.java +++ b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/converter/SmsCouponConverter.java @@ -27,15 +27,22 @@ public interface SmsCouponConverter { target = "validityPeriodLabel", expression = "java(com.youlai.mall.sms.common.utils.CouponUtils.getValidityPeriod(entity.getValidityPeriodType(),entity.getValidityDays(),entity.getValidityBeginTime(),entity.getValidityBeginTime()))" ), - @Mapping(target = "minPointLabel", expression = "java(cn.hutool.core.util.NumberUtil.div(entity.getMinPoint(),new java.math.BigDecimal(10000)).setScale(2).toString())"), + @Mapping(target = "minPointLabel", expression = "java(cn.hutool.core.util.NumberUtil.toStr(cn.hutool.core.util.NumberUtil.div(entity.getMinPoint(),new java.math.BigDecimal(100)).setScale(2)))"), }) CouponPageVO entity2PageVO(SmsCoupon entity); List entity2PageVO(List entities); + + @Mappings({ + @Mapping(target = "discount",expression = "java(cn.hutool.core.util.NumberUtil.div(form.getDiscount(),10L))"), + }) SmsCoupon form2Entity(CouponForm form); + @Mappings({ + @Mapping(target = "discount",expression = "java(cn.hutool.core.util.NumberUtil.mul(entity.getDiscount(),10L))"), + }) CouponForm entity2Form(SmsCoupon entity); } \ No newline at end of file diff --git a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/entity/SmsCoupon.java b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/entity/SmsCoupon.java index 1c597b62..a34aa121 100644 --- a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/entity/SmsCoupon.java +++ b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/entity/SmsCoupon.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.youlai.common.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -24,14 +25,14 @@ public class SmsCoupon extends BaseEntity { private Long id; /** - * 优惠券名称 + * 优惠券类型(1:满减券;2:直减券;3:折扣券) */ - private String name; + private Integer type; /** - * 优惠券类型(1:满减券;2:直减券;3:折扣券) + * 优惠券名称 */ - private Integer type; + private String name; /** * 优惠券码 @@ -39,10 +40,15 @@ public class SmsCoupon extends BaseEntity { private String code; /** - * 使用平台(0-全平台;1-移动端;2-PC) + * 使用平台(0:全平台;1:移动端;2:PC端) */ private Integer platform; + /** + * 优惠券面值类型((1:金额;2:折扣) + */ + private Integer faceValueType; + /** * 优惠券面值金额(单位:分) */ diff --git a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/form/CouponForm.java b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/form/CouponForm.java index b3a41fe9..e152d3c2 100644 --- a/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/form/CouponForm.java +++ b/mall-sms/sms-boot/src/main/java/com/youlai/mall/sms/pojo/form/CouponForm.java @@ -1,5 +1,6 @@ package com.youlai.mall.sms.pojo.form; +import cn.hutool.core.util.NumberUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -27,6 +28,9 @@ public class CouponForm { @ApiModelProperty("优惠券类型(1:满减券;2:直减券;3:折扣券)") private Integer type; + @ApiModelProperty("优惠券面值类型((1:金额;2:折扣)") + private Integer faceValueType; + @ApiModelProperty("优惠券面值金额(单位:分)") private Long faceValue; @@ -42,13 +46,13 @@ public class CouponForm { @ApiModelProperty("发行量(-1:无限制)") private Integer circulation; - @ApiModelProperty("最低消费金额(0:无门槛)") + @ApiModelProperty("使用门槛(0:无门槛)") private Long minPoint; @ApiModelProperty("每人限领张数(-1:不限制)") private Integer perLimit; - @ApiModelProperty("有效期类型(1:自领取之日起有效天数;2:有效起止时间)") + @ApiModelProperty("有效期类型(1:日期范围;2:固定天数)") private Integer validityPeriodType; @ApiModelProperty("自领取之日起有效天数") @@ -60,7 +64,7 @@ public class CouponForm { @ApiModelProperty("有效期截止时间") private Date validityEndTime; - @ApiModelProperty("使用类型(0-全场通用;1-指定商品分类;2-指定商品)") + @ApiModelProperty("使用类型(0:全场通用;1:指定商品分类;2:指定商品)") private Integer useType; @ApiModelProperty("备注") @@ -96,4 +100,8 @@ public class CouponForm { private String spuName; } + + public static void main(String[] args) { + double div = NumberUtil.div(1L, 1L); + } } \ No newline at end of file -- GitLab