修改 invite 统计 逻辑

This commit is contained in:
GYJ 2025-01-04 14:01:15 +08:00
parent 4499d636d0
commit 1f37a8e709
7 changed files with 26 additions and 79 deletions

View File

@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@ -24,17 +27,20 @@ public class InviteAchievement implements Serializable {
*
*/
@TableId
private Integer id;
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 用户id
* 邀请用户用户id -- 上级
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long userId;
/**
* 上级邀请用户id
* 下级被邀请用户id 当前达标用户id
*/
private Long sourceUserId;
@JsonSerialize(using = ToStringSerializer.class)
private Long targetUserId;
/**
* 达标次数

View File

@ -15,8 +15,8 @@ import org.apache.ibatis.annotations.Update;
@Mapper
public interface InviteAchievementMapper extends BaseMapper<InviteAchievement> {
@Update("update invite_achievement set count = count + #{i}, update_time=now() where id = #{id}")
int incrCount(Integer id, int i);
@Update("update invite_achievement set count = count + #{i}, update_time=now() where id = #{id} and user_id = #{userId}")
int incrCount(Long id, Long userId, int i);
@Insert("INSERT INTO invite_achievement (user_id, source_user_id, count, state, create_time)\n" +
"SELECT #{userId}, #{sourceUserId}, #{count}, #{state}, #{createTime} " +

View File

@ -14,7 +14,7 @@ public interface InviteAchievementService extends IService<InviteAchievement> {
InviteAchievement getByUserId(Long userId);
int incrCount(Integer id, int i);
int incrCount(Long id, Long userId, int i);
boolean insertNotExists(InviteAchievement inviteAchievement);

View File

@ -25,12 +25,12 @@ public class InviteAchievementServiceImpl extends ServiceImpl<InviteAchievementM
@Override
public InviteAchievement getByUserId(Long userId) {
return getOne(new LambdaQueryWrapper<InviteAchievement>()
.eq(InviteAchievement::getUserId, userId));
.eq(InviteAchievement::getTargetUserId, userId));
}
@Override
public int incrCount(Integer id, int i) {
return baseMapper.incrCount(id,i);
public int incrCount(Long id, Long userId, int i) {
return baseMapper.incrCount(id, userId,i);
}
@Override
@ -42,13 +42,13 @@ public class InviteAchievementServiceImpl extends ServiceImpl<InviteAchievementM
public int countBySourceUserId(Long userId) {
return count(new LambdaQueryWrapper<InviteAchievement>()
.eq(InviteAchievement::getState, 1)
.eq(InviteAchievement::getSourceUserId, userId));
.eq(InviteAchievement::getUserId, userId));
}
@Override
public int countNum(Long userId, Integer signCount) {
return count(new LambdaQueryWrapper<InviteAchievement>()
.eq(InviteAchievement::getSourceUserId, userId)
.eq(InviteAchievement::getUserId, userId)
.ge(InviteAchievement::getCount, signCount));
}
}

View File

@ -113,7 +113,7 @@ public class AppInviteController {
Integer inviteCount = inviteService.selectInviteCount2(userEntity.getInvitationCode());
// Integer inviteSignCount = inviteService.selectInviteSignCount(userEntity.getInvitationCode());
int inviteSignCount = inviteAchievementService.count(new LambdaQueryWrapper<InviteAchievement>().eq(InviteAchievement::getState, 1)
.eq(InviteAchievement::getSourceUserId, userId));
.eq(InviteAchievement::getUserId, userId));
Map<String, Double> earningMap = userMoneyDetailsService.queryUserTotalEarning(userId);
Map<String, Object> result = new HashMap<>();
result.put("inviteMoney", inviteMoney);

View File

@ -232,18 +232,7 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
public Map<String, Object> updateInvite(UserEntity userEntity, String format, Long userId, BigDecimal price) {
Map<String, Object> result = new HashMap<>();
if (userEntity != null && userId != null && price != null) {
Invite invite1 = inviteDao.selectInviteByUser(userEntity.getUserId(), userId, 1);
if (invite1 == null) {
Invite invite = new Invite();
invite.setState(0);
invite.setMoney(0.00);
invite.setUserId(userEntity.getUserId());
invite.setInviteeUserId(userId);
invite.setCreateTime(format);
invite.setUserType(1);
inviteDao.insert(invite);
invite1 = inviteDao.selectInviteByUser(userEntity.getUserId(), userId, 1);
}
UserEntity userEntity1 = userService.selectUserById(userId);
BigDecimal oneMoney = BigDecimal.ZERO;
BigDecimal twoMoney = BigDecimal.ZERO;
@ -251,65 +240,17 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
BigDecimal rateMoney = userEntity.getRate();
oneMoney = rateMoney;
Double money = rateMoney.doubleValue();
invite1.setUserType(1);
invite1.setState(1);
BigDecimal add = BigDecimal.valueOf(invite1.getMoney()).add(BigDecimal.valueOf(money));
invite1.setMoney(add.doubleValue());
inviteDao.updateById(invite1);
inviteMoneyService.updateInviteMoneySum(money, userEntity.getUserId());
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(userEntity.getUserId());
userMoneyDetails.setType(1);
//
userMoneyDetails.setClassify(1);
userMoneyDetails.setMoney(new BigDecimal(money));
userMoneyDetails.setCreateTime(format);
userMoneyDetails.setTitle("[邀请好友]好友名称:" + userEntity1.getUserName());
userMoneyDetails.setContent("获取佣金:" + money);
userMoneyDetails.setMoneyType(1);
userMoneyDetails.setState(2);
userMoneyDetailsService.save(userMoneyDetails);
userMoneyService.updateAmount(1, userEntity.getUserId(), money);
result.put("oneUserId", userEntity.getUserId());
result.put("oneMoney", money);
}
UserEntity two = userService.queryByInvitationCode(userEntity.getInviterCode());
if (two != null) {
Invite invite2 = inviteDao.selectInviteByUser(two.getUserId(), userId, 2);
if (invite2 == null) {
Invite invite = new Invite();
invite.setState(0);
invite.setMoney(0.00);
invite.setUserId(two.getUserId());
invite.setInviteeUserId(userId);
invite.setCreateTime(format);
invite.setUserType(2);
inviteDao.insert(invite);
invite2 = inviteDao.selectInviteByUser(two.getUserId(), userId, 2);
}
if (two.getTwoRate() != null && two.getTwoRate().doubleValue() > 0) {
BigDecimal rateMoney = two.getTwoRate();
twoMoney = rateMoney;
Double money = rateMoney.doubleValue();
invite2.setUserType(2);
invite2.setState(1);
BigDecimal add = BigDecimal.valueOf(invite2.getMoney()).add(BigDecimal.valueOf(money));
invite2.setMoney(add.doubleValue());
inviteDao.updateById(invite2);
inviteMoneyService.updateInviteMoneySum(money, two.getUserId());
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(two.getUserId());
userMoneyDetails.setType(1);
userMoneyDetails.setMoney(new BigDecimal(money));
userMoneyDetails.setCreateTime(format);
//
userMoneyDetails.setClassify(1);
userMoneyDetails.setTitle("[邀请好友]好友名称:" + userEntity1.getUserName());
userMoneyDetails.setContent("获取佣金:" + money);
userMoneyDetails.setMoneyType(1);
userMoneyDetails.setState(2);
userMoneyDetailsService.save(userMoneyDetails);
userMoneyService.updateAmount(1, two.getUserId(), money);
result.put("twoUserId", two.getUserId());
result.put("twoMoney", money);
}

View File

@ -162,11 +162,11 @@ public class TempOrdersTask {
inviteAchievement.setState(0);
inviteAchievement.setCount(1);
inviteAchievement.setCreateTime(DateUtil.date());
inviteAchievement.setUserId(user.getUserId());
inviteAchievement.setSourceUserId(byUser.getUserId());
inviteAchievement.setTargetUserId(user.getUserId());
inviteAchievement.setUserId(byUser.getUserId());
inviteAchievementService.save(inviteAchievement);
} else {
inviteAchievementService.incrCount(inviteAchievement.getId(), 1);
inviteAchievementService.incrCount(inviteAchievement.getId(), inviteAchievement.getUserId(), 1);
}
}
ThreadUtil.execAsync(() -> {
@ -248,7 +248,7 @@ public class TempOrdersTask {
int count = inviteAchievementService.count(
new LambdaQueryWrapper<InviteAchievement>()
.eq(InviteAchievement::getSourceUserId, sourceUser.getUserId())
.eq(InviteAchievement::getUserId, sourceUser.getUserId())
.eq(InviteAchievement::getState, 1));
logger.info("邀请人员: {}", count);
//count 邀请的已达标人数