From 4f4055f9e5bfabae1f218f3fa35a53d888172bbb Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 3 Jan 2025 13:02:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=E6=9D=83=E9=99=90=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 42 +++--- .../task/controller/ProcessController.java | 6 +- .../controller/ProcessInstanceController.java | 2 +- .../flow/task/service/IProcessService.java | 2 + .../task/service/impl/ProcessServiceImpl.java | 2 + .../wallet/api/dto/WalletForeignDto.java | 18 +++ .../wallet/api/dto/WalletStrideDto.java | 7 + .../api/entity/WalletForeignEntity.java | 141 ++++++++++-------- .../wallet/api/entity/WalletStrideEntity.java | 125 +++++++++------- .../wallet/api/vo/WalletForeignVo.java | 18 ++- .../pjcloud/wallet/api/vo/WalletStrideVo.java | 17 ++- pjcloud-wallet/pjcloud-wallet-biz/pom.xml | 4 + .../controller/WalletForeignController.java | 121 +++++++++++++++ .../controller/WalletStrideController.java | 89 ++++++----- .../wallet/mapper/WalletForeignMapper.java | 14 +- .../wallet/mapper/WalletStrideMapper.java | 14 +- .../wallet/service/WalletForeignService.java | 9 ++ .../wallet/service/WalletStrideService.java | 14 ++ .../impl/WalletForeignServiceImpl.java | 86 ++++++++++- .../service/impl/WalletManageServiceImpl.java | 4 +- .../service/impl/WalletStrideServiceImpl.java | 107 +++++++++++++ .../bsd/pjcloud/wallet/utils/FlowUtil.java | 84 +++++++++++ 22 files changed, 740 insertions(+), 186 deletions(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletForeignDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 43091580e..da8e88f91 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -226,18 +226,20 @@ CREATE INDEX idx_dept_id ON wallet_recharge_import (user_id); DROP TABLE IF EXISTS wallet_stride; CREATE TABLE wallet_stride ( - id bigint NOT NULL COMMENT '编号', - dept_id bigint NOT NULL COMMENT '部门id', - count int NOT NULL COMMENT '申请数量', - use_count int NOT NULL COMMENT '使用数量', - user_id bigint NOT NULL COMMENT '申请人id', - remark varchar(1024) COMMENT '备注', - create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', - create_time datetime DEFAULT NULL COMMENT '创建时间', - update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', - update_time datetime DEFAULT NULL COMMENT '修改时间', - del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', - tenant_id bigint DEFAULT NULL COMMENT '租户ID', + id bigint NOT NULL COMMENT '编号', + process_id varchar(256) COMMENT '流程id', + process_status int(10) NOT NULL COMMENT '审核状体', + dept_id bigint NOT NULL COMMENT '部门id', + count int NOT NULL COMMENT '申请数量', + use_count int DEFAULT 0 COMMENT '使用数量', + user_id bigint NOT NULL COMMENT '申请人id', + remark varchar(1024) COMMENT '备注', + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', PRIMARY KEY (id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='跨单位就餐'; @@ -248,13 +250,15 @@ CREATE TABLE wallet_stride DROP TABLE IF EXISTS wallet_foreign; CREATE TABLE wallet_foreign ( - id bigint NOT NULL COMMENT '编号', - user_id bigint NOT NULL COMMENT '用户id', - dept_id bigint NOT NULL COMMENT '部门id', - apply_start_time date NULL COMMENT '申请使用开始时间', - apply_end_time date NULL COMMENT '申请使用结束时间', - count int NOT NULL COMMENT '申请数量', - use_count int NOT NULL COMMENT '使用数量', + id bigint NOT NULL COMMENT '编号', + user_id bigint NOT NULL COMMENT '用户id', + process_id varchar(256) COMMENT '流程id', + process_status int(10) NOT NULL COMMENT '审核状体', + dept_id bigint NOT NULL COMMENT '部门id', + apply_start_time date NULL COMMENT '申请使用开始时间', + apply_end_time date NULL COMMENT '申请使用结束时间', + count int NOT NULL COMMENT '申请数量', + use_count int DEFAULT 0 COMMENT '使用数量', remark VARCHAR(1024) COMMENT '申请备注', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessController.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessController.java index b01b0c033..5af10488c 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessController.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessController.java @@ -19,7 +19,7 @@ public class ProcessController { * @param flowId * @return */ - @GetMapping("getDetail") + @GetMapping("/getDetail") public R getDetail(String flowId) { return processService.getDetail(flowId); } @@ -29,7 +29,7 @@ public class ProcessController { * @param process * @return */ - @PostMapping("create") + @PostMapping("/create") public R create(@RequestBody Process process) { return processService.create(process); } @@ -40,7 +40,7 @@ public class ProcessController { * @param type 类型 stop using delete * @return 操作结果 */ - @PutMapping("update/{flowId}") + @PutMapping("/update/{flowId}") public R update(@PathVariable String flowId, @RequestParam String type, @RequestParam(required = false) Long groupId) { return processService.update(flowId, type, groupId); diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java index 33d69b272..15d5d1563 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java @@ -26,7 +26,7 @@ public class ProcessInstanceController { * @return */ @SneakyThrows - @PostMapping("startProcessInstance") + @PostMapping("/startProcessInstance") public R startProcessInstance(@RequestBody ProcessInstanceParamDto processInstanceParamDto) { return processInstanceService.startProcessInstance(processInstanceParamDto); } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessService.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessService.java index f3862d4ff..c597fd33f 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessService.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessService.java @@ -5,6 +5,8 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.flow.task.entity.Process; import com.bsd.pjcloud.flow.task.vo.ProcessVO; +import java.util.List; + /** *

* 服务类 diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessServiceImpl.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessServiceImpl.java index 5ad42fd21..21041c265 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessServiceImpl.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessServiceImpl.java @@ -259,4 +259,6 @@ public class ProcessServiceImpl extends ServiceImpl impl return R.ok(); } + + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletForeignDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletForeignDto.java new file mode 100644 index 000000000..0cdc27af0 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletForeignDto.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; +import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class WalletForeignDto extends WalletForeignEntity { + + private List userIds; + + private List deptIds; + + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletStrideDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletStrideDto.java index e3eaff66a..9e307d801 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletStrideDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletStrideDto.java @@ -3,6 +3,13 @@ package com.bsd.pjcloud.wallet.api.dto; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; import lombok.Data; +import java.util.List; + @Data public class WalletStrideDto extends WalletStrideEntity { + + private List userIds; + + private List deptIds; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java index cf9f65a0e..7ea49dc35 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java @@ -3,9 +3,9 @@ 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.LocalDate; import java.time.LocalDateTime; @@ -15,6 +15,9 @@ import java.time.LocalDateTime; * @author dzc * @date 2025-01-02 16:26:48 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("wallet_foreign") @@ -23,94 +26,106 @@ import java.time.LocalDateTime; public class WalletForeignEntity extends Model { - /** - * 编号 - */ + /** + * 编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="编号") + @Schema(description = "编号") private Long id; - /** - * 用户id - */ - @Schema(description="用户id") + /** + * 用户id + */ + @Schema(description = "用户id") private Long userId; - /** - * 部门id - */ - @Schema(description="部门id") + /** + * 流程id + */ + @Schema(description = "流程id") + private String processId; + + /** + * 流程状态 + */ + @Schema(description = "流程状态") + private Integer processStatus; + + /** + * 部门id + */ + @Schema(description = "部门id") private Long deptId; - /** - * 申请使用开始时间 - */ - @Schema(description="申请使用开始时间") + /** + * 申请使用开始时间 + */ + @Schema(description = "申请使用开始时间") private LocalDate applyStartTime; - /** - * 申请使用结束时间 - */ - @Schema(description="申请使用结束时间") + /** + * 申请使用结束时间 + */ + @Schema(description = "申请使用结束时间") private LocalDate applyEndTime; - /** - * 申请数量 - */ - @Schema(description="申请数量") + /** + * 申请数量 + */ + @Schema(description = "申请数量") private Integer count; - /** - * 使用数量 - */ - @Schema(description="使用数量") + /** + * 使用数量 + */ + @Schema(description = "使用数量") private Integer useCount; - /** - * 申请备注 - */ - @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/WalletStrideEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java index 547d08f36..794f2a8ce 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java @@ -3,9 +3,9 @@ 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; /** @@ -14,6 +14,9 @@ import java.time.LocalDateTime; * @author pjcloud * @date 2025-01-02 16:27:26 */ +@Builder +@NoArgsConstructor +@AllArgsConstructor @Data @TenantTable @TableName("wallet_stride") @@ -22,82 +25,94 @@ import java.time.LocalDateTime; public class WalletStrideEntity extends Model { - /** - * 编号 - */ + /** + * 编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="编号") + @Schema(description = "编号") private Long id; - /** - * 部门id - */ - @Schema(description="部门id") + /** + * 流程id + */ + @Schema(description = "流程id") + private String processId; + + /** + * 流程状态 + */ + @Schema(description = "流程状态") + private Integer processStatus; + + /** + * 部门id + */ + @Schema(description = "部门id") private Long deptId; - /** - * 申请数量 - */ - @Schema(description="申请数量") + /** + * 申请数量 + */ + @Schema(description = "申请数量") private Integer count; - /** - * 使用数量 - */ - @Schema(description="使用数量") + /** + * 使用数量 + */ + @Schema(description = "使用数量") private Integer useCount; - /** - * 申请人id - */ - @Schema(description="申请人id") + /** + * 申请人id + */ + @Schema(description = "申请人id") private Long userId; - /** - * 备注 - */ - @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/vo/WalletForeignVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletForeignVo.java index 73c291e1f..a0b132ed8 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletForeignVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletForeignVo.java @@ -1,9 +1,25 @@ package com.bsd.pjcloud.wallet.api.vo; +import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; import lombok.Data; @Data -public class WalletForeignVo extends WalletForeignEntity { +public class WalletForeignVo extends WalletForeignEntity implements BaseUserInterface, BaseDeptInterface { + + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + + /** + * 部门相关 + */ + private String deptName; } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletStrideVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletStrideVo.java index ed32612a2..5ee79a699 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletStrideVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletStrideVo.java @@ -1,9 +1,24 @@ package com.bsd.pjcloud.wallet.api.vo; +import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; import lombok.Data; @Data -public class WalletStrideVo extends WalletStrideEntity { +public class WalletStrideVo extends WalletStrideEntity implements BaseUserInterface, BaseDeptInterface { + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + + /** + * 部门相关 + */ + private String deptName; } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml index 0b52cbc90..8410b5b60 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml @@ -98,6 +98,10 @@ com.bsd pjcloud-common-idempotent + + com.bsd + pjcloud-flow-task-api + diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java new file mode 100644 index 000000000..9a2714cb2 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java @@ -0,0 +1,121 @@ +package com.bsd.pjcloud.wallet.controller; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +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.log.annotation.SysLog; +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.WalletForeignDto; +import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; +import com.bsd.pjcloud.wallet.service.WalletForeignService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 外来人员电子餐券表 + * + * @author dzc + * @date 2025-01-02 16:26:48 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/wallet-foreign") +@Tag(description = "wallet-foreign", name = "外来人员电子餐券表管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class WalletForeignController { + + private final WalletForeignService walletForeignService; + + /* ************************************* start flow callback start ************************************* */ + + @Inner + @PostMapping("/apply-callback") + public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto) { + walletForeignService.applyCallback(dto); + } + + /* ************************************* start flow callback start ************************************* */ + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_view')") + public R getWalletForeignPage(@ParameterObject Page page, @ParameterObject WalletForeignEntity walletForeign) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return R.ok(walletForeignService.page(page, wrapper)); + } + + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_view')") + public R getWalletForeignPageJoin(@ParameterObject Page page, @ParameterObject WalletForeignDto dto) { + return R.ok(walletForeignService.pageJoin(page, dto)); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(walletForeignService.getById(id)); + } + + @Operation(summary = "新增外来人员电子餐券表", description = "新增外来人员电子餐券表") + @SysLog("新增外来人员电子餐券表") + @PostMapping + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_add')") + public R save(@RequestBody WalletForeignDto dto) { + return R.ok(walletForeignService.create(dto)); + } + + @Operation(summary = "App新增外来人员电子餐券表", description = "App新增外来人员电子餐券表") + @SysLog("App新增外来人员电子餐券表") + @PostMapping("/app") + public R appSave(@RequestBody WalletForeignDto dto) { + PjcloudUser loginUser = SecurityUtils.getUser(); + dto.setUserId(loginUser.getId()); + return R.ok(walletForeignService.create(dto)); + } + + @Operation(summary = "修改外来人员电子餐券表", description = "修改外来人员电子餐券表") + @SysLog("修改外来人员电子餐券表") + @PutMapping + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_edit')") + public R updateById(@RequestBody WalletForeignEntity walletForeign) { + return R.ok(walletForeignService.updateById(walletForeign)); + } + + /** + * 通过id删除外来人员电子餐券表 + * + * @param ids id列表 + * @return R + */ + @Operation(summary = "通过id删除外来人员电子餐券表", description = "通过id删除外来人员电子餐券表") + @SysLog("通过id删除外来人员电子餐券表") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(walletForeignService.removeBatchByIds(CollUtil.toList(ids))); + } + + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('wallet_walletForeign_export')") + public List export(WalletForeignEntity walletForeign, Long[] ids) { + return walletForeignService.list(Wrappers.lambdaQuery(walletForeign).in(ArrayUtil.isNotEmpty(ids), WalletForeignEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java index aa119a1d2..648c61bdf 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java @@ -7,6 +7,12 @@ 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.log.annotation.SysLog; +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.WalletForeignDto; +import com.bsd.pjcloud.wallet.api.dto.WalletStrideDto; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; import com.bsd.pjcloud.wallet.service.WalletStrideService; import org.springframework.security.access.prepost.PreAuthorize; @@ -20,7 +26,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Objects; /** * 跨单位就餐 @@ -30,19 +35,24 @@ import java.util.Objects; */ @RestController @RequiredArgsConstructor -@RequestMapping("/walletStride" ) -@Tag(description = "walletStride" , name = "跨单位就餐管理" ) +@RequestMapping("/wallet-stride" ) +@Tag(description = "wallet-stride" , name = "跨单位就餐管理" ) @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class WalletStrideController { private final WalletStrideService walletStrideService; - /** - * 分页查询 - * @param page 分页对象 - * @param walletStride 跨单位就餐 - * @return - */ + + /* ************************************* start flow callback start ************************************* */ + + @Inner + @PostMapping("/apply-callback" ) + public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto) { + walletStrideService.applyCallback(dto); + } + + /* ************************************* start flow callback start ************************************* */ + @Operation(summary = "分页查询" , description = "分页查询" ) @GetMapping("/page" ) @PreAuthorize("@pms.hasPermission('admin_walletStride_view')" ) @@ -51,12 +61,13 @@ public class WalletStrideController { return R.ok(walletStrideService.page(page, wrapper)); } + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('admin_walletStride_view')") + public R getWalletStrideJoin(@ParameterObject Page page, @ParameterObject WalletStrideDto dto) { + return R.ok(walletStrideService.pageJoin(page, dto)); + } - /** - * 通过id查询跨单位就餐 - * @param id id - * @return R - */ @Operation(summary = "通过id查询" , description = "通过id查询" ) @GetMapping("/{id}" ) @PreAuthorize("@pms.hasPermission('admin_walletStride_view')" ) @@ -64,24 +75,38 @@ public class WalletStrideController { return R.ok(walletStrideService.getById(id)); } - /** - * 新增跨单位就餐 - * @param walletStride 跨单位就餐 - * @return R - */ @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) @SysLog("新增跨单位就餐" ) @PostMapping @PreAuthorize("@pms.hasPermission('admin_walletStride_add')" ) - public R save(@RequestBody WalletStrideEntity walletStride) { - return R.ok(walletStrideService.save(walletStride)); + public R save(@RequestBody WalletStrideDto dto) { + return R.ok(walletStrideService.create(dto)); + } + + @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) + @SysLog("新增跨单位就餐" ) + @PostMapping("/app") + public R appSave(@RequestBody WalletStrideDto dto) { + PjcloudUser loginUser = SecurityUtils.getUser(); + dto.setUserId(loginUser.getId()); + return R.ok(walletStrideService.create(dto)); + } + + @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) + @SysLog("admin申请" ) + @PostMapping("/apply") + @PreAuthorize("@pms.hasPermission('admin_walletStride_apply')" ) + public R apply(@RequestBody WalletStrideDto dto) { + return R.ok(walletStrideService.apply(dto)); + } + + @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) + @SysLog("app申请" ) + @PostMapping("/app-apply") + public R appApply(@RequestBody WalletStrideDto dto) { + return R.ok(walletStrideService.apply(dto)); } - /** - * 修改跨单位就餐 - * @param walletStride 跨单位就餐 - * @return R - */ @Operation(summary = "修改跨单位就餐" , description = "修改跨单位就餐" ) @SysLog("修改跨单位就餐" ) @PutMapping @@ -90,11 +115,6 @@ public class WalletStrideController { return R.ok(walletStrideService.updateById(walletStride)); } - /** - * 通过id删除跨单位就餐 - * @param ids id列表 - * @return R - */ @Operation(summary = "通过id删除跨单位就餐" , description = "通过id删除跨单位就餐" ) @SysLog("通过id删除跨单位就餐" ) @DeleteMapping @@ -103,13 +123,6 @@ public class WalletStrideController { return R.ok(walletStrideService.removeBatchByIds(CollUtil.toList(ids))); } - - /** - * 导出excel 表格 - * @param walletStride 查询条件 - * @param ids 导出指定ID - * @return excel 文件流 - */ @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('admin_walletStride_export')" ) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java index e5926d76c..54b96642c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java @@ -1,10 +1,22 @@ package com.bsd.pjcloud.wallet.mapper; +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.wallet.api.dto.WalletForeignDto; import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletForeignVo; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface WalletForeignMapper extends PjcloudBaseMapper { - + + default Page pageJoin(Page page, WalletForeignDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(WalletForeignEntity.class) + .in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletForeignEntity::getDeptId, dto.getDeptIds()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletForeignEntity::getUserId, dto.getUserIds()); + return selectJoinPage(page, WalletForeignVo.class, wrapper); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletStrideMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletStrideMapper.java index 01ebc0ec3..6b1fbddcb 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletStrideMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletStrideMapper.java @@ -1,11 +1,23 @@ package com.bsd.pjcloud.wallet.mapper; +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.admin.entity.WalletStrideEntity; +import com.bsd.pjcloud.wallet.api.dto.WalletStrideDto; +import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletStrideVo; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface WalletStrideMapper extends PjcloudBaseMapper { + default Page pageJoin(Page page, WalletStrideDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(WalletStrideEntity.class) + .in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletStrideEntity::getDeptId, dto.getDeptIds()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletStrideEntity::getUserId, dto.getUserIds()); + return selectJoinPage(page, WalletStrideVo.class, wrapper); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletForeignService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletForeignService.java index 4f348a0e3..b10f4f85c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletForeignService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletForeignService.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.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.wallet.api.dto.WalletForeignDto; import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletForeignVo; public interface WalletForeignService extends IService { + Long create(WalletForeignDto dto); + + Page pageJoin(Page page, WalletForeignDto dto); + + void applyCallback(ProcessNodeRecordAssignUserParamDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletStrideService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletStrideService.java index 834e3dd3a..52d760458 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletStrideService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletStrideService.java @@ -1,8 +1,22 @@ 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.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.wallet.api.dto.WalletStrideDto; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletStrideVo; +import jakarta.validation.constraints.NotNull; public interface WalletStrideService extends IService { + Boolean apply(WalletStrideDto dto); + + Long create(WalletStrideDto dto); + + Page pageJoin(Page page, WalletStrideDto dto); + + WalletStrideVo detail(@NotNull Long id); + + void applyCallback(ProcessNodeRecordAssignUserParamDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java index 0d3d07796..e275fe8f9 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java @@ -1,10 +1,35 @@ package com.bsd.pjcloud.wallet.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.dto.UserInfo; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; +import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.wallet.api.dto.WalletForeignDto; import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletForeignVo; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.mapper.WalletForeignMapper; import com.bsd.pjcloud.wallet.service.WalletForeignService; +import com.bsd.pjcloud.wallet.utils.FlowUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** * 外来人员电子餐券表 @@ -12,7 +37,66 @@ import org.springframework.stereotype.Service; * @author dzc * @date 2025-01-02 16:26:48 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletForeignServiceImpl extends ServiceImpl implements WalletForeignService { - + + private final RemoteUserService userService; + private final RemoteDeptService deptService; + + private final FlowUtil flowUtil; + + @Override + public Long create(WalletForeignDto dto) { + // 查询发起人 + R userData = userService.getByUserId(dto.getUserId()); + if (ObjectUtil.isEmpty(userData.getData())) { + throw new RuntimeException("发起人不存在"); + } + // 判断之前有没有在审核的 + if (isCheckData(dto.getUserId())) { + throw new RuntimeException("已提交申请,请勿重复提交"); + } + dto.setDeptId(userData.getData().getSysUser().getDeptId()); + dto.setProcessStatus(NodeStatusEnum.WKS.getCode()); + baseMapper.insert(dto); + // 发起审批 + String processId = flowUtil.startFlow("TASK_STRIDE_FLOW", userData.getData().getSysUser(), dto.getId()); + baseMapper.updateById(WalletForeignEntity.builder().id(dto.getId()).processId(processId).processStatus(NodeStatusEnum.JXZ.getCode()).build()); + return dto.getId(); + } + + @Override + public Page pageJoin(Page page, WalletForeignDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletForeignVo::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(WalletForeignVo::getDeptId).distinct().toList(); + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); + } + } + return list; + } + + @Override + public void applyCallback(ProcessNodeRecordAssignUserParamDto dto) { + + } + + private boolean isCheckData(Long walletId) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(WalletForeignEntity::getUserId, walletId) + ); + return count > 0; + } } \ 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 2953349e6..a20edf7f8 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 @@ -145,13 +145,13 @@ public class WalletManageServiceImpl extends ServiceImpl userIds = list.getRecords().stream().map(WalletManageVo::getUserId).distinct().toList(); R> 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)); } // 部门 List deptIds = list.getRecords().stream().map(WalletManageVo::getDeptId).distinct().toList(); R> deptList = deptService.getDeptByDeptIds(deptIds); if (ObjectUtil.isNotEmpty(deptList.getData())) { - DataUtil.convertDeptList(page.getRecords(), deptList.getData()); + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); } } return R.ok(list); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java index ffa17cdcc..86e3cdad0 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java @@ -1,16 +1,123 @@ package com.bsd.pjcloud.wallet.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.dto.UserInfo; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; +import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.common.core.constant.enums.TaskStatusEnum; +import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.resolver.ParamResolver; +import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; +import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum; +import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.flow.task.vo.ProcessVO; +import com.bsd.pjcloud.wallet.api.dto.WalletStrideDto; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletStrideVo; import com.bsd.pjcloud.wallet.mapper.WalletStrideMapper; import com.bsd.pjcloud.wallet.service.WalletStrideService; +import com.bsd.pjcloud.wallet.utils.FlowUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + /** * 跨单位就餐 * * @author pjcloud * @date 2025-01-02 16:27:26 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletStrideServiceImpl extends ServiceImpl implements WalletStrideService { + + static private final String TAG = "跨单位就餐"; + + private final RemoteUserService userService; + private final RemoteDeptService deptService; + private final RemoteFlowApiFlowService flowApiFlowService; + + private final FlowUtil flowUtil; + + @Override + public Boolean apply(WalletStrideDto dto) { + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Long create(WalletStrideDto dto) { + // 查询发起人 + R userData = userService.getByUserId(dto.getUserId()); + if (ObjectUtil.isEmpty(userData.getData())) { + throw new RuntimeException("发起人不存在"); + } + // 判断之前有没有在审核的 + if (isCheckData(dto.getUserId())) { + throw new RuntimeException("已提交申请,请勿重复提交"); + } + dto.setDeptId(userData.getData().getSysUser().getDeptId()); + dto.setProcessStatus(NodeStatusEnum.WKS.getCode()); + baseMapper.insert(dto); + // 发起审批 + String processId = flowUtil.startFlow("TASK_STRIDE_FLOW", userData.getData().getSysUser(), dto.getId()); + baseMapper.updateById(WalletStrideEntity.builder().id(dto.getId()).processId(processId).processStatus(NodeStatusEnum.JXZ.getCode()).build()); + return dto.getId(); + } + + @Override + public Page pageJoin(Page page, WalletStrideDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletStrideVo::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(WalletStrideVo::getDeptId).distinct().toList(); + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(list.getRecords(), deptList.getData()); + } + } + return list; + } + + @Override + public WalletStrideVo detail(Long id) { + + return null; + } + + @Override + public void applyCallback(ProcessNodeRecordAssignUserParamDto dto) { + + } + + private boolean isCheckData(Long walletId) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(WalletStrideEntity::getUserId, walletId) + ); + return count > 0; + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java new file mode 100644 index 000000000..30c2a8d4d --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java @@ -0,0 +1,84 @@ +package com.bsd.pjcloud.wallet.utils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.resolver.ParamResolver; +import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; +import com.bsd.pjcloud.flow.task.constant.NodeUserTypeEnum; +import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.vo.FormItemVO; +import com.bsd.pjcloud.flow.task.vo.ProcessVO; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.validation.annotation.Validated; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Validated +@Slf4j +@RequiredArgsConstructor +@Component +public class FlowUtil { + + static private final String TAG = "钱包审批流工具类"; + + private final RemoteFlowApiFlowService flowApiFlowService; + + private final ObjectMapper objectMapper; + + public String startFlow(String flowIdKey, SysUser user, Long businessId) { + // 发起工作流 + String defaultRole = ParamResolver.getStr(flowIdKey); + if (ObjectUtil.isEmpty(defaultRole)) { + log.error("|{}|请配置跨单位审批流程ID;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId); + throw new RuntimeException("请配置跨单位审批流程ID"); + } + R detail = flowApiFlowService.getDetail(defaultRole); + if (!ObjectUtil.isAllNotEmpty(detail, detail.getData(), detail.getData().getId())) { + log.error("|{}|未查询到该审批流程;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId); + throw new RuntimeException("未查询到该审批流程"); + } + ProcessVO processVo = detail.getData(); + ProcessInstanceParamDto processDto = new ProcessInstanceParamDto(); + Map paramMap = readMap(processVo, user); + processDto.setFlowId(processVo.getFlowId()); + processDto.setParamMap(paramMap); + processDto.setStartUserId(String.valueOf(user.getUserId())); + R startVo = flowApiFlowService.startProcessInstance(processDto); + if (!ObjectUtil.isAllNotEmpty(startVo, startVo.getData())) { + log.error("|{}|发起审批流程错误;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId); + throw new RuntimeException("发起审批流程错误"); + } + return startVo.getData(); + } + + public Map readMap(ProcessVO vo, SysUser user) { + Map paramMap = new HashMap<>(); + Dict rootUser = Dict.create() + .set("id", user.getUserId()) + .set("name", user.getUsername()) + .set("type", NodeUserTypeEnum.USER.getKey()); + paramMap.put("root", CollUtil.newArrayList(rootUser)); + try { + List formItemVOList = objectMapper.readValue(vo.getFormItems(), new TypeReference<>() { + }); + for (FormItemVO v : formItemVOList) { + if (ObjectUtil.equals(v.getType(), "Layout")) continue; + if (!ObjectUtil.isAllNotEmpty(v.getId(), v.getProps())) continue; + paramMap.put(v.getId(), v.getProps().getValue()); + } + } catch (Exception e) { + e.printStackTrace(); + } + return paramMap; + } +} From 3a4bd07819e08b97953818f1b9aad56485464095 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 3 Jan 2025 16:17:46 +0800 Subject: [PATCH 2/4] =?UTF-8?q?creat:=E7=94=9F=E6=88=90=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 28 +- .../task/constant/TaskCheckStatusEnum.java | 27 ++ .../hardware/constant/HardOrderTypeEnum.java | 28 ++ .../hardware/constant/HardPayTypeEnum.java | 32 +++ .../java/hardware/constant/packge-info.java | 6 - .../src/main/java/hardware/dto/code/QRCodeDto | 0 .../java/hardware/dto/code/QRCodeDto.java | 39 +++ .../main/java/hardware/dto/packge-info.java | 6 - .../java/hardware/entity/packge-info.java | 6 - .../main/java/hardware/utils/HardUtil.java | 44 +++ .../admin/api/feign/RemoteFileService.java | 10 +- .../admin/controller/SysFileController.java | 252 ++++++++++-------- .../pjcloud/admin/service/SysFileService.java | 3 +- .../service/impl/SysFileServiceImpl.java | 15 ++ .../api/constant/WalletCodeBizEnum.java | 24 ++ .../wallet/api/dto/WalletCodeUseDto.java | 5 + .../api/entity/WalletCodeUseEntity.java | 6 +- .../api/entity/WalletForeignEntity.java | 2 +- .../wallet/api/entity/WalletStrideEntity.java | 2 +- .../wallet/api/vo/WalletCodeUseVo.java | 13 +- pjcloud-wallet/pjcloud-wallet-biz/pom.xml | 6 + .../controller/WalletForeignController.java | 23 +- .../controller/WalletStrideController.java | 79 ++++-- .../wallet/mapper/WalletCodeUseMapper.java | 18 ++ .../wallet/service/WalletCodeUseService.java | 8 + .../impl/WalletCodeUseServiceImpl.java | 86 ++++++ .../impl/WalletForeignServiceImpl.java | 37 ++- .../service/impl/WalletStrideServiceImpl.java | 35 ++- .../bsd/pjcloud/wallet/utils/FlowUtil.java | 24 +- 29 files changed, 662 insertions(+), 202 deletions(-) create mode 100644 pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardOrderTypeEnum.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardPayTypeEnum.java delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/packge-info.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto.java delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/packge-info.java delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/entity/packge-info.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/utils/HardUtil.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index da8e88f91..674c8cf96 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -221,18 +221,18 @@ CREATE TABLE wallet_recharge_import CREATE INDEX idx_dept_id ON wallet_recharge_import (user_id); -- ---------------------------- --- Table structure for wallet_stride_dept +-- Table structure for wallet_stride -- ---------------------------- DROP TABLE IF EXISTS wallet_stride; CREATE TABLE wallet_stride ( - id bigint NOT NULL COMMENT '编号', + id bigint NOT NULL COMMENT '编号', process_id varchar(256) COMMENT '流程id', - process_status int(10) NOT NULL COMMENT '审核状体', - dept_id bigint NOT NULL COMMENT '部门id', - count int NOT NULL COMMENT '申请数量', + process_status varchar(10) NOT NULL COMMENT '审核状体', + dept_id bigint NOT NULL COMMENT '部门id', + count int NOT NULL COMMENT '申请数量', use_count int DEFAULT 0 COMMENT '使用数量', - user_id bigint NOT NULL COMMENT '申请人id', + user_id bigint NOT NULL COMMENT '申请人id', remark varchar(1024) COMMENT '备注', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', @@ -245,19 +245,19 @@ CREATE TABLE wallet_stride DEFAULT CHARSET = utf8mb4 COMMENT ='跨单位就餐'; -- ---------------------------- --- Table structure for wallet_recharge_import +-- Table structure for wallet_foreign -- ---------------------------- DROP TABLE IF EXISTS wallet_foreign; CREATE TABLE wallet_foreign ( - id bigint NOT NULL COMMENT '编号', - user_id bigint NOT NULL COMMENT '用户id', + id bigint NOT NULL COMMENT '编号', + user_id bigint NOT NULL COMMENT '用户id', process_id varchar(256) COMMENT '流程id', - process_status int(10) NOT NULL COMMENT '审核状体', - dept_id bigint NOT NULL COMMENT '部门id', - apply_start_time date NULL COMMENT '申请使用开始时间', - apply_end_time date NULL COMMENT '申请使用结束时间', - count int NOT NULL COMMENT '申请数量', + process_status varchar(10) NOT NULL COMMENT '审核状体', + dept_id bigint NOT NULL COMMENT '部门id', + apply_start_time date NULL COMMENT '申请使用开始时间', + apply_end_time date NULL COMMENT '申请使用结束时间', + count int NOT NULL COMMENT '申请数量', use_count int DEFAULT 0 COMMENT '使用数量', remark VARCHAR(1024) COMMENT '申请备注', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java new file mode 100644 index 000000000..12808124d --- /dev/null +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java @@ -0,0 +1,27 @@ +package com.bsd.pjcloud.flow.task.constant; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +@Getter +@AllArgsConstructor +public enum TaskCheckStatusEnum { + + PADDING("1", "审核中"), + RESULT("2", "审核通过"), + REJECT("3", "审核拒绝"), + ; + private final String code; + + private final String desc; + + public static TaskCheckStatusEnum descOf(String description) { + return Arrays.stream(TaskCheckStatusEnum.values()) + .filter(v -> ObjectUtil.equal(v.getDesc(), description)) + .findFirst().get(); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardOrderTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardOrderTypeEnum.java new file mode 100644 index 000000000..4a3ed0874 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardOrderTypeEnum.java @@ -0,0 +1,28 @@ +package hardware.constant; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 硬件订单类型 + */ +@AllArgsConstructor +@Getter +public enum HardOrderTypeEnum { + BELOW(1, "线下购买"), + RESERVE(2, "线上订餐"), + FOREIGN_TICKET(3, "外来人员"), + STRIDE_DEPT(4, "跨单位"), + ; + private final Integer type; + private final String description; + + public static HardOrderTypeEnum valueOfByType(Integer type) { + if (ObjectUtil.isEmpty(type)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardPayTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardPayTypeEnum.java new file mode 100644 index 000000000..e87dd4c44 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/HardPayTypeEnum.java @@ -0,0 +1,32 @@ +package hardware.constant; + + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 硬件订单支付方式 + */ +@AllArgsConstructor +@Getter +public enum HardPayTypeEnum { + WALLET_DEFAULT(1, "普通钱包支付"), + WALLET_QR_CODE(2, "钱包二维码支付"), + WALLET_CARD(3, "钱包饭卡支付"), + FACE(4, "人脸识别支付"), + STRIDE_DEPT_QR_CODE(5, "跨单位二维码支付"), + FOREIGN_TICKET_QR_CODE(6, "外来人员二维码支付"), + RESERVE_QR_CODE(7, "线上订餐二维码支付"), + CASH(8, "现金支付"), + ; + private final Integer type; + private final String description; + + public static HardPayTypeEnum valueOfByType(Integer type) { + if (ObjectUtil.isEmpty(type)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); + } +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/packge-info.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/packge-info.java deleted file mode 100644 index 5b812b069..000000000 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/constant/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - * @author pigx archetype - *

- * 常量和枚举定义 - */ -package hardware.constant; \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto new file mode 100644 index 000000000..e69de29bb diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto.java new file mode 100644 index 000000000..095365ed1 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/code/QRCodeDto.java @@ -0,0 +1,39 @@ +package hardware.dto.code; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class QRCodeDto { + // 总id + private Long id; + + // 子id + private Long itemId; + + // 类型id 比如钱包类型 + private Long typeId; + + // 用户id + private Long userId; + + // 订单类型 + private Integer orderType; + + // 支付类型 + private Integer payType; + + // 过期时间 -1 代表没有限制 + private Long exceedTime; + + /** + * 额外的用户信息json + * @see QRCodeExtraDto + */ + private String extra; +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/packge-info.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/packge-info.java deleted file mode 100644 index 3e0cec092..000000000 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/dto/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - * @author pigx archetype - *

- * DTO 存放目录 - */ -package hardware.dto; \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/entity/packge-info.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/entity/packge-info.java deleted file mode 100644 index 10b3392df..000000000 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/entity/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - * @author pigx archetype - *

- * 实体 存放目录 - */ -package hardware.entity; \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/utils/HardUtil.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/utils/HardUtil.java new file mode 100644 index 000000000..3f4689db9 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/hardware/utils/HardUtil.java @@ -0,0 +1,44 @@ +package hardware.utils; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.lang.Pair; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import hardware.dto.code.QRCodeDto; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class HardUtil { + + public Pair generate(QRCodeDto dto) { + String fileName = "qrcode"; + if (ObjectUtil.isEmpty(dto.getId())) { + fileName += "_unknown"; + } else { + fileName += "_" + dto.getId().toString(); + } + if (ObjectUtil.isEmpty(dto.getItemId())) { + fileName += "_unknown"; + } else { + fileName += "_" + dto.getItemId().toString(); + } + if (ObjectUtil.isEmpty(dto.getUserId())) { + fileName += "_unknown"; + } else { + fileName += "_" + dto.getUserId().toString(); + } + if (ObjectUtil.isEmpty(dto.getOrderType())) { + fileName += "_unknown"; + } else { + fileName += "_" + dto.getOrderType().toString(); + } + if (ObjectUtil.isEmpty(dto.getPayType())) { + fileName += "_unknown"; + } else { + fileName += "_" + dto.getPayType().toString(); + } + String coeContent = Base64.encode(JSONUtil.toJsonStr(dto)); + return new Pair<>(fileName, coeContent); + } + +} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteFileService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteFileService.java index d1ad1d1d4..6745766a5 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteFileService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteFileService.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.admin.api.feign; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.feign.annotation.NoToken; import feign.Response; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; @@ -24,9 +25,16 @@ public interface RemoteFileService { Response getFile(@RequestParam String fileName); - @PostMapping(value = "/sys-file/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @PostMapping(value = "/sys-file/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) R upload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir, @RequestParam(value = "groupId", required = false) Long groupId, @RequestParam(value = "type", required = false) String type); + + @NoToken + @PostMapping(value = "/sys-file/inner-upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + R innerUpload(@RequestPart("file") MultipartFile file, + @RequestParam(value = "dir", required = false) String dir, + @RequestParam(value = "groupId", required = false) Long groupId, + @RequestParam(value = "type", required = false) String type); } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysFileController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysFileController.java index 29780497f..780ea01be 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysFileController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysFileController.java @@ -57,131 +57,153 @@ import java.util.Objects; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysFileController { - private final SysFileService sysFileService; + private final SysFileService sysFileService; - /** - * 分页查询 - * @param page 分页对象 - * @param sysFile 文件管理 - * @return - */ - @Operation(summary = "分页查询", description = "分页查询") - @GetMapping("/page") - public R getSysFilePage(@ParameterObject Page page, @ParameterObject SysFile sysFile) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .eq(StrUtil.isNotBlank(sysFile.getType()), SysFile::getType, sysFile.getType()) - .eq(Objects.nonNull(sysFile.getGroupId()), SysFile::getGroupId, sysFile.getGroupId()) - .like(StrUtil.isNotBlank(sysFile.getOriginal()), SysFile::getOriginal, sysFile.getOriginal()); - return R.ok(sysFileService.page(page, wrapper)); - } + /* ************************************* start 远程调用 start ************************************* */ - /** - * 通过id删除文件管理 - * @param ids id 列表 - * @return R - */ - @Operation(summary = "通过id删除文件管理", description = "通过id删除文件管理") - @SysLog("删除文件管理") - @DeleteMapping - @HasPermission("sys_file_del") - public R removeById(@RequestBody Long[] ids) { - for (Long id : ids) { - sysFileService.deleteFile(id); - } - return R.ok(); - } + @Inner + @PostMapping(value = "/inner-upload") + public R innerUpload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir, + @RequestParam(value = "groupId", required = false) Long groupId, + @RequestParam(value = "type", required = false) String type) { + return sysFileService.innerUpload(file, dir, groupId, type); + } - @PutMapping("/rename") - public R rename(@RequestBody SysFile sysFile) { - return R.ok(sysFileService.updateById(sysFile)); - } + /* ************************************* start 远程调用 start ************************************* */ - /** - * 上传文件 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 - * @param file 资源 - * @param dir 文件夹 - * @return R(/ admin / bucketName / filename) - */ - @PostMapping(value = "/upload") - public R upload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir, - @RequestParam(value = "groupId", required = false) Long groupId, - @RequestParam(value = "type", required = false) String type) { - return sysFileService.uploadFile(file, dir, groupId, type); - } + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysFile 文件管理 + * @return + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + public R getSysFilePage(@ParameterObject Page page, @ParameterObject SysFile sysFile) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(StrUtil.isNotBlank(sysFile.getType()), SysFile::getType, sysFile.getType()) + .eq(Objects.nonNull(sysFile.getGroupId()), SysFile::getGroupId, sysFile.getGroupId()) + .like(StrUtil.isNotBlank(sysFile.getOriginal()), SysFile::getOriginal, sysFile.getOriginal()); + return R.ok(sysFileService.page(page, wrapper)); + } - /** - * 获取文件 - * @param fileName 文件空间/名称 - * @param response - * @return - */ - @Inner(false) - @GetMapping("/oss/file") - public void file(String fileName, HttpServletResponse response) { - sysFileService.getFile(fileName, response); - } + /** + * 通过id删除文件管理 + * + * @param ids id 列表 + * @return R + */ + @Operation(summary = "通过id删除文件管理", description = "通过id删除文件管理") + @SysLog("删除文件管理") + @DeleteMapping + @HasPermission("sys_file_del") + public R removeById(@RequestBody Long[] ids) { + for (Long id : ids) { + sysFileService.deleteFile(id); + } + return R.ok(); + } - /** - * 获取本地(resources)文件 - * @param fileName 文件名称 - * @param response 本地文件 - */ - @SneakyThrows - @GetMapping("/local/file/{fileName}") - public void localFile(@PathVariable String fileName, HttpServletResponse response) { - ClassPathResource resource = new ClassPathResource("file/" + fileName); - response.setContentType("application/octet-stream; charset=UTF-8"); - IoUtil.copy(resource.getInputStream(), response.getOutputStream()); - } + @PutMapping("/rename") + public R rename(@RequestBody SysFile sysFile) { + return R.ok(sysFileService.updateById(sysFile)); + } - /** - * 查询文件组列表 - * @param fileGroup SysFileGroup对象,用于筛选条件 - * @return 包含文件组列表的R对象 - */ - @GetMapping("/group/list") - public R listGroup(SysFileGroup fileGroup) { - return R.ok(sysFileService.listFileGroup(fileGroup)); - } + /** + * 上传文件 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 + * + * @param file 资源 + * @param dir 文件夹 + * @return R(/ admin / bucketName / filename) + */ + @PostMapping(value = "/upload") + public R upload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir, + @RequestParam(value = "groupId", required = false) Long groupId, + @RequestParam(value = "type", required = false) String type) { + return sysFileService.uploadFile(file, dir, groupId, type); + } - /** - * 添加文件组 - * @param fileGroup SysFileGroup对象,要添加的文件组信息 - * @return 包含添加结果的R对象 - */ - @PostMapping("/group/add") - public R addGroup(@RequestBody SysFileGroup fileGroup) { - return R.ok(sysFileService.saveOrUpdateGroup(fileGroup)); - } + /** + * 获取文件 + * + * @param fileName 文件空间/名称 + * @param response + * @return + */ + @Inner(false) + @GetMapping("/oss/file") + public void file(String fileName, HttpServletResponse response) { + sysFileService.getFile(fileName, response); + } - /** - * 更新文件组 - * @param fileGroup SysFileGroup对象,要更新的文件组信息 - * @return 包含更新结果的R对象 - */ - @PutMapping("/group/update") - public R updateGroup(@RequestBody SysFileGroup fileGroup) { - return R.ok(sysFileService.saveOrUpdateGroup(fileGroup)); - } + /** + * 获取本地(resources)文件 + * + * @param fileName 文件名称 + * @param response 本地文件 + */ + @SneakyThrows + @GetMapping("/local/file/{fileName}") + public void localFile(@PathVariable String fileName, HttpServletResponse response) { + ClassPathResource resource = new ClassPathResource("file/" + fileName); + response.setContentType("application/octet-stream; charset=UTF-8"); + IoUtil.copy(resource.getInputStream(), response.getOutputStream()); + } - /** - * 删除文件组 - * @param id 待删除文件组的ID - * @return 包含删除结果的R对象 - */ - @DeleteMapping("/group/delete/{id}") - public R updateGroup(@PathVariable Long id) { - return R.ok(sysFileService.deleteGroup(id)); - } + /** + * 查询文件组列表 + * + * @param fileGroup SysFileGroup对象,用于筛选条件 + * @return 包含文件组列表的R对象 + */ + @GetMapping("/group/list") + public R listGroup(SysFileGroup fileGroup) { + return R.ok(sysFileService.listFileGroup(fileGroup)); + } - /** - * 移动文件组 - * @param fileGroupDTO SysFileGroupDTO对象,要移动的文件组信息 - * @return 包含移动结果的R对象 - */ - @PutMapping("/group/move") - public R moveFileGroup(@RequestBody SysFileGroupDTO fileGroupDTO) { - return R.ok(sysFileService.moveFileGroup(fileGroupDTO)); - } + /** + * 添加文件组 + * + * @param fileGroup SysFileGroup对象,要添加的文件组信息 + * @return 包含添加结果的R对象 + */ + @PostMapping("/group/add") + public R addGroup(@RequestBody SysFileGroup fileGroup) { + return R.ok(sysFileService.saveOrUpdateGroup(fileGroup)); + } + + /** + * 更新文件组 + * + * @param fileGroup SysFileGroup对象,要更新的文件组信息 + * @return 包含更新结果的R对象 + */ + @PutMapping("/group/update") + public R updateGroup(@RequestBody SysFileGroup fileGroup) { + return R.ok(sysFileService.saveOrUpdateGroup(fileGroup)); + } + + /** + * 删除文件组 + * + * @param id 待删除文件组的ID + * @return 包含删除结果的R对象 + */ + @DeleteMapping("/group/delete/{id}") + public R updateGroup(@PathVariable Long id) { + return R.ok(sysFileService.deleteGroup(id)); + } + + /** + * 移动文件组 + * + * @param fileGroupDTO SysFileGroupDTO对象,要移动的文件组信息 + * @return 包含移动结果的R对象 + */ + @PutMapping("/group/move") + public R moveFileGroup(@RequestBody SysFileGroupDTO fileGroupDTO) { + return R.ok(sysFileService.moveFileGroup(fileGroupDTO)); + } } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysFileService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysFileService.java index 4becad6dd..ad3174886 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysFileService.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysFileService.java @@ -46,6 +46,8 @@ public interface SysFileService extends IService { */ R uploadFile(MultipartFile file, String dir, Long groupId, String type); + R innerUpload(MultipartFile file, String dir, Long groupId, String type); + /** * 读取文件 * @param fileName 文件名称 @@ -87,5 +89,4 @@ public interface SysFileService extends IService { * @return 移动成功返回true,否则返回false */ Boolean moveFileGroup(SysFileGroupDTO fileGroupDTO); - } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysFileServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysFileServiceImpl.java index 8c706cec0..a177657e8 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysFileServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysFileServiceImpl.java @@ -99,6 +99,21 @@ public class SysFileServiceImpl extends ServiceImpl impl return R.ok(resultMap); } + @Override + public R innerUpload(MultipartFile file, String dir, Long groupId, String type) { + String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename()); + Map resultMap = new HashMap<>(4); + resultMap.put("bucketName", properties.getBucketName()); + resultMap.put("fileName", fileName); + resultMap.put("url", String.format("/admin/sys-file/oss/file?fileName=%s", fileName)); + try (InputStream inputStream = file.getInputStream()) { + fileTemplate.putObject(properties.getBucketName(), dir, fileName, inputStream, file.getContentType()); + } catch (Exception e) { + return R.failed(e.getLocalizedMessage()); + } + return R.ok(resultMap); + } + /** * 读取文件 * diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java new file mode 100644 index 000000000..22a2d82b8 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java @@ -0,0 +1,24 @@ +package com.bsd.pjcloud.wallet.api.constant; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +@Getter +@AllArgsConstructor +public enum WalletCodeBizEnum { + STRIDE("1", "跨单位"), + FOREIGN("2", "外来人员"), + ; + private final String code; + + private final String desc; + + public static WalletCodeBizEnum descOf(String description) { + return Arrays.stream(WalletCodeBizEnum.values()) + .filter(v -> ObjectUtil.equal(v.getDesc(), description)) + .findFirst().get(); + } +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletCodeUseDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletCodeUseDto.java index 526b17c59..15ef39720 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletCodeUseDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletCodeUseDto.java @@ -3,6 +3,11 @@ package com.bsd.pjcloud.wallet.api.dto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; import lombok.Data; +import java.util.List; + @Data public class WalletCodeUseDto extends WalletCodeUseEntity { + + private List userIds; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java index e5c4341db..0a1b98f9e 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.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; @@ -14,6 +13,9 @@ import java.time.LocalDateTime; * @author dzc * @date 2025-01-02 16:26:10 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("wallet_code_use") diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java index 7ea49dc35..8164f2fad 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletForeignEntity.java @@ -49,7 +49,7 @@ public class WalletForeignEntity extends Model { * 流程状态 */ @Schema(description = "流程状态") - private Integer processStatus; + private String processStatus; /** * 部门id diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java index 794f2a8ce..b835c68de 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletStrideEntity.java @@ -42,7 +42,7 @@ public class WalletStrideEntity extends Model { * 流程状态 */ @Schema(description = "流程状态") - private Integer processStatus; + private String processStatus; /** * 部门id diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCodeUseVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCodeUseVo.java index 74ca35940..f3a2c34cc 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCodeUseVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletCodeUseVo.java @@ -1,8 +1,19 @@ package com.bsd.pjcloud.wallet.api.vo; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; import lombok.Data; @Data -public class WalletCodeUseVo extends WalletCodeUseEntity { +public class WalletCodeUseVo extends WalletCodeUseEntity implements BaseUserInterface { + + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml index 8410b5b60..bfc11cf4f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml @@ -102,6 +102,12 @@ com.bsd pjcloud-flow-task-api + + com.bsd + pjcloud-hardware-api + 5.7.0 + compile + diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java index 9a2714cb2..fce1cfae8 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletForeignController.java @@ -11,8 +11,12 @@ 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.constant.WalletCodeBizEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.dto.WalletForeignDto; +import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; +import com.bsd.pjcloud.wallet.service.WalletCodeUseService; import com.bsd.pjcloud.wallet.service.WalletForeignService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -40,10 +44,11 @@ import java.util.List; public class WalletForeignController { private final WalletForeignService walletForeignService; + private final WalletCodeUseService walletCodeUseService; /* ************************************* start flow callback start ************************************* */ - @Inner + @Inner(value = false) @PostMapping("/apply-callback") public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto) { walletForeignService.applyCallback(dto); @@ -66,6 +71,22 @@ public class WalletForeignController { return R.ok(walletForeignService.pageJoin(page, dto)); } + @Operation(summary = "二维码列表", description = "二维码列表") + @GetMapping("/code-list") + public R codeList(@ParameterObject Page page, @ParameterObject WalletCodeUseDto dto) { + dto.setBizType(WalletCodeBizEnum.FOREIGN.getCode()); + return R.ok(walletCodeUseService.pageJoin(page, dto)); + } + + @Operation(summary = "app二维码列表", description = "app二维码列表") + @GetMapping("/app/code-list") + public R appCodeList(@ParameterObject Page page, @ParameterObject WalletCodeUseDto dto) { + PjcloudUser loginUser = SecurityUtils.getUser(); + dto.setUserId(loginUser.getId()); + dto.setBizType(WalletCodeBizEnum.FOREIGN.getCode()); + return R.ok(walletCodeUseService.pageJoin(page, dto)); + } + @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletForeign_view')") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java index 648c61bdf..38fbbb50f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java @@ -6,14 +6,18 @@ 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.feign.annotation.NoToken; import com.bsd.pjcloud.common.log.annotation.SysLog; 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.constant.WalletCodeBizEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.dto.WalletForeignDto; import com.bsd.pjcloud.wallet.api.dto.WalletStrideDto; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; +import com.bsd.pjcloud.wallet.service.WalletCodeUseService; import com.bsd.pjcloud.wallet.service.WalletStrideService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -35,27 +39,28 @@ import java.util.List; */ @RestController @RequiredArgsConstructor -@RequestMapping("/wallet-stride" ) -@Tag(description = "wallet-stride" , name = "跨单位就餐管理" ) +@RequestMapping("/wallet-stride") +@Tag(description = "wallet-stride", name = "跨单位就餐管理") @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class WalletStrideController { private final WalletStrideService walletStrideService; + private final WalletCodeUseService walletCodeUseService; /* ************************************* start flow callback start ************************************* */ - @Inner - @PostMapping("/apply-callback" ) + @Inner(value = false) + @PostMapping("/apply-callback") public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto) { walletStrideService.applyCallback(dto); } /* ************************************* start flow callback start ************************************* */ - @Operation(summary = "分页查询" , description = "分页查询" ) - @GetMapping("/page" ) - @PreAuthorize("@pms.hasPermission('admin_walletStride_view')" ) + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('admin_walletStride_view')") public R getWalletStridePage(@ParameterObject Page page, @ParameterObject WalletStrideEntity walletStride) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); return R.ok(walletStrideService.page(page, wrapper)); @@ -68,23 +73,39 @@ public class WalletStrideController { return R.ok(walletStrideService.pageJoin(page, dto)); } - @Operation(summary = "通过id查询" , description = "通过id查询" ) - @GetMapping("/{id}" ) - @PreAuthorize("@pms.hasPermission('admin_walletStride_view')" ) - public R getById(@PathVariable("id" ) Long id) { + @Operation(summary = "二维码列表", description = "二维码列表") + @GetMapping("/code-list") + public R codeList(@ParameterObject Page page, @ParameterObject WalletCodeUseDto dto) { + dto.setBizType(WalletCodeBizEnum.STRIDE.getCode()); + return R.ok(walletCodeUseService.pageJoin(page, dto)); + } + + @Operation(summary = "app二维码列表", description = "app二维码列表") + @GetMapping("/app/code-list") + public R appCodeList(@ParameterObject Page page, @ParameterObject WalletCodeUseDto dto) { + PjcloudUser loginUser = SecurityUtils.getUser(); + dto.setUserId(loginUser.getId()); + dto.setBizType(WalletCodeBizEnum.STRIDE.getCode()); + return R.ok(walletCodeUseService.pageJoin(page, dto)); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('admin_walletStride_view')") + public R getById(@PathVariable("id") Long id) { return R.ok(walletStrideService.getById(id)); } - @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) - @SysLog("新增跨单位就餐" ) + @Operation(summary = "新增跨单位就餐", description = "新增跨单位就餐") + @SysLog("新增跨单位就餐") @PostMapping - @PreAuthorize("@pms.hasPermission('admin_walletStride_add')" ) + @PreAuthorize("@pms.hasPermission('admin_walletStride_add')") public R save(@RequestBody WalletStrideDto dto) { return R.ok(walletStrideService.create(dto)); } - @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) - @SysLog("新增跨单位就餐" ) + @Operation(summary = "新增跨单位就餐", description = "新增跨单位就餐") + @SysLog("新增跨单位就餐") @PostMapping("/app") public R appSave(@RequestBody WalletStrideDto dto) { PjcloudUser loginUser = SecurityUtils.getUser(); @@ -92,41 +113,41 @@ public class WalletStrideController { return R.ok(walletStrideService.create(dto)); } - @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) - @SysLog("admin申请" ) + @Operation(summary = "新增跨单位就餐", description = "新增跨单位就餐") + @SysLog("admin申请") @PostMapping("/apply") - @PreAuthorize("@pms.hasPermission('admin_walletStride_apply')" ) + @PreAuthorize("@pms.hasPermission('admin_walletStride_apply')") public R apply(@RequestBody WalletStrideDto dto) { return R.ok(walletStrideService.apply(dto)); } - @Operation(summary = "新增跨单位就餐" , description = "新增跨单位就餐" ) - @SysLog("app申请" ) + @Operation(summary = "新增跨单位就餐", description = "新增跨单位就餐") + @SysLog("app申请") @PostMapping("/app-apply") public R appApply(@RequestBody WalletStrideDto dto) { return R.ok(walletStrideService.apply(dto)); } - @Operation(summary = "修改跨单位就餐" , description = "修改跨单位就餐" ) - @SysLog("修改跨单位就餐" ) + @Operation(summary = "修改跨单位就餐", description = "修改跨单位就餐") + @SysLog("修改跨单位就餐") @PutMapping - @PreAuthorize("@pms.hasPermission('admin_walletStride_edit')" ) + @PreAuthorize("@pms.hasPermission('admin_walletStride_edit')") public R updateById(@RequestBody WalletStrideEntity walletStride) { return R.ok(walletStrideService.updateById(walletStride)); } - @Operation(summary = "通过id删除跨单位就餐" , description = "通过id删除跨单位就餐" ) - @SysLog("通过id删除跨单位就餐" ) + @Operation(summary = "通过id删除跨单位就餐", description = "通过id删除跨单位就餐") + @SysLog("通过id删除跨单位就餐") @DeleteMapping - @PreAuthorize("@pms.hasPermission('admin_walletStride_del')" ) + @PreAuthorize("@pms.hasPermission('admin_walletStride_del')") public R removeById(@RequestBody Long[] ids) { return R.ok(walletStrideService.removeBatchByIds(CollUtil.toList(ids))); } @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('admin_walletStride_export')" ) - public List export(WalletStrideEntity walletStride,Long[] ids) { + @PreAuthorize("@pms.hasPermission('admin_walletStride_export')") + public List export(WalletStrideEntity walletStride, Long[] ids) { return walletStrideService.list(Wrappers.lambdaQuery(walletStride).in(ArrayUtil.isNotEmpty(ids), WalletStrideEntity::getId, ids)); } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletCodeUseMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletCodeUseMapper.java index 6c23f6721..bb81d6165 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletCodeUseMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletCodeUseMapper.java @@ -1,11 +1,29 @@ package com.bsd.pjcloud.wallet.mapper; +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.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletCodeUseVo; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface WalletCodeUseMapper extends PjcloudBaseMapper { + default Page pageJoin(Page page, WalletCodeUseDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(WalletCodeUseEntity.class) + .eqIfExists(WalletCodeUseEntity::getUserId, dto.getUserId()) + .eqIfExists(WalletCodeUseEntity::getBizId, dto.getBizId()) + .eqIfExists(WalletCodeUseEntity::getBizType, dto.getBizType()) + .eqIfExists(WalletCodeUseEntity::getStatus, dto.getStatus()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletCodeUseEntity::getUserId, dto.getUserIds()); + return selectJoinPage(page, WalletCodeUseVo.class, wrapper); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java index 2c6471498..dfba8115b 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java @@ -1,8 +1,16 @@ 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.wallet.api.constant.WalletCodeBizEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletCodeUseVo; +import jakarta.validation.constraints.NotNull; public interface WalletCodeUseService extends IService { + void generate(@NotNull Long id, @NotNull Long userId, @NotNull WalletCodeBizEnum walletCodeBizEnum, @NotNull Integer count); + + Page pageJoin(Page page, WalletCodeUseDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java index 19d943fff..963c44e16 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java @@ -1,16 +1,102 @@ package com.bsd.pjcloud.wallet.service.impl; +import cn.hutool.core.lang.Pair; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.feign.RemoteFileService; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; +import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletCodeUseVo; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.mapper.WalletCodeUseMapper; import com.bsd.pjcloud.wallet.service.WalletCodeUseService; +import hardware.constant.HardOrderTypeEnum; +import hardware.constant.HardPayTypeEnum; +import hardware.dto.code.QRCodeDto; +import hardware.utils.HardUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.multipart.MultipartFile; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** * 二维码使用表 * * @author dzc * @date 2025-01-02 16:26:10 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletCodeUseServiceImpl extends ServiceImpl implements WalletCodeUseService { + + static private final String TAG = "二维码使用管理"; + + private final RemoteUserService userService; + private final RemoteFileService remoteFileService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void generate(Long id, Long userId, WalletCodeBizEnum biz, Integer count) { + if (count == 0) return; + HardOrderTypeEnum orderType = HardOrderTypeEnum.FOREIGN_TICKET; + HardPayTypeEnum payType = HardPayTypeEnum.FOREIGN_TICKET_QR_CODE; + if (biz == WalletCodeBizEnum.STRIDE) { + orderType = HardOrderTypeEnum.STRIDE_DEPT; + payType = HardPayTypeEnum.STRIDE_DEPT_QR_CODE; + } + for (int i = 0; i < count; i++) { + WalletCodeUseEntity item = WalletCodeUseEntity.builder().bizId(id).userId(userId).bizType(biz.getCode()).build(); + int insert = baseMapper.insert(item); + if (insert > 0) { + QRCodeDto dto = QRCodeDto.builder().id(id).itemId(item.getId()).userId(item.getUserId()).orderType(orderType.getType()).payType(payType.getType()).exceedTime(-1L).build(); + try { + Pair code = HardUtil.generate(dto); + byte[] bytes = QRCodeImageGenerator.generateQrCodeImage(code.getValue(), 1024); + MultipartFile multipartFile = new MockMultipartFile("file", code.getKey() + ".png", "image/png", new ByteArrayInputStream(bytes)); + R upload = remoteFileService.innerUpload(multipartFile, null, null, null); + Map data = (Map) upload.getData(); + String url = (String) data.get("url"); + // 更新 + WalletCodeUseEntity updateObj = WalletCodeUseEntity.builder().code(url).codeContent(code.getValue()).build(); + baseMapper.updateById(updateObj); + } catch (Exception e) { + e.printStackTrace(); + log.error("|{}|生成使用二维码,生成收款码错误dto:|{}|error:|{}|", TAG, JSON.toJSONString(dto), e.getMessage()); + } + } + } + } + + @Override + public Page pageJoin(Page page, WalletCodeUseDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletCodeUseVo::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)); + } + } + 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/WalletForeignServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java index e275fe8f9..0428afca7 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java @@ -1,6 +1,7 @@ package com.bsd.pjcloud.wallet.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,18 +14,19 @@ import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum; +import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletForeignDto; import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; -import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; import com.bsd.pjcloud.wallet.api.vo.WalletForeignVo; -import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.mapper.WalletForeignMapper; import com.bsd.pjcloud.wallet.service.WalletForeignService; import com.bsd.pjcloud.wallet.utils.FlowUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.ArrayList; @@ -43,9 +45,13 @@ import java.util.Map; @Service public class WalletForeignServiceImpl extends ServiceImpl implements WalletForeignService { + static private final String TAG = "外来人员电子餐券表"; + private final RemoteUserService userService; private final RemoteDeptService deptService; + private final WalletCodeUseServiceImpl walletCodeUseService; + private final FlowUtil flowUtil; @Override @@ -60,11 +66,11 @@ public class WalletForeignServiceImpl extends ServiceImpl() + .eq(WalletForeignEntity::getProcessId, processId) + ); + if (ObjectUtil.isEmpty(detail)) return; + try { + Boolean isConsent = flowUtil.isConsent(dto); + String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode(); + baseMapper.updateById(WalletForeignEntity.builder().id(detail.getId()).processStatus(processStatus).build()); + // 创建券 + if (isConsent) { + walletCodeUseService.generate(detail.getId(), detail.getUserId(), WalletCodeBizEnum.FOREIGN, detail.getCount()); + } + }catch (Exception e) { + e.printStackTrace(); + log.error("|{}|审批回调意外的错误,dto:|{}|error:|{}|", TAG, JSON.toJSONString(dto), e.getMessage()); + } + // 创建券 + walletCodeUseService.generate(detail.getId(), detail.getUserId(), WalletCodeBizEnum.FOREIGN, detail.getCount()); } private boolean isCheckData(Long walletId) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() .eq(WalletForeignEntity::getUserId, walletId) + .eq(WalletForeignEntity::getProcessStatus, NodeStatusEnum.JXZ.getCode()) ); return count > 0; } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java index 86e3cdad0..2a1675761 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletStrideServiceImpl.java @@ -11,16 +11,15 @@ import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; -import com.bsd.pjcloud.common.core.constant.enums.TaskStatusEnum; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; -import com.bsd.pjcloud.common.data.resolver.ParamResolver; import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum; -import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; -import com.bsd.pjcloud.flow.task.vo.ProcessVO; +import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletStrideDto; +import com.bsd.pjcloud.wallet.api.entity.WalletForeignEntity; import com.bsd.pjcloud.wallet.api.entity.WalletStrideEntity; import com.bsd.pjcloud.wallet.api.vo.WalletStrideVo; import com.bsd.pjcloud.wallet.mapper.WalletStrideMapper; @@ -35,7 +34,6 @@ import org.springframework.validation.annotation.Validated; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Optional; /** * 跨单位就餐 @@ -55,6 +53,8 @@ public class WalletStrideServiceImpl extends ServiceImpl() + .eq(WalletStrideEntity::getProcessId, processId) + ); + if (ObjectUtil.isEmpty(detail)) return; + try { + Boolean isConsent = flowUtil.isConsent(dto); + String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode(); + baseMapper.updateById(WalletStrideEntity.builder().id(detail.getId()).processStatus(processStatus).build()); + // 创建券 + if (isConsent) { + walletCodeUseService.generate(detail.getId(), detail.getUserId(), WalletCodeBizEnum.STRIDE, detail.getCount()); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("|{}|审批回调意外的错误,dto:|{}|error:|{}|", TAG, JSON.toJSONString(dto), e.getMessage()); + } } private boolean isCheckData(Long walletId) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() .eq(WalletStrideEntity::getUserId, walletId) + .eq(WalletStrideEntity::getProcessStatus, NodeStatusEnum.JXZ.getCode()) ); return count > 0; } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java index 30c2a8d4d..6f3c2004f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/FlowUtil.java @@ -4,12 +4,15 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.resolver.ParamResolver; import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; import com.bsd.pjcloud.flow.task.constant.NodeUserTypeEnum; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import com.bsd.pjcloud.flow.task.entity.Process; import com.bsd.pjcloud.flow.task.vo.FormItemVO; import com.bsd.pjcloud.flow.task.vo.ProcessVO; import com.fasterxml.jackson.core.type.TypeReference; @@ -22,6 +25,7 @@ import org.springframework.validation.annotation.Validated; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; @Validated @Slf4j @@ -43,7 +47,7 @@ public class FlowUtil { throw new RuntimeException("请配置跨单位审批流程ID"); } R detail = flowApiFlowService.getDetail(defaultRole); - if (!ObjectUtil.isAllNotEmpty(detail, detail.getData(), detail.getData().getId())) { + if (Optional.of(detail.getData()).map(Process::getId).isEmpty()) { log.error("|{}|未查询到该审批流程;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId); throw new RuntimeException("未查询到该审批流程"); } @@ -54,10 +58,6 @@ public class FlowUtil { processDto.setParamMap(paramMap); processDto.setStartUserId(String.valueOf(user.getUserId())); R startVo = flowApiFlowService.startProcessInstance(processDto); - if (!ObjectUtil.isAllNotEmpty(startVo, startVo.getData())) { - log.error("|{}|发起审批流程错误;userId:|{}|businessId:|{}|", TAG, user.getUserId(), businessId); - throw new RuntimeException("发起审批流程错误"); - } return startVo.getData(); } @@ -81,4 +81,18 @@ public class FlowUtil { } return paramMap; } + + // 检查回调是否正确 + public Boolean checkCallback(ProcessNodeRecordAssignUserParamDto dto) { + if (!ObjectUtil.isAllNotEmpty(dto, dto.getFlowId())) return false; + return true; + } + + // 是否同意 + public Boolean isConsent(ProcessNodeRecordAssignUserParamDto dto) { + if (!ObjectUtil.isAllNotEmpty(dto, dto.getNodeId())) return false; + String statusKey = dto.getNodeId() + "_approve_condition"; + JSONObject jsonObject = JSON.parseObject(dto.getData()); + return Boolean.parseBoolean(jsonObject.get(statusKey).toString()); + } } From 85f27c56c3bc67b188f03732532beec8676d5024 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 3 Jan 2025 18:12:58 +0800 Subject: [PATCH 3/4] =?UTF-8?q?creaet:=E9=A5=AD=E5=8D=A1=E5=86=BB=E7=BB=93?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 25 ++-- .../wallet/api/dto/WalletFreezeDto.java | 4 +- .../wallet/api/entity/WalletFreezeEntity.java | 24 +++- .../controller/WalletFreezeController.java | 117 ++++++++---------- .../wallet/mapper/WalletFreezeMapper.java | 2 +- .../wallet/service/WalletFreezeService.java | 5 + .../wallet/service/WalletManageService.java | 12 +- .../impl/WalletForeignServiceImpl.java | 4 +- .../service/impl/WalletFreezeServiceImpl.java | 63 +++++++++- .../service/impl/WalletManageServiceImpl.java | 17 ++- 10 files changed, 186 insertions(+), 87 deletions(-) diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 674c8cf96..6e84d7e81 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -113,17 +113,20 @@ CREATE INDEX idx_dept_id ON wallet_active (user_id); DROP TABLE IF EXISTS wallet_freeze; CREATE TABLE wallet_freeze ( - id bigint NOT NULL COMMENT '编号', - wallet_id bigint NOT NULL COMMENT '钱包id', - user_id bigint NOT NULL COMMENT '用户id', - free_status tinytext NOT NULL COMMENT '冻结状态', - remark varchar(1024) COMMENT '备注', - create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', - create_time datetime DEFAULT NULL COMMENT '创建时间', - update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', - update_time datetime DEFAULT NULL COMMENT '修改时间', - del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', - tenant_id bigint DEFAULT NULL COMMENT '租户ID', + id bigint NOT NULL COMMENT '编号', + process_id varchar(256) COMMENT '流程id', + process_status varchar(10) NOT NULL COMMENT '审核状体', + wallet_id bigint NOT NULL COMMENT '钱包id', + user_id bigint NOT NULL COMMENT '用户id', + dept_id bigint NOT NULL COMMENT '部门id', + free_status tinytext NOT NULL COMMENT '冻结状态', + remark varchar(1024) COMMENT '备注', + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', PRIMARY KEY (id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='饭卡冻结记录表'; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeDto.java index 151e1834d..bd14e0adc 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeDto.java @@ -8,8 +8,10 @@ import java.util.List; @Data public class WalletFreezeDto extends WalletFreezeEntity { - private List userIds; + private Long walletTypeId; private String cardNumber; + private List userIds; + } 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 6071d5684..0a898e871 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 @@ -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; @@ -14,6 +13,9 @@ import java.time.LocalDateTime; * @author dzc * @date 2024-12-31 18:54:43 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("wallet_freeze") @@ -29,6 +31,18 @@ public class WalletFreezeEntity extends Model { @Schema(description="编号") private Long id; + /** + * 流程id + */ + @Schema(description = "流程id") + private String processId; + + /** + * 流程状态 + */ + @Schema(description = "流程状态") + private String processStatus; + /** * 钱包id */ @@ -41,6 +55,12 @@ public class WalletFreezeEntity extends Model { @Schema(description="用户id") private Long userId; + /** + * 部门id + */ + @Schema(description="部门id") + private Long deptId; + /** * 冻结状态 */ 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 6629aa1ac..4f44e368a 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 @@ -7,6 +7,10 @@ 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.log.annotation.SysLog; +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.WalletFreezeDto; import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; import com.bsd.pjcloud.wallet.service.WalletFreezeService; @@ -30,103 +34,84 @@ import java.util.List; */ @RestController @RequiredArgsConstructor -@RequestMapping("/wallet-freeze" ) -@Tag(description = "wallet-freeze" , name = "饭卡冻结记录表管理" ) +@RequestMapping("/wallet-freeze") +@Tag(description = "wallet-freeze", name = "饭卡冻结记录表管理") @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class WalletFreezeController { - private final WalletFreezeService walletFreezeService; + private final WalletFreezeService walletFreezeService; - /** - * 分页查询 - * @param page 分页对象 - * @param walletFreeze 饭卡冻结记录表 - * @return - */ - @Operation(summary = "分页查询" , description = "分页查询" ) - @GetMapping("/page" ) - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')" ) + /* ************************************* start flow callback start ************************************* */ + + @Inner(value = false) + @PostMapping("/apply-callback") + public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto) { + walletFreezeService.applyCallback(dto); + } + + /* ************************************* start flow callback start ************************************* */ + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')") public R getWalletFreezePage(@ParameterObject Page page, @ParameterObject WalletFreezeEntity walletFreeze) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); return R.ok(walletFreezeService.page(page, wrapper)); } - /** - * 分页复杂查询 - * @param page 分页复杂查询 - * @param dto 分页复杂查询 - * @return - */ - @Operation(summary = "分页复杂查询" , description = "分页复杂查询" ) - @GetMapping("/page-join" ) - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')" ) + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')") public R getWalletFreezePage(@ParameterObject Page page, @ParameterObject WalletFreezeDto dto) { return R.ok(walletFreezeService.pageJoin(page, dto)); } - - /** - * 通过id查询饭卡冻结记录表 - * @param id id - * @return R - */ - @Operation(summary = "通过id查询" , description = "通过id查询" ) - @GetMapping("/{id}" ) - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')" ) - public R getById(@PathVariable("id" ) Long id) { + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_view')") + public R getById(@PathVariable("id") Long id) { return R.ok(walletFreezeService.getById(id)); } - /** - * 新增饭卡冻结记录表 - * @param walletFreeze 饭卡冻结记录表 - * @return R - */ - @Operation(summary = "新增饭卡冻结记录表" , description = "新增饭卡冻结记录表" ) - @SysLog("新增饭卡冻结记录表" ) + @Operation(summary = "新增饭卡冻结记录表", description = "新增饭卡冻结记录表") + @SysLog("新增饭卡冻结记录表") @PostMapping - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_add')" ) - public R save(@RequestBody WalletFreezeEntity walletFreeze) { - return R.ok(walletFreezeService.save(walletFreeze)); + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_add')") + public R save(@RequestBody WalletFreezeDto dto) { + return R.ok(walletFreezeService.create(dto)); } - /** - * 修改饭卡冻结记录表 - * @param walletFreeze 饭卡冻结记录表 - * @return R - */ - @Operation(summary = "修改饭卡冻结记录表" , description = "修改饭卡冻结记录表" ) - @SysLog("修改饭卡冻结记录表" ) + @Operation(summary = "新增饭卡冻结记录表", description = "新增饭卡冻结记录表") + @SysLog("新增饭卡冻结记录表") + @PostMapping("/app") + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_add')") + public R appSave(@RequestBody WalletFreezeDto dto) { + PjcloudUser loginUser = SecurityUtils.getUser(); + dto.setUserId(loginUser.getId()); + return R.ok(walletFreezeService.create(dto)); + } + + + @Operation(summary = "修改饭卡冻结记录表", description = "修改饭卡冻结记录表") + @SysLog("修改饭卡冻结记录表") @PutMapping - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_edit')" ) + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_edit')") public R updateById(@RequestBody WalletFreezeEntity walletFreeze) { return R.ok(walletFreezeService.updateById(walletFreeze)); } - /** - * 通过id删除饭卡冻结记录表 - * @param ids id列表 - * @return R - */ - @Operation(summary = "通过id删除饭卡冻结记录表" , description = "通过id删除饭卡冻结记录表" ) - @SysLog("通过id删除饭卡冻结记录表" ) + @Operation(summary = "通过id删除饭卡冻结记录表", description = "通过id删除饭卡冻结记录表") + @SysLog("通过id删除饭卡冻结记录表") @DeleteMapping - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_del')" ) + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_del')") public R removeById(@RequestBody Long[] ids) { return R.ok(walletFreezeService.removeBatchByIds(CollUtil.toList(ids))); } - - /** - * 导出excel 表格 - * @param walletFreeze 查询条件 - * @param ids 导出指定ID - * @return excel 文件流 - */ @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_export')" ) - public List export(WalletFreezeEntity walletFreeze,Long[] ids) { + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_export')") + public List export(WalletFreezeEntity walletFreeze, Long[] ids) { return walletFreezeService.list(Wrappers.lambdaQuery(walletFreeze).in(ArrayUtil.isNotEmpty(ids), WalletFreezeEntity::getId, ids)); } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletFreezeMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletFreezeMapper.java index 27ecf4321..c985867a3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletFreezeMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletFreezeMapper.java @@ -23,6 +23,6 @@ public interface WalletFreezeMapper extends PjcloudBaseMapper { Page pageJoin(Page page, WalletFreezeDto dto); + + Long create(WalletFreezeDto dto); + + void applyCallback(ProcessNodeRecordAssignUserParamDto dto); } \ 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 ec0f40f33..ae225218e 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 @@ -36,7 +36,7 @@ public interface WalletManageService extends IService { WalletManageEntity getOrCreateWallet(@NotNull Long userId, @NotNull WalletTypeCodeEnum walletTypeCode); /** - * 获取钱包(有缓存) + * 获取钱包(没有缓存) * * @param userId * @param walletTypeCode @@ -44,6 +44,16 @@ public interface WalletManageService extends IService { */ WalletManageEntity getWallet(@NotNull Long userId, @NotNull WalletTypeCodeEnum walletTypeCode); + + /** + * 获取钱包(没有缓存) + * + * @param userId + * @param walletTypeId + * @return + */ + WalletManageEntity getWallet(@NotNull Long userId, @NotNull Long walletTypeId); + /** * 获取钱包(有缓存) * diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java index 0428afca7..67f22ba98 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletForeignServiceImpl.java @@ -69,7 +69,7 @@ public class WalletForeignServiceImpl extends ServiceImpl implements WalletFreezeService { + static private final String TAG = "饭卡冻结记录表"; + private final RemoteUserService userService; private final RemoteDeptService deptService; + private final FlowUtil flowUtil; + + private final WalletManageService walletManageService; + @Override public Page pageJoin(Page page, WalletFreezeDto dto) { Page list = baseMapper.pageJoin(page, dto); @@ -60,4 +79,46 @@ public class WalletFreezeServiceImpl extends ServiceImpl userData = userService.getByUserId(dto.getUserId()); + if (ObjectUtil.isEmpty(userData.getData())) { + throw new RuntimeException("发起人不存在"); + } + // 查询钱包 + WalletManageEntity wallet = walletManageService.getWallet(dto.getUserId(), dto.getWalletTypeId()); + if (ObjectUtil.isEmpty(wallet)) { + throw new RuntimeException("用户钱包不存在"); + } + dto.setDeptId(userData.getData().getSysUser().getDeptId()); + dto.setFreeStatus(YesNoEnum.NO.getCode()); + dto.setWalletId(wallet.getId()); + dto.setProcessStatus(TaskCheckStatusEnum.PADDING.getCode()); + baseMapper.insert(dto); + // 发起审批 + String processId = flowUtil.startFlow("TASK_FREEZE_FLOW", userData.getData().getSysUser(), dto.getId()); + baseMapper.updateById(WalletFreezeEntity.builder().id(dto.getId()).processId(processId).build()); + return dto.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void applyCallback(ProcessNodeRecordAssignUserParamDto dto) { + if (!flowUtil.checkCallback(dto)) return; + String processId = dto.getProcessInstanceId(); + WalletFreezeEntity detail = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(WalletFreezeEntity::getProcessId, processId) + ); + if (ObjectUtil.isEmpty(detail)) return; + try { + Boolean isConsent = flowUtil.isConsent(dto); + String processStatus = isConsent ? TaskCheckStatusEnum.RESULT.getCode() : TaskCheckStatusEnum.REJECT.getCode(); + baseMapper.updateById(WalletFreezeEntity.builder().id(detail.getId()).freeStatus(YesNoEnum.YES.getCode()).processStatus(processStatus).build()); + } catch (Exception e) { + e.printStackTrace(); + log.error("|{}|审批回调意外的错误,dto:|{}|error:|{}|", TAG, JSON.toJSONString(dto), e.getMessage()); + } + } } \ 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 a20edf7f8..03aa5a581 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 @@ -65,11 +65,16 @@ public class WalletManageServiceImpl extends ServiceImpl ObjectUtil.equals(v, ParamResolver.getStr("WALLET_AUTO_CREATE"))).findFirst().get(); + String role = Arrays.stream(user.getRoleCodes()).filter(v -> ObjectUtil.equals(v, autoWalletRoleCode)).findFirst().get(); if (ObjectUtil.isEmpty(role)) { log.info("|{}|创建用户电子钱包失败,userId:{},没有{}权限", TAG, userId, "WALLET_AUTO_CREATE"); return; @@ -117,6 +122,16 @@ public class WalletManageServiceImpl extends ServiceImpl() + .eq(WalletManageEntity::getUserId, userId) + .eq(WalletManageEntity::getWalletTypeId, walletType.getId()) + ); + } + @Override @Cacheable(value = CacheConstants.WALLET_DETAIL, key = "#walletId", condition = "#walletId != null", unless = "#result == null") public WalletManageEntity getWallet(Long walletId) { From 7b55aa0f1cc57e540fb58101ff1029c1befa3e0c Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 3 Jan 2025 18:55:09 +0800 Subject: [PATCH 4/4] =?UTF-8?q?create=EF=BC=9A=E5=85=85=E5=80=BC=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E3=80=81=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 55 +++++- .../api/dto/WalletRechargeImportDto.java | 9 - .../WalletRechargeApplyDto.java | 5 +- .../api/dto/recharge/WalletRechargeDto.java | 14 ++ .../dto/recharge/WalletRechargeImportDto.java | 9 + .../recharge/WalletRechargePackageDto.java | 9 + .../WalletRechargeApplyEntity.java | 3 +- .../entity/recharge/WalletRechargeEntity.java | 158 ++++++++++++++++++ .../WalletRechargeImportEntity.java | 2 +- .../recharge/WalletRechargePackageEntity.java | 93 +++++++++++ .../wallet/api/vo/WalletRechargeImportVo.java | 9 - .../{ => recharge}/WalletRechargeApplyVo.java | 4 +- .../vo/recharge/WalletRechargeImportVo.java | 9 + .../vo/recharge/WalletRechargePackageVo.java | 8 + .../api/vo/recharge/WalletRechargeVo.java | 9 + .../WalletRechargeApplyController.java | 80 +-------- .../recharge/WalletRechargeController.java | 92 ++++++++++ .../WalletRechargePackageController.java | 92 ++++++++++ .../WalletRechargeApplyMapper.java | 8 +- .../WalletRechargeImportMapper.java | 4 +- .../mapper/recharge/WalletRechargeMapper.java | 19 +++ .../recharge/WalletRechargePackageMapper.java | 21 +++ .../service/WalletRechargeApplyService.java | 6 +- .../service/WalletRechargeImportService.java | 2 +- .../service/WalletRechargePackageService.java | 12 ++ .../wallet/service/WalletRechargeService.java | 13 ++ .../WalletRechargeApplyServiceImpl.java | 14 +- .../WalletRechargeImportServiceImpl.java | 6 +- .../WalletRechargePackageServiceImpl.java | 26 +++ .../recharge/WalletRechargeServiceImpl.java | 27 +++ .../WalletRechargeApplyMapper.xml | 4 +- .../WalletRechargeImportMapper.xml | 4 +- .../mapper/recharge/WalletRechargeMapper.xml | 29 ++++ .../recharge/WalletRechargePackageMapper.xml | 19 +++ 34 files changed, 748 insertions(+), 126 deletions(-) delete mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeImportDto.java rename pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/{ => recharge}/WalletRechargeApplyDto.java (54%) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargePackageDto.java rename pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/{ => recharge}/WalletRechargeApplyEntity.java (95%) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeEntity.java rename pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/{ => recharge}/WalletRechargeImportEntity.java (97%) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargePackageEntity.java delete mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletRechargeImportVo.java rename pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/{ => recharge}/WalletRechargeApplyVo.java (81%) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeImportVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargePackageVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeVo.java rename pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/{ => recharge}/WalletRechargeApplyController.java (78%) create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java rename pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/{ => recharge}/WalletRechargeApplyMapper.java (84%) rename pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/{ => recharge}/WalletRechargeImportMapper.java (63%) create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargePackageMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargePackageService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeService.java rename pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/{ => recharge}/WalletRechargeApplyServiceImpl.java (94%) rename pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/{ => recharge}/WalletRechargeImportServiceImpl.java (67%) create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeServiceImpl.java rename pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/{ => recharge}/WalletRechargeApplyMapper.xml (86%) rename pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/{ => recharge}/WalletRechargeImportMapper.xml (84%) create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeMapper.xml create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargePackageMapper.xml diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 6e84d7e81..fe8f2a701 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -295,4 +295,57 @@ CREATE TABLE wallet_code_use tenant_id bigint DEFAULT NULL COMMENT '租户ID', PRIMARY KEY (id) ) ENGINE = InnoDB - DEFAULT CHARSET = utf8mb4 COMMENT ='二维码使用表'; \ No newline at end of file + DEFAULT CHARSET = utf8mb4 COMMENT ='二维码使用表'; + +-- ---------------------------- +-- Table structure for wallet_recharge_package +-- ---------------------------- +DROP TABLE IF EXISTS wallet_recharge_package; +create table wallet_recharge_package +( + id bigint NOT NULL COMMENT '编号', + name varchar(64) NOT NULL COMMENT '套餐名', + pay_price int NOT NULL COMMENT '支付金额', + bonus_price int NOT NULL COMMENT '赠送金额', + status tinyint NOT NULL COMMENT '状态', + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', + PRIMARY KEY (id) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='充值套餐表'; + +-- ---------------------------- +-- Table structure for wallet_recharge +-- ---------------------------- +DROP TABLE IF EXISTS wallet_recharge; +create table wallet_recharge +( + id bigint NOT NULL COMMENT '编号', + wallet_id bigint NOT NULL COMMENT '会员钱包 id', + total_price int NOT NULL COMMENT '用户实际到账余额,例如充 100 送 20,则该值是 120', + pay_price int NOT NULL COMMENT '实际支付金额', + bonus_price int NOT NULL COMMENT '钱包赠送金额', + package_id bigint NULL COMMENT '充值套餐编号', + pay_status bit default b'0' NOT NULL COMMENT '是否已支付:[0:未支付 1:已经支付过]', + pay_order_id bigint NULL COMMENT '支付订单编号', + pay_channel_code varchar(16) NULL COMMENT '支付成功的支付渠道', + pay_time datetime NULL COMMENT '订单支付时间', + pay_refund_id bigint NULL COMMENT '支付退款单编号', + refund_total_price int default 0 NOT NULL COMMENT '退款金额,包含赠送金额', + refund_pay_price int default 0 NOT NULL COMMENT '退款支付金额', + refund_bonus_price int default 0 NOT NULL COMMENT '退款钱包赠送金额', + refund_time datetime NULL COMMENT '退款时间', + refund_status int default 0 NOT NULL COMMENT '退款状态', + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', + PRIMARY KEY (id) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='会员钱包充值'; \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeImportDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeImportDto.java deleted file mode 100644 index 324ce25d6..000000000 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeImportDto.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bsd.pjcloud.wallet.api.dto; - -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeImportEntity; -import lombok.Data; - -@Data -public class WalletRechargeImportDto extends WalletRechargeImportEntity { - -} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeApplyDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java similarity index 54% rename from pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeApplyDto.java rename to pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java index 3a2c2d5c1..4915aa9a7 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRechargeApplyDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeApplyDto.java @@ -1,7 +1,6 @@ -package com.bsd.pjcloud.wallet.api.dto; +package com.bsd.pjcloud.wallet.api.dto.recharge; -import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import lombok.Data; import java.util.List; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeDto.java new file mode 100644 index 000000000..d117c7c96 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeDto.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.wallet.api.dto.recharge; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeEntity; +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; + +@Data +public class WalletRechargeDto extends WalletRechargeEntity { +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java new file mode 100644 index 000000000..d8b3a2e61 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.wallet.api.dto.recharge; + +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; +import lombok.Data; + +@Data +public class WalletRechargeImportDto extends WalletRechargeImportEntity { + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargePackageDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargePackageDto.java new file mode 100644 index 000000000..892516317 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargePackageDto.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.wallet.api.dto.recharge; + +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import lombok.Data; + +@Data +public class WalletRechargePackageDto extends WalletRechargePackageEntity { + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletRechargeApplyEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java similarity index 95% rename from pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletRechargeApplyEntity.java rename to pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java index 8b1a06095..75032aae3 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletRechargeApplyEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java @@ -1,4 +1,4 @@ -package com.bsd.pjcloud.wallet.api.entity; +package com.bsd.pjcloud.wallet.api.entity.recharge; import cn.hutool.core.date.DatePattern; import com.baomidou.mybatisplus.annotation.*; @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeEntity.java new file mode 100644 index 000000000..1b5da70ab --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeEntity.java @@ -0,0 +1,158 @@ +package com.bsd.pjcloud.wallet.api.entity.recharge; + +import com.baomidou.mybatisplus.annotation.*; +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; + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +@TenantTable +@TableName("wallet_recharge") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "会员钱包充值") +public class WalletRechargeEntity extends Model { + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "编号") + private Long id; + + /** + * 会员钱包 id + */ + @Schema(description = "会员钱包 id") + private Long walletId; + + /** + * 用户实际到账余额,例如充 100 送 20,则该值是 120 + */ + @Schema(description = "用户实际到账余额,例如充 100 送 20,则该值是 120") + private Integer totalPrice; + + /** + * 实际支付金额 + */ + @Schema(description = "实际支付金额") + private Integer payPrice; + + /** + * 钱包赠送金额 + */ + @Schema(description = "钱包赠送金额") + private Integer bonusPrice; + + /** + * 充值套餐编号 + */ + @Schema(description = "充值套餐编号") + private Long packageId; + + /** + * 是否已支付:[0:未支付 1:已经支付过] + */ + @Schema(description = "是否已支付:[0:未支付 1:已经支付过]") + private Boolean payStatus; + + /** + * 支付订单编号 + */ + @Schema(description = "支付订单编号") + private Long payOrderId; + + /** + * 支付成功的支付渠道 + */ + @Schema(description = "支付成功的支付渠道") + private String payChannelCode; + + /** + * 订单支付时间 + */ + @Schema(description = "订单支付时间") + private LocalDateTime payTime; + + /** + * 支付退款单编号 + */ + @Schema(description = "支付退款单编号") + private Long payRefundId; + + /** + * 退款金额,包含赠送金额 + */ + @Schema(description = "退款金额,包含赠送金额") + private Integer refundTotalPrice; + + /** + * 退款支付金额 + */ + @Schema(description = "退款支付金额") + private Integer refundPayPrice; + + /** + * 退款钱包赠送金额 + */ + @Schema(description = "退款钱包赠送金额") + private Integer refundBonusPrice; + + /** + * 退款时间 + */ + @Schema(description = "退款时间") + private LocalDateTime refundTime; + + /** + * 退款状态 + */ + @Schema(description = "退款状态") + private Integer refundStatus; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") + private String delFlag; + + /** + * 租户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/WalletRechargeImportEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java similarity index 97% rename from pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletRechargeImportEntity.java rename to pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java index 3504b8449..2586091e4 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletRechargeImportEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeImportEntity.java @@ -1,4 +1,4 @@ -package com.bsd.pjcloud.wallet.api.entity; +package com.bsd.pjcloud.wallet.api.entity.recharge; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargePackageEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargePackageEntity.java new file mode 100644 index 000000000..95c7a580d --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargePackageEntity.java @@ -0,0 +1,93 @@ +package com.bsd.pjcloud.wallet.api.entity.recharge; + +import com.baomidou.mybatisplus.annotation.*; +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; + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +@TenantTable +@TableName("wallet_recharge_package") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "充值套餐表") +public class WalletRechargePackageEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="编号") + private Long id; + + /** + * 套餐名 + */ + @Schema(description="套餐名") + private String name; + + /** + * 支付金额 + */ + @Schema(description="支付金额") + private Integer payPrice; + + /** + * 赠送金额 + */ + @Schema(description="赠送金额") + private Integer bonusPrice; + + /** + * 状态 + */ + @Schema(description="状态") + private Integer status; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description="删除标记") + private String delFlag; + + /** + * 租户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/vo/WalletRechargeImportVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletRechargeImportVo.java deleted file mode 100644 index a913f778b..000000000 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletRechargeImportVo.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bsd.pjcloud.wallet.api.vo; - -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeImportEntity; -import lombok.Data; - -@Data -public class WalletRechargeImportVo extends WalletRechargeImportEntity { - -} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletRechargeApplyVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java similarity index 81% rename from pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletRechargeApplyVo.java rename to pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java index f6f25f20e..9ef2e6d8e 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletRechargeApplyVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeApplyVo.java @@ -1,8 +1,8 @@ -package com.bsd.pjcloud.wallet.api.vo; +package com.bsd.pjcloud.wallet.api.vo.recharge; import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import lombok.Data; @Data diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeImportVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeImportVo.java new file mode 100644 index 000000000..b026b6d46 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeImportVo.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.wallet.api.vo.recharge; + +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; +import lombok.Data; + +@Data +public class WalletRechargeImportVo extends WalletRechargeImportEntity { + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargePackageVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargePackageVo.java new file mode 100644 index 000000000..5f8e339a2 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargePackageVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.vo.recharge; + +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import lombok.Data; + +@Data +public class WalletRechargePackageVo extends WalletRechargePackageEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeVo.java new file mode 100644 index 000000000..cfc94fa87 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/recharge/WalletRechargeVo.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.wallet.api.vo.recharge; + +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeEntity; +import lombok.Data; + + +@Data +public class WalletRechargeVo extends WalletRechargeEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletRechargeApplyController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java similarity index 78% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletRechargeApplyController.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java index 5bf339f26..fc6763c8a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletRechargeApplyController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java @@ -1,4 +1,4 @@ -package com.bsd.pjcloud.wallet.controller; +package com.bsd.pjcloud.wallet.controller.recharge; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; @@ -8,9 +8,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.excel.annotation.RequestExcel; import com.bsd.pjcloud.common.log.annotation.SysLog; -import com.bsd.pjcloud.wallet.api.dto.WalletRechargeApplyDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.excel.WalletRechargeExcelDto; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.service.WalletRechargeApplyService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -22,14 +22,9 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; + import java.util.List; -/** - * 充值/扣款申请 - * - * @author pjcloud - * @date 2024-12-31 14:23:57 - */ @RestController @RequiredArgsConstructor @RequestMapping("/wallet-recharge-apply") @@ -39,12 +34,6 @@ public class WalletRechargeApplyController { private final WalletRechargeApplyService walletRechargeApplyService; - - /** - * 提交申请 - * - * @return - */ @Operation(summary = "提交申请", description = "提交申请") @SysLog("提交申请") @PostMapping("/apply") @@ -54,11 +43,6 @@ public class WalletRechargeApplyController { return R.ok(true); } - /** - * 取消申请 - * - * @return - */ @Operation(summary = "取消申请", description = "取消申请") @SysLog("取消申请") @PostMapping("/cancel-apply") @@ -68,13 +52,6 @@ public class WalletRechargeApplyController { return R.ok(true); } - /** - * 分页查询 - * - * @param page 分页对象 - * @param walletRechargeApply 充值/扣款申请 - * @return - */ @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_view')") @@ -83,13 +60,6 @@ public class WalletRechargeApplyController { return R.ok(walletRechargeApplyService.page(page, wrapper)); } - /** - * 分页查询 - * - * @param page 分页对象 - * @param dto 充值/扣款申请 - * @return - */ @Operation(summary = "分页复杂查询", description = "分页复杂查询") @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_view')") @@ -97,13 +67,6 @@ public class WalletRechargeApplyController { return R.ok(walletRechargeApplyService.pageJoin(page, dto)); } - - /** - * 通过id查询充值/扣款申请 - * - * @param id id - * @return R - */ @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_view')") @@ -111,12 +74,6 @@ public class WalletRechargeApplyController { return R.ok(walletRechargeApplyService.getById(id)); } - /** - * 新增充值/扣款申请 - * - * @param dto 充值/扣款申请 - * @return R - */ @Operation(summary = "新增充值/扣款申请", description = "新增充值/扣款申请") @SysLog("新增充值/扣款申请") @PostMapping @@ -126,12 +83,6 @@ public class WalletRechargeApplyController { return R.ok(); } - /** - * 修改充值/扣款申请 - * - * @param walletRechargeApply 充值/扣款申请 - * @return R - */ @Operation(summary = "修改充值/扣款申请", description = "修改充值/扣款申请") @SysLog("修改充值/扣款申请") @PutMapping @@ -140,12 +91,6 @@ public class WalletRechargeApplyController { return R.ok(walletRechargeApplyService.updateById(walletRechargeApply)); } - /** - * 通过id删除充值/扣款申请 - * - * @param ids id列表 - * @return R - */ @Operation(summary = "通过id删除充值/扣款申请", description = "通过id删除充值/扣款申请") @SysLog("通过id删除充值/扣款申请") @DeleteMapping @@ -157,13 +102,6 @@ public class WalletRechargeApplyController { /* ************************************* start excel start ************************************* */ - /** - * 导出excel 表格 - * - * @param walletRechargeApply 查询条件 - * @param ids 导出指定ID - * @return excel 文件流 - */ @ResponseExcel @GetMapping("/export") @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_export')") @@ -171,16 +109,10 @@ public class WalletRechargeApplyController { return walletRechargeApplyService.list(Wrappers.lambdaQuery(walletRechargeApply).in(ArrayUtil.isNotEmpty(ids), WalletRechargeApplyEntity::getId, ids)); } - /** - * 读取excel内容 - * @param excelVOList - * @param bindingResult - * @return - */ @PostMapping("/read-excel") public R readExcel(@RequestExcel List excelVOList, BindingResult bindingResult) { - return walletRechargeApplyService.readExcel(excelVOList, bindingResult); + return walletRechargeApplyService.readExcel(excelVOList, bindingResult); } - /* ************************************* start excel start ************************************* */ + /* ************************************* start excel start ************************************* */ } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeController.java new file mode 100644 index 000000000..dd46be96b --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeController.java @@ -0,0 +1,92 @@ +package com.bsd.pjcloud.wallet.controller.recharge; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +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.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeEntity; +import com.bsd.pjcloud.wallet.service.WalletRechargeService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 会员钱包充值 + * + * @author dzc + * @date 2025-01-03 18:36:02 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/wallet-recharge") +@Tag(description = "wallet-recharge", name = "会员钱包充值管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class WalletRechargeController { + + private final WalletRechargeService walletRechargeService; + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_view')") + public R getWalletRechargePage(@ParameterObject Page page, @ParameterObject WalletRechargeDto dto) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return R.ok(walletRechargeService.page(page, wrapper)); + } + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_view')") + public R pageJoin(@ParameterObject Page page, @ParameterObject WalletRechargeDto dto) { + return R.ok(walletRechargeService.pageJoin(page, dto)); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(walletRechargeService.getById(id)); + } + + @Operation(summary = "新增会员钱包充值", description = "新增会员钱包充值") + @SysLog("新增会员钱包充值") + @PostMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_add')") + public R save(@RequestBody WalletRechargeEntity walletRecharge) { + return R.ok(walletRechargeService.save(walletRecharge)); + } + + @Operation(summary = "修改会员钱包充值", description = "修改会员钱包充值") + @SysLog("修改会员钱包充值") + @PutMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_edit')") + public R updateById(@RequestBody WalletRechargeEntity walletRecharge) { + return R.ok(walletRechargeService.updateById(walletRecharge)); + } + + @Operation(summary = "通过id删除会员钱包充值", description = "通过id删除会员钱包充值") + @SysLog("通过id删除会员钱包充值") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(walletRechargeService.removeBatchByIds(CollUtil.toList(ids))); + } + + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('wallet_walletRecharge_export')") + public List export(WalletRechargeEntity walletRecharge, Long[] ids) { + return walletRechargeService.list(Wrappers.lambdaQuery(walletRecharge).in(ArrayUtil.isNotEmpty(ids), WalletRechargeEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java new file mode 100644 index 000000000..e91d372c5 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java @@ -0,0 +1,92 @@ +package com.bsd.pjcloud.wallet.controller.recharge; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +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.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargePackageDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import com.bsd.pjcloud.wallet.service.WalletRechargePackageService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 充值套餐表 + * + * @author dzc + * @date 2025-01-03 18:33:55 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/wallet-recharge-package") +@Tag(description = "walletRechargePackage", name = "充值套餐表管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class WalletRechargePackageController { + + private final WalletRechargePackageService walletRechargePackageService; + + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_view')") + public R getWalletRechargePackagePage(@ParameterObject Page page, @ParameterObject WalletRechargePackageEntity walletRechargePackage) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return R.ok(walletRechargePackageService.page(page, wrapper)); + } + + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_view')") + public R PageJoin(@ParameterObject Page page, @ParameterObject WalletRechargePackageDto dto) { + return R.ok(walletRechargePackageService.pageJoin(page, dto)); + } + + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(walletRechargePackageService.getById(id)); + } + + @Operation(summary = "新增充值套餐表", description = "新增充值套餐表") + @SysLog("新增充值套餐表") + @PostMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_add')") + public R save(@RequestBody WalletRechargePackageEntity walletRechargePackage) { + return R.ok(walletRechargePackageService.save(walletRechargePackage)); + } + + @Operation(summary = "修改充值套餐表", description = "修改充值套餐表") + @SysLog("修改充值套餐表") + @PutMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_edit')") + public R updateById(@RequestBody WalletRechargePackageEntity walletRechargePackage) { + return R.ok(walletRechargePackageService.updateById(walletRechargePackage)); + } + + @Operation(summary = "通过id删除充值套餐表", description = "通过id删除充值套餐表") + @SysLog("通过id删除充值套餐表") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(walletRechargePackageService.removeBatchByIds(CollUtil.toList(ids))); + } + + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_export')") + public List export(WalletRechargePackageEntity walletRechargePackage, Long[] ids) { + return walletRechargePackageService.list(Wrappers.lambdaQuery(walletRechargePackage).in(ArrayUtil.isNotEmpty(ids), WalletRechargePackageEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletRechargeApplyMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java similarity index 84% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletRechargeApplyMapper.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java index 444059a74..eccfef879 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletRechargeApplyMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java @@ -1,13 +1,13 @@ -package com.bsd.pjcloud.wallet.mapper; +package com.bsd.pjcloud.wallet.mapper.recharge; 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.wallet.api.dto.WalletRechargeApplyDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; -import com.bsd.pjcloud.wallet.api.vo.WalletRechargeApplyVo; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletRechargeImportMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java similarity index 63% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletRechargeImportMapper.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java index 0c890d767..ce5fc933e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletRechargeImportMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeImportMapper.java @@ -1,7 +1,7 @@ -package com.bsd.pjcloud.wallet.mapper; +package com.bsd.pjcloud.wallet.mapper.recharge; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeImportEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import org.apache.ibatis.annotations.Mapper; @Mapper diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeMapper.java new file mode 100644 index 000000000..e468eb650 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeMapper.java @@ -0,0 +1,19 @@ +package com.bsd.pjcloud.wallet.mapper.recharge; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeVo; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WalletRechargeMapper extends PjcloudBaseMapper { + + default Page pageJoin(Page page, WalletRechargeDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + return selectJoinPage(page, WalletRechargeVo.class, wrapper); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargePackageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargePackageMapper.java new file mode 100644 index 000000000..90eda03c7 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargePackageMapper.java @@ -0,0 +1,21 @@ +package com.bsd.pjcloud.wallet.mapper.recharge; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargePackageDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargePackageVo; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WalletRechargePackageMapper extends PjcloudBaseMapper { + + + default Page pageJoin(Page page, WalletRechargePackageDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + return selectJoinPage(page, WalletRechargePackageEntity.class, wrapper); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java index fe7424330..087ecde84 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java @@ -3,10 +3,10 @@ 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.core.util.R; -import com.bsd.pjcloud.wallet.api.dto.WalletRechargeApplyDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.excel.WalletRechargeExcelDto; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; -import com.bsd.pjcloud.wallet.api.vo.WalletRechargeApplyVo; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; import org.springframework.validation.BindingResult; import java.util.List; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java index 4be9e2761..c54198c10 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeImportService.java @@ -1,7 +1,7 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeImportEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; public interface WalletRechargeImportService extends IService { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargePackageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargePackageService.java new file mode 100644 index 000000000..4ba5a4c8f --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargePackageService.java @@ -0,0 +1,12 @@ +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.wallet.api.dto.recharge.WalletRechargePackageDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargePackageVo; + +public interface WalletRechargePackageService extends IService { + + Page pageJoin(Page page, WalletRechargePackageDto dto); +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeService.java new file mode 100644 index 000000000..195b341ee --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeService.java @@ -0,0 +1,13 @@ +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.wallet.api.dto.recharge.WalletRechargeDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeVo; + +public interface WalletRechargeService extends IService { + + Page pageJoin(Page page, WalletRechargeDto dto); + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletRechargeApplyServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java similarity index 94% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletRechargeApplyServiceImpl.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java index 121fff60a..3aa777e02 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletRechargeApplyServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java @@ -1,6 +1,5 @@ -package com.bsd.pjcloud.wallet.service.impl; +package com.bsd.pjcloud.wallet.service.impl.recharge; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -19,12 +18,12 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.excel.vo.ErrorMessage; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; -import com.bsd.pjcloud.wallet.api.dto.WalletRechargeApplyDto; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.excel.WalletRechargeExcelDto; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeImportEntity; -import com.bsd.pjcloud.wallet.api.vo.WalletRechargeApplyVo; -import com.bsd.pjcloud.wallet.mapper.WalletRechargeApplyMapper; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; +import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeApplyMapper; import com.bsd.pjcloud.wallet.service.WalletManageService; import com.bsd.pjcloud.wallet.service.WalletRechargeApplyService; import lombok.RequiredArgsConstructor; @@ -36,7 +35,6 @@ import org.springframework.validation.annotation.Validated; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; /** * 充值/扣款申请 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletRechargeImportServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java similarity index 67% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletRechargeImportServiceImpl.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java index 176aca4f5..fcf3a6764 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletRechargeImportServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java @@ -1,8 +1,8 @@ -package com.bsd.pjcloud.wallet.service.impl; +package com.bsd.pjcloud.wallet.service.impl.recharge; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.bsd.pjcloud.wallet.api.entity.WalletRechargeImportEntity; -import com.bsd.pjcloud.wallet.mapper.WalletRechargeImportMapper; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; +import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeImportMapper; import com.bsd.pjcloud.wallet.service.WalletRechargeImportService; import org.springframework.stereotype.Service; /** diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java new file mode 100644 index 000000000..6b8c156cf --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.wallet.service.impl.recharge; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargePackageDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargePackageEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargePackageVo; +import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargePackageMapper; +import com.bsd.pjcloud.wallet.service.WalletRechargePackageService; +import org.springframework.stereotype.Service; + +/** + * 充值套餐表 + * + * @author dzc + * @date 2025-01-03 18:33:55 + */ +@Service +public class WalletRechargePackageServiceImpl extends ServiceImpl implements WalletRechargePackageService { + + @Override + public Page pageJoin(Page page, WalletRechargePackageDto dto) { + return baseMapper.pageJoin(page, dto); + } + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeServiceImpl.java new file mode 100644 index 000000000..ebfa57373 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeServiceImpl.java @@ -0,0 +1,27 @@ +package com.bsd.pjcloud.wallet.service.impl.recharge; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeDto; +import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeEntity; +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeVo; +import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeMapper; +import com.bsd.pjcloud.wallet.service.WalletRechargeService; +import org.springframework.stereotype.Service; + +/** + * 会员钱包充值 + * + * @author dzc + * @date 2025-01-03 18:36:02 + */ +@Service +public class WalletRechargeServiceImpl extends ServiceImpl implements WalletRechargeService { + + @Override + public Page pageJoin(Page page, WalletRechargeDto dto) { + return baseMapper.pageJoin(page, dto); + } + + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletRechargeApplyMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeApplyMapper.xml similarity index 86% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletRechargeApplyMapper.xml rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeApplyMapper.xml index c9f5eff36..87afb2acf 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletRechargeApplyMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeApplyMapper.xml @@ -1,9 +1,9 @@ - + - + diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletRechargeImportMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml similarity index 84% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletRechargeImportMapper.xml rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml index fcc777c0b..1778e5e38 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletRechargeImportMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml @@ -1,8 +1,8 @@ - - + + diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeMapper.xml new file mode 100644 index 000000000..050e3d0c2 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargePackageMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargePackageMapper.xml new file mode 100644 index 000000000..2f8fcce10 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargePackageMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file