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..2fb097611 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 @@ -29,6 +29,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { .eq(ObjectUtil.isNotEmpty(dto.getOrderType()), HardOrderEntity::getOrderType, dto.getOrderType()) .eq(ObjectUtil.isNotEmpty(dto.getPayType()), HardOrderEntity::getPayType, dto.getPayType()) .eq(ObjectUtil.isNotEmpty(dto.getOrderStatus()), HardOrderEntity::getOrderStatus, dto.getOrderStatus()) + .eq(ObjectUtil.isNotEmpty(dto.getHourType()), HardOrderEntity::getHourType, dto.getHourType()) .in(ObjectUtil.isNotEmpty(dto.getOrderIds()), HardOrderEntity::getId, dto.getOrderIds()) .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()) .in(ObjectUtil.isNotEmpty(dto.getHardIds()), HardOrderEntity::getHardId, dto.getHardIds()) @@ -58,6 +59,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-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index 33001b027..ecfb453b6 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -74,6 +74,9 @@ a.del_flag = '0' + + and a.hour_type = #{dto.hourType} + and a.order_status in 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..4aaa9b12e 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; @@ -47,8 +49,8 @@ public class WalletActiveController { /* ************************************* start android start ************************************* */ @GetMapping("/ad/open-card-list") @Operation(summary = "android开卡列表") - public R> AdOpenCardList(@ParameterObject Page page, @ParameterObject WalletActiveDto dto) { - return R.ok(walletActiveService.pageJoin(page, dto).getRecords()); + public R> AdOpenCardList(@ParameterObject Page page, @ParameterObject WalletActiveDto dto) { + return R.ok(walletActiveService.pageJoin(page, dto)); } @GetMapping("/ad/open-card-success") @@ -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