|
@@ -75,7 +75,9 @@ import com.sckw.stream.model.SckwMessage;
|
|
|
import com.sckw.stream.model.UserInfo;
|
|
import com.sckw.stream.model.UserInfo;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.RemoteUserService;
|
|
import com.sckw.system.api.RemoteUserService;
|
|
|
|
|
+import com.sckw.system.api.feign.DataPermissionFeignService;
|
|
|
import com.sckw.system.api.model.dto.req.ActualDisPatchDto;
|
|
import com.sckw.system.api.model.dto.req.ActualDisPatchDto;
|
|
|
|
|
+import com.sckw.system.api.model.dto.req.DataPermissionFilterReqDto;
|
|
|
import com.sckw.system.api.model.dto.res.*;
|
|
import com.sckw.system.api.model.dto.res.*;
|
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
import com.sckw.transport.api.model.param.AddLogisticOrderParam;
|
|
import com.sckw.transport.api.model.param.AddLogisticOrderParam;
|
|
@@ -83,6 +85,7 @@ import com.sckw.transport.api.model.param.LogisticInfo;
|
|
|
import com.sckw.transport.api.model.param.OrderFinishParam;
|
|
import com.sckw.transport.api.model.param.OrderFinishParam;
|
|
|
import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
|
|
import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
|
|
|
import com.sckw.transport.api.model.vo.LogisticContractVo;
|
|
import com.sckw.transport.api.model.vo.LogisticContractVo;
|
|
|
|
|
+import jakarta.annotation.Resource;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
@@ -151,6 +154,8 @@ public class KwoTradeOrderService {
|
|
|
private final KwoTradeOrderAmountService tradeOrderAmountService;
|
|
private final KwoTradeOrderAmountService tradeOrderAmountService;
|
|
|
private final KwoTradeOrderTransportService kwoTradeOrderTransportService;
|
|
private final KwoTradeOrderTransportService kwoTradeOrderTransportService;
|
|
|
private final KwoTradeOrderUnitRepository kwoTradeOrderUnitRepository;
|
|
private final KwoTradeOrderUnitRepository kwoTradeOrderUnitRepository;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private DataPermissionFeignService dataPermissionFeignService;
|
|
|
@Value("${url.order.list.valet.pc}")
|
|
@Value("${url.order.list.valet.pc}")
|
|
|
private String pcValetListUrl;
|
|
private String pcValetListUrl;
|
|
|
|
|
|
|
@@ -1591,12 +1596,68 @@ public class KwoTradeOrderService {
|
|
|
*/
|
|
*/
|
|
|
public PageResult tradeOrderSelect(TradeOrderListSelectParam params) {
|
|
public PageResult tradeOrderSelect(TradeOrderListSelectParam params) {
|
|
|
TradeOrderListSelectDTO dto = buildSelectParam(params);
|
|
TradeOrderListSelectDTO dto = buildSelectParam(params);
|
|
|
|
|
+ //数据权限过滤
|
|
|
|
|
+ applyTradeOrderDataPermission(dto);
|
|
|
PageHelper.startPage(params.getPage(), params.getPageSize());
|
|
PageHelper.startPage(params.getPage(), params.getPageSize());
|
|
|
List<OrderListResDTO> list = kwoTradeOrderMapper.tradeOrderSelect(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList(), null);
|
|
List<OrderListResDTO> list = kwoTradeOrderMapper.tradeOrderSelect(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList(), null);
|
|
|
return buildResult(list, params.getPageSize());
|
|
return buildResult(list, params.getPageSize());
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 应用贸易订单数据权限过滤
|
|
|
|
|
+ * 根据当前用户的数据权限配置,设置DTO中的权限过滤参数
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param dto 贸易订单列表查询DTO
|
|
|
|
|
+ */
|
|
|
|
|
+ private void applyTradeOrderDataPermission(TradeOrderListSelectDTO dto) {
|
|
|
|
|
+ DataPermissionDTO perm = fetchDataPermissionForCurrentUser();
|
|
|
|
|
+ // 如果获取权限失败或不需要过滤,则直接返回
|
|
|
|
|
+ if (perm == null || !perm.needFilter()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 设置基础权限过滤标识
|
|
|
|
|
+ dto.setDataPermissionFilter(Boolean.TRUE);
|
|
|
|
|
+ dto.setDataPermissionAllVisible(perm.isAllVisible());
|
|
|
|
|
+ dto.setDataPermissionPersonal(perm.isPersonalDataEnabled());
|
|
|
|
|
+ dto.setDataPermissionUserId(perm.getUserId());
|
|
|
|
|
+ // 设置可见企业ID列表,若为空则设为空列表
|
|
|
|
|
+ dto.setDataPermissionEntIds(CollectionUtils.isEmpty(perm.getVisibleEntIds()) ? Collections.emptyList() : new ArrayList<>(perm.getVisibleEntIds()));
|
|
|
|
|
+
|
|
|
|
|
+ // 如果不是全部可见且没有指定可见企业ID,则强制结果为空
|
|
|
|
|
+ if (!perm.isAllVisible() && CollectionUtils.isEmpty(perm.getVisibleEntIds())) {
|
|
|
|
|
+ dto.setDataPermissionFilter(Boolean.FALSE);
|
|
|
|
|
+ dto.setDataPermissionForceEmpty(Boolean.TRUE);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果开启了个人数据权限但未获取到用户ID,则强制结果为空
|
|
|
|
|
+ if (perm.isPersonalDataEnabled() && perm.getUserId() == null) {
|
|
|
|
|
+ dto.setDataPermissionFilter(Boolean.FALSE);
|
|
|
|
|
+ dto.setDataPermissionForceEmpty(Boolean.TRUE);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取当前用户的数据权限信息
|
|
|
|
|
+ * 通过Feign调用远程服务获取数据权限过滤条件
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return 数据权限DTO,获取失败时返回null
|
|
|
|
|
+ */
|
|
|
|
|
+ private DataPermissionDTO fetchDataPermissionForCurrentUser() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ DataPermissionFilterReqDto reqDto = new DataPermissionFilterReqDto();
|
|
|
|
|
+ // 设置当前登录用户的ID、角色ID和管理员标识
|
|
|
|
|
+ reqDto.setUserId(LoginUserHolder.getUserId());
|
|
|
|
|
+ reqDto.setRoleId(LoginUserHolder.getCurrentRoleId());
|
|
|
|
|
+ reqDto.setManager(LoginUserHolder.isManager());
|
|
|
|
|
+ return dataPermissionFeignService.getDataPermissionFilter(reqDto);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ // 记录警告日志,权限获取失败时跳过过滤,避免影响主业务流程
|
|
|
|
|
+ log.warn("获取贸易订单数据权限失败,跳过本接口数据权限过滤: {}", e.getMessage());
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @param list
|
|
* @param list
|
|
|
* @param pageSize
|
|
* @param pageSize
|
|
@@ -1762,6 +1823,8 @@ public class KwoTradeOrderService {
|
|
|
TableStatisticRes res = new TableStatisticRes();
|
|
TableStatisticRes res = new TableStatisticRes();
|
|
|
TradeOrderListSelectDTO dto = buildSelectParam(params);
|
|
TradeOrderListSelectDTO dto = buildSelectParam(params);
|
|
|
dto.setStatus(null);
|
|
dto.setStatus(null);
|
|
|
|
|
+ //数据权限过滤
|
|
|
|
|
+ applyTradeOrderDataPermission(dto);
|
|
|
List<TableTop> tableTops = kwoTradeOrderMapper.tradeOrderStatistic(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList());
|
|
List<TableTop> tableTops = kwoTradeOrderMapper.tradeOrderStatistic(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList());
|
|
|
Map<Integer, Integer> map = new HashMap<>(Global.NUMERICAL_SIXTEEN);
|
|
Map<Integer, Integer> map = new HashMap<>(Global.NUMERICAL_SIXTEEN);
|
|
|
if (CollUtil.isNotEmpty(tableTops)) {
|
|
if (CollUtil.isNotEmpty(tableTops)) {
|