From 272188e47087a8ef92eb0a48b122fa1c73ea94d3 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期二, 24 九月 2024 00:15:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'remote-v2/master-v2' into master-v2 --- src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailDTO.java | 5 src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java | 8 src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java | 2 src/main/java/com/mzl/flower/service/payment/OrderService.java | 76 +++++ src/main/java/com/mzl/flower/dto/request/partner/ChangePartnerAreaDTO.java | 4 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java | 14 src/main/java/com/mzl/flower/dto/request/partner/UpdatePartnerBaseDTO.java | 24 + src/main/java/com/mzl/flower/dto/request/menber/UserGrowthRecordDTO.java | 3 src/main/java/com/mzl/flower/entity/partner/Partner.java | 4 src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java | 1 src/main/resources/mapper/flower/FlowerMapper.xml | 6 src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java | 28 + src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java | 34 ++ src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java | 27 + src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java | 6 src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java | 2 src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java | 5 src/main/java/com/mzl/flower/web/partner/PartnerController.java | 8 src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java | 3 src/main/java/com/mzl/flower/dto/response/payment/OrderSettlementDetailDTO.java | 2 src/main/java/com/mzl/flower/service/point/CustomerPointService.java | 8 src/main/resources/mapper/payment/OrderSettlementMapper.xml | 2 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java | 14 src/main/java/com/mzl/flower/dto/request/point/QueryPointDetailDTO.java | 14 + src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java | 9 src/main/java/com/mzl/flower/dto/response/member/MemberVO.java | 4 src/main/java/com/mzl/flower/web/supplier/DeliverySupplierController.java | 7 src/main/java/com/mzl/flower/dto/request/payment/OrderQueryDTO.java | 6 src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java | 6 src/main/java/com/mzl/flower/mapper/coupon/CouponRecordMapperCustom.java | 2 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java | 36 +- src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierDTO.java | 3 src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | 16 + src/main/java/com/mzl/flower/entity/menber/Member.java | 6 src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java | 3 src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java | 8 src/main/java/com/mzl/flower/dto/request/flower/FlowerQueryDTO.java | 3 src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java | 2 src/main/java/com/mzl/flower/service/flower/FlowerService.java | 25 + src/main/java/com/mzl/flower/web/login/SupplierLoginController.java | 5 src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java | 57 +++ src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java | 4 src/main/resources/mapper/point/CustomerPointMapper.xml | 12 src/main/resources/mapper/payment/OrderItemSalesMapper.xml | 2 src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml | 3 src/main/java/com/mzl/flower/dto/request/menber/TargetMemberDTO.java | 3 src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java | 1 src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java | 4 src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java | 4 src/main/java/com/mzl/flower/schedule/ScheduleService.java | 26 ++ src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java | 4 src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java | 9 src/main/java/com/mzl/flower/service/partner/PartnerService.java | 77 +++++ src/main/java/com/mzl/flower/service/point/PointGoodsService.java | 4 src/main/resources/mapper/payment/OrderMapper.xml | 14 src/main/resources/mapper/flower/FlowerCategoryMapper.xml | 29 ++ src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java | 8 src/main/resources/mapper/payment/OrderSettlementDetailMapper.xml | 2 src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java | 14 + src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java | 6 src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java | 20 + src/main/java/com/mzl/flower/web/point/CustomerPointController.java | 6 src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java | 2 src/main/java/com/mzl/flower/dto/request/payment/DeliveryOrderQueryDTO.java | 3 src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml | 3 65 files changed, 664 insertions(+), 94 deletions(-) diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java index fd49d0e..6e2b34e 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java @@ -6,10 +6,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -113,6 +110,8 @@ */ @ApiModelProperty(value = "使用条件,满多少钱") @NotNull(message = "使用条件不能为空") + @Max(value = 99999999,message = "使用条件不能超过99999999") +// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0") private BigDecimal minOrderAmount; /** @@ -120,6 +119,8 @@ */ @ApiModelProperty(value = "优惠券面值") @NotNull(message = "优惠券面值不能为空") + @DecimalMin(value = "0.01", inclusive = true,message = "优惠券面值大于0") + @Max(value = 99999999,message = "优惠券面值不能超过99999999") private BigDecimal couponDiscountValue; diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java index 436ce5c..4c42fa6 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java @@ -4,10 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; import java.math.BigDecimal; /** @@ -64,6 +61,7 @@ @ApiModelProperty(value = "使用条件") @NotNull(message = "使用条件不能为空") @Max(value = 99999999,message = "使用条件不能超过99999999") +// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0") private BigDecimal minOrderAmount; /** @@ -71,7 +69,7 @@ */ @ApiModelProperty(value = "优惠券面值") @NotNull(message = "优惠券面值不能为空") - @Min(value = 1,message = "优惠券面值大于0") + @DecimalMin(value = "0.01", inclusive = true,message = "优惠券面值大于0") @Max(value = 99999999,message = "优惠券面值不能超过99999999") private BigDecimal couponDiscountValue; diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java index 1af6f04..bee84cf 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java @@ -4,10 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.List; @@ -62,6 +59,7 @@ @ApiModelProperty(value = "使用条件") @NotNull(message = "使用条件不能为空") @Max(value = 99999999,message = "使用条件不能超过99999999") +// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0") private BigDecimal minOrderAmount; /** @@ -69,7 +67,7 @@ */ @ApiModelProperty(value = "优惠券面值") @NotNull(message = "优惠券面值不能为空") - @Min(value = 1,message = "优惠券面值大于0") + @DecimalMin(value = "0.01", inclusive = true,message = "优惠券面值大于0") @Max(value = 99999999,message = "优惠券面值不能超过99999999") private BigDecimal couponDiscountValue; diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java index c06c539..96a9138 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.DecimalMin; import javax.validation.constraints.Max; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -43,6 +44,7 @@ @ApiModelProperty(value = "优惠券面值") @NotNull(message = "优惠券面值不能为空") @Max(value = 99999999,message = "优惠券面值不能超过99999999") + @DecimalMin(value = "0.01", inclusive = true,message = "优惠券面值大于0") private BigDecimal couponDiscountValue; /** @@ -51,6 +53,7 @@ @ApiModelProperty(value = "使用条件") @NotNull(message = "使用条件不能为空") @Max(value = 99999999,message = "使用条件不能超过99999999") +// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0") private BigDecimal minOrderAmount; diff --git a/src/main/java/com/mzl/flower/dto/request/flower/FlowerQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/flower/FlowerQueryDTO.java index 6fb8dd4..3e78500 100644 --- a/src/main/java/com/mzl/flower/dto/request/flower/FlowerQueryDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/flower/FlowerQueryDTO.java @@ -36,4 +36,7 @@ @ApiModelProperty(hidden = true) private List<String> statusList; + + @ApiModelProperty(value = "是否限购") + private Boolean isLimited; } 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 bd069ad..8bad763 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 @@ -1,6 +1,5 @@ package com.mzl.flower.dto.request.menber; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -56,4 +55,8 @@ @NotNull private String pictures; + @ApiModelProperty(value = "会员成长值获取规则") + @NotNull + private String growthValueDesc; + } diff --git a/src/main/java/com/mzl/flower/dto/request/menber/TargetMemberDTO.java b/src/main/java/com/mzl/flower/dto/request/menber/TargetMemberDTO.java index 4ba60c8..7052bc4 100644 --- a/src/main/java/com/mzl/flower/dto/request/menber/TargetMemberDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/menber/TargetMemberDTO.java @@ -29,5 +29,8 @@ @ApiModelProperty("会员折扣百分比") private BigDecimal targetDiscountRatio; + @ApiModelProperty("折扣类型Str") + private String targetGrowthValueDesc; + } diff --git a/src/main/java/com/mzl/flower/dto/request/menber/UserGrowthRecordDTO.java b/src/main/java/com/mzl/flower/dto/request/menber/UserGrowthRecordDTO.java index 4281ed3..dd26e4a 100644 --- a/src/main/java/com/mzl/flower/dto/request/menber/UserGrowthRecordDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/menber/UserGrowthRecordDTO.java @@ -26,6 +26,9 @@ @ApiModelProperty("会员折扣百分比") private BigDecimal currentDiscountRatio; + @ApiModelProperty("会员成长值获取规则") + private String currentGrowthValueDesc; + List<TargetMemberDTO> targetMemberInfos; } diff --git a/src/main/java/com/mzl/flower/dto/request/partner/ChangePartnerAreaDTO.java b/src/main/java/com/mzl/flower/dto/request/partner/ChangePartnerAreaDTO.java index f0d0f09..74ddf4e 100644 --- a/src/main/java/com/mzl/flower/dto/request/partner/ChangePartnerAreaDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/partner/ChangePartnerAreaDTO.java @@ -20,4 +20,8 @@ @ApiModelProperty("服务区域-区") private String region; + + private String name; + + private String contactTel; } diff --git a/src/main/java/com/mzl/flower/dto/request/partner/UpdatePartnerBaseDTO.java b/src/main/java/com/mzl/flower/dto/request/partner/UpdatePartnerBaseDTO.java new file mode 100644 index 0000000..0e13eec --- /dev/null +++ b/src/main/java/com/mzl/flower/dto/request/partner/UpdatePartnerBaseDTO.java @@ -0,0 +1,24 @@ +package com.mzl.flower.dto.request.partner; + +import com.mzl.flower.dto.AttachmentDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class UpdatePartnerBaseDTO { + + private Long id; + + @ApiModelProperty("名称") + private String name; + +// @ApiModelProperty("联系方式") +// private String contactTel; + + @ApiModelProperty("头像") + private String cover; + + +} diff --git a/src/main/java/com/mzl/flower/dto/request/payment/DeliveryOrderQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/payment/DeliveryOrderQueryDTO.java index 19cd596..52d189e 100644 --- a/src/main/java/com/mzl/flower/dto/request/payment/DeliveryOrderQueryDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/payment/DeliveryOrderQueryDTO.java @@ -15,6 +15,9 @@ @ApiModelProperty(value = "配送单状态; DELIVERY_ORDER_STATUS") private String status; + @ApiModelProperty(value = "日期") + private String date; + @ApiModelProperty(hidden = true) private LocalDateTime startDate; diff --git a/src/main/java/com/mzl/flower/dto/request/payment/OrderQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/payment/OrderQueryDTO.java index ca40541..4086af8 100644 --- a/src/main/java/com/mzl/flower/dto/request/payment/OrderQueryDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/payment/OrderQueryDTO.java @@ -73,4 +73,10 @@ @ApiModelProperty(value = "收货地址详细地址(拼接省市区地址)") private String address; + + @ApiModelProperty(hidden = true) + private boolean customerQuery = false; + + @ApiModelProperty(value = "库位") + private String warehouseLocationCode; } diff --git a/src/main/java/com/mzl/flower/dto/request/point/QueryPointDetailDTO.java b/src/main/java/com/mzl/flower/dto/request/point/QueryPointDetailDTO.java index f236ea1..1d27807 100644 --- a/src/main/java/com/mzl/flower/dto/request/point/QueryPointDetailDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/point/QueryPointDetailDTO.java @@ -4,6 +4,7 @@ import lombok.Data; import java.time.LocalDate; +import java.time.LocalDateTime; @Data public class QueryPointDetailDTO { @@ -25,4 +26,17 @@ @ApiModelProperty(hidden = true) private String userId; + + @ApiModelProperty("yyyy-MM-dd HH:mm:ss") + private String createTimeStartStr; + + @ApiModelProperty("yyyy-MM-dd HH:mm:ss") + private String createTimeEndStr; + + + @ApiModelProperty(hidden = true) + private LocalDateTime createTimeStart; + + @ApiModelProperty(hidden = true) + private LocalDateTime createTimeEnd; } diff --git a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java index 1e25aea..340e8ff 100644 --- a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java +++ b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java @@ -132,4 +132,18 @@ private LocalDateTime createTime; + /** + * 已经领取数 + */ + @ApiModelProperty(value = "已经领取数") + private Integer getNum; + + /** + * 未领取数 + */ + @ApiModelProperty(value = "未领取数") + private Integer unGetNum; + + + } diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java index 93ababc..d9f9c08 100644 --- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java @@ -67,4 +67,6 @@ @ApiModelProperty(value = "级别限制") private String levelLimit; + + private Integer childrenCount; } diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierDTO.java index a7b3869..fd49473 100644 --- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerSupplierDTO.java @@ -59,4 +59,7 @@ @ApiModelProperty(value = "描述") private String description; + @ApiModelProperty(value = "库存") + private Integer limited; + } diff --git a/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java b/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java index 30aa7ca..8e197f1 100644 --- a/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java +++ b/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java @@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -57,4 +56,7 @@ @ApiModelProperty("图片") private String pictures; + + @ApiModelProperty(value = "会员成长值获取规则") + private String growthValueDesc; } diff --git a/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java b/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java index f57ed7c..b71392a 100644 --- a/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java @@ -67,4 +67,8 @@ @ApiModelProperty("启用/禁用") private Boolean isEnabled; + + @ApiModelProperty("头像") + private String cover; + } diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java index 7ae63c5..b2a330e 100644 --- a/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java @@ -164,4 +164,12 @@ private BigDecimal memberDiscountAmount; private List<OrderItemListDTO> items; + + @ApiModelProperty(value = "优惠券类型(discount_type)") + @DictTrans(target = "couponDiscountTypeName",codeType = "COUPON_TYPE") + private String couponDiscountType; + private String couponDiscountTypeName; + + @ApiModelProperty(value = " 使用条件(满多少钱)") + private String minOrderAmount; } diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java index 4a08e76..131ee9a 100644 --- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java @@ -68,4 +68,10 @@ @ApiModelProperty(value = "缺货数量") private Integer lackNum; + + @ApiModelProperty(value = "优惠券总金额") + private BigDecimal couponAmountTotal; + + @ApiModelProperty(value = "真实成交总价格") + private BigDecimal realTotal; } diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java index f55e432..a91666f 100644 --- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java @@ -37,4 +37,13 @@ @ApiModelProperty(value = "下单时间") private LocalDateTime orderTime; + @ApiModelProperty(value = "降级数量") + private Integer reduceNum; + + @ApiModelProperty(value = "降级金额") + private BigDecimal reduceAmount; + + @ApiModelProperty(value = "补货数量") + private Integer replaceNum; + } diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java index 0a30d16..406528e 100644 --- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewListDTO.java @@ -101,4 +101,10 @@ @DictTrans(target = "salesTypeStr", codeType = "after_sale_type") private String salesType; private String salesTypeStr; + + @ApiModelProperty(value = "真实成交价格/每扎") + private BigDecimal realPrice; + + @ApiModelProperty(value = "真实成交总价格") + private BigDecimal realTotal; } diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderSettlementDetailDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderSettlementDetailDTO.java index dc86c02..75794f2 100644 --- a/src/main/java/com/mzl/flower/dto/response/payment/OrderSettlementDetailDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderSettlementDetailDTO.java @@ -55,4 +55,6 @@ @ApiModelProperty(value = "订单号") private String orderNo; + + private String orderId; } diff --git a/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailDTO.java b/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailDTO.java index 1ab3855..ae402ff 100644 --- a/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailDTO.java +++ b/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailDTO.java @@ -6,9 +6,12 @@ import lombok.Data; import java.time.LocalDate; +import java.time.LocalDateTime; @Data public class CustomerPointDetailDTO extends AbstractTransDTO { + + private Long id; @ApiModelProperty("记录日期") private LocalDate recordDate; @@ -39,4 +42,6 @@ @ApiModelProperty("积分备注") private String remarks; + @ApiModelProperty("创建时间") + private LocalDateTime createTime; } diff --git a/src/main/java/com/mzl/flower/entity/menber/Member.java b/src/main/java/com/mzl/flower/entity/menber/Member.java index b23f218..29afe94 100644 --- a/src/main/java/com/mzl/flower/entity/menber/Member.java +++ b/src/main/java/com/mzl/flower/entity/menber/Member.java @@ -1,12 +1,10 @@ package com.mzl.flower.entity.menber; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.mzl.flower.base.BaseAutoEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotNull; import java.math.BigDecimal; /** @@ -52,4 +50,8 @@ @ApiModelProperty("图片") private String pictures; + + @ApiModelProperty(value = "会员成长值获取规则") + private String growthValueDesc; + } diff --git a/src/main/java/com/mzl/flower/entity/partner/Partner.java b/src/main/java/com/mzl/flower/entity/partner/Partner.java index 805f960..7857853 100644 --- a/src/main/java/com/mzl/flower/entity/partner/Partner.java +++ b/src/main/java/com/mzl/flower/entity/partner/Partner.java @@ -55,4 +55,8 @@ @ApiModelProperty("启用/禁用") private Boolean isEnabled; + + @ApiModelProperty("头像") + private String cover; + } diff --git a/src/main/java/com/mzl/flower/mapper/coupon/CouponRecordMapperCustom.java b/src/main/java/com/mzl/flower/mapper/coupon/CouponRecordMapperCustom.java index 2cc46fa..b841917 100644 --- a/src/main/java/com/mzl/flower/mapper/coupon/CouponRecordMapperCustom.java +++ b/src/main/java/com/mzl/flower/mapper/coupon/CouponRecordMapperCustom.java @@ -34,4 +34,6 @@ List<CouponRecordVO> getMineCouponRecordList(@Param("param") QueryMineCouponRecordDTO dto); void checkCouponExpired(@Param("param") QueryMineCouponRecordDTO dto); + + boolean expireCouponRecordAll(); } diff --git a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java index f8b8327..66fe43f 100644 --- a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java +++ b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java @@ -65,4 +65,6 @@ CouponTemplateVO getHomeActivityEffectAlert(@Param("param") QueryActivityEffectCouponDTO dto); void expireHomeActivityCouponTemplate(); + + int expireActivityCouponTemplateAll(); } diff --git a/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java b/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java index f8f58c9..ec0137a 100644 --- a/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java +++ b/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java @@ -14,6 +14,8 @@ @Repository public interface FlowerCategoryMapper extends BaseMapper<FlowerCategory> { + List<FlowerCategoryTreeDTO> selectCategoryList(@Param("condition") FlowerCategoryQueryDTO dto); + List<FlowerCategoryTreeDTO> selectTreeList(@Param("condition") FlowerCategoryQueryDTO dto); void clearParamByParamId(@Param("paramId") Long paramId); diff --git a/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java b/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java index a893c08..6dd5dc4 100644 --- a/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java +++ b/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java @@ -50,5 +50,6 @@ "LEFT JOIN t_customer_info c ON t1.create_by = c.user_id ") List<Order> getOrderInfoByReceiveTime(); - Integer getFlowerCompleteNumToday(@Param("userId") String userId,@Param("flowerId") Long flowerId); + int getFlowerCompleteNumWithinTimeRange(@Param("userId") String userId ,@Param("flowerId") Long flowerId, + @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); } diff --git a/src/main/java/com/mzl/flower/schedule/ScheduleService.java b/src/main/java/com/mzl/flower/schedule/ScheduleService.java index 6130515..109e14c 100644 --- a/src/main/java/com/mzl/flower/schedule/ScheduleService.java +++ b/src/main/java/com/mzl/flower/schedule/ScheduleService.java @@ -12,6 +12,7 @@ import com.mzl.flower.mapper.partner.PartnerMapper; import com.mzl.flower.mapper.payment.OrderMapper; import com.mzl.flower.service.coupon.CouponRecordService; +import com.mzl.flower.service.coupon.CouponTemplateService2; import com.mzl.flower.service.flower.FlowerCategoryService; import com.mzl.flower.service.flower.FlowerService; import com.mzl.flower.service.menber.impl.GrowthValueDealService; @@ -70,6 +71,9 @@ @Autowired private MemberGrowthRecordMapper memberGrowthRecordMapper; + + @Autowired + private CouponTemplateService2 couponTemplateService2; @Scheduled(cron = "1 0/30 * * * ?") public void calculateAvePrice() { @@ -240,4 +244,26 @@ } + @Scheduled(cron = "0 0/5 * * * ?") + public void expireActivityCouponTemplateAll() { + log.info("优惠券模版过期下架开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); + + // 下架有所的过期的优惠券 + couponTemplateService2.expireActivityCouponTemplateAll(); + + log.info("优惠券模版过期下架开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); + } + + @Scheduled(cron = "0 0/5 * * * ?") + public void expireCouponRecordAll() { + log.info("优惠券记录过期开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); + + // 下架有所的过期的优惠券 + couponRecordService.expireCouponRecordAll(); + + log.info("优惠券记录过期开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); + } + + + } diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java index a416242..8298870 100644 --- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java +++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java @@ -120,4 +120,5 @@ boolean checkUserCouponExists(String couponId, Long customId); + boolean expireCouponRecordAll(); } diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java index b33de57..766eda0 100644 --- a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java +++ b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java @@ -100,4 +100,5 @@ */ CouponTemplateVO getHomeActivityEffectAlert(QueryActivityEffectCouponDTO dto); + boolean expireActivityCouponTemplateAll(); } diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java b/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java index 41f590e..b90f6c8 100644 --- a/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java +++ b/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java @@ -122,6 +122,10 @@ return dto; } + public List<FlowerCategoryTreeDTO> selectCategoryList(FlowerCategoryQueryDTO dto){ + return categoryMapper.selectCategoryList(dto); + } + public List<FlowerCategoryTreeDTO> selectCategoryTree(FlowerCategoryQueryDTO dto) { List<FlowerCategoryTreeDTO> treeList = categoryMapper.selectTreeList(dto); treeList = (List<FlowerCategoryTreeDTO>) TreeBuilderUtil.buildListToTree(treeList); diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerService.java b/src/main/java/com/mzl/flower/service/flower/FlowerService.java index d89cd66..9cc9169 100644 --- a/src/main/java/com/mzl/flower/service/flower/FlowerService.java +++ b/src/main/java/com/mzl/flower/service/flower/FlowerService.java @@ -215,6 +215,7 @@ } else { g.setPrice(dto.getPrice()); g.setStock(dto.getStock()); + g.setLimited(dto.getLimited()); } g.update(SecurityUtils.getUserId()); @@ -246,7 +247,17 @@ public Long editFlowerAdmin(FlowerUpdateAdminDTO dto){ Flower g = flowerMapper.selectById(dto.getId()); g.setSales(dto.getSales()); - g.setLimited(dto.getLimited()); + if (!org.springframework.util.StringUtils.isEmpty(dto.getLimited())) { + if (g.getStock() == 0 || org.springframework.util.StringUtils.isEmpty(g.getStock())) { + throw new ValidationException("库存为0或者空时不能修改限购数量"); + } + if(g.getStock()<dto.getLimited()){ + throw new ValidationException("限购数量不能大于库存"); + } + g.setLimited(dto.getLimited()); + }else{ + g.setLimited(null); + } g.update(SecurityUtils.getUserId()); flowerMapper.updateById(g); @@ -883,7 +894,17 @@ } for (Long id : ids) { Flower f = flowerMapper.selectById(id); - f.setLimited(dto.getLimited()); + if (!org.springframework.util.StringUtils.isEmpty(dto.getLimited())) { + if (f.getStock() == 0 || org.springframework.util.StringUtils.isEmpty(f.getStock())) { + throw new ValidationException("商品" + f.getName() + "库存为0或者空时不能修改限购数量"); + } + if(f.getStock()<dto.getLimited()){ + throw new ValidationException("商品" + f.getName() + "限购数量不能大于库存"); + } + f.setLimited(dto.getLimited()); + }else{ + f.setLimited(null); + } flowerMapper.updateById(f); } } diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java index 573ebaf..aef2357 100644 --- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java @@ -95,15 +95,29 @@ // 获取锁,最多等待 10 秒,锁自动释放时间 30 秒 if (lock.tryLock(10, 30, TimeUnit.SECONDS)) { try { - // 活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发 - if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && ( - couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) || couponTemplateDO.getCategory().equals(CouponCategoryEnum.POINT.getStatus()) - )){ + // 活动优惠券 根据优惠券的发放数量来控制有没有超发 + if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && + couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) + ){ // 获取当前优惠券已经领取的数量 final Integer gainTotal = getExistGainCouponRecordAmountById(couponTemplateDO.getId()); if(couponTemplateDO.getCouponAmount().compareTo(gainTotal)<=0){ throw new ValidationException("当前优惠券已经领完!"); } + } + if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) + && couponTemplateDO.getCategory().equals(CouponCategoryEnum.POINT.getStatus() + )){ + // 获取当前优惠券已经领取的数量 + + if(couponTemplateDO.getCouponAmount()<=0){ + throw new ValidationException("当前优惠券已经领完!"); + }else{ + couponTemplateDO.setCouponAmount(couponTemplateDO.getCouponAmount()-1); + // 更新库存 + couponTemplateService.updateById(couponTemplateDO); + } + } // 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券 @@ -549,4 +563,10 @@ ; return baseMapper.selectCount(queryWrapper)>0; } + + @Override + public boolean expireCouponRecordAll() { + + return couponRecordMapperCustom.expireCouponRecordAll(); + } } diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java index b33c44a..6e46180 100644 --- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java +++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java @@ -421,7 +421,9 @@ if(couponTemplateDO==null){ throw new ValidationException("优惠券不存在"); } - + if(couponTemplateDO.getCouponAmount()<=0 ){ + throw new ValidationException("优惠券已兑换完"); + } CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>() .eq(CustomerPoint::getUserId, SecurityUtils.getUserId())); if(cp == null || (cp.getTotalPoint()-cp.getUsedPoint()-cp.getExpiredPoint()- cp.getExpiredPoint()) < couponTemplateDO.getPoint() * dto.getNum()){ @@ -439,6 +441,10 @@ recordDTO.setCustomerId(customer.getId()); couponRecordService.createCouponRecord(recordDTO); +// //更新优惠券数量 +// couponTemplateDO.setCouponAmount(couponTemplateDO.getCouponAmount()-dto.getNum()); +// couponTemplateService.updateById(couponTemplateDO); + //更新积分汇总 cp.setUsedPoint(cp.getUsedPoint()+couponTemplateDO.getPoint()); customerPointMapper.updateById(cp); @@ -454,8 +460,6 @@ detail.setRemarks(couponTemplateDO.getCouponName()); detail.create(SecurityUtils.getUserId()); customerPointDetailMapper.insert(detail); - }catch (Exception e){ - throw new ValidationException("兑换失败"); }finally { lockService.releaseObjectLock(key,""); } @@ -485,6 +489,12 @@ } @Override + public boolean expireActivityCouponTemplateAll() { + + return couponTemplateMapperCustom.expireActivityCouponTemplateAll()>0; + } + + @Override public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) { return couponTemplateMapperCustom.getActivityEffectList(dto); diff --git a/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java index 34b83f9..defb2a4 100644 --- a/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java @@ -160,6 +160,7 @@ } userGrowthRecordDTO.setCurrentDiscountRatio(StringUtils.isEmpty(member.getDiscountRatio()) ? BigDecimal.valueOf(100) : member.getDiscountRatio()); userGrowthRecordDTO.setCurrentDiscountAmount(StringUtils.isEmpty(member.getDiscountAmount()) ? BigDecimal.ZERO : member.getDiscountAmount()); + userGrowthRecordDTO.setCurrentGrowthValueDesc(member.getGrowthValueDesc()); //查询比当前等级高的会员等级信息 List<Member> memberList = memberMapper.getgtMembersByGrowthValue(sumGrowth); if (!CollectionUtils.isEmpty(memberList)) { @@ -179,6 +180,7 @@ break; } targetMemberDTO.setTargetDiscountRatio(StringUtils.isEmpty(m.getDiscountRatio()) ? BigDecimal.valueOf(100) : m.getDiscountRatio()); + targetMemberDTO.setTargetGrowthValueDesc(m.getGrowthValueDesc()); targetMemberDTOList.add(targetMemberDTO); }); } 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 fef0691..9cf0d44 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 @@ -101,7 +101,7 @@ member.create(SecurityUtils.getUserId()); memberMapper.insert(member); //更新会员等级 - customerMapper.updateMemberLevelByPoint(member.getId(), member.getStartPoint(), member.getEndPoint()); + customerMapper.updateMemberLevelByPoint(member.getId(), memberDTO.getStartPoint(), memberDTO.getEndPoint()); } @@ -182,7 +182,7 @@ //更新会员等级 if (memberInfo.getStartPoint() != memberDTO.getStartPoint() || memberInfo.getEndPoint() != memberDTO.getEndPoint()) { - customerMapper.updateMemberLevelByPoint(memberInfo.getId(), memberInfo.getStartPoint(), memberInfo.getEndPoint()); + customerMapper.updateMemberLevelByPoint(memberInfo.getId(), memberDTO.getStartPoint(), memberDTO.getEndPoint()); } BeanUtils.copyProperties(memberDTO,memberInfo); diff --git a/src/main/java/com/mzl/flower/service/partner/PartnerService.java b/src/main/java/com/mzl/flower/service/partner/PartnerService.java index f0f110e..69a2141 100644 --- a/src/main/java/com/mzl/flower/service/partner/PartnerService.java +++ b/src/main/java/com/mzl/flower/service/partner/PartnerService.java @@ -10,10 +10,12 @@ import com.mzl.flower.dto.request.partner.*; import com.mzl.flower.dto.response.partner.PartnerDTO; import com.mzl.flower.entity.partner.Partner; -import com.mzl.flower.entity.supplier.Supplier; +import com.mzl.flower.entity.system.User; import com.mzl.flower.mapper.partner.PartnerMapper; +import com.mzl.flower.mapper.system.UserMapper; import com.mzl.flower.service.BaseService; import com.mzl.flower.service.UploadService; +import com.mzl.flower.service.system.UserService; import com.mzl.flower.utils.DateUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -39,6 +41,8 @@ private final PartnerMapper partnerMapper; + private final UserMapper userMapper; + private final WxMaService maService; @@ -48,8 +52,9 @@ @Resource private BaseService baseService; - public PartnerService(PartnerMapper partnerMapper, WxMaService maService, UploadService uploadService) { + public PartnerService(PartnerMapper partnerMapper, UserMapper userMapper, WxMaService maService, UploadService uploadService) { this.partnerMapper = partnerMapper; + this.userMapper = userMapper; this.maService = maService; this.uploadService = uploadService; } @@ -59,6 +64,22 @@ if(dto.getId()==null){ //注册 if(checkExist(dto.getUserId())){ throw new ValidationException("合伙人信息已登记"); + } + if(StringUtils.isNotBlank(dto.getContactTel()) && StringUtils.isNotBlank(dto.getUserId())){ + //验证手机号 + User user = userMapper.selectById(dto.getUserId()); + if(user==null){ + throw new ValidationException("合伙人账号信息不存在"); + } + if(userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getTel, dto.getContactTel()) + .eq(User::getType, Constants.USER_TYPE.partner.name()) + .ne(User::getId, dto.getUserId()) + .eq(User::getDeleted, 0) + )>0){ + throw new ValidationException("手机号已被注册使用"); + } + user.setTel(dto.getContactTel()); + userMapper.updateById(user); } partner = new Partner(); BeanUtils.copyProperties(dto, partner,"id"); @@ -71,6 +92,23 @@ partner = partnerMapper.selectById(dto.getId()); if(partner==null){ throw new ValidationException("合伙人信息未登记"); + } + if(StringUtils.isNotBlank(dto.getContactTel()) && !partner.getContactTel().equals(dto.getContactTel())){ + //验证手机号 + User user = userMapper.selectById(partner.getUserId()); + if(user==null){ + throw new ValidationException("合伙人账号信息不存在"); + } + if(userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getTel, dto.getContactTel()) + .eq(User::getType, Constants.USER_TYPE.partner.name()) + .ne(User::getId, partner.getUserId()) + .eq(User::getDeleted, 0) + )>0){ + throw new ValidationException("手机号已被注册使用"); + } + user.setTel(dto.getContactTel()); + partner.setContactTel(dto.getContactTel()); + userMapper.updateById(user); } BeanUtils.copyProperties(dto, partner,"id"); partner.setIdCards(JSON.toJSONString(dto.getIdCards())); @@ -135,8 +173,32 @@ partner.setProvince(dto.getProvince()); partner.setCity(dto.getCity()); partner.setRegion(dto.getRegion()); + if(StringUtils.isNotBlank(dto.getName())){ + partner.setName(dto.getName()); + } + if(StringUtils.isNotBlank(dto.getContactTel()) && !partner.getContactTel().equals(dto.getContactTel())){ + //验证手机号 + User user = userMapper.selectById(partner.getUserId()); + if(user==null){ + throw new ValidationException("合伙人账号信息不存在"); + } + if(userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getTel, dto.getContactTel()) + .eq(User::getType, Constants.USER_TYPE.partner.name()) + .ne(User::getId, partner.getUserId()) + .eq(User::getDeleted, 0) + )>0){ + throw new ValidationException("手机号已被注册使用"); + } + user.setTel(dto.getContactTel()); + partner.setContactTel(dto.getContactTel()); + userMapper.updateById(user); + } partner.update(SecurityUtils.getUserId()); partnerMapper.updateById(partner); + + + + } public String generateCodeDTO(GenerateCodeDTO dto) { try { @@ -184,4 +246,15 @@ partner.update(SecurityUtils.getUserId()); partnerMapper.updateById(partner); } + + public void baseUpdate(UpdatePartnerBaseDTO dto) { + Partner partner = partnerMapper.selectById(dto.getId()); + if(partner==null){ + throw new ValidationException("合伙人信息未登记"); + } + BeanUtils.copyProperties(dto, partner,"id"); + partner.update(SecurityUtils.getUserId()); + partnerMapper.updateById(partner); + } + } diff --git a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java index f7466d1..b7727a5 100644 --- a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java +++ b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java @@ -120,7 +120,14 @@ public Page<DeliveryOrderListDTO> selectDeliveryOrderList(Page page, DeliveryOrderQueryDTO dto) { Supplier s = getCurrentSupplier(); - dto.setStatusList(splitParam(dto.getStatus())); + if(Constants.DELIVERY_ORDER_STATUS.ARRIVED.name().equals(dto.getStatus())){ + List<String> statusLs = new ArrayList<>(); + statusLs.add(Constants.DELIVERY_ORDER_STATUS.ARRIVED.name()); + statusLs.add(Constants.DELIVERY_ORDER_STATUS.CHECKED.name()); + dto.setStatusList(statusLs); + } else { + dto.setStatusList(splitParam(dto.getStatus())); + } List<DeliveryOrderListDTO> ls = deliveryOrderMapper.selectDoList(page, s.getId(), dto); if (ls != null && ls.size() > 0) { List<String> dIds = new ArrayList<>(); @@ -573,7 +580,7 @@ orderItemSettlementService.saveItemSettlementInfo(oi, SecurityUtils.getUserId(), Constants.S_TYPE.CHECK); } - private BigDecimal calculateOrderItemDeduct(String id){ + public BigDecimal calculateOrderItemDeduct(String id){ List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>() .eq("order_item_id", id) .eq("audit_status", Constants.CHECK_AUDIT_STATUS.AGREED.name()) @@ -650,6 +657,16 @@ throw new ValidationException("处理数量不能大于商品数量"); } + Order o = orderMapper.selectById(oi.getOrderId()); + if(StringUtils.isNotEmpty(o.getTransferId())){ + throw new ValidationException("已质检退款,不可提交质检记录"); + } + + if(!Constants.ORDER_STATUS_BACKEND.COLLECTION.name().equals(o.getStatusBackend()) + && !Constants.ORDER_STATUS_BACKEND.SEND.name().equals(o.getStatusBackend())){ + throw new ValidationException("订单状态异常,不可提交质检记录"); + } + List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>() .ne("type", dto.getType()) .eq("order_item_id", dto.getOrderItemId()) @@ -686,7 +703,11 @@ BigDecimal dt = realPrice.multiply(new BigDecimal(dto.getNum())); if(deduct.doubleValue() > dt.doubleValue() || (oi.getRealTotal() != null && deduct.doubleValue() > oi.getRealTotal().doubleValue())){ - throw new ValidationException("降级金额不能大于商品处理数量金额"); + throw new ValidationException("降级金额不能大于商品处理数量的支付的金额"); + } + BigDecimal st = oi.getSupplierPrice().multiply(new BigDecimal(dto.getNum())); + if(deduct.doubleValue() > st.doubleValue()){ + throw new ValidationException("降级金额不能大于商品处理数量的供应商的金额"); } } diff --git a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java index a11cdf9..fe2bdb3 100644 --- a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java +++ b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java @@ -67,6 +67,9 @@ @Autowired private OrderItemCheckMapper orderItemCheckMapper; + @Autowired + private DeliveryOrderService deliveryOrderService; + public String createSales(OrderItemSalesCreateDTO dto){ Integer num = dto.getNum(); if(num == null || num == 0){ @@ -158,10 +161,10 @@ } public List<OrderStatusCountDTO> getSalesStatusCount(OrderItemSalesQueryDTO dto) { - dto.setOrderStartDate(parseLocalDateTime(dto.getOrderStartDateStr())); - dto.setOrderEndDate(parseLocalDateTime(dto.getOrderEndDateStr())); - dto.setSalesStartDate(parseLocalDateTime(dto.getSalesStartDateStr())); - dto.setSalesEndDate(parseLocalDateTime(dto.getSalesEndDateStr())); + dto.setOrderStartDate(parseLocalDateTime(dto.getOrderStartDateStr(), true)); + dto.setOrderEndDate(parseLocalDateTime(dto.getOrderEndDateStr(), false)); + dto.setSalesStartDate(parseLocalDateTime(dto.getSalesStartDateStr(), true)); + dto.setSalesEndDate(parseLocalDateTime(dto.getSalesEndDateStr(), false)); List<CodeValueDTO> ls = codeService.searchValue("ORDER_SALES_STATUS"); List<OrderStatusCountDTO> ll = orderItemSalesMapper.getSalesStatusCount(dto); @@ -207,15 +210,17 @@ List<OrderItemSalesNewListDTO> ls = orderItemSalesMapper.selectItemSalesList(null, dto); codeDecorator.decorate(ls); - String[] rowsName = new String[]{"集货站", "商品名称", "商品单位", "商品颜色", "商品等级" + String[] rowsName = new String[]{"序号", "集货站", "商品名称", "商品单位", "商品颜色", "商品等级" , "商品分类", "收货人", "收货人手机号码", "收货地址", "商品数量", "供应商名称", "商品售价" , "总金额", "订单号", "售后单号", "标题", "申请数量", "理由", "实际退款", "审核结果" , "申请时间", "平台回复"}; List<Object[]> dataList = new ArrayList<>(); + int sn = 1; for (OrderItemSalesNewListDTO d : ls) { Object[] objs = new Object[rowsName.length]; int a = 0; + objs[a++] = sn; objs[a++] = d.getStationName(); objs[a++] = d.getFlowerName(); objs[a++] = d.getFlowerUnit(); @@ -224,7 +229,7 @@ objs[a++] = d.getFlowerCategory(); objs[a++] = d.getCustomer(); objs[a++] = d.getCustomerTel(); - objs[a++] = d.getCustomerAddress(); + objs[a++] = d.getCustomerProvince() + d.getCustomerCity() + d.getCustomerRegion() + d.getCustomerAddress(); objs[a++] = d.getFlowerNum(); objs[a++] = d.getSupplierName(); objs[a++] = d.getPrice(); @@ -240,6 +245,8 @@ objs[a++] = d.getRemarks(); dataList.add(objs); + + sn++; } ExcelExportUtil excelExportUtil = new ExcelExportUtil("售后申请列表", rowsName, dataList, response); @@ -286,12 +293,35 @@ rr.setTotal(oi.getTotal()); rr.setSupplierPrice(oi.getSupplierPrice()); rr.setMarkupPartner(oi.getMarkupPartner()); + rr.setRealPrice(oi.getRealPrice()); + rr.setRealTotal(oi.getRealTotal()); Long stationId = oi.getStationId(); if(stationId != null) { Station s = stationMapper.selectById(oi.getStationId()); rr.setStationName(s.getName()); } + + List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>() + .eq("order_item_id", oi.getId()) + .eq("audit_status", Constants.CHECK_AUDIT_STATUS.AGREED.name()) + ); + int reduceNum = 0; + BigDecimal reduceAmount = new BigDecimal(0); + int replaceNum = 0; + if(cLs != null && cLs.size() > 0){ + for(OrderItemCheck c : cLs){ + if(Constants.CHECK_TYPE.reduce.name().equals(c.getType())){ + reduceNum += c.getNum(); + reduceAmount = reduceAmount.add(c.getDeductAmount()); + } else if(Constants.CHECK_TYPE.replace.name().equals(c.getType())){ + replaceNum += c.getNum(); + } + } + } + rr.setReduceNum(reduceNum); + rr.setReduceAmount(reduceAmount); + rr.setReplaceNum(replaceNum); return rr; } @@ -311,6 +341,11 @@ } BigDecimal feeSupplier = getAmount(dto.getFeeSupplier()); + BigDecimal supplierTotal = oi.getSupplierPrice().multiply(new BigDecimal(sl.getNum())); + if(feeSupplier.doubleValue() > supplierTotal.doubleValue()){ + throw new ValidationException("供应商扣款金额不能大于商品申请数量的供应商售价"); + } + BigDecimal feePartner = getAmount(dto.getFeePartner()); BigDecimal feePlatform = getAmount(dto.getFeePlatform()); BigDecimal feePlatformPack = getAmount(dto.getFeePlatformPack()); @@ -320,7 +355,7 @@ BigDecimal totalFee = feeSupplier.add(feePartner).add(feePlatform).add(feePlatformPack) .add(feePlatformCheck).add(feePlatformTransport); - BigDecimal st = oi.getPrice().multiply(new BigDecimal(sl.getNum()));//申请售后的花的金额 + BigDecimal st = oi.getRealPrice().multiply(new BigDecimal(sl.getNum()));//申请售后的花的金额,使用券后的单价 if(totalFee.doubleValue() > st.doubleValue()){ throw new ValidationException("退款金额不能大于商品申请数量的售价"); } @@ -336,10 +371,16 @@ } } preFee = preFee.add(totalFee); - if(preFee.doubleValue() > oi.getTotal().doubleValue()){ + if(preFee.doubleValue() > oi.getRealTotal().doubleValue()){//使用券后的总价 throw new ValidationException("退款总金额不能大于商品总价"); } + BigDecimal deduct = deliveryOrderService.calculateOrderItemDeduct(sl.getOrderItemId());//质检已扣款金额 + preFee = preFee.add(deduct); + if(preFee.doubleValue() > oi.getRealTotal().doubleValue()){ + throw new ValidationException("退款总金额(包含质检退款)不能大于商品总价"); + } + sl.setRemarks(dto.getRemarks()); sl.setFeeSupplier(feeSupplier); sl.setFeePartner(feePartner); diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java index 0efa99d..34d6b5b 100644 --- a/src/main/java/com/mzl/flower/service/payment/OrderService.java +++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java @@ -14,6 +14,7 @@ import com.mzl.flower.dto.PriceDTO; import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO; import com.mzl.flower.dto.request.payment.*; +import com.mzl.flower.dto.response.coupon.CouponRecordVO; import com.mzl.flower.dto.response.flower.FlowerCartListDTO; import com.mzl.flower.dto.response.flower.FlowerCartListWrapDTO; import com.mzl.flower.dto.response.flower.FlowerDTO; @@ -60,11 +61,13 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -181,6 +184,21 @@ c.setNum(dto.getNum()); c.create(userId); + // 限购 1.首先查看购物车中的数量是否已经超过限售数量 + final FlowerDTO flowerDetail = flowerService.getFlowerDetail(c.getFlowerId()); + if(null!=c.getNum() && null!=flowerDetail.getLimited() + && c.getNum().compareTo(flowerDetail.getLimited())>0){ + throw new ValidationException("数量不能超过限售数量!"); + } + + // 限购 2.查看已结单的订单的当前花朵已经购买的数量,加当前购物车的加入的数量是否超过限购的数量,查看当前5点前到昨天五点前 + Integer completeNumToday=getFlowerCompleteNumToday(userId,c.getFlowerId()); + Integer tmp=completeNumToday+c.getNum(); + if(null!=tmp && null!=flowerDetail.getLimited() + && tmp.compareTo(flowerDetail.getLimited())>0){ + throw new ValidationException("当天的订单的花数量加上购物车的数量不能超过限售数量!"); + } + cartMapper.insert(c); } else { // 查看是否已经超过当前商品的限购数量 @@ -196,7 +214,8 @@ // 限购 2.查看已结单的订单的当前花朵已经购买的数量,加当前购物车的加入的数量是否超过限购的数量,查看当前5点前到昨天五点前 Integer completeNumToday=getFlowerCompleteNumToday(userId,c.getFlowerId()); Integer tmp=completeNumToday+c.getNum(); - if(tmp.compareTo(flowerDetail.getLimited())>0){ + if(null!=tmp && null!=flowerDetail.getLimited() + && tmp.compareTo(flowerDetail.getLimited())>0){ throw new ValidationException("当天的订单的花数量加上购物车的数量不能超过限售数量!"); } @@ -341,7 +360,7 @@ Integer completeNumToday=getFlowerCompleteNumToday(userId,cartSaveDTO.getId()); Integer tmp=completeNumToday+cartSaveDTO.getNum(); Flower flower=flowerMapper.selectById(cartSaveDTO.getId()); - if(tmp.compareTo(flower.getLimited())>0){ + if(null!=flower.getLimited() && tmp.compareTo(flower.getLimited())>0){ throw new ValidationException("商品:'"+flower.getName()+"' 昨天17:00到今天17:00 超过限售数量:"+flower.getLimited()+"!"); } }); @@ -433,7 +452,8 @@ // 限购数量 鲜花数量校验 Integer completeNumToday=getFlowerCompleteNumToday(userId,flower.getId()); Integer tmp=completeNumToday+flower.getNum(); - if(tmp.compareTo(flower.getLimited())>0){ + if(null!=tmp && null!=flower.getLimited() + && tmp.compareTo(flower.getLimited())>0){ throw new ValidationException("商品:'"+flower.getName()+"' 昨天17:00到今天17:00 超过限售数量:"+flower.getLimited()+"!"); } }); @@ -524,7 +544,7 @@ List<FlowerCartListDTO> flowers = p.getFlowers(); Map<Long, List<ParamItemDTO>> paramMap = new HashMap<>(); final BigDecimal flowerAmount = order.getFlowerAmount();//订单商品总价 - final BigDecimal memberCouponAmount = order.getMemberCouponAmount();//使用优惠券面值 + final BigDecimal memberCouponAmount = getAmount(order.getMemberCouponAmount());//使用优惠券面值 BigDecimal usedCouponAmount = new BigDecimal(0); for (int i = 0; i < flowers.size(); i++) { FlowerCartListDTO f = flowers.get(i); @@ -620,7 +640,7 @@ private BigDecimal calculateCoupon(BigDecimal couponAmount, BigDecimal itemTotalAmount , BigDecimal totalAmount, Integer num, BigDecimal price , boolean isLastOne, BigDecimal usedCouponAmount){ - if(couponAmount == null){ + if(couponAmount == null || couponAmount.doubleValue() == 0){ return new BigDecimal(0); } @@ -851,9 +871,11 @@ List<OrderListDTO> ls = getOrderListBase(page, dto); if (ls != null && ls.size() > 0) { List<String> orderIds = new ArrayList<>(); + Map<String, OrderListDTO> orderMap = new HashMap<>(); for (OrderListDTO o : ls) { o.setCouldRefund(couldRefund(o.getStatusBackend(), o.getPaymentTime())); orderIds.add(o.getId()); + orderMap.put(o.getId(), o); } List<OrderItemListDTO> itemList = orderItemMapper.getOrderItems(orderIds); @@ -863,6 +885,14 @@ List<OrderItemListDTO> ll = map.computeIfAbsent(orderId, k -> new ArrayList<>()); OrderItemListDTO d = new OrderItemListDTO(); BeanUtils.copyProperties(oi, d); + + OrderListDTO o = orderMap.get(orderId); + if(dto.isCustomerQuery() && o != null && StringUtils.isEmpty(o.getTransferId())){ + d.setReduceNum(0); + d.setLackNum(0); + d.setReplaceNum(0); + } + ll.add(d); } @@ -1041,6 +1071,7 @@ public Page<OrderListDTO> selectCustomerOrderList(Page page, OrderQueryDTO dto) { dto.setCreateBy(SecurityUtils.getUserId()); + dto.setCustomerQuery(true); return selectOrderList(page, dto); } @@ -1069,6 +1100,15 @@ List<OrderPointGoodsListDTO> pointGoodsList = orderMapper.getPointGoodsList(id); dto.setPointGoodsList(pointGoodsList); + + //判断优惠券ID是否为空 用户优惠券id + if(StringUtils.isNotBlank(o.getMemberCouponId())){ + CouponRecordVO couponRecordVO = couponRecordService.getCouponRecordById(o.getMemberCouponId()); + if(!ObjectUtils.isEmpty(couponRecordVO)){ + dto.setCouponDiscountType(couponRecordVO.getCouponDiscountType()); + dto.setMinOrderAmount("满"+couponRecordVO.getMinOrderAmount()); + } + } return dto; } @@ -1547,7 +1587,31 @@ } public Integer getFlowerCompleteNumToday(String userId,Long flowerId){ - Integer completeNum= orderMapper.getFlowerCompleteNumToday(userId,flowerId); + + int completeNum = 0; + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + // 构造今天的17:00 + LocalDateTime todayAtFivePM = LocalDateTime.of(LocalDate.now(), LocalTime.of(17, 0)); + // 定义时间区间的开始和结束时间 + LocalDateTime startTime; + LocalDateTime endTime; + + if (now.isAfter(todayAtFivePM)) { + // 当前时间大于今天的17:00,取今天17:00到明天17:00的区间 + startTime = todayAtFivePM; + endTime = todayAtFivePM.plusDays(1); // 明天的17:00 + } else { + // 当前时间小于今天的17:00,取昨天17:00到今天17:00的区间 + startTime = todayAtFivePM.minusDays(1); // 昨天的17:00 + endTime = todayAtFivePM; // 今天的17:00 + } + + // 调用Mapper方法,传递开始时间和结束时间 + completeNum = orderMapper.getFlowerCompleteNumWithinTimeRange(userId, flowerId, startTime, endTime); + return completeNum; + + } } diff --git a/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java b/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java index 3640a32..e93b82a 100644 --- a/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java +++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java @@ -9,6 +9,7 @@ import com.mzl.flower.dto.request.payment.TransferDetailReqDTO; import com.mzl.flower.dto.request.payment.TransferReqDTO; import com.mzl.flower.dto.request.payment.UserPaymentDTO; +import com.mzl.flower.entity.flower.Flower; import com.mzl.flower.entity.payment.*; import com.mzl.flower.entity.system.UserWechat; import com.mzl.flower.mapper.flower.FlowerMapper; @@ -114,6 +115,9 @@ @Autowired private CouponRecordService couponRecordService; + + @Autowired + private OrderService orderService; /** * 微信预支付 @@ -474,6 +478,22 @@ } public Map payAgain(String orderId){ + // 获取订单里面的商品是否有限购的,如果有则判断是否已经超过限购数量 + List<OrderItem> orderItemList = orderItemMapper.selectList(new QueryWrapper<OrderItem>() + .eq("order_id", orderId)); + + orderItemList.forEach(orderItem -> { + // 限购数量 鲜花数量校验 + Integer completeNumToday=orderService.getFlowerCompleteNumToday(orderItem.getCreateBy(),orderItem.getFlowerId()); + Integer tmp=completeNumToday+orderItem.getNum(); + Flower flower=flowerMapper.selectById(orderItem.getFlowerId()); + if(null!=flower.getLimited() && tmp.compareTo(flower.getLimited())>0){ + throw new ValidationException("商品:'"+flower.getName()+"' 昨天17:00到今天17:00 超过限售数量:"+flower.getLimited()+"!"); + } + + }); + + UserPayment up = userPaymentMapper.selectOne( new QueryWrapper<UserPayment>().eq("order_id", orderId)); if(StringUtils.isNotEmpty(up.getStatus())){ diff --git a/src/main/java/com/mzl/flower/service/point/CustomerPointService.java b/src/main/java/com/mzl/flower/service/point/CustomerPointService.java index 8223dd0..9950f12 100644 --- a/src/main/java/com/mzl/flower/service/point/CustomerPointService.java +++ b/src/main/java/com/mzl/flower/service/point/CustomerPointService.java @@ -15,6 +15,8 @@ import com.mzl.flower.mapper.point.CustomerPointDetailMapper; import com.mzl.flower.mapper.point.CustomerPointMapper; import com.mzl.flower.service.BaseService; +import com.mzl.flower.utils.DateUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -47,6 +49,12 @@ } public Page<CustomerPointDetailDTO> queryCustomerDetails(QueryPointDetailDTO dto, Page page) { + if(StringUtils.isNotBlank(dto.getCreateTimeStartStr())){ + dto.setCreateTimeStart(DateUtils.dateTimeStringToLocalDateTime(dto.getCreateTimeStartStr())); + } + if(StringUtils.isNotBlank(dto.getCreateTimeEndStr())){ + dto.setCreateTimeEnd(DateUtils.dateTimeStringToLocalDateTime(dto.getCreateTimeEndStr())); + } List<CustomerPointDetailDTO> list = customerPointMapper.queryCustomerDetails(dto, page); page.setRecords(list); diff --git a/src/main/java/com/mzl/flower/service/point/PointGoodsService.java b/src/main/java/com/mzl/flower/service/point/PointGoodsService.java index 69c144b..e56ab9f 100644 --- a/src/main/java/com/mzl/flower/service/point/PointGoodsService.java +++ b/src/main/java/com/mzl/flower/service/point/PointGoodsService.java @@ -143,7 +143,7 @@ if(!Constants.POINT_GOODS_STATUS.A.name().equals(p.getStatus())){ throw new ValidationException("商品未上架"); } - if(p.getStock()< dto.getNum()){ + if(p.getStock() <=0 || p.getStock()< dto.getNum()){ throw new ValidationException("商品库存不足"); } CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>() @@ -190,8 +190,6 @@ //更新库存 p.setStock(p.getStock()- dto.getNum()); pointGoodsMapper.updateById(p); - }catch (Exception e){ - throw new ValidationException("兑换失败"); }finally { lockService.releaseObjectLock(key,""); } diff --git a/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java b/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java index 5254160..96d4cda 100644 --- a/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java +++ b/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java @@ -39,8 +39,8 @@ @GetMapping("/list") @ApiOperation(value = "签到历史") public ResponseEntity<ReturnDataDTO<List<CustomerPointDetailDTO>>> signList(String startDateStr, String endDateStr) { - LocalDate startDate = LocalDate.parse(startDateStr); - LocalDate endDate = LocalDate.parse(endDateStr); + LocalDate startDate = customerPointService.parseLocalDate(startDateStr); + LocalDate endDate = customerPointService.parseLocalDate(endDateStr); return returnData(R.SUCCESS.getCode(), customerPointService.signList(startDate, endDate)); } diff --git a/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java b/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java index 772fdbb..e40416e 100644 --- a/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java +++ b/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java @@ -66,6 +66,12 @@ return returnData(R.SUCCESS.getCode(), categoryService.selectCategoryTree(dto)); } + @GetMapping("/list") + @ApiOperation(value = "获取商品分类列表") + public ResponseEntity<ReturnDataDTO<List<FlowerCategoryTreeDTO>>> selectCategoryList(FlowerCategoryQueryDTO dto){ + return returnData(R.SUCCESS.getCode(), categoryService.selectCategoryList(dto)); + } + @GetMapping("/tree/delete") @ApiOperation(value = "删除商品分类") @ApiImplicitParams({ diff --git a/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java b/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java index 78f19de..2384912 100644 --- a/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java +++ b/src/main/java/com/mzl/flower/web/login/SupplierLoginController.java @@ -88,10 +88,7 @@ throw new ValidationException("用户不存在"); } SupplierDTO supplierDTO = supplierMapper.getCurrentSupplier(user.getId()); - if (ObjectUtils.isEmpty(supplierDTO)) { - throw new ValidationException("用户不存在"); - } - if (supplierDTO.getIsEnabled() == false) { + if (supplierDTO != null && supplierDTO.getIsEnabled() == false) { throw new ValidationException("用户已禁用,请联系管理员"); } String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId()); diff --git a/src/main/java/com/mzl/flower/web/partner/PartnerController.java b/src/main/java/com/mzl/flower/web/partner/PartnerController.java index 3a3a2c8..5e0fce5 100644 --- a/src/main/java/com/mzl/flower/web/partner/PartnerController.java +++ b/src/main/java/com/mzl/flower/web/partner/PartnerController.java @@ -30,6 +30,14 @@ } + @PostMapping("/base/update") + @ApiOperation(value = "合伙人基本信息修改", notes = "合伙人基本信息修改") + public ResponseEntity<ReturnDataDTO> baseUpdate(@Validated @RequestBody UpdatePartnerBaseDTO dto) { + partnerService.baseUpdate(dto); + return returnData(R.SUCCESS.getCode(),null); + } + + @PostMapping("/addOrUpdate") @ApiOperation(value = "合伙人信息登记、修改", notes = "合伙人信息登记、修改") public ResponseEntity<ReturnDataDTO> addOrUpdatePartner(@Validated @RequestBody UpdatePartnerDTO dto) { diff --git a/src/main/java/com/mzl/flower/web/point/CustomerPointController.java b/src/main/java/com/mzl/flower/web/point/CustomerPointController.java index 342d05d..3a214a1 100644 --- a/src/main/java/com/mzl/flower/web/point/CustomerPointController.java +++ b/src/main/java/com/mzl/flower/web/point/CustomerPointController.java @@ -59,6 +59,9 @@ @PostMapping("/giveaway") @ApiOperation(value = "管理端-积分赠送", notes = "管理端-积分赠送") public ResponseEntity<ReturnDataDTO> giveawayPoint(@Validated @RequestBody ChangePointDTO dto) { + if(dto.getPoint()<=0){ + throw new ValidationException("赠送积分必须大于0"); + } customerPointService.giveawayPoint(dto); return returnData(R.SUCCESS.getCode(),null); } @@ -66,6 +69,9 @@ @PostMapping("/deduction") @ApiOperation(value = "管理端-积分扣除", notes = "管理端-积分扣除") public ResponseEntity<ReturnDataDTO> deductionPoint(@Validated @RequestBody ChangePointDTO dto) { + if(dto.getPoint()<=0){ + throw new ValidationException("扣除积分必须大于0"); + } customerPointService.deductionPoint(dto); return returnData(R.SUCCESS.getCode(),null); } diff --git a/src/main/java/com/mzl/flower/web/supplier/DeliverySupplierController.java b/src/main/java/com/mzl/flower/web/supplier/DeliverySupplierController.java index 8aca450..b305f77 100644 --- a/src/main/java/com/mzl/flower/web/supplier/DeliverySupplierController.java +++ b/src/main/java/com/mzl/flower/web/supplier/DeliverySupplierController.java @@ -39,6 +39,13 @@ @ApiOperation(value = "获取配送单列表") public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderListDTO>>> selectOrderList(Page page , DeliveryOrderQueryDTO dto){ + LocalDate localDate = deliveryOrderService.parseLocalDate(dto.getDate()); + if(localDate != null){ + LocalDateTime endDate = localDate.atTime(17, 0, 0); + LocalDateTime startDate = endDate.plusDays(-1); + dto.setStartDate(startDate); + dto.setEndDate(endDate); + } return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectDeliveryOrderList(page, dto)); } diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java index 7905c5f..08026a8 100644 --- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java +++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java @@ -177,11 +177,22 @@ private void valid(CreateCouponTemplateActivyDTO dto){ - if (StringUtils.isNotBlank(dto.getCouponDiscountType()) - && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) - && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { - throw new ValidationException("订单金额不能小于折扣金额"); +// if (StringUtils.isNotBlank(dto.getCouponDiscountType()) +// && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) +// && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { +// throw new ValidationException("优惠券使用条件不能小于面值金额"); +// } + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) { + + if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){ + throw new ValidationException("优惠券使用条件不能小于0"); + } + if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){ + throw new ValidationException("优惠券使用条件不能小于面值金额"); + } + } + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getCouponDiscountValue().compareTo(BigDecimal.ZERO) <= 0) { @@ -203,6 +214,19 @@ if(dto.getUsageEndDate()==null){ throw new ValidationException("固定时间结束日期不能为空"); } + + if(dto.getUsageStartDate().isAfter(dto.getUsageEndDate())){ + throw new ValidationException("固定时间开始时间不能大于结束日期"); + } + + + // 固定时间的使用开始时间必须大于领取的结束时间 + + if(null!=dto.getGetEndDate() && null!=dto.getUsageStartDate() && dto.getGetEndDate().isAfter(dto.getUsageStartDate())){ + throw new ValidationException("使用开始时间必须大于领取结束时间!"); + } + + } // 领取后 有效时间 @@ -229,6 +253,8 @@ } } + // + } } diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java index 50a553a..b9dddbe 100644 --- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java +++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java @@ -216,11 +216,17 @@ private void valid(CreateCouponTemplatePointDTO dto){ - if (StringUtils.isNotBlank(dto.getCouponDiscountType()) - && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) - && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { - throw new ValidationException("订单金额不能小于折扣金额"); + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) { + + if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){ + throw new ValidationException("优惠券使用条件不能小于0"); + } + if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){ + throw new ValidationException("优惠券使用条件不能小于面值金额"); + } + } + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getCouponDiscountValue().compareTo(BigDecimal.ZERO) <= 0) { diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java index 7939f58..344ce2f 100644 --- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java +++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java @@ -6,6 +6,7 @@ import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.config.exception.ValidationException; +import com.mzl.flower.dto.request.coupon.CreateCouponTemplateActivyDTO; import com.mzl.flower.dto.request.coupon.CreateCouponTemplateBO; import com.mzl.flower.dto.request.coupon.CreateCouponTemplateUserDTO; import com.mzl.flower.dto.request.coupon.QueryCouponDTO; @@ -45,14 +46,8 @@ @ApiOperation(value = "新增", notes = "新增") public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponTemplateUserDTO dto) { - if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { - throw new ValidationException("订单金额不能小于折扣金额"); - } - if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) { - throw new ValidationException("无门槛的订单金额必须为0"); - } - + valid(dto); CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(dto, couponTemplateBO); @@ -77,14 +72,7 @@ dto.setId(id); - if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { - throw new ValidationException("订单金额不能小于折扣金额"); - } - - if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) { - throw new ValidationException("无门槛的订单金额必须为0"); - } - + valid(dto); CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getId()); if (null == couponTemplateDO) { @@ -187,4 +175,22 @@ } + private void valid(CreateCouponTemplateUserDTO dto){ + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) { + + if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){ + throw new ValidationException("优惠券使用条件不能小于0"); + } + if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){ + throw new ValidationException("优惠券使用条件不能小于面值金额"); + } + + } + + if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) { + throw new ValidationException("无门槛的订单金额必须为0"); + } + } + + } diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java index fe543b1..1af24f4 100644 --- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java +++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java @@ -162,11 +162,17 @@ throw new ValidationException("会员等级不存在"); } - if (StringUtils.isNotBlank(dto.getCouponDiscountType()) - && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) - && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { - throw new ValidationException("订单金额不能小于折扣金额"); + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) { + + if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){ + throw new ValidationException("优惠券使用条件不能小于0"); + } + if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){ + throw new ValidationException("优惠券使用条件不能小于面值金额"); + } + } + if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getCouponDiscountValue().compareTo(BigDecimal.ZERO) <= 0) { diff --git a/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml b/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml index 7970cda..67159fc 100644 --- a/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml +++ b/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml @@ -39,6 +39,9 @@ AND customer_id = #{param.customerId} </if> </update> + <update id="expireCouponRecordAll"> + update t_coupon_record set `status`='expired' where `status`='unused' and effective_end < NOW() + </update> <select id="statisCouponTemplateCount" resultType="java.lang.Integer"> select IFNULL(count(1),0) as cnt from t_coupon_record where deleted=false and category=#{param.category} diff --git a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml index 7ce2dbb..cf3918e 100644 --- a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml +++ b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml @@ -59,6 +59,9 @@ <update id="expireHomeActivityCouponTemplate"> update t_coupon_template set status='expired' where category='activity' and get_type='home' and status='active' </update> + <update id="expireActivityCouponTemplateAll"> + update t_coupon_template set status='expired' where category='activity' and get_end_date < NOW() + </update> <select id="getCouponTemplatePage" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO"> <include refid="QuerySql2"/> diff --git a/src/main/resources/mapper/flower/FlowerCategoryMapper.xml b/src/main/resources/mapper/flower/FlowerCategoryMapper.xml index 0051a46..7cd07ee 100644 --- a/src/main/resources/mapper/flower/FlowerCategoryMapper.xml +++ b/src/main/resources/mapper/flower/FlowerCategoryMapper.xml @@ -2,6 +2,35 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.mzl.flower.mapper.flower.FlowerCategoryMapper"> + <select id="selectCategoryList" resultType="com.mzl.flower.dto.response.flower.FlowerCategoryTreeDTO"> + SELECT q.* + , (select count(1) from t_flower_category f where f.parent_id = q.id) childrenCount + FROM t_flower_category q + WHERE q.deleted = 0 + <if test="condition.name != null and condition.name != ''"> + AND (q.name LIKE concat('%', #{condition.name},'%') + or exists ( + select 1 from t_flower_category sq where sq.parent_id = q.id and sq.name LIKE concat('%', #{condition.name},'%') + ) + ) + </if> + <choose> + <when test="condition.parentId != null"> + AND q.parent_id = #{condition.parentId} + </when> + <otherwise> + AND q.parent_id is null + </otherwise> + </choose> + <if test="condition.shown != null and condition.shown"> + AND (q.shown = 1 or q.shown is null) + </if> + <if test="condition.shown != null and !condition.shown"> + AND q.shown = 0 + </if> + ORDER BY q.sort_by, q.create_time Desc + </select> + <select id="selectTreeList" resultType="com.mzl.flower.dto.response.flower.FlowerCategoryTreeDTO"> SELECT q.* , (select min(f.price) from t_flower f where f.category = q.id and f.status = 'UP' and f.deleted = 0) priceLow diff --git a/src/main/resources/mapper/flower/FlowerMapper.xml b/src/main/resources/mapper/flower/FlowerMapper.xml index 308869c..1da83a9 100644 --- a/src/main/resources/mapper/flower/FlowerMapper.xml +++ b/src/main/resources/mapper/flower/FlowerMapper.xml @@ -45,6 +45,12 @@ <if test="condition.recommend != null and !condition.recommend"> AND (f.recommend = 0 or f.recommend is null) </if> + <if test="condition.isLimited != null and condition.isLimited"> + AND f.limited > 0 + </if> + <if test="condition.isLimited != null and !condition.isLimited"> + AND (f.limited = 0 or f.limited is null) + </if> <if test="condition.statusList != null and condition.statusList.size > 0"> and f.status in <foreach collection="condition.statusList" item="item" open="(" separator="," close=")"> diff --git a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml index eef9518..6abf279 100644 --- a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml +++ b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml @@ -71,7 +71,7 @@ , oi.flower_level, oi.flower_category, o.customer, o.customer_tel, o.customer_province, o.customer_city , o.customer_region, o.customer_address, oi.num flowerNum, oi.supplier_name, oi.price, oi.total , o.order_no, si.sales_no, si.title, si.num, si.reason, si.total_fee, si.status, si.create_time - , si.remarks, oi.supplier_price, oi.markup_partner, si.audit_time,si.sales_type + , si.remarks, oi.supplier_price, oi.markup_partner, si.audit_time,si.sales_type, oi.real_price, oi.real_total FROM t_order_item_sales si join t_order_item oi on oi.id = si.order_item_id join t_order o on si.order_id = o.id diff --git a/src/main/resources/mapper/payment/OrderMapper.xml b/src/main/resources/mapper/payment/OrderMapper.xml index 6639b8c..4d7d43a 100644 --- a/src/main/resources/mapper/payment/OrderMapper.xml +++ b/src/main/resources/mapper/payment/OrderMapper.xml @@ -133,6 +133,7 @@ and (oi.status = 'reduce' or oi.status = 'abnormal') ) and q.transfer_id is null + and q.status in ('COLLECTION', 'SEND') </if> <if test="condition.billId != null and condition.billId != ''"> AND q.bill_id = #{condition.billId} @@ -143,6 +144,9 @@ where oi.order_id = q.id and oi.flower_name LIKE concat('%', #{condition.flowerName},'%') ) + </if> + <if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''"> + AND q.warehouse_location_code LIKE concat('%', #{condition.warehouseLocationCode},'%') </if> ORDER BY q.create_time desc, q.payment_time desc @@ -260,15 +264,15 @@ join t_order_point_goods opg on opg.goods_record_id = gr.id where opg.order_id = #{orderId} </select> - <select id="getFlowerCompleteNumToday" resultType="java.lang.Integer"> + <select id="getFlowerCompleteNumWithinTimeRange" resultType="java.lang.Integer"> select IFNULL(sum(oi.num),0) as complete_num from t_order o left join t_order_item oi on o.id=oi.order_id where o.DELETEd=0 and oi.DELETEd=0 - and o.status_backend not in ('PENDING','CANCEL','REFUND') - and o.create_by=#{userId} - AND oi.flower_id=#{flowerId} - AND o.complete_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) + INTERVAL 17 HOUR AND CURDATE() + INTERVAL 17 HOUR + and o.status_backend not in ('PENDING','CANCEL','REFUND') + and o.create_by=#{userId} + AND oi.flower_id=#{flowerId} + AND o.payment_time BETWEEN #{startTime} AND #{endTime} </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/payment/OrderSettlementDetailMapper.xml b/src/main/resources/mapper/payment/OrderSettlementDetailMapper.xml index 4521617..6c199d5 100644 --- a/src/main/resources/mapper/payment/OrderSettlementDetailMapper.xml +++ b/src/main/resources/mapper/payment/OrderSettlementDetailMapper.xml @@ -3,7 +3,7 @@ <mapper namespace="com.mzl.flower.mapper.payment.OrderSettlementDetailMapper"> <select id="selectSettlementDetailList" resultType="com.mzl.flower.dto.response.payment.OrderSettlementDetailDTO"> - SELECT s.*, oi.flower_name, oi.flower_level, o.receive_time, oi.check_time, o.order_no + SELECT s.*, oi.flower_name, oi.flower_level, o.receive_time, oi.check_time, o.order_no, s.order_id FROM t_order_settlement_detail s join t_order_item oi on oi.id = s.order_item_id join t_order o on o.id = s.order_id diff --git a/src/main/resources/mapper/payment/OrderSettlementMapper.xml b/src/main/resources/mapper/payment/OrderSettlementMapper.xml index 5a75e50..05ec5ba 100644 --- a/src/main/resources/mapper/payment/OrderSettlementMapper.xml +++ b/src/main/resources/mapper/payment/OrderSettlementMapper.xml @@ -26,7 +26,7 @@ <if test="condition.userName != null and condition.userName != ''"> AND (si.name LIKE CONCAT('%', #{condition.userName}, '%') OR pi.name LIKE CONCAT('%', #{condition.userName}, '%')) </if> - ORDER BY s.create_time desc + ORDER BY s.create_time desc, userName </select> <select id="getUserIncome" resultType="java.math.BigDecimal"> diff --git a/src/main/resources/mapper/point/CustomerPointMapper.xml b/src/main/resources/mapper/point/CustomerPointMapper.xml index 004ba1c..b6bcd4e 100644 --- a/src/main/resources/mapper/point/CustomerPointMapper.xml +++ b/src/main/resources/mapper/point/CustomerPointMapper.xml @@ -45,12 +45,22 @@ AND t.record_date <= #{dto.recordDateEnd} ]]> </if> - <if test="dto.type!=null and dto.type != null"> + <if test="dto.type!=null and dto.type != ''"> and t.type = #{dto.type} </if> <if test="dto.remarks!=null and dto.remarks != null"> and t.remarks like CONCAT('%',#{dto.remarks},'%') </if> + <if test="dto.createTimeStart!=null"> + <![CDATA[ + AND t.create_time >= #{dto.createTimeStart} + ]]> + </if> + <if test="dto.createTimeEnd!=null "> + <![CDATA[ + AND t.create_time <= #{dto.createTimeEnd} + ]]> + </if> order by t.create_time desc </select> </mapper> \ No newline at end of file -- Gitblit v1.9.3