feat(myInvitation): 新增星球手续费并调整社区加入逻辑

feature/community-center
yang 2025-04-29 15:56:58 +08:00
parent f432697d94
commit 1f50a33c78
4 changed files with 34 additions and 10 deletions

View File

@ -24,14 +24,17 @@ import com.mcwl.communityCenter.mapper.CommunityUserMapper;
import com.mcwl.communityCenter.service.CommunityService;
import com.mcwl.communityCenter.service.IncomeInfoService;
import com.mcwl.communityCenter.service.PublishService;
import com.mcwl.myInvitation.domain.CommissionRatio;
import com.mcwl.myInvitation.domain.Consume;
import com.mcwl.myInvitation.mapper.ConsumeMapper;
import com.mcwl.myInvitation.service.CommissionRatioService;
import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
@ -58,6 +61,8 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
private final IncomeInfoService incomeInfoService;
private final CommissionRatioService commissionRatioService;
@Override
@ -142,8 +147,26 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
sysUserService.updateUser(user);
// 从redis获取提成比例
// 抽取社区比例
String commissionRationCommunity = redisCache.getCacheObject("CommissionRationCommunity");
if (Objects.isNull(commissionRationCommunity)) {
CommissionRatio commissionRatio = commissionRatioService.lambdaQuery()
.eq(CommissionRatio::getType, 2)
.one();
commissionRationCommunity = commissionRatio.getRatio().toString();
redisCache.setCacheObject("CommissionRationCommunity", commissionRationCommunity);
}
SysUser tenantUser = sysUserService.selectUserById(tenantId);
tenantUser.setWallet(priceBigDecimal.add(new BigDecimal(tenantUser.getWallet().toString())).doubleValue());
BigDecimal getWallet = priceBigDecimal
.multiply(new BigDecimal("1").subtract(new BigDecimal(commissionRationCommunity)));
tenantUser.setWallet(getWallet
.add(new BigDecimal(tenantUser.getWallet().toString()))
.setScale(2, RoundingMode.HALF_UP)
.doubleValue());
sysUserService.updateUser(tenantUser);
@ -175,7 +198,7 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
communityAdvice.setAdviceType(AdviceConstant.COMMUNITY_NOTICE);
communityAdvice.setUserId(tenantId);
communityAdvice.setContent(StringUtils.format("{}加入{}社区,金币+{}",
SecurityUtils.getLoginUser().getUser().getNickName(), community.getCommunityName(), price));
SecurityUtils.getLoginUser().getUser().getNickName(), community.getCommunityName(), getWallet));
communityAdviceMapper.insert(communityAdvice);
Consume consume = new Consume();
@ -188,7 +211,7 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
consume = new Consume();
consume.setUserId(community.getTenantId());
consume.setAmount(price);
consume.setAmount(getWallet.doubleValue());
consume.setProductId(communityId);
consume.setType(3);
consume.setWallet(sysUserService.selectUserById(community.getTenantId()).getWallet());
@ -199,7 +222,7 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
incomeInfo.setCommunityId(communityId);
incomeInfo.setUserId(tenantId);
incomeInfo.setType(0);
incomeInfo.setAmount(price);
incomeInfo.setAmount(getWallet.doubleValue());
incomeInfoService.save(incomeInfo);
redisCache.deleteObject("communityJoinNumMap");

View File

@ -34,6 +34,10 @@ public class CommissionRatio extends BaseEntity {
* 0- 1-
*/
private Integer type;
/**
*
*/
private String description;
}

View File

@ -31,7 +31,7 @@ public class CommissionRatioVo {
*/
private Double ratio;
/**
*
*
*/
private String ratioName;

View File

@ -49,6 +49,7 @@ public class CommissionRatioServiceImpl extends ServiceImpl<CommissionRatioMappe
redisCache.deleteObject("CommissionRationInviterUser");
redisCache.deleteObject("CommissionRationMerchant");
redisCache.deleteObject("CommissionRationCommunity");
return this.getCommissionRatioVo(commissionRatio);
}
@ -66,11 +67,7 @@ public class CommissionRatioServiceImpl extends ServiceImpl<CommissionRatioMappe
private CommissionRatioVo getCommissionRatioVo(CommissionRatio commissionRatio) {
CommissionRatioVo vo = new CommissionRatioVo();
BeanUtil.copyProperties(commissionRatio, vo);
if (commissionRatio.getType() == 0) {
vo.setRatioName("平台手续费");
} else if (commissionRatio.getType() == 1) {
vo.setRatioName("邀请人提成");
}
vo.setRatioName(commissionRatio.getDescription());
return vo;
}