Procházet zdrojové kódy

积分规则代码提交

wangzhijun před 5 dny
rodič
revize
9507ef7922

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

@@ -89,7 +89,7 @@ public class PointActivityController extends BaseController {
     @PreAuthorize("@ss.hasPermi('point:activity:query')")
     @ApiOperation("根据id获取积分活动统计数据")
     @GetMapping(value = "/stat/{id}")
-    public AjaxResult getStatInfo(@PathVariable("id") String id) {
+    public AjaxResult getStatInfo(@PathVariable("id") Long id) {
         PointActivityStatVo vo = this.pointActivityService.getStatInfo(id);
         return success(vo);
     }

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/point/domain/vo/PointActivityStatVo.java

@@ -19,7 +19,7 @@ public class PointActivityStatVo {
     private String name;
 
     @ApiModelProperty(name = "活动类型")
-    private Integer activityType;
+    private String activityType;
 
     @ApiModelProperty(name = "覆盖城市")
     private String cityCode;

+ 4 - 36
nightFragrance-massage/src/main/java/com/ylx/point/mapper/PointActivityMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ylx.point.domain.PointActivity;
 import com.ylx.point.domain.dto.PointActivityPageDTO;
 import com.ylx.point.domain.vo.PointActivityPageVo;
+import com.ylx.point.domain.vo.PointActivityTaskDetailVO;
 
 import java.util.List;
 
@@ -14,53 +15,20 @@ import java.util.List;
  * @date 2026-03-25
  */
 public interface PointActivityMapper extends BaseMapper<PointActivity> {
-    /**
-     * 查询积分活动主
-     * 
-     * @param id 积分活动主主键
-     * @return 积分活动主
-     */
+
     public PointActivity selectPointActivityById(Long id);
 
-    /**
-     * 查询积分活动主列表
-     * 
-     * @param pointActivity 积分活动主
-     * @return 积分活动主集合
-     */
     public List<PointActivity> selectPointActivityList(PointActivity pointActivity);
 
-    /**
-     * 新增积分活动主
-     * 
-     * @param pointActivity 积分活动主
-     * @return 结果
-     */
     public int insertPointActivity(PointActivity pointActivity);
 
-    /**
-     * 修改积分活动主
-     * 
-     * @param pointActivity 积分活动主
-     * @return 结果
-     */
     public int updatePointActivity(PointActivity pointActivity);
 
-    /**
-     * 删除积分活动主
-     * 
-     * @param id 积分活动主主键
-     * @return 结果
-     */
     public int deletePointActivityById(String id);
 
-    /**
-     * 批量删除积分活动主
-     * 
-     * @param ids 需要删除的数据主键集合
-     * @return 结果
-     */
     public int deletePointActivityByIds(String[] ids);
 
     List<PointActivityPageVo> list(PointActivityPageDTO dto);
+
+    List<PointActivityTaskDetailVO> getTaskDetailListById(Long id);
 }

+ 2 - 11
nightFragrance-massage/src/main/java/com/ylx/point/mapper/PointUserActivityTaskCompletionMapper.java

@@ -2,6 +2,7 @@ package com.ylx.point.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ylx.point.domain.PointUserActivityTaskCompletion;
+import com.ylx.point.domain.vo.PointActivityOverviewVO;
 
 import java.util.List;
 
@@ -13,15 +14,5 @@ import java.util.List;
  */
 public interface PointUserActivityTaskCompletionMapper extends BaseMapper<PointUserActivityTaskCompletion> {
 
-    public PointUserActivityTaskCompletion selectPointUserActivityTaskCompletionById(String id);
-
-    public List<PointUserActivityTaskCompletion> selectPointUserActivityTaskCompletionList(PointUserActivityTaskCompletion pointUserActivityTaskCompletion);
-
-    public int insertPointUserActivityTaskCompletion(PointUserActivityTaskCompletion pointUserActivityTaskCompletion);
-
-    public int updatePointUserActivityTaskCompletion(PointUserActivityTaskCompletion pointUserActivityTaskCompletion);
-
-    public int deletePointUserActivityTaskCompletionById(String id);
-
-    public int deletePointUserActivityTaskCompletionByIds(String[] ids);
+    PointActivityOverviewVO getPointActivityOverviewByActivityId(Long activityId);
 }

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

@@ -27,7 +27,7 @@ public interface IPointActivityService extends IService<PointActivity> {
 
     void edit(PointActivityDTO dto);
 
-    PointActivityStatVo getStatInfo(String id);
+    PointActivityStatVo getStatInfo(Long id);
 
     void editValidity(PointActivityValidityDTO dto);
 

+ 3 - 2
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointUserActivityTaskCompletionService.java

@@ -2,8 +2,7 @@ package com.ylx.point.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ylx.point.domain.PointUserActivityTaskCompletion;
-
-import java.util.List;
+import com.ylx.point.domain.vo.PointActivityOverviewVO;
 
 /**
  * 用户活动任务完成Service接口
@@ -13,4 +12,6 @@ import java.util.List;
  */
 public interface IPointUserActivityTaskCompletionService extends IService<PointUserActivityTaskCompletion> {
 
+    PointActivityOverviewVO getPointActivityOverviewByActivityId(Long activityId);
+
 }

+ 24 - 6
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -18,10 +18,7 @@ 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.IPointActivityService;
-import com.ylx.point.service.IPointActivityTaskService;
-import com.ylx.point.service.IPointSignRewardService;
-import com.ylx.point.service.IPointSignTaskService;
+import com.ylx.point.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.DateTimeException;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -50,6 +48,8 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
     private IPointSignTaskService pointSignTaskService;
     @Autowired
     private IPointSignRewardService pointSignRewardService;
+    @Autowired
+    private IPointUserActivityTaskCompletionService pointUserActivityTaskCompletionService;
 
 
     @Override
@@ -127,8 +127,26 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
     }
 
     @Override
-    public PointActivityStatVo getStatInfo(String id) {
-        return null;
+    public PointActivityStatVo getStatInfo(Long id) {
+
+        // 根据id获取活动详情
+        PointActivity entity = this.pointActivityMapper.selectPointActivityById(id);
+        if (ObjectUtil.isNull(entity)) {
+            throw new BaseException("参数有误,活动不存在");
+        }
+
+        PointActivityStatVo vo = new PointActivityStatVo();
+        BeanUtil.copyProperties(entity, vo);
+
+        // 数据总览
+        PointActivityOverviewVO dataOverview = this.pointUserActivityTaskCompletionService.getPointActivityOverviewByActivityId(id);
+        vo.setDataOverview(dataOverview);
+
+        // 数据详情
+        List<PointActivityTaskDetailVO> taskDetailList = pointActivityMapper.getTaskDetailListById(id);
+        vo.setTaskDetailList(taskDetailList);
+
+        return vo;
     }
 
     @Override

+ 5 - 0
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointUserActivityTaskCompletionServiceImpl.java

@@ -2,6 +2,7 @@ package com.ylx.point.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.point.domain.PointUserActivityTaskCompletion;
+import com.ylx.point.domain.vo.PointActivityOverviewVO;
 import com.ylx.point.mapper.PointUserActivityTaskCompletionMapper;
 import com.ylx.point.service.IPointUserActivityTaskCompletionService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,4 +19,8 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
     @Autowired
     private PointUserActivityTaskCompletionMapper pointUserActivityTaskCompletionMapper;
 
+    @Override
+    public PointActivityOverviewVO getPointActivityOverviewByActivityId(Long activityId) {
+        return pointUserActivityTaskCompletionMapper.getPointActivityOverviewByActivityId(activityId);
+    }
 }

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

@@ -74,6 +74,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ${params.dataScope}
     </select>
 
+    <select id="getTaskDetailListById" resultType="com.ylx.point.domain.vo.PointActivityTaskDetailVO">
+        SELECT
+            pat.task_name,
+            COUNT(DISTINCT utc.user_id) AS completedCount,
+            COALESCE(SUM(utc.completed_count), 0) AS completedTimes,
+            COALESCE(SUM(ul.points), 0) AS points
+        FROM `point_activity_task` pat
+        LEFT JOIN `point_user_activity_task_completion` utc ON pat.activity_id = utc.activity_id AND pat.id = utc.task_id
+        LEFT JOIN `point_user_log` ul ON utc.activity_id = ul.activity_id AND utc.task_id = ul.task_id AND ul.op_type = 1
+        WHERE pat.activity_id = #{id}
+        GROUP BY pat.id, pat.task_name
+        ORDER BY pat.sort_order
+    </select>
+
     <insert id="insertPointActivity" parameterType="PointActivity" useGeneratedKeys="true" keyProperty="id">
         insert into point_activity
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 11 - 0
nightFragrance-massage/src/main/resources/mapper/point/PointUserActivityTaskCompletionMapper.xml

@@ -16,5 +16,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="completedDate"    column="completed_date"    />
     </resultMap>
+    <select id="getPointActivityOverviewByActivityId"
+            resultType="com.ylx.point.domain.vo.PointActivityOverviewVO">
+        SELECT
+            COUNT(DISTINCT utc.user_id) AS totalParticipants,
+            COUNT(DISTINCT CASE WHEN utc.completed_count > 0 THEN utc.user_id END) AS totalCompleted,
+            COALESCE(SUM(utc.completed_count), 0) AS totalTaskTimes,
+            COALESCE(SUM(ul.points), 0) AS totalPoints
+        FROM `point_user_activity_task_completion` utc
+        LEFT JOIN `point_user_log` ul ON utc.activity_id = ul.activity_id AND ul.op_type = 1 -- 仅统计收入积分
+        WHERE utc.activity_id = #{activityId}
+    </select>
 
 </mapper>