家族-上麦时长-使用FamilyMemberId代替uid进行索引
This commit is contained in:
@@ -14,11 +14,9 @@ import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.model.PartitionInfo;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.service.partition.PartitionInfoService;
|
||||
import com.accompany.core.service.region.RegionInfoService;
|
||||
import com.accompany.sharding.model.FamilyMemberRoomMicRecord;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -91,15 +89,16 @@ public class FamilyIncomeAdminService {
|
||||
if (CollectionUtils.isEmpty(voList)) {
|
||||
return page;
|
||||
}
|
||||
List<Long> uidList = voList.stream().map(FamilyMemberIncomeAdminVo::getUid).distinct().collect(Collectors.toList());
|
||||
|
||||
List<Long> familyMemberIdList = voList.stream().map(FamilyMemberIncomeAdminVo::getFamilyMemberId).distinct().toList();
|
||||
|
||||
Map<Long, Long> micUpTimeMap = new HashMap<>();
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(startDate, endDate, uidList, familyId);
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(startDate, endDate, familyMemberIdList);
|
||||
for (FamilyMemberRoomMicRecord record: micRemainTimeList){
|
||||
micUpTimeMap.put(record.getUid(), record.getRemainTime());
|
||||
micUpTimeMap.put(record.getFamilyMemberId(), record.getRemainTime());
|
||||
}
|
||||
for (FamilyMemberIncomeAdminVo vo: voList){
|
||||
Long micRemainTime = micUpTimeMap.getOrDefault(vo.getUid(), 0L);
|
||||
Long micRemainTime = micUpTimeMap.getOrDefault(vo.getFamilyMemberId(), 0L);
|
||||
vo.setMicRemainTime(!exportFormatter? DateTimeUtil.getTimeFormat(micRemainTime.intValue()): micRemainTime.toString());
|
||||
}
|
||||
|
||||
|
@@ -12,7 +12,6 @@ import com.accompany.business.event.FamilyMemberStatusChangeEvent;
|
||||
import com.accompany.business.event.NewGuildEvent;
|
||||
import com.accompany.business.message.NewGuildMessage;
|
||||
import com.accompany.business.model.family.*;
|
||||
import com.accompany.business.model.guild.Guild;
|
||||
import com.accompany.business.service.UploadAvatarService;
|
||||
import com.accompany.business.service.family.*;
|
||||
import com.accompany.business.service.room.FamilyMemberRoomMicRecordService;
|
||||
@@ -405,7 +404,7 @@ public class FamilyManageAdminService {
|
||||
|
||||
Map<String, Long> micUpTimeMap = new HashMap<>();
|
||||
if (StringUtils.isNotBlank(startDate) || StringUtils.isNotBlank(endDate)){
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(startDate, endDate, uids, null);
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(startDate, endDate, uids);
|
||||
for (FamilyMemberRoomMicRecord record: micRemainTimeList){
|
||||
String id = record.getUid() + "_" + record.getFamilyId();
|
||||
micUpTimeMap.put(id, record.getRemainTime());
|
||||
|
@@ -187,7 +187,7 @@ public class FamilyWageStatAdminService {
|
||||
}
|
||||
|
||||
Map<Long, Long> micUpTimeMap = new HashMap<>();
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(monthStartStr, monthEndStr, uidList, familyId);
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(monthStartStr, monthEndStr, uidList);
|
||||
for (FamilyMemberRoomMicRecord record: micRemainTimeList){
|
||||
micUpTimeMap.put(record.getUid(), record.getRemainTime());
|
||||
}
|
||||
@@ -276,7 +276,7 @@ public class FamilyWageStatAdminService {
|
||||
}
|
||||
|
||||
Map<String, Double> diamondRemainMap = new HashMap<>();
|
||||
List<FamilyUserIncomeItemVo> diamondRemainList = familyMemberGoldRemainDayRecordService.listTotalGoldRemainGroupByDate(monthStartStr, monthEndStr, uid, familyId);
|
||||
List<FamilyUserIncomeItemVo> diamondRemainList = familyMemberGoldRemainDayRecordService.listTotalGoldRemainGroupByDate(monthStartStr, monthEndStr, familyMember.getId());
|
||||
for (FamilyUserIncomeItemVo record: diamondRemainList) {
|
||||
diamondRemainMap.put(record.getDate(), record.getDiamondRemain());
|
||||
}
|
||||
@@ -286,7 +286,7 @@ public class FamilyWageStatAdminService {
|
||||
diamondRemainMap.put(today, up.getDiamonds());
|
||||
}
|
||||
|
||||
Map<String, Long> micRemainTimeMap = familyMemberRoomMicRecordService.mapTotalRemainTimeGroupByDate(monthStart, monthEnd, uid, familyId);
|
||||
Map<String, Long> micRemainTimeMap = familyMemberRoomMicRecordService.mapTotalRemainTimeGroupByDate(monthStart, monthEnd, familyMember.getId());
|
||||
|
||||
BigDecimal savedGoldIncome = BigDecimal.ZERO;
|
||||
List<FamilyMemberDailyWageStatAdminVo> voList = new ArrayList<>();
|
||||
@@ -320,7 +320,7 @@ public class FamilyWageStatAdminService {
|
||||
|
||||
Long micRemainTime = micRemainTimeMap.getOrDefault(date, 0L);
|
||||
vo.setMicRemainTime(!exportFormatter? DateTimeUtil.getTimeFormat(micRemainTime.intValue()): micRemainTime.toString());
|
||||
//判断是否大于两小时
|
||||
//判断是否大于一小时
|
||||
vo.setMicVaild(micRemainTime >= FamilyConstant.MIC_VAILD_SECONDS);
|
||||
|
||||
voList.add(vo);
|
||||
|
@@ -14,20 +14,17 @@ public interface FamilyMemberRoomMicRecordMapper extends BaseMapper<FamilyMember
|
||||
@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime,
|
||||
@Param("downTime") Date downTime,
|
||||
@Param("uidList") List<Long> uidList,
|
||||
@Param("familyId") Integer familyId);
|
||||
@Param("familyMemberIdList") List<Long> familyMemberIdList);
|
||||
|
||||
List<FamilyMemberMicRemainTimeVo> listTotalRemainTimeByDateWithOutOverDate(@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime,
|
||||
@Param("uid") Long uid,
|
||||
@Param("familyId") Integer familyId);
|
||||
@Param("familyMemberId") Long familyMemberId);
|
||||
|
||||
List<FamilyMemberMicRemainTimeVo> listTotalRemainTimeByDateOverDate(@Param("upTime") Date upTime,
|
||||
@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime,
|
||||
@Param("downTime") Date downTime,
|
||||
@Param("uid") Long uid,
|
||||
@Param("familyId") Integer familyId);
|
||||
@Param("familyMemberId") Long familyMemberId);
|
||||
|
||||
List<FamilyMemberMicRemainTimeVo> listTotalRemainTimeByUidAndDateWithOutOverDate(@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime,
|
||||
|
@@ -26,10 +26,7 @@
|
||||
<if test="downTime != null">
|
||||
and r.down_time <= #{downTime}
|
||||
</if>
|
||||
and uid in <foreach collection="uidList" item="uid" separator="," open="(" close=")">#{uid}</foreach>
|
||||
<if test="familyId != null">
|
||||
and family_id = #{familyId}
|
||||
</if>
|
||||
and family_member_id in <foreach collection="familyMemberIdList" item="uid" separator="," open="(" close=")">#{uid}</foreach>
|
||||
group by uid, family_id
|
||||
</select>
|
||||
|
||||
@@ -39,7 +36,7 @@
|
||||
sum(remain_time / 1000) remain_time
|
||||
from family_member_room_mic_record r
|
||||
where r.up_time between #{startTime} and #{endTime}
|
||||
and family_id = #{familyId} and uid = #{uid}
|
||||
and family_member_id = #{familyMemberId}
|
||||
and datediff(down_time, up_time) = 0
|
||||
group by `date`
|
||||
</select>
|
||||
@@ -52,7 +49,7 @@
|
||||
and up_time <= #{endTime}
|
||||
and down_time >= #{startTime}
|
||||
and down_time <= #{downTime}
|
||||
and family_id = #{familyId} and uid = #{uid}
|
||||
and family_member_id = #{familyMemberId}
|
||||
and datediff(down_time, up_time) > 0
|
||||
</select>
|
||||
|
||||
|
@@ -99,6 +99,6 @@ public class FamilyConstant {
|
||||
/**
|
||||
*
|
||||
* */
|
||||
public static final long MIC_VAILD_SECONDS = 2 * 60 * 60L;
|
||||
public static final long MIC_VAILD_SECONDS = 1 * 60 * 60L;
|
||||
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ public interface FamilyMemberGoldRemainDayRecordMapper extends BaseMapper<Family
|
||||
@Param("uid") Long uid, @Param("familyId") Integer familyId);
|
||||
|
||||
List<FamilyUserIncomeItemVo> listTotalGoldRemainGroupByDate(@Param("startDate") String startDate, @Param("endDate") String endDate,
|
||||
@Param("uid") Long uid, @Param("familyId") Integer familyId);
|
||||
@Param("familyMemberId") Long familyMemberId);
|
||||
|
||||
List<FamilyMemberGoldRemainDayRecord> listGoldRemainGroupByFamily(@Param("familyIdList") List<Integer> familyIdList);
|
||||
|
||||
|
@@ -83,7 +83,7 @@ public class FamilyIncomeService {
|
||||
String curCycleDate = HalfMonthCycleTimeUtil.getCycleDate(zdt);
|
||||
vo.setCurCycleDate(cycleDateVoList.stream().filter(cycleDateVo -> cycleDateVo.getCycleDate().equals(curCycleDate)).findAny().get());
|
||||
|
||||
FamilyMemberDailyIncomeVo dailyIncomeVo = getFamilyMemberDailyIncomeVo(familyMember.getId(), familyId, uid, startDate, startTime, endDate, endTime);
|
||||
FamilyMemberDailyIncomeVo dailyIncomeVo = getFamilyMemberDailyIncomeVo(familyMember.getId(), startDate, startTime, endDate, endTime);
|
||||
vo.setDailyIncome(dailyIncomeVo);
|
||||
|
||||
if (FamilyConstant.RoleType.OWNER.equals(familyMember.getRoleType())) {
|
||||
@@ -94,7 +94,7 @@ public class FamilyIncomeService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
private FamilyMemberDailyIncomeVo getFamilyMemberDailyIncomeVo(Long familyMemberId, Integer familyId, Long uid,
|
||||
private FamilyMemberDailyIncomeVo getFamilyMemberDailyIncomeVo(Long familyMemberId,
|
||||
String startDate, Date startTime,
|
||||
String endDate, Date endTime) {
|
||||
FamilyMemberDailyIncomeVo vo = new FamilyMemberDailyIncomeVo();
|
||||
@@ -107,8 +107,7 @@ public class FamilyIncomeService {
|
||||
goldIncomeMap.put(item.getDate(), item.getGoldIncome());
|
||||
}
|
||||
|
||||
Map<String, Long> micRemainTimeMap = familyMemberRoomMicRecordService.mapTotalRemainTimeGroupByDate(startTime, endTime,
|
||||
uid, familyId);
|
||||
Map<String, Long> micRemainTimeMap = familyMemberRoomMicRecordService.mapTotalRemainTimeGroupByDate(startTime, endTime, familyMemberId);
|
||||
|
||||
List<FamilyMemberDailyIncomeItemVo> dailyList = new ArrayList<>();
|
||||
vo.setDailyIncomeList(dailyList);
|
||||
@@ -159,9 +158,9 @@ public class FamilyIncomeService {
|
||||
String endTimeStr = DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN);
|
||||
|
||||
Map<Long, Long> micRemainTimeMap = new HashMap<>();
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(startTimeStr, endTimeStr, uidList, familyId);
|
||||
List<FamilyMemberRoomMicRecord> micRemainTimeList = familyMemberRoomMicRecordService.listTotalRemainTimeGroupByFamilyMember(startTimeStr, endTimeStr, familyMemberIdList);
|
||||
for (FamilyMemberRoomMicRecord item: micRemainTimeList){
|
||||
micRemainTimeMap.put(item.getUid(), item.getRemainTime());
|
||||
micRemainTimeMap.put(item.getFamilyMemberId(), item.getRemainTime());
|
||||
}
|
||||
|
||||
for (FamilyMember item: familyMemberList){
|
||||
|
@@ -128,7 +128,7 @@ public class FamilyMemberGoldRemainDayRecordService extends ServiceImpl<FamilyMe
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<FamilyUserIncomeItemVo> listTotalGoldRemainGroupByDate(String startDate, String endDate, Long uid, Integer familyId) {
|
||||
return this.baseMapper.listTotalGoldRemainGroupByDate(startDate, endDate, uid, familyId);
|
||||
public List<FamilyUserIncomeItemVo> listTotalGoldRemainGroupByDate(String startDate, String endDate, Long familyMemberId) {
|
||||
return this.baseMapper.listTotalGoldRemainGroupByDate(startDate, endDate, familyMemberId);
|
||||
}
|
||||
}
|
||||
|
@@ -59,7 +59,7 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
JSONArray keysJsonArray = new JSONArray(micQueueParam.getKeys());
|
||||
for(int i = 0; i < keysJsonArray.length(); i++){
|
||||
int pos = keysJsonArray.getInt(i);
|
||||
record(qEvent, timestamp, uid, familyMember.getFamilyId(), roomUid, roomId, pos);
|
||||
record(qEvent, timestamp, familyMember.getId(), uid, familyMember.getFamilyId(), roomUid, roomId, pos);
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -80,11 +80,11 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
continue;
|
||||
}
|
||||
|
||||
record(qEvent, timestamp, uid, familyMember.getFamilyId(), roomUid, roomId, pos);
|
||||
record(qEvent, timestamp, familyMember.getId(), uid, familyMember.getFamilyId(), roomUid, roomId, pos);
|
||||
}
|
||||
}
|
||||
|
||||
public void record(Integer qEvent, Long timestamp, Long uid, Integer familyId, Long roomUid, Long roomId, Integer pos){
|
||||
public void record(Integer qEvent, Long timestamp, Long familyMemberId, Long uid, Integer familyId, Long roomUid, Long roomId, Integer pos){
|
||||
RSet<Long> micSet = redissonClient.getSet(RedisKey.family_member_room_mic_record.getKey(uid.toString(), roomId.toString(), pos.toString()));
|
||||
if (isUpMicAction(qEvent)) {
|
||||
micSet.add(timestamp);
|
||||
@@ -119,6 +119,7 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
|
||||
//save
|
||||
FamilyMemberRoomMicRecord record = new FamilyMemberRoomMicRecord();
|
||||
record.setFamilyMemberId(familyMemberId);
|
||||
record.setUid(uid);
|
||||
record.setFamilyId(familyId);
|
||||
record.setRoomUid(roomUid);
|
||||
@@ -144,7 +145,7 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
}
|
||||
|
||||
public List<FamilyMemberRoomMicRecord> listTotalRemainTimeGroupByFamilyMember(String startDate, String endDate,
|
||||
List<Long> uidList, Integer familyId) {
|
||||
List<Long> familyMemberIdList) {
|
||||
Date upTime = null;
|
||||
Date startTime = null;
|
||||
if (StringUtils.isNotBlank(startDate)){
|
||||
@@ -159,15 +160,14 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
downTime = DateTimeUtil.addDays(endTime, 1);
|
||||
}
|
||||
|
||||
return this.baseMapper.listTotalRemainTimeByFamilyMember(upTime, startTime, endTime, downTime, uidList, familyId);
|
||||
return this.baseMapper.listTotalRemainTimeByFamilyMember(upTime, startTime, endTime, downTime, familyMemberIdList);
|
||||
}
|
||||
|
||||
public Map<String, Long> mapTotalRemainTimeGroupByDate(Date startTime, Date endTime,
|
||||
Long uid, Integer familyId) {
|
||||
public Map<String, Long> mapTotalRemainTimeGroupByDate(Date startTime, Date endTime, Long familyMemberId) {
|
||||
Map<String, Long> map = new HashMap<>();
|
||||
|
||||
List<FamilyMemberMicRemainTimeVo> withoutOverDateList =
|
||||
this.baseMapper.listTotalRemainTimeByDateWithOutOverDate(startTime, endTime, uid, familyId);
|
||||
this.baseMapper.listTotalRemainTimeByDateWithOutOverDate(startTime, endTime, familyMemberId);
|
||||
for (FamilyMemberMicRemainTimeVo po: withoutOverDateList){
|
||||
map.put(po.getDate(), po.getRemainTime());
|
||||
}
|
||||
@@ -176,7 +176,7 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
Date downTime = DateTimeUtil.addDays(endTime, 1);
|
||||
|
||||
List<FamilyMemberMicRemainTimeVo> overDateList =
|
||||
this.baseMapper.listTotalRemainTimeByDateOverDate(upTime, startTime, endTime, downTime, uid, familyId);
|
||||
this.baseMapper.listTotalRemainTimeByDateOverDate(upTime, startTime, endTime, downTime, familyMemberId);
|
||||
for (FamilyMemberMicRemainTimeVo po: overDateList){
|
||||
Date start = po.getUpTime();
|
||||
while (start.before(po.getDownTime())){
|
||||
|
@@ -117,6 +117,7 @@
|
||||
<select id="pageFamilyMemberData"
|
||||
resultType="com.accompany.business.vo.family.FamilyMemberIncomeAdminVo">
|
||||
SELECT
|
||||
gm.family_member_id familyMemberId,
|
||||
gm.family_id familyId,
|
||||
gm.uid uid,
|
||||
u2.erban_no erbanNo,
|
||||
@@ -144,9 +145,6 @@
|
||||
</if>
|
||||
and (gm.enable = 1 or (gm.update_time between #{startTime} and #{endTime}))
|
||||
</where>
|
||||
GROUP BY
|
||||
gm.family_id,
|
||||
gm.uid
|
||||
order by goldIncome desc
|
||||
</select>
|
||||
|
||||
|
@@ -98,7 +98,7 @@
|
||||
select `date`, gold_remain `diamondRemain`
|
||||
from family_member_gold_remain_day_record r
|
||||
where `date` between #{startDate} and #{endDate}
|
||||
and uid = #{uid} and family_id = #{familyId}
|
||||
and family_member_id = #{familyMemberId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user