瀏覽代碼

提交积分规则相关代码

wangzhijun 5 天之前
父節點
當前提交
1cc4e63aba

+ 0 - 2
nightFragrance-massage/src/main/java/com/ylx/point/domain/vo/PointActivityPageVo.java

@@ -21,7 +21,6 @@ public class PointActivityPageVo {
     @ApiModelProperty(name = "活动名称")
     private String name;
 
-    @JsonIgnore
     @EnumTranslate(enumClass = PointActivityTypeEnum.class)
     private Integer activityType;
 
@@ -45,7 +44,6 @@ public class PointActivityPageVo {
     @ApiModelProperty(name = "是否长期有效 (1:是, 0:否)")
     private Integer isPermanent;
 
-    @JsonIgnore
     @EnumTranslate(enumClass = PointActivityStatusEnum.class)
     private Integer status;
 

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/point/mapper/PointActivityTaskMapper.java

@@ -32,4 +32,6 @@ public interface PointActivityTaskMapper {
      * @return 任务列表
      */
     List<PointActivityTask> selectPointActivityTaskByActivityId(@Param("activityId") Long activityId);
+
+    int deletePointActivityTaskByActivityId(Long activityId);
 }

+ 4 - 9
nightFragrance-massage/src/main/java/com/ylx/point/mapper/PointSignTaskMapper.java

@@ -5,22 +5,17 @@ import com.ylx.point.domain.vo.PointSignTaskVo;
 
 /**
  * 积分签到任务规则Mapper接口
- * 
+ *
  * @author wzj
  * @date 2026-03-25
  */
-public interface PointSignTaskMapper 
-{
+public interface PointSignTaskMapper {
 
-    /**
-     * 删除积分签到任务规则
-     * 
-     * @param id 积分签到任务规则主键
-     * @return 结果
-     */
     public int deletePointSignTaskById(String id);
 
     PointSignTaskVo getTaskWithRewards(Long activityId);
 
     int insertPointSignTask(PointSignTask pointSignTask);
+
+    int updatePointSignTask(PointSignTask pointSignTask);
 }

+ 2 - 10
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointActivityTaskService.java

@@ -13,17 +13,9 @@ import java.util.List;
  */
 public interface IPointActivityTaskService {
 
-    /**
-     * 删除积分活动任务规则信息
-     *
-     * @param id 积分活动任务规则主键
-     * @return 结果
-     */
-    public int deletePointActivityTaskById(String id);
-
     List<PointActivityTaskDTO>  selectPointActivityTaskByActivityId(Long id);
 
-    void insertPointActivityTask(PointActivityTask pointActivityTask);
-
     void batchInsertPointActivityTask(List<PointActivityTask> activityTasks);
+
+    void deletePointActivityTaskByActivityId(Long activityId);
 }

+ 4 - 36
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointSignRewardService.java

@@ -6,59 +6,27 @@ import java.util.List;
 
 /**
  * 签到动态奖励配置Service接口
- * 
+ *
  * @author wzj
  * @date 2026-03-25
  */
-public interface IPointSignRewardService 
-{
-    /**
-     * 查询签到动态奖励配置
-     * 
-     * @param id 签到动态奖励配置主键
-     * @return 签到动态奖励配置
-     */
-    public PointSignReward selectPointSignRewardById(String id);
+public interface IPointSignRewardService {
 
     /**
      * 查询签到动态奖励配置列表
-     * 
+     *
      * @param pointSignReward 签到动态奖励配置
      * @return 签到动态奖励配置集合
      */
     public List<PointSignReward> selectPointSignRewardList(PointSignReward pointSignReward);
 
-    /**
-     * 新增签到动态奖励配置
-     * 
-     * @param pointSignReward 签到动态奖励配置
-     * @return 结果
-     */
-    public int insertPointSignReward(PointSignReward pointSignReward);
-
-    /**
-     * 修改签到动态奖励配置
-     * 
-     * @param pointSignReward 签到动态奖励配置
-     * @return 结果
-     */
-    public int updatePointSignReward(PointSignReward pointSignReward);
-
     /**
      * 批量删除签到动态奖励配置
-     * 
+     *
      * @param ids 需要删除的签到动态奖励配置主键集合
      * @return 结果
      */
     public int deletePointSignRewardByIds(String[] ids);
 
-    /**
-     * 删除签到动态奖励配置信息
-     * 
-     * @param id 签到动态奖励配置主键
-     * @return 结果
-     */
-    public int deletePointSignRewardById(String id);
-
     void batchInsertPointSignReward(List<PointSignReward> rewards);
 }

+ 2 - 7
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointSignTaskService.java

@@ -19,13 +19,8 @@ public interface IPointSignTaskService {
      * @return 结果
      */
     public int insertPointSignTask(PointSignTask pointSignTask);
-    /**
-     * 删除积分签到任务规则信息
-     *
-     * @param id 积分签到任务规则主键
-     * @return 结果
-     */
-    public int deletePointSignTaskById(String id);
 
     PointSignTaskVo selectPointSignTaskByActivityId(Long id);
+
+    int updatePointSignTask(PointSignTask pointSignTask);
 }

+ 134 - 0
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -100,6 +100,30 @@ public class PointActivityServiceImpl implements IPointActivityService {
     @Transactional(rollbackFor = Exception.class)
     public void edit(PointActivityDTO dto) {
 
+        // 校验参数
+        Long id = dto.getId();
+        if (ObjectUtil.isNull(id)) {
+            throw new BaseException("活动主键id不能为空");
+        }
+
+        // 根据id获取活动详情
+        PointActivity entity = this.pointActivityMapper.selectPointActivityById(id);
+        if (ObjectUtil.isNull(entity)) {
+            throw new BaseException("参数有误,活动不存在");
+        }
+
+        // 校验活动状态
+        if (PointActivityStatusEnum.IN_PROGRESS.getCode().equals(entity.getStatus())) {
+            throw new BaseException("活动进行中,不可编辑");
+        }
+
+        // 更新活动信息
+        entity = createActivityEntity(dto);
+        updateActivity(entity);
+
+        // 更新活动详情信息
+        updateActivityDetails(dto, id);
+
     }
 
     @Override
@@ -156,6 +180,13 @@ public class PointActivityServiceImpl implements IPointActivityService {
         }
     }
 
+    private void updateActivity(PointActivity entity) {
+        int affectedRows = pointActivityMapper.updatePointActivity(entity);
+        if (affectedRows <= 0) {
+            throw new BaseException("更新积分活动失败");
+        }
+    }
+
     private void saveActivityDetails(PointActivityDTO dto, Long activityId) {
         if (PointActivityTypeEnum.SIGN_TASK.getCode().equals(dto.getActivityType())) {
             saveSignTaskDetails(dto, activityId);
@@ -164,6 +195,14 @@ public class PointActivityServiceImpl implements IPointActivityService {
         }
     }
 
+    private void updateActivityDetails(PointActivityDTO dto, Long activityId) {
+        if (PointActivityTypeEnum.SIGN_TASK.getCode().equals(dto.getActivityType())) {
+            updateSignTaskDetails(dto, activityId);
+        } else {
+            updateActivityTaskDetails(dto, activityId);
+        }
+    }
+
     private void saveSignTaskDetails(PointActivityDTO dto, Long activityId) {
         PointSignTaskDTO signTaskDTO = dto.getSignTaskDTO();
         if (ObjectUtil.isNull(signTaskDTO)) {
@@ -265,4 +304,99 @@ public class PointActivityServiceImpl implements IPointActivityService {
             return PointActivityStatusEnum.IN_PROGRESS.getCode();
         }
     }
+
+    /**
+     * 更新签到任务详情
+     */
+    private void updateSignTaskDetails(PointActivityDTO dto, Long activityId) {
+        PointSignTaskDTO signTaskDTO = dto.getSignTaskDTO();
+        if (ObjectUtil.isNull(signTaskDTO)) {
+            throw new BaseException("签到任务配置不能为空");
+        }
+
+        // 获取现有的签到任务
+        PointSignTaskVo existingTask = pointSignTaskService.selectPointSignTaskByActivityId(activityId);
+
+        // 更新签到任务基本信息
+        PointSignTask pointSignTask = new PointSignTask();
+        pointSignTask.setId(existingTask.getId());
+        pointSignTask.setBasePoints(signTaskDTO.getBasePoints());
+        pointSignTask.setBreakRule(signTaskDTO.getBreakRule());
+
+        // 更新签到任务
+        int affectedRows = pointSignTaskService.updatePointSignTask(pointSignTask);
+        if (affectedRows <= 0) {
+            throw new BaseException("更新积分签到任务规则失败");
+        }
+
+        // 更新签到奖励配置
+        updateSignRewards(signTaskDTO.getSignRewardList(), existingTask.getId());
+    }
+
+    /**
+     * 更新签到奖励配置
+     */
+    private void updateSignRewards(List<PointSignRewardDTO> rewardList, Long taskId) {
+        // 先删除原有的奖励配置
+        PointSignReward query = new PointSignReward();
+        query.setSignTaskId(taskId);
+        List<PointSignReward> existingRewards = pointSignRewardService.selectPointSignRewardList(query);
+
+        if (CollectionUtil.isNotEmpty(existingRewards)) {
+            String[] ids = existingRewards.stream()
+                    .map(reward -> String.valueOf(reward.getId()))
+                    .toArray(String[]::new);
+            pointSignRewardService.deletePointSignRewardByIds(ids);
+        }
+
+        // 重新插入新的奖励配置
+        if (CollectionUtil.isEmpty(rewardList)) {
+            return;
+        }
+
+        List<PointSignReward> rewards = rewardList.stream()
+                .map(dto -> {
+                    PointSignReward reward = new PointSignReward();
+                    reward.setRewardPoints(dto.getRewardPoints());
+                    reward.setContinueDays(dto.getContinueDays());
+                    reward.setCreateTime(new Date());
+                    reward.setUpdateTime(reward.getCreateTime());
+                    reward.setIsDeleted(0);
+                    reward.setSignTaskId(taskId);
+                    return reward;
+                })
+                .collect(Collectors.toList());
+
+        pointSignRewardService.batchInsertPointSignReward(rewards);
+    }
+
+    /**
+     * 更新活动任务详情
+     */
+    private void updateActivityTaskDetails(PointActivityDTO dto, Long activityId) {
+
+        // 先删除原有的活动任务
+        pointActivityTaskService.deletePointActivityTaskByActivityId(activityId);
+
+        // 重新插入新的活动任务
+        List<PointActivityTaskDTO> tasks = dto.getTasks();
+        if (CollectionUtil.isEmpty(tasks)) {
+            return;
+        }
+
+        List<PointActivityTask> activityTasks = tasks.stream()
+                .map(task -> {
+                    PointActivityTask activityTask = new PointActivityTask();
+                    BeanUtil.copyProperties(task, activityTask);
+                    activityTask.setActivityId(activityId);
+                    activityTask.setIsDeleted(0);
+                    activityTask.setCreateTime(new Date());
+                    activityTask.setUpdateTime(activityTask.getCreateTime());
+                    return activityTask;
+                })
+                .collect(Collectors.toList());
+
+        pointActivityTaskService.batchInsertPointActivityTask(activityTasks);
+    }
+
 }

+ 9 - 16
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityTaskServiceImpl.java

@@ -9,6 +9,7 @@ import com.ylx.point.mapper.PointActivityTaskMapper;
 import com.ylx.point.service.IPointActivityTaskService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
@@ -25,17 +26,6 @@ public class PointActivityTaskServiceImpl implements IPointActivityTaskService {
     @Autowired
     private PointActivityTaskMapper pointActivityTaskMapper;
 
-    /**
-     * 删除积分活动任务规则信息
-     *
-     * @param id 积分活动任务规则主键
-     * @return 结果
-     */
-    @Override
-    public int deletePointActivityTaskById(String id) {
-        return pointActivityTaskMapper.deletePointActivityTaskById(id);
-    }
-
     @Override
     public List<PointActivityTaskDTO> selectPointActivityTaskByActivityId(Long id) {
         // 查询活动任务列表
@@ -54,11 +44,7 @@ public class PointActivityTaskServiceImpl implements IPointActivityTaskService {
     }
 
     @Override
-    public void insertPointActivityTask(PointActivityTask pointActivityTask) {
-        pointActivityTaskMapper.insertPointActivityTask(pointActivityTask);
-    }
-
-    @Override
+    @Transactional(rollbackFor = Exception.class)
     public void batchInsertPointActivityTask(List<PointActivityTask> activityTasks) {
         if (CollectionUtil.isEmpty(activityTasks)) {
             return;
@@ -73,4 +59,11 @@ public class PointActivityTaskServiceImpl implements IPointActivityTaskService {
         // 批量插入
         pointActivityTaskMapper.batchInsertPointActivityTask(activityTasks);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deletePointActivityTaskByActivityId(Long activityId) {
+        pointActivityTaskMapper.deletePointActivityTaskByActivityId(activityId);
+    }
+
 }

+ 6 - 59
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointSignRewardServiceImpl.java

@@ -19,23 +19,10 @@ import java.util.List;
  * @date 2026-03-25
  */
 @Service
-public class PointSignRewardServiceImpl implements IPointSignRewardService
-{
+public class PointSignRewardServiceImpl implements IPointSignRewardService {
     @Autowired
     private PointSignRewardMapper pointSignRewardMapper;
 
-    /**
-     * 查询签到动态奖励配置
-     *
-     * @param id 签到动态奖励配置主键
-     * @return 签到动态奖励配置
-     */
-    @Override
-    public PointSignReward selectPointSignRewardById(String id)
-    {
-        return pointSignRewardMapper.selectPointSignRewardById(id);
-    }
-
     /**
      * 查询签到动态奖励配置列表
      *
@@ -43,37 +30,10 @@ public class PointSignRewardServiceImpl implements IPointSignRewardService
      * @return 签到动态奖励配置
      */
     @Override
-    public List<PointSignReward> selectPointSignRewardList(PointSignReward pointSignReward)
-    {
+    public List<PointSignReward> selectPointSignRewardList(PointSignReward pointSignReward) {
         return pointSignRewardMapper.selectPointSignRewardList(pointSignReward);
     }
 
-    /**
-     * 新增签到动态奖励配置
-     *
-     * @param pointSignReward 签到动态奖励配置
-     * @return 结果
-     */
-    @Override
-    public int insertPointSignReward(PointSignReward pointSignReward)
-    {
-        pointSignReward.setCreateTime(DateUtils.getNowDate());
-        return pointSignRewardMapper.insertPointSignReward(pointSignReward);
-    }
-
-    /**
-     * 修改签到动态奖励配置
-     *
-     * @param pointSignReward 签到动态奖励配置
-     * @return 结果
-     */
-    @Override
-    public int updatePointSignReward(PointSignReward pointSignReward)
-    {
-        pointSignReward.setUpdateTime(DateUtils.getNowDate());
-        return pointSignRewardMapper.updatePointSignReward(pointSignReward);
-    }
-
     /**
      * 批量删除签到动态奖励配置
      *
@@ -81,22 +41,9 @@ public class PointSignRewardServiceImpl implements IPointSignRewardService
      * @return 结果
      */
     @Override
-    public int deletePointSignRewardByIds(String[] ids)
-    {
-        return pointSignRewardMapper.deletePointSignRewardByIds(ids);
-    }
-
-    /**
-     * 删除签到动态奖励配置信息
-     *
-     * @param id 签到动态奖励配置主键
-     * @return 结果
-     */
-    @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deletePointSignRewardById(String id)
-    {
-        return pointSignRewardMapper.deletePointSignRewardById(id);
+    public int deletePointSignRewardByIds(String[] ids) {
+        return pointSignRewardMapper.deletePointSignRewardByIds(ids);
     }
 
     @Override
@@ -105,13 +52,13 @@ public class PointSignRewardServiceImpl implements IPointSignRewardService
         if (CollectionUtil.isEmpty(rewards)) {
             return;
         }
-        
+
         // 设置创建时间
         Date now = DateUtils.getNowDate();
         for (PointSignReward reward : rewards) {
             reward.setCreateTime(now);
         }
-        
+
         // 批量插入
         pointSignRewardMapper.batchInsertPointSignReward(rewards);
     }

+ 8 - 12
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointSignTaskServiceImpl.java

@@ -36,21 +36,17 @@ public class PointSignTaskServiceImpl implements IPointSignTaskService {
         return pointSignTaskMapper.insertPointSignTask(pointSignTask);
     }
 
-    /**
-     * 删除积分签到任务规则信息
-     *
-     * @param id 积分签到任务规则主键
-     * @return 结果
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deletePointSignTaskById(String id) {
-        return pointSignTaskMapper.deletePointSignTaskById(id);
-    }
-
     @Override
     public PointSignTaskVo selectPointSignTaskByActivityId(Long id) {
         PointSignTaskVo vo = pointSignTaskMapper.getTaskWithRewards(id);
         return ObjectUtil.isNull(vo) ? new PointSignTaskVo() : vo;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updatePointSignTask(PointSignTask pointSignTask) {
+        pointSignTask.setUpdateTime(DateUtils.getNowDate());
+        return pointSignTaskMapper.updatePointSignTask(pointSignTask);
+
+    }
 }

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

@@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND status = #{status}
             </if>
             <if test="startTime != null and startTime != ''"><!-- 开始时间检索 -->
-                and date_format(start_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
+                and date_format(start_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
             </if>
             <if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
                 and date_format(end_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')

+ 4 - 0
nightFragrance-massage/src/main/resources/mapper/point/PointActivityTaskMapper.xml

@@ -107,6 +107,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         delete from point_activity_task where id = #{id}
     </delete>
 
+    <delete id="deletePointActivityTaskByActivityId" parameterType="Long">
+        delete from point_activity_task where activity_id = #{activityId}
+    </delete>
+
     <select id="selectPointActivityTaskByActivityId" resultMap="PointActivityTaskResult">
         <include refid="selectPointActivityTaskVo"/>
         where activity_id = #{activityId} and is_deleted = 0

+ 13 - 0
nightFragrance-massage/src/main/resources/mapper/point/PointSignTaskMapper.xml

@@ -28,6 +28,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select id, activity_id, base_points, break_rule, is_deleted, create_time, update_time from point_sign_task
     </sql>
 
+    <update id="updatePointSignTask" parameterType="PointSignTask">
+        update point_sign_task
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="activityId != null">activity_id = #{activityId},</if>
+            <if test="basePoints != null">base_points = #{basePoints},</if>
+            <if test="breakRule != null">break_rule = #{breakRule},</if>
+            <if test="isDeleted != null">is_deleted = #{isDeleted},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
     <delete id="deletePointSignTaskById" parameterType="String">
         delete from point_sign_task where id = #{id}
     </delete>