change 4 лет назад
Родитель
Сommit
986b20b84a

+ 25 - 9
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -29,10 +29,8 @@ import com.zhongzheng.modules.user.vo.UserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
+import java.sql.Timestamp;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -171,11 +169,29 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     public RanKingUser rankingList(RanKingUserQuery query) {
         RanKingUser ranKingUser = new RanKingUser();
 
-        Calendar cal = Calendar.getInstance();
-        int month = cal.get(Calendar.MONTH) + 1;
-        Long firstDayOfMonth = getFirstDayOfMonth(month);
-        Long lastDayOfMonth = getLastDayOfMonth(month);
-
+        Long time = System.currentTimeMillis(); //当前时间的时间戳
+        if (query.getStatus() == 0) {
+            long zero1 = time / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
+            long zero = zero1 / 1000;
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
+            long tt = calendar.getTime().getTime() / 1000;
+            query.setStartTime(zero);
+            query.setEndTime(tt);
+            ranKingUser= baseMapper.selectByRank(query);
+            List<RanKingUser> ranKingUsers = baseMapper.selectByRanks(query);
+            ranKingUser.setRanKingUsers(ranKingUsers);
+        }else {
+            Calendar cal = Calendar.getInstance();
+            int month = cal.get(Calendar.MONTH) + 1;
+            Long firstDayOfMonth = getFirstDayOfMonth(month);
+            Long lastDayOfMonth = getLastDayOfMonth(month);
+            query.setStartTime(firstDayOfMonth);
+            query.setEndTime(lastDayOfMonth);
+            ranKingUser= baseMapper.selectByRank(query);
+            List<RanKingUser> ranKingUsers = baseMapper.selectByRanks(query);
+            ranKingUser.setRanKingUsers(ranKingUsers);
+        }
         return ranKingUser;
 
     }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/RanKingUserQuery.java

@@ -30,6 +30,14 @@ public class RanKingUserQuery {
     @ApiModelProperty("用户id")
     private Long userId;
 
+    @Excel(name = "开始时间")
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+
+    @Excel(name = "结束时间")
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
 
 
 

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMapper.java

@@ -1,7 +1,11 @@
 package com.zhongzheng.modules.user.mapper;
 
+import com.zhongzheng.modules.user.bo.RanKingUserQuery;
 import com.zhongzheng.modules.user.domain.User;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.vo.RanKingUser;
+
+import java.util.List;
 
 /**
  * 用户Mapper接口
@@ -11,4 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserMapper extends BaseMapper<User> {
 
+    RanKingUser selectByRank(RanKingUserQuery query);
+
+    List<RanKingUser> selectByRanks(RanKingUserQuery query);
 }

+ 7 - 8
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/RanKingUser.java

@@ -33,17 +33,16 @@ public class RanKingUser {
     @ApiModelProperty("头像")
     private String avatar;
 
-
-    /** 排行榜 */
-    @Excel(name = "排行榜")
-    @ApiModelProperty("排行榜")
-    private List<UserVo> userVo;
-
     /** 头像 */
-    @Excel(name = "头像")
-    @ApiModelProperty("头像")
+    @Excel(name = "时间")
+    @ApiModelProperty("时间")
     private Integer hourse;
 
+    /** 头像 */
+    @Excel(name = "排行榜排名")
+    @ApiModelProperty("排行榜排名")
+    private Integer rank;
+
     private List<RanKingUser> ranKingUsers;
 
 }

+ 30 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -47,4 +47,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
 
+    <resultMap type="com.zhongzheng.modules.user.vo.RanKingUser" id="RanKingUserResult">
+        <result property="hourse" column="sum_study"/>
+        <result property="avatar" column="avatar"/>
+        <result property="nickname" column="nickname"/>
+    </resultMap>
+
+
+
+    <select id="selectByRank" parameterType="com.zhongzheng.modules.user.bo.RanKingUserQuery" resultMap="RanKingUserResult">
+        SELECT sum(s.study_duration) AS sum_study,u.nickname,u.avatar   FROM `user` u
+            LEFT JOIN user_study_record s ON u.user_id=s.user_id where 1=1
+        <if test="userId != null and userId != ''">
+            AND u.user_id = #{userId}
+        </if>
+        <if test="userId != null and userId != ''">
+            AND s.create_time BETWEEN #{startTime} and #{endTime}
+        </if>
+        GROUP BY u.user_id
+    </select>
+
+    <select id="selectByRanks" parameterType="com.zhongzheng.modules.user.bo.RanKingUserQuery" resultMap="RanKingUserResult">
+        SELECT sum(s.study_duration) AS sum_study,u.nickname,u.avatar  FROM `user` u
+        LEFT JOIN user_study_record s ON u.user_id=s.user_id where 1=1
+        <if test="userId != null and userId != ''">
+            AND s.create_time BETWEEN #{startTime} and #{endTime}
+        </if>
+        GROUP BY u.user_id LIMIT 20
+    </select>
+
+
 </mapper>