package com.ruoyi.other.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.account.api.feignClient.AppUserClient;
|
import com.ruoyi.account.api.model.AppUser;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.other.api.domain.Shop;
|
import com.ruoyi.other.mapper.ShopPointMapper;
|
import com.ruoyi.other.api.domain.ShopPoint;
|
import com.ruoyi.other.service.ShopPointService;
|
import com.ruoyi.other.service.ShopService;
|
import com.ruoyi.other.vo.ShopPointStatistics;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-20
|
*/
|
@Service
|
public class ShopPointServiceImpl extends ServiceImpl<ShopPointMapper, ShopPoint> implements ShopPointService {
|
@Resource
|
private ShopPointMapper shopPointMapper;
|
@Resource
|
private ShopService shopService;
|
|
@Override
|
public ShopPointStatistics statistics(IPage<ShopPoint> page, ShopPoint shopPoint) {
|
|
String shopName = shopPoint.getShopName();
|
String phone = shopPoint.getPhone();
|
String shopLeaderName = shopPoint.getShopLeaderName();
|
List<Integer> shopIds = shopService.listObjs(new LambdaQueryWrapper<Shop>()
|
.select(Shop::getId)
|
.like(StringUtils.isNotEmpty(shopName), Shop::getName, shopName)
|
.like(StringUtils.isNotEmpty(phone), Shop::getPhone, phone)
|
.like(StringUtils.isNotEmpty(shopLeaderName), Shop::getShopManager, shopLeaderName))
|
.stream().map(o -> (Integer) o).collect(Collectors.toList());
|
if (CollectionUtils.isEmpty(shopIds)) {
|
return new ShopPointStatistics();
|
}
|
|
shopPoint.setShopIds(shopIds);
|
|
|
ShopPointStatistics shopPointStatistics = new ShopPointStatistics();
|
List<ShopPoint> latestChangeByType = shopPointMapper.findLatestChangeByType(shopPoint);
|
for (ShopPoint sp : latestChangeByType) {
|
switch (sp.getType()) {
|
case 1:
|
shopPointStatistics.setShopPoint(sp.getVariablePoint());
|
break;
|
case 2:
|
shopPointStatistics.setShopCommissionPoint(sp.getVariablePoint());
|
break;
|
case 3:
|
shopPointStatistics.setSubShopCommissionPoint(sp.getVariablePoint());
|
break;
|
}
|
}
|
shopPointStatistics.setTotalPoint(shopPointStatistics.getShopPoint() + shopPointStatistics.getShopCommissionPoint() + shopPointStatistics.getSubShopCommissionPoint());
|
|
|
boolean condition = shopPoint.getStartTime() != null && shopPoint.getEndTime() != null;
|
IPage<ShopPoint> shopPointIPage = page(page, new LambdaQueryWrapper<ShopPoint>()
|
.in(!CollectionUtils.isEmpty(shopPoint.getShopIds()), ShopPoint::getShopId, shopPoint.getShopIds())
|
.eq(shopPoint.getType() != null, ShopPoint::getType, shopPoint.getType())
|
.between(condition, ShopPoint::getCreateTime, shopPoint.getStartTime(), shopPoint.getEndTime())
|
.orderByDesc(ShopPoint::getCreateTime));
|
List<ShopPoint> shopPoints = shopPointIPage.getRecords();
|
for (ShopPoint sp : shopPoints) {
|
Shop shop = shopService.getById(sp.getShopId());
|
sp.setShopName(shop.getName());
|
sp.setShopLeaderName(shop.getShopManager());
|
sp.setPhone(shop.getPhone());
|
}
|
shopPointStatistics.setShopPointIPage(shopPointIPage);
|
return shopPointStatistics;
|
}
|
}
|