package com.ruoyi.order.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.account.api.feignClient.*;
|
import com.ruoyi.account.api.model.*;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.order.service.CommissionService;
|
import com.ruoyi.order.service.OrderGoodService;
|
import com.ruoyi.order.service.OrderService;
|
import com.ruoyi.other.api.domain.*;
|
import com.ruoyi.other.api.feignClient.*;
|
import com.ruoyi.order.model.Order;
|
import com.ruoyi.order.model.OrderGood;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.time.ZoneId;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Slf4j
|
public class CommissionServiceImpl implements CommissionService {
|
@Resource
|
private OrderService orderService;
|
@Resource
|
private OrderGoodService orderGoodService;
|
@Resource
|
private AppUserClient appUserClient;
|
@Resource
|
private ShopClient shopClient;
|
@Resource
|
private BalanceChangeRecordClient balanceChangeRecordClient;
|
@Resource
|
private UserPointClient userPointClient;
|
@Resource
|
private ShopBalanceStatementClient shopBalanceStatementClient;
|
@Resource
|
private ShopPointClient shopPointClient;
|
@Resource
|
private TechnicianClient technicianClient;
|
@Resource
|
private PointSettingClient pointSettingClient;
|
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void calculationCommission() {
|
List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getIsCommission, 0).isNotNull(Order::getAfterSaleTime)
|
.eq(Order::getDelFlag, 0).ne(Order::getPayMethod, 3).last(" and after_sale_time <= now()"));
|
List<Long> collect = list.stream().map(Order::getId).collect(Collectors.toList());
|
if(collect.size() == 0){
|
return;
|
}
|
|
for (Order order : list) {
|
List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
|
.eq(OrderGood::getOrderId, order.getId()));
|
AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
|
if(null == appUser){
|
continue;
|
}
|
//直推上级分佣金额
|
BigDecimal ztsj_price = BigDecimal.ZERO;
|
//直帮上级分佣金额
|
BigDecimal zbsj_price = BigDecimal.ZERO;
|
//直推上级分佣积分
|
Integer ztsj_point = 0;
|
//直帮上级分佣积分
|
Integer zbsj_point = 0;
|
//核销门店分佣金额
|
BigDecimal hxmd_price = BigDecimal.ZERO;
|
//核销门店分佣积分
|
Integer hxmd_point = 0;
|
//技师分佣积分
|
Integer js_point = 0;
|
//绑定门店分佣金额
|
BigDecimal bdmd_price = BigDecimal.ZERO;
|
//绑定门店分佣积分
|
Integer bdmd_point = 0;
|
//绑定门店上级门店分佣金额
|
BigDecimal bdmdsj_price = BigDecimal.ZERO;
|
//绑定门店上级门店分佣积分
|
Integer bdmdsj_point = 0;
|
for (OrderGood orderGood : orderGoods) {
|
//上级获得分佣金额(直推上级|直帮上级)
|
BigDecimal superiorSubcommission = orderGood.getSuperiorSubcommission();
|
//上级获得分佣积分(直推上级|直帮上级)
|
Integer superiorRebatePoints = orderGood.getSuperiorRebatePoints();
|
if(StringUtils.isNotEmpty(orderGood.getSuperiorPriceType())){
|
String[] split = orderGood.getSuperiorPriceType().split(",");
|
for (String s : split) {
|
//直推上级
|
if("1".equals(s)){
|
ztsj_price = ztsj_price.add(superiorSubcommission);
|
}
|
//直帮上级
|
if("2".equals(s)){
|
zbsj_price = zbsj_price.add(superiorSubcommission);
|
}
|
}
|
}
|
if(StringUtils.isNotEmpty(orderGood.getSuperiorType())){
|
String[] split = orderGood.getSuperiorType().split(",");
|
for (String s : split) {
|
//直推上级
|
if("1".equals(s)){
|
ztsj_point += superiorRebatePoints;
|
}
|
//直帮上级
|
if("2".equals(s)){
|
zbsj_point += superiorRebatePoints;
|
}
|
}
|
}
|
|
//核销门店获取服务费
|
hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges());
|
//核销门店可获得积分
|
hxmd_point += orderGood.getServuceShopPoints();
|
//技师分佣金额
|
if(order.getOrderType() == 1){
|
js_point += orderGood.getTechnicianPoints();
|
}
|
//绑定门店分佣金额
|
bdmd_price = bdmd_price.add(orderGood.getBoundShopCharges());
|
//绑定门店分佣积分
|
bdmd_point += orderGood.getBoundShopPoints();
|
//绑定门店上级门店分佣金额
|
bdmdsj_price = bdmdsj_price.add(orderGood.getBoundShopSuperiorsCharges());
|
//绑定门店上级门店分佣积分
|
bdmdsj_point += orderGood.getBoundShopSuperiorsPoints();
|
}
|
//直推上级
|
if(null != appUser.getInviteUserId()){
|
AppUser inviteUser = appUserClient.getAppUserById(appUser.getInviteUserId());
|
if(null != inviteUser){
|
BigDecimal balance = inviteUser.getBalance();
|
Integer lavePoint = inviteUser.getLavePoint();
|
if(ztsj_price.compareTo(BigDecimal.ZERO) > 0){
|
inviteUser.setTotalDistributionAmount(inviteUser.getTotalDistributionAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
inviteUser.setBalance(inviteUser.getBalance().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
inviteUser.setWithdrawableAmount(inviteUser.getWithdrawableAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
}
|
if(ztsj_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getSharePointOpen()){
|
earnPoint1 = new BigDecimal(ztsj_point).multiply(pointSetting.getSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
inviteUser.setSharePoint(inviteUser.getSharePoint() + ztsj_point);
|
inviteUser.setLavePoint(inviteUser.getLavePoint() + ztsj_point);
|
inviteUser.setAvailablePoint(inviteUser.getAvailablePoint() + earnPoint1);
|
inviteUser.setTotalAvailablePoint(inviteUser.getTotalAvailablePoint() + earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getSharePointGift()){
|
inviteUser.setTransferablePoint(inviteUser.getTransferablePoint() + earnPoint1);
|
}
|
inviteUser.setTotalPoint(inviteUser.getTotalPoint() + ztsj_point);
|
}
|
appUserClient.editAppUserById(inviteUser);
|
//添加明细记录
|
if(!inviteUser.getBalance().equals(balance)){
|
BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
|
balanceChangeRecord.setAppUserId(inviteUser.getId());
|
balanceChangeRecord.setVipId(inviteUser.getVipId());
|
balanceChangeRecord.setOrderId(order.getId());
|
balanceChangeRecord.setChangeType(4);
|
balanceChangeRecord.setBeforeAmount(balance);
|
balanceChangeRecord.setChangeAmount(ztsj_price);
|
balanceChangeRecord.setAfterAmount(inviteUser.getBalance());
|
balanceChangeRecord.setDelFlag(0);
|
balanceChangeRecord.setCreateTime(LocalDateTime.now());
|
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
|
}
|
//添加积分明细
|
if(!inviteUser.getLavePoint().equals(lavePoint)){
|
UserPoint userPoint = new UserPoint();
|
userPoint.setType(2);
|
userPoint.setHistoricalPoint(lavePoint);
|
userPoint.setVariablePoint(ztsj_point);
|
userPoint.setBalance(inviteUser.getLavePoint());
|
userPoint.setCreateTime(LocalDateTime.now());
|
userPoint.setAppUserId(inviteUser.getId());
|
userPoint.setObjectId(order.getId());
|
userPoint.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPoint);
|
//变更等级
|
appUserClient.vipUpgrade(inviteUser.getId());
|
}
|
}
|
}
|
|
//直帮上级
|
AppUser superiorLeader = appUserClient.getSuperiorLeader(appUser.getId()).getData();
|
if(null != superiorLeader){
|
BigDecimal balance = superiorLeader.getBalance();
|
Integer lavePoint = superiorLeader.getLavePoint();
|
if(zbsj_price.compareTo(BigDecimal.ZERO) > 0){
|
superiorLeader.setTotalDistributionAmount(superiorLeader.getTotalDistributionAmount().add(zbsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
superiorLeader.setBalance(superiorLeader.getBalance().add(zbsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
superiorLeader.setWithdrawableAmount(superiorLeader.getWithdrawableAmount().add(zbsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
}
|
if(zbsj_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getSharePointOpen()){
|
earnPoint1 = new BigDecimal(zbsj_point).multiply(pointSetting.getSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
superiorLeader.setSharePoint(superiorLeader.getSharePoint() + zbsj_point);
|
superiorLeader.setLavePoint(superiorLeader.getLavePoint() + zbsj_point);
|
superiorLeader.setAvailablePoint(superiorLeader.getAvailablePoint() + earnPoint1);
|
superiorLeader.setTotalAvailablePoint(superiorLeader.getTotalAvailablePoint() + earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getSharePointGift()){
|
superiorLeader.setTransferablePoint(superiorLeader.getTransferablePoint() + earnPoint1);
|
}
|
superiorLeader.setTotalPoint(superiorLeader.getTotalPoint() + zbsj_point);
|
}
|
appUserClient.editAppUserById(superiorLeader);
|
//添加明细记录
|
if(!superiorLeader.getBalance().equals(balance)){
|
BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
|
balanceChangeRecord.setAppUserId(superiorLeader.getId());
|
balanceChangeRecord.setVipId(superiorLeader.getVipId());
|
balanceChangeRecord.setOrderId(order.getId());
|
balanceChangeRecord.setChangeType(4);
|
balanceChangeRecord.setBeforeAmount(balance);
|
balanceChangeRecord.setChangeAmount(zbsj_price);
|
balanceChangeRecord.setAfterAmount(superiorLeader.getBalance());
|
balanceChangeRecord.setDelFlag(0);
|
balanceChangeRecord.setCreateTime(LocalDateTime.now());
|
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
|
}
|
//添加积分明细
|
if(!superiorLeader.getLavePoint().equals(lavePoint)){
|
UserPoint userPoint = new UserPoint();
|
userPoint.setType(2);
|
userPoint.setHistoricalPoint(lavePoint);
|
userPoint.setVariablePoint(zbsj_point);
|
userPoint.setBalance(superiorLeader.getLavePoint());
|
userPoint.setCreateTime(LocalDateTime.now());
|
userPoint.setAppUserId(superiorLeader.getId());
|
userPoint.setObjectId(order.getId());
|
userPoint.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPoint);
|
//变更等级
|
appUserClient.vipUpgrade(superiorLeader.getId());
|
}
|
}
|
|
//核销门店
|
Shop shop = shopClient.getShopById(order.getShopId()).getData();
|
AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId());
|
if(null != shopAppUser){
|
BigDecimal shopBalance = shop.getBalance();
|
Integer lavePoint = shopAppUser.getLavePoint();
|
Integer shopLavePoint = shop.getLavePoint();
|
if(hxmd_price.compareTo(BigDecimal.ZERO) > 0){
|
//门店返佣
|
shop.setGiveawayAllMoney(shop.getGiveawayAllMoney().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop.setServerGiveawayMoney(shop.getServerGiveawayMoney().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop.setCanWithdrawMoney(shop.getCanWithdrawMoney().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop.setBalance(shop.getBalance().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
}
|
if(hxmd_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getShopPointOpen()){
|
earnPoint1 = new BigDecimal(hxmd_point).multiply(pointSetting.getShopPoint().divide(new BigDecimal(100))).intValue();
|
}
|
shopAppUser.setLavePoint(shopAppUser.getLavePoint() + hxmd_point);
|
shopAppUser.setAvailablePoint(shopAppUser.getAvailablePoint() + earnPoint1);
|
shopAppUser.setTotalAvailablePoint(shopAppUser.getTotalAvailablePoint() + earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getShopPointGift()){
|
shopAppUser.setTransferablePoint(shopAppUser.getTransferablePoint() + earnPoint1);
|
}
|
shopAppUser.setTotalPoint(shopAppUser.getTotalPoint() + hxmd_point);
|
shopAppUser.setShopAchievementPoint(shopAppUser.getShopAchievementPoint() + hxmd_point);
|
//门店返佣
|
shop.setShopAllPoint(shop.getShopAllPoint() + hxmd_point);
|
shop.setServerPoint(shop.getServerPoint() + hxmd_point);
|
shop.setLavePoint(shop.getLavePoint() + hxmd_point);
|
}
|
appUserClient.editAppUserById(shopAppUser);
|
shopClient.updateShop(shop);
|
//添加明细记录
|
if(!shop.getBalance().equals(shopBalance)){
|
ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
|
shopBalanceStatement.setShopId(shop.getId());
|
shopBalanceStatement.setType(3);
|
shopBalanceStatement.setHistoricalBalance(shopBalance);
|
shopBalanceStatement.setVariableAmount(hxmd_price);
|
shopBalanceStatement.setBalance(shop.getBalance());
|
shopBalanceStatement.setCreateTime(LocalDateTime.now());
|
shopBalanceStatement.setCreateUserId(order.getAppUserId());
|
shopBalanceStatement.setObjectId(order.getId());
|
shopBalanceStatement.setExtension(order.getOrderNumber());
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
|
}
|
//添加积分明细
|
if(!shopAppUser.getLavePoint().equals(lavePoint)){
|
UserPoint userPoint = new UserPoint();
|
userPoint.setType(8);
|
userPoint.setHistoricalPoint(lavePoint);
|
userPoint.setVariablePoint(hxmd_point);
|
userPoint.setBalance(shopAppUser.getLavePoint());
|
userPoint.setCreateTime(LocalDateTime.now());
|
userPoint.setAppUserId(shopAppUser.getId());
|
userPoint.setObjectId(order.getId());
|
userPoint.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPoint);
|
//变更等级
|
appUserClient.vipUpgrade(shopAppUser.getId());
|
}
|
|
if(!shop.getLavePoint().equals(shopLavePoint)){
|
ShopPoint shopPoint = new ShopPoint();
|
shopPoint.setShopId(shop.getId());
|
shopPoint.setType(1);
|
shopPoint.setHistoricalPoint(shopLavePoint);
|
shopPoint.setVariablePoint(hxmd_point);
|
shopPoint.setBalance(shop.getLavePoint());
|
shopPoint.setCreateTime(LocalDateTime.now());
|
shopPoint.setCreateUserId(order.getAppUserId());
|
shopPoint.setObjectId(order.getId());
|
shopPoint.setOrderNum(order.getOrderNumber());
|
shopPointClient.saveShopPoint(shopPoint);
|
}
|
}
|
|
//技师服务积分
|
if(order.getOrderType() == 1){
|
Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData();
|
if(null != technician){
|
AppUser technicianAppUser = appUserClient.getAppUserById(technician.getAppUserId());
|
if(null != technicianAppUser){
|
Integer lavePoint = technicianAppUser.getLavePoint();
|
if(js_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getPersonPointOpen()){
|
earnPoint1 = new BigDecimal(js_point).multiply(pointSetting.getPersonPoint().divide(new BigDecimal(100))).intValue();
|
}
|
technicianAppUser.setLavePoint(technicianAppUser.getLavePoint() + js_point);
|
technicianAppUser.setAvailablePoint(technicianAppUser.getAvailablePoint() + earnPoint1);
|
technicianAppUser.setTotalAvailablePoint(technicianAppUser.getTotalAvailablePoint() + earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getPersonPointGift()){
|
technicianAppUser.setTransferablePoint(technicianAppUser.getTransferablePoint() + earnPoint1);
|
}
|
technicianAppUser.setTotalPoint(technicianAppUser.getTotalPoint() + js_point);
|
technicianAppUser.setTotalPerformancePoint(technicianAppUser.getTotalPerformancePoint() + js_point);
|
}
|
appUserClient.editAppUserById(technicianAppUser);
|
//添加积分明细
|
if(!technicianAppUser.getLavePoint().equals(lavePoint)){
|
UserPoint userPoint = new UserPoint();
|
userPoint.setType(10);
|
userPoint.setHistoricalPoint(lavePoint);
|
userPoint.setVariablePoint(js_point);
|
userPoint.setBalance(technicianAppUser.getLavePoint());
|
userPoint.setCreateTime(LocalDateTime.now());
|
userPoint.setAppUserId(technicianAppUser.getId());
|
userPoint.setObjectId(order.getId());
|
userPoint.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPoint);
|
//变更等级
|
appUserClient.vipUpgrade(technicianAppUser.getId());
|
}
|
}
|
|
}
|
}
|
|
//服务商分佣
|
Shop shop1 = shopClient.getServiceProvider(appUser.getId()).getData();
|
if(null != shop1){
|
AppUser bdShopAppUser = appUserClient.getAppUserById(shop1.getAppUserId());
|
if(null != bdShopAppUser){
|
BigDecimal shopBalance = shop1.getBalance();
|
Integer lavePoint = bdShopAppUser.getLavePoint();
|
Integer shopLavePoint = shop1.getLavePoint();
|
if(bdmd_price.compareTo(BigDecimal.ZERO) > 0){
|
//门店返佣
|
shop1.setGiveawayAllMoney(shop1.getGiveawayAllMoney().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop1.setGiveawayMoney(shop1.getGiveawayMoney().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop1.setCanWithdrawMoney(shop1.getCanWithdrawMoney().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop1.setBalance(shop1.getBalance().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
}
|
if(bdmd_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointOpen()){
|
earnPoint1 = new BigDecimal(bdmd_point).multiply(pointSetting.getShopSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
bdShopAppUser.setLavePoint(bdShopAppUser.getLavePoint() + bdmd_point);
|
bdShopAppUser.setAvailablePoint(bdShopAppUser.getAvailablePoint() + earnPoint1);
|
bdShopAppUser.setTotalAvailablePoint(bdShopAppUser.getTotalAvailablePoint() + earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointGift()){
|
bdShopAppUser.setTransferablePoint(bdShopAppUser.getTransferablePoint() + earnPoint1);
|
}
|
bdShopAppUser.setTotalPoint(bdShopAppUser.getTotalPoint() + bdmd_point);
|
bdShopAppUser.setShopSharePoint(bdShopAppUser.getShopSharePoint() + bdmd_point);
|
//门店返佣
|
shop1.setShopAllPoint(shop1.getShopAllPoint() + bdmd_point);
|
shop1.setSharePoint(shop1.getSharePoint() + bdmd_point);
|
shop1.setLavePoint(shop1.getLavePoint() + bdmd_point);
|
}
|
appUserClient.editAppUserById(bdShopAppUser);
|
shopClient.updateShop(shop1);
|
//添加明细记录
|
if(!shop1.getBalance().equals(shopBalance)){
|
ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
|
shopBalanceStatement.setShopId(shop1.getId());
|
shopBalanceStatement.setType(1);
|
shopBalanceStatement.setHistoricalBalance(shopBalance);
|
shopBalanceStatement.setVariableAmount(bdmd_price);
|
shopBalanceStatement.setBalance(shop1.getBalance());
|
shopBalanceStatement.setCreateTime(LocalDateTime.now());
|
shopBalanceStatement.setCreateUserId(order.getAppUserId());
|
shopBalanceStatement.setObjectId(order.getId());
|
shopBalanceStatement.setExtension(order.getOrderNumber());
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
|
}
|
//添加积分明细
|
if(!bdShopAppUser.getLavePoint().equals(lavePoint)){
|
UserPoint userPoint = new UserPoint();
|
userPoint.setType(9);
|
userPoint.setHistoricalPoint(lavePoint);
|
userPoint.setVariablePoint(bdmd_point);
|
userPoint.setBalance(bdShopAppUser.getLavePoint());
|
userPoint.setCreateTime(LocalDateTime.now());
|
userPoint.setAppUserId(bdShopAppUser.getId());
|
userPoint.setObjectId(order.getId());
|
userPoint.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPoint);
|
//变更等级
|
appUserClient.vipUpgrade(bdShopAppUser.getId());
|
}
|
|
if(!shop1.getLavePoint().equals(shopLavePoint)){
|
ShopPoint shopPoint = new ShopPoint();
|
shopPoint.setShopId(shop1.getId());
|
shopPoint.setType(2);
|
shopPoint.setHistoricalPoint(shopLavePoint);
|
shopPoint.setVariablePoint(bdmd_point);
|
shopPoint.setBalance(shop1.getLavePoint());
|
shopPoint.setCreateTime(LocalDateTime.now());
|
shopPoint.setCreateUserId(order.getAppUserId());
|
shopPoint.setObjectId(order.getId());
|
shopPoint.setOrderNum(order.getOrderNumber());
|
shopPointClient.saveShopPoint(shopPoint);
|
}
|
}
|
}
|
|
//高级服务商
|
Shop shop2 = shopClient.getSuperiorServiceProvider(order.getAppUserId()).getData();
|
if(null != shop2){
|
AppUser sjShopAppUser = appUserClient.getAppUserById(shop2.getAppUserId());
|
if(null != sjShopAppUser){
|
BigDecimal shopBalance = shop2.getBalance();
|
Integer lavePoint = sjShopAppUser.getLavePoint();
|
Integer shopLavePoint = shop2.getLavePoint();
|
if(bdmdsj_price.compareTo(BigDecimal.ZERO) > 0){
|
//门店返佣
|
shop2.setGiveawayAllMoney(shop2.getGiveawayAllMoney().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop2.setLowerLevelGiveawayMoney(shop2.getLowerLevelGiveawayMoney().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop2.setCanWithdrawMoney(shop2.getCanWithdrawMoney().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
shop2.setBalance(shop2.getBalance().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
}
|
if(bdmdsj_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointOpen()){
|
earnPoint1 = new BigDecimal(bdmdsj_point).multiply(pointSetting.getShopSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
sjShopAppUser.setLavePoint(sjShopAppUser.getLavePoint() + bdmdsj_point);
|
sjShopAppUser.setAvailablePoint(sjShopAppUser.getAvailablePoint() + earnPoint1);
|
sjShopAppUser.setTotalAvailablePoint(sjShopAppUser.getTotalAvailablePoint() + earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointGift()){
|
sjShopAppUser.setTransferablePoint(sjShopAppUser.getTransferablePoint() + earnPoint1);
|
}
|
sjShopAppUser.setTotalPoint(sjShopAppUser.getTotalPoint() + bdmdsj_point);
|
sjShopAppUser.setLowerLevelSharePoint(sjShopAppUser.getLowerLevelSharePoint() + bdmdsj_point);
|
//门店返佣
|
shop2.setShopAllPoint(shop2.getShopAllPoint() + bdmdsj_point);
|
shop2.setLowerLevelSharePoint(shop2.getLowerLevelSharePoint() + bdmdsj_point);
|
shop2.setLavePoint(shop2.getLavePoint() + bdmdsj_point);
|
}
|
appUserClient.editAppUserById(sjShopAppUser);
|
shopClient.updateShop(shop2);
|
//添加明细记录
|
if(!shop2.getBalance().equals(shopBalance)){
|
ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
|
shopBalanceStatement.setShopId(shop2.getId());
|
shopBalanceStatement.setType(2);
|
shopBalanceStatement.setHistoricalBalance(shopBalance);
|
shopBalanceStatement.setVariableAmount(bdmdsj_price);
|
shopBalanceStatement.setBalance(shop2.getBalance());
|
shopBalanceStatement.setCreateTime(LocalDateTime.now());
|
shopBalanceStatement.setCreateUserId(order.getAppUserId());
|
shopBalanceStatement.setObjectId(order.getId());
|
shopBalanceStatement.setExtension(order.getOrderNumber());
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
|
}
|
//添加积分明细
|
if(!sjShopAppUser.getLavePoint().equals(lavePoint)){
|
UserPoint userPoint = new UserPoint();
|
userPoint.setType(14);
|
userPoint.setHistoricalPoint(lavePoint);
|
userPoint.setVariablePoint(bdmdsj_point);
|
userPoint.setBalance(sjShopAppUser.getLavePoint());
|
userPoint.setCreateTime(LocalDateTime.now());
|
userPoint.setAppUserId(sjShopAppUser.getId());
|
userPoint.setObjectId(order.getId());
|
userPoint.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPoint);
|
//变更等级
|
appUserClient.vipUpgrade(sjShopAppUser.getId());
|
}
|
|
if(!shop2.getLavePoint().equals(shopLavePoint)){
|
ShopPoint shopPoint = new ShopPoint();
|
shopPoint.setShopId(shop2.getId());
|
shopPoint.setType(3);
|
shopPoint.setHistoricalPoint(shopLavePoint);
|
shopPoint.setVariablePoint(bdmdsj_point);
|
shopPoint.setBalance(shop2.getLavePoint());
|
shopPoint.setCreateTime(LocalDateTime.now());
|
shopPoint.setCreateUserId(order.getAppUserId());
|
shopPoint.setObjectId(order.getId());
|
shopPoint.setOrderNum(order.getOrderNumber());
|
shopPointClient.saveShopPoint(shopPoint);
|
}
|
}
|
}
|
|
order.setIsCommission(1);
|
orderService.updateById(order);
|
}
|
}
|
|
public void calculationCommissionCopy(Order order){
|
List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
|
.eq(OrderGood::getOrderId, order.getId()));
|
AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
|
//直推上级分佣金额
|
BigDecimal ztsj_price = BigDecimal.ZERO;
|
//直帮上级分佣金额
|
BigDecimal zbsj_price = BigDecimal.ZERO;
|
//直推上级分佣积分
|
Integer ztsj_point = 0;
|
//直帮上级分佣积分
|
Integer zbsj_point = 0;
|
//核销门店分佣金额
|
BigDecimal hxmd_price = BigDecimal.ZERO;
|
//核销门店分佣积分
|
Integer hxmd_point = 0;
|
//技师分佣积分
|
Integer js_point = 0;
|
//绑定门店分佣金额
|
BigDecimal bdmd_price = BigDecimal.ZERO;
|
//绑定门店分佣积分
|
Integer bdmd_point = 0;
|
//绑定门店上级门店分佣金额
|
BigDecimal bdmdsj_price = BigDecimal.ZERO;
|
//绑定门店上级门店分佣积分
|
Integer bdmdsj_point = 0;
|
for (OrderGood orderGood : orderGoods) {
|
//上级获得分佣金额(直推上级|直帮上级)
|
BigDecimal superiorSubcommission = orderGood.getSuperiorSubcommission();
|
//上级获得分佣积分(直推上级|直帮上级)
|
Integer superiorRebatePoints = orderGood.getSuperiorRebatePoints();
|
if(StringUtils.isNotEmpty(orderGood.getSuperiorPriceType())){
|
String[] split = orderGood.getSuperiorPriceType().split(",");
|
for (String s : split) {
|
//直推上级
|
if("1".equals(s)){
|
ztsj_price = ztsj_price.add(superiorSubcommission);
|
}
|
//直帮上级
|
if("2".equals(s)){
|
zbsj_price = zbsj_price.add(superiorSubcommission);
|
}
|
}
|
}
|
if(StringUtils.isNotEmpty(orderGood.getSuperiorType())){
|
String[] split = orderGood.getSuperiorType().split(",");
|
for (String s : split) {
|
//直推上级
|
if("1".equals(s)){
|
ztsj_point += superiorRebatePoints;
|
}
|
//直帮上级
|
if("2".equals(s)){
|
zbsj_point += superiorRebatePoints;
|
}
|
}
|
}
|
|
//核销门店获取服务费
|
hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges());
|
//核销门店可获得积分
|
hxmd_point += orderGood.getServuceShopPoints();
|
//技师分佣金额
|
if(order.getOrderType() == 1){
|
js_point += orderGood.getTechnicianPoints();
|
}
|
//绑定门店分佣金额
|
bdmd_price = bdmd_price.add(orderGood.getBoundShopCharges());
|
//绑定门店分佣积分
|
bdmd_point += orderGood.getBoundShopPoints();
|
//绑定门店上级门店分佣金额
|
bdmdsj_price = bdmdsj_price.add(orderGood.getBoundShopSuperiorsCharges());
|
//绑定门店上级门店分佣积分
|
bdmdsj_point += orderGood.getBoundShopSuperiorsPoints();
|
}
|
//直推上级
|
// if(null != appUser.getInviteUserId()){
|
// AppUser inviteUser = appUserClient.getAppUserById(appUser.getInviteUserId());
|
// if(null != inviteUser){
|
// BigDecimal balance = inviteUser.getBalance();
|
// Integer lavePoint = inviteUser.getLavePoint();
|
// //添加明细记录
|
// if(!inviteUser.getBalance().equals(balance)){
|
// BalanceChangeRecordCopy balanceChangeRecordCopy = new BalanceChangeRecordCopy();
|
// balanceChangeRecordCopy.setAppUserId(inviteUser.getId());
|
// balanceChangeRecordCopy.setVipId(inviteUser.getVipId());
|
// balanceChangeRecordCopy.setOrderId(order.getId());
|
// balanceChangeRecordCopy.setChangeType(4);
|
// balanceChangeRecordCopy.setBeforeAmount(balance);
|
// balanceChangeRecordCopy.setChangeAmount(ztsj_price);
|
// balanceChangeRecordCopy.setAfterAmount(inviteUser.getBalance());
|
// balanceChangeRecordCopy.setDelFlag(0);
|
// balanceChangeRecordCopy.setCreateTime(LocalDateTime.now());
|
// balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecordCopy);
|
// }
|
// //添加积分明细
|
// if(!inviteUser.getLavePoint().equals(lavePoint)){
|
//
|
// UserPointCopy userPointCopy = new UserPointCopy();
|
// userPointCopy.setType(2);
|
// userPointCopy.setHistoricalPoint(lavePoint);
|
// userPointCopy.setVariablePoint(ztsj_point);
|
// userPointCopy.setBalance(inviteUser.getLavePoint());
|
// userPointCopy.setCreateTime(LocalDateTime.now());
|
// userPointCopy.setAppUserId(inviteUser.getId());
|
// userPointCopy.setObjectId(order.getId());
|
// userPointCopy.setExtention(order.getOrderNumber());
|
// userPointClient.saveUserPoint(userPointCopy);
|
// }
|
// }
|
// }
|
|
//指导老师
|
AppUser superiorLeader = appUserClient.getSuperiorLeader(appUser.getId()).getData();
|
if(null != superiorLeader){
|
log.info("指导老师:{}",superiorLeader);
|
BigDecimal balance = superiorLeader.getBalance();
|
Integer lavePoint = superiorLeader.getLavePoint();
|
//添加明细记录
|
BalanceChangeRecordCopy balanceChangeRecord = new BalanceChangeRecordCopy();
|
balanceChangeRecord.setAppUserId(superiorLeader.getId());
|
balanceChangeRecord.setVipId(superiorLeader.getVipId());
|
balanceChangeRecord.setOrderId(order.getId());
|
balanceChangeRecord.setChangeType(4);
|
balanceChangeRecord.setBeforeAmount(balance);
|
balanceChangeRecord.setChangeAmount(zbsj_price);
|
balanceChangeRecord.setAfterAmount(superiorLeader.getBalance());
|
balanceChangeRecord.setDelFlag(0);
|
balanceChangeRecord.setCreateTime(LocalDateTime.now());
|
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
|
//添加积分明细
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(2);
|
userPointCopy.setHistoricalPoint(lavePoint);
|
userPointCopy.setVariablePoint(zbsj_point);
|
userPointCopy.setBalance(superiorLeader.getLavePoint());
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(superiorLeader.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPointCopy);
|
}
|
|
//核销门店
|
Shop shop = shopClient.getShopById(order.getShopId()).getData();
|
AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId());
|
if(null != shopAppUser){
|
BigDecimal shopBalance = shop.getBalance();
|
Integer lavePoint = shopAppUser.getLavePoint();
|
Integer shopLavePoint = shop.getLavePoint();
|
//添加明细记录
|
ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
|
shopBalanceStatementCopy.setShopId(shop.getId());
|
shopBalanceStatementCopy.setType(3);
|
shopBalanceStatementCopy.setHistoricalBalance(shopBalance);
|
shopBalanceStatementCopy.setVariableAmount(hxmd_price);
|
shopBalanceStatementCopy.setBalance(shop.getBalance());
|
shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
|
shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
|
shopBalanceStatementCopy.setObjectId(order.getId());
|
shopBalanceStatementCopy.setExtension(order.getOrderNumber());
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatementCopy);
|
//添加积分明细
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(8);
|
userPointCopy.setHistoricalPoint(lavePoint);
|
userPointCopy.setVariablePoint(hxmd_point);
|
userPointCopy.setBalance(shopAppUser.getLavePoint());
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(shopAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPointCopy);
|
ShopPointCopy shopPointCopy = new ShopPointCopy();
|
shopPointCopy.setShopId(shop.getId());
|
shopPointCopy.setType(1);
|
shopPointCopy.setHistoricalPoint(shopLavePoint);
|
shopPointCopy.setVariablePoint(hxmd_point);
|
shopPointCopy.setBalance(shop.getLavePoint());
|
shopPointCopy.setCreateTime(LocalDateTime.now());
|
shopPointCopy.setCreateUserId(order.getAppUserId());
|
shopPointCopy.setObjectId(order.getId());
|
shopPointCopy.setOrderNum(order.getOrderNumber());
|
shopPointClient.saveShopPoint(shopPointCopy);
|
}
|
|
//技师服务积分
|
if(order.getOrderType() == 1){
|
Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData();
|
if(null != technician){
|
AppUser technicianAppUser = appUserClient.getAppUserById(technician.getAppUserId());
|
if(null != technicianAppUser){
|
Integer lavePoint = technicianAppUser.getLavePoint();
|
//添加积分明细
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(10);
|
userPointCopy.setHistoricalPoint(lavePoint);
|
userPointCopy.setVariablePoint(js_point);
|
userPointCopy.setBalance(technicianAppUser.getLavePoint());
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(technicianAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPointCopy);
|
}
|
|
}
|
}
|
|
//服务商分佣
|
Shop shop1 = shopClient.getServiceProvider(appUser.getId()).getData();
|
if(null != shop1){
|
AppUser bdShopAppUser = appUserClient.getAppUserById(shop1.getAppUserId());
|
if(null != bdShopAppUser){
|
BigDecimal shopBalance = shop1.getBalance();
|
Integer lavePoint = bdShopAppUser.getLavePoint();
|
Integer shopLavePoint = shop1.getLavePoint();
|
//添加明细记录
|
ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
|
shopBalanceStatementCopy.setShopId(shop1.getId());
|
shopBalanceStatementCopy.setType(1);
|
shopBalanceStatementCopy.setHistoricalBalance(shopBalance);
|
shopBalanceStatementCopy.setVariableAmount(bdmd_price);
|
shopBalanceStatementCopy.setBalance(shop1.getBalance());
|
shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
|
shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
|
shopBalanceStatementCopy.setObjectId(order.getId());
|
shopBalanceStatementCopy.setExtension(order.getOrderNumber());
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatementCopy);
|
//添加积分明细
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(9);
|
userPointCopy.setHistoricalPoint(lavePoint);
|
userPointCopy.setVariablePoint(bdmd_point);
|
userPointCopy.setBalance(bdShopAppUser.getLavePoint());
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(bdShopAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPointCopy);
|
|
ShopPointCopy shopPointCopy = new ShopPointCopy();
|
shopPointCopy.setShopId(shop1.getId());
|
shopPointCopy.setType(2);
|
shopPointCopy.setHistoricalPoint(shopLavePoint);
|
shopPointCopy.setVariablePoint(bdmd_point);
|
shopPointCopy.setBalance(shop1.getLavePoint());
|
shopPointCopy.setCreateTime(LocalDateTime.now());
|
shopPointCopy.setCreateUserId(order.getAppUserId());
|
shopPointCopy.setObjectId(order.getId());
|
shopPointCopy.setOrderNum(order.getOrderNumber());
|
shopPointClient.saveShopPoint(shopPointCopy);
|
}
|
}
|
|
//高级服务商
|
Shop shop2 = shopClient.getSuperiorServiceProvider(order.getAppUserId()).getData();
|
if(null != shop2){
|
AppUser sjShopAppUser = appUserClient.getAppUserById(shop2.getAppUserId());
|
if(null != sjShopAppUser){
|
BigDecimal shopBalance = shop2.getBalance();
|
Integer lavePoint = sjShopAppUser.getLavePoint();
|
Integer shopLavePoint = shop2.getLavePoint();
|
//添加明细记录
|
ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
|
shopBalanceStatementCopy.setShopId(shop2.getId());
|
shopBalanceStatementCopy.setType(2);
|
shopBalanceStatementCopy.setHistoricalBalance(shopBalance);
|
shopBalanceStatementCopy.setVariableAmount(bdmdsj_price);
|
shopBalanceStatementCopy.setBalance(shop2.getBalance());
|
shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
|
shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
|
shopBalanceStatementCopy.setObjectId(order.getId());
|
shopBalanceStatementCopy.setExtension(order.getOrderNumber());
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatementCopy);
|
//添加积分明细
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(14);
|
userPointCopy.setHistoricalPoint(lavePoint);
|
userPointCopy.setVariablePoint(bdmdsj_point);
|
userPointCopy.setBalance(sjShopAppUser.getLavePoint());
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(sjShopAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointClient.saveUserPoint(userPointCopy);
|
|
ShopPointCopy shopPointCopy = new ShopPointCopy();
|
shopPointCopy.setShopId(shop2.getId());
|
shopPointCopy.setType(3);
|
shopPointCopy.setHistoricalPoint(shopLavePoint);
|
shopPointCopy.setVariablePoint(bdmdsj_point);
|
shopPointCopy.setBalance(shop2.getLavePoint());
|
shopPointCopy.setCreateTime(LocalDateTime.now());
|
shopPointCopy.setCreateUserId(order.getAppUserId());
|
shopPointCopy.setObjectId(order.getId());
|
shopPointCopy.setOrderNum(order.getOrderNumber());
|
shopPointClient.saveShopPoint(shopPointCopy);
|
}
|
}
|
}
|
}
|