家族-定时任务-钻石每日余额
This commit is contained in:
@@ -2,7 +2,16 @@ package com.accompany.sharding.mapper;
|
||||
|
||||
import com.accompany.sharding.model.FamilyMemberRoomMicRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public interface FamilyMemberRoomMicRecordMapper extends BaseMapper<FamilyMemberRoomMicRecord> {
|
||||
|
||||
List<FamilyMemberRoomMicRecord> listTotalRemainTimeByFamilyMember(@Param("upTime") Date upTime,
|
||||
@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime,
|
||||
@Param("downTime") Date downTime);
|
||||
|
||||
}
|
@@ -2,4 +2,16 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.accompany.sharding.mapper.FamilyMemberRoomMicRecordMapper">
|
||||
|
||||
<select id="listTotalRemainTimeByFamilyMember"
|
||||
resultType="com.accompany.sharding.model.FamilyMemberRoomMicRecord">
|
||||
select uid, family_id,
|
||||
sum((case when up_time < #{startTime} then TIMESTAMPDIFF(SECOND, #{startTime}, down_time)
|
||||
when down_time > #{endTime} then TIMESTAMPDIFF(SECOND, up_time, #{endTime})
|
||||
else remain_time / 1000 end)) remain_time
|
||||
from family_member_room_mic_record r
|
||||
where r.up_time between #{upTime} and #{endTime}
|
||||
and r.down_time between #{startTime} and #{downTime}
|
||||
group by uid, family_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
@@ -11,6 +11,7 @@ public class FamilyGiftRecord {
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
private Integer familyId;
|
||||
private Long senderUid;
|
||||
private Long receiverUid;
|
||||
private Long giftSendRecordId;
|
||||
private Long totalGoldNum;
|
||||
|
@@ -7,7 +7,7 @@ import lombok.Data;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class FamilyMemberSettlementRecord {
|
||||
public class FamilyMemberGoldRemainDayRecord {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
@@ -15,9 +15,6 @@ public class FamilyMemberSettlementRecord {
|
||||
private Integer familyId;
|
||||
private Long uid;
|
||||
private Date createTime;
|
||||
private Long micRemainSecond;
|
||||
private Long goldIncome;
|
||||
private Long diamondRemain;
|
||||
private Integer sendGiftUserNum;
|
||||
private Double goldRemain;
|
||||
|
||||
}
|
@@ -2,8 +2,13 @@ package com.accompany.business.mybatismapper.family;
|
||||
|
||||
import com.accompany.business.model.family.FamilyGiftRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public interface FamilyGiftRecordMapper extends BaseMapper<FamilyGiftRecord> {
|
||||
|
||||
List<FamilyGiftRecord> listTotalGoldGroupByFamilyMember(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
||||
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
package com.accompany.business.mybatismapper.family;
|
||||
|
||||
import com.accompany.business.model.family.FamilyMemberGoldRemainDayRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface FamilyMemberGoldRemainDayRecordMapper extends BaseMapper<FamilyMemberGoldRemainDayRecord> {
|
||||
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
package com.accompany.business.mybatismapper.family;
|
||||
|
||||
import com.accompany.business.model.family.FamilyMemberSettlementRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface FamilyMemberSettlementRecordMapper extends BaseMapper<FamilyMemberSettlementRecord> {
|
||||
|
||||
}
|
@@ -11,6 +11,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class FamilyGiftRecordService extends ServiceImpl<FamilyGiftRecordMapper, FamilyGiftRecord> {
|
||||
|
||||
@@ -29,9 +32,14 @@ public class FamilyGiftRecordService extends ServiceImpl<FamilyGiftRecordMapper,
|
||||
familyGiftRecord.setGiftSendRecordId(giftSendRecord.getSendRecordId());
|
||||
familyGiftRecord.setCreateTime(giftSendRecord.getCreateTime());
|
||||
familyGiftRecord.setFamilyId(familyMember.getFamilyId());
|
||||
familyGiftRecord.setReceiverUid(familyGiftRecord.getReceiverUid());
|
||||
familyGiftRecord.setTotalGoldNum(familyGiftRecord.getTotalGoldNum());
|
||||
familyGiftRecord.setSenderUid(giftSendRecord.getUid());
|
||||
familyGiftRecord.setReceiverUid(giftSendRecord.getReciveUid());
|
||||
familyGiftRecord.setTotalGoldNum(giftSendRecord.getTotalGoldNum());
|
||||
save(familyGiftRecord);
|
||||
}
|
||||
|
||||
public List<FamilyGiftRecord> listTotalGoldGroupByFamilyMember(Date startTime, Date endTime) {
|
||||
return this.baseMapper.listTotalGoldGroupByFamilyMember(startTime, endTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,89 @@
|
||||
package com.accompany.business.service.family;
|
||||
|
||||
import com.accompany.business.model.UserPurse;
|
||||
import com.accompany.business.model.family.FamilyMember;
|
||||
import com.accompany.business.model.family.FamilyMemberGoldRemainDayRecord;
|
||||
import com.accompany.business.mybatismapper.family.FamilyMemberGoldRemainDayRecordMapper;
|
||||
import com.accompany.business.service.purse.UserPurseService;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.session.ExecutorType;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FamilyMemberGoldRemainDayRecordService extends ServiceImpl<FamilyMemberGoldRemainDayRecordMapper, FamilyMemberGoldRemainDayRecord> {
|
||||
|
||||
@Autowired
|
||||
private FamilyMemberService familyMemberService;
|
||||
@Autowired
|
||||
private UserPurseService userPurseService;
|
||||
@Autowired
|
||||
private SqlSessionFactory sqlSessionFactory;
|
||||
|
||||
public void dayStatistic(Date date) {
|
||||
if (date == null){
|
||||
date = DateTimeUtil.addDays(new Date(), -1);
|
||||
}
|
||||
|
||||
String dateStr = DateTimeUtil.convertDate(date, DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
Date dateStart = DateTimeUtil.getBeginTimeOfDay(date);
|
||||
Date dateEnd = DateTimeUtil.getEndTimeOfDay(date);
|
||||
|
||||
Map<Long, Double> uidGoldNumMap = new HashMap<>();
|
||||
|
||||
List<FamilyMember> memberList = familyMemberService.listValidFamilyMemberByTime(dateStart, dateEnd);
|
||||
if (CollectionUtils.isEmpty(memberList)){
|
||||
log.info("[公会金币每日余额统计] memberList为空");
|
||||
return;
|
||||
}
|
||||
|
||||
List<Long> uidList = memberList.stream().map(FamilyMember::getUid).distinct().collect(Collectors.toList());
|
||||
List<UserPurse> userPurseList = userPurseService.lambdaQuery().in(UserPurse::getUid, uidList).list();
|
||||
for (UserPurse userPurse: userPurseList){
|
||||
uidGoldNumMap.put(userPurse.getUid(), userPurse.getGolds());
|
||||
}
|
||||
|
||||
Date now = new Date();
|
||||
int batchSize = 100;
|
||||
SqlSession batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
FamilyMemberGoldRemainDayRecordMapper recordMapper = batchSqlSession.getMapper(FamilyMemberGoldRemainDayRecordMapper.class);
|
||||
|
||||
try {
|
||||
int memberIndex = 0;
|
||||
for (FamilyMember member: memberList){
|
||||
Double goldRemain = Boolean.TRUE.equals(member.getEnable())? uidGoldNumMap.getOrDefault(member.getUid(), 0d): 0d;
|
||||
|
||||
//结算记录
|
||||
FamilyMemberGoldRemainDayRecord dayRecord = new FamilyMemberGoldRemainDayRecord();
|
||||
dayRecord.setUid(member.getUid());
|
||||
dayRecord.setFamilyId(member.getFamilyId());
|
||||
dayRecord.setGoldRemain(goldRemain);
|
||||
dayRecord.setDate(dateStr);
|
||||
dayRecord.setCreateTime(now);
|
||||
recordMapper.insert(dayRecord);
|
||||
|
||||
if (memberIndex > 0 && memberIndex % batchSize == 0){
|
||||
batchSqlSession.commit();
|
||||
}
|
||||
memberIndex ++;
|
||||
}
|
||||
|
||||
batchSqlSession.commit();
|
||||
} catch (Exception e){
|
||||
batchSqlSession.rollback();
|
||||
log.error("[公会金币每日余额统计] 插入记录发生异常回滚", e);
|
||||
} finally {
|
||||
batchSqlSession.close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,11 +0,0 @@
|
||||
package com.accompany.business.service.family;
|
||||
|
||||
import com.accompany.business.model.family.FamilyMemberSettlementRecord;
|
||||
import com.accompany.business.mybatismapper.family.FamilyMemberSettlementRecordMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class FamilyMemberSettlementDayRecordService extends ServiceImpl<FamilyMemberSettlementRecordMapper, FamilyMemberSettlementRecord> {
|
||||
|
||||
}
|
@@ -1,214 +0,0 @@
|
||||
package com.accompany.business.service.family;
|
||||
|
||||
import com.accompany.business.model.HallGiftRecord;
|
||||
import com.accompany.business.model.HallGoldExchangeRecord;
|
||||
import com.accompany.business.model.HallMember;
|
||||
import com.accompany.business.model.clan.ClanGoldDayFlowRecord;
|
||||
import com.accompany.business.model.family.FamilyMember;
|
||||
import com.accompany.business.mybatismapper.clan.ClanGoldDayFlowRecordMapper;
|
||||
import com.accompany.business.service.purse.UserPurseService;
|
||||
import com.accompany.business.service.room.FamilyMemberRoomMicRecordService;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.BillObjTypeEnum;
|
||||
import com.accompany.sharding.model.BillRecord;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.session.ExecutorType;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FamilyMemberSettlementService {
|
||||
|
||||
@Autowired
|
||||
private FamilyMemberService familyMemberService;
|
||||
@Autowired
|
||||
private FamilyGiftRecordService familyGiftRecordService;
|
||||
@Autowired
|
||||
private FamilyMemberRoomMicRecordService familyMemberRoomMicRecordService;
|
||||
@Autowired
|
||||
private UserPurseService userPurseService;
|
||||
|
||||
/*public void statistic(Date date) throws InterruptedException {
|
||||
if (date == null){
|
||||
date = new Date();
|
||||
}
|
||||
|
||||
String dateStr = DateTimeUtil.convertDate(date, DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
Date dateStart = DateTimeUtil.getBeginTimeOfDay(date);
|
||||
Date dateEnd = DateTimeUtil.getEndTimeOfDay(date);
|
||||
Date dateEndLater = DateTimeUtil.getNextMinute(dateEnd, 1);
|
||||
|
||||
Map<String, Double> uidGiftDiamondMap = new HashMap<>();
|
||||
Map<String, Double> uidGiftGoldMap = new HashMap<>();
|
||||
Map<String, Double> uidEarnGoldMap = new HashMap<>();
|
||||
|
||||
List<FamilyMember> memberList = familyMemberService.listValidFamilyMemberByTime(dateStart, dateEnd);
|
||||
if (CollectionUtils.isEmpty(memberList)){
|
||||
|
||||
}
|
||||
|
||||
QueryWrapper<HallGiftRecord> queryWrapper = Wrappers.query();
|
||||
queryWrapper.lambda().between(HallGiftRecord::getCreateTime, dateStart, dateEnd)
|
||||
.isNotNull(HallGiftRecord::getClanId);
|
||||
List<HallGiftRecord> hallGiftRecordList = hallGiftRecordService.list(queryWrapper);
|
||||
if (!CollectionUtils.isEmpty(hallGiftRecordList)){
|
||||
List<Long> giftSendRecordIds = hallGiftRecordList.stream().map(HallGiftRecord::getGiftSendRecordId).collect(Collectors.toList());
|
||||
|
||||
Map<Long, Double> giftDiamondsMap = hallGiftRecordList.stream()
|
||||
.collect(Collectors.toMap(HallGiftRecord::getGiftSendRecordId, gsr->gsr.getTotalGoldNum().doubleValue()));
|
||||
|
||||
List<BillRecord> giftGoldsList = billRecordService.listBillRecordByGiftRecrod(dateStart, dateEndLater, giftSendRecordIds);
|
||||
Map<Long, Double> giftGoldsMap = giftGoldsList.stream()
|
||||
.filter(br->br.getObjType().equals(BillObjTypeEnum.GIFT_PERSON_INCOME.getValue())||br.getObjType().equals(BillObjTypeEnum.GIFT_ROOM_INCOME.getValue()))
|
||||
.collect(Collectors.toMap(br->Long.parseLong(br.getObjId()), br-> br.getAmount().doubleValue()));
|
||||
|
||||
Map<Long, BillRecord> earnGoldsMap = giftGoldsList.stream()
|
||||
.filter(br->br.getObjType().equals(BillObjTypeEnum.ROOM_PERCENTAGE_INCOME.getValue()))
|
||||
.collect(Collectors.toMap(br->Long.parseLong(br.getObjId()), br-> br));
|
||||
|
||||
for (HallGiftRecord record: hallGiftRecordList){
|
||||
long giftSendRecordId = record.getGiftSendRecordId();
|
||||
Double giftDiamonds = giftDiamondsMap.get(giftSendRecordId);
|
||||
if (null != giftDiamonds){
|
||||
String uid = String.format("%d_%d_%d", record.getClanId(), record.getHallId(), record.getReciveUid());
|
||||
uidGiftDiamondMap.put(uid, DoubleUtil.add(giftDiamonds, uidGiftDiamondMap.getOrDefault(uid, 0d)));
|
||||
|
||||
//签约流水
|
||||
if (null != record.getRoomUid() && record.getClanId().equals(record.getRoomClanId())
|
||||
&& (null == record.getHallId() || record.getHallId().equals(record.getRoomHallId()))){
|
||||
uidHallDiamondMap.put(uid, DoubleUtil.add(giftDiamonds, uidHallDiamondMap.getOrDefault(uid, 0d)));
|
||||
} else if (null != record.getRoomUid() && record.getClanId().equals(record.getRoomClanId())) {
|
||||
uidClanDiamondMap.put(uid, DoubleUtil.add(giftDiamonds, uidClanDiamondMap.getOrDefault(uid, 0d)));
|
||||
} else {
|
||||
uidOtherDiamondMap.put(uid, DoubleUtil.add(giftDiamonds, uidOtherDiamondMap.getOrDefault(uid, 0d)));
|
||||
}
|
||||
}
|
||||
|
||||
Double giftGolds = giftGoldsMap.get(giftSendRecordId);
|
||||
if (null != giftGolds){
|
||||
String uid = String.format("%d_%d_%d", record.getClanId(), record.getHallId(), record.getReciveUid());
|
||||
uidGiftGoldMap.put(uid, DoubleUtil.add(giftGolds, uidGiftGoldMap.getOrDefault(uid, 0d)));
|
||||
}
|
||||
|
||||
BillRecord earnGoldsBillRecord = earnGoldsMap.get(giftSendRecordId);
|
||||
if (null != earnGoldsBillRecord){
|
||||
String clanElderUid = String.format("%d_%d", record.getClanId(), earnGoldsBillRecord.getUid());
|
||||
uidEarnGoldMap.put(clanElderUid, DoubleUtil.add(earnGoldsBillRecord.getAmount().doubleValue(), uidEarnGoldMap.getOrDefault(clanElderUid, 0d)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Double> uidExchangeMap = new HashMap<>();
|
||||
List<HallGoldExchangeRecord> hallGoldExchangeRecordList = hallGoldExchangeService.listByTime(dateStart, dateEnd);
|
||||
if (!CollectionUtils.isEmpty(hallGoldExchangeRecordList)){
|
||||
for (HallGoldExchangeRecord record: hallGoldExchangeRecordList){
|
||||
String uid = String.format("%d_%d_%d", record.getClanId(), record.getHallId(), record.getUid());
|
||||
uidExchangeMap.put(uid, DoubleUtil.add(record.getGolds(), uidExchangeMap.getOrDefault(uid, 0d)));
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> uids = new HashSet<>();
|
||||
uids.addAll(uidGiftDiamondMap.keySet());
|
||||
uids.addAll(uidGiftGoldMap.keySet());
|
||||
uids.addAll(uidExchangeMap.keySet());
|
||||
|
||||
Date now = new Date();
|
||||
int batchSize = 100;
|
||||
SqlSession batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
ClanGoldDayFlowRecordMapper clanGoldDayFlowRecordMapper = batchSqlSession.getMapper(ClanGoldDayFlowRecordMapper.class);
|
||||
|
||||
try {
|
||||
int memberIndex = 0;
|
||||
for (String uidStr: uids){
|
||||
String[] uidArray = uidStr.split("_");
|
||||
Long clanId = Long.parseLong(uidArray[0]);
|
||||
Long hallId = !"null".equals(uidArray[1])? Long.parseLong(uidArray[1]): null;
|
||||
Long uid = Long.parseLong(uidArray[2]);
|
||||
|
||||
Double giftDiamonds = uidGiftDiamondMap.getOrDefault(uidStr, 0d);
|
||||
Double hallDiamonds = uidHallDiamondMap.getOrDefault(uidStr, 0d);
|
||||
Double clanDiamonds = uidClanDiamondMap.getOrDefault(uidStr, 0d);
|
||||
Double otherDiamonds = uidOtherDiamondMap.getOrDefault(uidStr, 0d);
|
||||
Double giftGolds = uidGiftGoldMap.getOrDefault(uidStr, 0d);
|
||||
String clanUidStr = String.format("%d_%d", clanId, uid);
|
||||
Double earnGolds = Optional.ofNullable(uidEarnGoldMap.remove(clanUidStr)).orElse(0d);
|
||||
Double exchangeGolds = uidExchangeMap.getOrDefault(uidStr, 0d);
|
||||
Double remainGolds = DoubleUtil.sub(DoubleUtil.add(giftGolds, earnGolds),exchangeGolds);
|
||||
|
||||
//结算记录
|
||||
ClanGoldDayFlowRecord dayFlowRecord = new ClanGoldDayFlowRecord();
|
||||
dayFlowRecord.setClanId(clanId);
|
||||
dayFlowRecord.setHallId(hallId);
|
||||
dayFlowRecord.setUid(uid);
|
||||
dayFlowRecord.setGiftDiamonds(giftDiamonds);
|
||||
dayFlowRecord.setHallDiamonds(hallDiamonds);
|
||||
dayFlowRecord.setClanDiamonds(clanDiamonds);
|
||||
dayFlowRecord.setOtherDiamonds(otherDiamonds);
|
||||
dayFlowRecord.setGiftGolds(giftGolds);
|
||||
dayFlowRecord.setEarnGolds(earnGolds);
|
||||
dayFlowRecord.setExchangeGolds(exchangeGolds);
|
||||
dayFlowRecord.setRemainGolds(remainGolds);
|
||||
dayFlowRecord.setDate(dateStr);
|
||||
dayFlowRecord.setCreateTime(now);
|
||||
clanGoldDayFlowRecordMapper.insert(dayFlowRecord);
|
||||
|
||||
if (memberIndex > 0 && memberIndex % batchSize == 0){
|
||||
batchSqlSession.commit();
|
||||
}
|
||||
memberIndex ++;
|
||||
}
|
||||
|
||||
//有会长产生流水分成,但自己在周期内没有收礼和兑换,需要手动添加
|
||||
if (!uidEarnGoldMap.isEmpty()){
|
||||
for (Map.Entry<String, Double> clanEarn : uidEarnGoldMap.entrySet()){
|
||||
String clanUidStr = clanEarn.getKey();
|
||||
Double earnGolds = clanEarn.getValue();
|
||||
String[] uidArray = clanUidStr.split("_");
|
||||
Long clanId = Long.parseLong(uidArray[0]);
|
||||
Long uid = Long.parseLong(uidArray[1]);
|
||||
|
||||
HallMember hallMember = hallService.getHallMember(uid);
|
||||
Long hallId = null != hallMember? hallMember.getHallId(): null;
|
||||
|
||||
//结算记录
|
||||
ClanGoldDayFlowRecord dayFlowRecord = new ClanGoldDayFlowRecord();
|
||||
dayFlowRecord.setClanId(clanId);
|
||||
dayFlowRecord.setHallId(hallId);
|
||||
dayFlowRecord.setUid(uid);
|
||||
dayFlowRecord.setGiftDiamonds(0d);
|
||||
dayFlowRecord.setHallDiamonds(0d);
|
||||
dayFlowRecord.setClanDiamonds(0d);
|
||||
dayFlowRecord.setOtherDiamonds(0d);
|
||||
dayFlowRecord.setGiftGolds(0d);
|
||||
dayFlowRecord.setEarnGolds(earnGolds);
|
||||
dayFlowRecord.setExchangeGolds(0d);
|
||||
dayFlowRecord.setRemainGolds(earnGolds);
|
||||
dayFlowRecord.setDate(dateStr);
|
||||
dayFlowRecord.setCreateTime(now);
|
||||
clanGoldDayFlowRecordMapper.insert(dayFlowRecord);
|
||||
|
||||
if (memberIndex > 0 && memberIndex % batchSize == 0){
|
||||
batchSqlSession.commit();
|
||||
}
|
||||
memberIndex ++;
|
||||
}
|
||||
}
|
||||
|
||||
batchSqlSession.commit();
|
||||
} catch (Exception e){
|
||||
batchSqlSession.rollback();
|
||||
log.error("[公会金币每日流水统计] 插入记录发生异常回滚", e);
|
||||
} finally {
|
||||
batchSqlSession.close();
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
@@ -92,6 +92,7 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
record.setFamilyId(familyMember.getFamilyId());
|
||||
record.setRoomUid(roomUid);
|
||||
record.setRoomId(roomId);
|
||||
record.setPos(pos);
|
||||
record.setUpTime(new Date(entreTimestamp));
|
||||
record.setDownTime(new Date(timestamp));
|
||||
record.setRemainTime(remainMillisecond);
|
||||
@@ -107,4 +108,8 @@ public class FamilyMemberRoomMicRecordService extends ServiceImpl<FamilyMemberRo
|
||||
private boolean isDownMicActionAction(Integer qEvent) {
|
||||
return 5 == qEvent;
|
||||
}
|
||||
|
||||
public List<FamilyMemberRoomMicRecord> listTotalRemainTimeByFamilyMember(Date upTime, Date startTime, Date endTime, Date downTime) {
|
||||
return this.baseMapper.listTotalRemainTimeByFamilyMember(upTime, startTime, endTime, downTime);
|
||||
}
|
||||
}
|
||||
|
@@ -2,4 +2,12 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.accompany.business.mybatismapper.family.FamilyGiftRecordMapper">
|
||||
|
||||
<select id="listTotalGoldGroupByFamilyMember"
|
||||
resultType="com.accompany.business.model.family.FamilyGiftRecord">
|
||||
select receiver_uid, family_id, sum(total_gold_num) `total_gold_num`, count(distinct sender_uid) gift_send_record_id
|
||||
from family_gift_record fgr
|
||||
where fgr.create_time between #{startTime} and #{endTime}
|
||||
group by receiver_uid, family_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.accompany.business.mybatismapper.family.FamilyMemberSettlementRecordMapper">
|
||||
<mapper namespace="com.accompany.business.mybatismapper.family.FamilyMemberGoldRemainDayRecordMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,29 @@
|
||||
package com.accompany.scheduler.task.family;
|
||||
|
||||
import com.accompany.business.service.family.FamilyMemberGoldRemainDayRecordService;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class FamilySettlementTask {
|
||||
|
||||
@Autowired
|
||||
private FamilyMemberGoldRemainDayRecordService service;
|
||||
|
||||
@SneakyThrows
|
||||
@Scheduled(cron = "0 0 0 ? * *")
|
||||
public void dayStatistic(){
|
||||
long now = System.currentTimeMillis();
|
||||
log.info("FamilySettlement() start..........");
|
||||
|
||||
service.dayStatistic(null);
|
||||
|
||||
long finish = System.currentTimeMillis();
|
||||
log.info("FamilySettlement() cost {}ms finish..........", finish-now);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user