This commit is contained in:
2025-09-13 15:35:20 +08:00
parent db50c78049
commit 77ac277856
7 changed files with 463 additions and 12 deletions

View File

@@ -0,0 +1,135 @@
package com.czg.market.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 优惠券发放记录表 实体类。
*
* @author ww
* @since 2025-09-13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MkShopCouponRecordDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Long id;
/**
* 店铺id
*/
private Long shopId;
/**
* 店铺用户id
*/
private Long shopUserId;
/**
* 用户Id
*/
private Long userId;
/**
* 卷Id (校验是否可用)
*/
private Long couponId;
/**
* 卷描述 满10减2/商品卷
*/
private String name;
/**
* 优惠券类型1-满减券2-商品兑换券3-折扣券4-第二件半价券5-消费送券6-买一送一券7-固定价格券8-免配送费券
*/
private Integer type;
/**
* 满多少金额
*/
private BigDecimal fullAmount;
/**
* 减多少金额
*/
private BigDecimal discountAmount;
/**
* 折扣率 %
*/
private Integer discountRate;
/**
* 来源活动id
*/
private Long sourceId;
/**
* 来源记录Id
*/
private Long sourceFlowId;
/**
* 领取时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 使用时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime useTime;
/**
* 过期时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime expiredTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
private String couponJson;
/**
* 来源描述
*/
private String source;
/**
* 0未使用
* 1已使用
* 2已过期
*/
private Integer status;
/**
* 使用记录Id 订单Id
*/
private Long targetId;
/**
* 头像
*/
private String headImg;
/**
* 用户昵称
*/
private String nickName;
}

View File

@@ -0,0 +1,137 @@
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;
import lombok.experimental.Accessors;
/**
* 优惠券发放记录表 实体类。
*
* @author ww
* @since 2025-09-13
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("mk_shop_coupon_record")
@Accessors(chain = true)
public class MkShopCouponRecord implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 店铺id
*/
private Long shopId;
/**
* 店铺用户id
*/
private Long shopUserId;
/**
* 用户Id
*/
private Long userId;
/**
* 卷Id (校验是否可用)
*/
private Long couponId;
/**
* 卷描述 满10减2/商品卷
*/
private String name;
/**
* 优惠券类型1-满减券2-商品兑换券3-折扣券4-第二件半价券, 6-买一送一券7-固定价格券8-免配送费券
*/
private Integer type;
/**
* 满多少金额
*/
private BigDecimal fullAmount;
/**
* 减多少金额
*/
private BigDecimal discountAmount;
/**
* 折扣率 %
*/
private Integer discountRate;
/**
* 来源活动id
*/
private Long sourceId;
/**
* 来源记录Id
*/
private Long sourceFlowId;
/**
* 领取时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 使用时间
*/
private LocalDateTime useTime;
/**
* 过期时间
*/
private LocalDateTime expiredTime;
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
private String couponJson;
/**
* 来源描述
*/
private String source;
/**
* 0未使用
* 1已使用
* 2已过期
*/
private Integer status;
/**
* 使用记录Id 订单Id
*/
private Long targetId;
/**
* 删除状态 0-正常 1-删除
*/
private Integer isDel;
}

View File

@@ -0,0 +1,33 @@
package com.czg.market.service;
import com.czg.market.dto.MkShopCouponRecordDTO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.czg.market.entity.MkShopCouponRecord;
/**
* 优惠券发放记录表 服务层。
*
* @author ww
* @since 2025-09-13
*/
public interface MkShopCouponRecordService extends IService<MkShopCouponRecord> {
/**
* 优惠券列表/已领取详情
* @param search 用户Id/昵称/手机号
*/
Page<MkShopCouponRecordDTO> getRecord(String search, MkShopCouponRecordDTO param);
/**
* 发放券 统一方法
* @param mkShopCouponRecordDTO 赠送信息 除Id外 几乎全填
* @param number 发放数量
*/
void receiveCoupon(MkShopCouponRecordDTO mkShopCouponRecordDTO,Integer number);
/**
* 用户优惠券 失效/删除
*/
void deleteRecord(Long id);
}