jiangqs
2023-06-30 cbc564a7088503ad8cc7af4e1d2ba417d061e615
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
@@ -43,8 +44,98 @@
        });
    }
    //更新商户统计实现
    private void handleShopTotal(ShopTotalChangeDto shopTotalChangeDto){
        ShopTotal shopTotal = this.getById(shopTotalChangeDto.getShopId());
        //订单变化
        BigDecimal payMoney = BigDecimal.ZERO;
        Boolean haveOrder = false;
        if(shopTotalChangeDto.getCycleMoney()!=null){
            shopTotal.setTotalCycleMoney(shopTotal.getTotalCycleMoney().add(shopTotalChangeDto.getCycleMoney()));
            payMoney = payMoney.add(shopTotalChangeDto.getCycleMoney());
            shopTotal.setTotalCycleOrder(shopTotal.getTotalCycleOrder()+1);
            haveOrder = true;
        }
        if(shopTotalChangeDto.getExperienceMoney()!=null){
            shopTotal.setTotalExperienceMoney(shopTotal.getTotalExperienceMoney().add(shopTotalChangeDto.getExperienceMoney()));
            payMoney = payMoney.add(shopTotalChangeDto.getExperienceMoney());
            shopTotal.setTotalExperienceOrder(shopTotal.getTotalExperienceOrder()+1);
            haveOrder = true;
        }
        if(shopTotalChangeDto.getServiceMoney()!=null){
            shopTotal.setTotalServiceMoney(shopTotal.getTotalServiceMoney().add(shopTotalChangeDto.getServiceMoney()));
            payMoney = payMoney.add(shopTotalChangeDto.getServiceMoney());
            shopTotal.setTotalServiceOrder(shopTotal.getTotalServiceOrder()+1);
            haveOrder = true;
        }
        if(shopTotalChangeDto.getGoodsMoney()!=null){
            shopTotal.setTotalGoodsMoney(shopTotal.getTotalGoodsMoney().add(shopTotalChangeDto.getGoodsMoney()));
            payMoney = payMoney.add(shopTotalChangeDto.getGoodsMoney());
            shopTotal.setTotalGoodsOrder(shopTotal.getTotalGoodsOrder()+1);
            haveOrder = true;
        }
        if(haveOrder){
            shopTotal.setTotalOrderMoney(shopTotal.getTotalOrderMoney().add(payMoney));
            shopTotal.setTotalOrder(shopTotal.getTotalOrder()+1);
        }
        //活动变化
        if(shopTotalChangeDto.getActivityCount()!=null){
            shopTotal.setTotalActivityCount(shopTotal.getTotalActivityCount()+shopTotalChangeDto.getActivityCount());
        }
        //服务变化
        Integer serviceCount = 0;
        Boolean haveService = false;
        if(shopTotalChangeDto.getTypeCycleService()!=null){
            if(shopTotalChangeDto.getTypeCycleService()==2){
                shopTotal.setUsedCycleService(shopTotal.getUsedCycleService()+shopTotalChangeDto.getCycleService());
                shopTotal.setUseableCycleService(shopTotal.getUseableCycleService()-shopTotalChangeDto.getCycleService());
                shopTotal.setUseableCyclePerson(shopTotal.getUseableCyclePerson()-shopTotalChangeDto.getCyclePerson());
                serviceCount = serviceCount - shopTotalChangeDto.getCycleService();
            }else{
                shopTotal.setTotalCycleService(shopTotal.getTotalCycleService()+shopTotalChangeDto.getCycleService());
                shopTotal.setUseableCycleService(shopTotal.getUseableCycleService()+shopTotalChangeDto.getCycleService());
                shopTotal.setTotalCyclePerson(shopTotal.getTotalCyclePerson()+shopTotalChangeDto.getCyclePerson());
                serviceCount = serviceCount + shopTotalChangeDto.getCycleService();
            }
            haveService = true;
        }
        if(shopTotalChangeDto.getTypeServiceService()!=null){
            if(shopTotalChangeDto.getTypeServiceService()==2){
                shopTotal.setUsedServiceService(shopTotal.getUsedServiceService()+shopTotalChangeDto.getServiceService());
                shopTotal.setUseableServiceService(shopTotal.getUseableServiceService()-shopTotalChangeDto.getServiceService());
                shopTotal.setUseableServicePerson(shopTotal.getUseableServicePerson()-shopTotalChangeDto.getServicePerson());
                serviceCount = serviceCount - shopTotalChangeDto.getServiceService();
            }else{
                shopTotal.setTotalServiceService(shopTotal.getTotalServiceService()+shopTotalChangeDto.getServiceService());
                shopTotal.setUseableServiceService(shopTotal.getUseableServiceService()+shopTotalChangeDto.getServiceService());
                shopTotal.setTotalServicePerson(shopTotal.getTotalServicePerson()+shopTotalChangeDto.getServicePerson());
                serviceCount = serviceCount + shopTotalChangeDto.getServiceService();
            }
            haveService = true;
        }
        if(shopTotalChangeDto.getTypeExperienceService()!=null){
            if(shopTotalChangeDto.getTypeExperienceService()==2){
                shopTotal.setUsedExperienceService(shopTotal.getUsedExperienceService()+shopTotalChangeDto.getExperienceService());
                shopTotal.setUseableExperienceService(shopTotal.getUseableExperienceService()-shopTotalChangeDto.getExperienceService());
                shopTotal.setUseableExperiencePerson(shopTotal.getUseableExperiencePerson()-shopTotalChangeDto.getExperiencePerson());
                serviceCount = serviceCount - shopTotalChangeDto.getExperienceService();
            }else{
                shopTotal.setTotalExperienceService(shopTotal.getTotalExperienceService()+shopTotalChangeDto.getExperienceService());
                shopTotal.setUseableExperienceService(shopTotal.getUseableExperienceService()+shopTotalChangeDto.getExperienceService());
                shopTotal.setTotalExperiencePerson(shopTotal.getTotalExperiencePerson()+shopTotalChangeDto.getExperiencePerson());
                serviceCount = serviceCount + shopTotalChangeDto.getExperienceService();
            }
            haveService = true;
        }
        if(haveService){
            if(serviceCount<0){
                shopTotal.setUsedServiceCount(shopTotal.getUsedServiceCount()+serviceCount);
                shopTotal.setUseableServiceCount(shopTotal.getUsedServiceCount()+serviceCount);
            }else{
                shopTotal.setTotalServiceCount(shopTotal.getTotalServiceCount()+serviceCount);
                shopTotal.setUseableServiceCount(shopTotal.getUsedServiceCount()+serviceCount);
            }
        }
        this.saveOrUpdate(shopTotal);
    }
}