diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index 2ad288f26..942b32b55 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -142,8 +142,8 @@ public class SysUserServiceImpl extends ServiceImpl impl BeanUtils.copyProperties(userDto, sysUser); // 判断是否为部门管理员 PjcloudUser applyUser = SecurityUtils.getUser(); - boolean isDeptAdmin=false; - if (null!=applyUser){ + boolean isDeptAdmin = false; + if (null != applyUser) { isDeptAdmin = sysRoleService.isDeptAdmin(applyUser.getId()); if (isDeptAdmin) { List defaultRoles = sysRoleService.findRolesByCodes(List.of(CommonRoleConstant.DEFAULT_USER, CommonRoleConstant.AUTO_CREATE_WALLET)); @@ -323,8 +323,16 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override @Transactional(rollbackFor = Exception.class) public Boolean deleteUserByIds(Long[] ids) { - // 删除 spring cache List userList = baseMapper.selectBatchIds(CollUtil.toList(ids)); + // 判断是否可以删除 + userList.forEach(v -> { + String errorMsg = remoteWalletService.isDel(v.getUserId()).getData(); + if (ObjectUtil.isNotEmpty(errorMsg)) { + throw new RuntimeException(errorMsg); + } + }); + + // 删除 spring cache Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS); for (SysUser sysUser : userList) { cache.evict(sysUser.getUsername()); diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java index 490cfaf0a..ba36fb2d7 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java @@ -15,6 +15,7 @@ public enum WalletBizEnum { RECHARGE("3", "充值"), PAYMENT("4", "支付"), REFUND("5", "退款"), + TRANSFER_ACCOUNTS("6", "转账"), ; private final String code; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleTransactionDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleTransactionDto.java index 80f9be574..237859dce 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleTransactionDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/rule/WalletRuleTransactionDto.java @@ -1,6 +1,20 @@ package com.bsd.pjcloud.wallet.api.dto.rule; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class WalletRuleTransactionDto extends WalletRuleTransactionEntity implements BaseIsIncludeTreeInterface { + + /** + * 树状结构搜索 + */ + + private List deptIds; + + private Boolean isInclude = false; -public class WalletRuleTransactionDto extends WalletRuleTransactionEntity { } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java index 35dfaae66..8f673add6 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; + import java.time.LocalDateTime; /** @@ -19,100 +20,100 @@ import java.time.LocalDateTime; public class WalletRuleTransactionEntity extends Model { - /** - * 主键 - */ + /** + * 主键 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="主键") + @Schema(description = "主键") private Long id; - /** - * 源钱包id - */ - @Schema(description="源钱包id") + /** + * 源钱包id + */ + @Schema(description = "源钱包id") private Long sourceWalletId; - /** - * 目标钱包id - */ - @Schema(description="目标钱包id") + /** + * 目标钱包id + */ + @Schema(description = "目标钱包id") private Long targetWalletId; - /** - * 源钱包余额 - */ - @Schema(description="源钱包余额") + /** + * 源钱包余额 + */ + @Schema(description = "源钱包余额") private Integer sourceWalletBalance; - /** - * 目标钱包余额 - */ - @Schema(description="目标钱包余额") + /** + * 目标钱包余额 + */ + @Schema(description = "目标钱包余额") private Integer targetWalletBalance; - /** - * 转换金额 - */ - @Schema(description="转换金额") + /** + * 转换金额 + */ + @Schema(description = "转换金额") private Integer balance; - /** - * 转换后的金额 - */ - @Schema(description="转换后的金额") + /** + * 转换后的金额 + */ + @Schema(description = "转换后的金额") private Integer afterBalance; - /** - * 钱包转换百分比 - */ - @Schema(description="钱包转换百分比") + /** + * 钱包转换百分比 + */ + @Schema(description = "钱包转换百分比") private Integer balanceMultiple; - /** - * 是否退回 - */ - @Schema(description="是否退回") + /** + * 是否退回 + */ + @Schema(description = "是否退回") private String isRefund; - /** - * 创建人 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") private String createBy; - /** - * 创建时间 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") private LocalDateTime createTime; - /** - * 修改人 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") private String updateBy; - /** - * 修改时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") private LocalDateTime updateTime; - /** - * 删除标记 - */ + /** + * 删除标记 + */ @TableLogic - @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") private String delFlag; - /** - * 租户ID - */ - @Schema(description="租户ID") + /** + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index 3196f612e..ec3118e7d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -49,4 +49,7 @@ public interface RemoteWalletService { @GetMapping("/wallet-manage/dept-change") R deptChange(@RequestParam Long deptId, @RequestParam Boolean isDel); + + @GetMapping("/wallet-manage/is-del") + R isDel(@RequestParam Long userId); } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleTransactionVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleTransactionVo.java index 806aae3af..2a486a7f8 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleTransactionVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/rule/WalletRuleTransactionVo.java @@ -1,6 +1,30 @@ package com.bsd.pjcloud.wallet.api.vo.rule; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; +import lombok.Data; +@Data public class WalletRuleTransactionVo extends WalletRuleTransactionEntity { + + /** + * 用户相关 + */ + private Long userId; + + private Long deptId; + + /** + * 源钱包相关 + */ + private String sourceWalletTypeName; + + private String sourceWalletTypeCode; + + /** + * 目标钱包相关 + */ + private String targetWalletTypeName; + + private String targetWalletTypeCode; + } 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 ad9b0fd29..4d2ef56b3 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 @@ -126,6 +126,11 @@ public class WalletManageController { return R.ok(true); } + @GetMapping("/is-del") + public R isDel(@RequestParam Long userId) { + return R.ok(walletManageService.isDel(userId)); + } + /* ************************************* end 远程调用 end ************************************* */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java index a65653f4a..37b3620e5 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java @@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.data.datascope.DataScopeFuncEnum; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.rule.WalletRuleTransactionDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; import com.bsd.pjcloud.wallet.service.WalletRuleTransactionService; import org.springframework.security.access.prepost.PreAuthorize; @@ -42,6 +45,14 @@ public class WalletRuleTransactionController { return R.ok(walletRuleTransactionService.page(page, wrapper)); } + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('wallet_walletRuleTransaction_view')") + public R pageJoin(@ParameterObject Page page, @ParameterObject WalletRuleTransactionDto dto) { + DataScope dataScope = DataScope.of().func(DataScopeFuncEnum.ALL); + return R.ok(walletRuleTransactionService.scopePageList(page, dto, dataScope)); + } + @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletRuleTransaction_view')") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/rule/WalletRuleTransactionMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/rule/WalletRuleTransactionMapper.java index fb1496256..342c8f6ae 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/rule/WalletRuleTransactionMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/rule/WalletRuleTransactionMapper.java @@ -1,11 +1,17 @@ package com.bsd.pjcloud.wallet.mapper.rule; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.rule.WalletRuleTransactionDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.rule.WalletRuleTransactionVo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; @Mapper public interface WalletRuleTransactionMapper extends PjcloudBaseMapper { + Page scopePageList(Page page, @Param("dto") WalletRuleTransactionDto dto, DataScope dataScope); } \ 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 a40724ec7..f4976cf1c 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 @@ -124,4 +124,9 @@ public interface WalletManageService extends IService { * 修改部门 */ void deptChange(Long deptId, Boolean isDel); + + /** + * 是否可以删除该用户 + */ + String isDel(Long userId); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java index 44fbb582c..78b4acc8d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java @@ -1,8 +1,17 @@ package com.bsd.pjcloud.wallet.service; +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.dto.rule.WalletRuleTransactionDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.rule.WalletRuleTransactionVo; public interface WalletRuleTransactionService extends IService { + /** + * 分页复杂查询 + */ + Page scopePageList(Page page, WalletRuleTransactionDto dto, DataScope dataScope); + } \ 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 a50f74128..e90f18484 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 @@ -39,6 +39,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; @@ -46,6 +47,7 @@ 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; +import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.service.*; import jakarta.servlet.http.HttpServletResponse; @@ -93,6 +95,7 @@ public class WalletManageServiceImpl extends ServiceImpl() + .eq(WalletTransactionEntity::getUserId, userId) + ); + if (transactionCount > 0) { + return "用户有消费记录,不能删除"; + } + // 钱包类型 + List walletList = walletTypeMapper.selectList(null); + if (ObjectUtil.isEmpty(walletList)) return ""; + for (WalletTypeEntity v : walletList) { + WalletManageEntity wallet = getWallet(userId, v.getId()); + if (ObjectUtil.isEmpty(wallet)) continue; + if (wallet.getBalance() > 0) { + return "用户" + v.getName() + ",还有" + wallet.getBalance() / 100 + "元,不能删除"; + } + } + return ""; + } + 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/rule/WalletRuleTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java index d12b54765..1b67229fd 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java @@ -1,7 +1,11 @@ package com.bsd.pjcloud.wallet.service.impl.rule; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.wallet.api.dto.rule.WalletRuleTransactionDto; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.rule.WalletRuleTransactionVo; import com.bsd.pjcloud.wallet.mapper.rule.WalletRuleTransactionMapper; import com.bsd.pjcloud.wallet.service.WalletRuleTransactionService; import lombok.RequiredArgsConstructor; @@ -17,4 +21,12 @@ import org.springframework.validation.annotation.Validated; @RequiredArgsConstructor @Service public class WalletRuleTransactionServiceImpl extends ServiceImpl implements WalletRuleTransactionService { + + /** + * 分页复杂查询 + */ + @Override + public Page scopePageList(Page page, WalletRuleTransactionDto dto, DataScope dataScope) { + return baseMapper.scopePageList(page, dto, dataScope); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml index 54da92661..f0a0f878b 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml @@ -19,4 +19,67 @@ + + + select a.id, + a.source_wallet_id, + a.target_wallet_id, + a.source_wallet_balance, + a.target_wallet_balance, + a.balance, + a.after_balance, + a.balance_multiple, + a.is_refund, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id, + + + + a.del_flag = 0 + + and a.source_wallet_id = #{dto.sourceWalletId} + + + and a.target_wallet_id = #{dto.targetWalletId} + + + + \ No newline at end of file