家族-FamilyMemberSerial
This commit is contained in:
@@ -127,6 +127,7 @@ public class FamilyManageAdminService {
|
||||
Date now = new Date();
|
||||
|
||||
Family family = new Family();
|
||||
family.setPartitionId(u.getPartitionId());
|
||||
family.setOwnerUid(u.getUid());
|
||||
family.setName(u.getNick() + I18NMessageSourceUtil.getMessage(FamilyConstant.DefaultInfo.DEFAULT_NAME_SUFFIX_I18N_ID,
|
||||
FamilyConstant.DefaultInfo.DEFAULT_NAME_SUFFIX, partitionInfo.getId()));
|
||||
@@ -146,6 +147,7 @@ public class FamilyManageAdminService {
|
||||
FamilyMember familyMember = new FamilyMember();
|
||||
familyMember.setUid(u.getUid());
|
||||
familyMember.setFamilyId(family.getId());
|
||||
familyMember.setPartitionId(family.getPartitionId());
|
||||
familyMember.setRoleType(FamilyConstant.RoleType.OWNER);
|
||||
familyMember.setCreateTime(now);
|
||||
familyMember.setUpdateTime(now);
|
||||
@@ -672,6 +674,7 @@ public class FamilyManageAdminService {
|
||||
familyMember = new FamilyMember();
|
||||
familyMember.setUid(u.getUid());
|
||||
familyMember.setFamilyId(family.getId());
|
||||
familyMember.setPartitionId(family.getPartitionId());
|
||||
familyMember.setRoleType(FamilyConstant.RoleType.NORMAL);
|
||||
familyMember.setCreateTime(new Date());
|
||||
familyMember.setUpdateTime(new Date());
|
||||
|
@@ -11,6 +11,7 @@ public class Family {
|
||||
|
||||
@TableId(type= IdType.AUTO)
|
||||
private Integer id;
|
||||
private Integer partitionId;
|
||||
private String name;
|
||||
private Long ownerUid;
|
||||
private String avatar;
|
||||
@@ -38,4 +39,4 @@ public class Family {
|
||||
* 邀请人证明
|
||||
*/
|
||||
private String inviteCheck;
|
||||
}
|
||||
}
|
@@ -12,10 +12,11 @@ public class FamilyMember {
|
||||
@TableId(type= IdType.AUTO)
|
||||
private Long id;
|
||||
private Integer familyId;
|
||||
private Integer partitionId;
|
||||
private Long uid;
|
||||
private Byte roleType;
|
||||
private Date createTime;
|
||||
private Date updateTime;
|
||||
private Boolean enable;
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package com.accompany.business.model.family;
|
||||
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class FamilyMemberSerial {
|
||||
private String cycleDate;
|
||||
private Long familyMemberId;
|
||||
private Integer familyId;
|
||||
private Long uid;
|
||||
private BigDecimal serialValue;
|
||||
private Date createTime;
|
||||
private Date updateTime;
|
||||
}
|
@@ -5,15 +5,15 @@ import com.accompany.business.event.SuperLuckyGiftDiamondIncomeMessageEvent;
|
||||
import com.accompany.business.message.GuildMemberIncreaseFlowMessage;
|
||||
import com.accompany.business.message.SuperLuckyGiftDiamondIncomeMessage;
|
||||
import com.accompany.business.model.family.FamilyMember;
|
||||
import com.accompany.business.service.family.FamilyMemberSerialService;
|
||||
import com.accompany.business.service.family.FamilyMemberService;
|
||||
import com.accompany.business.service.family.FamilyMemberWeekLevelRewardService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.util.CycleTimeUtil;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.model.PartitionInfo;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.service.partition.PartitionInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
@@ -29,13 +29,13 @@ public class FamilyMemberWeekLevelRewardDiamondListener implements ApplicationLi
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private PartitionInfoService partitionInfoService;
|
||||
@Autowired
|
||||
private FamilyMemberService familyMemberService;
|
||||
@Autowired
|
||||
private FamilyMemberWeekLevelRewardService familyMemberWeekDiamondLevelRewardService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
@Autowired
|
||||
private FamilyMemberSerialService familyMemberSerialService;
|
||||
|
||||
@Async
|
||||
@Override
|
||||
@@ -45,10 +45,8 @@ public class FamilyMemberWeekLevelRewardDiamondListener implements ApplicationLi
|
||||
|
||||
Users receiver = usersService.getNotNullUsersByUid(receiverUid);
|
||||
|
||||
PartitionInfo partitionInfo = partitionInfoService.getById(receiver.getPartitionId());
|
||||
if (null == receiver.getPartitionId()
|
||||
|| !Constant.ClanMode.FAMILY.equals(partitionInfo.getClanMode())
|
||||
|| PartitionEnum.ENGLISH.getId() != receiver.getPartitionId()) {
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(receiver.getPartitionId());
|
||||
if (!Constant.ClanMode.FAMILY.equals(partitionEnum.getClanMode())){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -58,10 +56,14 @@ public class FamilyMemberWeekLevelRewardDiamondListener implements ApplicationLi
|
||||
}
|
||||
|
||||
Date time = message.getCreateTime();
|
||||
Date zoneTime = DateTimeUtil.withZoneSameInstant(time, partitionInfo.getZoneId());
|
||||
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
Double totalDiamondNum = message.getTotalDiamondNum();
|
||||
|
||||
BigDecimal goldNum = BigDecimal.valueOf(totalDiamondNum);
|
||||
String cycleDate = CycleTimeUtil.getCycleDateByZoneId(time, partitionEnum.getZoneId());
|
||||
familyMemberSerialService.update(cycleDate, familyMember, goldNum);
|
||||
|
||||
Date zoneTime = DateTimeUtil.withZoneSameInstant(time, partitionEnum.getZoneId());
|
||||
String monday = DateTimeUtil.convertDate(DateTimeUtil.getMondayDate(zoneTime), DateTimeUtil.DEFAULT_DATE_PATTERN);
|
||||
familyMemberWeekDiamondLevelRewardService.addProcess(familyMember.getId(), receiver.getPartitionId(), monday, totalDiamondNum);
|
||||
|
||||
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(receiver.getPartitionId(),
|
||||
|
@@ -0,0 +1,24 @@
|
||||
package com.accompany.business.mybatismapper.family;
|
||||
|
||||
import com.accompany.business.model.family.FamilyMemberSerial;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public interface FamilyMemberSerialMapper extends BaseMapper<FamilyMemberSerial> {
|
||||
|
||||
void updateSerial(@Param("cycleDate") String cycleDate,
|
||||
@Param("familyMemberId") Long familyMemberId,
|
||||
@Param("familyId") Integer familyId,
|
||||
@Param("uid") Long uid,
|
||||
@Param("serialValue") BigDecimal serialValue,
|
||||
@Param("time") Date time);
|
||||
|
||||
BigDecimal getTotalSerialInCycle(@Param("cycleDate") String cycleDate,
|
||||
@Param("familyId") Integer familyId);
|
||||
|
||||
List<FamilyMemberSerial> listMemberTotalSerialInCycle(@Param("cycleDate") String cycleDate,
|
||||
@Param("familyId") Integer familyId);
|
||||
}
|
@@ -1,28 +1,16 @@
|
||||
package com.accompany.business.service.family;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.accompany.business.event.GuildMemberIncreaseFlowEvent;
|
||||
import com.accompany.business.message.GuildMemberIncreaseFlowMessage;
|
||||
import com.accompany.business.model.family.FamilyGiftRecord;
|
||||
import com.accompany.business.model.family.FamilyMember;
|
||||
import com.accompany.business.mybatismapper.family.FamilyGiftRecordMapper;
|
||||
import com.accompany.business.vo.family.FamilyIncomeAdminVo;
|
||||
import com.accompany.business.vo.family.FamilyMemberAdminVo;
|
||||
import com.accompany.business.vo.family.FamilyMemberIncomeAdminVo;
|
||||
import com.accompany.business.vo.family.FamilyUserIncomeItemVo;
|
||||
import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo;
|
||||
import com.accompany.business.vo.guild.GuildInfoVo;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.base.SpringContextHolder;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.sharding.model.GiftSendRecord;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -35,40 +23,6 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class FamilyGiftRecordService extends ServiceImpl<FamilyGiftRecordMapper, FamilyGiftRecord> {
|
||||
|
||||
@Autowired
|
||||
private FamilyRankService familyRankService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Async
|
||||
public void insertFamilyGiftRecord(GiftSendRecord giftSendRecord) {
|
||||
if (giftSendRecord == null) {
|
||||
throw new ServiceException(BusiStatus.HALL_GIFT_SEND_RECORD_NULL);
|
||||
}
|
||||
|
||||
FamilyMember familyMember = SpringContextHolder.getBean(FamilyMemberService.class).getVaildFamilyMemberByUid(giftSendRecord.getReciveUid());
|
||||
if (null == familyMember) {
|
||||
return;
|
||||
}
|
||||
|
||||
FamilyGiftRecord familyGiftRecord = new FamilyGiftRecord();
|
||||
familyGiftRecord.setGiftSendRecordId(giftSendRecord.getSendRecordId());
|
||||
familyGiftRecord.setCreateTime(giftSendRecord.getCreateTime());
|
||||
familyGiftRecord.setFamilyId(familyMember.getFamilyId());
|
||||
familyGiftRecord.setSenderUid(giftSendRecord.getUid());
|
||||
familyGiftRecord.setReceiverUid(giftSendRecord.getReciveUid());
|
||||
familyGiftRecord.setTotalGoldNum(giftSendRecord.getTotalGoldNum());
|
||||
save(familyGiftRecord);
|
||||
|
||||
familyRankService.updateRank(familyGiftRecord);
|
||||
|
||||
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(giftSendRecord.getPartitionId(),
|
||||
familyMember.getFamilyId(), familyMember.getUid(),
|
||||
BigDecimal.valueOf(giftSendRecord.getTotalGoldNum()),
|
||||
BigDecimal.valueOf(giftSendRecord.getTotalDiamondNum()),
|
||||
giftSendRecord.getCreateTime())));
|
||||
}
|
||||
|
||||
public List<FamilyUserIncomeItemVo> listTotalGoldGroupByDate(Date startTime, Date endTime, Long uid, Integer familyId) {
|
||||
return this.baseMapper.listTotalGoldGroupByDate(startTime, endTime, uid, familyId);
|
||||
}
|
||||
|
@@ -0,0 +1,30 @@
|
||||
package com.accompany.business.service.family;
|
||||
|
||||
import com.accompany.business.model.family.FamilyMember;
|
||||
import com.accompany.business.model.family.FamilyMemberSerial;
|
||||
import com.accompany.business.mybatismapper.family.FamilyMemberSerialMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class FamilyMemberSerialService extends ServiceImpl<FamilyMemberSerialMapper, FamilyMemberSerial> {
|
||||
|
||||
public void update(String cycleDate, FamilyMember familyMember, BigDecimal serialValue) {
|
||||
Date now = new Date();
|
||||
this.baseMapper.updateSerial(cycleDate, familyMember.getId(),
|
||||
familyMember.getFamilyId(), familyMember.getUid(),
|
||||
serialValue, now);
|
||||
}
|
||||
|
||||
public BigDecimal getTotalSerialInCycle(String cycleDate, Integer familyId) {
|
||||
BigDecimal totalSerial = this.baseMapper.getTotalSerialInCycle(cycleDate, familyId);
|
||||
return null != totalSerial ? totalSerial : BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
public List<FamilyMemberSerial> listMemberSerialInCycle(String cycleDate, Integer familyId) {
|
||||
return this.baseMapper.listMemberTotalSerialInCycle(cycleDate, familyId);
|
||||
}
|
||||
}
|
@@ -65,6 +65,7 @@ public class FamilyRankService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Async
|
||||
public void updateRank(Integer familyId, Long uid, Long totalGoldNum, Integer partitionId){
|
||||
RScoredSortedSet<Integer> weekRank = getWeekRank(partitionId);
|
||||
weekRank.addScore(familyId, totalGoldNum);
|
||||
@@ -73,24 +74,13 @@ public class FamilyRankService {
|
||||
RScoredSortedSet<Integer> monthRank = getMonthRank(partitionId, RankConstant.PeriodType.nowadays);
|
||||
monthRank.addScore(familyId, totalGoldNum);
|
||||
monthRank.expire(60, TimeUnit.DAYS);
|
||||
|
||||
RScoredSortedSet<Long> monthMemberRank = getMonthMemberRank(familyId, partitionId, RankConstant.PeriodType.nowadays);
|
||||
monthMemberRank.addScore(uid, totalGoldNum);
|
||||
monthMemberRank.expire(60, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
@Async
|
||||
public void updateRank(FamilyGiftRecord familyGiftRecord) {
|
||||
if (null == familyGiftRecord.getTotalGoldNum()
|
||||
|| 0L >= familyGiftRecord.getTotalGoldNum()){
|
||||
return;
|
||||
}
|
||||
|
||||
Users u = usersService.getNotNullUsersByUid(familyGiftRecord.getReceiverUid());
|
||||
|
||||
updateRank(familyGiftRecord.getFamilyId(), familyGiftRecord.getReceiverUid(), familyGiftRecord.getTotalGoldNum(), u.getPartitionId());
|
||||
|
||||
log.info("[familyRank] addScore success, familyId {} totalGoldNum {} uid {} partitionId {}",
|
||||
familyGiftRecord.getFamilyId(), familyGiftRecord.getTotalGoldNum(), u.getUid(), u.getPartitionId());
|
||||
familyId, totalGoldNum, uid, partitionId);
|
||||
}
|
||||
|
||||
public Map<Integer, Double> getWeekRankScoreMap(Integer partitionId){
|
||||
|
@@ -257,6 +257,7 @@ public class FamilyRelationService {
|
||||
familyMember = new FamilyMember();
|
||||
familyMember.setUid(targetUid);
|
||||
familyMember.setFamilyId(family.getId());
|
||||
familyMember.setPartitionId(family.getPartitionId());
|
||||
familyMember.setRoleType(FamilyConstant.RoleType.NORMAL);
|
||||
familyMember.setCreateTime(new Date());
|
||||
familyMember.setUpdateTime(new Date());
|
||||
|
@@ -0,0 +1,60 @@
|
||||
package com.accompany.business.service.family;
|
||||
|
||||
import com.accompany.business.event.GuildMemberIncreaseFlowEvent;
|
||||
import com.accompany.business.message.GuildMemberIncreaseFlowMessage;
|
||||
import com.accompany.business.model.family.FamilyMember;
|
||||
import com.accompany.business.util.CycleTimeUtil;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.sharding.model.GiftSendRecord;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Service
|
||||
public class FamilySerialRecordService {
|
||||
|
||||
@Autowired
|
||||
private FamilyMemberService familyMemberService;
|
||||
@Autowired
|
||||
private FamilyRankService familyRankService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
@Autowired
|
||||
private FamilyMemberSerialService familyMemberSerialService;
|
||||
|
||||
@Async
|
||||
public void update(GiftSendRecord giftSendRecord) {
|
||||
if (giftSendRecord == null) {
|
||||
throw new ServiceException(BusiStatus.HALL_GIFT_SEND_RECORD_NULL);
|
||||
}
|
||||
|
||||
if (null == giftSendRecord.getTotalGoldNum() || giftSendRecord.getTotalGoldNum() <= 0){
|
||||
return;
|
||||
}
|
||||
|
||||
FamilyMember familyMember = familyMemberService.getVaildFamilyMemberByUid(giftSendRecord.getReciveUid());
|
||||
if (null == familyMember) {
|
||||
return;
|
||||
}
|
||||
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(familyMember.getPartitionId());
|
||||
String cycleDate = CycleTimeUtil.getCurCycleDateByZoneId(partitionEnum.getZoneId());
|
||||
|
||||
BigDecimal goldNum = BigDecimal.valueOf(giftSendRecord.getTotalGoldNum());
|
||||
familyMemberSerialService.update(cycleDate, familyMember, goldNum);
|
||||
|
||||
familyRankService.updateRank(familyMember.getFamilyId(), giftSendRecord.getUid(), giftSendRecord.getTotalGoldNum(), giftSendRecord.getPartitionId());
|
||||
|
||||
applicationContext.publishEvent(new GuildMemberIncreaseFlowEvent(new GuildMemberIncreaseFlowMessage(giftSendRecord.getPartitionId(),
|
||||
familyMember.getFamilyId(), familyMember.getUid(),
|
||||
BigDecimal.valueOf(giftSendRecord.getTotalGoldNum()),
|
||||
BigDecimal.valueOf(giftSendRecord.getTotalDiamondNum()),
|
||||
giftSendRecord.getCreateTime())));
|
||||
}
|
||||
|
||||
}
|
@@ -13,6 +13,7 @@ import com.accompany.business.service.clan.ClanAccountAssociateService;
|
||||
import com.accompany.business.service.clan.ClanAssociateTransferRecordService;
|
||||
import com.accompany.business.service.clan.ClanService;
|
||||
import com.accompany.business.service.family.FamilyGiftRecordService;
|
||||
import com.accompany.business.service.family.FamilySerialRecordService;
|
||||
import com.accompany.business.service.guild.GuildGiftRecordService;
|
||||
import com.accompany.business.service.hall.HallGiftRecordService;
|
||||
import com.accompany.business.service.hall.HallRoomGiftRecordService;
|
||||
@@ -73,6 +74,8 @@ public class GiftEarnAllotService {
|
||||
private GuildGiftRecordService guildGiftRecordService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
@Autowired
|
||||
private FamilySerialRecordService familySerialRecordService;
|
||||
|
||||
public Double allotGiftEarn(GiftSendRecord record, String objId, BillObjTypeEnum inEnum) {
|
||||
long uid = record.getReciveUid();
|
||||
@@ -143,7 +146,7 @@ public class GiftEarnAllotService {
|
||||
Double amount = golds.multiply(rate).doubleValue();
|
||||
|
||||
record.setTotalDiamondNum(amount);
|
||||
familyGiftRecordService.insertFamilyGiftRecord(record);
|
||||
familySerialRecordService.update(record);
|
||||
|
||||
if (Double.compare(amount, 0d) <= 0){
|
||||
return;
|
||||
|
@@ -0,0 +1,33 @@
|
||||
<?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.FamilyMemberSerialMapper">
|
||||
|
||||
<update id="updateSerial">
|
||||
INSERT INTO family_member_serial (cycle_date, family_member_id, family_id, uid, serial_value, create_time, update_time)
|
||||
VALUES (#{cycleDate}, #{familyMemberId}, #{familyId}, #{uid}, #{serialValue}, #{time}, #{time})
|
||||
ON DUPLICATE KEY UPDATE
|
||||
serial_value = serial_value + #{serialValue},
|
||||
update_time = #{time}
|
||||
</update>
|
||||
|
||||
<select id="getTotalSerialInCycle" resultType="java.math.BigDecimal">
|
||||
SELECT SUM(serial_value)
|
||||
FROM family_member_serial
|
||||
WHERE cycle_date = #{cycleDate} AND family_id = #{familyId}
|
||||
</select>
|
||||
|
||||
<select id="listMemberTotalSerialInCycle" resultType="com.accompany.business.model.family.FamilyMemberSerial">
|
||||
SELECT
|
||||
cycle_date as cycleDate,
|
||||
family_member_id as familyMemberId,
|
||||
family_id as familyId,
|
||||
uid,
|
||||
SUM(serial_value) as serialValue,
|
||||
MIN(create_time) as createTime,
|
||||
MAX(update_time) as updateTime
|
||||
FROM family_member_serial
|
||||
WHERE cycle_date = #{cycleDate} AND family_id = #{familyId}
|
||||
GROUP BY cycle_date, family_member_id, family_id, uid
|
||||
</select>
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user