ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java
@@ -125,4 +125,6 @@ private String userId; @TableField(exist = false) private String uid; @TableField(exist = false) private Integer siteId; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -623,54 +623,19 @@ @PostMapping(value = "/pay/order/refund/list") @ApiOperation(value = "列表", tags = {"管理后台-支付订单-退款订单"}) public R<PageInfo<TChargingOrderRefund>> refundList(@RequestBody ChargingRefundDto chargingRefundDto) { Integer pageCurr = chargingRefundDto.getPageCurr(); Integer pageSize = chargingRefundDto.getPageSize(); // R<PageInfo<TChargingOrderRefund>> refundList = chargingOrderService.getRefundList(chargingRefundDto); chargingRefundDto.setPageCurr(1); chargingRefundDto.setPageSize(199999999); R<PageInfo<TChargingOrderRefund>> refundList1 = chargingOrderService.getRefundList(chargingRefundDto); Long userId = tokenService.getLoginUser().getUserid(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); SysUser sysUser = sysUserClient.getSysUser(userId).getData(); if (sysUser != null && Integer.valueOf(2).equals(sysUser.getRoleType())) { List<Integer> siteIds = new ArrayList<>(); List<GetSiteListDTO> sites = siteClient.getSiteListByUserId(userId).getData(); if (sites != null) { for (GetSiteListDTO site : sites) { siteIds.add(site.getId()); } } if (siteIds.isEmpty()){ siteIds.add(-1); chargingRefundDto.setSiteIds(siteIds.isEmpty() ? Collections.singletonList(-1) : siteIds); } // 查询当前登陆人按钮权限 SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); List<TChargingOrderRefund> tChargingOrderRefunds = new ArrayList<>(); for (TChargingOrderRefund record : refundList1.getData().getRecords()) { if (roleType==1){ tChargingOrderRefunds.add(record); continue; } if (record.getType()!=1){ tChargingOrderRefunds.add(record); } TChargingOrder byId = chargingOrderService.getById(record.getOrderId()); record.setUid(record.getId().toString()); if (byId==null){ continue; } if (roleType==2&&siteIds.contains(byId.getSiteId())){ tChargingOrderRefunds.add(record); } } PageInfo<TChargingOrderRefund> data = refundList1.getData(); List<TChargingOrderRefund> res1 = testing4(tChargingOrderRefunds.size(), pageCurr, pageSize, tChargingOrderRefunds); data.setTotal(tChargingOrderRefunds.size()); data.setRecords(res1); return refundList1; return chargingOrderService.getRefundList(chargingRefundDto); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingRefundDto.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class ChargingRefundDto extends BasePage { @ApiModelProperty("订单编号") @@ -14,4 +16,6 @@ private String refundCode; @ApiModelProperty("是否特殊退款处理") private Boolean specialRefund; @ApiModelProperty(value = "可查看站点ID", hidden = true) private List<Integer> siteIds; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -3085,6 +3085,9 @@ public R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto) { PageInfo<TChargingOrderRefund> pageInfo = new PageInfo<>(chargingRefundDto.getPageCurr(), chargingRefundDto.getPageSize()); List<TChargingOrderRefund> list = this.baseMapper.getRefundList(pageInfo, chargingRefundDto); for (TChargingOrderRefund refund : list) { refund.setUid(refund.getType() + "-" + refund.getId()); } pageInfo.setRecords(list); return R.ok(pageInfo); ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -300,6 +300,7 @@ co.create_time as pay_time, co.id as order_id, co.app_user_id as user_id, co.site_id as site_id, co.pay_method as pay_method, 1 as type FROM t_charging_order_refund re @@ -324,6 +325,7 @@ so.create_time as pay_time, so.id as order_id, so.app_user_id as user_id, null as site_id, 3 as pay_method, 2 as type FROM t_shopping_order_refund re @@ -348,6 +350,7 @@ vo.create_time as pay_time, vo.id as order_id, vo.app_user_id as user_id, null as site_id, 3 as pay_method, 3 as type FROM t_vip_order_refund vr @@ -366,6 +369,13 @@ <if test="data.specialRefund != null and data.specialRefund"> AND o.refund_title = '特殊退款处理' </if> <if test="data.siteIds != null and data.siteIds.size() > 0"> AND (o.type != 1 OR o.site_id IN <foreach collection="data.siteIds" item="siteId" open="(" separator="," close=")"> #{siteId} </foreach> ) </if> </where> order by o.refund_time desc ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/PayOrderQueryPerformanceMapperTest.java
@@ -12,6 +12,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; class PayOrderQueryPerformanceMapperTest { @@ -35,6 +36,25 @@ assertFalse(payOrderQuery.contains("t_vip_order_refund")); } @Test void refundListAppliesPartnerSiteScopeInsidePagedQuery() throws IOException { InputStream input = getClass().getClassLoader() .getResourceAsStream("mapper/order/TChargingOrderMapper.xml"); assertNotNull(input); String mapper; try (BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8))) { mapper = reader.lines().collect(Collectors.joining("\n")); } String refundQuery = mapper.substring( mapper.indexOf("<select id=\"getRefundList\""), mapper.indexOf("<select id=\"chargingOrderGroup\"")); assertTrue(refundQuery.contains("data.siteIds")); assertTrue(refundQuery.contains("o.site_id IN")); assertEquals(3, countOccurrences(refundQuery, "as site_id")); } private int countOccurrences(String text, String target) { int count = 0; int index = 0;