longz
2026-07-21 9067a5c2911e29abb353469884737c38ddf7ba73
fix: 限制合作商发票站点范围
3个文件已修改
55 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java
@@ -47,6 +47,9 @@
    @ApiModelProperty(value = "站点id")
    private Integer siteId;
    @ApiModelProperty(value = "当前账号可查看的站点id,前端忽略")
    private List<Integer> siteIds;
    @ApiModelProperty(value = "合作商id")
    private Integer partnerId;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.account.api.model.TAppUserCar;
import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.common.core.utils.StringUtils;
@@ -30,6 +31,8 @@
import com.ruoyi.other.api.feignClient.CouponClient;
import com.ruoyi.other.api.feignClient.GoodsClient;
import com.ruoyi.other.api.feignClient.InvoiceTypeClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.domain.SysUser;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
@@ -87,6 +90,9 @@
    private CouponClient couponClient;
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private SysUserClient sysUserClient;
    
    @Resource
    private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
@@ -375,6 +381,7 @@
    @Override
    public PageInfo<TOrderInvoiceVO> pageList(TOrderInvoiceQuery query) {
        applyPartnerSiteScope(query);
        List<TAppUser> tAppUsers = new ArrayList<>();
        // 查询申请用户
        if (org.springframework.util.StringUtils.hasLength(query.getUserPhone())){
@@ -446,6 +453,7 @@
    @Override
    public Map<String, Integer> statusCount(TOrderInvoiceQuery query) {
        applyPartnerSiteScope(query);
        Map<String, Integer> map = new HashMap<>();
        List<TAppUser> tAppUsers = new ArrayList<>();
@@ -466,6 +474,7 @@
    @Override
    public List<TOrderInvoiceVO> export(TOrderInvoiceQuery query) {
        applyPartnerSiteScope(query);
        List<TAppUser> tAppUsers = new ArrayList<>();
        // 查询申请用户
        if (org.springframework.util.StringUtils.hasLength(query.getUserPhone())){
@@ -495,6 +504,31 @@
        return list;
    }
    private void applyPartnerSiteScope(TOrderInvoiceQuery query) {
        if (query == null) {
            return;
        }
        Long userId = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userId).getData();
        if (sysUser == null || !Integer.valueOf(2).equals(sysUser.getRoleType())) {
            return;
        }
        List<GetSiteListDTO> sites = siteClient.getSiteListByUserId(userId).getData();
        List<Integer> siteIds = sites == null ? new ArrayList<>() : sites.stream()
                .map(GetSiteListDTO::getId)
                .filter(Objects::nonNull)
                .collect(Collectors.toList());
        if (query.getSiteId() != null) {
            siteIds = siteIds.contains(query.getSiteId())
                    ? Collections.singletonList(query.getSiteId())
                    : Collections.singletonList(-1);
        }
        if (siteIds.isEmpty()) {
            siteIds = Collections.singletonList(-1);
        }
        query.setSiteIds(siteIds);
    }
    private void fillInvoiceDetailAmount(TOrderInvoiceVO invoice, List<TOrderInvoiceDetail> details) {
        List<TOrderInvoiceDetail> currentDetails = details.stream()
                .filter(t -> t.getOrderInvoiceId().equals(invoice.getId()))
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
@@ -80,6 +80,12 @@
            <if test="query.siteId != null">
                AND toi.site_id = #{query.siteId}
            </if>
            <if test="query.siteIds != null and query.siteIds.size() > 0">
                AND toi.site_id IN
                <foreach collection="query.siteIds" close=")" open="(" item="siteId" separator=",">
                    #{siteId}
                </foreach>
            </if>
            <if test="query.partnerId != null">
                AND toi.partner_id = #{query.partnerId}
            </if>
@@ -131,6 +137,12 @@
            </if>
            <if test="query.siteId != null">
                AND toi.site_id = #{query.siteId}
            </if>
            <if test="query.siteIds != null and query.siteIds.size() > 0">
                AND toi.site_id IN
                <foreach collection="query.siteIds" close=")" open="(" item="siteId" separator=",">
                    #{siteId}
                </foreach>
            </if>
            <if test="query.partnerId != null">
                AND toi.partner_id = #{query.partnerId}
@@ -185,6 +197,12 @@
            <if test="query.siteId != null">
                AND toi.site_id = #{query.siteId}
            </if>
            <if test="query.siteIds != null and query.siteIds.size() > 0">
                AND toi.site_id IN
                <foreach collection="query.siteIds" close=")" open="(" item="siteId" separator=",">
                    #{siteId}
                </foreach>
            </if>
            <if test="query.partnerId != null">
                AND toi.partner_id = #{query.partnerId}
            </if>