Explorar o código

新增优惠券活动实体信息

WangChanghua hai 1 ano
pai
achega
33ae808ae2
Modificáronse 17 ficheiros con 807 adicións e 0 borrados
  1. 31 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponActivitySendType.java
  2. 40 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponActivityType.java
  3. 45 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponFrequency.java
  4. 35 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/PromotionApplyStatus.java
  5. 39 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/PromotionScopeType.java
  6. 74 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/CouponActivityDTO.java
  7. 85 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponActivityModifyParam.java
  8. 58 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponActivityPagingParam.java
  9. 54 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CouponActivityService.java
  10. 47 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/CouponActivityCopier.java
  11. 15 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CouponActivityMapper.java
  12. 86 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/BasePromotion.java
  13. 45 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/CouponActivity.java
  14. 46 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/CouponActivityItem.java
  15. 13 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CouponActivityService.java
  16. 89 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CouponActivityServiceImpl.java
  17. 5 0
      vehicle-server/src/main/resources/mapper/CouponActivityMapper.xml

+ 31 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponActivitySendType.java

@@ -0,0 +1,31 @@
+package com.chelvc.cloud.vehicle.api.constant;
+
+import lombok.Getter;
+
+/**
+ * 优惠券活动发送类型枚举
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Getter
+public enum CouponActivitySendType {
+
+    /**
+     * 全部会员
+     */
+    ALL("全部会员"),
+    /**
+     * 指定会员
+     */
+    DESIGNATED("指定会员");
+
+    /**
+     * 类型描述
+     */
+    private final String description;
+
+    CouponActivitySendType(String str) {
+        this.description = str;
+    }
+}

+ 40 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponActivityType.java

@@ -0,0 +1,40 @@
+package com.chelvc.cloud.vehicle.api.constant;
+
+
+import lombok.Getter;
+
+/**
+ * 优惠券活动类型枚举
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Getter
+public enum CouponActivityType {
+
+    /**
+     * 新人赠券
+     */
+    REGISTERED("新人赠券"),
+    /**
+     * 邀新赠券
+     */
+    INVITE_NEW("邀新赠券"),
+    /**
+     * 自动赠券
+     */
+    AUTO_COUPON("自动赠券"),
+    /**
+     * 精确发券
+     */
+    SPECIFY("精确发券");
+
+    /**
+     * 类型描述
+     */
+    private final String description;
+
+    CouponActivityType(String description) {
+        this.description = description;
+    }
+}

+ 45 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponFrequency.java

@@ -0,0 +1,45 @@
+package com.chelvc.cloud.vehicle.api.constant;
+
+import lombok.Getter;
+
+/**
+ * 优惠券活动发送类型枚举
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Getter
+public enum CouponFrequency {
+
+    /**
+     * 每天
+     */
+    DAY("每天"),
+    /**
+     * 每周
+     */
+    WEEK("每周"),
+    /**
+     * 每月
+     */
+    MONTH("每月");
+
+    /**
+     * 类型描述
+     */
+    private final String description;
+
+    CouponFrequency(String str) {
+        this.description = str;
+    }
+
+    public static boolean exist(String name) {
+        try {
+            CouponFrequency.valueOf(name);
+        } catch (IllegalArgumentException e) {
+            return false;
+        }
+        return true;
+    }
+
+}

+ 35 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/PromotionApplyStatus.java

@@ -0,0 +1,35 @@
+package com.chelvc.cloud.vehicle.api.constant;
+
+import lombok.Getter;
+
+/**
+ * 促销活动申请状态枚举
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Getter
+public enum PromotionApplyStatus {
+
+    /**
+     * 申请
+     */
+    APPLY("申请"),
+    /**
+     * 通过
+     */
+    PASS("通过"),
+    /**
+     * 拒绝
+     */
+    REFUSE("拒绝");
+
+    /**
+     * 状态描述
+     */
+    private final String description;
+
+    PromotionApplyStatus(String description) {
+        this.description = description;
+    }
+}

+ 39 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/PromotionScopeType.java

@@ -0,0 +1,39 @@
+package com.chelvc.cloud.vehicle.api.constant;
+
+import lombok.Getter;
+
+/**
+ * 促销适用范围类型枚举
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Getter
+public enum PromotionScopeType {
+
+    /**
+     * 全品类
+     */
+    ALL("全品类"),
+    /**
+     * 部分商品分类
+     */
+    PORTION_GOODS_CATEGORY("部分商品分类"),
+    /**
+     * 部分店铺分类
+     */
+    PORTION_SHOP_CATEGORY("部分店铺分类"),
+    /**
+     * 指定商品
+     */
+    PORTION_GOODS("指定商品");
+
+    /**
+     * 状态描述
+     */
+    private final String description;
+
+    PromotionScopeType(String description) {
+        this.description = description;
+    }
+}

+ 74 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/CouponActivityDTO.java

@@ -0,0 +1,74 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
+import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import com.chelvc.cloud.vehicle.api.constant.PromotionScopeType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 优惠券活动信息
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CouponActivityDTO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 商家名称,如果是平台,这个值为platform
+     */
+    private String merchantName;
+
+    /**
+     * 商家id,如果是平台,这个值为0
+     */
+    private String merchantId;
+
+    /**
+     * 活动名称
+     */
+    private String promotionName;
+
+    /**
+     * 活动开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 活动名称
+     */
+    private Date endTime;
+
+    /**
+     * 关联范围类型
+     */
+    private PromotionScopeType scopeType;
+
+    /**
+     * 范围关联的id
+     */
+    private String scopeId;
+
+    /**
+     * 创建用户
+     */
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+}

+ 85 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponActivityModifyParam.java

@@ -0,0 +1,85 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
+import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 优惠券活动信息更新参数
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CouponActivityModifyParam implements Serializable {
+    /**
+     * 商家ID
+     */
+    @NotNull(message = "商家ID不能为空")
+	private Long merchantId;
+
+    /**
+     * 优惠券类型
+     */
+    @NotNull(message = "优惠券类型不能为空")
+	private CouponType type;
+
+    /**
+     * 优惠券名称
+     */
+    @NotEmpty(message = "优惠券名称不能为空")
+    @Size(max = 50, message = "优惠券名称长度不能大于50")
+	private String name;
+
+    /**
+     * 优惠金额
+     */
+    @NotNull(message = "优惠金额不能为空")
+    @DecimalMin(value = "0.00", message = "优惠金额不能小于0")
+    private Double amount;
+
+    /**
+     * 满减金额
+     */
+    @NotNull(message = "满减金额不能为空")
+    @DecimalMin(value = "0.00", message = "满减金额不能小于0")
+    private Double reduce;
+
+    /**
+     * 优惠折扣
+     */
+    @NotNull(message = "优惠折扣不能为空")
+    @DecimalMin(value = "0.00", message = "优惠折扣不能小于0")
+    private Double discount;
+
+    /**
+     * 过期时间
+     */
+    private Date expiration;
+
+    /**
+     * 优惠券描述
+     */
+    @NotEmpty(message = "优惠券描述不能为空")
+    @Size(max = 100, message = "优惠券描述长度不能大于100")
+    private String description;
+
+    /**
+     * 优惠券状态
+     */
+    @NotNull(message = "优惠券状态不能为空")
+    private CouponStatus status;
+}

+ 58 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponActivityPagingParam.java

@@ -0,0 +1,58 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import com.chelvc.cloud.vehicle.api.constant.CouponClaimType;
+import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
+import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import com.chelvc.framework.common.model.Paging;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 优惠券活动信息查询参数
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CouponActivityPagingParam implements Serializable {
+    /**
+     * 分页信息
+     */
+    @NotNull(message = "分页不能为空")
+    private Paging paging;
+
+    /**
+     * 关键字
+     */
+    @Size(max = 100, message = "关键字长度不能大于100")
+    private String keyword;
+
+    /**
+     * 优惠券类型
+     */
+    private CouponType couponType;
+
+    /**
+     * 优惠券状态
+     */
+    private CouponStatus couponStatus;
+
+    /**
+     * 优惠券领取方式
+     */
+    private CouponClaimType couponClaimType;
+
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+}

+ 54 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CouponActivityService.java

@@ -0,0 +1,54 @@
+package com.chelvc.cloud.vehicle.api.service;
+
+import com.chelvc.cloud.vehicle.api.dto.CouponActivityDTO;
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponActivityModifyParam;
+import com.chelvc.cloud.vehicle.api.param.CouponActivityPagingParam;
+import com.chelvc.framework.common.model.Pagination;
+
+/**
+ * 优惠券活动业务接口
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+public interface CouponActivityService {
+    /**
+     * 新增优惠券活动
+     *
+     * @param param 新增参数
+     * @return 优惠券活动主键
+     */
+    Long addCouponActivity(CouponActivityModifyParam param);
+
+    /**
+     * 修改优惠券活动
+     *
+     * @param id    优惠券活动主键
+     * @param param 修改参数
+     */
+    void updateCouponActivity(Long id, CouponActivityModifyParam param);
+
+    /**
+     * 删除优惠券活动
+     *
+     * @param id    优惠券活动主键
+     */
+    void deleteCouponActivity(Long id);
+
+    /**
+     * 获取优惠券活动信息
+     *
+     * @param id 优惠券活动主键
+     * @return 优惠券活动信息
+     */
+    CouponActivityDTO getCouponActivity(Long id);
+
+    /**
+     * 查询优惠券活动信息
+     *
+     * @param param 查询参数
+     * @return 优惠券活动分页信息
+     */
+    Pagination<CouponActivityDTO> getCouponActivityPaging(CouponActivityPagingParam param);
+}

+ 47 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/CouponActivityCopier.java

@@ -0,0 +1,47 @@
+package com.chelvc.cloud.vehicle.server.copier;
+
+import com.chelvc.cloud.vehicle.api.dto.CouponActivityDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponActivityModifyParam;
+import com.chelvc.cloud.vehicle.server.entity.CouponActivity;
+import org.mapstruct.Builder;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * 优惠券活动对象拷贝接口
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface CouponActivityCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    CouponActivityCopier INSTANCE = Mappers.getMapper(CouponActivityCopier.class);
+
+    /**
+     * 优惠券活动信息拷贝
+     *
+     * @param couponActivity 优惠券活动信息
+     * @return 优惠券活动信息
+     */
+    CouponActivityDTO copying(CouponActivity couponActivity);
+
+    /**
+     * 优惠券信息拷贝
+     *
+     * @param param 优惠券活动更新参数
+     * @return 优惠券活动信息
+     */
+    CouponActivity copying(CouponActivityModifyParam param);
+
+    /**
+     * 优惠券信息拷贝
+     *
+     * @param param  优惠券活动更新参数
+     * @param couponActivity 优惠券活动信息
+     */
+    void copying(CouponActivityModifyParam param, @MappingTarget CouponActivity couponActivity);
+}

+ 15 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CouponActivityMapper.java

@@ -0,0 +1,15 @@
+package com.chelvc.cloud.vehicle.server.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chelvc.cloud.vehicle.server.entity.CouponActivity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 优惠券活动数据操作接口
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Mapper
+public interface CouponActivityMapper extends BaseMapper<CouponActivity> {
+}

+ 86 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/BasePromotion.java

@@ -0,0 +1,86 @@
+package com.chelvc.cloud.vehicle.server.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.chelvc.cloud.vehicle.api.constant.PromotionScopeType;
+import com.chelvc.cloud.vehicle.api.constant.PromotionStatus;
+import com.chelvc.framework.database.entity.ModifyEntity;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+
+/**
+ * 优惠券数据模型
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+public class BasePromotion extends ModifyEntity<Long> {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 商家名称,如果是平台,这个值为platform
+     */
+    private String merchantName;
+
+    /**
+     * 商家id,如果是平台,这个值为0
+     */
+    private String merchantId;
+
+    /**
+     * 活动名称
+     */
+    private String promotionName;
+
+    /**
+     * 活动开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 活动名称
+     */
+    private Date endTime;
+
+    /**
+     * 关联范围类型
+     */
+    private String scopeType = PromotionScopeType.PORTION_GOODS.name();
+
+    /**
+     * 范围关联的id
+     */
+    private String scopeId;
+
+
+    /**
+     * @return 促销状态
+     */
+    public String getPromotionStatus() {
+        if (endTime == null) {
+            return startTime != null ? PromotionStatus.START.name() : PromotionStatus.CLOSE.name();
+        }
+        Date now = new Date();
+        if (now.before(startTime)) {
+            return PromotionStatus.NEW.name();
+        } else if (endTime.before(now)) {
+            return PromotionStatus.END.name();
+        } else if (now.before(endTime)) {
+            return PromotionStatus.START.name();
+        }
+        return PromotionStatus.CLOSE.name();
+    }
+}

+ 45 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/CouponActivity.java

@@ -0,0 +1,45 @@
+package com.chelvc.cloud.vehicle.server.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.chelvc.cloud.vehicle.api.constant.CouponActivitySendType;
+import com.chelvc.cloud.vehicle.api.constant.CouponActivityType;
+import com.chelvc.cloud.vehicle.api.constant.CouponFrequency;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 优惠券活动数据模型
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
+public class CouponActivity extends BasePromotion {
+
+    /**
+     * 优惠券活动类型
+     */
+    private CouponActivityType couponActivityType;
+
+    /**
+     * 活动范围
+     */
+    private CouponActivitySendType activityScope;
+
+    /**
+     * 领取周期
+     */
+    private CouponFrequency couponFrequency;
+
+    /**
+     * 活动范围详情,只有精准发券使用
+     */
+    private String activityScopeInfo;
+
+}

+ 46 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/CouponActivityItem.java

@@ -0,0 +1,46 @@
+package com.chelvc.cloud.vehicle.server.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.chelvc.framework.database.entity.ModifyEntity;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+
+/**
+ * 优惠券活动项目数据模型
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
+public class CouponActivityItem extends ModifyEntity<Long> {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 优惠券活动ID
+     */
+    private Long activityId;
+
+    /**
+     * 优惠券ID
+     */
+    private Long couponId;
+
+    /**
+     * 优惠券数量
+     */
+    private Integer num;
+}

+ 13 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CouponActivityService.java

@@ -0,0 +1,13 @@
+package com.chelvc.cloud.vehicle.server.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.chelvc.cloud.vehicle.server.entity.CouponActivity;
+
+/**
+ * 优惠券活动业务操作接口
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+public interface CouponActivityService extends IService<CouponActivity> {
+}

+ 89 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CouponActivityServiceImpl.java

@@ -0,0 +1,89 @@
+package com.chelvc.cloud.vehicle.server.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.vehicle.api.dto.CouponActivityDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponActivityModifyParam;
+import com.chelvc.cloud.vehicle.api.param.CouponActivityPagingParam;
+import com.chelvc.cloud.vehicle.server.copier.CouponActivityCopier;
+import com.chelvc.cloud.vehicle.server.dao.CouponActivityMapper;
+import com.chelvc.cloud.vehicle.server.entity.CouponActivity;
+import com.chelvc.cloud.vehicle.server.service.CouponActivityService;
+import com.chelvc.framework.base.util.ResourceUtils;
+import com.chelvc.framework.common.model.Pagination;
+import com.chelvc.framework.database.util.PagingUtils;
+import lombok.NonNull;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 优惠券活动业务操作实现
+ *
+ * @author qizai
+ * @date 2023/11/10
+ */
+@DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.CouponActivityService.class)
+public class CouponActivityServiceImpl extends ServiceImpl<CouponActivityMapper, CouponActivity> implements CouponActivityService,
+        com.chelvc.cloud.vehicle.api.service.CouponActivityService {
+
+    @Override
+    public Long addCouponActivity(@NonNull CouponActivityModifyParam param) {
+        CouponActivity couponActivity = CouponActivityCopier.INSTANCE.copying(param);
+        this.save(couponActivity);
+        return couponActivity.getId();
+    }
+
+    @Override
+    public void updateCouponActivity(@NonNull Long id, @NonNull CouponActivityModifyParam param) {
+        CouponActivity couponActivity = ResourceUtils.required(this.getById(id), "优惠券活动不存在");
+        CouponActivityCopier.INSTANCE.copying(param, couponActivity);
+        this.updateById(couponActivity);
+    }
+
+    @Override
+    public void deleteCouponActivity(@NonNull Long id) {
+        ResourceUtils.required(this.getById(id), "优惠券活动不存在");
+        this.baseMapper.deleteById(id);
+    }
+
+    @Override
+    public CouponActivityDTO getCouponActivity(@NonNull Long id) {
+        CouponActivity couponActivity = ResourceUtils.required(this.getById(id), "优惠券活动不存在");
+        return this.convert(couponActivity);
+    }
+
+    @Override
+    public Pagination<CouponActivityDTO> getCouponActivityPaging(@NonNull CouponActivityPagingParam param) {
+        // 查询优惠券列表
+        Page<CouponActivity> page = this.lambdaQuery()
+                .eq(Objects.nonNull(param.getMerchantId()), CouponActivity::getMerchantId, param.getMerchantId())
+                .eq(Objects.nonNull(param.getCouponType()), CouponActivity::getCouponActivityType, param.getCouponType())
+                .eq(Objects.nonNull(param.getCouponStatus()), CouponActivity::getCouponFrequency, param.getCouponStatus())
+                .eq(Objects.nonNull(param.getCouponClaimType()), CouponActivity::getActivityScope, param.getCouponClaimType())
+                .or().like(!StringUtils.isEmpty(param.getKeyword()), CouponActivity::getPromotionName, param.getKeyword())
+                .orderByDesc(CouponActivity::getCreateTime).page(PagingUtils.convert(param.getPaging()));
+        List<CouponActivity> records = page.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return Pagination.empty();
+        }
+
+        // 构建优惠券信息
+        List<CouponActivityDTO> clients = records.stream().map(this::convert).collect(Collectors.toList());
+        return PagingUtils.convert(page, clients);
+    }
+
+    /**
+     * 转换优惠券活动信息
+     *
+     * @param couponActivity 优惠券活动实例
+     * @return 优惠券活动信息
+     */
+    private CouponActivityDTO convert(CouponActivity couponActivity) {
+        return CouponActivityCopier.INSTANCE.copying(couponActivity);
+    }
+}

+ 5 - 0
vehicle-server/src/main/resources/mapper/CouponActivityMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.chelvc.cloud.vehicle.server.dao.CouponActivityMapper">
+
+</mapper>