package com.sinata.rest.modular.mall.service.impl;
|
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.sinata.common.enums.EnumIsDelete;
|
import com.sinata.common.enums.EnumMemberGrade;
|
import com.sinata.common.enums.EnumSystemSetKey;
|
import com.sinata.common.enums.mall.EnumMallGoodsGroupType;
|
import com.sinata.common.enums.mall.EnumMallOrderState;
|
import com.sinata.rest.common.ApiUtils;
|
import com.sinata.rest.modular.mall.dao.MallCommissionSettlementMapper;
|
import com.sinata.rest.modular.mall.model.MallCommissionSettlement;
|
import com.sinata.rest.modular.mall.model.MallGoodsSet;
|
import com.sinata.rest.modular.mall.model.MallOrder;
|
import com.sinata.rest.modular.mall.service.IMallCommissionSettlementService;
|
import com.sinata.rest.modular.mall.service.IMallGoodsSetService;
|
import com.sinata.rest.modular.mall.service.IMallOrderService;
|
import com.sinata.rest.modular.member.model.MemUser;
|
import com.sinata.rest.modular.member.model.MemUserRelation;
|
import com.sinata.rest.modular.member.service.IMemUserRelationService;
|
import com.sinata.rest.modular.member.service.IMemUserService;
|
import com.sinata.rest.modular.system.model.SystemSet;
|
import com.sinata.rest.modular.system.service.ISystemSetService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 佣金结算明细 服务实现类
|
* </p>
|
*
|
* @author goku
|
* @since 2023-04-25
|
*/
|
@Slf4j
|
@Service
|
@Transactional
|
public class MallCommissionSettlementServiceImpl extends ServiceImpl<MallCommissionSettlementMapper, MallCommissionSettlement> implements IMallCommissionSettlementService {
|
|
@Resource
|
private IMemUserService memUserService;
|
@Resource
|
private IMemUserRelationService memUserRelationService;
|
@Resource
|
private IMallOrderService mallOrderService;
|
@Resource
|
private IMallGoodsSetService mallGoodsSetService;
|
@Resource
|
private ISystemSetService systemSetService;
|
|
@Override
|
public ApiUtils commissionSettlement(String orderNo) {
|
log.info("【核销订单-分佣】{}", orderNo);
|
|
// 获取订单信息
|
MallOrder mallOrder = mallOrderService.getById(orderNo);
|
|
// 判断订单状态
|
if (mallOrder == null
|
|| mallOrder.getState() != EnumMallOrderState.SUCCESS.index
|
|| mallOrder.getSaleUserId() == null
|
) {
|
log.error("【核销订单-分佣】订单信息状态无效!");
|
return ApiUtils.returnNG("订单信息状态无效!");
|
}
|
|
if (mallOrder != null && mallOrder.getIsTradingDividend() == 1) {
|
log.error("【核销订单-分佣】订单已核销!");
|
return ApiUtils.returnNG("订单已核销!");
|
}
|
// 标记已核销
|
mallOrderService.update(new MallOrder(),
|
new UpdateWrapper<MallOrder>().lambda().set(MallOrder::getIsTradingDividend, 1).eq(MallOrder::getOrderNo, orderNo)
|
);
|
|
// 黄金营销员核销钻石套餐升级为城市合伙人(本人=权益人)
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GROUP_DIAMOND.index) {
|
MemUser orderUser = memUserService.getById(mallOrder.getUserId());
|
if (orderUser != null && mallOrder.getUserId().equals(mallOrder.getUseUserId()) && orderUser.getMemberGradeId() == EnumMemberGrade.G_3.index) {
|
// 晋升为-城市合伙人
|
orderUser.setMemberGradeId(EnumMemberGrade.G_4.index);
|
orderUser.setIsBuyGrade(EnumMemberGrade.G_4.index);
|
orderUser.setMemberGradeTime(DateUtil.date());
|
orderUser.setCreditScore(BigDecimal.valueOf(100));
|
orderUser.updateById();
|
log.info("【黄金营销员晋升为城市合伙人】用户:{} 购买钻石套餐",
|
orderUser.getId(), orderUser.getRealName(), orderUser.getCreditScore()
|
);
|
}
|
}
|
|
// 营销员信息
|
MemUser saleUser = memUserService.getById(mallOrder.getSaleUserId());
|
if (saleUser == null) {
|
log.error("【核销订单-分佣】营销员{}信息错误!", mallOrder.getSaleUserId());
|
return ApiUtils.returnNG("营销员信息错误!");
|
}
|
|
// 获取销售人员关系
|
MemUserRelation userRelation = memUserRelationService.getById(mallOrder.getSaleUserId());
|
if (userRelation == null || StrUtil.isBlank(userRelation.getRelationPath())) {
|
log.error("【核销订单-分佣】营销员团队关系{}错误!", userRelation);
|
return ApiUtils.returnNG("营销员团队关系错误!");
|
}
|
log.info("销售人员:{},层级关系:{}", mallOrder.getSaleUserId(), userRelation.getRelationPath());
|
|
// 营销员上级团队
|
String[] parentTeamIds = Arrays.stream(userRelation.getRelationPath().split("/"))
|
.filter(s -> StrUtil.isNotBlank(s))
|
.toArray(String[]::new);
|
parentTeamIds = memUserRelationService.reverseArray(parentTeamIds);
|
for (int i = 0; i < parentTeamIds.length; i++) {
|
MemUser u = memUserService.getById(parentTeamIds[i]);
|
log.info("上{}级:{}, {} = {}", i, u.getId(), u.getMemberGradeId(), EnumMemberGrade.getMarkByIndex(u.getMemberGradeId()));
|
}
|
|
// 获取上级用户
|
MemUser directParentUser = memUserService.getById(userRelation.getParentId());
|
log.info("上级用户:{}", directParentUser);
|
|
// 直属城市合伙人、直属市场总监;直属上级育成
|
Integer directParentUserV4 = null, directParentUserV5 = null;
|
// 育成奖(直属育成,直属团队育成)
|
Integer directParentParentUserBreed = null, directParentParentUserGradeIdBreed = null, directParentUserBreed = null, directParentUserGradeIdBreed = null;
|
MemUser directParentParentUserBreed_user = null, directParentUserBreed_user = null;
|
String directParentUserShowIdV4 = null, directParentUserShowIdV5 = null, directParentParentUserShowIdBreed = null, directParentUserShowIdBreed = null;
|
// 黄金营销员才有直属上级
|
if (saleUser.getMemberGradeId() == EnumMemberGrade.G_3.index) {
|
if (directParentUser != null && directParentUser.getMemberGradeId() == EnumMemberGrade.G_4.index) {
|
directParentUserV4 = directParentUser.getId();
|
log.info("直属城市合伙人:{}", directParentUserV4);
|
directParentUserShowIdV4 = directParentUser.getShowId();
|
}
|
if (directParentUser != null && directParentUser.getMemberGradeId() == EnumMemberGrade.G_5.index) {
|
directParentUserV5 = directParentUser.getId();
|
log.info("直属市场总监:{}", directParentUserV5);
|
directParentUserShowIdV5 = directParentUser.getShowId();
|
}
|
|
// 【育成奖】黄金营销员直属上级(直属团队),上上级有育成奖
|
if (directParentUser.getMemberGradeId() >= EnumMemberGrade.G_4.index) {
|
if (parentTeamIds.length > 2) {
|
MemUser ppUser = memUserService.getById(parentTeamIds[2]);
|
if (ppUser != null && ppUser.getMemberGradeId().equals(directParentUser.getMemberGradeId())) {
|
directParentParentUserBreed = ppUser.getId();
|
log.info("直属团队(上上级)育成用户:{}", directParentParentUserBreed);
|
directParentParentUserGradeIdBreed = ppUser.getMemberGradeId();
|
log.info("直属团队(上上级)育成等级:{}", directParentParentUserGradeIdBreed);
|
directParentParentUserShowIdBreed = ppUser.getShowId();
|
directParentParentUserBreed_user = ppUser;
|
}
|
}
|
}
|
}
|
else {
|
// 如果销售员是城市合伙人、市场总监,直属团队则为(主管本人)
|
if (saleUser.getMemberGradeId() == EnumMemberGrade.G_4.index) {
|
directParentUserV4 = saleUser.getId();
|
log.info("直属(本人)城市合伙人:{}", directParentUserV4);
|
directParentUserShowIdV4 = saleUser.getShowId();
|
}
|
if (saleUser.getMemberGradeId() == EnumMemberGrade.G_5.index) {
|
directParentUserV5 = saleUser.getId();
|
log.info("直属(本人)市场总监:{}", directParentUserV5);
|
directParentUserShowIdV5 = saleUser.getShowId();
|
}
|
|
// 城市合伙人、市场总监育成奖励
|
if (directParentUser != null && directParentUser.getMemberGradeId().equals(saleUser.getMemberGradeId())) {
|
directParentUserBreed = directParentUser.getId();
|
log.info("直属上级育成用户:{}", directParentUserBreed);
|
directParentUserGradeIdBreed = directParentUser.getMemberGradeId();
|
log.info("直属上级育成等级:{}", directParentUserGradeIdBreed);
|
directParentUserShowIdBreed = directParentUser.getShowId();
|
directParentUserBreed_user = directParentUser;
|
}
|
}
|
|
// 直辖城市合伙人、直辖市场总监
|
Integer inDirectParentUserV4 = null, inDirectParentUserV5 = null;
|
String inDirectParentUserShowIdV4 = null, inDirectParentUserShowIdV5 = null;
|
// 如果我是黄金营销员,上级管理利益
|
if (saleUser.getMemberGradeId() == EnumMemberGrade.G_3.index) {
|
for (int i = 1; i < parentTeamIds.length; i++) {
|
// 直属上级与本人同级(更低),才会有直辖上级
|
MemUser parUser = memUserService.getById(parentTeamIds[i]);
|
if (inDirectParentUserV4 == null && directParentUser.getMemberGradeId() <= EnumMemberGrade.G_3.index && parUser.getMemberGradeId() == EnumMemberGrade.G_4.index) {
|
inDirectParentUserV4 = parUser.getId();
|
log.info("v3直辖城市合伙人:{}", inDirectParentUserV4);
|
inDirectParentUserShowIdV4 = parUser.getShowId();
|
}
|
if (directParentUser.getMemberGradeId() == EnumMemberGrade.G_4.index && parUser.getMemberGradeId() == EnumMemberGrade.G_5.index) {
|
// 上一级是市场总监,逻辑结束
|
inDirectParentUserV5 = parUser.getId();
|
log.info("v3直辖市场总监:{}", inDirectParentUserV5);
|
inDirectParentUserShowIdV5 = parUser.getShowId();
|
directParentUserGradeIdBreed = parUser.getMemberGradeId();
|
break;
|
}
|
}
|
}
|
// 如果我是城市合伙人,上级管理利益
|
else if (saleUser.getMemberGradeId() == EnumMemberGrade.G_4.index) {
|
for (int i = 1; i < parentTeamIds.length; i++) {
|
MemUser parUser = memUserService.getById(parentTeamIds[i]);
|
if (parUser.getMemberGradeId() == EnumMemberGrade.G_5.index) {
|
// 上一级是市场总监,逻辑结束
|
inDirectParentUserV5 = parUser.getId();
|
log.info("v4直辖市场总监:{}", inDirectParentUserV5);
|
inDirectParentUserShowIdV5 = parUser.getShowId();
|
break;
|
}
|
}
|
}
|
|
// 获取系统设置参数
|
List<SystemSet> systemSets = systemSetService.list();
|
|
// 获取商品设置业绩
|
MallGoodsSet goodsSet = mallGoodsSetService.getGoodsSetPerformance(mallOrder.getGoodsId(), mallOrder.getPayMoney());
|
BigDecimal performance = mallGoodsSetService.getPerformanceByGrade(saleUser.getMemberGradeId(), goodsSet);
|
|
// 个人销售佣金
|
BigDecimal saleCommission = getSaleCommissionByGrade(systemSets, saleUser.getMemberGradeId(), mallOrder.getOrderType(), performance);
|
log.info("【核销订单-分佣】发放-{}-个人销售佣金:{},注销:{},离职:{}", saleUser.getId(), saleCommission, saleUser.getIsDelete(), saleUser.getIsLeaveOffice());
|
if (saleCommission.compareTo(BigDecimal.ZERO) > 0 && saleUser.getIsDelete() == EnumIsDelete.EXISTED.index && saleUser.getIsLeaveOffice() == 0) {
|
// 发放:个人销售佣金
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index) {
|
MallCommissionSettlement.builder()
|
.userId(saleUser.getId())
|
.showId(saleUser.getShowId())
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(saleCommission)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("个人销售佣金")
|
.build()
|
.insert();
|
} else {
|
MallCommissionSettlement.builder()
|
.userId(saleUser.getId())
|
.showId(saleUser.getShowId())
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(saleCommission)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("个人销售佣金")
|
.build()
|
.insert();
|
}
|
}
|
|
// 直属团队管理利益
|
if (directParentUserV4 != null) {
|
BigDecimal directMangerCommissionV4 = getDirectMangerCommissionByGrade(systemSets, EnumMemberGrade.G_4.index, mallOrder.getOrderType(), performance);
|
MemUser directParentUserV4User = memUserService.getById(directParentUserV4);
|
log.info("【核销订单-分佣】发放-{}-V4直属团队管理利益:{},注销:{},离职:{}", directParentUserV4, directMangerCommissionV4, saleUser.getIsDelete(), saleUser.getIsLeaveOffice());
|
if (directMangerCommissionV4.compareTo(BigDecimal.ZERO) > 0 && directParentUserV4User.getIsDelete() == EnumIsDelete.EXISTED.index && directParentUserV4User.getIsLeaveOffice() == 0) {
|
// 发放:直属团队管理利益
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index) {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserV4)
|
.showId(directParentUserShowIdV4)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(directMangerCommissionV4)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V4直属团队管理利益")
|
.build()
|
.insert();
|
} else {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserV4)
|
.showId(directParentUserShowIdV4)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(directMangerCommissionV4)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V4直属团队管理利益")
|
.build()
|
.insert();
|
}
|
}
|
}
|
if (directParentUserV5 != null) {
|
BigDecimal directMangerCommissionV5 = getDirectMangerCommissionByGrade(systemSets, EnumMemberGrade.G_5.index, mallOrder.getOrderType(), performance);
|
MemUser directParentUserV5User = memUserService.getById(directParentUserV5);
|
log.info("【核销订单-分佣】发放-{}-V5直属团队管理利益:{},注销:{},离职:{}", directParentUserV5, directMangerCommissionV5, directParentUserV5User.getIsDelete(), directParentUserV5User.getIsLeaveOffice());
|
if (directMangerCommissionV5.compareTo(BigDecimal.ZERO) > 0 && directParentUserV5User.getIsDelete() == EnumIsDelete.EXISTED.index && directParentUserV5User.getIsLeaveOffice() == 0) {
|
// 发放:直属团队管理利益
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index) {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserV5)
|
.showId(directParentUserShowIdV5)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(directMangerCommissionV5)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V5直属团队管理利益")
|
.build()
|
.insert();
|
} else {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserV5)
|
.showId(directParentUserShowIdV5)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(directMangerCommissionV5)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V5直属团队管理利益")
|
.build()
|
.insert();
|
}
|
}
|
|
// 直属团队下没有城市合伙人,奖励发给市场总监(用V5直辖算奖励)
|
if (directParentUserV4 == null) {
|
BigDecimal inDirectMangerCommissionV4 = getInDirectMangerCommissionByGrade(systemSets, EnumMemberGrade.G_5.index, mallOrder.getOrderType(), performance);
|
log.info("【核销订单-分佣】发放-{}-V4领V5直辖团队管理利益:{},注销:{},离职:{}", directParentUserV5, inDirectMangerCommissionV4, directParentUserV5User.getIsDelete(), directParentUserV5User.getIsLeaveOffice());
|
if (inDirectMangerCommissionV4.compareTo(BigDecimal.ZERO) > 0 && directParentUserV5User.getIsDelete() == EnumIsDelete.EXISTED.index && directParentUserV5User.getIsLeaveOffice() == 0) {
|
// 发放:直属团队管理利益
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index) {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserV5)
|
.showId(directParentUserShowIdV5)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(inDirectMangerCommissionV4)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V4领V5直辖团队管理利益")
|
.build()
|
.insert();
|
} else {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserV5)
|
.showId(directParentUserShowIdV5)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(inDirectMangerCommissionV4)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V4领V5直辖团队管理利益")
|
.build()
|
.insert();
|
}
|
}
|
}
|
}
|
|
// 直辖团队管理利益
|
BigDecimal inDirectMangerCommission;
|
if (inDirectParentUserV4 != null) {
|
inDirectMangerCommission = getInDirectMangerCommissionByGrade(systemSets, EnumMemberGrade.G_4.index, mallOrder.getOrderType(), performance);
|
MemUser inDirectParentUserV4User = memUserService.getById(inDirectParentUserV4);
|
log.info("【核销订单-分佣】发放-{}-V4直辖团队管理利益:{},注销:{},离职:{}", inDirectParentUserV4, inDirectMangerCommission, inDirectParentUserV4User.getIsDelete(), inDirectParentUserV4User.getIsLeaveOffice());
|
if (inDirectMangerCommission.compareTo(BigDecimal.ZERO) > 0 && inDirectParentUserV4User.getIsDelete() == EnumIsDelete.EXISTED.index && inDirectParentUserV4User.getIsLeaveOffice() == 0) {
|
// 发放:直辖团队管理利益
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index) {
|
MallCommissionSettlement.builder()
|
.userId(inDirectParentUserV4)
|
.showId(inDirectParentUserShowIdV4)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(inDirectMangerCommission)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V4直辖团队管理利益")
|
.build()
|
.insert();
|
} else {
|
MallCommissionSettlement.builder()
|
.userId(inDirectParentUserV4)
|
.showId(inDirectParentUserShowIdV4)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(inDirectMangerCommission)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V4直辖团队管理利益")
|
.build()
|
.insert();
|
}
|
}
|
}
|
if (inDirectParentUserV5 != null) {
|
inDirectMangerCommission = getInDirectMangerCommissionByGrade(systemSets, EnumMemberGrade.G_5.index, mallOrder.getOrderType(), performance);
|
MemUser inDirectParentUserV5User = memUserService.getById(inDirectParentUserV5);
|
log.info("【核销订单-分佣】发放-{}-V5直辖团队管理利益:{},注销:{},离职:{}", inDirectParentUserV5, inDirectMangerCommission, inDirectParentUserV5User.getIsDelete(), inDirectParentUserV5User.getIsLeaveOffice());
|
if (inDirectMangerCommission.compareTo(BigDecimal.ZERO) > 0 && inDirectParentUserV5User.getIsDelete() == EnumIsDelete.EXISTED.index && inDirectParentUserV5User.getIsLeaveOffice() == 0) {
|
// 发放:直辖团队管理利益
|
if (mallOrder.getOrderType() == EnumMallGoodsGroupType.GOODS.index) {
|
MallCommissionSettlement.builder()
|
.userId(inDirectParentUserV5)
|
.showId(inDirectParentUserShowIdV5)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(inDirectMangerCommission)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V5直辖团队管理利益")
|
.build()
|
.insert();
|
} else {
|
MallCommissionSettlement.builder()
|
.userId(inDirectParentUserV5)
|
.showId(inDirectParentUserShowIdV5)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(inDirectMangerCommission)
|
.breedAward(BigDecimal.ZERO)
|
.remark("V5直辖团队管理利益")
|
.build()
|
.insert();
|
}
|
}
|
}
|
|
if (directParentParentUserBreed != null) {
|
// 发放:直属团队(上上级)育成
|
BigDecimal breedAward = getBreedAwardByGrade(systemSets, directParentParentUserGradeIdBreed, performance);
|
log.info("【核销订单-分佣】发放-{}-直属团队(上上级)育成:{},注销:{},离职:{}", directParentParentUserBreed, breedAward, directParentParentUserBreed_user.getIsDelete(), directParentParentUserBreed_user.getIsLeaveOffice());
|
if (breedAward.compareTo(BigDecimal.ZERO) > 0 && directParentParentUserBreed_user.getIsDelete() == EnumIsDelete.EXISTED.index && directParentParentUserBreed_user.getIsLeaveOffice() == 0) {
|
MallCommissionSettlement.builder()
|
.userId(directParentParentUserBreed)
|
.showId(directParentParentUserShowIdBreed)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(breedAward)
|
.remark("直属团队育成")
|
.build()
|
.insert();
|
}
|
}
|
|
if (directParentUserBreed != null) {
|
// 发放:直属上级育成
|
BigDecimal breedAward = getBreedAwardByGrade(systemSets, directParentUserGradeIdBreed, performance);
|
log.info("【核销订单-分佣】发放-{}-直属上级育成:{},注销:{},离职:{}", directParentUserBreed, breedAward, directParentUserBreed_user.getIsDelete(), directParentUserBreed_user.getIsLeaveOffice());
|
if (breedAward.compareTo(BigDecimal.ZERO) > 0 && directParentUserBreed_user.getIsDelete() == EnumIsDelete.EXISTED.index && directParentUserBreed_user.getIsLeaveOffice() == 0) {
|
MallCommissionSettlement.builder()
|
.userId(directParentUserBreed)
|
.showId(directParentUserShowIdBreed)
|
.orderNo(mallOrder.getOrderNo())
|
.salesCommissionGoods(BigDecimal.ZERO)
|
.salesCommissionGroup(BigDecimal.ZERO)
|
.manageProfitGoods(BigDecimal.ZERO)
|
.manageProfitGroup(BigDecimal.ZERO)
|
.breedAward(breedAward)
|
.remark("直属上级育成")
|
.build()
|
.insert();
|
}
|
}
|
|
return ApiUtils.returnOK();
|
}
|
|
|
/**
|
* 获取个人销售佣金
|
*/
|
public static BigDecimal getSaleCommissionByGrade(List<SystemSet> systemSets, Integer gradeId, Integer orderType, BigDecimal performance) {
|
final int keyId;
|
if (orderType == EnumMallGoodsGroupType.GOODS.index) {
|
if (gradeId == EnumMemberGrade.G_3.index) {
|
keyId = EnumSystemSetKey.SET_204.index;
|
} else if (gradeId == EnumMemberGrade.G_4.index) {
|
keyId = EnumSystemSetKey.SET_214.index;
|
} else if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_224.index;
|
} else {
|
keyId = 0;
|
}
|
} else {
|
if (gradeId == EnumMemberGrade.G_3.index) {
|
keyId = EnumSystemSetKey.SET_201.index;
|
} else if (gradeId == EnumMemberGrade.G_4.index) {
|
keyId = EnumSystemSetKey.SET_211.index;
|
} else if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_221.index;
|
} else {
|
keyId = 0;
|
}
|
}
|
|
// 百分比计算系数
|
final BigDecimal hundred = BigDecimal.valueOf(100);
|
return systemSets.stream()
|
.filter(o -> o.getId() == keyId)
|
.map(o -> new BigDecimal(o.getValueStr()).multiply(performance).divide(hundred, 2, BigDecimal.ROUND_HALF_UP))
|
.findFirst()
|
.orElse(BigDecimal.ZERO);
|
}
|
|
/**
|
* 获取直属管理利益佣金
|
*/
|
public static BigDecimal getDirectMangerCommissionByGrade(List<SystemSet> systemSets, Integer gradeId, Integer orderType, BigDecimal performance) {
|
final int keyId;
|
if (orderType == EnumMallGoodsGroupType.GOODS.index) {
|
if (gradeId == EnumMemberGrade.G_4.index) {
|
keyId = EnumSystemSetKey.SET_215.index;
|
} else if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_225.index;
|
} else {
|
keyId = 0;
|
}
|
} else {
|
if (gradeId == EnumMemberGrade.G_4.index) {
|
keyId = EnumSystemSetKey.SET_212.index;
|
} else if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_222.index;
|
} else {
|
keyId = 0;
|
}
|
}
|
|
// 百分比计算系数
|
final BigDecimal hundred = BigDecimal.valueOf(100);
|
return systemSets.stream()
|
.filter(o -> o.getId() == keyId)
|
.map(o -> new BigDecimal(o.getValueStr()).multiply(performance).divide(hundred, 2, BigDecimal.ROUND_HALF_UP))
|
.findFirst()
|
.orElse(BigDecimal.ZERO);
|
}
|
|
/**
|
* 获取直辖管理利益佣金
|
*/
|
public static BigDecimal getInDirectMangerCommissionByGrade(List<SystemSet> systemSets, Integer gradeId, Integer orderType, BigDecimal performance) {
|
final int keyId;
|
if (orderType == EnumMallGoodsGroupType.GOODS.index) {
|
if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_226.index;
|
} else {
|
keyId = 0;
|
}
|
} else {
|
if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_223.index;
|
} else {
|
keyId = 0;
|
}
|
}
|
|
// 百分比计算系数
|
final BigDecimal hundred = BigDecimal.valueOf(100);
|
return systemSets.stream()
|
.filter(o -> o.getId() == keyId)
|
.map(o -> new BigDecimal(o.getValueStr()).multiply(performance).divide(hundred, 2, BigDecimal.ROUND_HALF_UP))
|
.findFirst()
|
.orElse(BigDecimal.ZERO);
|
}
|
|
/**
|
* 获取育成奖
|
*/
|
public static BigDecimal getBreedAwardByGrade(List<SystemSet> systemSets, Integer gradeId, BigDecimal performance) {
|
final int keyId;
|
if (gradeId == EnumMemberGrade.G_4.index) {
|
keyId = EnumSystemSetKey.SET_217.index;
|
} else if (gradeId == EnumMemberGrade.G_5.index) {
|
keyId = EnumSystemSetKey.SET_227.index;
|
} else {
|
keyId = 0;
|
}
|
|
// 百分比计算系数
|
final BigDecimal hundred = BigDecimal.valueOf(100);
|
return systemSets.stream()
|
.filter(o -> o.getId() == keyId)
|
.map(o -> new BigDecimal(o.getValueStr()).multiply(performance).divide(hundred, 2, BigDecimal.ROUND_HALF_UP))
|
.findFirst()
|
.orElse(BigDecimal.ZERO);
|
}
|
|
/**
|
* 将数组反序输出
|
* @param arr 需要反序的数组
|
* @return 返回反序后的数组
|
*/
|
public static String[] reverseArray(String[] arr) {
|
// 定义一个反序后的数组
|
String[] desArr = new String[arr.length];
|
// 把原数组元素倒序遍历
|
for(int i = 0; i < arr.length; i++) {
|
// 把arr的第i个元素赋值给desArr的最后第i个元素中
|
desArr[arr.length - 1 - i] = arr[i];
|
}
|
// 返回倒序后的数组
|
return desArr;
|
}
|
|
}
|