yonge 3 anni fa
parent
commit
b8f311eac2

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityEvaluationRecordDao.java

@@ -49,4 +49,6 @@ public interface ActivityEvaluationRecordDao extends BaseMapper<ActivityEvaluati
 	List<ActivityRankingVo> queryRankingList(@Param("activityPlanId") Long activityPlanId, @Param("activityEvaluationId") Long activityEvaluationId, @Param("limit") int limit);
 	
 	ActivityRankingVo queryUserRanking(@Param("activityPlanId") Long activityPlanId, @Param("activityEvaluationId") Long activityEvaluationId, @Param("userId") Long userId);
+	
+	ActivityEvaluationRecord queryLastestRecord(@Param("activityPlanId") Long activityPlanId, @Param("userId") Long userId);
 }

+ 14 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityEvaluationRecord.java

@@ -34,6 +34,11 @@ public class ActivityEvaluationRecord implements Serializable {
     @ApiModelProperty("分数 ")
     @TableField(value = "score_")
     private Double score;
+    
+    @ApiModelProperty("次数")
+    @TableField(value = "times_")
+    private int times;
+    
     @ApiModelProperty("创建时间 ")
     @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -80,7 +85,15 @@ public class ActivityEvaluationRecord implements Serializable {
         this.score = score;
     }
 
-    public Date getCreateTime() {
+    public int getTimes() {
+		return times;
+	}
+
+	public void setTimes(int times) {
+		this.times = times;
+	}
+
+	public Date getCreateTime() {
         return createTime;
     }
 

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityEvaluationRecordServiceImpl.java

@@ -59,6 +59,13 @@ public class ActivityEvaluationRecordServiceImpl extends ServiceImpl<ActivityEva
         activityEvaluationRecord.setEvaluationId(evaluationId);
         activityEvaluationRecord.setCreateTime(new Date());
         activityEvaluationRecord.setScore(score == null ? 0:score.doubleValue());
+        
+        ActivityEvaluationRecord lastestRecord = baseMapper.queryLastestRecord(activityEvaluation.getActivityId(), userId);
+        if(lastestRecord == null){
+        	activityEvaluationRecord.setTimes(1);
+        }else{
+        	activityEvaluationRecord.setTimes(lastestRecord.getTimes() + 1);
+        }
         save(activityEvaluationRecord);
     }
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityRankingVo.java

@@ -23,6 +23,9 @@ public class ActivityRankingVo {
     
     @ApiModelProperty("参加时间")
     private Date joinDate;
+    
+    @ApiModelProperty("次数")
+    private int times;
 
 	public double getScore() {
 		return score;
@@ -71,4 +74,12 @@ public class ActivityRankingVo {
 	public void setJoinDate(Date joinDate) {
 		this.joinDate = joinDate;
 	}
+
+	public int getTimes() {
+		return times;
+	}
+
+	public void setTimes(int times) {
+		this.times = times;
+	}
 }

+ 18 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityEvaluationRecordMapper.xml

@@ -7,6 +7,7 @@
         <result column="user_id_" property="userId" />
         <result column="evaluation_id_" property="evaluationId" />
         <result column="score_" property="score" />
+        <result column="times_" property="times" />
         <result column="create_time_" property="createTime" />
     </resultMap>
 
@@ -17,6 +18,7 @@
         , t.user_id_ as userId
         , t.evaluation_id_ as evaluationId
         , t.score_ as score
+        , t.times_ as times
         , t.create_time_ as createTime
     </sql>
 
@@ -40,20 +42,32 @@
     </select>
 
     <select id="queryRankingList" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRankingVo">
-		select aer.score_ socre,aer.user_id_ userId,u.avatar_ userAvatar,u.username_ username, aer.create_time_ joinDate,s.name_ userSubject
+    	select * from 
+    	(
+		select aer.score_ socre,aer.user_id_ userId,u.avatar_ userAvatar,u.username_ username, aer.create_time_ joinDate,s.name_ userSubject,aer.times_ times
 		from activity_evaluation_record aer left join sys_user u on aer.user_id_ = u.id_
         left join student stu on stu.user_id_ = aer.user_id_
         left join subject s on s.id_ = stu.subject_id_
 		where aer.activity_id_ = #{activityPlanId} and aer.evaluation_id_ = #{activityEvaluationId}
-		order by aer.score_ desc,aer.create_time_ asc
+		order by aer.score_ desc,aer.times_ asc, aer.id_ asc 
+		) a group by userId
 		limit #{limit}
     </select>
 
     <select id="queryUserRanking" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRankingVo">
-		select aer.score_ socre,aer.user_id_ userId,u.avatar_ userAvatar,u.username_ username, aer.create_time_ joinDate,s.name_ userSubject
+		select aer.score_ socre,aer.user_id_ userId,u.avatar_ userAvatar,u.username_ username, aer.create_time_ joinDate,s.name_ userSubject,aer.times_ times
 		from activity_evaluation_record aer left join sys_user u on aer.user_id_ = u.id_
         left join student stu on stu.user_id_ = aer.user_id_
         left join subject s on s.id_ = stu.subject_id_
-		where aer.activity_id_ = #{activityPlanId} and aer.evaluation_id_ = #{activityEvaluationId} and aer.user_id_ = #{userId}
+		where aer.id_ in (
+		select aer.id_ from activity_evaluation_record aer where aer.activity_id_ = #{activityPlanId} and aer.evaluation_id_ = #{activityEvaluationId} and aer.user_id_ = #{userId} 
+		order by aer.score_ desc,aer.times_ asc aer.id_ asc limit 1
+		) 
+    </select>
+
+    <select id="queryLastestRecord" resultMap="BaseResultMap">
+		select <include refid="baseColumns"/>
+		from activity_evaluation_record aer 
+		where aer.activity_id_ = #{activityPlanId} and aer.user_id_ = #{userId} order by id_ desc limit 1
     </select>
 </mapper>