longz
2026-07-21 b3bf3ffc39e813adc9aa4f533abb9edc4cee6e50
fix: handle next P2 bug batch
6个文件已修改
125 ■■■■■ 已修改文件
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -548,11 +548,13 @@
                data1.addAll(data);
            }
            Set<Integer> siteIds = new HashSet<>(data1);
            List<Site> data = siteClient.getSiteByIds(siteIds.stream().collect(Collectors.toList())).getData();
            if (null != data) {
                List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList());
                sysUser.setSiteNames(siteNames);
                sysUser.setSiteIds(data.stream().map(Site::getId).collect(Collectors.toList()));
            if (!applyAllSitePermission(sysUser, siteIds)) {
                List<Site> data = siteClient.getSiteByIds(new ArrayList<>(siteIds)).getData();
                if (null != data) {
                    List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList());
                    sysUser.setSiteNames(siteNames);
                    sysUser.setSiteIds(data.stream().map(Site::getId).collect(Collectors.toList()));
                }
            }
            List<String> roleNames = new ArrayList<>();
            for (SysUserRole sysUserRole : list1) {
@@ -565,6 +567,15 @@
        }
        return pageInfo.setRecords(list);
    }
    static boolean applyAllSitePermission(SysUser sysUser, Set<Integer> siteIds) {
        if (!siteIds.contains(0)) {
            return false;
        }
        sysUser.setSiteNames(Collections.singletonList("全部"));
        sysUser.setSiteIds(Collections.singletonList(0));
        return true;
    }
    
    @Override
    public PageInfo<SysUser> getAllList(PageInfo<SysUser> pageInfo, List<Integer> collect) {
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
@@ -235,15 +235,7 @@
                throw new RuntimeException(r.getMsg());
            }
        }else{
            user.setPhonenumber(partner.getPhoneOne());
            user.setUserName(partner.getAccount());
            user.setNickName(partner.getName());
            user.setAvatar(partner.getLogoUrl());
            if(StringUtils.isNotEmpty(partner.getPassword())){
                user.setPassword(partner.getPassword());
                user.setPassWordUpdate(new Date());
            }
            user.setRoleId(partner.getRoleId().longValue());
            prepareExistingUserForUpdate(user, partner);
            R r = sysUserClient.updateSysUser(user);
            if(200 != r.getCode()){
                throw new RuntimeException(r.getMsg());
@@ -256,6 +248,14 @@
        return AjaxResult.success();
    }
    void prepareExistingUserForUpdate(SysUser user, Partner partner) {
        user.setPhonenumber(partner.getPhoneOne());
        user.setUserName(partner.getAccount());
        user.setNickName(partner.getName());
        user.setAvatar(partner.getLogoUrl());
        user.setRoleId(partner.getRoleId().longValue());
    }
    void updateShareRatios(Partner partner) {
        this.update(new UpdateWrapper<Partner>()
                .eq("id", partner.getId())
ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java
@@ -2,6 +2,7 @@
import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.mapper.PartnerMapper;
import com.ruoyi.system.api.domain.SysUser;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.junit.jupiter.api.Test;
@@ -21,6 +22,25 @@
class PartnerServiceImplTest {
    @Test
    void editingPartnerDoesNotReplaceExistingLoginPasswordHash() {
        PartnerServiceImpl service = new PartnerServiceImpl();
        Partner partner = new Partner();
        partner.setAccount("partner-user");
        partner.setName("合作商A");
        partner.setPhoneOne("13800000000");
        partner.setLogoUrl("logo.jpg");
        partner.setRoleId(9);
        SysUser user = new SysUser();
        user.setPassword("$2a$10$existing-bcrypt-hash");
        service.prepareExistingUserForUpdate(user, partner);
        assertEquals("$2a$10$existing-bcrypt-hash", user.getPassword());
        assertEquals("partner-user", user.getUserName());
        assertEquals(Long.valueOf(9), user.getRoleId());
    }
    @Test
    void acceptsShareRatioWithoutIcbcSubMerchantConfiguration() {
        Partner partner = new Partner();
        partner.setId(1);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -282,9 +282,33 @@
        export.setOrderSource(formatOrderSource(dto.getOrderSource()));
        export.setStartTime(dto.getStartTime() == null ? null : DateUtils.localDateTimeToString(dto.getStartTime()));
        export.setEndTime(dto.getEndTime() == null ? null : DateUtils.localDateTimeToString(dto.getEndTime()));
        export.setLicensePlate(dto.getLicensePlate());
        export.setChargingCapacity(dto.getChargingCapacity());
        export.setElectrovalence(dto.getElectrovalence());
        export.setServiceCharge(dto.getServiceCharge());
        export.setEndMode(formatChargingEndMode(dto.getEndMode()));
        export.setPeriodCount(dto.getPeriodCount());
        return export;
    }
    private String formatChargingEndMode(Integer endMode) {
        if (endMode == null) {
            return "-";
        }
        switch (endMode) {
            case 0:
                return "异常终止";
            case 1:
                return "主动终止";
            case 2:
                return "满电终止";
            case 3:
                return "费用不足终止";
            default:
                return "-";
        }
    }
    private String formatEnterpriseOrderType(Integer type) {
        if (type == null) {
            return "-";
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java
@@ -59,4 +59,22 @@
    @Excel(name = "最后时间", width = 30)
    private String endTime;
    @Excel(name = "车牌号", width = 20)
    private String licensePlate;
    @Excel(name = "累计充电量", width = 20, numFormat = "0.0000")
    private BigDecimal chargingCapacity;
    @Excel(name = "累计电费", width = 20, numFormat = "0.0000")
    private BigDecimal electrovalence;
    @Excel(name = "累计服务费", width = 20, numFormat = "0.0000")
    private BigDecimal serviceCharge;
    @Excel(name = "结束原因", width = 20)
    private String endMode;
    @Excel(name = "时段数", width = 15)
    private Integer periodCount;
}
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java
@@ -4,11 +4,14 @@
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.SixChargingDto;
import com.ruoyi.order.dto.EnterpriseChargingDetailVO;
import com.ruoyi.order.export.EnterpriseChargingDetailExport;
import com.ruoyi.order.service.TChargingOrderService;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import java.time.LocalDate;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
@@ -23,6 +26,27 @@
class TChargingOrderControllerTest {
    @Test
    void enterpriseChargingDetailExportContainsVisibleDetailColumns() {
        EnterpriseChargingDetailVO detail = new EnterpriseChargingDetailVO();
        detail.setLicensePlate("川JD20960");
        detail.setChargingCapacity(new BigDecimal("40.693"));
        detail.setElectrovalence(new BigDecimal("43.0857"));
        detail.setServiceCharge(new BigDecimal("16.2772"));
        detail.setEndMode(0);
        detail.setPeriodCount(1);
        EnterpriseChargingDetailExport export = ReflectionTestUtils.invokeMethod(
                new TChargingOrderController(), "buildEnterpriseChargingDetailExport", detail);
        assertEquals("川JD20960", export.getLicensePlate());
        assertEquals(new BigDecimal("40.693"), export.getChargingCapacity());
        assertEquals(new BigDecimal("43.0857"), export.getElectrovalence());
        assertEquals(new BigDecimal("16.2772"), export.getServiceCharge());
        assertEquals("异常终止", export.getEndMode());
        assertEquals(1, export.getPeriodCount());
    }
    @Test
    void latestAdjacentMonthDataMovesTheSixMonthWindowForward() {
        SixChargingDto june = new SixChargingDto();
        june.setMonth("06");