diff --git a/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java b/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java index 815df790..b96e6ccf 100644 --- a/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java +++ b/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java @@ -1,5 +1,7 @@ package com.sqx.modules.invite.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -10,14 +12,8 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; -import com.sqx.modules.app.entity.UserEntity; -import com.sqx.modules.app.entity.UserMoney; -import com.sqx.modules.app.entity.UserMoneyDetails; -import com.sqx.modules.app.entity.UserVip; -import com.sqx.modules.app.service.UserMoneyDetailsService; -import com.sqx.modules.app.service.UserMoneyService; -import com.sqx.modules.app.service.UserService; -import com.sqx.modules.app.service.UserVipService; +import com.sqx.modules.app.entity.*; +import com.sqx.modules.app.service.*; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.invite.dao.InviteDao; import com.sqx.modules.invite.entity.Invite; @@ -34,6 +30,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 邀请记录 @@ -60,6 +57,8 @@ public class InviteServiceImpl extends ServiceImpl implements private UserVipService userVipService; @Autowired private SysUserService sysUserService; + @Autowired + private InviteAchievementService inviteAchievementService; @Override public PageUtils selectInviteList(int page, int limit, Integer state, Long userId) { @@ -76,7 +75,36 @@ public class InviteServiceImpl extends ServiceImpl implements public PageUtils selectInviteUser(int page, int limit, Long userId, Integer state, Integer userType) { UserEntity userEntity = userService.queryByUserId(userId); PageHelper.startPage(page, limit); - return PageUtils.page(new PageInfo<>(inviteDao.selectInviteUser(userEntity.getInvitationCode()))); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(UserEntity::getUserId, UserEntity::getAvatar, UserEntity::getUserName); + queryWrapper.eq(UserEntity::getInviterCode, userEntity.getInvitationCode()); + List list = userService.list(queryWrapper); + PageInfo pageInfo = new PageInfo<>(list); + if (list.isEmpty()) { + return PageUtils.page(pageInfo); + } + + List userIds = list.stream().map(UserEntity::getUserId).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.gt(InviteAchievement::getCount, 3); + queryWrapper1.eq(InviteAchievement::getUserId, userId); + queryWrapper1.in(InviteAchievement::getTargetUserId, userIds); + List achievementList = inviteAchievementService.list(queryWrapper1); + Set achievementUserIds = achievementList.stream().map(InviteAchievement::getTargetUserId).collect(Collectors.toSet()); + + List jsonList = new ArrayList<>(); + for (UserEntity entity : list) { + JSONObject item = new JSONObject(); + item.put("userId", entity.getUserId()); + item.put("avatar", entity.getAvatar()); + item.put("userName", entity.getUserName()); + item.put("recordNum", achievementUserIds.contains(entity.getUserId()) ? 1 : 0); + + jsonList.add(item); + } + + return new PageUtils(jsonList, (int) pageInfo.getTotal(), pageInfo.getPageSize(), pageInfo.getPageNum()); } @Override @@ -232,7 +260,18 @@ public class InviteServiceImpl extends ServiceImpl implements public Map updateInvite(UserEntity userEntity, String format, Long userId, BigDecimal price) { Map 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; @@ -240,17 +279,65 @@ public class InviteServiceImpl extends ServiceImpl 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); }