超级会员相关

This commit is contained in:
张松
2025-09-16 14:05:30 +08:00
parent ec1e94fdaf
commit 696ffc49ae
36 changed files with 1198 additions and 21 deletions

View File

@@ -135,4 +135,7 @@ public class ShopUser implements Serializable {
private Long experience;
private LocalDateTime startTime;
private LocalDateTime endTime;
private LocalDateTime deliverTime;
private LocalDateTime nextDeliverTime;
}

View File

@@ -0,0 +1,17 @@
package com.czg.market.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class CouponInfoDTO implements Serializable {
/**
* 券id
*/
private Long id;
/**
* 券数量
*/
private Integer num;
}

View File

@@ -7,6 +7,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -15,7 +16,7 @@ import java.util.Map;
* @author Administrator
*/
@Data
public class MemberConfigDTO {
public class MemberConfigDTO implements Serializable {
@Data
public static class ConfigCoupon {
@Min(value = 1, message = "数量不能小于1")

View File

@@ -0,0 +1,69 @@
package com.czg.market.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import java.util.List;
import com.czg.constant.TableValueConstant;
import com.czg.market.entity.MkConsumeDiscountRandom;
import com.czg.validator.group.UpdateGroup;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 新客立减 实体类。
*
* @author zs
* @since 2025-09-16
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkConsumeDiscountDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@NotNull(message = "id不为空")
private Long id;
/**
* 是否开启
*/
@NotNull(message = "是否开启不为空")
private Integer isEnable;
/**
* 固定 FIXED 随机 RANDOM
*/
@NotEmpty(message = "减免类型不为空")
private String discountType;
/**
* 固定减免金额
*/
@DecimalMin(value = "0.01", message = "减免金额不能小于0.01")
private BigDecimal discountAmount;
/**
* 随机减免规则
*/
private List<MkConsumeDiscountRandom> randomDiscountList;
/**
* 用餐模式 堂食 dine-in 外带 take-out 外卖 take-away
*/
private List<String> useTypeList;
}

View File

@@ -0,0 +1,80 @@
package com.czg.market.dto;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import java.util.List;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 充值配置表 实体类。
*
* @author zs
* @since 2025-09-16
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkShopRechargeDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@NotNull(message = "ID不能为空")
private Long id;
/**
* 可用分店id
*/
private List<Long> shopIdList;
/**
* all 全部可用 part部分门店可用
*/
@NotEmpty(message = "可用类型不能为空")
private String useType;
/**
* 是否自定义金额
*/
@NotNull(message = "是否自定义金额不能为空")
private Integer isCustom;
/**
* 充值并下单
*/
@NotNull(message = "充值并下单不能为空")
private Integer isOrder;
/**
* 充值说明
*/
@NotBlank(message = "充值说明不能为空")
@Size(max = 250, message = "最大长度为250")
private String remark;
/**
* 是否开启
*/
@NotNull(message = "是否开启不能为空")
private Integer isEnable;
/**
* 充值面额
*/
private List<MkShopRechargeDetailDTO> shopRechargeDetailList;
}

View File

@@ -0,0 +1,48 @@
package com.czg.market.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 充值面额详情 实体类。
*
* @author zs
* @since 2025-09-16
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkShopRechargeDetailDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 充值金额
*/
private BigDecimal amount;
/**
* 赠送金额
*/
private BigDecimal rewardAmount;
/**
* 赠送积分
*/
private Integer rewardPoints;
/**
* 赠送优惠券信息
*/
private List<CouponInfoDTO> couponInfoList;
}

View File

@@ -77,7 +77,7 @@ public class MemberLevelConfig implements Serializable {
/**
* 赠送积分
*/
private Float cycleRewardPoints;
private Integer cycleRewardPoints;
/**
* 优惠券列表

View File

@@ -0,0 +1,82 @@
package com.czg.market.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 新客立减 实体类。
*
* @author zs
* @since 2025-09-16
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("mk_consume_discount")
public class MkConsumeDiscount implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 是否开启
*/
private Integer isEnable;
/**
* 固定 FIXED 随机 RANDOM
*/
private String discountType;
/**
* 固定减免金额
*/
private BigDecimal discountAmount;
/**
* 随机减免规则
*/
private String randomDiscountList;
/**
* 用餐模式 堂食 dine-in 外带 take-out 外卖 take-away
*/
private String useTypeList;
/**
* 店铺id
*/
private Long shopId;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 修改时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,11 @@
package com.czg.market.entity;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MkConsumeDiscountRandom {
private BigDecimal amount;
private BigDecimal probability;
}

View File

@@ -0,0 +1,86 @@
package com.czg.market.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 充值配置表 实体类。
*
* @author zs
* @since 2025-09-16
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("mk_shop_recharge")
public class MkShopRecharge implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 主店id
*/
private Long masterShopId;
/**
* 可用分店id
*/
private String shopIdList;
/**
* all 全部可用 part部分门店可用
*/
private String useType;
/**
* 是否自定义金额
*/
private Integer isCustom;
/**
* 充值并下单
*/
private Integer isOrder;
/**
* 充值说明
*/
private String remark;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 修改时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
/**
* 是否开启
*/
private Integer isEnable;
}

View File

@@ -0,0 +1,71 @@
package com.czg.market.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 充值面额详情 实体类。
*
* @author zs
* @since 2025-09-16
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("mk_shop_recharge_detail")
public class MkShopRechargeDetail implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 充值金额
*/
private BigDecimal amount;
/**
* 赠送金额
*/
private BigDecimal rewardAmount;
/**
* 赠送积分
*/
private Integer rewardPoints;
/**
* 赠送优惠券信息
*/
private String couponInfoList;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 修改时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
private Long shopRechargeId;
}

View File

@@ -1,5 +1,6 @@
package com.czg.market.service;
import com.czg.market.vo.MemberLevelVO;
import com.mybatisflex.core.service.IService;
import com.czg.market.entity.MemberLevelConfig;
@@ -11,4 +12,5 @@ import com.czg.market.entity.MemberLevelConfig;
*/
public interface MemberLevelConfigService extends IService<MemberLevelConfig> {
MemberLevelVO detail(Long memberLevelId);
}

View File

@@ -0,0 +1,20 @@
package com.czg.market.service;
import com.czg.exception.ApiNotPrintException;
import com.czg.market.dto.MkConsumeDiscountDTO;
import com.czg.market.vo.MkConsumeDiscountVO;
import com.mybatisflex.core.service.IService;
import com.czg.market.entity.MkConsumeDiscount;
/**
* 新客立减 服务层。
*
* @author zs
* @since 2025-09-16
*/
public interface MkConsumeDiscountService extends IService<MkConsumeDiscount> {
MkConsumeDiscountVO detail(Long shopId);
Boolean edit(Long shopId, MkConsumeDiscountDTO consumeDiscountDTO) throws ApiNotPrintException;
}

View File

@@ -0,0 +1,14 @@
package com.czg.market.service;
import com.mybatisflex.core.service.IService;
import com.czg.market.entity.MkShopRechargeDetail;
/**
* 充值面额详情 服务层。
*
* @author zs
* @since 2025-09-16
*/
public interface MkShopRechargeDetailService extends IService<MkShopRechargeDetail> {
}

View File

@@ -0,0 +1,20 @@
package com.czg.market.service;
import com.czg.market.dto.MkShopRechargeDTO;
import com.czg.market.vo.MkShopRechargeVO;
import com.mybatisflex.core.service.IService;
import com.czg.market.entity.MkShopRecharge;
/**
* 充值配置表 服务层。
*
* @author zs
* @since 2025-09-16
*/
public interface MkShopRechargeService extends IService<MkShopRecharge> {
MkShopRechargeVO detail(Long shopId);
Boolean edit(Long shopId, MkShopRechargeDTO shopRechargeDTO);
}

View File

@@ -0,0 +1,14 @@
package com.czg.market.vo;
import com.czg.market.entity.ShopCoupon;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
public class CouponInfoVO implements Serializable {
private ShopCoupon coupon;
private Integer num;
}

View File

@@ -62,7 +62,7 @@ public class MemberLevelVO implements Serializable {
/**
* 赠送积分
*/
private Float cycleRewardPoints;
private Integer cycleRewardPoints;
/**
* 优惠券列表

View File

@@ -0,0 +1,61 @@
package com.czg.market.vo;
import com.czg.market.entity.MkConsumeDiscountRandom;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class MkConsumeDiscountVO implements Serializable {
/**
* ID
*/
private Long id;
/**
* 是否开启
*/
private Integer isEnable;
/**
* 固定 FIXED 随机 RANDOM
*/
private String discountType;
/**
* 固定减免金额
*/
private BigDecimal discountAmount;
/**
* 随机减免规则
*/
private List<MkConsumeDiscountRandom> randomDiscountList;
/**
* 用餐模式 堂食 dine-in 外带 take-out 外卖 take-away
*/
private List<String> useTypeList;
/**
* 店铺id
*/
private Long shopId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,50 @@
package com.czg.market.vo;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class MkShopRechargeDetailVO implements Serializable {
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 充值金额
*/
private BigDecimal amount;
/**
* 赠送金额
*/
private BigDecimal rewardAmount;
/**
* 赠送积分
*/
private Integer rewardPoints;
/**
* 赠送优惠券信息
*/
private List<CouponInfoVO> couponInfoList;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
private Long shopRechargeId;
}

View File

@@ -0,0 +1,64 @@
package com.czg.market.vo;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class MkShopRechargeVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
* 主店id
*/
private Long masterShopId;
/**
* 可用分店id
*/
private List<Long> shopIdList;
/**
* all 全部可用 part部分门店可用
*/
private String useType;
/**
* 是否自定义金额
*/
private Integer isCustom;
/**
* 充值并下单
*/
private Integer isOrder;
/**
* 充值说明
*/
private String remark;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 是否开启
*/
private Integer isEnable;
private List<MkShopRechargeDetailVO> rechargeDetailList;
}

View File

@@ -11,6 +11,7 @@ public interface TableValueConstant {
enum Type {
RECHARGE("RECHARGE", "充值增积分"),
PAY("PAY", "购买会员增积分"),
MEMBER_TASK("MEMBER_TASK", "会员周奖励"),
COST("COST", "消费增积分");
private final String code;
private final String msg;
@@ -22,4 +23,19 @@ public interface TableValueConstant {
}
}
interface ConsumeDiscount {
@Getter
enum DiscountType {
FIXED("fixed", "固定减免"),
RANDOM("random", "随机减免");
private final String code;
private final String msg;
DiscountType(String code, String msg) {
this.code = code;
this.msg = msg;
}
}
}
}