package com.ruoyi.order.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.account.api.feignClient.AppUserClient;
|
import com.ruoyi.account.api.feignClient.AppUserGiveawayTemporaryClient;
|
import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient;
|
import com.ruoyi.account.api.feignClient.UserPointClient;
|
import com.ruoyi.account.api.model.*;
|
import com.ruoyi.order.model.Order;
|
import com.ruoyi.order.model.OrderGood;
|
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 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.time.LocalDateTime;
|
import java.util.Arrays;
|
import java.util.List;
|
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;
|
@Resource
|
private AppUserGiveawayTemporaryClient appUserGiveawayTemporaryClient;
|
@Resource
|
private ShopGiveawayTemporaryClient shopGiveawayTemporaryClient;
|
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void calculationCommission(){
|
List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getIsCommission, 2).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.isEmpty()){
|
return;
|
}
|
|
for (Order order : list) {
|
//添加用户的分佣数据
|
List<AppUserGiveawayTemporary> data = appUserGiveawayTemporaryClient.getAppUserGiveawayTemporary(order.getId()).getData();
|
if(null != data){
|
Set<Long> appUserIds = data.stream().map(AppUserGiveawayTemporary::getAppUserId).collect(Collectors.toSet());
|
for (Long appUserId : appUserIds) {
|
Integer sharePoint = 0;
|
BigDecimal balance = BigDecimal.ZERO;
|
BigDecimal withdrawableAmount = BigDecimal.ZERO;
|
BigDecimal totalDistributionAmount = BigDecimal.ZERO;
|
Integer lowerLevelSharePoint = 0;
|
Integer shopSharePoint = 0;
|
Integer shopAchievementPoint = 0;
|
BigDecimal shopServiceFee = BigDecimal.ZERO;
|
BigDecimal shopCommission = BigDecimal.ZERO;
|
Integer totalPerformancePoint = 0;
|
Integer totalPoint = 0;
|
Integer lavePoint = 0;
|
Integer availablePoint = 0;
|
Integer totalAvailablePoint = 0;
|
Integer transferablePoint = 0;
|
for (AppUserGiveawayTemporary datum : data) {
|
if(datum.getAppUserId().longValue() == appUserId){
|
sharePoint += datum.getSharePoint();
|
balance = balance.add(datum.getBalance());
|
withdrawableAmount = withdrawableAmount.add(datum.getWithdrawableAmount());
|
totalDistributionAmount = totalDistributionAmount.add(datum.getTotalDistributionAmount());
|
lowerLevelSharePoint += datum.getLowerLevelSharePoint();
|
shopSharePoint += datum.getShopSharePoint();
|
shopAchievementPoint += datum.getShopAchievementPoint();
|
shopServiceFee = shopServiceFee.add(datum.getShopServiceFee());
|
shopCommission = shopCommission.add(datum.getShopCommission());
|
totalPerformancePoint += datum.getTotalPerformancePoint();
|
totalPoint += datum.getTotalPoint();
|
lavePoint += datum.getLavePoint();
|
availablePoint += datum.getAvailablePoint();
|
totalAvailablePoint += datum.getTotalAvailablePoint();
|
transferablePoint += datum.getTransferablePoint();
|
}
|
}
|
|
AppUser appUser = appUserClient.getAppUserById(appUserId);
|
appUser.setSharePoint(appUser.getSharePoint() + sharePoint);
|
appUser.setBalance(appUser.getBalance().add(balance).setScale(2, BigDecimal.ROUND_HALF_UP));
|
appUser.setWithdrawableAmount(appUser.getWithdrawableAmount().add(withdrawableAmount).setScale(2, BigDecimal.ROUND_HALF_UP));
|
appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(totalDistributionAmount).setScale(2, BigDecimal.ROUND_HALF_UP));
|
appUser.setLowerLevelSharePoint(appUser.getLowerLevelSharePoint() + lowerLevelSharePoint);
|
appUser.setShopSharePoint(appUser.getShopSharePoint() + shopSharePoint);
|
appUser.setShopAchievementPoint(appUser.getShopAchievementPoint() + shopAchievementPoint);
|
appUser.setShopServiceFee(appUser.getShopServiceFee().add(shopServiceFee).setScale(2, BigDecimal.ROUND_HALF_UP));
|
appUser.setShopCommission(appUser.getShopCommission().add(shopCommission).setScale(2, BigDecimal.ROUND_HALF_UP));
|
appUser.setTotalPerformancePoint(appUser.getTotalPerformancePoint() + totalPerformancePoint);
|
appUser.setTotalPoint(appUser.getTotalPoint() + totalPoint);
|
appUser.setLavePoint(appUser.getLavePoint() + lavePoint);
|
appUser.setAvailablePoint(appUser.getAvailablePoint() + availablePoint);
|
appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + totalAvailablePoint);
|
appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint);
|
appUserClient.editAppUserById(appUser);
|
//变更等级
|
appUserClient.vipUpgrade(appUserId);
|
}
|
}
|
|
//添加店铺的分佣数据
|
List<ShopGiveawayTemporary> data1 = shopGiveawayTemporaryClient.getShopGiveawayTemporary(order.getId()).getData();
|
if(null != data1){
|
Set<Integer> collect1 = data1.stream().map(ShopGiveawayTemporary::getShopId).collect(Collectors.toSet());
|
for (Integer shopId : collect1) {
|
Integer shopAllPoint = 0;
|
Integer lowerLevelSharePoint = 0;
|
Integer sharePoint = 0;
|
Integer serverPoint = 0;
|
Integer lavePoint = 0;
|
BigDecimal giveawayAllMoney = BigDecimal.ZERO;
|
BigDecimal giveawayMoney = BigDecimal.ZERO;
|
BigDecimal lowerLevelGiveawayMoney = BigDecimal.ZERO;
|
BigDecimal serverGiveawayMoney = BigDecimal.ZERO;
|
BigDecimal canWithdrawMoney = BigDecimal.ZERO;
|
BigDecimal balance = BigDecimal.ZERO;
|
for (ShopGiveawayTemporary datum : data1) {
|
if(datum.getShopId().equals(shopId)){
|
shopAllPoint += datum.getShopAllPoint();
|
lowerLevelSharePoint += datum.getLowerLevelSharePoint();
|
sharePoint += datum.getSharePoint();
|
serverPoint += datum.getServerPoint();
|
lavePoint += datum.getLavePoint();
|
giveawayAllMoney = giveawayAllMoney.add(datum.getGiveawayAllMoney());
|
giveawayMoney = giveawayMoney.add(datum.getGiveawayMoney());
|
lowerLevelGiveawayMoney = lowerLevelGiveawayMoney.add(datum.getLowerLevelGiveawayMoney());
|
serverGiveawayMoney = serverGiveawayMoney.add(datum.getServerGiveawayMoney());
|
canWithdrawMoney = canWithdrawMoney.add(datum.getCanWithdrawMoney());
|
balance = balance.add(datum.getBalance());
|
}
|
}
|
Shop shop = shopClient.getShopById(shopId).getData();
|
shop.setShopAllPoint(shop.getShopAllPoint() + shopAllPoint);
|
shop.setLowerLevelSharePoint(shop.getLowerLevelSharePoint() + lowerLevelSharePoint);
|
shop.setSharePoint(shop.getSharePoint() + sharePoint);
|
shop.setServerPoint(shop.getServerPoint() + serverPoint);
|
shop.setLavePoint(shop.getLavePoint() + lavePoint);
|
shop.setGiveawayAllMoney(shop.getGiveawayAllMoney().add(giveawayAllMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
shop.setGiveawayMoney(shop.getGiveawayMoney().add(giveawayMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
shop.setLowerLevelGiveawayMoney(shop.getLowerLevelGiveawayMoney().add(lowerLevelGiveawayMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
shop.setServerGiveawayMoney(shop.getServerGiveawayMoney().add(serverGiveawayMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
shop.setCanWithdrawMoney(shop.getCanWithdrawMoney().add(canWithdrawMoney).setScale(2, BigDecimal.ROUND_HALF_UP));
|
shop.setBalance(shop.getBalance().add(balance).setScale(2, BigDecimal.ROUND_HALF_UP));
|
shopClient.updateShop(shop);
|
}
|
}
|
|
//开始处理明细流水
|
List<BalanceChangeRecordCopy> data2 = balanceChangeRecordClient.getBalanceChangeRecordCopy(order.getId(), Arrays.asList(4)).getData();
|
if(null != data2){
|
for(BalanceChangeRecordCopy item : data2){
|
BalanceChangeRecord changeRecord = new BalanceChangeRecord();
|
BeanUtil.copyProperties(item, changeRecord);
|
changeRecord.setId(null);
|
balanceChangeRecordClient.saveBalanceChangeRecord(changeRecord);
|
}
|
if(data2.size() > 0){
|
List<Long> ids = data2.stream().map(BalanceChangeRecordCopy::getId).collect(Collectors.toList());
|
balanceChangeRecordClient.deleteBalanceChangeRecordCopyByIds(ids);
|
}
|
}
|
|
List<UserPointCopy> data3 = userPointClient.getUserPointCopy(order.getId(), Arrays.asList(2,8,9,10,14)).getData();
|
if(null != data3){
|
for(UserPointCopy item : data3){
|
UserPoint userPoint = new UserPoint();
|
BeanUtil.copyProperties(item, userPoint);
|
userPoint.setId(null);
|
userPointClient.saveUserPoint(userPoint);
|
}
|
if(data3.size() > 0){
|
List<Long> ids = data3.stream().map(UserPointCopy::getId).collect(Collectors.toList());
|
userPointClient.deleteUserPointCopyByIds(ids);
|
}
|
}
|
|
|
List<ShopBalanceStatementCopy> data4 = shopBalanceStatementClient.getShopBalanceStatementCopy(order.getId(), Arrays.asList(1,2,3)).getData();
|
if(null != data4){
|
for(ShopBalanceStatementCopy item : data4){
|
ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
|
BeanUtil.copyProperties(item, shopBalanceStatement);
|
shopBalanceStatement.setId(null);
|
shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
|
}
|
if(data4.size() > 0){
|
List<Long> ids = data4.stream().map(ShopBalanceStatementCopy::getId).collect(Collectors.toList());
|
shopBalanceStatementClient.deleteShopBalanceStatementCopyByIds(ids);
|
}
|
}
|
|
List<ShopPointCopy> data5 = shopPointClient.getShopPointCopy(order.getId(), Arrays.asList(1,2,3)).getData();
|
if(null != data5){
|
for(ShopPointCopy item : data5){
|
ShopPoint shopPoint = new ShopPoint();
|
BeanUtil.copyProperties(item, shopPoint);
|
shopPoint.setId(null);
|
shopPointClient.saveShopPoint(shopPoint);
|
}
|
if(data5.size() > 0){
|
List<Long> ids = data5.stream().map(ShopPointCopy::getId).collect(Collectors.toList());
|
shopPointClient.deleteShopPointCopyByIds(ids);
|
}
|
}
|
order.setIsCommission(3);
|
orderService.updateById(order);
|
|
appUserGiveawayTemporaryClient.delAppUserGiveawayTemporary(order.getId());
|
shopGiveawayTemporaryClient.delShopGiveawayTemporary(order.getId());
|
}
|
|
}
|
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void calculationCommissionUser(Long orderId) {
|
Order order = orderService.getById(orderId);
|
List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
|
.eq(OrderGood::getOrderId, order.getId()));
|
AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
|
if(null == appUser){
|
log.error("无效的用户数据");
|
return;
|
}
|
//指导老师分佣金额
|
BigDecimal zdls_price = BigDecimal.ZERO;
|
//指导老师分佣积分
|
Integer zdls_point = 0;
|
//服务商分佣金额
|
BigDecimal fws_price = BigDecimal.ZERO;
|
//服务商分佣积分
|
Integer fws_point = 0;
|
//高级服务商分佣金额
|
BigDecimal gjfws_price = BigDecimal.ZERO;
|
//高级服务商分佣积分
|
Integer gjfws_point = 0;
|
for (OrderGood orderGood : orderGoods) {
|
//上级获得分佣金额(直推上级|直帮上级)
|
BigDecimal superiorSubcommission = orderGood.getSuperiorSubcommission();
|
//上级获得分佣积分(直推上级|直帮上级)
|
Integer superiorRebatePoints = orderGood.getSuperiorRebatePoints();
|
zdls_price = zdls_price.add(superiorSubcommission);
|
zdls_point += superiorRebatePoints;
|
|
//绑定门店分佣金额
|
fws_price = fws_price.add(orderGood.getBoundShopCharges());
|
//绑定门店分佣积分
|
fws_point += orderGood.getBoundShopPoints();
|
//绑定门店上级门店分佣金额
|
gjfws_price = gjfws_price.add(orderGood.getBoundShopSuperiorsCharges());
|
//绑定门店上级门店分佣积分
|
gjfws_point += orderGood.getBoundShopSuperiorsPoints();
|
}
|
|
//直帮上级
|
AppUser superiorLeader = appUserClient.getSuperiorLeader(appUser.getId()).getData();
|
if(null == superiorLeader){
|
log.error("指导老师查询失败");
|
}
|
if(null != superiorLeader){
|
BigDecimal balance = superiorLeader.getBalance();
|
Integer lavePoint = superiorLeader.getLavePoint();
|
if(zdls_price.compareTo(BigDecimal.ZERO) > 0){
|
// superiorLeader.setTotalDistributionAmount(superiorLeader.getTotalDistributionAmount().add(zdls_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// superiorLeader.setBalance(superiorLeader.getBalance().add(zdls_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// superiorLeader.setWithdrawableAmount(superiorLeader.getWithdrawableAmount().add(zdls_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
|
//添加临时分佣数据
|
AppUserGiveawayTemporary appUserGiveawayTemporary = new AppUserGiveawayTemporary();
|
appUserGiveawayTemporary.setOrderId(order.getId());
|
appUserGiveawayTemporary.setAppUserId(superiorLeader.getId());
|
appUserGiveawayTemporary.setTotalDistributionAmount(zdls_price);
|
appUserGiveawayTemporary.setBalance(zdls_price);
|
appUserGiveawayTemporary.setWithdrawableAmount(zdls_price);
|
appUserGiveawayTemporaryClient.saveAppUserGiveawayTemporary(appUserGiveawayTemporary);
|
}
|
if(zdls_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getSharePointOpen()){
|
earnPoint1 = new BigDecimal(zdls_point).multiply(pointSetting.getSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
// superiorLeader.setSharePoint(superiorLeader.getSharePoint() + zdls_point);
|
// superiorLeader.setLavePoint(superiorLeader.getLavePoint() + zdls_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() + zdls_point);
|
|
//添加临时分佣数据
|
AppUserGiveawayTemporary appUserGiveawayTemporary = new AppUserGiveawayTemporary();
|
appUserGiveawayTemporary.setOrderId(order.getId());
|
appUserGiveawayTemporary.setAppUserId(superiorLeader.getId());
|
appUserGiveawayTemporary.setSharePoint(zdls_point);
|
appUserGiveawayTemporary.setLavePoint(zdls_point);
|
appUserGiveawayTemporary.setAvailablePoint(earnPoint1);
|
appUserGiveawayTemporary.setTotalAvailablePoint(earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getSharePointGift()){
|
appUserGiveawayTemporary.setTransferablePoint(earnPoint1);
|
}
|
appUserGiveawayTemporary.setTotalPoint(zdls_point);
|
appUserGiveawayTemporaryClient.saveAppUserGiveawayTemporary(appUserGiveawayTemporary);
|
|
}
|
// appUserClient.editAppUserById(superiorLeader);
|
//添加明细记录
|
if(zdls_price.compareTo(BigDecimal.ZERO) > 0){
|
//添加临时明细记录数据
|
BalanceChangeRecordCopy balanceChangeRecordCopy = new BalanceChangeRecordCopy();
|
balanceChangeRecordCopy.setAppUserId(superiorLeader.getId());
|
balanceChangeRecordCopy.setVipId(superiorLeader.getVipId());
|
balanceChangeRecordCopy.setOrderId(order.getId());
|
balanceChangeRecordCopy.setChangeType(4);
|
balanceChangeRecordCopy.setChangeAmount(zdls_price);
|
balanceChangeRecordCopy.setDelFlag(0);
|
balanceChangeRecordCopy.setCreateTime(LocalDateTime.now());
|
balanceChangeRecordCopy.setChangeDirection(1);
|
balanceChangeRecordClient.saveBalanceChangeRecordCopy(balanceChangeRecordCopy);
|
}
|
//添加积分明细
|
if(zdls_point > 0){
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(2);
|
userPointCopy.setVariablePoint(zdls_point);
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(superiorLeader.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointCopy.setChangeDirection(1);
|
userPointClient.saveUserPointCopy(userPointCopy);
|
//变更等级
|
// appUserClient.vipUpgrade(superiorLeader.getId());
|
}
|
}
|
|
//服务商分佣
|
Shop shop1 = shopClient.getServiceProvider(appUser.getId()).getData();
|
if(null == shop1){
|
log.error("服务商查询失败");
|
}
|
if(null != shop1){
|
AppUser bdShopAppUser = appUserClient.getAppUserById(shop1.getAppUserId());
|
if(null == bdShopAppUser){
|
log.error("服务商用户查询失败");
|
}
|
if(null != bdShopAppUser){
|
BigDecimal shopBalance = shop1.getBalance();
|
Integer lavePoint = bdShopAppUser.getLavePoint();
|
Integer shopLavePoint = shop1.getLavePoint();
|
if(fws_price.compareTo(BigDecimal.ZERO) > 0){
|
//门店返佣
|
// shop1.setGiveawayAllMoney(shop1.getGiveawayAllMoney().add(fws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// shop1.setGiveawayMoney(shop1.getGiveawayMoney().add(fws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// shop1.setCanWithdrawMoney(shop1.getCanWithdrawMoney().add(fws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// shop1.setBalance(shop1.getBalance().add(fws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
|
//添加临时数据
|
ShopGiveawayTemporary shopGiveawayTemporary = new ShopGiveawayTemporary();
|
shopGiveawayTemporary.setShopId(shop1.getId());
|
shopGiveawayTemporary.setOrderId(order.getId());
|
shopGiveawayTemporary.setGiveawayAllMoney(fws_price);
|
shopGiveawayTemporary.setGiveawayMoney(fws_price);
|
shopGiveawayTemporary.setCanWithdrawMoney(fws_price);
|
shopGiveawayTemporary.setBalance(fws_price);
|
shopGiveawayTemporaryClient.saveShopGiveawayTemporary(shopGiveawayTemporary);
|
}
|
if(fws_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointOpen()){
|
earnPoint1 = new BigDecimal(fws_point).multiply(pointSetting.getShopSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
// bdShopAppUser.setLavePoint(bdShopAppUser.getLavePoint() + fws_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() + fws_point);
|
// bdShopAppUser.setShopSharePoint(bdShopAppUser.getShopSharePoint() + fws_point);
|
|
//添加临时分佣数据
|
AppUserGiveawayTemporary appUserGiveawayTemporary = new AppUserGiveawayTemporary();
|
appUserGiveawayTemporary.setOrderId(order.getId());
|
appUserGiveawayTemporary.setAppUserId(bdShopAppUser.getId());
|
appUserGiveawayTemporary.setLavePoint(fws_point);
|
appUserGiveawayTemporary.setAvailablePoint(earnPoint1);
|
appUserGiveawayTemporary.setTotalAvailablePoint(earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointGift()){
|
appUserGiveawayTemporary.setTransferablePoint(earnPoint1);
|
}
|
appUserGiveawayTemporary.setTotalPoint(fws_point);
|
appUserGiveawayTemporary.setShopSharePoint(fws_point);
|
appUserGiveawayTemporaryClient.saveAppUserGiveawayTemporary(appUserGiveawayTemporary);
|
|
//门店返佣
|
// shop1.setShopAllPoint(shop1.getShopAllPoint() + fws_point);
|
// shop1.setSharePoint(shop1.getSharePoint() + fws_point);
|
// shop1.setLavePoint(shop1.getLavePoint() + fws_point);
|
//添加临时分佣数据
|
ShopGiveawayTemporary shopGiveawayTemporary = new ShopGiveawayTemporary();
|
shopGiveawayTemporary.setShopId(shop1.getId());
|
shopGiveawayTemporary.setOrderId(order.getId());
|
shopGiveawayTemporary.setShopAllPoint(fws_point);
|
shopGiveawayTemporary.setSharePoint(fws_point);
|
shopGiveawayTemporary.setLavePoint(fws_point);
|
shopGiveawayTemporaryClient.saveShopGiveawayTemporary(shopGiveawayTemporary);
|
}
|
// appUserClient.editAppUserById(bdShopAppUser);
|
// shopClient.updateShop(shop1);
|
//添加明细记录
|
if(fws_price.compareTo(BigDecimal.ZERO) > 0){
|
ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
|
shopBalanceStatementCopy.setShopId(shop1.getId());
|
shopBalanceStatementCopy.setType(1);
|
shopBalanceStatementCopy.setVariableAmount(fws_price);
|
shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
|
shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
|
shopBalanceStatementCopy.setObjectId(order.getId());
|
shopBalanceStatementCopy.setExtension(order.getOrderNumber());
|
shopBalanceStatementCopy.setChangeDirection(1);
|
shopBalanceStatementClient.saveShopBalanceStatementCopy(shopBalanceStatementCopy);
|
}
|
//添加积分明细
|
if(fws_point > 0){
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(9);
|
userPointCopy.setVariablePoint(fws_point);
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(bdShopAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointCopy.setChangeDirection(1);
|
userPointClient.saveUserPointCopy(userPointCopy);
|
//变更等级
|
// appUserClient.vipUpgrade(bdShopAppUser.getId());
|
}
|
|
if(fws_point > 0){
|
ShopPointCopy shopPointCopy = new ShopPointCopy();
|
shopPointCopy.setShopId(shop1.getId());
|
shopPointCopy.setType(2);
|
shopPointCopy.setVariablePoint(fws_point);
|
shopPointCopy.setCreateTime(LocalDateTime.now());
|
shopPointCopy.setCreateUserId(order.getAppUserId());
|
shopPointCopy.setObjectId(order.getId());
|
shopPointCopy.setOrderNum(order.getOrderNumber());
|
shopPointCopy.setChangeDirection(1);
|
shopPointClient.saveShopPointCopy(shopPointCopy);
|
}
|
}
|
}
|
|
//高级服务商
|
Shop shop2 = shopClient.getSuperiorServiceProvider(order.getAppUserId()).getData();
|
if(null == shop2){
|
log.error("高级服务商查询失败");
|
}
|
if(null != shop2){
|
AppUser sjShopAppUser = appUserClient.getAppUserById(shop2.getAppUserId());
|
if(null == sjShopAppUser){
|
log.error("高级服务商用户查询失败");
|
}
|
if(null != sjShopAppUser){
|
BigDecimal shopBalance = shop2.getBalance();
|
Integer lavePoint = sjShopAppUser.getLavePoint();
|
Integer shopLavePoint = shop2.getLavePoint();
|
if(gjfws_price.compareTo(BigDecimal.ZERO) > 0){
|
//门店返佣
|
// shop2.setGiveawayAllMoney(shop2.getGiveawayAllMoney().add(gjfws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// shop2.setLowerLevelGiveawayMoney(shop2.getLowerLevelGiveawayMoney().add(gjfws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// shop2.setCanWithdrawMoney(shop2.getCanWithdrawMoney().add(gjfws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
// shop2.setBalance(shop2.getBalance().add(gjfws_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
|
|
//添加临时分佣数据
|
ShopGiveawayTemporary shopGiveawayTemporary = new ShopGiveawayTemporary();
|
shopGiveawayTemporary.setShopId(shop2.getId());
|
shopGiveawayTemporary.setOrderId(order.getId());
|
shopGiveawayTemporary.setGiveawayAllMoney(gjfws_price);
|
shopGiveawayTemporary.setLowerLevelGiveawayMoney(gjfws_price);
|
shopGiveawayTemporary.setCanWithdrawMoney(gjfws_price);
|
shopGiveawayTemporary.setBalance(gjfws_price);
|
shopGiveawayTemporaryClient.saveShopGiveawayTemporary(shopGiveawayTemporary);
|
|
}
|
if(gjfws_point > 0){
|
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
|
int earnPoint1 = 0;
|
//计算可用积分比例
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointOpen()){
|
earnPoint1 = new BigDecimal(gjfws_point).multiply(pointSetting.getShopSharePoint().divide(new BigDecimal(100))).intValue();
|
}
|
// sjShopAppUser.setLavePoint(sjShopAppUser.getLavePoint() + gjfws_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() + gjfws_point);
|
// sjShopAppUser.setLowerLevelSharePoint(sjShopAppUser.getLowerLevelSharePoint() + gjfws_point);
|
|
//添加临时分佣数据
|
AppUserGiveawayTemporary appUserGiveawayTemporary = new AppUserGiveawayTemporary();
|
appUserGiveawayTemporary.setOrderId(order.getId());
|
appUserGiveawayTemporary.setAppUserId(sjShopAppUser.getId());
|
appUserGiveawayTemporary.setLavePoint(gjfws_point);
|
appUserGiveawayTemporary.setAvailablePoint(earnPoint1);
|
appUserGiveawayTemporary.setTotalAvailablePoint(earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getShopSharePointGift()){
|
appUserGiveawayTemporary.setTransferablePoint(earnPoint1);
|
}
|
appUserGiveawayTemporary.setTotalPoint(gjfws_point);
|
appUserGiveawayTemporary.setLowerLevelSharePoint(gjfws_point);
|
appUserGiveawayTemporaryClient.saveAppUserGiveawayTemporary(appUserGiveawayTemporary);
|
|
|
//门店返佣
|
// shop2.setShopAllPoint(shop2.getShopAllPoint() + gjfws_point);
|
// shop2.setLowerLevelSharePoint(shop2.getLowerLevelSharePoint() + gjfws_point);
|
// shop2.setLavePoint(shop2.getLavePoint() + gjfws_point);
|
|
//添加临时分佣数据
|
ShopGiveawayTemporary shopGiveawayTemporary = new ShopGiveawayTemporary();
|
shopGiveawayTemporary.setShopId(shop2.getId());
|
shopGiveawayTemporary.setOrderId(order.getId());
|
shopGiveawayTemporary.setShopAllPoint(gjfws_point);
|
shopGiveawayTemporary.setLowerLevelSharePoint(gjfws_point);
|
shopGiveawayTemporary.setLavePoint(gjfws_point);
|
shopGiveawayTemporaryClient.saveShopGiveawayTemporary(shopGiveawayTemporary);
|
|
}
|
// appUserClient.editAppUserById(sjShopAppUser);
|
// shopClient.updateShop(shop2);
|
//添加明细记录
|
if(gjfws_price.compareTo(BigDecimal.ZERO) > 0){
|
ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
|
shopBalanceStatementCopy.setShopId(shop2.getId());
|
shopBalanceStatementCopy.setType(2);
|
shopBalanceStatementCopy.setVariableAmount(gjfws_price);
|
shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
|
shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
|
shopBalanceStatementCopy.setObjectId(order.getId());
|
shopBalanceStatementCopy.setExtension(order.getOrderNumber());
|
shopBalanceStatementCopy.setChangeDirection(1);
|
shopBalanceStatementClient.saveShopBalanceStatementCopy(shopBalanceStatementCopy);
|
}
|
//添加积分明细
|
if(gjfws_point > 0){
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(14);
|
userPointCopy.setVariablePoint(gjfws_point);
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(sjShopAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointCopy.setChangeDirection(1);
|
userPointClient.saveUserPointCopy(userPointCopy);
|
//变更等级
|
// appUserClient.vipUpgrade(sjShopAppUser.getId());
|
}
|
|
if(gjfws_point > 0){
|
ShopPointCopy shopPointCopy = new ShopPointCopy();
|
shopPointCopy.setShopId(shop2.getId());
|
shopPointCopy.setType(3);
|
shopPointCopy.setVariablePoint(gjfws_point);
|
shopPointCopy.setCreateTime(LocalDateTime.now());
|
shopPointCopy.setCreateUserId(order.getAppUserId());
|
shopPointCopy.setObjectId(order.getId());
|
shopPointCopy.setOrderNum(order.getOrderNumber());
|
shopPointCopy.setChangeDirection(1);
|
shopPointClient.saveShopPointCopy(shopPointCopy);
|
}
|
}
|
}
|
|
//自提单品和服务需要走线下核销流程
|
if(order.getOrderType() == 2 && order.getDistributionMode() == 2){
|
order.setIsCommission(2);
|
}else{
|
order.setIsCommission(1);
|
}
|
orderService.updateById(order);
|
}
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void calculationCommissionShop(Long orderId) {
|
Order order = orderService.getById(orderId);
|
List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
|
.eq(OrderGood::getOrderId, order.getId()));
|
AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
|
if(null == appUser){
|
return;
|
}
|
//核销门店分佣金额
|
BigDecimal hxmd_price = BigDecimal.ZERO;
|
//核销门店分佣积分
|
Integer hxmd_point = 0;
|
//技师分佣积分
|
Integer js_point = 0;
|
for (OrderGood orderGood : orderGoods) {
|
//核销门店获取服务费
|
hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges());
|
//核销门店可获得积分
|
hxmd_point += orderGood.getServuceShopPoints();
|
//技师分佣金额
|
if(order.getOrderType() == 1){
|
js_point += orderGood.getTechnicianPoints();
|
}
|
}
|
|
//核销门店
|
Shop shop = shopClient.getShopById(order.getShopId()).getData();
|
AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId());
|
if(null == shopAppUser){
|
log.error("核销门店用户查询失败");
|
}
|
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));
|
|
//添加临时分佣数据
|
ShopGiveawayTemporary shopGiveawayTemporary = new ShopGiveawayTemporary();
|
shopGiveawayTemporary.setShopId(shop.getId());
|
shopGiveawayTemporary.setOrderId(order.getId());
|
shopGiveawayTemporary.setGiveawayAllMoney(hxmd_price);
|
shopGiveawayTemporary.setServerGiveawayMoney(hxmd_price);
|
shopGiveawayTemporary.setCanWithdrawMoney(hxmd_price);
|
shopGiveawayTemporary.setBalance(hxmd_price);
|
shopGiveawayTemporaryClient.saveShopGiveawayTemporary(shopGiveawayTemporary);
|
}
|
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);
|
|
//添加临时分佣数据
|
AppUserGiveawayTemporary appUserGiveawayTemporary = new AppUserGiveawayTemporary();
|
appUserGiveawayTemporary.setOrderId(order.getId());
|
appUserGiveawayTemporary.setAppUserId(shopAppUser.getId());
|
appUserGiveawayTemporary.setLavePoint(hxmd_point);
|
appUserGiveawayTemporary.setAvailablePoint(earnPoint1);
|
appUserGiveawayTemporary.setTotalAvailablePoint(earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getShopPointGift()){
|
appUserGiveawayTemporary.setTransferablePoint(earnPoint1);
|
}
|
appUserGiveawayTemporary.setTotalPoint(hxmd_point);
|
appUserGiveawayTemporary.setShopAchievementPoint(hxmd_point);
|
appUserGiveawayTemporaryClient.saveAppUserGiveawayTemporary(appUserGiveawayTemporary);
|
|
|
//门店返佣
|
// shop.setShopAllPoint(shop.getShopAllPoint() + hxmd_point);
|
// shop.setServerPoint(shop.getServerPoint() + hxmd_point);
|
// shop.setLavePoint(shop.getLavePoint() + hxmd_point);
|
|
//添加临时分佣数据
|
ShopGiveawayTemporary shopGiveawayTemporary = new ShopGiveawayTemporary();
|
shopGiveawayTemporary.setShopId(shop.getId());
|
shopGiveawayTemporary.setOrderId(order.getId());
|
shopGiveawayTemporary.setShopAllPoint(hxmd_point);
|
shopGiveawayTemporary.setServerPoint(hxmd_point);
|
shopGiveawayTemporary.setLavePoint(hxmd_point);
|
shopGiveawayTemporaryClient.saveShopGiveawayTemporary(shopGiveawayTemporary);
|
}
|
// appUserClient.editAppUserById(shopAppUser);
|
// shopClient.updateShop(shop);
|
//添加明细记录
|
if(hxmd_price.compareTo(BigDecimal.ZERO) > 0){
|
ShopBalanceStatementCopy shopBalanceStatementCopy = new ShopBalanceStatementCopy();
|
shopBalanceStatementCopy.setShopId(shop.getId());
|
shopBalanceStatementCopy.setType(3);
|
shopBalanceStatementCopy.setVariableAmount(hxmd_price);
|
shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
|
shopBalanceStatementCopy.setCreateUserId(order.getAppUserId());
|
shopBalanceStatementCopy.setObjectId(order.getId());
|
shopBalanceStatementCopy.setExtension(order.getOrderNumber());
|
shopBalanceStatementCopy.setChangeDirection(1);
|
shopBalanceStatementClient.saveShopBalanceStatementCopy(shopBalanceStatementCopy);
|
}
|
//添加积分明细
|
if(hxmd_point > 0){
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(8);
|
userPointCopy.setVariablePoint(hxmd_point);
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(shopAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointCopy.setChangeDirection(1);
|
userPointClient.saveUserPointCopy(userPointCopy);
|
//变更等级
|
// appUserClient.vipUpgrade(shopAppUser.getId());
|
}
|
|
if(hxmd_point > 0){
|
ShopPointCopy shopPointCopy = new ShopPointCopy();
|
shopPointCopy.setShopId(shop.getId());
|
shopPointCopy.setType(1);
|
shopPointCopy.setVariablePoint(hxmd_point);
|
shopPointCopy.setCreateTime(LocalDateTime.now());
|
shopPointCopy.setCreateUserId(order.getAppUserId());
|
shopPointCopy.setObjectId(order.getId());
|
shopPointCopy.setOrderNum(order.getOrderNumber());
|
shopPointCopy.setChangeDirection(1);
|
shopPointClient.saveShopPointCopy(shopPointCopy);
|
}
|
}
|
|
//技师服务积分
|
if(order.getOrderType() == 1){
|
Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData();
|
if(null == technician){
|
log.error("技师查询失败");
|
}
|
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);
|
|
//添加临时分佣数据
|
AppUserGiveawayTemporary appUserGiveawayTemporary = new AppUserGiveawayTemporary();
|
appUserGiveawayTemporary.setOrderId(order.getId());
|
appUserGiveawayTemporary.setAppUserId(technicianAppUser.getId());
|
appUserGiveawayTemporary.setLavePoint(js_point);
|
appUserGiveawayTemporary.setAvailablePoint(earnPoint1);
|
appUserGiveawayTemporary.setTotalAvailablePoint(earnPoint1);
|
if(null != pointSetting && 1 == pointSetting.getPersonPointGift()){
|
appUserGiveawayTemporary.setTransferablePoint(earnPoint1);
|
}
|
appUserGiveawayTemporary.setTotalPoint(js_point);
|
appUserGiveawayTemporary.setTotalPerformancePoint(js_point);
|
appUserGiveawayTemporaryClient.saveAppUserGiveawayTemporary(appUserGiveawayTemporary);
|
|
}
|
// appUserClient.editAppUserById(technicianAppUser);
|
//添加积分明细
|
if(js_point > 0){
|
UserPointCopy userPointCopy = new UserPointCopy();
|
userPointCopy.setType(10);
|
userPointCopy.setVariablePoint(js_point);
|
userPointCopy.setCreateTime(LocalDateTime.now());
|
userPointCopy.setAppUserId(technicianAppUser.getId());
|
userPointCopy.setObjectId(order.getId());
|
userPointCopy.setExtention(order.getOrderNumber());
|
userPointCopy.setChangeDirection(1);
|
userPointClient.saveUserPointCopy(userPointCopy);
|
//变更等级
|
// appUserClient.vipUpgrade(technicianAppUser.getId());
|
}
|
}
|
|
}
|
}
|
|
order.setIsCommission(2);
|
orderService.updateById(order);
|
}
|
|
|
|
}
|