diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java index 1697a48a3..c5f5f19bb 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java @@ -6,6 +6,9 @@ import lombok.Getter; import java.util.Arrays; +/** + * 订单状态 + */ @AllArgsConstructor @Getter public enum HardOrderStatusEnum { diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java index da92d1354..be3fb28f9 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java @@ -28,8 +28,14 @@ public enum HardOrderTypeEnum { public static final List refundList = List.of(BELOW, RESERVE); + public static final List payList = List.of(BELOW, RESERVE); + public static boolean isRefund(HardOrderTypeEnum type) { return refundList.contains(type); } + public static boolean isPay(HardOrderTypeEnum type) { + return refundList.contains(type); + } + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java index 3e69836be..277796076 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java @@ -5,4 +5,7 @@ import lombok.Data; @Data public class HardCarDto extends HardCarEntity { + + private Long orderId; + } 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 a66b0ed28..3bcf940d5 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 @@ -3,6 +3,14 @@ package com.bsd.pjcloud.hard.api.dto.order; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import lombok.Data; +import java.util.List; + @Data public class HardOrderDto extends HardOrderEntity { + + /** + * 用户相关 + */ + private List userIds; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java index 61590c55f..03a415b8e 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java @@ -3,10 +3,11 @@ package com.bsd.pjcloud.hard.api.vo.order; import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; +import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface; import lombok.Data; @Data -public class HardOrderVo extends HardOrderEntity implements BaseUserInterface, BaseDeptInterface { +public class HardOrderVo extends HardOrderEntity implements BaseUserInterface, BaseDeptInterface, BaseMchInterface { /** * 用户相关 */ @@ -20,4 +21,13 @@ public class HardOrderVo extends HardOrderEntity implements BaseUserInterface, B * 部门相关 */ private String deptName; + + private String merchantName; + + /** + * 设备相关 + */ + private String hardName; + + private String hardType; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml index 686e24b41..ee6079f26 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml @@ -13,6 +13,11 @@ pjcloud-hardware-biz + + + com.bsd + pjcloud-common-seata + com.alibaba.cloud diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java index 39c346fed..c0f009ad8 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.controller.order; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,8 +14,12 @@ import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.dto.app.HardCarSaveOrUpdateDto; import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.service.HardCarService; +import com.bsd.pjcloud.hard.service.HardOrderService; +import com.bsd.pjcloud.hard.service.HardParentCarService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -41,6 +46,7 @@ import java.util.List; public class HardCarController { private final HardCarService hardCarService; + private final HardOrderService hardOrderService; /* ************************************* start app start ************************************* */ @GetMapping("/app/mch-detail") @@ -51,7 +57,7 @@ public class HardCarController { } @GetMapping("/app/order-id") - @Operation(summary = "根据订单id查询当前用户购物车") + @Operation(summary = "根据订单id查询购物车") public R> appOrderId(@RequestParam Long orderId) { return R.ok(hardCarService.getByOrderId(orderId)); } @@ -67,6 +73,16 @@ public class HardCarController { } /* ************************************* end app end ************************************* */ + @GetMapping("/order-id") + @Operation(summary = "根据订单id查询购物车") + public R> orderId(@ParameterObject Page page, @RequestParam Long orderId) { + HardOrderEntity order = hardOrderService.getById(orderId); + if (ObjectUtil.isEmpty(order)) return null; + HardCarDto dto = new HardCarDto(); + dto.setParentCarId(order.getParentCarId()); + return R.ok(hardCarService.pageJoin(page, dto)); + } + @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('hard_hardCar_view')") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 3c6ae8196..0fd86ffde 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java @@ -13,7 +13,8 @@ public interface HardCarMapper extends PjcloudBaseMapper { default Page pageJoin(Page page, HardCarDto dto) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper() - .selectAll(HardCarEntity.class); + .selectAll(HardCarEntity.class) + .eqIfExists(HardCarEntity::getParentCarId, dto.getParentCarId()); return selectJoinPage(page, HardCarVo.class, wrapper); } } \ No newline at end of file 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 a4e9b1249..67fd637d0 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 @@ -1,10 +1,13 @@ package com.bsd.pjcloud.hard.mapper.order; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @@ -12,7 +15,14 @@ import org.apache.ibatis.annotations.Mapper; public interface HardOrderMapper extends PjcloudBaseMapper { default Page pageJoin(Page page, HardOrderDto dto) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper() - .selectAll(HardOrderEntity.class); + .selectAll(HardOrderEntity.class) + .selectAs(HardManagerEntity::getName, HardOrderVo::getHardName) + .selectAs(HardManagerEntity::getType, HardOrderVo::getHardType) + .leftJoin(HardManagerEntity.class, HardManagerEntity::getId, HardOrderEntity::getHardId) + .eqIfExists(HardOrderEntity::getOrderType, dto.getOrderType()) + .eqIfExists(HardOrderEntity::getPayType, dto.getPayType()) + .eqIfExists(HardOrderEntity::getOrderStatus, dto.getOrderStatus()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()); return selectJoinPage(page, HardOrderVo.class, wrapper); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardwareOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardwareOrderServiceImpl.java index 41eea23af..b7e42343f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardwareOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardwareOrderServiceImpl.java @@ -25,6 +25,7 @@ import com.bsd.pjcloud.hard.api.entity.HardManagerEntity; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; +import com.bsd.pjcloud.hard.api.vo.HardManagerVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.HardCarService; @@ -36,6 +37,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import com.bsd.pjcloud.wallet.api.feign.*; +import com.bsd.pjcloud.wallet.api.utils.MchDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; @@ -79,6 +81,7 @@ public class HardwareOrderServiceImpl extends ServiceImpl pageJoin(Page page, HardOrderDto dto) { @@ -86,15 +89,27 @@ public class HardwareOrderServiceImpl extends ServiceImpl userIds = list.getRecords().stream().map(HardOrderVo::getUserId).distinct().toList(); - R> userList = userService.getUserById(new ArrayList<>(userIds)); - if (ObjectUtil.isNotEmpty(userList.getData())) { - DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + if (ObjectUtil.isNotEmpty(userIds)) { + R> userList = userService.getUserById(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + } } // 部门 List deptIds = list.getRecords().stream().map(HardOrderVo::getDeptId).distinct().toList(); - R> deptList = deptService.getDeptByDeptIds(deptIds); - if (ObjectUtil.isNotEmpty(deptList.getData())) { - DataUtil.convertDeptList(list.getRecords(), deptList.getData()); + if (ObjectUtil.isNotEmpty(deptIds)) { + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); + } + } + // 商户 + List mchIds = list.getRecords().stream().map(HardOrderVo::getMerchantId).distinct().toList(); + if (ObjectUtil.isNotEmpty(mchIds)) { + R> mchList = remoteMchService.getByIds(mchIds); + if (ObjectUtil.isNotEmpty(mchList.getData())) { + MchDataUtil.convertMchList(list.getRecords(), CollectionUtils.convertMap(mchList.getData(), MchManageVo::getId)); + } } } return list; @@ -151,7 +166,7 @@ public class HardwareOrderServiceImpl extends ServiceImpl addWalletBalance(@RequestBody WalletBalanceTransactionDto dto); @NoToken - @GetMapping("/wallet-transaction/reduce-balance") + @PostMapping("/wallet-transaction/reduce-balance") R reduceWalletBalance(@RequestBody WalletBalanceTransactionDto dto); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml index bfc11cf4f..f63a6c1ff 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml @@ -13,6 +13,11 @@ pjcloud-wallet-biz + + + com.bsd + pjcloud-common-seata + org.springframework.boot