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 1/5] =?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; /** * 充值导入表 From e4e05b53dae49e30c562958e0a938924192887f4 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 31 Dec 2024 19:05:37 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=E5=86=BB=E7=BB=93=E3=80=81=E5=BC=80?= =?UTF-8?q?=E5=8D=A1=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 21 ++-- .../wallet/api/dto/WalletActiveDto.java | 8 ++ .../wallet/api/dto/WalletFreezeEntityDto.java | 8 ++ .../wallet/api/entity/WalletActiveEntity.java | 115 +++++++++++++++++ .../wallet/api/entity/WalletFreezeEntity.java | 97 ++++++++++++++ .../pjcloud/wallet/api/vo/WalletActiveVo.java | 8 ++ .../pjcloud/wallet/api/vo/WalletFreezeVo.java | 8 ++ .../controller/WalletActiveController.java | 119 ++++++++++++++++++ .../controller/WalletFreezeController.java | 118 +++++++++++++++++ .../wallet/mapper/WalletActiveMapper.java | 11 ++ .../wallet/mapper/WalletFreezeMapper.java | 11 ++ .../wallet/service/WalletActiveService.java | 8 ++ .../wallet/service/WalletFreezeService.java | 8 ++ .../service/impl/WalletActiveServiceImpl.java | 16 +++ .../service/impl/WalletFreezeServiceImpl.java | 16 +++ .../resources/mapper/WalletActiveMapper.xml | 22 ++++ .../resources/mapper/WalletFreezeMapper.xml | 19 +++ 17 files changed, 601 insertions(+), 12 deletions(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeEntityDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletActiveVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletFreezeVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletFreezeController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletFreezeMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletFreezeMapper.xml diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 8315a5974..67e6fd09f 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -9,7 +9,7 @@ CREATE TABLE wallet_manage id bigint NOT NULL COMMENT '主键', user_id bigint NOT NULL COMMENT '饭卡绑定的用户id', wallet_type_id bigint NOT NULL COMMENT '饭卡类型id', - dept_id BIGINT NOT NULL COMMENT '部门id', + dept_id bigint NOT NULL COMMENT '部门id', card_number varchar(64) COMMENT '饭卡卡号', balance int DEFAULT 0 NOT NULL COMMENT '余额,单位分', total_expense int DEFAULT 0 NOT NULL COMMENT '累计支出,单位分', @@ -61,10 +61,10 @@ CREATE TABLE wallet_active user_id bigint NOT NULL COMMENT '用户id', wallet_id bigint NOT NULL COMMENT '钱包id', wallet_type_id bigint NOT NULL COMMENT '饭卡类型id', - dept_id BIGINT NOT NULL COMMENT '部门id', - merchant_id BIGINT NOT NULL COMMENT '商户id', + dept_id bigint NOT NULL COMMENT '部门id', + merchant_id bigint NOT NULL COMMENT '商户id', card_number varchar(128) NOT NULL COMMENT '用户卡号', - is_active_hardware BIT DEFAULT 0 COMMENT '饭卡是否在硬件上激活', + is_active_hardware char(1) DEFAULT '0' 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 '修改人', @@ -75,8 +75,7 @@ CREATE TABLE wallet_active ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='钱包开卡'; CREATE INDEX idx_dept_id ON wallet_active (user_id); -CREATE INDEX idx_dept_id ON wallet_active (wallet_id); -CREATE INDEX idx_dept_id ON wallet_active (wallet_type_id); +CREATE INDEX idx_dept_id ON wallet_active (dept_id); -- ---------------------------- -- Table structure for wallet_freeze @@ -84,10 +83,10 @@ CREATE INDEX idx_dept_id ON wallet_active (wallet_type_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 TINYINT NOT NULL COMMENT '冻结状态', + 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 '创建时间', @@ -98,8 +97,6 @@ CREATE TABLE wallet_freeze PRIMARY KEY (id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='饭卡冻结记录表'; -CREATE INDEX idx_dept_id ON wallet_freeze (wallet_id); -CREATE INDEX idx_dept_id ON wallet_freeze (user_id); -- ---------------------------- -- Table structure for wallet_transaction diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java new file mode 100644 index 000000000..fb1dbd388 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import lombok.Data; + +@Data +public class WalletActiveDto extends WalletActiveEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeEntityDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeEntityDto.java new file mode 100644 index 000000000..cfe78fb9e --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletFreezeEntityDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; +import lombok.Data; + +@Data +public class WalletFreezeEntityDto extends WalletFreezeEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java new file mode 100644 index 000000000..2e60f0e8b --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java @@ -0,0 +1,115 @@ +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 com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDateTime; + +/** + * 钱包开卡 + * + * @author dzc + * @date 2024-12-31 18:53:31 + */ +@Data +@TenantTable +@TableName("wallet_active") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "钱包开卡") +public class WalletActiveEntity extends Model { + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="主键") + private Long id; + + /** + * 用户id + */ + @Schema(description="用户id") + private Long userId; + + /** + * 钱包id + */ + @Schema(description="钱包id") + private Long walletId; + + /** + * 饭卡类型id + */ + @Schema(description="饭卡类型id") + private Long walletTypeId; + + /** + * 部门id + */ + @Schema(description="部门id") + private Long deptId; + + /** + * 商户id + */ + @Schema(description="商户id") + private Long merchantId; + + /** + * 用户卡号 + */ + @Schema(description="用户卡号") + private String cardNumber; + + /** + * 饭卡是否在硬件上激活 + */ + @Schema(description="饭卡是否在硬件上激活") + private String isActiveHardware; + + /** + * 创建人 + */ + @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/WalletFreezeEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java new file mode 100644 index 000000000..6071d5684 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletFreezeEntity.java @@ -0,0 +1,97 @@ +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 com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDateTime; + +/** + * 饭卡冻结记录表 + * + * @author dzc + * @date 2024-12-31 18:54:43 + */ +@Data +@TenantTable +@TableName("wallet_freeze") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "饭卡冻结记录表") +public class WalletFreezeEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="编号") + private Long id; + + /** + * 钱包id + */ + @Schema(description="钱包id") + private Long walletId; + + /** + * 用户id + */ + @Schema(description="用户id") + private Long userId; + + /** + * 冻结状态 + */ + @Schema(description="冻结状态") + private String freeStatus; + + /** + * 备注 + */ + @Schema(description="备注") + private String remark; + + /** + * 创建人 + */ + @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/WalletActiveVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletActiveVo.java new file mode 100644 index 000000000..27f250d4e --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletActiveVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import lombok.Data; + +@Data +public class WalletActiveVo extends WalletActiveEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletFreezeVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletFreezeVo.java new file mode 100644 index 000000000..eda567a06 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletFreezeVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; +import lombok.Data; + +@Data +public class WalletFreezeVo extends WalletFreezeEntity { +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java new file mode 100644 index 000000000..0a268f7fd --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -0,0 +1,119 @@ +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.wallet.api.entity.WalletActiveEntity; +import com.bsd.pjcloud.wallet.service.WalletActiveService; +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; +import java.util.Objects; + +/** + * 钱包开卡 + * + * @author dzc + * @date 2024-12-31 18:53:31 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/walletActive" ) +@Tag(description = "walletActive" , name = "钱包开卡管理" ) +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class WalletActiveController { + + private final WalletActiveService walletActiveService; + + /** + * 分页查询 + * @param page 分页对象 + * @param walletActive 钱包开卡 + * @return + */ + @Operation(summary = "分页查询" , description = "分页查询" ) + @GetMapping("/page" ) + @PreAuthorize("@pms.hasPermission('wallet_walletActive_view')" ) + public R getWalletActivePage(@ParameterObject Page page, @ParameterObject WalletActiveEntity walletActive) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return R.ok(walletActiveService.page(page, wrapper)); + } + + + /** + * 通过id查询钱包开卡 + * @param id id + * @return R + */ + @Operation(summary = "通过id查询" , description = "通过id查询" ) + @GetMapping("/{id}" ) + @PreAuthorize("@pms.hasPermission('wallet_walletActive_view')" ) + public R getById(@PathVariable("id" ) Long id) { + return R.ok(walletActiveService.getById(id)); + } + + /** + * 新增钱包开卡 + * @param walletActive 钱包开卡 + * @return R + */ + @Operation(summary = "新增钱包开卡" , description = "新增钱包开卡" ) + @SysLog("新增钱包开卡" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('wallet_walletActive_add')" ) + public R save(@RequestBody WalletActiveEntity walletActive) { + return R.ok(walletActiveService.save(walletActive)); + } + + /** + * 修改钱包开卡 + * @param walletActive 钱包开卡 + * @return R + */ + @Operation(summary = "修改钱包开卡" , description = "修改钱包开卡" ) + @SysLog("修改钱包开卡" ) + @PutMapping + @PreAuthorize("@pms.hasPermission('wallet_walletActive_edit')" ) + public R updateById(@RequestBody WalletActiveEntity walletActive) { + return R.ok(walletActiveService.updateById(walletActive)); + } + + /** + * 通过id删除钱包开卡 + * @param ids id列表 + * @return R + */ + @Operation(summary = "通过id删除钱包开卡" , description = "通过id删除钱包开卡" ) + @SysLog("通过id删除钱包开卡" ) + @DeleteMapping + @PreAuthorize("@pms.hasPermission('wallet_walletActive_del')" ) + public R removeById(@RequestBody Long[] ids) { + return R.ok(walletActiveService.removeBatchByIds(CollUtil.toList(ids))); + } + + + /** + * 导出excel 表格 + * @param walletActive 查询条件 + * @param ids 导出指定ID + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('wallet_walletActive_export')" ) + public List export(WalletActiveEntity walletActive,Long[] ids) { + return walletActiveService.list(Wrappers.lambdaQuery(walletActive).in(ArrayUtil.isNotEmpty(ids), WalletActiveEntity::getId, ids)); + } +} \ No newline at end of file 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 new file mode 100644 index 000000000..7887ea8c0 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletFreezeController.java @@ -0,0 +1,118 @@ +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.wallet.api.entity.WalletFreezeEntity; +import com.bsd.pjcloud.wallet.service.WalletFreezeService; +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 2024-12-31 18:54:43 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/walletFreeze" ) +@Tag(description = "walletFreeze" , name = "饭卡冻结记录表管理" ) +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class WalletFreezeController { + + private final WalletFreezeService walletFreezeService; + + /** + * 分页查询 + * @param page 分页对象 + * @param walletFreeze 饭卡冻结记录表 + * @return + */ + @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)); + } + + + /** + * 通过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) { + return R.ok(walletFreezeService.getById(id)); + } + + /** + * 新增饭卡冻结记录表 + * @param walletFreeze 饭卡冻结记录表 + * @return R + */ + @Operation(summary = "新增饭卡冻结记录表" , description = "新增饭卡冻结记录表" ) + @SysLog("新增饭卡冻结记录表" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('wallet_walletFreeze_add')" ) + public R save(@RequestBody WalletFreezeEntity walletFreeze) { + return R.ok(walletFreezeService.save(walletFreeze)); + } + + /** + * 修改饭卡冻结记录表 + * @param walletFreeze 饭卡冻结记录表 + * @return R + */ + @Operation(summary = "修改饭卡冻结记录表" , description = "修改饭卡冻结记录表" ) + @SysLog("修改饭卡冻结记录表" ) + @PutMapping + @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删除饭卡冻结记录表" ) + @DeleteMapping + @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) { + 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/WalletActiveMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java new file mode 100644 index 000000000..667e1c529 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.wallet.mapper; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WalletActiveMapper extends PjcloudBaseMapper { + + +} \ 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 new file mode 100644 index 000000000..f7e2d8bc4 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletFreezeMapper.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.wallet.mapper; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WalletFreezeMapper extends PjcloudBaseMapper { + + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java new file mode 100644 index 000000000..7950b4bfe --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; + +public interface WalletActiveService extends IService { + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java new file mode 100644 index 000000000..9177fdcdb --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletFreezeService.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; + +public interface WalletFreezeService extends IService { + +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java new file mode 100644 index 000000000..2f61f1542 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.wallet.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import com.bsd.pjcloud.wallet.mapper.WalletActiveMapper; +import com.bsd.pjcloud.wallet.service.WalletActiveService; +import org.springframework.stereotype.Service; +/** + * 钱包开卡 + * + * @author dzc + * @date 2024-12-31 18:53:31 + */ +@Service +public class WalletActiveServiceImpl extends ServiceImpl implements WalletActiveService { +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java new file mode 100644 index 000000000..67ddb77b7 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.wallet.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; +import com.bsd.pjcloud.wallet.mapper.WalletFreezeMapper; +import com.bsd.pjcloud.wallet.service.WalletFreezeService; +import org.springframework.stereotype.Service; +/** + * 饭卡冻结记录表 + * + * @author dzc + * @date 2024-12-31 18:54:43 + */ +@Service +public class WalletFreezeServiceImpl extends ServiceImpl implements WalletFreezeService { +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml new file mode 100644 index 000000000..daf14beab --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletFreezeMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletFreezeMapper.xml new file mode 100644 index 000000000..e0b0e735e --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletFreezeMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From da4a59e0ca1e2331ad89d19c659d9a880ba0ab07 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 2 Jan 2025 09:57:23 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=E9=92=B1=E5=8C=85=E5=86=BB=E7=BB=93?= =?UTF-8?q?=E3=80=81=E5=BC=80=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 1 + .../controller/MerchantInfoController.java | 72 +++++++++++-------- .../src/main/resources/application.yml | 2 +- .../src/main/resources/application.yml | 17 ++++- .../wallet/api/dto/WalletActiveDto.java | 17 +++++ .../wallet/api/entity/WalletActiveEntity.java | 6 ++ pjcloud-wallet/pjcloud-wallet-biz/pom.xml | 4 ++ .../controller/WalletActiveController.java | 65 +++++++++++------ .../controller/WalletFreezeController.java | 4 +- .../controller/WalletTypeController.java | 14 ++-- .../wallet/service/WalletActiveService.java | 8 ++- .../wallet/service/WalletTypeService.java | 3 + .../service/impl/WalletActiveServiceImpl.java | 54 ++++++++++++++ .../service/impl/WalletFreezeServiceImpl.java | 7 ++ .../service/impl/WalletTypeServiceImpl.java | 50 +++++++++++++ 15 files changed, 257 insertions(+), 67 deletions(-) diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 67e6fd09f..cd99d11f6 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -64,6 +64,7 @@ CREATE TABLE wallet_active dept_id bigint NOT NULL COMMENT '部门id', merchant_id bigint NOT NULL COMMENT '商户id', card_number varchar(128) NOT NULL COMMENT '用户卡号', + card_sort int NOT NULL COMMENT '饭卡顺序', is_active_hardware char(1) DEFAULT '0' COMMENT '饭卡是否在硬件上激活', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java index a10a339be..06ea978eb 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/MerchantInfoController.java @@ -49,58 +49,64 @@ import java.util.stream.Collectors; */ @RestController @RequiredArgsConstructor -@RequestMapping("/merchantInfo" ) -@Tag(description = "merchantInfo" , name = "商户管理管理" ) +@RequestMapping("/merchantInfo") +@Tag(description = "merchantInfo", name = "商户管理管理") @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class MerchantInfoController { - private final MerchantInfoService merchantInfoService; + private final MerchantInfoService merchantInfoService; private final RemoteDeptService remoteDeptService; private final RemoteFileService remoteFileService; + /** * 分页查询 - * @param page 分页对象 + * + * @param page 分页对象 * @param merchantInfo 商户管理 * @return */ - @Operation(summary = "分页查询" , description = "分页查询" ) - @GetMapping("/page" ) - @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_view')" ) + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_view')") public R getMerchantInfoPage(@ParameterObject Page page, @ParameterObject MerchantInfoEntity merchantInfo) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); Page pageData = merchantInfoService.page(page, wrapper); List records = pageData.getRecords(); List deptIds = records.stream().map(MerchantInfoEntity::getDeptId).distinct().collect(Collectors.toList()); - Map sysDeptMap=remoteDeptService.getDeptByDeptIds(deptIds).getData(); - records.forEach(record->{record.setDeptName(sysDeptMap.get(record.getDeptId())==null?"":sysDeptMap.get(record.getDeptId()).getName());}); + Map sysDeptMap = remoteDeptService.getDeptByDeptIds(deptIds).getData(); + records.forEach(record -> { + record.setDeptName(sysDeptMap.get(record.getDeptId()) == null ? "" : sysDeptMap.get(record.getDeptId()).getName()); + }); return R.ok(pageData); } /** * 通过id查询商户管理 + * * @param id id * @return R */ - @Operation(summary = "通过id查询" , description = "通过id查询" ) - @GetMapping("/{id}" ) - @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_view')" ) - public R getById(@PathVariable("id" ) Long id) { + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_view')") + public R getById(@PathVariable("id") Long id) { return R.ok(merchantInfoService.getById(id)); } /** * 新增商户管理 + * * @param merchantInfo 商户管理 * @return R */ - @Operation(summary = "新增商户管理" , description = "新增商户管理" ) - @SysLog("新增商户管理" ) + @Operation(summary = "新增商户管理", description = "新增商户管理") + @SysLog("新增商户管理") @PostMapping - @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_add')" ) + @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_add')") public R save(@RequestBody MerchantInfoEntity merchantInfo) throws Exception { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); @@ -112,10 +118,10 @@ public class MerchantInfoController { boolean isDepartmentAlreadyBound = merchantInfoService.exists(wrapper); if (isMerchantNameExists) { - return R.failed("商户名称已存在"); + return R.failed("商户名称已存在"); } if (isDepartmentAlreadyBound) { - return R.failed("部门已被绑定"); + return R.failed("部门已被绑定"); } merchantInfoService.save(merchantInfo); // 生成二维码 @@ -124,9 +130,9 @@ public class MerchantInfoController { String fileName = "merchant_collect_money_code" + merchantCollectMoneyCodeDto.getId(); byte[] bytes = QRCodeImageGenerator.generateQrCodeImage(JSON.toJSONString(merchantCollectMoneyCodeDto), 1024); // 使用字节流创建 MockMultipartFile - MultipartFile multipartFile = new MockMultipartFile("file", fileName+".png", "image/png", new ByteArrayInputStream(bytes)); + MultipartFile multipartFile = new MockMultipartFile("file", fileName + ".png", "image/png", new ByteArrayInputStream(bytes)); - R upload = remoteFileService.upload(multipartFile,null,null,null); + R upload = remoteFileService.upload(multipartFile, null, null, null); Map data = (Map) upload.getData(); String url = (String) data.get("url"); MerchantInfoEntity merchantInfoEntity = new MerchantInfoEntity(); @@ -139,13 +145,14 @@ public class MerchantInfoController { /** * 修改商户管理 + * * @param merchantInfo 商户管理 * @return R */ - @Operation(summary = "修改商户管理" , description = "修改商户管理" ) - @SysLog("修改商户管理" ) + @Operation(summary = "修改商户管理", description = "修改商户管理") + @SysLog("修改商户管理") @PutMapping - @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_edit')" ) + @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_edit')") public R updateById(@RequestBody MerchantInfoEntity merchantInfo) throws Exception { // String bucketName = properties.getBucketName(); // // 生成二维码 @@ -165,13 +172,14 @@ public class MerchantInfoController { /** * 通过id删除商户管理 + * * @param ids id列表 * @return R */ - @Operation(summary = "通过id删除商户管理" , description = "通过id删除商户管理" ) - @SysLog("通过id删除商户管理" ) + @Operation(summary = "通过id删除商户管理", description = "通过id删除商户管理") + @SysLog("通过id删除商户管理") @DeleteMapping - @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_del')" ) + @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_del')") public R removeById(@RequestBody Long[] ids) { return R.ok(merchantInfoService.removeBatchByIds(CollUtil.toList(ids))); } @@ -179,26 +187,28 @@ public class MerchantInfoController { /** * 导出excel 表格 + * * @param merchantInfo 查询条件 - * @param ids 导出指定ID + * @param ids 导出指定ID * @return excel 文件流 */ @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_export')" ) - public List export(MerchantInfoEntity merchantInfo,Long[] ids) { + @PreAuthorize("@pms.hasPermission('canteen_merchantInfo_export')") + public List export(MerchantInfoEntity merchantInfo, Long[] ids) { return merchantInfoService.list(Wrappers.lambdaQuery(merchantInfo).in(ArrayUtil.isNotEmpty(ids), MerchantInfoEntity::getId, ids)); } /** * 获得商户下拉框 + * * @return */ @GetMapping("/selectMerchantList") @Operation(summary = "获得商户下拉框") - public R> selectMerchantList(@RequestParam(value = "type",required = false)String type) { - List list=merchantInfoService.selectMerchantList(type); + public R> selectMerchantList(@RequestParam(value = "type", required = false) String type) { + List list = merchantInfoService.selectMerchantList(type); return R.ok(list); } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/application.yml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/application.yml index d4495b43a..df4c03b1c 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/application.yml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/application.yml @@ -9,7 +9,7 @@ spring: username: @nacos.username@ password: @nacos.password@ discovery: - server-addr: pjcloud-register:8848 + server-addr: ${NACOS_HOST:pjcloud-register}:${NACOS_PORT:8848} config: server-addr: ${spring.cloud.nacos.discovery.server-addr} config: diff --git a/pjcloud-register/src/main/resources/application.yml b/pjcloud-register/src/main/resources/application.yml index fc374a227..d74b5848a 100644 --- a/pjcloud-register/src/main/resources/application.yml +++ b/pjcloud-register/src/main/resources/application.yml @@ -4,12 +4,23 @@ server: basedir: logs error: include-message: always +#db: +# num: 1 +# user: ${MYSQL_USER:root} +# password: ${MYSQL_PWD:root} +# url: +# 0: jdbc:mysql://${MYSQL_HOST:pjcloud-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pjcloudx_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true +# pool: +# config: +# connectionTimeout: 30000 +# validationTimeout: 10000 + db: num: 1 - user: ${MYSQL_USER:root} - password: ${MYSQL_PWD:root} + user: root + password: root url: - 0: jdbc:mysql://${MYSQL_HOST:pjcloud-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pjcloudx_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true + 0: jdbc:mysql://127.0.0.1:3306/pjcloudx_config?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true pool: config: connectionTimeout: 30000 diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java index fb1dbd388..3da2f5f95 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java @@ -1,8 +1,25 @@ package com.bsd.pjcloud.wallet.api.dto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; import lombok.Data; @Data public class WalletActiveDto extends WalletActiveEntity { + + @Schema(description = "数量") + @Max(200) + @Min(1) + @NotNull(message = "数量不能为空") + private Long count; + + @NotNull(message = "商户id不能为空") + private Long merchantId; + + @NotNull(message = "钱包类型id不能为空") + private Long walletTypeId; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java index 2e60f0e8b..2ecce9e77 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletActiveEntity.java @@ -65,6 +65,12 @@ public class WalletActiveEntity extends Model { @Schema(description="用户卡号") private String cardNumber; + /** + * 饭卡顺序 + */ + @Schema(description="饭卡顺序") + private Integer cardSort; + /** * 饭卡是否在硬件上激活 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml index 1aabf8d9d..0b52cbc90 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml @@ -94,6 +94,10 @@ org.springframework.boot spring-boot-starter-test + + com.bsd + pjcloud-common-idempotent + diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java index 0a268f7fd..1a7fdc47f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -6,7 +6,9 @@ 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.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.service.WalletActiveService; import org.springframework.security.access.prepost.PreAuthorize; @@ -17,10 +19,12 @@ 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.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; +import java.util.concurrent.TimeUnit; /** * 钱包开卡 @@ -30,22 +34,32 @@ import java.util.Objects; */ @RestController @RequiredArgsConstructor -@RequestMapping("/walletActive" ) -@Tag(description = "walletActive" , name = "钱包开卡管理" ) +@RequestMapping("/wallet-active") +@Tag(description = "wallet-active", name = "钱包开卡管理") @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +@Validated public class WalletActiveController { - private final WalletActiveService walletActiveService; + private final WalletActiveService walletActiveService; + + @PostMapping("/fast-create-card") + @Operation(summary = "一键开卡") + @Idempotent(info = "正在开卡中,请勿重复提交") + public R fastCreateCard(WalletActiveDto dto) { + walletActiveService.fastCreateCard(dto); + return R.ok(true); + } /** * 分页查询 - * @param page 分页对象 + * + * @param page 分页对象 * @param walletActive 钱包开卡 * @return */ - @Operation(summary = "分页查询" , description = "分页查询" ) - @GetMapping("/page" ) - @PreAuthorize("@pms.hasPermission('wallet_walletActive_view')" ) + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_walletActive_view')") public R getWalletActivePage(@ParameterObject Page page, @ParameterObject WalletActiveEntity walletActive) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); return R.ok(walletActiveService.page(page, wrapper)); @@ -54,51 +68,55 @@ public class WalletActiveController { /** * 通过id查询钱包开卡 + * * @param id id * @return R */ - @Operation(summary = "通过id查询" , description = "通过id查询" ) - @GetMapping("/{id}" ) - @PreAuthorize("@pms.hasPermission('wallet_walletActive_view')" ) - public R getById(@PathVariable("id" ) Long id) { + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('wallet_walletActive_view')") + public R getById(@PathVariable("id") Long id) { return R.ok(walletActiveService.getById(id)); } /** * 新增钱包开卡 + * * @param walletActive 钱包开卡 * @return R */ - @Operation(summary = "新增钱包开卡" , description = "新增钱包开卡" ) - @SysLog("新增钱包开卡" ) + @Operation(summary = "新增钱包开卡", description = "新增钱包开卡") + @SysLog("新增钱包开卡") @PostMapping - @PreAuthorize("@pms.hasPermission('wallet_walletActive_add')" ) + @PreAuthorize("@pms.hasPermission('wallet_walletActive_add')") public R save(@RequestBody WalletActiveEntity walletActive) { return R.ok(walletActiveService.save(walletActive)); } /** * 修改钱包开卡 + * * @param walletActive 钱包开卡 * @return R */ - @Operation(summary = "修改钱包开卡" , description = "修改钱包开卡" ) - @SysLog("修改钱包开卡" ) + @Operation(summary = "修改钱包开卡", description = "修改钱包开卡") + @SysLog("修改钱包开卡") @PutMapping - @PreAuthorize("@pms.hasPermission('wallet_walletActive_edit')" ) + @PreAuthorize("@pms.hasPermission('wallet_walletActive_edit')") public R updateById(@RequestBody WalletActiveEntity walletActive) { return R.ok(walletActiveService.updateById(walletActive)); } /** * 通过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_walletActive_del')" ) + @PreAuthorize("@pms.hasPermission('wallet_walletActive_del')") public R removeById(@RequestBody Long[] ids) { return R.ok(walletActiveService.removeBatchByIds(CollUtil.toList(ids))); } @@ -106,14 +124,15 @@ public class WalletActiveController { /** * 导出excel 表格 + * * @param walletActive 查询条件 - * @param ids 导出指定ID + * @param ids 导出指定ID * @return excel 文件流 */ @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('wallet_walletActive_export')" ) - public List export(WalletActiveEntity walletActive,Long[] ids) { + @PreAuthorize("@pms.hasPermission('wallet_walletActive_export')") + public List export(WalletActiveEntity walletActive, Long[] ids) { return walletActiveService.list(Wrappers.lambdaQuery(walletActive).in(ArrayUtil.isNotEmpty(ids), WalletActiveEntity::getId, ids)); } } \ No newline at end of file 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 7887ea8c0..523615236 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 @@ -29,8 +29,8 @@ import java.util.List; */ @RestController @RequiredArgsConstructor -@RequestMapping("/walletFreeze" ) -@Tag(description = "walletFreeze" , name = "饭卡冻结记录表管理" ) +@RequestMapping("/wallet-freeze" ) +@Tag(description = "wallet-freeze" , name = "饭卡冻结记录表管理" ) @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class WalletFreezeController { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTypeController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTypeController.java index ccb8a86dc..5c5cae8f6 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTypeController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTypeController.java @@ -66,28 +66,30 @@ public class WalletTypeController { /** * 新增钱包类型 - * @param walletType 钱包类型 + * @param dto 钱包类型 * @return R */ @Operation(summary = "新增钱包类型" , description = "新增钱包类型" ) @SysLog("新增钱包类型" ) @PostMapping @PreAuthorize("@pms.hasPermission('wallet_walletType_add')" ) - public R save(@RequestBody WalletTypeEntity walletType) { - return R.ok(walletTypeService.save(walletType)); + public R save(@RequestBody WalletTypeEntity dto) { + walletTypeService.create(dto); + return R.ok(true); } /** * 修改钱包类型 - * @param walletType 钱包类型 + * @param dto 钱包类型 * @return R */ @Operation(summary = "修改钱包类型" , description = "修改钱包类型" ) @SysLog("修改钱包类型" ) @PutMapping @PreAuthorize("@pms.hasPermission('wallet_walletType_edit')" ) - public R updateById(@RequestBody WalletTypeEntity walletType) { - return R.ok(walletTypeService.updateById(walletType)); + public R updateById(@RequestBody WalletTypeEntity dto) { + walletTypeService.edit(dto); + return R.ok(true); } /** diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java index 7950b4bfe..85dcb627c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java @@ -1,8 +1,14 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; public interface WalletActiveService extends IService { - + /** + * 一键开卡 + * + * @param dto + */ + void fastCreateCard(WalletActiveDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTypeService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTypeService.java index ad9d02199..d3bdb40e4 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTypeService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTypeService.java @@ -10,4 +10,7 @@ public interface WalletTypeService extends IService { WalletTypeEntity getByUniqueCode(WalletTypeCodeEnum walletTypeCodeEnum); + void create(WalletTypeEntity dto); + + void edit(WalletTypeEntity dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java index 2f61f1542..08cc28ab6 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -1,16 +1,70 @@ package com.bsd.pjcloud.wallet.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; +import com.bsd.pjcloud.common.core.exception.CheckedException; +import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.mapper.WalletActiveMapper; import com.bsd.pjcloud.wallet.service.WalletActiveService; +import com.bsd.pjcloud.wallet.service.WalletTypeService; +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; + /** * 钱包开卡 * * @author dzc * @date 2024-12-31 18:53:31 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletActiveServiceImpl extends ServiceImpl implements WalletActiveService { + + private final WalletTypeService walletTypeService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void fastCreateCard(WalletActiveDto dto) { + Long count = dto.getCount(); + // 查询饭卡钱包类型 + WalletTypeEntity walletType = walletTypeService.getById(dto.getWalletTypeId()); + if (ObjectUtil.isEmpty(walletType)) throw new CheckedException("钱包类型不存在"); + // 查询商户 + int startNum = 1; + WalletActiveEntity last = getLast(); + if (ObjectUtil.isNotEmpty(last)) startNum = last.getCardSort(); + List batchSaveList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + startNum += 1; + WalletActiveEntity item = new WalletActiveEntity(); + String cardNumber = "hq" + String.format("%06d", startNum) + RandomUtil.randomString(RandomUtil.BASE_CHAR, 4); + item.setCardNumber(cardNumber); + item.setWalletTypeId(walletType.getId()); + item.setDeptId(null); + item.setMerchantId(null); + item.setIsActiveHardware(YesNoEnum.NO.getCode()); + batchSaveList.add(item); + } + baseMapper.insert(batchSaveList); + } + + private WalletActiveEntity getLast() { + LambdaQueryWrapper query = new LambdaQueryWrapper(); + query.orderByDesc(WalletActiveEntity::getId).last("LIMIT 1"); + return baseMapper.selectOne(query); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java index 67ddb77b7..2ea4dc98d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletFreezeServiceImpl.java @@ -4,13 +4,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; import com.bsd.pjcloud.wallet.mapper.WalletFreezeMapper; import com.bsd.pjcloud.wallet.service.WalletFreezeService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + /** * 饭卡冻结记录表 * * @author dzc * @date 2024-12-31 18:54:43 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletFreezeServiceImpl extends ServiceImpl implements WalletFreezeService { } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTypeServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTypeServiceImpl.java index fe1ab411e..deaf74138 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTypeServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTypeServiceImpl.java @@ -1,12 +1,15 @@ 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.service.impl.ServiceImpl; import com.bsd.pjcloud.common.core.constant.CacheConstants; +import com.bsd.pjcloud.common.core.exception.CheckedException; import com.bsd.pjcloud.wallet.api.constant.WalletTypeCodeEnum; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.service.WalletTypeService; +import com.github.yulichang.query.MPJLambdaQueryWrapper; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,4 +37,51 @@ public class WalletTypeServiceImpl extends ServiceImpl() + .ne(ObjectUtil.isNotEmpty(id), WalletTypeEntity::getId, id) + .eq(ObjectUtil.isNotEmpty(name), WalletTypeEntity::getName, name) + ); + if (ObjectUtil.isNotEmpty(id)) { + return count >= 1; + } + return count > 0; + } + + public boolean existCode(Long id, String code) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .ne(ObjectUtil.isNotEmpty(id), WalletTypeEntity::getId, id) + .eq(ObjectUtil.isNotEmpty(code), WalletTypeEntity::getUniqueCode, code) + ); + if (ObjectUtil.isNotEmpty(id)) { + return count >= 1; + } + return count > 0; + } } \ No newline at end of file From c086729afbbc27e08efc2e327c958b54b2471d8a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 2 Jan 2025 12:00:52 +0800 Subject: [PATCH 4/5] =?UTF-8?q?del:=E5=88=A0=E9=99=A4=E5=95=86=E6=88=B7?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=20creat:=E6=96=B0=E5=BB=BA=E9=92=B1=E5=8C=85?= =?UTF-8?q?=E5=95=86=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 30 +++ .../common/core/constant/CacheConstants.java | 2 + pjcloud-merchant/.editorconfig | 18 -- pjcloud-merchant/README.md | 22 --- pjcloud-merchant/pjcloud-merchant-api/pom.xml | 42 ----- .../java/merchant/api/feign/packge-info.java | 6 - .../java/merchant/constant/packge-info.java | 6 - .../main/java/merchant/dto/packge-info.java | 6 - .../java/merchant/entity/packge-info.java | 6 - pjcloud-merchant/pjcloud-merchant-biz/pom.xml | 134 -------------- .../src/main/java/merchant/MerchantApp.java | 24 --- .../java/merchant/controller/packge-info.java | 4 - .../java/merchant/mapper/MchManageMapper.java | 10 - .../java/merchant/mapper/packge-info.java | 6 - .../merchant/service/MchManageService.java | 8 - .../service/impl/MchManageServiceImpl.java | 16 -- .../java/merchant/service/packge-info.java | 4 - .../src/main/resources/application.yml | 18 -- .../src/main/resources/logback-spring.xml | 70 ------- pjcloud-merchant/pom.xml | 21 --- .../pjcloud/wallet/api/dto/MchManageDto.java | 8 + .../wallet/api}/entity/MchManageEntity.java | 6 +- .../wallet/api/feign/RemoteMchService.java | 29 +++ .../wallet/api/feign/RemoteWalletService.java | 1 - .../pjcloud/wallet/api/vo/MchManageVo.java | 12 ++ .../api/vo/code/MchCollectionCodeVo.java | 23 +++ ...mework.cloud.openfeign.FeignClient.imports | 3 +- .../controller/MchManageController.java | 80 ++++++-- .../wallet/mapper/MchManageMapper.java | 21 +++ .../wallet/service/MchManageService.java | 25 +++ .../service/impl/MchManageServiceImpl.java | 175 ++++++++++++++++++ .../service/impl/WalletActiveServiceImpl.java | 1 + .../service/impl/WalletManageServiceImpl.java | 1 - .../main/resources/mapper/MchManageMapper.xml | 4 +- 34 files changed, 398 insertions(+), 444 deletions(-) delete mode 100644 pjcloud-merchant/.editorconfig delete mode 100644 pjcloud-merchant/README.md delete mode 100644 pjcloud-merchant/pjcloud-merchant-api/pom.xml delete mode 100644 pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/api/feign/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/constant/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/dto/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/entity/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/pom.xml delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/MerchantApp.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/MchManageMapper.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/MchManageService.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/impl/MchManageServiceImpl.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/packge-info.java delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/application.yml delete mode 100644 pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/logback-spring.xml delete mode 100644 pjcloud-merchant/pom.xml create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java rename {pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant => pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api}/entity/MchManageEntity.java (96%) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/MchManageVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/code/MchCollectionCodeVo.java rename {pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant => pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet}/controller/MchManageController.java (53%) create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java rename {pjcloud-merchant/pjcloud-merchant-biz => pjcloud-wallet/pjcloud-wallet-biz}/src/main/resources/mapper/MchManageMapper.xml (87%) diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index cd99d11f6..bad0e5c45 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -1,5 +1,35 @@ create database `pjcloudx_wallet` default character set utf8mb4 collate utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for mch_manage +-- ---------------------------- +DROP TABLE IF EXISTS `mch_manage`; +CREATE TABLE mch_manage +( + id bigint NOT NULL COMMENT '主键', + dept_id bigint NOT NULL COMMENT '绑定的部门id', + name varchar(64) NOT NULL COMMENT '商户名', + types varchar(64) NOT NULL COMMENT '店铺类型,逗号分隔', + logo_pic varchar(256) NOT NULL COMMENT '商户logo图片', + collection_code varchar(256) DEFAULT '' COMMENT '商户收款码,自动生成', + swiper_pic text DEFAULT NULL COMMENT '商户轮播图,逗号分隔', + phone varchar(128) DEFAULT '' COMMENT '商户手机号', + job_start_time timestamp DEFAULT NULL COMMENT '商户开始营业时间', + job_end_time timestamp DEFAULT NULL COMMENT '商户结束营业时间', + address_des varchar(256) DEFAULT 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 + COLLATE = utf8mb4_general_ci COMMENT ='商户管理'; +CREATE INDEX idx_dept_id ON mch_manage (dept_id); + -- ---------------------------- -- Table structure for wallet_manage -- ---------------------------- diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java index f349c7f61..5229d1554 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java @@ -122,6 +122,8 @@ public interface CacheConstants { /* ************************************* start 钱包相关 start ************************************* */ + String WALLET_MCH = "wallet:detail:mch"; + String WALLET_DETAIL = "wallet:detail:manage"; String WALLET_TYPE_DETAIL = "wallet:detail:type"; diff --git a/pjcloud-merchant/.editorconfig b/pjcloud-merchant/.editorconfig deleted file mode 100644 index 2f2262bb1..000000000 --- a/pjcloud-merchant/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -# 开发组IDE 编辑器标准 V2.1.0 -root = true - -[*.{adoc, bat, groovy, html, java, js, jsp, kt, kts, md, properties, py, rb, sh, sql, svg, txt, xml, xsd}] -charset = utf-8 - -[*.{groovy, java, kt, kts, xml, xsd}] -indent_style = tab -indent_size = 4 -continuation_indent_size = 8 -end_of_line = lf - -[*.{js, html}] -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/pjcloud-merchant/README.md b/pjcloud-merchant/README.md deleted file mode 100644 index 77b54353a..000000000 --- a/pjcloud-merchant/README.md +++ /dev/null @@ -1,22 +0,0 @@ - -项目描述 .... - - - - -| 姓名 | 角色 | 时间 | -| ---- | ---- |---------| -| xxx | 开发 | 2023-01 | -| | | | -| | | | - - - - -``` -项目根目录 -├── xxx-api -- 业务接口(实体,DTO,utils,feign接口) -├── xxx-biz -- 业务实现[默认服务端口 : 6060] -``` - - diff --git a/pjcloud-merchant/pjcloud-merchant-api/pom.xml b/pjcloud-merchant/pjcloud-merchant-api/pom.xml deleted file mode 100644 index 6a63133f0..000000000 --- a/pjcloud-merchant/pjcloud-merchant-api/pom.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - 4.0.0 - - com.bsd - pjcloud-merchant - 5.7.0 - - - pjcloud-merchant-api - - - - - com.github.yulichang - mybatis-plus-join-annotation - - - - com.bsd - pjcloud-common-core - - - - com.baomidou - mybatis-plus-spring - - - - com.bsd - pjcloud-common-feign - - - - com.bsd - pjcloud-common-excel - - - diff --git a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/api/feign/packge-info.java b/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/api/feign/packge-info.java deleted file mode 100644 index cad138c33..000000000 --- a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/api/feign/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - @author pigx archetype - *

- * feign client 存放目录,注意 @EnablePigxFeignClients 的扫描范围 - */ -package merchant.api.feign; \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/constant/packge-info.java b/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/constant/packge-info.java deleted file mode 100644 index 8ffa52ee9..000000000 --- a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/constant/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - * @author pigx archetype - *

- * 常量和枚举定义 - */ -package merchant.constant; \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/dto/packge-info.java b/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/dto/packge-info.java deleted file mode 100644 index 7ef402142..000000000 --- a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/dto/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - * @author pigx archetype - *

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

- * 实体 存放目录 - */ -package merchant.entity; \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/pom.xml b/pjcloud-merchant/pjcloud-merchant-biz/pom.xml deleted file mode 100644 index a50062133..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/pom.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - 4.0.0 - - com.bsd - pjcloud-merchant - 5.7.0 - - - pjcloud-merchant-biz - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - com.bsd - pjcloud-common-data - - - - com.bsd - pjcloud-common-security - - - - com.bsd - pjcloud-common-xss - - - - com.bsd - pjcloud-common-sentinel - - - - com.bsd - pjcloud-common-feign - - - - com.bsd - pjcloud-merchant-api - 5.7.0 - - - - com.bsd - pjcloud-common-log - - - - com.baomidou - mybatis-plus-spring-boot3-starter - - - - com.alibaba - druid-spring-boot-3-starter - - - - com.mysql - mysql-connector-j - - - - com.bsd - pjcloud-common-swagger - - - - org.springframework.boot - spring-boot-starter-undertow - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - - - - - cloud - - true - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - CLASSIC - - - - - - io.fabric8 - docker-maven-plugin - - false - - - - - - - boot - - - diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/MerchantApp.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/MerchantApp.java deleted file mode 100644 index c24afdca0..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/MerchantApp.java +++ /dev/null @@ -1,24 +0,0 @@ -package merchant; - -import com.bsd.pjcloud.common.feign.annotation.EnablePjcloudFeignClients; -import com.bsd.pjcloud.common.security.annotation.EnablePjcloudResourceServer; -import com.bsd.pjcloud.common.swagger.annotation.EnableOpenApi; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; - -/** - * @author archetype auto - *

- * 项目启动类 - */ -@EnableOpenApi("merchant") -@EnablePjcloudFeignClients -@EnableDiscoveryClient -@EnablePjcloudResourceServer -@SpringBootApplication -public class MerchantApp { - public static void main(String[] args) { - SpringApplication.run(MerchantApp.class, args); - } -} diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/packge-info.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/packge-info.java deleted file mode 100644 index 030660b23..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/packge-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/* - * @author pigx archetype - */ -package merchant.controller; \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/MchManageMapper.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/MchManageMapper.java deleted file mode 100644 index e163e607c..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/MchManageMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package merchant.mapper; - -import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; -import merchant.entity.MchManageEntity; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface MchManageMapper extends PjcloudBaseMapper { - -} \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/packge-info.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/packge-info.java deleted file mode 100644 index 7f3d48085..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/mapper/packge-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/* - * @author pigx archetype - *

- * Mybatis Mapper 存放目录 - */ -package merchant.mapper; \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/MchManageService.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/MchManageService.java deleted file mode 100644 index 12c2357c9..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/MchManageService.java +++ /dev/null @@ -1,8 +0,0 @@ -package merchant.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import merchant.entity.MchManageEntity; - -public interface MchManageService extends IService { - -} \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/impl/MchManageServiceImpl.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/impl/MchManageServiceImpl.java deleted file mode 100644 index 174e6f146..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/impl/MchManageServiceImpl.java +++ /dev/null @@ -1,16 +0,0 @@ -package merchant.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import merchant.entity.MchManageEntity; -import merchant.mapper.MchManageMapper; -import merchant.service.MchManageService; -import org.springframework.stereotype.Service; -/** - * 商户管理 - * - * @author pjcloud - * @date 2024-12-27 17:25:08 - */ -@Service -public class MchManageServiceImpl extends ServiceImpl implements MchManageService { -} \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/packge-info.java b/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/packge-info.java deleted file mode 100644 index d388ec919..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/service/packge-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/* - * @author pigx archetype - */ -package merchant.service; \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/application.yml b/pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/application.yml deleted file mode 100644 index d4e63e272..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/application.yml +++ /dev/null @@ -1,18 +0,0 @@ -server: - port: 6060 - -spring: - application: - name: @artifactId@ - cloud: - nacos: - username: @nacos.username@ - password: @nacos.password@ - discovery: - server-addr: ${NACOS_HOST:pjcloud-register}:${NACOS_PORT:8848} - config: - server-addr: ${spring.cloud.nacos.discovery.server-addr} - config: - import: - - optional:nacos:application-@profiles.active@.yml - - optional:nacos:${spring.application.name}-@profiles.active@.yml diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/logback-spring.xml b/pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/logback-spring.xml deleted file mode 100644 index 964ca8735..000000000 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - ${CONSOLE_LOG_PATTERN} - - - - - - ${log.path}/debug.log - - ${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz - 50MB - 30 - - - %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n - - - - - - ${log.path}/error.log - - ${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz - 50MB - 30 - - - %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n - - - ERROR - - - - - - - - - - - - - - - - - diff --git a/pjcloud-merchant/pom.xml b/pjcloud-merchant/pom.xml deleted file mode 100644 index 79da54d89..000000000 --- a/pjcloud-merchant/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 4.0.0 - - - com.bsd - pjcloud - 5.7.0 - - - pjcloud-merchant - pom - - - - pjcloud-merchant-api - pjcloud-merchant-biz - - diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java new file mode 100644 index 000000000..499b09ae9 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import lombok.Data; + +@Data +public class MchManageDto extends MchManageEntity { +} diff --git a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/entity/MchManageEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/MchManageEntity.java similarity index 96% rename from pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/entity/MchManageEntity.java rename to pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/MchManageEntity.java index 75cca3ad4..cb8cd549c 100644 --- a/pjcloud-merchant/pjcloud-merchant-api/src/main/java/merchant/entity/MchManageEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/MchManageEntity.java @@ -1,4 +1,4 @@ -package merchant.entity; +package com.bsd.pjcloud.wallet.api.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; @@ -11,8 +11,8 @@ import java.time.LocalDateTime; /** * 商户管理 * - * @author pjcloud - * @date 2024-12-27 17:25:08 + * @author dzc + * @date 2025-01-02 11:09:26 */ @Data @TenantTable diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java new file mode 100644 index 000000000..48312cb12 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java @@ -0,0 +1,29 @@ +package com.bsd.pjcloud.wallet.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 com.bsd.pjcloud.wallet.api.constant.WalletTypeCodeEnum; +import com.bsd.pjcloud.wallet.api.dto.MchManageDto; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient(contextId = "remoteMchService", value = ServiceNameConstants.WALLET_SERVICE) +public interface RemoteMchService { + + @NoToken + @GetMapping("/get-by-id") + R getById(@RequestParam Long id); + + @NoToken + @GetMapping("/get-by-dept-id") + R getByDeptId(@RequestParam Long deptId); + + @NoToken + @GetMapping("/get-first-mch") + R getFirstMch(@RequestParam List deptIds); + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index f1956c7e5..5523ff404 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -7,7 +7,6 @@ import com.bsd.pjcloud.wallet.api.constant.WalletTypeCodeEnum; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/MchManageVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/MchManageVo.java new file mode 100644 index 000000000..2dfb00085 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/MchManageVo.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; +import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import lombok.Data; + +@Data +public class MchManageVo extends MchManageEntity implements BaseDeptInterface { + + private String deptName; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/code/MchCollectionCodeVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/code/MchCollectionCodeVo.java new file mode 100644 index 000000000..ea4af2c79 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/code/MchCollectionCodeVo.java @@ -0,0 +1,23 @@ +package com.bsd.pjcloud.wallet.api.vo.code; + +import lombok.Data; + +@Data +public class MchCollectionCodeVo { + /** + * 商户Id + */ + private Long id; + /** + * 商户名 + */ + private String name; + /** + * 商户类型 + */ + private String type; + + public String getFileName() { + return "merchant_collect_money_code_" + id; + } +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports b/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports index 66232e3fa..958a7276d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports @@ -1 +1,2 @@ -com.bsd.pjcloud.wallet.api.feign.RemoteWalletService \ No newline at end of file +com.bsd.pjcloud.wallet.api.feign.RemoteWalletService +com.bsd.pjcloud.wallet.api.feign.RemoteMchService \ No newline at end of file diff --git a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/MchManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java similarity index 53% rename from pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/MchManageController.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java index aff9a7492..b0e0d952b 100644 --- a/pjcloud-merchant/pjcloud-merchant-biz/src/main/java/merchant/controller/MchManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java @@ -1,14 +1,20 @@ -package merchant.controller; +package com.bsd.pjcloud.wallet.controller; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; 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.BeanUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; -import merchant.entity.MchManageEntity; -import merchant.service.MchManageService; +import com.bsd.pjcloud.common.security.annotation.Inner; +import com.bsd.pjcloud.wallet.api.constant.WalletTypeCodeEnum; +import com.bsd.pjcloud.wallet.api.dto.MchManageDto; +import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.service.MchManageService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -24,8 +30,8 @@ import java.util.List; /** * 商户管理 * - * @author pjcloud - * @date 2024-12-27 17:25:08 + * @author dzc + * @date 2025-01-02 11:09:26 */ @RestController @RequiredArgsConstructor @@ -36,6 +42,34 @@ public class MchManageController { private final MchManageService mchManageService; + /* ************************************* start 远程调用 start ************************************* */ + + @Inner + @GetMapping("/get-by-id") + public R getById(@RequestParam Long id) { + MchManageEntity mchManage = mchManageService.getById(id); + if (ObjectUtil.isEmpty(mchManage)) return R.failed("商户不存在"); + return R.ok(BeanUtils.toBean(mchManage, MchManageDto.class)); + } + + @Inner + @GetMapping("/get-by-dept-id") + public R getByDeptId(@RequestParam Long deptId) { + MchManageDto mchManage = mchManageService.getByDeptId(deptId); + if (ObjectUtil.isEmpty(mchManage)) return R.failed("商户不存在"); + return R.ok(mchManage); + } + + @Inner + @GetMapping("/get-first-mch") + public R getFirstMch(@RequestParam List deptIds) { + MchManageDto mchManage = mchManageService.getFirstMch(deptIds); + if (ObjectUtil.isEmpty(mchManage)) return R.failed("商户不存在"); + return R.ok(mchManage); + } + + /* ************************************* end 远程调用 end ************************************* */ + /** * 分页查询 * @@ -45,12 +79,26 @@ public class MchManageController { */ @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") - @PreAuthorize("@pms.hasPermission('mch_mchManage_view')") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_view')") public R getMchManagePage(@ParameterObject Page page, @ParameterObject MchManageEntity mchManage) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); return R.ok(mchManageService.page(page, wrapper)); } + /** + * 分页复杂查询 + * + * @param page 分页对象 + * @param dto 商户管理 + * @return + */ + @Operation(summary = "分页复杂查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_view')") + public R getMchManagePage(@ParameterObject Page page, @ParameterObject MchManageDto dto) { + return R.ok(mchManageService.pageJoin(page, dto)); + } + /** * 通过id查询商户管理 @@ -60,8 +108,8 @@ public class MchManageController { */ @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") - @PreAuthorize("@pms.hasPermission('mch_mchManage_view')") - public R getById(@PathVariable("id") Long id) { + @PreAuthorize("@pms.hasPermission('wallet_mchManage_view')") + public R getDetail(@PathVariable("id") Long id) { return R.ok(mchManageService.getById(id)); } @@ -74,9 +122,9 @@ public class MchManageController { @Operation(summary = "新增商户管理", description = "新增商户管理") @SysLog("新增商户管理") @PostMapping - @PreAuthorize("@pms.hasPermission('mch_mchManage_add')") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_add')") public R save(@RequestBody MchManageEntity mchManage) { - return R.ok(mchManageService.save(mchManage)); + return R.ok(mchManageService.create(mchManage)); } /** @@ -88,9 +136,10 @@ public class MchManageController { @Operation(summary = "修改商户管理", description = "修改商户管理") @SysLog("修改商户管理") @PutMapping - @PreAuthorize("@pms.hasPermission('mch_mchManage_edit')") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_edit')") public R updateById(@RequestBody MchManageEntity mchManage) { - return R.ok(mchManageService.updateById(mchManage)); + mchManageService.edit(mchManage); + return R.ok(true); } /** @@ -102,9 +151,10 @@ public class MchManageController { @Operation(summary = "通过id删除商户管理", description = "通过id删除商户管理") @SysLog("通过id删除商户管理") @DeleteMapping - @PreAuthorize("@pms.hasPermission('mch_mchManage_del')") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_del')") public R removeById(@RequestBody Long[] ids) { - return R.ok(mchManageService.removeBatchByIds(CollUtil.toList(ids))); + mchManageService.delByIds(CollUtil.toList(ids)); + return R.ok(true); } @@ -117,7 +167,7 @@ public class MchManageController { */ @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('mch_mchManage_export')") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_export')") public List export(MchManageEntity mchManage, Long[] ids) { return mchManageService.list(Wrappers.lambdaQuery(mchManage).in(ArrayUtil.isNotEmpty(ids), MchManageEntity::getId, ids)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java new file mode 100644 index 000000000..04b3bde97 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/MchManageMapper.java @@ -0,0 +1,21 @@ +package com.bsd.pjcloud.wallet.mapper; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.MchManageDto; +import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.github.yulichang.query.MPJLambdaQueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MchManageMapper extends PjcloudBaseMapper { + + + default Page pageJoin(Page page, MchManageDto dto) { + MPJLambdaQueryWrapper wrapper = new MPJLambdaQueryWrapper() + .selectAll(MchManageEntity.class) + .likeIfExists(MchManageEntity::getName, dto.getName()); + return selectJoinPage(page, MchManageVo.class, wrapper); + } +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java new file mode 100644 index 000000000..83e52d323 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java @@ -0,0 +1,25 @@ +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.MchManageDto; +import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; + +import java.util.ArrayList; +import java.util.List; + +public interface MchManageService extends IService { + + Long create(MchManageEntity dto); + + void edit(MchManageEntity dto); + + void delByIds(ArrayList list); + + Page pageJoin(Page page, MchManageDto dto); + + MchManageDto getByDeptId(Long deptId); + + MchManageDto getFirstMch(List deptIds); +} \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java new file mode 100644 index 000000000..366ceaab0 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java @@ -0,0 +1,175 @@ +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.entity.SysDept; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.admin.api.feign.RemoteFileService; +import com.bsd.pjcloud.admin.api.utils.DataUtil; +import com.bsd.pjcloud.common.core.constant.CacheConstants; +import com.bsd.pjcloud.common.core.exception.CheckedException; +import com.bsd.pjcloud.common.core.util.BeanUtils; +import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.wallet.api.dto.MchManageDto; +import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.bsd.pjcloud.wallet.api.vo.code.MchCollectionCodeVo; +import com.bsd.pjcloud.wallet.mapper.MchManageMapper; +import com.bsd.pjcloud.wallet.service.MchManageService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.redis.core.StringRedisTemplate; +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.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 商户管理 + * + * @author dzc + * @date 2025-01-02 11:09:26 + */ +@Validated +@Slf4j +@RequiredArgsConstructor +@Service +public class MchManageServiceImpl extends ServiceImpl implements MchManageService { + + private final String TAG = "商户管理"; + + private final RemoteDeptService remoteDeptService; + private final RemoteFileService remoteFileService; + + private final StringRedisTemplate redisTemplate; + + @Override + @Cacheable(value = CacheConstants.WALLET_DETAIL, key = "#id", condition = "#id != null", unless = "#result == null") + public MchManageEntity getById(Serializable id) { + return super.getById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Long create(MchManageEntity dto) { + if (existName(dto.getName(), null)) { + throw new CheckedException("商户名不能重复"); + } + if (existDeptId(dto.getDeptId(), null)) { + throw new CheckedException("改部门已经绑定过商户"); + } + baseMapper.insert(dto); + try { + MchCollectionCodeVo mchCollectionCode = new MchCollectionCodeVo(); + BeanUtils.toBean(dto, MchCollectionCodeVo.class); + byte[] bytes = QRCodeImageGenerator.generateQrCodeImage(JSON.toJSONString(mchCollectionCode), 1024); + MultipartFile multipartFile = new MockMultipartFile("file", mchCollectionCode.getFileName() + ".png", "image/png", new ByteArrayInputStream(bytes)); + R upload = remoteFileService.upload(multipartFile, null, null, null); + Map data = (Map) upload.getData(); + String url = (String) data.get("url"); + MchManageEntity merchantInfoEntity = new MchManageEntity(); + merchantInfoEntity.setCollectionCode(url); + merchantInfoEntity.setId(dto.getId()); + updateById(merchantInfoEntity); + } catch (Exception e) { + e.printStackTrace(); + log.error("|{}|新增商户,生成收款码错误dto:|{}|error:|{}|", TAG, JSON.toJSONString(dto), e.getMessage()); + } + return dto.getId(); + } + + @Override + @CachePut(value = CacheConstants.WALLET_MCH, key = "dto.getId()", condition = "dto.getId() != null", unless = "#result == null ") + public void edit(MchManageEntity dto) { + if (existName(dto.getName(), null)) { + throw new CheckedException("商户名不能重复"); + } + if (existDeptId(dto.getDeptId(), null)) { + throw new CheckedException("改部门已经绑定过商户"); + } + MchManageEntity mchManage = getById(dto.getId()); + if (ObjectUtil.isEmpty(mchManage)) { + throw new CheckedException("商户不存在"); + } + baseMapper.updateById(dto); + } + + @Override + public void delByIds(ArrayList list) { + if (ObjectUtil.isEmpty(list)) return; + delByIds(list); + // 删除缓存 + list.forEach(v -> redisTemplate.opsForValue().getAndDelete(CacheConstants.WALLET_MCH + v)); + } + + @Override + public Page pageJoin(Page page, MchManageDto dto) { + Page list = baseMapper.pageJoin(page, dto); + if (ObjectUtil.isNotEmpty(list.getRecords())) { + // 部门 + List deptIds = list.getRecords().stream().map(MchManageVo::getDeptId).distinct().toList(); + R> deptList = remoteDeptService.getDeptByDeptIds(deptIds); + if (ObjectUtil.isNotEmpty(deptList.getData())) { + DataUtil.convertDeptList(page.getRecords(), deptList.getData()); + } + } + return list; + } + + @Override + public MchManageDto getByDeptId(Long deptId) { + MchManageEntity mchManage = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(MchManageEntity::getDeptId, deptId) + ); + return BeanUtils.toBean(mchManage, MchManageDto.class); + } + + @Override + public MchManageDto getFirstMch(List deptIds) { + List merchantList = baseMapper.selectList(new LambdaQueryWrapper()); + if (ObjectUtil.isEmpty(merchantList)) return null; + for (Long id : deptIds) { + for (MchManageEntity merchant : merchantList) { + if (ObjectUtil.equals(merchant.getDeptId(), id)) { + return BeanUtils.toBean(merchant, MchManageDto.class); + } + } + } + return null; + } + + private boolean existName(String name, Long id) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(name), MchManageEntity::getName, name) + .ne(ObjectUtil.isNotEmpty(id), MchManageEntity::getId, id) + ); + if (ObjectUtil.isNotEmpty(id)) { + return count >= 1; + } + return count > 0; + } + + private boolean existDeptId(Long deptId, Long id) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(deptId), MchManageEntity::getDeptId, deptId) + .ne(ObjectUtil.isNotEmpty(id), MchManageEntity::getId, id) + ); + if (ObjectUtil.isNotEmpty(id)) { + return count >= 1; + } + 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/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java index 08cc28ab6..33c997c26 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -44,6 +44,7 @@ public class WalletActiveServiceImpl extends ServiceImpl - + - + From fbab10ba0e4a34279b5c3c3464679951c67ef0d1 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 2 Jan 2025 12:11:29 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=E5=95=86=E6=88=B7=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/wallet/api/dto/MchManageDto.java | 11 +++++++++++ .../wallet/api/feign/RemoteMchService.java | 4 ++++ .../wallet/controller/MchManageController.java | 17 +++++++++++++---- pom.xml | 1 - 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java index 499b09ae9..e8f477052 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java @@ -1,8 +1,19 @@ package com.bsd.pjcloud.wallet.api.dto; import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import java.util.List; + +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data public class MchManageDto extends MchManageEntity { + + private List deptIds; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java index 48312cb12..0d3e8fdf0 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteMchService.java @@ -18,6 +18,10 @@ public interface RemoteMchService { @GetMapping("/get-by-id") R getById(@RequestParam Long id); + @NoToken + @GetMapping("/get-by-ids") + R> getByIds(@RequestParam List ids); + @NoToken @GetMapping("/get-by-dept-id") R getByDeptId(@RequestParam Long deptId); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java index b0e0d952b..b5dec56c7 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/MchManageController.java @@ -14,6 +14,7 @@ import com.bsd.pjcloud.wallet.api.constant.WalletTypeCodeEnum; import com.bsd.pjcloud.wallet.api.dto.MchManageDto; import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.service.MchManageService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -35,8 +36,8 @@ import java.util.List; */ @RestController @RequiredArgsConstructor -@RequestMapping("/mchManage") -@Tag(description = "mchManage", name = "商户管理管理") +@RequestMapping("/mch-manage") +@Tag(description = "mch-manage", name = "商户管理管理") @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class MchManageController { @@ -52,6 +53,14 @@ public class MchManageController { return R.ok(BeanUtils.toBean(mchManage, MchManageDto.class)); } + @Inner + @GetMapping("/get-by-ids") + public R> getByIds(@RequestParam List ids) { + Page page = mchManageService.pageJoin(new Page<>(), MchManageDto.builder().deptIds(ids).build()); + if (ObjectUtil.isAllNotEmpty(page, page.getRecords())) return R.failed("商户不存在"); + return R.ok(BeanUtils.toBean(page.getRecords(), MchManageDto.class)); + } + @Inner @GetMapping("/get-by-dept-id") public R getByDeptId(@RequestParam Long deptId) { @@ -93,9 +102,9 @@ public class MchManageController { * @return */ @Operation(summary = "分页复杂查询", description = "分页查询") - @GetMapping("/page") + @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('wallet_mchManage_view')") - public R getMchManagePage(@ParameterObject Page page, @ParameterObject MchManageDto dto) { + public R getMchManagePageJoin(@ParameterObject Page page, @ParameterObject MchManageDto dto) { return R.ok(mchManageService.pageJoin(page, dto)); } diff --git a/pom.xml b/pom.xml index 25845d9f2..bcb840dd3 100644 --- a/pom.xml +++ b/pom.xml @@ -125,7 +125,6 @@ pjcloud-wallet pjcloud-supermarket pjcloud-hardware - pjcloud-merchant