From 4d7b7e3fe518d1aa6b3fb3579298f916899c0878 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 31 Dec 2024 18:43:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AF=BC=E5=85=A5=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 2 +- .../admin/api/feign/RemoteUserService.java | 11 ++ .../bsd/pjcloud/admin/api/utils/DataUtil.java | 2 +- .../admin/controller/SysUserController.java | 10 ++ .../controller/SysUserFaceController.java | 14 +- .../file/wallet/wallet_recharge.xlsx | Bin 0 -> 9813 bytes .../main/resources/file/wallet_recharge.xlsx | Bin 0 -> 9813 bytes .../wallet/api/constant/WalletBizEnum.java | 7 +- .../api/constant/WalletBizRechargeEnum.java | 24 +++ .../api/constant/WalletTypeCodeEnum.java | 7 +- .../wallet/api/constant/WalletTypeEnum.java | 7 +- .../api/dto/WalletRechargeApplyDto.java | 7 + .../api/dto/excel/WalletRechargeExcelDto.java | 50 ++++++ .../api/entity/WalletRechargeApplyEntity.java | 9 +- .../entity/WalletRechargeImportEntity.java | 6 +- .../wallet/api/vo/WalletRechargeApplyVo.java | 22 ++- .../WalletRechargeApplyController.java | 70 ++++++++- .../mapper/WalletRechargeApplyMapper.java | 18 +++ .../service/WalletRechargeApplyService.java | 32 ++++ .../service/impl/WalletManageServiceImpl.java | 2 - .../impl/WalletRechargeApplyServiceImpl.java | 146 ++++++++++++++++++ .../impl/WalletRechargeImportServiceImpl.java | 1 + 22 files changed, 412 insertions(+), 35 deletions(-) create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx create mode 100644 pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 43b9d809c..8315a5974 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -170,7 +170,7 @@ CREATE TABLE wallet_recharge_import id bigint NOT NULL COMMENT '编号', user_id bigint NOT NULL COMMENT '用户id', apply_id bigint NOT NULL COMMENT '申请id', - before_price int NOT NULL COMMENT '导入前的金额', + before_price int DEFAULT NULL COMMENT '导入前的金额', price int NOT NULL COMMENT '交易金额, 单位分', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java index cd3a6b448..4ef0bee0f 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java @@ -57,6 +57,17 @@ public interface RemoteUserService { @GetMapping("/user/get-by-user-id") R getByUserId(@RequestParam("userId") Long userId); + /** + * 通过姓名和手机号查询用户、角色信息 + * + * @param name + * @param mobile + * @return + */ + @NoToken + @GetMapping("/user/get-name-and-mobile") + R getUserByNameAndMobile(@RequestParam("name") String name, @RequestParam("mobile") String mobile); + /** * 根据用户ID获取用户 * diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java index 2819f4028..db9e04939 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java @@ -98,7 +98,7 @@ public class DataUtil { public T convertUser(T v, SysUser user) { if (ObjectUtil.isEmpty(user)) return v; - v.setUsername(user.getUsername()); + v.setUsername(user.getName()); v.setUserMobile(user.getPhone()); v.setUserAvatar(user.getAvatar()); return v; diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index 2b7b270e3..fbb18f88e 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -78,6 +78,16 @@ public class SysUserController { return R.ok(userService.findUserInfo(user)); } + @Inner + @GetMapping("/get-name-and-mobile") + public R getUserByNameAndMobile(@RequestParam("name") String name, @RequestParam("mobile") String mobile) { + SysUser user = userService.getOne(Wrappers.query().lambda().eq(SysUser::getName, name).eq(SysUser::getPhone, mobile)); + if (user == null) { + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, name, mobile)); + } + return R.ok(userService.findUserInfo(user)); + } + /** * 获取指定用户全部信息 * diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java index da64b360f..59373ccf5 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java @@ -47,7 +47,7 @@ public class SysUserFaceController { */ @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") public R getSysUserFacePage(@ParameterObject Page page, @ParameterObject SysUserFaceEntity sysUserFace) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); return R.ok(sysUserFaceService.page(page, wrapper)); @@ -55,7 +55,7 @@ public class SysUserFaceController { @Operation(summary = "分页复杂查询", description = "分页复杂查询") @GetMapping("/page-join") - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") public R getSysUserFacePageJoin(@ParameterObject Page page, @ParameterObject SysUserFaceDto dto) { return R.ok(sysUserFaceService.pageJoin(page, dto)); } @@ -69,7 +69,7 @@ public class SysUserFaceController { */ @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") public R getById(@PathVariable("id") Long id) { return R.ok(sysUserFaceService.getById(id)); } @@ -83,7 +83,7 @@ public class SysUserFaceController { @Operation(summary = "新增人脸样本表", description = "新增人脸样本表") @SysLog("新增人脸样本表") @PostMapping - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_add')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_add')") public R save(@RequestBody SysUserFaceEntity sysUserFace) { return R.ok(sysUserFaceService.create(sysUserFace)); } @@ -97,7 +97,7 @@ public class SysUserFaceController { @Operation(summary = "修改人脸样本表", description = "修改人脸样本表") @SysLog("修改人脸样本表") @PutMapping - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_edit')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_edit')") public R updateById(@RequestBody SysUserFaceEntity sysUserFace) { sysUserFaceService.edit(sysUserFace); return R.ok(true); @@ -112,7 +112,7 @@ public class SysUserFaceController { @Operation(summary = "通过id删除人脸样本表", description = "通过id删除人脸样本表") @SysLog("通过id删除人脸样本表") @DeleteMapping - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_del')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_del')") public R removeById(@RequestBody Long[] ids) { sysUserFaceService.delByIds(CollUtil.toList(ids)); return R.ok(true); @@ -128,7 +128,7 @@ public class SysUserFaceController { */ @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_export')") +// @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_export')") public List export(SysUserFaceEntity sysUserFace, Long[] ids) { return sysUserFaceService.list(Wrappers.lambdaQuery(sysUserFace).in(ArrayUtil.isNotEmpty(ids), SysUserFaceEntity::getId, ids)); } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet/wallet_recharge.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..aaec9141a798a2f518cd458571d49f9b0709c032 GIT binary patch literal 9813 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 E2S$=SaR2}S literal 0 HcmV?d00001 diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/file/wallet_recharge.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..aaec9141a798a2f518cd458571d49f9b0709c032 GIT binary patch literal 9813 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 E2S$=SaR2}S literal 0 HcmV?d00001 diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java index 7b290a540..4634dde84 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizEnum.java @@ -1,11 +1,13 @@ 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 WalletBizEnum { UPDATE("1", "更新余额"), BATCH("2", "批量更新余额"), @@ -15,11 +17,6 @@ public enum WalletBizEnum { private final String desc; - WalletBizEnum(String code, String desc) { - this.code = code; - this.desc = desc; - } - public static WalletBizEnum descOf(String description) { return Arrays.stream(WalletBizEnum.values()) .filter(v -> ObjectUtil.equal(v.getDesc(), description)) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java new file mode 100644 index 000000000..17a2e8f36 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.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 WalletBizRechargeEnum { + ADD("1", "添加"), + REDUCTION("2", "减少"), + ; + private final String code; + + private final String desc; + + public static WalletBizRechargeEnum descOf(String description) { + return Arrays.stream(WalletBizRechargeEnum.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/constant/WalletTypeCodeEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeCodeEnum.java index 6df4eb0c4..a5dbb0939 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeCodeEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeCodeEnum.java @@ -1,11 +1,13 @@ 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 WalletTypeCodeEnum { SUPERMARKET("1", "超市"), CANTEEN("2", "食堂"), @@ -14,11 +16,6 @@ public enum WalletTypeCodeEnum { private final String desc; - WalletTypeCodeEnum(String code, String desc) { - this.code = code; - this.desc = desc; - } - public static WalletTypeCodeEnum descOf(String description) { return Arrays.stream(WalletTypeCodeEnum.values()) .filter(v -> ObjectUtil.equal(v.getDesc(), description)) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeEnum.java index 3d3a6b54b..7520afc93 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletTypeEnum.java @@ -1,11 +1,13 @@ 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 WalletTypeEnum { EAT("1", "饭卡钱包"), @@ -16,11 +18,6 @@ public enum WalletTypeEnum { private final String desc; - WalletTypeEnum(String code, String desc) { - this.code = code; - this.desc = desc; - } - public static WalletTypeEnum descOf(String description) { return Arrays.stream(WalletTypeEnum.values()) .filter(v -> ObjectUtil.equal(v.getDesc(), description)) 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/WalletRechargeApplyDto.java index 8638ffc54..3a2c2d5c1 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/WalletRechargeApplyDto.java @@ -1,9 +1,16 @@ package com.bsd.pjcloud.wallet.api.dto; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; import lombok.Data; +import java.util.List; + @Data public class WalletRechargeApplyDto extends WalletRechargeApplyEntity { + private List userIds; + + private List walletTypeIds; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java new file mode 100644 index 000000000..a6425c0a2 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/excel/WalletRechargeExcelDto.java @@ -0,0 +1,50 @@ +package com.bsd.pjcloud.wallet.api.dto.excel; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.bsd.pjcloud.common.excel.annotation.ExcelLine; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) +@HeadRowHeight(20) +@ContentRowHeight(10) +@ExcelIgnoreUnannotated +public class WalletRechargeExcelDto { + + /** + * 导入时候回显行号 + */ + @ExcelLine + @ExcelIgnore + private Long lineNum; + + @ColumnWidth(100) + @ExcelProperty("用户名") + private String username; + + @ColumnWidth(100) + @ExcelProperty("用户手机号") + private String userMobile; + + @ColumnWidth(100) + @ExcelProperty("操作金额") + private String price; + + // 操作余额 + private Integer priceNumber; + + // 用户id + private Long userId; +} 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/WalletRechargeApplyEntity.java index 36470a1bc..8b1a06095 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/WalletRechargeApplyEntity.java @@ -1,12 +1,16 @@ package com.bsd.pjcloud.wallet.api.entity; +import cn.hutool.core.date.DatePattern; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; 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; /** @@ -21,7 +25,7 @@ import java.time.LocalDateTime; @EqualsAndHashCode(callSuper = true) @Schema(description = "充值/扣款申请") public class WalletRechargeApplyEntity extends Model { - + /** * 主键ID */ @@ -57,7 +61,8 @@ public class WalletRechargeApplyEntity extends Model * 导入时间(手动选择) */ @Schema(description = "导入时间(手动选择)") - private LocalDateTime importTime; + @JsonFormat(pattern = DatePattern.NORM_DATE_PATTERN) + private LocalDate importTime; /** * 备注 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/WalletRechargeImportEntity.java index 0a71b5c01..3504b8449 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/WalletRechargeImportEntity.java @@ -3,8 +3,7 @@ package com.bsd.pjcloud.wallet.api.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDateTime; @@ -15,6 +14,9 @@ import java.time.LocalDateTime; * @author dzc * @date 2024-12-31 14:24:39 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("wallet_recharge_import") 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/WalletRechargeApplyVo.java index 008823f5a..f6f25f20e 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/WalletRechargeApplyVo.java @@ -1,9 +1,29 @@ 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.WalletRechargeApplyEntity; import lombok.Data; @Data -public class WalletRechargeApplyVo extends WalletRechargeApplyEntity { +public class WalletRechargeApplyVo extends WalletRechargeApplyEntity implements BaseUserInterface, BaseDeptInterface { + + private String walletTypeName; + + private String uniqueCode; + + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + + /** + * 部门相关 + */ + private String deptName; } 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/WalletRechargeApplyController.java index ef9d99fc3..5bf339f26 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/WalletRechargeApplyController.java @@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.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.excel.WalletRechargeExcelDto; import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.service.WalletRechargeApplyService; import org.springframework.security.access.prepost.PreAuthorize; @@ -17,8 +20,8 @@ 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.validation.BindingResult; import org.springframework.web.bind.annotation.*; - import java.util.List; /** @@ -36,6 +39,35 @@ public class WalletRechargeApplyController { private final WalletRechargeApplyService walletRechargeApplyService; + + /** + * 提交申请 + * + * @return + */ + @Operation(summary = "提交申请", description = "提交申请") + @SysLog("提交申请") + @PostMapping("/apply") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_apply')") + public R apply(@RequestBody WalletRechargeApplyDto dto) { + walletRechargeApplyService.apply(dto); + return R.ok(true); + } + + /** + * 取消申请 + * + * @return + */ + @Operation(summary = "取消申请", description = "取消申请") + @SysLog("取消申请") + @PostMapping("/cancel-apply") + @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_cancel_apply')") + public R cancelApply(@RequestBody WalletRechargeApplyDto dto) { + walletRechargeApplyService.cancelApply(dto); + return R.ok(true); + } + /** * 分页查询 * @@ -51,6 +83,20 @@ 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')") + public R getWalletRechargeApplyPage(@ParameterObject Page page, @ParameterObject WalletRechargeApplyDto dto) { + return R.ok(walletRechargeApplyService.pageJoin(page, dto)); + } + /** * 通过id查询充值/扣款申请 @@ -68,15 +114,16 @@ public class WalletRechargeApplyController { /** * 新增充值/扣款申请 * - * @param walletRechargeApply 充值/扣款申请 + * @param dto 充值/扣款申请 * @return R */ @Operation(summary = "新增充值/扣款申请", description = "新增充值/扣款申请") @SysLog("新增充值/扣款申请") @PostMapping @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_add')") - public R save(@RequestBody WalletRechargeApplyEntity walletRechargeApply) { - return R.ok(walletRechargeApplyService.save(walletRechargeApply)); + public R save(@RequestBody WalletRechargeApplyDto dto) { + walletRechargeApplyService.create(dto); + return R.ok(); } /** @@ -108,6 +155,8 @@ public class WalletRechargeApplyController { } + /* ************************************* start excel start ************************************* */ + /** * 导出excel 表格 * @@ -121,4 +170,17 @@ public class WalletRechargeApplyController { public List export(WalletRechargeApplyEntity walletRechargeApply, Long[] ids) { 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); + } + /* ************************************* start excel start ************************************* */ + } \ 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/WalletRechargeApplyMapper.java index 3fc0ed42b..444059a74 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/WalletRechargeApplyMapper.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.WalletRechargeApplyDto; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletRechargeApplyVo; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface WalletRechargeApplyMapper extends PjcloudBaseMapper { + default Page pageJoin(Page page, WalletRechargeApplyDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(WalletRechargeApplyEntity.class) + .selectAs(WalletTypeEntity::getName, WalletRechargeApplyVo::getWalletTypeName) + .selectAs(WalletTypeEntity::getUniqueCode, WalletRechargeApplyVo::getUniqueCode) + .leftJoin(WalletTypeEntity.class, WalletTypeEntity::getId, WalletRechargeApplyEntity::getWalletTypeId) + .eqIfExists(WalletRechargeApplyEntity::getWalletTypeId, dto.getWalletTypeId()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) + .in(ObjectUtil.isNotEmpty(dto.getWalletTypeIds()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeIds()); + return selectJoinPage(page, WalletRechargeApplyVo.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 21320770e..fe7424330 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 @@ -1,8 +1,40 @@ 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.excel.WalletRechargeExcelDto; import com.bsd.pjcloud.wallet.api.entity.WalletRechargeApplyEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletRechargeApplyVo; +import org.springframework.validation.BindingResult; + +import java.util.List; public interface WalletRechargeApplyService extends IService { + void create(WalletRechargeApplyEntity dto); + + Page pageJoin(Page page, WalletRechargeApplyDto dto); + + /** + * 提交申请 + * + * @param dto + */ + void apply(WalletRechargeApplyDto dto); + + /** + * 取消申请 + * + * @param dto + */ + void cancelApply(WalletRechargeApplyDto dto); + + /** + * 读取excel内容 + * @param excelVOList + * @param bindingResult + */ + R readExcel(List excelVOList, BindingResult bindingResult); } \ 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 f030ce754..bd68528e1 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 @@ -24,11 +24,9 @@ import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.service.WalletManageService; import com.bsd.pjcloud.wallet.service.WalletTypeService; -import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.ehcache.xml.model.CacheTemplate; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.redis.core.StringRedisTemplate; 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/WalletRechargeApplyServiceImpl.java index b28fe7278..121fff60a 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/WalletRechargeApplyServiceImpl.java @@ -1,16 +1,162 @@ package com.bsd.pjcloud.wallet.service.impl; +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; 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.exception.CheckedException; +import com.bsd.pjcloud.common.core.exception.ErrorCodes; +import com.bsd.pjcloud.common.core.util.CollectionUtils; +import com.bsd.pjcloud.common.core.util.MsgUtils; +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.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.service.WalletManageService; import com.bsd.pjcloud.wallet.service.WalletRechargeApplyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + /** * 充值/扣款申请 * * @author pjcloud * @date 2024-12-31 14:23:57 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletRechargeApplyServiceImpl extends ServiceImpl implements WalletRechargeApplyService { + + private final WalletRechargeImportServiceImpl rechargeImportService; + private final WalletManageService walletManageService; + + private final RemoteUserService userService; + private final RemoteDeptService deptService; + + @Override + public void create(WalletRechargeApplyEntity dto) { + PjcloudUser loginUser = SecurityUtils.getUser(); + dto.setDeptId(loginUser.getDeptId()); + dto.setUserId(loginUser.getId()); + baseMapper.insert(dto); + } + + @Override + public Page pageJoin(Page page, WalletRechargeApplyDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 用户 + List userIds = list.getRecords().stream().map(WalletRechargeApplyVo::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)); + } + // 部门 + List deptIds = list.getRecords().stream().map(WalletRechargeApplyVo::getDeptId).distinct().toList(); + R> deptList = deptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(page.getRecords(), deptList.getData()); + } + } + return list; + } + + @Override + public void apply(WalletRechargeApplyDto dto) { + WalletRechargeApplyEntity rechargeApply = baseMapper.selectById(dto.getId()); + if (ObjectUtil.isEmpty(rechargeApply)) { + throw new CheckedException("充值申请不存在"); + } + baseMapper.updateById(dto); + } + + @Override + public void cancelApply(WalletRechargeApplyDto dto) { + WalletRechargeApplyEntity rechargeApply = baseMapper.selectById(dto.getId()); + if (ObjectUtil.isEmpty(rechargeApply)) { + throw new CheckedException("充值申请不存在"); + } + } + + /* ************************************* start excel start ************************************* */ + + @Override + @Transactional(rollbackFor = Exception.class) + public R readExcel(List list, BindingResult bindingResult) { + if (ObjectUtil.isEmpty(list)) return R.failed(); + list = list.stream().filter(v -> !ObjectUtil.isAllEmpty(v.getUsername(), v.getUserMobile(), v.getPrice())).toList(); + if (ObjectUtil.isEmpty(list)) return R.failed(); + List errorMessageList = (List) bindingResult.getTarget(); + for (WalletRechargeExcelDto v : list) { + Set errors = new LinkedHashSet<>(); + if (ObjectUtil.isEmpty(v.getPrice())) { + errors.add("请输入操作金额"); + } else { + try { + int i = new BigDecimal(v.getPrice()).multiply(new BigDecimal(100)).intValue(); + v.setPriceNumber(i); + } catch (Exception e) { + errors.add("请输入正确的操作金额"); + } + } + if (ObjectUtil.isEmpty(v.getUsername())) { + errors.add("请输入用户名"); + } else if (ObjectUtil.isEmpty(v.getUserMobile())) { + errors.add("请输入用户手机号"); + } else if (!Validator.isMobile(v.getUserMobile())) { + errors.add("用户手机号格式不正确"); + } else { + R user = userService.getUserByNameAndMobile(v.getUsername(), v.getUserMobile()); + Optional userId = Optional.of(user).map(R::getData).map(UserInfo::getSysUser).map(SysUser::getUserId); + if (userId.isEmpty()) { + errors.add("用户不存在"); + } else { + v.setUserId(userId.get()); + } + } + if (ObjectUtil.isNotEmpty(errors)) { + errorMessageList.add(new ErrorMessage(v.getLineNum(), errors)); + } + } + if (ObjectUtil.isNotEmpty(errorMessageList)) { + return R.failed(errorMessageList); + } + PjcloudUser loginUser = SecurityUtils.getUser(); + WalletRechargeApplyEntity insertObj = new WalletRechargeApplyEntity(); + insertObj.setDeptId(loginUser.getDeptId()); + insertObj.setUserId(loginUser.getId()); + int i = baseMapper.insert(insertObj); + if (i <= 0) { + throw new CheckedException("导入失败"); + } + List batchSaveList = list.stream().map(v -> WalletRechargeImportEntity.builder().price(v.getPriceNumber()).userId(v.getUserId()).build()).toList(); + batchSaveList.forEach(v -> v.setApplyId(insertObj.getId())); + rechargeImportService.saveBatch(batchSaveList); + return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); + } + + /* ************************************* end excel end ************************************* */ } \ No newline at end of file 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/WalletRechargeImportServiceImpl.java index a7443d88a..176aca4f5 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/WalletRechargeImportServiceImpl.java @@ -3,6 +3,7 @@ package com.bsd.pjcloud.wallet.service.impl; 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.service.WalletRechargeImportService; import org.springframework.stereotype.Service; /** * 充值导入表