Просмотр исходного кода

featL:agent服务用户列表新增查询字段:今日答题数

hidewnd 2 месяцев назад
Родитель
Сommit
6aa70537a6

+ 4 - 0
yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java

@@ -95,6 +95,10 @@ public class YtAppUserListView extends PageMeta {
 
     @ApiModelProperty("前三日总收益计算开始时间")
     private Date nearlyBeginTime;
+
+    @ApiModelProperty("今日答题数")
+    private Integer todayAnswer;
+
     /** 登录历史记录 */
     @ApiModelProperty("登录历史记录")
     private List<YtDyzLoginRecord> loginRecordList;

+ 25 - 3
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/controller/UserController.java

@@ -13,9 +13,14 @@ import com.ytpm.agent.param.AuditCheckParam;
 import com.ytpm.agent.param.AuditUserParam;
 import com.ytpm.agent.view.AgentAuditCheckVO;
 import com.ytpm.app.model.YtDyzAdRecord;
+import com.ytpm.app.model.YtDyzAnswerRecord;
 import com.ytpm.app.model.YtDyzLoginRecord;
 import com.ytpm.app.model.YtDyzUser;
-import com.ytpm.app.param.*;
+import com.ytpm.app.param.AppQueryUserTodayTimeParam;
+import com.ytpm.app.param.AppUserParam;
+import com.ytpm.app.param.AppUserQueryParam;
+import com.ytpm.app.param.AppUserTodayBannedParam;
+import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.HourCountView;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.general.RepMessage;
@@ -32,13 +37,23 @@ import com.ytpm.risk.view.RiskTemplateView;
 import com.ytpm.util.DateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -83,9 +98,12 @@ public class UserController {
      * 2.查询并计算用户当日收益、当日视频播放数、前三日收益<br>
      */
     private void setUserExtInfo(List<YtAppUserListView> result,YtAppUserListParam param) {
+        Date currentDate = new Date();
         String userIds = result.stream().map(YtAppUserListView::getUserId).collect(Collectors.joining(","));
         List<YtDyzAdRecord> adRecords = adRecordMapper.getByUserIds(userIds);
         List<YtDyzLoginRecord> dyzLogins = loginRecordMapper.getLoginRecordByIds(userIds);
+        List<YtDyzAnswerRecord> answerRecords = questionMapper.getAnswerRecordsByIds(userIds,
+                DateUtil.beginOfDay(currentDate), DateUtil.endOfDay(currentDate));
         Map<String, List<YtDyzAdRecord>> userAdMap = adRecords.stream()
                 .collect(Collectors.groupingBy(YtDyzAdRecord::getUserId));
         // 筛选查询游客广告记录
@@ -94,6 +112,9 @@ public class UserController {
                 .collect(Collectors.groupingBy(YtDyzAdRecord::getUserId));
         Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream()
                 .collect(Collectors.groupingBy(YtDyzLoginRecord::getUserId));
+        // 今日答题记录
+        Map<String, Long> todayAnswerMap = answerRecords.stream().collect(
+                Collectors.groupingBy(YtDyzAnswerRecord::getUserId, Collectors.counting()));
         for (YtAppUserListView user : result) {
             if (loginMap.containsKey(user.getUserId())) {
                 user.setLoginRecordList(loginMap.get(user.getUserId()));
@@ -113,6 +134,7 @@ public class UserController {
                     user.setNearlyIncome(user.getNearlyIncome() == null ? nearlyRevenue : user.getNearlyIncome().add(nearlyRevenue));
                 }
             }
+            user.setTodayAnswer(Math.toIntExact(todayAnswerMap.getOrDefault(user.getUserId(), 0L)));
         }
     }
 

+ 4 - 0
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/dao/QuestionMapper.java

@@ -5,6 +5,7 @@ import com.ytpm.app.view.QuestionListView;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 @Mapper
@@ -35,4 +36,7 @@ public interface QuestionMapper {
      * 查询答题历史记录
      */
     List<YtDyzAnswerRecord> getAnswerRecords(@Param("userId") String userId);
+
+    List<YtDyzAnswerRecord> getAnswerRecordsByIds(@Param("userIds") String userIds, @Param("startDate") Date startDate,
+                                                  @Param("endDate") Date endDate);
 }

+ 15 - 0
yt-ios-lemon/lemon-ios-service/src/main/resources/mapper/QuestionMapper.xml

@@ -56,4 +56,19 @@
         where user_id = #{userId}
         order by answer_time desc
     </select>
+    <select id="getAnswerRecordsByIds" resultType="com.ytpm.app.model.YtDyzAnswerRecord">
+        select record_id, question_id, item_id, duration, answer_time, user_id
+        from yt_dyz_answer_record
+        where user_id in
+        <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
+        #{item}
+        </foreach>
+        <if test="startDate != null">
+            and answer_time <![CDATA[>=]]> #{startDate}
+        </if>
+        <if test="endDate != null">
+            and answer_time <![CDATA[<=]]> #{endDate}
+        </if>
+        order by answer_time desc
+    </select>
 </mapper>

+ 8 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/UserController.java

@@ -12,6 +12,7 @@ import com.ytpm.agent.param.AuditCheckParam;
 import com.ytpm.agent.param.AuditUserParam;
 import com.ytpm.agent.view.AgentAuditCheckVO;
 import com.ytpm.app.model.YtDyzAdRecord;
+import com.ytpm.app.model.YtDyzAnswerRecord;
 import com.ytpm.app.model.YtDyzLoginRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.AppQueryUserTodayTimeParam;
@@ -106,15 +107,22 @@ public class UserController {
         String userIds = result.stream().map(YtAppUserListView::getUserId).collect(Collectors.joining(","));
         List<YtDyzAdRecord> adRecords = adRecordMapper.getByUserIds(userIds);
         List<YtDyzLoginRecord> dyzLogins = loginRecordMapper.getLoginRecordByIds(userIds);
+        Date currentDate = new Date();
+        List<YtDyzAnswerRecord> answerRecords = questionMapper.getAnswerRecordsByIds(userIds,
+                DateUtil.beginOfDay(currentDate), DateUtil.endOfDay(currentDate));
         Map<String, List<YtDyzAdRecord>> userAdMap = adRecords.stream()
                 .collect(Collectors.groupingBy(YtDyzAdRecord::getUserId));
         Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream()
                 .collect(Collectors.groupingBy(YtDyzLoginRecord::getUserId));
+        // 今日答题记录
+        Map<String, Long> todayAnswerMap = answerRecords.stream().collect(
+                Collectors.groupingBy(YtDyzAnswerRecord::getUserId, Collectors.counting()));
         for (YtAppUserListView user : result) {
             if (loginMap.containsKey(user.getUserId())) {
                 user.setLoginRecordList(loginMap.get(user.getUserId()));
             }
             computeTodayIncome(user, userAdMap.get(user.getUserId()), param);
+            user.setTodayAnswer(Math.toIntExact(todayAnswerMap.getOrDefault(user.getUserId(), 0L)));
         }
     }
 

+ 5 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/dao/QuestionMapper.java

@@ -1,10 +1,12 @@
 package com.ytpm.question.dao;
 
+import cn.hutool.core.date.DateTime;
 import com.ytpm.app.model.YtDyzAnswerRecord;
 import com.ytpm.app.view.QuestionListView;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 @Mapper
@@ -35,4 +37,7 @@ public interface QuestionMapper {
      * 查询答题历史记录
      */
     List<YtDyzAnswerRecord> getAnswerRecords(@Param("userId") String userId);
+
+    List<YtDyzAnswerRecord> getAnswerRecordsByIds(@Param("userIds") String userIds, @Param("startDate") Date startDate,
+                                                  @Param("endDate") Date endDate);
 }

+ 15 - 0
yt-question/yt-question-service/src/main/resources/mapper/QuestionMapper.xml

@@ -59,4 +59,19 @@
         where user_id = #{userId}
         order by answer_time desc
     </select>
+    <select id="getAnswerRecordsByIds" resultType="com.ytpm.app.model.YtDyzAnswerRecord">
+        select record_id, question_id, item_id, duration, answer_time, user_id
+        from yt_dyz_answer_record
+        where user_id in
+        <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        <if test="startDate != null">
+            and answer_time <![CDATA[>=]]> #{startDate}
+        </if>
+        <if test="endDate != null">
+            and answer_time <![CDATA[<=]]> #{endDate}
+        </if>
+        order by answer_time desc
+    </select>
 </mapper>