| | |
| | | package com.ruoyi.order.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient; |
| | | import com.ruoyi.account.api.feignClient.UserPointClient; |
| | | import com.ruoyi.account.api.model.AppUser; |
| | | import com.ruoyi.account.api.model.BalanceChangeRecord; |
| | | import com.ruoyi.account.api.model.UserPoint; |
| | | 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.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 java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | public class CommissionServiceImpl implements CommissionService { |
| | | @Resource |
| | | private OrderService orderService; |
| | |
| | | if(collect.size() == 0){ |
| | | return; |
| | | } |
| | | |
| | | |
| | | for (Order order : list) { |
| | | List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>() |
| | | .eq(OrderGood::getOrderId, order.getId())); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //核销门店获取服务费 |
| | | hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges()); |
| | | //核销门店可获得积分 |
| | |
| | | appUserClient.vipUpgrade(superiorLeader.getId()); |
| | | } |
| | | } |
| | | |
| | | |
| | | //核销门店 |
| | | Shop shop = shopClient.getShopById(order.getShopId()).getData(); |
| | | AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId()); |
| | |
| | | //变更等级 |
| | | appUserClient.vipUpgrade(shopAppUser.getId()); |
| | | } |
| | | |
| | | |
| | | if(!shop.getLavePoint().equals(shopLavePoint)){ |
| | | ShopPoint shopPoint = new ShopPoint(); |
| | | shopPoint.setShopId(shop.getId()); |
| | |
| | | shopPointClient.saveShopPoint(shopPoint); |
| | | } |
| | | } |
| | | |
| | | |
| | | //技师服务积分 |
| | | if(order.getOrderType() == 1){ |
| | | Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData(); |
| | |
| | | appUserClient.vipUpgrade(technicianAppUser.getId()); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | //服务商分佣 |
| | | Shop shop1 = shopClient.getServiceProvider(appUser.getId()).getData(); |
| | | if(null != shop1){ |
| | |
| | | //变更等级 |
| | | appUserClient.vipUpgrade(bdShopAppUser.getId()); |
| | | } |
| | | |
| | | |
| | | if(!shop1.getLavePoint().equals(shopLavePoint)){ |
| | | ShopPoint shopPoint = new ShopPoint(); |
| | | shopPoint.setShopId(shop1.getId()); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //高级服务商 |
| | | Shop shop2 = shopClient.getSuperiorServiceProvider(order.getAppUserId()).getData(); |
| | | if(null != shop2){ |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |