diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 032a53a02..5adaa80db 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -46,7 +46,7 @@ CREATE TABLE wallet_manage total_expense int DEFAULT 0 NOT NULL COMMENT '累计支出,单位分', total_recharge int DEFAULT 0 NOT NULL COMMENT '累计充值,单位分', freeze_price int DEFAULT 0 NOT NULL COMMENT '冻结金额,单位分', - is_freeze tinyint DEFAULT '0' NOT NULL COMMENT '是否冻结饭卡', + is_freeze char(1) DEFAULT '0' NOT NULL COMMENT '是否冻结饭卡', active_bind_time timestamp COMMENT '绑定饭卡时间', active_bind_status char(10) COMMENT '饭卡绑定状态', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/code/QRCodeExtraDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/code/QRCodeExtraDto.java index 67e04d6e1..9e0a388cc 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/code/QRCodeExtraDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/code/QRCodeExtraDto.java @@ -40,5 +40,5 @@ public class QRCodeExtraDto { /** * 是否冻结饭卡 */ - private Boolean isFreeze = false; + private String isFreeze = "1"; } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/android/HardAdUserVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/android/HardAdUserVo.java index 067b83b09..f52f16579 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/android/HardAdUserVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/android/HardAdUserVo.java @@ -43,5 +43,5 @@ public class HardAdUserVo { /** * 是否冻结饭卡 */ - private Boolean walletIsFreeze; + private String walletIsFreeze; } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx index aaec9141a..ca6d013c1 100644 Binary files a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx and b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx differ diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx index aaec9141a..3d4d1cd2e 100644 Binary files a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx and b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx differ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java index a6425c0a2..e65800fd7 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java @@ -31,7 +31,7 @@ public class WalletRechargeExcelDto { private Long lineNum; @ColumnWidth(100) - @ExcelProperty("用户名") + @ExcelProperty("用户姓名") private String username; @ColumnWidth(100) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java index 0a898e871..170ad31dd 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; + import java.time.LocalDateTime; /** @@ -24,94 +25,94 @@ import java.time.LocalDateTime; public class WalletFreezeEntity extends Model { - /** - * 编号 - */ + /** + * 编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="编号") + @Schema(description = "编号") private Long id; - /** - * 流程id - */ - @Schema(description = "流程id") - private String processId; + /** + * 流程id + */ + @Schema(description = "流程id") + private String processId; - /** - * 流程状态 - */ - @Schema(description = "流程状态") - private String processStatus; + /** + * 流程状态 + */ + @Schema(description = "流程状态") + private String processStatus; - /** - * 钱包id - */ - @Schema(description="钱包id") + /** + * 钱包id + */ + @Schema(description = "钱包id") private Long walletId; - /** - * 用户id - */ - @Schema(description="用户id") + /** + * 用户id + */ + @Schema(description = "用户id") private Long userId; - /** - * 部门id - */ - @Schema(description="部门id") - private Long deptId; + /** + * 部门id + */ + @Schema(description = "部门id") + private Long deptId; - /** - * 冻结状态 - */ - @Schema(description="冻结状态") + /** + * 冻结状态 + */ + @Schema(description = "冻结状态") private String freeStatus; - /** - * 备注 - */ - @Schema(description="备注") + /** + * 备注 + */ + @Schema(description = "备注") private String remark; - /** - * 创建人 - */ - @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/entity/WalletManageEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java index 4c2232d2a..d37ceaa73 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java @@ -3,8 +3,7 @@ package com.bsd.pjcloud.wallet.api.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDateTime; @@ -15,6 +14,9 @@ import java.time.LocalDateTime; * @author dzc * @date 2024-12-30 09:06:35 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("wallet_manage") @@ -82,7 +84,7 @@ public class WalletManageEntity extends Model { * 是否冻结饭卡 */ @Schema(description = "是否冻结饭卡") - private Boolean isFreeze; + private String isFreeze; /** * 绑定饭卡时间 @@ -91,7 +93,7 @@ public class WalletManageEntity extends Model { private LocalDateTime activeBindTime; /** - * 饭卡绑定状态 + * 饭卡绑定状态 1已经绑定 0未绑定 */ @Schema(description = "饭卡绑定状态") private String activeBindStatus; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseWalletInterface.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseWalletInterface.java index 19acede62..d94942b95 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseWalletInterface.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseWalletInterface.java @@ -32,9 +32,9 @@ public interface BaseWalletInterface { void setWalletFreezePrice(Integer walletFreezePrice); - Boolean getWalletIsFreeze(); + String getWalletIsFreeze(); - void setWalletIsFreeze(Boolean walletIsFreeze); + void setWalletIsFreeze(String walletIsFreeze); LocalDateTime getWalletActiveBindTime(); diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/transaction/WalletTransactionVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/transaction/WalletTransactionVo.java index 05a2c3478..be7397bc7 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/transaction/WalletTransactionVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/transaction/WalletTransactionVo.java @@ -48,7 +48,7 @@ public class WalletTransactionVo extends WalletTransactionEntity implements Base private Integer walletFreezePrice; - private Boolean walletIsFreeze; + private String walletIsFreeze; private LocalDateTime walletActiveBindTime; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java index 0d0c105b5..0daf7d27f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; @@ -65,6 +67,17 @@ public class WalletActiveController { } /* ************************************* end android end ************************************* */ + + /* ************************************* start android start ************************************* */ + @PostMapping("/app/bind-card") + @SysLog("app绑定饭卡") + @Operation(summary = "app绑定饭卡") + public R appBindCard(@RequestBody WalletActiveDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(walletActiveService.appBindCard(dto, user)); + } + /* ************************************* end android end ************************************* */ + @GetMapping("/refresh-avatar") @Operation(summary = "重新激活") @SysLog("重新激活") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletFreezeController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletFreezeController.java index fc03aabe5..0c86c2ec9 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletFreezeController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletFreezeController.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.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.dto.WalletFreezeDto; import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; @@ -53,6 +54,22 @@ public class WalletFreezeController { } /* ************************************* start flow callback start ************************************* */ + /* ************************************* start app start ************************************* */ + @PostMapping("/app/apply-freeze") + @Operation(summary = "申请冻结") + public R appApplyFreeze(@RequestBody WalletFreezeDto dto) { + if (ObjectUtil.isEmpty(dto.getWalletId())) { + throw new RuntimeException("钱包id不能为空"); + } + if (ObjectUtil.isEmpty(dto.getRemark())) { + throw new RuntimeException("备注不能为空"); + } + PjcloudUser user = SecurityUtils.getUser(); + walletFreezeService.applyFreeze(dto, user); + return R.ok(true); + } + /* ************************************* start end start ************************************* */ + @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')") 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 aa4d8818c..629ddfa16 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 @@ -111,7 +111,6 @@ public class WalletManageController { public R getQrCode(@RequestParam Long walletId) { return R.ok(walletManageService.getQrCode(walletId)); } - /* ************************************* end app end ************************************* */ @Operation(summary = "分页查询", description = "分页查询") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index 7dbf806b5..e298bdb18 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -67,7 +67,7 @@ public class WalletTransactionController { public R appGetAll(@ParameterObject Page page, @ParameterObject WalletTransactionDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); - return R.ok(walletTransactionService.scopePageList(page, dto)); + return R.ok(walletTransactionService.pageJoin(page, dto)); } /* ************************************* end app end ************************************* */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java index 9fa2d54b1..a212a4c42 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java @@ -2,9 +2,11 @@ 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.security.service.PjcloudUser; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; +import jakarta.validation.constraints.NotEmpty; public interface WalletActiveService extends IService { /** @@ -23,10 +25,32 @@ public interface WalletActiveService extends IService { /** * 重新激活 + * * @param id 开卡id */ Boolean refreshAvatar(Long id); + /** + * 绑定饭卡 + * + * @param dto + * @return + */ + Boolean appBindCard(WalletActiveDto dto, PjcloudUser user); + + /** + * 卡号是否存在 + * + * @return + */ + Boolean exitCardNumber(Long id, String CardNumber); + + /** + * 更具卡号查询开卡信息 + * @return + */ + WalletActiveEntity getByCardNumber(@NotEmpty String cardNumber); + Page pageJoin(Page page, WalletActiveDto dto); Page scopePageList(Page page, WalletActiveDto dto); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java index 44ad9e775..d46eab41d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java @@ -2,6 +2,7 @@ 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.security.service.PjcloudUser; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; import com.bsd.pjcloud.wallet.api.dto.WalletFreezeDto; import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; @@ -16,4 +17,6 @@ public interface WalletFreezeService extends IService { Long create(WalletFreezeDto dto); void applyCallback(ProcessNodeRecordAssignUserParamDto dto); + + void applyFreeze(WalletFreezeDto dto, PjcloudUser user); } \ 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 67c5efbfa..f69f42b4f 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 @@ -45,6 +45,14 @@ public interface WalletManageService extends IService { WalletManageEntity getWallet(@NotNull Long userId, @NotNull WalletTypeEnum walletTypeCode); + /** + * 获取钱包(没有缓存) + * @param cardNumber + * @return + */ + WalletManageEntity getWallet(@NotNull String cardNumber); + + /** * 获取钱包(没有缓存) * diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java index b9473f1e2..d423a7009 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java @@ -9,6 +9,10 @@ import com.bsd.pjcloud.wallet.api.vo.transaction.WalletTransactionVo; public interface WalletTransactionService extends IService { + Page scopePageList(Page page, WalletTransactionDto dto); + + Page pageJoin(Page page, WalletTransactionDto dto); + /** * 扣减钱包余额 * @@ -38,12 +42,4 @@ public interface WalletTransactionService extends IService scopePageList(Page page, WalletTransactionDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java index 0e5967ec2..9c52a6f14 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.wallet.service.impl; import cn.hutool.core.util.ObjectUtil; 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.entity.SysDept; @@ -13,12 +14,14 @@ import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.exception.CheckedException; 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.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.dto.MchManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +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.MchManageVo; @@ -27,6 +30,7 @@ import com.bsd.pjcloud.wallet.mapper.WalletActiveMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.service.MchManageService; import com.bsd.pjcloud.wallet.service.WalletActiveService; +import com.bsd.pjcloud.wallet.service.WalletManageService; import com.bsd.pjcloud.wallet.service.WalletTypeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -34,6 +38,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -50,6 +55,7 @@ import java.util.Map; @Service public class WalletActiveServiceImpl extends ServiceImpl implements WalletActiveService { + private final WalletManageService walletManageService; private final WalletTypeService walletTypeService; private final MchManageService mchManageService; @@ -111,6 +117,46 @@ public class WalletActiveServiceImpl extends ServiceImpl 0; } + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean appBindCard(WalletActiveDto dto, PjcloudUser user) { + WalletActiveEntity walletActive = getByCardNumber(dto.getCardNumber()); + if (ObjectUtil.isEmpty(walletActive)) { + throw new RuntimeException("卡号不存在"); + } + WalletManageEntity wallet = walletManageService.getWallet(dto.getCardNumber()); + if (ObjectUtil.isNotEmpty(wallet)) { + throw new RuntimeException("该卡号已经绑定用户"); + } + WalletManageEntity selfWallet = walletManageService.getWallet(dto.getWalletId()); + if (ObjectUtil.isNotEmpty(selfWallet) && ObjectUtil.isNotEmpty(selfWallet.getCardNumber())) { + throw new RuntimeException("用户已绑定饭卡"); + } + // 更新开卡记录 + WalletActiveEntity walletActiveObj = WalletActiveEntity.builder().id(walletActive.getId()).userId(user.getId()).walletId(selfWallet.getId()).walletTypeId(selfWallet.getWalletTypeId()).build(); + baseMapper.updateById(walletActiveObj); + // 更新用户钱包 + WalletManageEntity walletObj = WalletManageEntity.builder().id(selfWallet.getId()).cardNumber(walletActive.getCardNumber()).activeBindStatus(YesNoEnum.YES.getCode()).activeBindTime(LocalDateTime.now()).build(); + walletManageService.updateById(walletObj); + return true; + } + + @Override + public Boolean exitCardNumber(Long id, String CardNumber) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(id), WalletActiveEntity::getId, id) + .eq(ObjectUtil.isNotEmpty(CardNumber), WalletActiveEntity::getCardNumber, CardNumber) + ); + return count > 0; + } + + @Override + public WalletActiveEntity getByCardNumber(String cardNumber) { + return baseMapper.selectOne(new LambdaQueryWrapper() + .eq(WalletActiveEntity::getCardNumber, cardNumber) + ); + } + @Override public Page pageJoin(Page page, WalletActiveDto dto) { Page list = baseMapper.pageJoin(page, dto); @@ -156,7 +202,7 @@ public class WalletActiveServiceImpl extends ServiceImpl> userList = userService.getUserById(new ArrayList<>(userIds)); if (ObjectUtil.isNotEmpty(userList.getData())) { - DataUtil.convertUserList(page.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); + DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); } } // 部门 @@ -164,7 +210,7 @@ public class WalletActiveServiceImpl extends ServiceImpl> deptList = deptService.getDeptByDeptIds(deptIds); if (ObjectUtil.isNotEmpty(deptList.getData())) { - DataUtil.convertDeptList(page.getRecords(), deptList.getData()); + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); } } // 商户 @@ -172,7 +218,7 @@ public class WalletActiveServiceImpl extends ServiceImpl mchList = mchManageService.list(MchManageDto.builder().ids(mchIds).build()); if (ObjectUtil.isNotEmpty(mchList)) { - WalletDataUtil.convertMchList(page.getRecords(), CollectionUtils.convertMap(mchList, MchManageVo::getId)); + WalletDataUtil.convertMchList(list.getRecords(), CollectionUtils.convertMap(mchList, MchManageVo::getId)); } } } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java index ac41b34b2..0461f87d0 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java @@ -3,6 +3,7 @@ package com.bsd.pjcloud.wallet.service.impl; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -17,6 +18,7 @@ import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; 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.flow.task.constant.NodeStatusEnum; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; @@ -132,16 +134,7 @@ public class WalletFreezeServiceImpl extends ServiceImpl() .eq(WalletFreezeEntity::getUserId, walletId) @@ -176,4 +208,8 @@ public class WalletFreezeServiceImpl extends ServiceImpl 0; } + private WalletFreezeServiceImpl getSelf() { + return SpringUtil.getBean(getClass()); + } + } \ 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 04d6091a5..146841a91 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 @@ -137,6 +137,12 @@ public class WalletManageServiceImpl extends ServiceImpl() + .eq(WalletManageEntity::getCardNumber, cardNumber)); + } + @Override public WalletManageEntity getWallet(Long userId, Long walletTypeId) { WalletTypeEntity walletType = walletTypeService.getById(walletTypeId); @@ -148,7 +154,7 @@ public class WalletManageServiceImpl extends ServiceImpl pageJoin(Page page, WalletTransactionDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletTransactionVo::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)); + } + // 部门 + List deptIds = list.getRecords().stream().map(WalletTransactionVo::getDeptId).distinct().toList(); + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); + } + // 饭卡 + List walletIds = list.getRecords().stream().map(WalletTransactionVo::getWalletId).distinct().toList(); + if (ObjectUtil.isNotEmpty(walletIds)) { + WalletManageDto walletManageDto = new WalletManageDto(); + walletManageDto.setWalletIds(walletIds); + List walletList = walletManageMapper.list(walletManageDto); + if (ObjectUtil.isNotEmpty(walletList)) { + WalletDataUtil.convertWalletList(list.getRecords(), CollectionUtils.convertMap(walletList, WalletManageEntity::getId)); + } + } + // 饭卡类型 + List walletTypeIds = list.getRecords().stream().map(WalletTransactionVo::getWalletTypeId).distinct().toList(); + if (ObjectUtil.isNotEmpty(walletTypeIds)) { + WalletTypeDto walletTypeDto = new WalletTypeDto(); + walletTypeDto.setWalletTypeIds(walletTypeIds); + List walletTypeList = walletTypeMapper.list(walletTypeDto); + if (ObjectUtil.isNotEmpty(walletTypeList)) { + WalletDataUtil.convertWalletTypeList(list.getRecords(), CollectionUtils.convertMap(walletTypeList, WalletTypeEntity::getId)); + } + } + // 订单 + if (dto.getIsFindOrder()) { + list.getRecords().forEach(v -> { + if (ObjectUtil.isNotEmpty(v.getBizId())) { + v.setOrderId(Long.valueOf(v.getBizId())); + } + }); + } + } + return list; + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java index b9bc0f6cd..f9257326a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java @@ -238,11 +238,15 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl user = userService.getUserByNameAndMobile(v.getUsername(), v.getUserMobile()); - Optional userId = Optional.of(user).map(R::getData).map(UserInfo::getSysUser).map(SysUser::getUserId); - if (userId.isEmpty()) { + Optional sysUser = Optional.of(user).map(R::getData).map(UserInfo::getSysUser); + if (sysUser.isEmpty()) { errors.add("用户不存在"); } else { - v.setUserId(userId.get()); + if (!ObjectUtil.equals(sysUser.get().getName(), v.getUsername())) { + errors.add("用户不存在"); + } else { + v.setUserId(sysUser.get().getUserId()); + } } } if (ObjectUtil.isNotEmpty(errors)) {