From de1448e9d2e05263f166f2eae9657bf5a721c04e Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 28 Feb 2025 14:34:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=AF=8F=E6=9C=88=E9=92=B1=E5=8C=85?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/dto/order/HardOrderDto.java | 5 - .../order/HardOrderTotalController.java | 2 +- .../hard/mapper/order/HardOrderMapper.java | 36 ++---- .../impl/order/HardOrderServiceImpl.java | 8 -- .../api/dto/WalletManageBalanceDto.java | 23 ++++ .../wallet/api/vo/WalletManageBalanceVo.java | 22 ++++ .../pjcloud/wallet/api/vo/WalletManageVo.java | 8 ++ .../controller/WalletManageController.java | 21 ++-- .../WalletRechargeImportController.java | 2 +- .../wallet/mapper/WalletManageMapper.java | 88 +++++++------- .../wallet/service/WalletManageService.java | 16 ++- .../service/impl/WalletManageServiceImpl.java | 108 +++++++++++++++++- .../impl/WalletTransactionServiceImpl.java | 2 +- .../main/resources/file/个人钱包记录明细.xlsx | Bin 0 -> 10004 bytes .../resources/mapper/WalletManageMapper.xml | 91 ++++++++++++++- 15 files changed, 324 insertions(+), 108 deletions(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人钱包记录明细.xlsx 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 a677caac..6ab0fe15 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 @@ -11,11 +11,6 @@ import java.util.List; @Data public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeInterface { - /** - * 订单部门id极其子部门id - */ - private Long deptIdIdDeepen; - private List deptIds; private Boolean isInclude = false; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java index be5acfdc..3f49abf3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java @@ -163,7 +163,7 @@ public class HardOrderTotalController { if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { map.put("timeSpan", " 到 "); map.put("startTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); - map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); + map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[1], DatePattern.NORM_DATETIME_PATTERN)); } if (ObjectUtil.isNotEmpty(list)) { // 批量充值 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 3991e32e..5bbbd35b 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 @@ -24,12 +24,14 @@ import java.util.List; @Mapper public interface HardOrderMapper extends PjcloudBaseMapper { - default Page scopePageList(Page page, HardOrderDto dto) { + private LambdaQueryWrapper commonWrapper(HardOrderDto dto) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .eq(ObjectUtil.isNotEmpty(dto.getOrderType()), HardOrderEntity::getOrderType, dto.getOrderType()) .eq(ObjectUtil.isNotEmpty(dto.getPayType()), HardOrderEntity::getPayType, dto.getPayType()) .eq(ObjectUtil.isNotEmpty(dto.getOrderStatus()), HardOrderEntity::getOrderStatus, dto.getOrderStatus()) .eq(ObjectUtil.isNotEmpty(dto.getHourType()), HardOrderEntity::getHourType, dto.getHourType()) + .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), HardOrderEntity::getDeptId, dto.getDeptId()) + .eq(ObjectUtil.isNotEmpty(dto.getUserId()), HardOrderEntity::getUserId, dto.getUserId()) .in(ObjectUtil.isNotEmpty(dto.getOrderIds()), HardOrderEntity::getId, dto.getOrderIds()) .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()) .in(ObjectUtil.isNotEmpty(dto.getHardIds()), HardOrderEntity::getHardId, dto.getHardIds()) @@ -48,7 +50,11 @@ public interface HardOrderMapper extends PjcloudBaseMapper { ObjectUtil.isNotEmpty(dto.getPayTimeList()) ? dto.getPayTimeList()[1] : null ) .orderByDesc(HardOrderEntity::getCreateTime); - Page list = selectPageByScope(page, wrapper, DataScope.of()); + return wrapper; + } + + default Page scopePageList(Page page, HardOrderDto dto) { + Page list = selectPageByScope(page, commonWrapper(dto), DataScope.of()); list.setRecords(BeanUtils.toBean(list.getRecords(), HardOrderVo.class)); return list; } @@ -60,6 +66,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { .selectAs(HardManagerEntity::getType, HardOrderVo::getHardType) .leftJoin(HardManagerEntity.class, HardManagerEntity::getId, HardOrderEntity::getHardId) .eqIfExists(HardOrderEntity::getUserId, dto.getUserId()) + .eqIfExists(HardOrderEntity::getDeptId, dto.getDeptId()) .eqIfExists(HardOrderEntity::getOrderType, dto.getOrderType()) .eqIfExists(HardOrderEntity::getPayType, dto.getPayType()) .eqIfExists(HardOrderEntity::getOrderStatus, dto.getOrderStatus()) @@ -79,30 +86,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { } default List list(HardOrderDto dto) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(dto.getOrderType()), HardOrderEntity::getOrderType, dto.getOrderType()) - .eq(ObjectUtil.isNotEmpty(dto.getPayType()), HardOrderEntity::getPayType, dto.getPayType()) - .eq(ObjectUtil.isNotEmpty(dto.getOrderStatus()), HardOrderEntity::getOrderStatus, dto.getOrderStatus()) - .eq(ObjectUtil.isNotEmpty(dto.getHourType()), HardOrderEntity::getHourType, dto.getHourType()) - .in(ObjectUtil.isNotEmpty(dto.getOrderIds()), HardOrderEntity::getId, dto.getOrderIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()) - .in(ObjectUtil.isNotEmpty(dto.getHardIds()), HardOrderEntity::getHardId, dto.getHardIds()) - .in(ObjectUtil.isNotEmpty(dto.getMchIds()), HardOrderEntity::getMerchantId, dto.getMchIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserDeptIds()), HardOrderEntity::getDeptId, dto.getUserDeptIds()) - .between( - ObjectUtil.isNotEmpty(dto.getCreateTimeList()), - HardOrderEntity::getCreateTime, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null - ) - .between( - ObjectUtil.isNotEmpty(dto.getPayTimeList()), - HardOrderEntity::getPayTime, - ObjectUtil.isNotEmpty(dto.getPayTimeList()) ? dto.getPayTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getPayTimeList()) ? dto.getPayTimeList()[1] : null - ) - .orderByDesc(HardOrderEntity::getCreateTime); - return selectListByScope(wrapper, DataScope.of()); + return selectListByScope(commonWrapper(dto), DataScope.of()); } Page pageListSb(Page page, @Param("dto") HardOrderDto dto); 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 e5843ab3..cc82de11 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 @@ -116,14 +116,6 @@ public class HardOrderServiceImpl extends ServiceImpl scopePageList(Page page, HardOrderDto dto) { - if (ObjectUtil.isNotEmpty(dto.getDeptIdIdDeepen())) { - List deptList = deptService.getDescendantList(dto.getDeptIdIdDeepen()).getData(); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setUserDeptIds(deptList.stream().map(SysDept::getDeptId).toList()); - } else { - dto.setUserDeptIds(List.of(-1L)); - } - } Page list = baseMapper.scopePageList(page, dto); if (ObjectUtil.isNotEmpty(list.getRecords())) { // 用户 diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java new file mode 100644 index 00000000..9457a596 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java @@ -0,0 +1,23 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; +import lombok.Data; + +import java.util.List; + +@Data +public class WalletManageBalanceDto implements BaseIsIncludeTreeInterface { + + private String walletRecordMonth; + + private Long userId; + + private List userIds; + + private Long walletTypeId; + + private Boolean isInclude; + + private List deptIds; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java new file mode 100644 index 00000000..e6cbe23a --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java @@ -0,0 +1,22 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class WalletManageBalanceVo { + + private Long userId; + + private Long walletId; + + private Long walletTypeId; + + private String walletTypeName; + + private Integer balance; + + private LocalDateTime createTime; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java index 3965ec47..618419e4 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java @@ -6,6 +6,9 @@ import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletTypeInterface; import lombok.Data; +import java.time.LocalDateTime; +import java.util.List; + @Data public class WalletManageVo extends WalletManageEntity implements BaseUserInterface, BaseDeptInterface, BaseWalletTypeInterface { @@ -39,4 +42,9 @@ public class WalletManageVo extends WalletManageEntity implements BaseUserInterf * 导出相关 */ private Long lineNumber; + + /** + * 最后充值时间 + */ + private LocalDateTime lastTopUpTime; } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index fb9b518f..696e2207 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; @@ -148,6 +149,13 @@ public class WalletManageController { return R.ok(walletManageService.scopePageList(page, dto, DataScope.of())); } + @Operation(summary = "钱包记录分页", description = "钱包记录分页") + @PostMapping("/page-join-qb") + public R pageJoinQb(@ParameterObject Page page, @RequestBody WalletManageBalanceDto dto) { + DataScope dataScope = new DataScope(); + return R.ok(walletManageService.scopeQbPage(page, dto, dataScope)); + } + @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletManage_view')") @@ -179,16 +187,15 @@ public class WalletManageController { return R.ok(walletManageService.removeBatchByIds(CollUtil.toList(ids))); } - @Operation(summary = "钱包记录分页", description = "钱包记录分页") - @PostMapping("/page-qb") - public R pageQb(@ParameterObject Page page, @RequestBody WalletManageDto dto) { - DataScope dataScope = new DataScope(); - return R.ok(walletManageService.scopeQbPageList(page, dto, dataScope)); - } - @PostMapping("/export") @PreAuthorize("@pms.hasPermission('wallet_walletManage_export')") public void export(HttpServletResponse response, @ParameterObject Page page, @RequestBody WalletManageDto dto) { walletManageService.export(response, page, dto); } + + @PostMapping("/export-qb") + // @PreAuthorize("@pms.hasPermission('wallet_walletManage_export')") + public void exportQb(HttpServletResponse response, @ParameterObject Page page, @RequestBody WalletManageBalanceDto dto) { + walletManageService.exportQb(response, page, dto); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java index c01b1db7..f5f0f08e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java @@ -125,7 +125,7 @@ public class WalletRechargeImportController { if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { map.put("timeSpan", " 到 "); map.put("startTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); - map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); + map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[1], DatePattern.NORM_DATETIME_PATTERN)); } if (ObjectUtil.isNotEmpty(list)) { BigDecimal priceStrSum = BigDecimal.ZERO; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java index a4c1b34a..6f7afb96 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java @@ -7,17 +7,48 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletManageBalanceVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface WalletManageMapper extends PjcloudBaseMapper { + + private LambdaQueryWrapper commonQuery(WalletManageDto dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(dto.getUserId()), WalletManageEntity::getUserId, dto.getUserId()) + .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), WalletManageEntity::getDeptId, dto.getDeptId()) + .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) + .eq(ObjectUtil.isNotEmpty(dto.getIsFreeze()), WalletManageEntity::getIsFreeze, dto.getIsFreeze()) + .in(ObjectUtil.isNotEmpty(dto.getWalletIds()), WalletManageEntity::getId, dto.getWalletIds()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) + .between( + ObjectUtil.isNotEmpty(dto.getCreateTimeList()), + WalletManageEntity::getCreateTime, + ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, + ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null + ) + .orderByDesc(WalletManageEntity::getCreateTime); + if (ObjectUtil.isNotEmpty(dto.getIsInclude())) { + if (dto.getIsInclude()) { + wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); + } else { + wrapper.notIn(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); + } + } else { + wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); + } + return wrapper; + } + /** * 当消费时候, 更新钱包 * @@ -102,61 +133,20 @@ public interface WalletManageMapper extends PjcloudBaseMapper scopePageList(Page page, WalletManageDto dto, DataScope dataScope) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(dto.getUserId()), WalletManageEntity::getUserId, dto.getUserId()) - .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), WalletManageEntity::getDeptId, dto.getDeptId()) - .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) - .eq(ObjectUtil.isNotEmpty(dto.getIsFreeze()), WalletManageEntity::getIsFreeze, dto.getIsFreeze()) - .in(ObjectUtil.isNotEmpty(dto.getWalletIds()), WalletManageEntity::getId, dto.getWalletIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) - .between( - ObjectUtil.isNotEmpty(dto.getCreateTimeList()), - WalletManageEntity::getCreateTime, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null - ) - .orderByDesc(WalletManageEntity::getCreateTime); - if (ObjectUtil.isNotEmpty(dto.getIsInclude())) { - if (dto.getIsInclude()) { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } else { - wrapper.notIn(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - } else { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - Page list = selectPageByScope(page, wrapper, dataScope); + default Page scopePage(Page page, WalletManageDto dto, DataScope dataScope) { + Page list = selectPageByScope(page, commonQuery(dto), dataScope); list.setRecords(BeanUtils.toBean(list.getRecords(), WalletManageVo.class)); return list; } default List scopeList(WalletManageDto dto, DataScope dataScope) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(dto.getUserId()), WalletManageEntity::getUserId, dto.getUserId()) - .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), WalletManageEntity::getDeptId, dto.getDeptId()) - .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) - .eq(ObjectUtil.isNotEmpty(dto.getIsFreeze()), WalletManageEntity::getIsFreeze, dto.getIsFreeze()) - .in(ObjectUtil.isNotEmpty(dto.getWalletIds()), WalletManageEntity::getId, dto.getWalletIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) - .between( - ObjectUtil.isNotEmpty(dto.getCreateTimeList()), - WalletManageEntity::getCreateTime, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null - ) - .orderByDesc(WalletManageEntity::getCreateTime); - if (ObjectUtil.isNotEmpty(dto.getIsInclude())) { - if (dto.getIsInclude()) { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } else { - wrapper.notIn(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - } else { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - List list = selectListByScope(wrapper, dataScope); + List list = selectListByScope(commonQuery(dto), dataScope); return BeanUtils.toBean(list, WalletManageVo.class); } + Page scopeUserPage(Page page, @Param("dto") WalletManageDto dto, @Param("dataScope") DataScope dataScope); + + List scopeUserList(@Param("dto") WalletManageDto dto, @Param("dataScope") DataScope dataScope); + + List selectBalance(@Param("dto") WalletManageBalanceDto walletDto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java index 722f6b3e..0188713c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.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.data.datascope.DataScope; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; @@ -82,10 +83,12 @@ public interface WalletManageService extends IService { Page scopePageList(Page page, WalletManageDto dto, DataScope dataScope); - Page scopeQbPageList(Page page, WalletManageDto dto, DataScope dataScope); - List scopeList(WalletManageDto dto, DataScope dataScope); + Page scopeQbPage(Page page, WalletManageBalanceDto dto, DataScope dataScope); + + List scopeQbList(WalletManageBalanceDto dto, DataScope dataScope); + WalletManageVo join(Long user, Long walletId); /** @@ -102,4 +105,13 @@ public interface WalletManageService extends IService { * @param dto */ void export(HttpServletResponse response, Page page, WalletManageDto dto); + + /** + * 钱包记录导出 + * + * @param response + * @param page + * @param dto + */ + void exportQb(HttpServletResponse response, Page page, WalletManageBalanceDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index 5cf51fa4..1fd34f77 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -32,11 +32,13 @@ import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.code.QRCodeDto; import com.bsd.pjcloud.hard.api.dto.code.QRCodeExtraDto; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; +import com.bsd.pjcloud.wallet.api.vo.WalletManageBalanceVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; @@ -59,7 +61,6 @@ import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; -import java.util.stream.Collectors; /** * 钱包管理 @@ -226,7 +227,7 @@ public class WalletManageServiceImpl extends ServiceImpl scopePageList(Page page, WalletManageDto dto, DataScope dataScope) { - Page list = baseMapper.scopePageList(page, dto, dataScope); + Page list = baseMapper.scopePage(page, dto, dataScope); disposeList(list.getRecords(), dto); return list; } @@ -245,8 +246,75 @@ public class WalletManageServiceImpl extends ServiceImpl scopeQbPageList(Page page, WalletManageDto dto, DataScope dataScope) { - return null; + public Page scopeQbPage(Page page, WalletManageBalanceDto dto, DataScope dataScope) { + WalletManageDto walletDto = BeanUtils.toBean(dto, WalletManageDto.class); + Page walletPage = baseMapper.scopePage(page, walletDto, dataScope); + if (walletPage.getTotal() == 0) return walletPage; + walletPage.getRecords().forEach(v -> { + v.setBalance(0); + v.setTotalRecharge(0); + v.setTotalExpense(0); + }); + List userIds = walletPage.getRecords().stream().map(WalletManageVo::getUserId).distinct().toList(); + // 查询钱包类表 + List walletTypeList = walletTypeService.list(); + if (ObjectUtil.isEmpty(walletTypeList)) return walletPage; + // 查询所有钱包类型的流水记录 + for (WalletTypeEntity i : walletTypeList) { + dto.setWalletTypeId(i.getId()); + if (ObjectUtil.isEmpty(dto.getUserId())) { + dto.setUserIds(userIds); + } + List itemList = baseMapper.selectBalance(dto); + if (ObjectUtil.isEmpty(itemList)) continue; + for (WalletManageBalanceVo j : itemList) { + j.setWalletTypeName(i.getName()); + walletPage.getRecords().stream().filter(v -> ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> { + if (ObjectUtil.isNotEmpty(j.getBalance())) { + v.setBalance(j.getBalance()); + v.setLastTopUpTime(j.getCreateTime()); + } + }); + } + } + disposeList(walletPage.getRecords(), walletDto); + return walletPage; + } + + @Override + public List scopeQbList(WalletManageBalanceDto dto, DataScope dataScope) { + WalletManageDto walletDto = BeanUtils.toBean(dto, WalletManageDto.class); + List walletList = baseMapper.scopeList(walletDto, dataScope); + if (ObjectUtil.isEmpty(walletList)) return walletList; + walletList.forEach(v -> { + v.setBalance(0); + v.setTotalRecharge(0); + v.setTotalExpense(0); + }); + List userIds = walletList.stream().map(WalletManageVo::getUserId).distinct().toList(); + // 查询钱包类表 + List walletTypeList = walletTypeService.list(); + if (ObjectUtil.isEmpty(walletTypeList)) return walletList; + // 查询所有钱包类型的流水记录 + for (WalletTypeEntity i : walletTypeList) { + dto.setWalletTypeId(i.getId()); + if (ObjectUtil.isEmpty(dto.getUserId())) { + dto.setUserIds(userIds); + } + List itemList = baseMapper.selectBalance(dto); + if (ObjectUtil.isEmpty(itemList)) continue; + for (WalletManageBalanceVo j : itemList) { + j.setWalletTypeName(i.getName()); + walletList.stream().filter(v -> ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> { + if (ObjectUtil.isNotEmpty(j.getBalance())) { + v.setBalance(j.getBalance()); + v.setLastTopUpTime(j.getCreateTime()); + } + }); + } + } + disposeList(walletList, walletDto); + return walletList; } @Override @@ -260,7 +328,7 @@ public class WalletManageServiceImpl extends ServiceImpl list = scopeQbList(dto, DataScope.of()); + try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream(fileName)).build()) { + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + Map map = new HashMap(); + map.put("walletRecordMonth", dto.getWalletRecordMonth()); + if (ObjectUtil.isNotEmpty(list)) { + Long lineNumber = 1L; + BigDecimal balanceSum = BigDecimal.ZERO; + for (WalletManageVo v : list) { + v.setLineNumber(lineNumber); + lineNumber++; + if (ObjectUtil.isNotEmpty(v.getBalance())) { + balanceSum = balanceSum.add(BigDecimal.valueOf(v.getBalance())); + v.setBalance(BigDecimal.valueOf(v.getBalance()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue()); + } + } + map.put("balanceSum", balanceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + } + excelWriter.fill(map, writeSheet); + excelWriter.fill(list, fillConfig, writeSheet); + } catch (IOException e) { + e.printStackTrace(); + log.error("|{}|导入错误,dto:|{}|,fileName:|{}|,error:|{}|", TAG, JSON.toJSONString(dto), fileName, e.getMessage()); + } + } + private void disposeList(List list, WalletManageDto dto) { if (ObjectUtil.isNotEmpty(list)) { // 用户 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java index 0237f6b4..b03e3160 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java @@ -186,7 +186,7 @@ public class WalletTransactionServiceImpl extends ServiceImplXVLg@Kj6tgV%`9fK@L3=Px)`%_HO zIYNvY91M&B0t^iKpJKY!*7VL6=4sJglD&**qPIRz$kiDVZ-T@nSP+BuO`8i(^&hxj z8^=cRjD)Ri_WQ3BHeOnxJt9tH)aH~gx80uZ>}qx=wA2Ie?=s7VOt{}sg6Ej$jgc43 z?erao#dv*ItgeE#Z4MMj*t`qET;)D51Vmx!3duAC(d*L|($zAL=9p*8Yph9zm8>yp z%&B)ZDLK($8HAE@8CD82qARl8qKgmomi9aaC@WvPZ{#nxz|!6gH@&3^uF6y8!bXv( zYTq<>-Af?)w(9?d4|Y{|)?4UEV)C}?-X}%_JM-PB2}N5xw7#tsZi23*rU1jLcKYgj zLOy~FuFwZ(-2Ng5?xWYyF9SI7aK3p(lfVc1<@G~%H`C`1@Ow>Dop&;BMsN->)MlBx zZ;R1>`(bhc_dBk;i0^~ngK+%-!WHG8xawQk8a@N-AG0Re!-&;)_F^q-yB(M^!z8q{ zK?v>B0k_`?y4$d4ZSkWt5=aROd-KyH<}Yp5>dz*&>n{_D%W2%ZjTaAh_wCh62vu` zr5?Rvz>x-_ZIFUemY1|ien9{33=~S<4N8zRkU`FP{hKo!?Ch;9p52ibJpt@tL>oBs zc@iFM8;dO0Vp)t}TM^))ENqc9nJ$|oC6g!+eq0+%RN!%*T5@ym+4EQh*1La#6C zE3*|BLiCmmw{)u;*_hrU7Y9_9D_igyli50>VbF&jl^n0`%VEtSAn*t+;GL%7V!|#M zF&J0~6VhbZFAgr=&mKpeHn*dEvLvU96Gq#DVvBW9hu*?`neGzm`;Df0W^8EOk}xu7 zj;{LM9g6+uYm1j_#fd6PVOw71*soy84Lgb1Us;DR(NV2c&OG4zTwEmzWttwSba*s= zop&_V+aXupZ69jg!b)Azp7vmJ_GyTgA61HSZDK};pM*zy!<8LWMyk+ zXKZL_|7R!?eX?7=2YKia1`G`AKV*NZFg?5KlhQ~;3M1Nz${|0|S)f>q1i9Q`p-a6y zP56W6o81^y$izjN#QSgWmmuMy`t0?)E;jC#6O#Dbx09TpiyA5QQ11a3nL5N9eE{-~ zkCtZyK?SUIsL8<)dYAAaJoJ1Y6IF!xN=UqJWV2+MxJ<&1|GCj+BPYZYhO5i5l0ZiGs_Q{y;>_36^qg zi^e*@BxYK1@nf+fAI++!CK+WiRHh0=o@jf1a!lW{^11|cs7p6fX#Q2YA1irA_JXAd zazoe}9<{^uu}Sk2I5r~^Ts{1S6vDB;GkY%stpD33)G%VhNAtE-DoLhcoRn8l!bX5%iDa$W>}|51@w$1 zA}(Qt^ctAI{6O3jYkh5NnVjy-;BS8j{a&Rti9b> zB}`Q(Z)wbVNADGM^i;a=or{BT^Q>qSG0xbHQC$Q?UQ~0*p$L4Ra zx7hXfuo4r=<0X2GcVKZx6rHV~+Tls??flGgzD@2g`q1O++xI2bW0&xe9M%p!K<6oh zjv+}FU@hUs$*?&__?W$ZXHO+YBZn28HWAF;9L_;&RMa7s=75LNycWaTtB{O9 zE-8H#V!^q2x3dqa`;Hvh_CC}jd2O{)89NOeanV^GC3r&v`D;`iPp6IgcU?}@{y4Cd zgwzGj__#7=@POTHV3Sjr@jxK9kRx;VtGqKgQc|A%JEiY?DvlM3lQOy@JJ1?EmYGlR zE!{+^mIquetn?IRbGX;L?+>&g3pEF>HNG2ls69-Bp+QxCP7OV%sajh-V}maRALi$F zzg2HLN%rS>w5qUKH7oQ)s1R&=dcgU}xG#i8*9yIJ*N@Zw-paz^2;;r4t-Br4TJh=i zAstAHiR{20Ny~z@p(S)CJ_;@eM#i~Cj45B~qn0orxb7ws$W}G#l_GEFG3}$Y7u&9Wajqtf0Mh#y2tI|kcwq1<3-2Q)q+*W z#{=kYK6Pf-`|D}`bbgQfu|3Zp=e^)-TgK+yVx(Q&Ey3?v-_Uy39dyo*ULo931$I??ifU;(! zcxRH%>w^`FRX*bJsIb9#>fF33a0wy?J4`|GI`otrw^hEJa;4kzs&GFf??T^4SOuD} zxk;()-W^*%R8#0j^=Iwh4c68ibVO$p1#rrQAG$;nR|t zN}gxvT}Z)lI=I6&TKa%LegLIg#!Pe^|DJ-BSE2PQ_Uee^z}i-ClgmrxUf0*B{FGC? ztUxRMdGsT?!#1G~72_w*ipi9l%cZ%UJTza)k{+Fpo3ndo23r?yLX`N!Tz!E;8J#a! zGp)gVhh?<6ZCvn2^zI5BnWc0#h$Cvl2a+EB2A#2T5M|ETw7G&sHn>sW_d_k?Tvtvv zbWf|<_I5wcs+APs8qpI#4DC4A$wl;p3-0b4nYqMLub97bROuD;{=>=I?E+$gKo;?vU8+=eQaRe_lrDzE!(cQqAnaUAMEytTFvLJOpR=TeNh zFf-(ylC+8@RRU3bE}v8AWthJda@4<5G_#ZE7$K!W8fIG~u|K#^K(2?jnaw@3?_%6) zQob}2r+%eK8KR2Cs-Ex^-Y05@MoQL*zbP~K-mMI%Z@D(6e8UvAd?tS8DW?fP$&Z=YgiyaZKRRSL94mU z4GMlfA>A5+g83}f!jw&%=J~>ZqOSX1F-04%ly(8}GjCYWYb&V_k1u^t&1y}ly#OfZ zAqDYbETrek)o9g*-^*C@g&fD`e3}C;ZA5CY(DD1wzT%bVwdUq@d}3m3M>h-b!U0g> zY;ejW%_0`hNRO09+s)5AOt8yGvxwL&u+S;VX-${u%_4@fSE7!Dvbp%q5cf{fkG;$Q z-WG4yW2!gU%22jILA8cut4(o$gxq=jNX;Q>H_d#@Lg@H~HS}^dfKiEC*t{h^jhPd~a2QkG(9>W}7S}N{g|Y&e>=-u?;f-;jsFQO@0+8i_)lz7(qLNlJ zbN*W3A)*m(ov79Q9wCO8S0l~m?wt{ZVB(TjMeZNf3+4^QYg{@FF3%7@L+qBrFg{Tv z23SiAC(lSr!44W$Hl5MhlGD_!9(hzu2OnMUZ;)`CUA43X&`S$Hy?pfh@*arafmqm3 zQ0x+?ob%mxKRZ@8(&=<_R%?+UqjpAj-pXlaMlkt$bz&=JgbDpLtU%6QPGu|rURcR9 zRDHtci0Y(pH)uqMDwFKo%$E^)okdC)R(+c+!9Wm(rztM&+d^sGNf)v(-0RWf(qbqC z6C10Un&q%~MZ2@F7p^)1Yqm7t-#Pr!HDm5y{O%hxjy}#dkZ<}y`{-AH?|${HtjwO> z60RU;mBNVpF{AcL=ROT9W)d2$PzX*vFTc2&b}60wRfG<@xj{;_>7r+b_oU?^>xKRD z{kPN8mN&B;d&MIB0@UQrUTI0;DCdd>VHpsQ2T`gtVR899IeF{I>mOwA$laeTSK#lj zw1OxMP_5C|g^m^}MDkuJDvpUDEw^q9DJ$Ztqz4s~O-iAIHB%2Q*H?&(Vh;#IYs(A) zE>rW6Lu-q?jsU@aF{ab))T(9HjpJ%?1A-{o4&Mc6rf-{i3v(r{Sn>e~=iQCj{&QZT z(dLJRx_K_w7&mya=c3y=tTF{RgPBSd7vrLITS>nD}s^8GxL#~Cgx2_Ve zIvJ3!v^eFb>xX6YCxi@cDA>669Mzf;vMI2*2Bf2Hz*q@^z zJ~&ntI8akY*{rT^nM%8CM$x{~JXB$`xJR%5!)O~Fm?uj-SEHzCka&~Q$3^qG#{2MX zvK#E2FndQRdBQ%Bkq`oN#uNSg)`nuI`v>89PSXG?xlint$ofgoX=O@K+ZsW;hfKZ? zM+@bu)PU8^x3RgNn-Nu?N4w142}gftGVsJ!SR|srUR(yZjTe zV>Dv=z-B{Emg#hJC7gsK^r1w=<18+&`C|8P0m>)Jxk)AO0-6oqg_R9gF_ma8{J2bD z|8QDmsL9WYr~-izyP&)?=}>@Mw`gu{9Cp26=w>Rlo)Uc$=77n^4O6%9h3RSo5hc7V zS+kh#f?uk7XVg`(3~yGhb1)2>o8nIJD9iy*#9`}g0JZl+Z{SsPY3inj?hH*q=gB*!rOEUuJ*}I4?t7ZaNh5P z?!B^U5?)CXWCP?%zi8|E)Jwy~4qm-)7%mQYI?Iu7=fU>i9U4s0j~&f^xZHlJ$BSG@ zY1E^7D#Q!pzQv*D0Bmp@UmO#+d-;h*a(< z$OF?vE5m^zfYQ4Rv(<=PExa_7P0d8^D>u%=2q|+81J_seAiMNko6nU;%H-iTMtoU7 z0Ye2d(=MMOCo3m})??9l8j!nR>qNby6?0 zEXf*{BsoJ{AJUFaDwC|zHQL5RHG2CIpxeJv@@Qt)vd+kIi2%n!(h8nE~@|%L*fU_|E9^CPDd_C6qS8#m3g3&WgTNyA&o-$33vr857id;bJSI z7Yh}i`)HAUnMgTa_%ua$D4wUBPbnIrCFjFRBtlg!loAN(PVCoyps#N{J|OrKE+A*{ zG*uL8EZpbqqoi1oQ(XKqIo|~JQiJb^UwXs7t?Dc?GundCAhH1>K-dO_{c~PwDLbgg z+yIt&aZt9kI9%B6WeO02$2Hmj3tqimF}X0Uh!g^-U{bx9EKk;F%Zj8td?7T)b(B|` zZ+*?XVpQ%N)AYXL1-Bq%Pjz|D>adfT;5%_aH;;(7qr15C820&&!P8QvD_+#bpsbZ^&IbCY;`pE~gENTTc z6ysRx8IHZJ_6=j_Na8Y@#bO%F944u*@}zz#d|$C-WZig_f?_N}y93%lzrH&(RyCH4 z?k_9JCWtk%X8BB}^c>rvOK&x`b3~}KF{HLdJB8I+u?mQtIch>^_H~)y zO1yD2CQ2s#rc&V(rDeH3urdb|s8bcA`Iy+KGfDFlC}oxFsoNO4W2t~+gxV=-z6n~7 z&-_$B9EUk~$p+?OI2CPjB%p<}vh7-#@?moVB? zG4CT38_YS)rHoPwc;-{vsKKpb=J79v$8TS9e#(j{OBtSA(BSx#wWm@$%$Xo~qj!UQ z(Gu>XNs(ptww^ll!-PymYY*jWMheEUC&dE7IR?Pl`nK;YOlZc_@p0SQoq;SDHnXj+ zf5*yDtldKeMd$~9Pse`RWd=N+CO?Gpy9;0aV-7tD1xE5h4`vl-8IAS5MI z+}*KCVoc${WafLGPXVt`MU8)WoE>lMjcD`U>}2w>apnQfLpT-%yW;t`USl8RP~WLy+9BZtKnNhv;P zd=fy08ZbrzFHejowjShX^ED`wvSvP@AyZB(=_; zgP_$gW)F7wPZ`c02QULaSYx3A@-ZSaV0K)@2Zh9G`MBVQzZysR8*{dNoyMFAZ+)12#usNzu3>Hl28rac~HqMjvEXZfDa3SikAJnaDL~l z8|o$fCJiaFh&^5f_YtwSS#!%1& zau>k`&^NtdcXu&+a7(1b9)fp3Li0-PWP>LH5Y|wE*^Kr8U7YjZk*SCFfj^98Smj_MvPR@a#lOS zUf&FpYFeX*l0}_m^z7NAuJEEynIrF+uYvCm#-4$nrs7fntr@A?t*=BB-PO9PGVi*7 zWD#+f#h1FsBE0xeZWaf}7ak;|&?CHH7Ej2&88XMXc5BEk+d=N~rV`K{^1Pi)R+`T#V()Z#MR_hZgwC?ju_8NPp_-3Mb4ovM z#Wy!BoesB|0_8pxS9dgMub9lW%(%7{oHo=p=MRrH=+X*?FE^~OI&kV8Zvv&Q2p8kM z^L$YZ?)=3fZFXL5U}7QeY22J-auU?^qdQrsx)=br0JfS3(Fdc;=@w%H=Q%Ia*`19E z#B>g#FP$~fRR|Ek9LifFxY!`DonfQIh2!9(qs!Uy^xKa6*a)Cd^Yynv$hS;%b{xel zoZMDSHKuQhB`X%nPp@3Vi<>*9CvR|8EK3?<(dLaab@Fl4Ig06D`HAQ1(DP(Dr&84P zb8Jf{ZoYf%=&>4kn22?f#8gQk4A64zMUmX~*cQE`dmVy?_mz_n)mu-JCm2PHbLJJ| z7;EW-_%h~&iaUBuFCrP^jKho-s zCAr%hwx-3hGshCiX=A0C*;9h;xYg6u^!(W!*E0(+iifQD@SFhKc0%Ez61Go|ItZHj zld|ka7>@=aTV(GUyx$j`)l-iKmh2N#G0Vf$brG)xEz;frl1`q$|L-(6H0WlZxfWG{n88*nRLIKvgU5kg1bWWo+&?~)yF~3N5E>(v0d)m-C1?TN4&Ic2GT{* zx*MwH@KW!apYJYD+#)?`w3fU4By->!s#ue$14UVZj5lne1zi04B);rzma>+^mv8$s z2xO&s`c|of+*+V*IQ?7it*nZV#@Bh1a)c*XXtouj(;UpB(8GM)bLKmcuSKDuxh8BK z_(sm0Bm+y!jOdU=HT@G6LY8+lJ8Wo^1~g>|L&!46?ggf&_qw~Hr!;Cu#JT;*vX7of znFo5e<6ZdJw8d>N=}MgbZ!G^+GWc(B4w^669)nzPcmGaE{0m)a z(;h}-|6Bi6!O`~kw0L>RZF5P$(k!o6RDXOh9o*Q}KtqK!z=kLn*9yuCy6tvMd}(EZ zGl)Uz3rs~OwIuSsbYtP|x&~KR0(2?y$`UK9dMi%j@r1$aXc5PY+)k!} z4^%^(cx>o^?1?n?Tsgb=qFA{U-_vJwcw4>_ zGsKx>#5Dl^AmB21OO=?*DT49xcwnaE_n-K}3w65>pmYrqsI>B2Qq~Z*va~m}wAWU2 zu{N~RdQRDt#f`{7Frfw9lDGHdYOp9+>xSv-Y#0`iZbE*!>14f%Pxm>$NvG0*5cCd9 zk>EbL?|6D_LwrkP7D6WSWp$=h`&t!T#x-xH)QB)P;W8aP(NCe<8HP;*vU=+L!IV)A zrqibwf3{SDipM&l8l0x`5*%+#%A=NeigDZ-*_Pg@)5@*w4SgGMT|P-2i5-upOOaNJ zI$h<;ZHv@LP?^UPqrNmb7&$DSI9j3I{?JR_5)NHymu-IEi^IV8BFE2h*QvAqG(0<4 zU62WbsSO^;-gs$?=OG{yP~4#uF@H5(6fb~-07OxotS=S#)Yu8tO z_D4{u9~=VhXFBs2qvcP}fSdyc4n_nzY6JeOpMDMS-)q*-5$9KXCdUjC{2hOOH~MD; zde-@6^!P8GpDX5n8GBxmzuL30=k^cM&hPgAr0qNl|FTE%PqlxMc>aXwPjbrN+Mb|S z`Y)sZrmFm@{wJN{Z*@da^73!>zsME;>!F`%1HanyLmNW<3^)Hv;dhkKi2f0u{+#Ha zf$Z7NFO=T=Q|&*(+Mnb6nK%D?95fKA;lE|k{~Q7BkDTA%BP4^^LC+)nl>z+!fA$R! zQ39m;@2c - - + @@ -21,6 +20,92 @@ - + + + select a.id, + a.user_id, + a.wallet_type_id, + a.dept_id, + a.card_number, + a.balance, + a.total_expense, + a.total_recharge, + a.freeze_price, + a.is_freeze, + a.active_bind_time, + a.active_bind_status, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id, + + + + + + + + + + select a.user_id from wallet_manage a + + a.del_flag = 0 + + + + and a.dept_id IN + + + and a.dept_id NOT IN + + + and a.dept_id IN + + + + #{v} + + + + group by a.user_id; + + + + + + + \ No newline at end of file