|
|
@@ -0,0 +1,31 @@
|
|
|
+package com.etotem.cfc.mapper;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
|
+import com.etotem.cfc.entity.ChildBadge;
|
|
|
+import org.apache.ibatis.annotations.Mapper;
|
|
|
+import org.apache.ibatis.annotations.Param;
|
|
|
+import org.apache.ibatis.annotations.Select;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Mapper
|
|
|
+public interface ChildBadgeMapper extends BaseMapper<ChildBadge> {
|
|
|
+
|
|
|
+ @Select("SELECT b.category, COUNT(*) as count FROM child_badge cb " +
|
|
|
+ "JOIN badge b ON cb.badge_id = b.id " +
|
|
|
+ "WHERE cb.child_id = #{childId} AND cb.status = 1 " +
|
|
|
+ "GROUP BY b.category")
|
|
|
+ List<Map<String, Object>> selectCategoryStats(@Param("childId") Long childId);
|
|
|
+
|
|
|
+ @Select("SELECT b.level, COUNT(*) as count FROM child_badge cb " +
|
|
|
+ "JOIN badge b ON cb.badge_id = b.id " +
|
|
|
+ "WHERE cb.child_id = #{childId} AND cb.status = 1 " +
|
|
|
+ "GROUP BY b.level")
|
|
|
+ List<Map<String, Object>> selectLevelStats(@Param("childId") Long childId);
|
|
|
+
|
|
|
+ @Select("SELECT cb.child_id, COUNT(*) as total FROM child_badge cb " +
|
|
|
+ "WHERE cb.child_id IN (SELECT id FROM children WHERE family_id = #{familyId}) " +
|
|
|
+ "AND cb.status = 1 GROUP BY cb.child_id ORDER BY total DESC")
|
|
|
+ List<Map<String, Object>> selectFamilyRanking(@Param("familyId") Long familyId);
|
|
|
+}
|