wangzhijun 3 өдөр өмнө
parent
commit
d4b038453f

+ 12 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/point/PointActivityController.java

@@ -12,6 +12,7 @@ import com.ylx.point.domain.dto.PointActivityValidityDTO;
 import com.ylx.point.domain.vo.PointActivityDetailsVo;
 import com.ylx.point.domain.vo.PointActivityPageVo;
 import com.ylx.point.domain.vo.PointActivityStatVo;
+import com.ylx.point.domain.vo.PointActivityValidityVo;
 import com.ylx.point.service.IPointActivityService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -106,4 +107,15 @@ public class PointActivityController extends BaseController {
         return success();
     }
 
+    /**
+     * 修改积分活动主
+     */
+    @PreAuthorize("@ss.hasPermi('point:activity:query')")
+    @ApiOperation("积分活动时效回显")
+    @GetMapping(value = "/validity/details")
+    public AjaxResult validityDetails() {
+        List<PointActivityValidityVo> list = this.pointActivityService.validityDetails();
+        return success(list);
+    }
+
 }

+ 3 - 15
nightFragrance-massage/src/main/java/com/ylx/point/domain/PointActivity.java

@@ -69,22 +69,10 @@ public class PointActivity extends BaseEntity {
     private String isPermanent;
 
     /**
-     * 过期策略: 1=永久有效, 2=逐笔过期(N天), 3=逐年过期(N年)
+     * 过期策略id
      */
-    @Excel(name = "过期策略: 1=永久有效, 2=逐笔过期(N天), 3=逐年过期(N年)")
-    private Integer expirePolicy;
-
-    /**
-     * 有效期天数 (仅当 expire_policy=2 时有效)
-     */
-    @Excel(name = "有效期天数 (仅当 expire_policy=2 时有效)")
-    private Long expireDays;
-
-    /**
-     * 逐年过期年份 (expire_policy=3时有效,如 "2027" 表示2027年1月1日过期)
-     */
-    @Excel(name = "逐年过期年份 (expire_policy=3时有效)")
-    private String expireYear;
+    @Excel(name = "过期策略id")
+    private Long expirePolicyId;
 
     /**
      * 状态: 0=未开始, 1=进行中, 2=已结束, 3=草稿

+ 53 - 0
nightFragrance-massage/src/main/java/com/ylx/point/domain/PointActivityExpirePolicy.java

@@ -0,0 +1,53 @@
+package com.ylx.point.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ylx.common.annotation.Excel;
+import com.ylx.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 积分活动过期策略表对象 point_activity_expire_policy
+ *
+ * @author wzj
+ * @date 2026-03-25
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PointActivityExpirePolicy extends BaseEntity {
+    private static final long serialVersionUID = 1876690137251883567L;
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+
+    /**
+     * 活动类型:0(签到活动), 1(新手活动), 2(每日活动), 3(每月活动)
+     */
+    @Excel(name = "活动类型:0(签到活动), 1(新手活动), 2(每日活动), 3(每月活动)")
+    private Integer activityType;
+
+    /**
+     * 过期策略: 1=永久有效, 2=逐笔过期(N天), 3=逐年过期(N年)
+     */
+    @Excel(name = "过期策略: 1=永久有效, 2=逐笔过期(N天), 3=逐年过期(N年)")
+    private Integer expirePolicy;
+
+    /**
+     * 有效期天数 (仅当 expire_policy=2 时有效)
+     */
+    @Excel(name = "有效期天数 (仅当 expire_policy=2 时有效)")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Long expireDays;
+
+    /**
+     * 逐年过期年份 (expire_policy=3时有效,如 "2027" 表示2027年1月1日过期)
+     */
+    @Excel(name = "逐年过期年份 (expire_policy=3时有效)")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String expireYear;
+
+}

+ 25 - 0
nightFragrance-massage/src/main/java/com/ylx/point/domain/vo/PointActivityValidityVo.java

@@ -0,0 +1,25 @@
+package com.ylx.point.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = false)
+@Data
+@ApiModel("详情vo")
+public class PointActivityValidityVo {
+
+    @ApiModelProperty("活动类型")
+    private String activityType;
+
+    @ApiModelProperty("过期策略: 1=永久有效, 2=逐笔过期(N天), 3=逐年过期(N年)")
+    private Integer expirePolicy;
+
+    @ApiModelProperty("有效期天数 (仅当 expire_policy=2 时有效)")
+    private Long expireDays;
+
+    @ApiModelProperty("逐年过期年份 (expire_policy=3时有效)")
+    private String expireYear;
+
+}

+ 7 - 0
nightFragrance-massage/src/main/java/com/ylx/point/mapper/PointActivityExpirePolicyMapper.java

@@ -0,0 +1,7 @@
+package com.ylx.point.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ylx.point.domain.PointActivityExpirePolicy;
+
+public interface PointActivityExpirePolicyMapper extends BaseMapper<PointActivityExpirePolicy> {
+}

+ 16 - 0
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointActivityExpirePolicyService.java

@@ -0,0 +1,16 @@
+package com.ylx.point.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ylx.point.domain.PointActivityExpirePolicy;
+
+/**
+ * 积分活动过期策略表Service接口
+ *
+ * @author wzj
+ * @date 2026-03-25
+ */
+public interface IPointActivityExpirePolicyService extends IService<PointActivityExpirePolicy> {
+
+    PointActivityExpirePolicy selectPointActivityExpirePolicyByActivityType(Integer activityType);
+
+}

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointActivityService.java

@@ -8,6 +8,7 @@ import com.ylx.point.domain.dto.PointActivityValidityDTO;
 import com.ylx.point.domain.vo.PointActivityDetailsVo;
 import com.ylx.point.domain.vo.PointActivityPageVo;
 import com.ylx.point.domain.vo.PointActivityStatVo;
+import com.ylx.point.domain.vo.PointActivityValidityVo;
 
 import java.util.List;
 
@@ -31,4 +32,5 @@ public interface IPointActivityService extends IService<PointActivity> {
 
     void editValidity(PointActivityValidityDTO dto);
 
+    List<PointActivityValidityVo> validityDetails();
 }

+ 26 - 0
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/IPointActivityExpirePolicyServiceImpl.java

@@ -0,0 +1,26 @@
+package com.ylx.point.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ylx.point.domain.PointActivityExpirePolicy;
+import com.ylx.point.mapper.PointActivityExpirePolicyMapper;
+import com.ylx.point.service.IPointActivityExpirePolicyService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class IPointActivityExpirePolicyServiceImpl extends ServiceImpl<PointActivityExpirePolicyMapper, PointActivityExpirePolicy> implements IPointActivityExpirePolicyService {
+
+    @Resource
+    private PointActivityExpirePolicyMapper pointActivityExpirePolicyMapper;
+
+
+    @Override
+    public PointActivityExpirePolicy selectPointActivityExpirePolicyByActivityType(Integer activityType) {
+        LambdaQueryWrapper<PointActivityExpirePolicy> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PointActivityExpirePolicy::getActivityType, activityType);
+        return pointActivityExpirePolicyMapper.selectOne(queryWrapper);
+    }
+
+}

+ 161 - 47
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -5,29 +5,26 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.common.exception.base.BaseException;
 import com.ylx.common.utils.DateUtils;
-import com.ylx.point.domain.PointActivity;
-import com.ylx.point.domain.PointActivityTask;
-import com.ylx.point.domain.PointSignReward;
-import com.ylx.point.domain.PointSignTask;
+import com.ylx.point.domain.*;
 import com.ylx.point.domain.dto.*;
 import com.ylx.point.domain.vo.*;
-import com.ylx.point.enums.PointActivityExpirePolicyEnum;
 import com.ylx.point.enums.PointActivityStatusEnum;
 import com.ylx.point.enums.PointActivityTypeEnum;
 import com.ylx.point.mapper.PointActivityMapper;
 import com.ylx.point.service.*;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.time.DateTimeException;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -39,9 +36,10 @@ import java.util.stream.Collectors;
  * @author wzj
  * @date 2026-03-25
  */
+@Slf4j
 @Service
 public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, PointActivity> implements IPointActivityService {
-    @Autowired
+    @Resource
     private PointActivityMapper pointActivityMapper;
     @Autowired
     private IPointActivityTaskService pointActivityTaskService;
@@ -51,6 +49,16 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
     private IPointSignRewardService pointSignRewardService;
     @Autowired
     private IPointUserActivityTaskCompletionService pointUserActivityTaskCompletionService;
+    @Autowired
+    private IPointActivityExpirePolicyService pointActivityExpirePolicyService;
+
+    private static final int BATCH_SIZE = 1000;
+
+    private static final String INVALID_ARGUMENT_MESSAGE = "参数不能为空";
+    private static final String INVALID_EXPIRE_POLICY_TYPE_MESSAGE = "无效的过期策略类型";
+    private static final String EXPIRE_DAYS_REQUIRED_MESSAGE = "过期天数不能为空";
+    private static final String EXPIRE_YEAR_REQUIRED_MESSAGE = "过期年数不能为空";
+    private static final String UPDATE_FAILED_MESSAGE = "更新积分活动过期策略失败";
 
 
     @Override
@@ -155,25 +163,60 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
     public void editValidity(PointActivityValidityDTO dto) {
 
         // 根据dto中activityType获取全部的活动list
-        LambdaQueryWrapper<PointActivity> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PointActivity::getActivityType, dto.getActivityType());
         PointActivity pointActivity = new PointActivity();
         pointActivity.setActivityType(dto.getActivityType());
         List<PointActivity> activityList = pointActivityMapper.selectPointActivityList(pointActivity);
+
+        // 根据类型获取积分活动过期策略表数据
+        PointActivityExpirePolicy expirePolicy = pointActivityExpirePolicyService.selectPointActivityExpirePolicyByActivityType(dto.getActivityType());
         if (CollectionUtil.isEmpty(activityList)) {
-            throw new BaseException("该类型的活动不存在,设置失败");
+            // 更新积分活动过期策略表
+            this.saveOrUpdatePointActivityExpirePolicy(expirePolicy, dto);
+        } else {
+            // 判断活动list中只要有活动的状态为"进行中",修改就失败
+            boolean hasOngoingActivity = activityList.stream()
+                    .anyMatch(activity -> PointActivityStatusEnum.IN_PROGRESS.getCode().equals(activity.getStatus()));
+            if (hasOngoingActivity) {
+                throw new BaseException("存在进行中的活动,无法修改有效期");
+            }
+            // 更新积分活动过期策略表
+            this.saveOrUpdatePointActivityExpirePolicy(expirePolicy, dto);
+            // 批量更新活动的有效期策略
+            batchUpdateExpirePolicy(activityList, expirePolicy.getId());
         }
 
-        // 判断活动list中只要有活动的状态为"进行中",修改就失败
-        boolean hasOngoingActivity = activityList.stream()
-                .anyMatch(activity -> PointActivityStatusEnum.IN_PROGRESS.getCode().equals(activity.getStatus()));
-        if (hasOngoingActivity) {
-            throw new BaseException("存在进行中的活动,无法修改有效期");
-        }
+    }
 
-        // 批量更新活动的有效期策略
-        batchUpdateExpirePolicy(activityList, dto);
+    @Override
+    public List<PointActivityValidityVo> validityDetails() {
+        try {
+            // 查询所有过期策略
+            List<PointActivityExpirePolicy> expirePolicies = this.pointActivityExpirePolicyService.list();
+
+            // 如果没有数据,返回空列表
+            if (CollectionUtil.isEmpty(expirePolicies)) {
+                log.debug("没有查询到积分活动过期策略数据");
+                return Collections.emptyList();
+            }
+
+            // 转换为VO对象
+            List<PointActivityValidityVo> result = expirePolicies.stream()
+                    .map(this::convertToVo)
+                    .collect(Collectors.toList());
+
+            log.info("成功查询到 {} 条积分活动有效期详情", result.size());
+            return result;
+        } catch (Exception e) {
+            log.error("查询积分活动有效期详情失败", e);
+            throw new BaseException("查询积分活动有效期详情失败");
+        }
+    }
 
+    private PointActivityValidityVo convertToVo(PointActivityExpirePolicy policy) {
+        PointActivityValidityVo vo = new PointActivityValidityVo();
+        BeanUtil.copyProperties(policy, vo);
+        // 可以在这里添加额外的转换逻辑
+        return vo;
     }
 
     private void validateActivityDTO(PointActivityDTO dto) {
@@ -219,10 +262,71 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         }
     }
 
-    private void updateActivity(PointActivity entity) {
-        int affectedRows = pointActivityMapper.updatePointActivity(entity);
-        if (affectedRows <= 0) {
-            throw new BaseException("更新积分活动失败");
+    private void saveOrUpdatePointActivityExpirePolicy(PointActivityExpirePolicy expirePolicy, PointActivityValidityDTO dto) {
+
+        // 参数校验
+        if (ObjectUtil.isNull(dto)) {
+            throw new IllegalArgumentException("参数不能为空");
+        }
+
+
+        // 根据expirePolicy类型设置对应的过期时间
+        Integer expirePolicyCode = dto.getExpirePolicy();
+        if (ObjectUtil.isNull(expirePolicyCode)) {
+            throw new IllegalArgumentException("过期策略类型不能为空");
+        }
+
+        // 准备要保存或更新的实体
+        PointActivityExpirePolicy entity = expirePolicy != null ? expirePolicy : new PointActivityExpirePolicy();
+
+        // 设置基本信息
+        entity.setActivityType(dto.getActivityType());
+        entity.setExpirePolicy(dto.getExpirePolicy());
+
+        // 根据过期策略类型设置对应的过期时间
+        setExpireTimeByPolicyType(entity, dto, expirePolicyCode);
+
+        // 保存或更新
+        saveOrUpdateExpirePolicy(entity, dto.getActivityType());
+    }
+
+    private void setExpireTimeByPolicyType(PointActivityExpirePolicy entity, PointActivityValidityDTO dto, Integer expirePolicyCode) {
+        // 先清空所有过期时间字段
+        entity.setExpireDays(null);
+        entity.setExpireYear(null);
+
+        // 根据策略类型设置对应的过期时间
+        switch (expirePolicyCode) {
+            case 1: // PERMANENT_VALID - 永久有效
+                // 已经清空了过期天数和年数,无需额外操作
+                break;
+            case 2: // TRANSACTION_EXPIRE - 按交易过期
+                if (dto.getExpireDays() == null) {
+                    throw new IllegalArgumentException(EXPIRE_DAYS_REQUIRED_MESSAGE);
+                }
+                entity.setExpireDays(dto.getExpireDays());
+                break;
+            case 3: // YEARLY_EXPIRE - 按年过期
+                if (dto.getExpireYear() == null) {
+                    throw new IllegalArgumentException(EXPIRE_YEAR_REQUIRED_MESSAGE);
+                }
+                entity.setExpireYear(dto.getExpireYear());
+                break;
+            default:
+                throw new IllegalArgumentException(INVALID_EXPIRE_POLICY_TYPE_MESSAGE);
+        }
+    }
+
+    private void saveOrUpdateExpirePolicy(PointActivityExpirePolicy entity, Integer activityType) {
+        try {
+            boolean isSuccess = pointActivityExpirePolicyService.updateById(entity);
+            if (!isSuccess) {
+                log.error("保存或更新积分活动过期策略失败, activityType: {}", activityType);
+                throw new BaseException(UPDATE_FAILED_MESSAGE);
+            }
+        } catch (Exception e) {
+            log.error("保存或更新积分活动过期策略时发生异常, activityType: {}", activityType, e);
+            throw new BaseException(UPDATE_FAILED_MESSAGE);
         }
     }
 
@@ -242,6 +346,13 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         }
     }
 
+    private void updateActivity(PointActivity entity) {
+        int affectedRows = pointActivityMapper.updatePointActivity(entity);
+        if (affectedRows <= 0) {
+            throw new BaseException("更新积分活动失败");
+        }
+    }
+
     private void saveSignTaskDetails(PointActivityDTO dto, Long activityId) {
         PointSignTaskDTO signTaskDTO = dto.getSignTaskDTO();
         if (ObjectUtil.isNull(signTaskDTO)) {
@@ -438,32 +549,35 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         pointActivityTaskService.batchInsertPointActivityTask(activityTasks);
     }
 
-    private void batchUpdateExpirePolicy(List<PointActivity> activityList, PointActivityValidityDTO dto) {
-        Integer expirePolicy = dto.getExpirePolicy();
-
-        // 使用Stream处理活动列表
-        List<PointActivity> updateList = activityList.stream()
-                .peek(activity -> {
-                    activity.setExpirePolicy(expirePolicy);
-
-                    // 根据策略设置不同的过期时间字段
-                    if (PointActivityExpirePolicyEnum.TRANSACTION_EXPIRE.getCode().equals(expirePolicy)) {
-                        activity.setExpireDays(dto.getExpireDays());
-                        activity.setExpireYear(null);
-                    } else if (PointActivityExpirePolicyEnum.YEARLY_EXPIRE.getCode().equals(expirePolicy)) {
-                        activity.setExpireYear(dto.getExpireYear());
-                        activity.setExpireDays(null);
-                    } else {
-                        activity.setExpireDays(null);
-                        activity.setExpireYear(null);
-                    }
-                })
-                .collect(Collectors.toList());
+    private void batchUpdateExpirePolicy(List<PointActivity> activityList, Long expirePolicyId) {
+        // 参数校验
+        if (CollectionUtil.isEmpty(activityList)) {
+            log.debug("活动列表为空,无需更新过期策略");
+            return;
+        }
+
+        if (expirePolicyId == null) {
+            throw new IllegalArgumentException("过期策略ID不能为空");
+        }
 
-        // 批量更新数据库
-        if (CollectionUtil.isNotEmpty(updateList)) {
-            super.updateBatchById(updateList);
+        try {
+            // 使用Stream处理活动列表,设置过期策略ID
+            List<PointActivity> activitiesToUpdate = activityList.stream()
+                    .map(activity -> {
+                        activity.setExpirePolicyId(expirePolicyId);
+                        return activity;
+                    })
+                    .collect(Collectors.toList());
+
+            // 批量更新数据库
+            super.updateBatchById(activitiesToUpdate, BATCH_SIZE);
+
+            log.info("成功更新 {} 个活动的过期策略为 {}", activitiesToUpdate.size(), expirePolicyId);
+        } catch (Exception e) {
+            log.error("批量更新活动过期策略失败, expirePolicyId: {}", expirePolicyId, e);
+            throw new BaseException("批量更新活动过期策略失败");
         }
     }
 
+
 }

+ 19 - 0
nightFragrance-massage/src/main/resources/mapper/point/PointActivityExpirePolicyMapper.xml

@@ -0,0 +1,19 @@
+<?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.ylx.point.mapper.PointActivityExpirePolicyMapper">
+
+    <resultMap type="PointActivityExpirePolicy" id="PointActivityExpirePolicyResult">
+        <result property="id"    column="id"    />
+        <result property="activityType"    column="activity_type"    />
+        <result property="expirePolicy"    column="expire_policy"    />
+        <result property="expireDays"    column="expire_days"    />
+        <result property="expireYear"    column="expire_year"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+</mapper>

+ 6 - 16
nightFragrance-massage/src/main/resources/mapper/point/PointActivityMapper.xml

@@ -13,9 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="startTime"    column="start_time"    />
         <result property="endTime"    column="end_time"    />
         <result property="isPermanent"    column="is_permanent"    />
-        <result property="expirePolicy"    column="expire_policy"    />
-        <result property="expireDays"    column="expire_days"    />
-        <result property="expireYear"    column="expire_year"    />
+        <result property="expirePolicyId"    column="expire_policy_id"    />
         <result property="status"    column="status"    />
         <result property="sortOrder"    column="sort_order"    />
         <result property="createBy"    column="create_by"    />
@@ -25,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectPointActivityVo">
-        select id, name, description, activity_type, city_code, start_time, end_time, is_permanent, expire_policy, expire_days, expire_year, status, sort_order, create_by, create_time, update_by, update_time from point_activity
+        select id, name, description, activity_type, city_code, start_time, end_time, is_permanent, expire_policy_id, status, sort_order, create_by, create_time, update_by, update_time from point_activity
     </sql>
 
     <select id="selectPointActivityList" parameterType="PointActivity" resultMap="PointActivityResult">
@@ -38,9 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null "> and start_time = #{startTime}</if>
             <if test="endTime != null "> and end_time = #{endTime}</if>
             <if test="isPermanent != null "> and is_permanent = #{isPermanent}</if>
-            <if test="expirePolicy != null "> and expire_policy = #{expirePolicy}</if>
-            <if test="expireDays != null "> and expire_days = #{expireDays}</if>
-            <if test="expireYear != null  and expireYear != ''"> and expire_year = #{expireYear}</if>
+            <if test="expirePolicyId != null "> and expire_policy_id = #{expirePolicyId}</if>
             <if test="status != null "> and status = #{status}</if>
             <if test="sortOrder != null "> and sort_order = #{sortOrder}</if>
         </where>
@@ -98,9 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null">start_time,</if>
             <if test="endTime != null">end_time,</if>
             <if test="isPermanent != null">is_permanent,</if>
-            <if test="expirePolicy != null">expire_policy,</if>
-            <if test="expireDays != null">expire_days,</if>
-            <if test="expireYear != null">expire_year,</if>
+            <if test="expirePolicyId != null">expire_policy_id,</if>
             <if test="status != null">status,</if>
             <if test="sortOrder != null">sort_order,</if>
             <if test="createBy != null">create_by,</if>
@@ -116,9 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null">#{startTime,jdbcType=TIMESTAMP},</if>
             <if test="endTime != null">#{endTime,jdbcType=TIMESTAMP},</if>
             <if test="isPermanent != null">#{isPermanent},</if>
-            <if test="expirePolicy != null">#{expirePolicy},</if>
-            <if test="expireDays != null">#{expireDays},</if>
-            <if test="expireYear != null">#{expireYear},</if>
+            <if test="expirePolicyId != null">#{expirePolicyId},</if>
             <if test="status != null">#{status},</if>
             <if test="sortOrder != null">#{sortOrder},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -138,9 +130,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null">start_time = #{startTime},</if>
             <if test="endTime != null">end_time = #{endTime},</if>
             <if test="isPermanent != null">is_permanent = #{isPermanent},</if>
-            <if test="expirePolicy != null">expire_policy = #{expirePolicy},</if>
-            <if test="expireDays != null">expire_days = #{expireDays},</if>
-            <if test="expireYear != null">expire_year = #{expireYear},</if>
+            <if test="expirePolicyId != null">expire_policy_id = #{expirePolicyId},</if>
             <if test="status != null">status = #{status},</if>
             <if test="sortOrder != null">sort_order = #{sortOrder},</if>
             <if test="createBy != null">create_by = #{createBy},</if>