From e32f4ea263f3e54d4b1fe4b6be6db3f59b4451d4 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 17 Feb 2025 16:11:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=92=B1=E5=8C=85=E5=BC=80=E5=8D=A1?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E7=BB=91=E5=AE=9A=E3=80=81=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/common/core/validation/Group.java | 26 ++++++++++ .../hard/api/dto/order/HardOrderDto.java | 2 +- .../hard/mapper/order/HardOrderMapper.java | 1 + .../bsd/pjcloud/admin/api/dto/UserDTO.java | 5 ++ .../main/resources/mapper/SysUserMapper.xml | 5 +- .../api/dto/WalletActiveBindCardDto.java | 20 ++++++++ .../controller/WalletActiveController.java | 30 +++++++++-- .../wallet/service/WalletActiveService.java | 13 ++++- .../service/impl/WalletActiveServiceImpl.java | 51 ++++++++++++++++++- 9 files changed, 144 insertions(+), 9 deletions(-) create mode 100644 pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/validation/Group.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveBindCardDto.java diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/validation/Group.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/validation/Group.java new file mode 100644 index 000000000..37b787e16 --- /dev/null +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/validation/Group.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.common.core.validation; + +public class Group { + + public interface APP { + } + + public interface ANDROID { + } + + public interface ADMIN { + } + + public interface SAVE { + } + + public interface DEL { + } + + public interface UPDATE { + } + + public interface FIND { + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index 79edd511e..ddde43b92 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -30,7 +30,7 @@ public class HardOrderDto extends HardOrderEntity { private LocalDate[] createTimeList; - private LocalDate[] payTimeList; + private LocalDateTime[] payTimeList; /** * 是否查询购物车列表 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java index 370a9d552..9ab9749a2 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java @@ -58,6 +58,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { .selectAs(HardManagerEntity::getName, HardOrderVo::getHardName) .selectAs(HardManagerEntity::getType, HardOrderVo::getHardType) .leftJoin(HardManagerEntity.class, HardManagerEntity::getId, HardOrderEntity::getHardId) + .eqIfExists(HardOrderEntity::getUserId, dto.getUserId()) .eqIfExists(HardOrderEntity::getOrderType, dto.getOrderType()) .eqIfExists(HardOrderEntity::getPayType, dto.getPayType()) .eqIfExists(HardOrderEntity::getOrderStatus, dto.getOrderStatus()) diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java index fd014b2cf..5589448aa 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java @@ -64,6 +64,11 @@ public class UserDTO extends SysUser { */ private String nameOrPhone; + /** + * 用户id + */ + private Long userId; + private List userIds; /** diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml index 394522179..f49b9b596 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml @@ -167,6 +167,9 @@ LEFT JOIN sys_dept d ON d.dept_id = u.dept_id u.del_flag = '0' + + AND u.user_id = #{query.userId} + AND u.username LIKE #{usernameLike} @@ -175,7 +178,7 @@ AND u.name LIKE #{nameLike} - + AND u.dept_id = #{query.deptId} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveBindCardDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveBindCardDto.java new file mode 100644 index 000000000..6ba173e1f --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveBindCardDto.java @@ -0,0 +1,20 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.common.core.validation.Group; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class WalletActiveBindCardDto { + + @NotNull(message = "用户id不能为空", groups = {Group.ADMIN.class}) + private Long userId; + + @NotNull(message = "饭卡id不能为空", groups = {Group.APP.class}) + private Long walletId; + + @NotEmpty(message = "卡号不能为空", groups = {Group.APP.class, Group.ADMIN.class}) + private String cardNumber; + +} 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 0daf7d27f..a523fa600 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,10 +6,12 @@ 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.core.validation.Group; import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; @@ -68,20 +70,40 @@ public class WalletActiveController { /* ************************************* end android end ************************************* */ - /* ************************************* start android start ************************************* */ + /* ************************************* start app start ************************************* */ @PostMapping("/app/bind-card") @SysLog("app绑定饭卡") @Operation(summary = "app绑定饭卡") - public R appBindCard(@RequestBody WalletActiveDto dto) { + public R appBindCard(@Validated(Group.APP.class) @RequestBody WalletActiveBindCardDto dto) { PjcloudUser user = SecurityUtils.getUser(); - return R.ok(walletActiveService.appBindCard(dto, user)); + dto.setUserId(user.getId()); + return R.ok(walletActiveService.bindCard(dto)); + } + /* ************************************* end app end ************************************* */ + + @PostMapping("/cancel-bind-card") + @Operation(summary = "admin管理员取消绑定饭卡") + @SysLog("admin管理员取消绑定饭卡") + @Idempotent(info = "正在处理中,请勿重复提交") + @PreAuthorize("@pms.hasPermission('wallet_walletActive_cancel_bind_card')") + public R cancelAdminBindCard(@ParameterObject Long activeId) { + return R.ok(walletActiveService.cancelAdminBindCard(activeId)); + } + + @PostMapping("/bind-card") + @Operation(summary = "admin管理员绑定饭卡") + @SysLog("admin管理员绑定饭卡") + @Idempotent(info = "正在处理中,请勿重复提交") + @PreAuthorize("@pms.hasPermission('wallet_walletActive_bind_card')") + public R adminBindCard(@Validated(Group.ADMIN.class) @RequestBody WalletActiveBindCardDto dto) { + return R.ok(walletActiveService.adminBindCard(dto)); } - /* ************************************* end android end ************************************* */ @GetMapping("/refresh-avatar") @Operation(summary = "重新激活") @SysLog("重新激活") @Idempotent(info = "正在处理中,请勿重复提交") + @PreAuthorize("@pms.hasPermission('wallet_walletActive_refresh_active')") public R refreshAvatar(@RequestParam Long id) { return R.ok(walletActiveService.refreshAvatar(id)); } 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 a212a4c42..04cb02d17 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 @@ -3,6 +3,7 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; @@ -36,7 +37,16 @@ public interface WalletActiveService extends IService { * @param dto * @return */ - Boolean appBindCard(WalletActiveDto dto, PjcloudUser user); + Boolean bindCard(WalletActiveBindCardDto dto); + + Boolean adminBindCard(WalletActiveBindCardDto dto); + + /** + * 取消绑定饭卡 + * + * @param activeId 开卡id + */ + Boolean cancelAdminBindCard(Long activeId); /** * 卡号是否存在 @@ -47,6 +57,7 @@ public interface WalletActiveService extends IService { /** * 更具卡号查询开卡信息 + * * @return */ WalletActiveEntity getByCardNumber(@NotEmpty String cardNumber); 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 9ae2d2452..d8d698ac0 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -2,7 +2,10 @@ package com.bsd.pjcloud.wallet.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; +import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.entity.SysDept; @@ -16,6 +19,7 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.dto.MchManageDto; +import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; @@ -118,7 +122,7 @@ public class WalletActiveServiceImpl extends ServiceImpl walletActiveUpdateWrapper = new LambdaUpdateWrapper() + .eq(WalletActiveEntity::getId, activeId) + .set(WalletActiveEntity::getUserId, null) + .set(WalletActiveEntity::getWalletId, null) + .set(WalletActiveEntity::getWalletTypeId, null); + baseMapper.update(walletActiveUpdateWrapper); + // 更新用户钱包 + LambdaUpdateWrapper walletUpdateWrapper = new LambdaUpdateWrapper() + .eq(WalletManageEntity::getId, walletActive.getWalletId()) + .set(WalletManageEntity::getCardNumber, null) + .set(WalletManageEntity::getActiveBindStatus, YesNoEnum.NO.getCode()) + .set(WalletManageEntity::getActiveBindTime, null); + walletManageService.update(walletUpdateWrapper); + return true; + } + @Override public Boolean exitCardNumber(Long id, String CardNumber) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() @@ -223,4 +266,8 @@ public class WalletActiveServiceImpl extends ServiceImpl