diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CommonRoleConstant.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CommonRoleConstant.java index 8f7ea0f25..13c234d5d 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CommonRoleConstant.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CommonRoleConstant.java @@ -1,11 +1,25 @@ package com.bsd.pjcloud.common.core.constant; +/** + * 权限对应常量 + */ public interface CommonRoleConstant { + // 普通用户 String DEFAULT_USER = "GENERAL_USER"; + // 管理员 + String ROLE_ADMIN = "ROLE_ADMIN"; + + // 部门管理员 String DEPT_ADMIN = "DEPT_ADMIN"; + // 超市管理员 + String SUPERMARKET_ADMIN = "SUPERMARKET_ADMIN"; + + // 食堂管理员 + String CANTEEN_ADMIN = "CANTEEN_ADMIN"; + // 自动创建钱包 String AUTO_CREATE_WALLET = "WALLET_AUTO_CREATE"; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/CurrentUserHardTypeInfoDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/CurrentUserHardTypeInfoDto.java new file mode 100644 index 000000000..6ba63a131 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/CurrentUserHardTypeInfoDto.java @@ -0,0 +1,40 @@ +package com.bsd.pjcloud.hard.api.dto.hard; + +import cn.hutool.core.util.ObjectUtil; +import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class CurrentUserHardTypeInfoDto { + /** + * 是否有查询食堂权限 + */ + private Boolean canteenView = false; + /** + * 是否有查询超市权限 + */ + private Boolean supermarket = false; + + public boolean isAll() { + return this.getCanteenView() != null && this.getCanteenView() && this.getSupermarket() != null && this.getSupermarket(); + } + + /** + * 硬件类型集合 + */ + public List getHardTypeList() { + List list = new ArrayList<>(); + if (isAll()) return list; + if (this.getCanteenView() != null && this.getCanteenView()) { + list.add(HardTypeEnum.CANTEEN.getType()); + } + if (this.getSupermarket() != null && this.getSupermarket()) { + list.add(HardTypeEnum.SUPERMARKET.getType()); + } + return list; + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index 23d816dfd..7b4d70e54 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -23,6 +23,8 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn private List hardIds; + private List hardTypeCodes; + private List mchIds; private List orderStatusCodes; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml index 737070b51..736365027 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml @@ -144,6 +144,10 @@ 5.7.0 compile + + org.springframework + spring-context + diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index 706304473..8c6e43c36 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -25,6 +25,7 @@ import com.bsd.pjcloud.hard.api.constant.order.HardHourTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.app.HardAppCreateOrderScancode; +import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderPreferencesDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppCreateOrderDto; @@ -32,6 +33,7 @@ import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.hard.api.vo.order.excel.HardOrderExcelVo; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; +import com.bsd.pjcloud.hard.service.HardManagerService; import com.bsd.pjcloud.hard.service.HardOrderService; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import jakarta.servlet.http.HttpServletResponse; @@ -67,6 +69,7 @@ import java.util.Map; public class HardOrderController { private final HardOrderService hardwareOrderService; + private final HardManagerService hardManagerService; private final HardOrderMapper hardOrderMapper; @@ -148,7 +151,12 @@ public class HardOrderController { @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('hard_hardwareOrder_view')") public R pageJoin(@ParameterObject Page page, @ParameterObject HardOrderDto dto) { - return R.ok(hardwareOrderService.scopePageList(page, dto, DataScope.of())); + DataScope dataScope = DataScope.of(); + dataScope.setScopeDeptName("user_dept_id"); + PjcloudUser user = SecurityUtils.getUser(); + CurrentUserHardTypeInfoDto hardTypeInfo = hardManagerService.getCurrentUserHardTypeInfo(user); + dto.setHardTypeCodes(hardTypeInfo.getHardTypeList()); + return R.ok(hardwareOrderService.scopePageList(page, dto, dataScope)); } @Operation(summary = "通过id查询", description = "通过id查询") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java index db84d5f7a..ef586e575 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java @@ -52,12 +52,6 @@ public interface HardOrderMapper extends PjcloudBaseMapper { return wrapper; } - default Page scopePageList(Page page, HardOrderDto dto, DataScope dataScope) { - Page list = selectPageByScope(page, commonWrapper(dto), DataScope.of()); - list.setRecords(BeanUtils.toBean(list.getRecords(), HardOrderVo.class)); - return list; - } - default Page pageJoin(Page page, HardOrderDto dto) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper() .selectAll(HardOrderEntity.class) @@ -90,13 +84,11 @@ public interface HardOrderMapper extends PjcloudBaseMapper { return selectListByScope(commonWrapper(dto), DataScope.of()); } - Page listSb(Page page, @Param("dto") HardOrderDto dto); + Page scopePageList(Page page, @Param("dto") HardOrderDto dto, @Param("dataScope") DataScope dataScope); - List listSb(@Param("dto") HardOrderDto dto); + List listSb(@Param("dto") HardOrderDto dto, DataScope dataScope); - Page pageListCs(Page page, @Param("dto") HardOrderDto dto); - - List listCs(@Param("dto") HardOrderDto dto); + List listCs(@Param("dto") HardOrderDto dto, DataScope dataScope); List listCsByDay(@Param("dto") HardOrderDto totalDto); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java index a7716d95a..acfa6fbd1 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; +import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto; import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto; import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; import com.bsd.pjcloud.hard.api.vo.HardManagerVo; @@ -21,4 +22,9 @@ public interface HardManagerService extends IService { HardManagerVo bind(HardBindDto dto); HardManagerVo getById(Long hardId); + + /** + * 判断当前用户是否有食堂或者超市管理元权限 + */ + CurrentUserHardTypeInfoDto getCurrentUserHardTypeInfo(PjcloudUser user); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java index 1546b2ea1..945599c00 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java @@ -5,15 +5,19 @@ import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.common.core.constant.CommonRoleConstant; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.dto.HardGroupDto; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; +import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto; import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto; import com.bsd.pjcloud.hard.api.entity.HardGroupEntity; import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; @@ -34,6 +38,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Optional; @@ -54,6 +59,7 @@ public class HardManagerServiceImpl extends ServiceImpl roleList = Arrays.asList(roles); + if (roleList.contains(CommonRoleConstant.ROLE_ADMIN)) { + result.setCanteenView(true); + result.setSupermarket(true); + return result; + } + if (roleList.contains(CommonRoleConstant.SUPERMARKET_ADMIN)) { + result.setSupermarket(true); + } + if (roleList.contains(CommonRoleConstant.CANTEEN_ADMIN)) { + result.setCanteenView(true); + } + return result; + } + private boolean existUniqueCode(String uniqueCode, Long id) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() .eq(ObjectUtil.isNotEmpty(uniqueCode), HardManagerEntity::getUniqueCode, uniqueCode) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 344b17046..2368b9589 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -19,11 +19,13 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; +import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; @@ -161,16 +163,6 @@ public class HardOrderServiceImpl extends ServiceImpl hardIds = list.getRecords().stream().map(HardOrderVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(mchIds)) { - HardManagerDto hardManagerDto = new HardManagerDto(); - hardManagerDto.setIds(hardIds); - List hardList = hardManagerMapper.list(hardManagerDto); - if (ObjectUtil.isNotEmpty(hardList)) { - HardUtil.convertHardList(list.getRecords(), CollectionUtils.convertMap(hardList, HardManagerEntity::getId)); - } - } // 购物车 if (dto.getIsFindCarList()) { for (HardOrderVo v : list.getRecords()) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 2c32201af..c24747e68 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -8,10 +8,13 @@ import com.bsd.pjcloud.admin.api.dto.DeptAllListDto; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardManagerDto; +import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto; import com.bsd.pjcloud.hard.api.dto.order.HardDeptTotalDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderSumAndCountDto; @@ -20,6 +23,7 @@ import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.order.*; import com.bsd.pjcloud.hard.mapper.HardManagerMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; +import com.bsd.pjcloud.hard.service.HardManagerService; import com.bsd.pjcloud.hard.service.HardOrderTotalService; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; @@ -30,12 +34,14 @@ import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.bouncycastle.jcajce.provider.util.SecretKeyUtil; +import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import org.springframework.web.context.request.RequestContextHolder; import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.stream.Stream; @Validated @Slf4j @@ -46,38 +52,37 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { private final HardOrderMapper hardOrderMapper; private final HardManagerMapper hardManagerMapper; + private final HardManagerService hardManagerService; + private final RemoteMchService remoteMchService; private final RemoteWalletTransactionService remoteWalletTransactionService; private final RemoteDeptService remoteDeptService; + // private final DelegatingSecurityContextExecutor securityContextExecutor; + /** * 设备交易记录 */ @Override public List listSb(HardOrderDto dto) { + DataScope dataScope = DataScope.of(); + dataScope.setScopeDeptName("user_dept_id"); + + PjcloudUser user = SecurityUtils.getUser(); + CurrentUserHardTypeInfoDto hardTypeInfo = hardManagerService.getCurrentUserHardTypeInfo(user); + dto.setHardTypeCodes(hardTypeInfo.getHardTypeList()); // 查询总流水 - CompletableFuture> totalListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); - totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); - return hardOrderMapper.listSb(totalDto); - }); + HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); + totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); + List totalList = hardOrderMapper.listSb(totalDto, dataScope); // 扣款总流水 - CompletableFuture> refundListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); - refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); - return hardOrderMapper.listSb(refundDto); - }); + HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); + refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); + List refundList = hardOrderMapper.listSb(refundDto, dataScope); // 盈利 - CompletableFuture> profitListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); - profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); - return hardOrderMapper.listSb(profitDto); - }); - CompletableFuture allFutures = CompletableFuture.allOf(totalListFuture, refundListFuture, profitListFuture); - allFutures.join(); - List totalList = totalListFuture.join(); - List refundList = refundListFuture.join(); - List profitList = profitListFuture.join(); + HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); + profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + List profitList = hardOrderMapper.listSb(profitDto, dataScope); // 聚合一下数据 for (HardOrderSbVo v : totalList) { // 退款 @@ -123,29 +128,23 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { */ @Override public List listCs(HardOrderDto dto) { + DataScope dataScope = DataScope.of(); + dataScope.setScopeDeptName("user_dept_id"); + PjcloudUser user = SecurityUtils.getUser(); + CurrentUserHardTypeInfoDto hardTypeInfo = hardManagerService.getCurrentUserHardTypeInfo(user); + dto.setHardTypeCodes(hardTypeInfo.getHardTypeList()); // 查询总流水 - CompletableFuture> totalListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); - totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); - return hardOrderMapper.listCs(totalDto); - }); + HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); + totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); + List totalList = hardOrderMapper.listCs(totalDto, DataScope.of()); // 扣款总流水 - CompletableFuture> refundListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); - refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); - return hardOrderMapper.listCs(refundDto); - }); + HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); + refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); + List refundList = hardOrderMapper.listCs(refundDto, DataScope.of()); // 盈利 - CompletableFuture> profitListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); - profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); - return hardOrderMapper.listCs(profitDto); - }); - CompletableFuture allFutures = CompletableFuture.allOf(totalListFuture, refundListFuture, profitListFuture); - allFutures.join(); - List totalList = totalListFuture.join(); - List refundList = refundListFuture.join(); - List profitList = profitListFuture.join(); + HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); + profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + List profitList = hardOrderMapper.listCs(profitDto, DataScope.of()); for (HardOrderCsVo v : totalList) { // 退款 if (ObjectUtil.isNotEmpty(refundList)) { @@ -424,32 +423,26 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { public List listPayType(HardOrderDto dto) { // 获取所有支付方式 List payTypeList = HardPayTypeEnum.payTypeTotalDisplayList.stream().map(HardPayTypeEnum::getType).toList(); + DataScope dataScope = DataScope.of(); + dataScope.setScopeDeptName("user_dept_id"); + PjcloudUser user = SecurityUtils.getUser(); + CurrentUserHardTypeInfoDto hardTypeInfo = hardManagerService.getCurrentUserHardTypeInfo(user); + dto.setHardTypeCodes(hardTypeInfo.getHardTypeList()); // 查询总流水 - CompletableFuture> totalListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); - totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); - totalDto.setOrderPayTypeCodes(payTypeList); - return hardOrderMapper.listOrerPayType(totalDto); - }); + HardOrderDto totalDto = BeanUtil.toBean(dto, HardOrderDto.class); + totalDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); + totalDto.setOrderPayTypeCodes(payTypeList); + List totalList = hardOrderMapper.listOrerPayType(totalDto); // 扣款总流水 - CompletableFuture> refundListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); - refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); - refundDto.setOrderPayTypeCodes(payTypeList); - return hardOrderMapper.listOrerPayType(refundDto); - }); + HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); + refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); + refundDto.setOrderPayTypeCodes(payTypeList); + List refundList = hardOrderMapper.listOrerPayType(refundDto); // 盈利 - CompletableFuture> profitListFuture = CompletableFuture.supplyAsync(() -> { - HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); - profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); - profitDto.setOrderPayTypeCodes(payTypeList); - return hardOrderMapper.listOrerPayType(profitDto); - }); - CompletableFuture allFutures = CompletableFuture.allOf(totalListFuture, refundListFuture, profitListFuture); - allFutures.join(); - List totalList = totalListFuture.join(); - List refundList = refundListFuture.join(); - List profitList = profitListFuture.join(); + HardOrderDto profitDto = BeanUtil.toBean(dto, HardOrderDto.class); + profitDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + profitDto.setOrderPayTypeCodes(payTypeList); + List profitList = hardOrderMapper.listOrerPayType(profitDto); for (HardOrderPayTypeVo v : totalList) { // 退款 if (ObjectUtil.isNotEmpty(refundList)) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/task/ExecutorConfig.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/task/ExecutorConfig.java new file mode 100644 index 000000000..3fac42679 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/task/ExecutorConfig.java @@ -0,0 +1,30 @@ +package com.bsd.pjcloud.hard.task; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Configuration +public class ExecutorConfig { + + @Bean + public ThreadPoolTaskExecutor hardTaskExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(5); + executor.setMaxPoolSize(10); + executor.setQueueCapacity(25); + executor.setThreadNamePrefix("hard-async-"); + executor.initialize(); + return executor; + } + + @Bean + public DelegatingSecurityContextExecutor delegatingSecurityContextExecutor() { + ExecutorService executorService = Executors.newFixedThreadPool(10); + return new DelegatingSecurityContextExecutor(executorService); + } +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index 8b53d4d58..346f52699 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -145,52 +145,60 @@ - + + m.name as hardName, + m.type as hardType from hard_order a + left join hard_manager m on m.id = a.hard_id + + and m.unique_code in + + #{v} + + - group by a.hard_id + order by a.create_time desc, a.user_id desc - -