修改 invite 统计 逻辑
This commit is contained in:
parent
4499d636d0
commit
1f37a8e709
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 达标次数
|
||||
|
|
|
|||
|
|
@ -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} " +
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 邀请的已达标人数
|
||||
|
|
|
|||
Loading…
Reference in New Issue